@font-face{font-family:Nunito;font-weight:500;font-style:normal;src:url(/mumble-voice-lab/fonts/nunito/Nunito-500.woff2) format("woff2");font-display:swap}@font-face{font-family:Nunito;font-weight:700;font-style:normal;src:url(/mumble-voice-lab/fonts/nunito/Nunito-700.woff2) format("woff2");font-display:swap}@font-face{font-family:Nunito;font-weight:900;font-style:normal;src:url(/mumble-voice-lab/fonts/nunito/Nunito-900.woff2) format("woff2");font-display:swap}@font-face{font-family:JetBrains Mono;font-weight:500;font-style:normal;src:url(/mumble-voice-lab/fonts/jetbrains-mono/JetBrainsMono-500.woff2) format("woff2");font-display:swap}@font-face{font-family:JetBrains Mono;font-weight:700;font-style:normal;src:url(/mumble-voice-lab/fonts/jetbrains-mono/JetBrainsMono-700.woff2) format("woff2");font-display:swap}@font-face{font-family:Noto Sans SC;font-weight:500;font-style:normal;src:url(/mumble-voice-lab/fonts/noto-sans-sc/NotoSansSC-500.woff2) format("woff2");font-display:swap}@font-face{font-family:Noto Sans SC;font-weight:700;font-style:normal;src:url(/mumble-voice-lab/fonts/noto-sans-sc/NotoSansSC-700.woff2) format("woff2");font-display:swap}@font-face{font-family:Noto Sans SC;font-weight:900;font-style:normal;src:url(/mumble-voice-lab/fonts/noto-sans-sc/NotoSansSC-900.woff2) format("woff2");font-display:swap}:root{--paper: #fdf6ec;--paper-warm: #fbeed3;--paper-card: #fff8e7;--paper-deep: #fde68a;--ink: #2a1f17;--ink-soft: #6b5849;--ink-mute: #a08c79;--ink-line: #e6d3b3;--cute: #f472b6;--robot: #22c55e;--soft: #fb7185;--merchant: #eab308;--tiny: #38bdf8;--spirit: #14b8a6;--tired: #f59e0b;--monster: #ef4444;--boss: #7c3aed;--grp-pitch: #fbcfe8;--grp-rhythm: #bae6fd;--grp-roughness: #fef08a;--grp-brightness: #fde68a;--grp-continuity: #bbf7d0;--grp-level: #ddd6fe;--ok: #22c55e;--warn: #f59e0b;--bad: #ef4444;--info: #38bdf8;--border-w: 2px;--border: 2px solid var(--ink);--radius-sm: 8px;--radius: 14px;--radius-lg: 22px;--radius-pill: 999px;--shadow-soft: 2px 2px 0 var(--ink);--shadow-block: 4px 4px 0 var(--ink);--shadow-deep: 6px 6px 0 var(--ink);--ease-pop: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.2, .8, .2, 1);--t-fast: .12s;--t-med: .22s;--font-ui: "Nunito", "Noto Sans SC", -apple-system, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--font-cn: "Noto Sans SC", "Nunito", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--fs-12: 12px;--fs-13: 13px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-22: 22px;--fs-28: 28px;--fs-40: 40px;--fs-56: 56px;--lh-tight: 1.1;--lh-snug: 1.35;--lh-body: 1.55;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--sp-8: 64px}:root{--bg: var(--paper);--bg-elev: var(--paper-card);--bg-soft: var(--paper-warm);--bg-hot: var(--paper-deep);--text: var(--ink);--text-soft: var(--ink-soft);--text-mute: var(--ink-mute);--line: var(--ink-line);--outline: var(--ink);--accent: var(--cute);--accent-on: var(--paper-card)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 14% 16%,rgba(244,114,182,.1) 0,transparent 30%),radial-gradient(circle at 86% 78%,rgba(56,189,248,.09) 0,transparent 32%),radial-gradient(circle at 62% 6%,rgba(124,58,237,.05) 0,transparent 22%),var(--paper);color:var(--ink);font-family:var(--font-ui)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}pre{margin:0;max-height:300px;overflow:auto;white-space:pre-wrap;word-break:break-word;color:var(--ink-soft);font-family:var(--font-mono);font-size:12px;line-height:1.55;background:var(--paper-card);border:2px solid var(--ink);border-radius:var(--radius-sm);padding:12px 14px;box-shadow:var(--shadow-soft)}.app-shell{width:min(1280px,100%);margin:0 auto;padding:20px 24px}.app-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;margin-bottom:14px}.brand-block{max-width:720px}.eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0 0 8px;padding:4px 11px;background:var(--ink);color:var(--paper-deep);font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:999px}.eyebrow:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--cute);box-shadow:0 0 0 2px var(--paper-deep)}h1{margin:0;font-size:clamp(1.8rem,3.6vw,2.8rem);line-height:1;font-weight:900;letter-spacing:-.025em;color:var(--ink)}h1 .accent{color:var(--cute)}.hero-copy{margin:8px 0 0;max-width:640px;color:var(--ink-soft);font-size:clamp(.88rem,1.05vw,.98rem);line-height:1.5}.header-status{display:grid;gap:10px;justify-items:end}.header-actions,.status-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.theme-toggle{display:none}.language-toggle{display:inline-grid;background:var(--paper-card);border:2px solid var(--ink);border-radius:999px;box-shadow:var(--shadow-soft);overflow:hidden;grid-template-columns:1fr 1fr}.language-toggle button{min-height:30px;padding:0 12px;border:0;background:transparent;color:var(--ink-soft);font-family:var(--font-ui);font-size:12px;font-weight:700;transition:background var(--t-fast),color var(--t-fast)}.language-toggle button.is-active{background:var(--cute);color:var(--paper-card)}.language-toggle button+button{border-left:2px solid var(--ink)}.github-link{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:0 0 32px;background:var(--paper-card);color:var(--ink);border:2px solid var(--ink);border-radius:50%;text-decoration:none;box-shadow:var(--shadow-soft);transition:transform var(--t-fast) var(--ease-pop),box-shadow var(--t-fast)}.github-link:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}.status-pill{padding:4px 10px;background:var(--paper-card);border:2px solid var(--ink);border-radius:999px;color:var(--ink);font-family:var(--font-mono);font-size:10px;font-weight:700;box-shadow:var(--shadow-soft)}.status-pill:before{content:"";display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%;background:var(--ink-mute);vertical-align:1px}.language-status.is-ready:before{background:var(--ok)}.language-status.is-loading:before{background:var(--warn)}.language-status.is-fallback:before{background:var(--bad)}.studio-shell{display:grid;gap:12px}.hero-grid{display:grid;grid-template-columns:minmax(420px,1.05fr) minmax(360px,.95fr);gap:12px;align-items:stretch}.panel{min-width:0;background:var(--paper-card);border:2px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow-block);overflow:hidden}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:42px;padding:8px 14px;border-bottom:2px solid var(--ink);background:var(--paper-deep)}.panel-heading>div{display:grid;gap:2px}.panel-heading h2{margin:0;font-size:14px;font-weight:900;color:var(--ink);letter-spacing:-.005em}.panel-heading span{font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--ink-soft)}.composer-panel,.performance-panel{display:flex;flex-direction:column}textarea{display:block;width:calc(100% - 28px);min-height:110px;margin:12px 14px 10px;padding:10px 14px;font-family:var(--font-ui);font-size:16px;line-height:1.5;color:var(--ink);background:#fff;border:2px solid var(--ink);border-radius:var(--radius-sm);box-shadow:inset 2px 2px 0 var(--paper-warm);resize:vertical;outline:none}textarea:focus,select:focus-visible,input[type=range]:focus-visible,button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--cute);outline-offset:2px}.expression-controls{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(120px,.7fr) minmax(200px,1fr);gap:10px;padding:0 14px 10px}.select-row,.expression-intensity{display:grid;gap:6px}.select-row>span,.expression-intensity>span,.slider-row>span{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}select{width:100%;min-height:34px;padding:0 30px 0 11px;background:var(--paper-card);color:var(--ink);font-family:var(--font-ui);font-size:13px;font-weight:700;border:2px solid var(--ink);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 16px) calc(50% - 2px),calc(100% - 11px) calc(50% - 2px);background-size:5px 5px,5px 5px;background-repeat:no-repeat}.button-row{display:flex;flex-wrap:wrap;gap:8px;padding:0 14px 12px}.primary-button,.secondary-button{min-height:34px;padding:0 14px;font-family:var(--font-ui);font-size:13px;font-weight:900;border:2px solid var(--ink);border-radius:999px;box-shadow:var(--shadow-soft);transition:transform var(--t-fast) var(--ease-pop),box-shadow var(--t-fast) var(--ease-pop)}.primary-button{background:var(--cute);color:#fff}.secondary-button{background:var(--paper-card);color:var(--ink)}.primary-button:hover,.secondary-button:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}.primary-button:active,.secondary-button:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}.dialogue-preview{display:block;min-height:92px;margin:12px 14px 10px;padding:12px 14px;background:#fff;border:2px solid var(--ink);border-radius:var(--radius-sm);box-shadow:inset 2px 2px 0 var(--paper-warm);font-family:var(--font-ui);font-size:clamp(.96rem,1.3vw,1.1rem);line-height:1.55;color:var(--ink);white-space:pre-wrap;word-break:break-word}.playback-label{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;font-family:var(--font-mono);font-size:10px;color:var(--ink-soft)}.playback-label strong{padding:4px 10px;background:var(--cute);color:#fff;border:1.5px solid var(--ink);border-radius:999px;font-family:var(--font-ui);font-size:11px;font-weight:800;letter-spacing:.02em}.playback-label.is-ab-original strong{background:var(--ink-mute)}.playback-label.is-ab-modified strong{background:var(--tired)}.talk-caret{display:inline-block;width:9px;height:1.35em;margin-left:4px;background:var(--cute);border-radius:999px;opacity:0;vertical-align:middle}.talk-caret.is-active{animation:caretPulse .58s steps(1) infinite}@keyframes caretPulse{0%,42%{opacity:1}43%,to{opacity:0}}.event-strip{position:relative;height:64px;margin:0 14px 12px;background:repeating-linear-gradient(90deg,rgba(42,31,23,.08) 0,rgba(42,31,23,.08) 1px,transparent 1px,transparent 10%),#fff;border:2px solid var(--ink);border-radius:var(--radius-sm);overflow:hidden;box-shadow:inset 2px 2px 0 var(--paper-warm)}.event-blip{position:absolute;bottom:6px;min-width:4px;max-height:calc(100% - 10px);background:var(--cute);border:1.5px solid var(--ink);border-radius:999px 999px 4px 4px;transition:background var(--t-fast),transform var(--t-fast)}.event-blip.is-current{background:var(--tired);transform:translateY(-3px) scaleY(1.05)}.analysis-grid{display:grid;grid-template-columns:repeat(6,1fr);border-top:2px solid var(--ink);background:var(--paper-warm);margin-top:auto}.analysis-grid>div{display:grid;gap:2px;min-width:0;padding:8px 12px}.analysis-grid>div+div{border-left:2px solid var(--ink)}.analysis-grid span{font-family:var(--font-mono);font-size:9px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}.analysis-grid strong{font-size:14px;font-weight:900;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:10px}.preset-cell{position:relative;min-width:0}.preset-button{position:relative;display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:7px 10px;background:var(--paper-card);color:var(--ink);border:2px solid var(--ink);border-radius:var(--radius-sm);text-align:left;box-shadow:var(--shadow-soft);transition:transform var(--t-fast) var(--ease-pop),box-shadow var(--t-fast),background var(--t-fast)}.preset-button.is-custom{background:var(--paper-warm)}.preset-button.is-custom.is-active{background:var(--paper-deep)}.preset-button:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}.preset-button.is-active{background:var(--paper-deep);box-shadow:3px 3px 0 var(--ink)}.preset-button.is-new:after{content:"v1.1";position:absolute;top:-7px;right:-6px;padding:2px 6px;background:var(--ink);color:var(--paper-deep);border:2px solid var(--paper-card);border-radius:999px;font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:0}.preset-button>span:last-child{display:grid;gap:1px;min-width:0}.preset-button strong{font-size:12px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-button small{font-family:var(--font-mono);font-size:9px;font-weight:700;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-face{width:38px;height:38px;flex:0 0 38px;display:block}.preset-cell.is-custom:before{content:"★";position:absolute;top:-6px;left:-6px;z-index:2;width:18px;height:18px;display:grid;place-items:center;background:var(--cute);color:#fff;border:2px solid var(--ink);border-radius:50%;font-size:9px;font-weight:900;pointer-events:none}.preset-cell-actions{position:absolute;top:-8px;right:-6px;display:flex;gap:4px;opacity:0;transition:opacity var(--t-fast);pointer-events:none;z-index:2}.preset-cell:hover .preset-cell-actions,.preset-cell:focus-within .preset-cell-actions{opacity:1;pointer-events:auto}.preset-cell-action{width:22px;height:22px;display:grid;place-items:center;background:var(--paper-card);color:var(--ink);border:1.5px solid var(--ink);border-radius:50%;font-size:12px;font-weight:900;font-family:var(--font-mono);line-height:1;cursor:pointer;box-shadow:1.5px 1.5px 0 var(--ink);transition:transform var(--t-fast) var(--ease-pop),box-shadow var(--t-fast)}.preset-cell-action:hover{transform:translate(-1px,-1px);box-shadow:2.5px 2.5px 0 var(--ink)}.preset-cell-action-danger{background:#fecaca}.preset-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.preset-action-button{min-height:28px;padding:0 12px;background:var(--paper-card);color:var(--ink);border:2px solid var(--ink);border-radius:999px;font-family:var(--font-ui);font-size:11px;font-weight:900;box-shadow:var(--shadow-soft);cursor:pointer;transition:transform var(--t-fast) var(--ease-pop),box-shadow var(--t-fast)}.preset-action-button:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}.preset-action-button:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}.advanced-panel{overflow:hidden}.advanced-panel summary{display:flex;align-items:center;gap:12px;min-height:42px;padding:6px 14px;background:var(--paper-deep);color:var(--ink);cursor:pointer;list-style:none}.advanced-panel summary::-webkit-details-marker{display:none}.advanced-panel summary>span:first-child{font-size:14px;font-weight:900}.advanced-panel summary small{margin-left:auto;margin-right:10px;font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--ink-soft)}.advanced-panel summary:after{content:"+";display:inline-grid;place-items:center;width:26px;height:26px;flex:0 0 26px;background:var(--paper-card);color:var(--ink);border:2px solid var(--ink);border-radius:50%;font-weight:900;font-size:15px;box-shadow:var(--shadow-soft)}.advanced-panel[open] summary{border-bottom:2px solid var(--ink)}.advanced-panel[open] summary:after{content:"−"}.advanced-content{display:grid;grid-template-columns:minmax(280px,.95fr) minmax(280px,1fr) minmax(280px,1fr);gap:0}.advanced-content>section{padding:0;min-width:0}.advanced-content>section+section{border-left:2px solid var(--ink)}.compact-heading{min-height:38px;padding:6px 14px;background:var(--paper-warm)}.toggle-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:2px dashed var(--ink-line);color:var(--ink);font-family:var(--font-ui);font-size:12px;font-weight:700}.toggle-row input{width:16px;height:16px;accent-color:var(--cute)}.toggle-copy{display:grid;gap:2px;min-width:0}.toggle-copy small{font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--ink-soft);text-transform:none;letter-spacing:0}.slider-list{display:grid;gap:10px;padding:10px 14px}.slider-row{display:grid;gap:6px}.slider-row small{font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--ink-mute);line-height:1.45}output{font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:22px;background:transparent}input[type=range]::-webkit-slider-runnable-track{height:8px;background:var(--paper-card);border:2px solid var(--ink);border-radius:999px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;margin-top:-7px;background:var(--cute);border:2px solid var(--ink);border-radius:50%;box-shadow:1.5px 1.5px 0 var(--ink);cursor:grab}input[type=range]::-moz-range-track{height:8px;background:var(--paper-card);border:2px solid var(--ink);border-radius:999px}input[type=range]::-moz-range-thumb{width:18px;height:18px;background:var(--cute);border:2px solid var(--ink);border-radius:50%;box-shadow:1.5px 1.5px 0 var(--ink);cursor:grab}.preview-block,.preset-json{padding:10px 14px}.preview-block h3,.preset-json h3{margin:0 0 10px;font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}.chatter-panel summary{display:flex;align-items:center;gap:12px;min-height:42px;padding:6px 14px;background:var(--paper-deep);color:var(--ink);cursor:pointer;list-style:none}.chatter-panel summary::-webkit-details-marker{display:none}.chatter-panel summary>span:first-child{font-size:14px;font-weight:900}.chatter-panel summary small{margin-left:auto;margin-right:10px;font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--ink-soft);text-align:right}.chatter-panel summary:after{content:"+";display:inline-grid;place-items:center;width:26px;height:26px;flex:0 0 26px;background:var(--paper-card);color:var(--ink);border:2px solid var(--ink);border-radius:50%;font-weight:900;font-size:15px;box-shadow:var(--shadow-soft)}.chatter-panel[open] summary{border-bottom:2px solid var(--ink)}.chatter-panel[open] summary:after{content:"−"}.chatter-content{display:grid;gap:12px;padding:12px 14px 14px}.chatter-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.chatter-row{display:grid;grid-template-columns:1fr;gap:8px;padding:8px 10px 10px;background:var(--paper-warm);border:2px solid var(--ink);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);cursor:pointer;transition:background var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast) var(--ease-pop)}.chatter-row:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}.chatter-row.is-on{background:var(--paper-deep)}.chatter-toggle{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-ui);font-size:12px;font-weight:900;color:var(--ink);white-space:nowrap;min-width:0;flex:0 0 auto}.chatter-toggle input[type=checkbox]{width:16px;height:16px;flex:0 0 16px;accent-color:var(--cute);cursor:pointer}.chatter-toggle strong{font-size:12px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chatter-face{width:30px;height:30px;flex:0 0 30px;display:block}.chatter-textarea{width:100%;min-width:0;min-height:64px;margin:0;padding:7px 10px;font-family:var(--font-ui);font-size:12.5px;font-weight:500;line-height:1.45;color:var(--ink);background:#fff;border:2px solid var(--ink);border-radius:var(--radius-sm);box-shadow:inset 2px 2px 0 var(--paper-warm);outline:none;resize:vertical}.chatter-textarea:disabled{opacity:.45;cursor:not-allowed;background:var(--paper-card)}.chatter-actions{display:flex;gap:8px}@media (max-width: 1180px){.app-header,.hero-grid,.advanced-content{grid-template-columns:1fr}.advanced-content>section+section{border-left:0;border-top:2px solid var(--ink)}.header-status{justify-items:start}.preset-list{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 1180px){.chatter-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.app-shell{padding:16px}.preset-list{grid-template-columns:repeat(2,minmax(0,1fr))}.expression-controls{grid-template-columns:1fr}.analysis-grid{grid-template-columns:repeat(3,1fr)}.analysis-grid>div+div{border-left:0}.analysis-grid>div{border-top:2px solid var(--ink)}.chatter-list{grid-template-columns:1fr}}
