@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/playground/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/playground/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/playground/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/playground/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/playground/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/playground/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/playground/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--border:#e2def4;--primary:#17151f;--accent:#6c5ce7;--accent-soft:#6c5ce71a;--text:#1d1b26;--muted:#6f6a86;--lavender:#e6e4fb;--surface:#efedf7;--rose:#fde1dd;--glass:#ffffff8c;--glass-strong:#ffffffd1;--glass-solid:#fffffff2;--glass-border:#fff9;--card:#fff9;--glass-violet:#6c5ce724;--glass-violet-strong:#6c5ce73d;--glass-violet-border:#6c5ce747;--fs-caption:.75rem;--fs-sm:.8125rem;--fs-body:.875rem;--fs-title-sm:1rem;--fs-title:1.125rem;--fs-h1:1.25rem;--fs-kpi:1.5rem;--lh-normal:1.5;--lh-snug:1.4;--lh-tight:1.25;--font-sans:"Inter Variable", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-sc:"PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-jp:"Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", YuGothic, "Meiryo", "Noto Sans JP", sans-serif;font-family:var(--font-sans), var(--font-sc);color:var(--text)}:root:lang(ja){font-family:var(--font-sans), var(--font-jp)}:root:lang(en){font-family:var(--font-sans), var(--font-sc)}html{font-size:var(--fs-title-sm)}*{box-sizing:border-box}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{min-height:100vh;font-size:var(--fs-body);line-height:var(--lh-normal);background-color:#efedf6;background-image:radial-gradient(900px 600px at -10% -10%,#f3d9e8 0%,#0000 60%),radial-gradient(820px 720px at 2% 92%,#d8d4f5 0%,#0000 58%),radial-gradient(760px 560px at 100% 8%,#ded9f8 0%,#0000 55%),radial-gradient(700px 500px at 48% 46%,#f0e6f6 0%,#0000 55%),none;background-position:0 0,0 0,0 0,0 0,0 0;background-repeat:repeat,repeat,repeat,repeat,repeat;background-size:auto,auto,auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box,border-box;margin:0}.app-shell{gap:14px;min-height:100vh;padding:14px;display:flex}.sidebar{-webkit-backdrop-filter:blur(24px)saturate(1.4);background:#ffffff6b;border:1px solid #fff9;border-radius:20px;flex-shrink:0;width:250px;height:calc(100vh - 28px);position:sticky;top:14px}.sidebar-inner{border-radius:inherit;flex-direction:column;gap:8px;height:100%;padding:20px 16px;display:flex;overflow:hidden auto}.brand{align-items:center;gap:10px;padding:2px 8px 14px;display:flex}.brand-mark{color:#111;border:1px solid var(--border);width:34px;height:34px;font-size:var(--fs-title);background:#fff;border-radius:11px;place-items:center;display:grid}.brand-name{font-weight:700;font-size:var(--fs-title-sm);letter-spacing:.2px}.side-label{font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:10px 10px 4px;font-weight:600}.side-nav{flex-direction:column;gap:4px;display:flex}.side-nav a{color:var(--text);font-weight:500;font-size:var(--fs-body);border-radius:12px;align-items:center;gap:10px;padding:10px 12px;text-decoration:none;transition:background .15s;display:flex}.side-nav a:hover{background:#ffffff8c}.side-nav a.active{background:#fff;font-weight:600;box-shadow:0 4px 14px #1d1b261a}.nav-ico{width:20px;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.side-nav a.active .nav-ico{color:var(--primary)}.nav-external-ico{color:var(--muted);opacity:.7;align-items:center;margin-left:auto;display:inline-flex}.side-nav a.nav-external:hover .nav-external-ico{color:var(--accent);opacity:1}.sidebar.collapsed .nav-external-ico{display:none}.side-nav .nav-disabled{color:var(--muted);font-weight:500;font-size:var(--fs-body);cursor:not-allowed;opacity:.55;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;display:flex}.side-nav .nav-disabled .nav-ico{color:var(--muted)}.nav-soon{color:var(--muted);background:#0000000f;border-radius:999px;flex-shrink:0;margin-left:auto;padding:2px 6px;font-size:10px;font-weight:600}.sidebar.collapsed .nav-soon{display:none}.side-spacer{flex:1}.key-selector{background:#ffffff80;border-radius:14px;flex-direction:column;gap:6px;padding:10px;display:flex}.key-selector label{font-size:var(--fs-caption);color:var(--muted);font-weight:600}.key-warning{color:#b45309;font-size:var(--fs-caption);line-height:1.4}.key-warning svg,.ttfa svg,.log-item .warn svg{vertical-align:-2px}.usage{color:var(--muted);font-size:var(--fs-caption);line-height:1.4}.sel{flex-direction:column;display:inline-flex;position:relative}.sel-trigger{font-size:var(--fs-sm);text-align:left;border:1px solid var(--border);color:var(--text);background:#fff;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:7px 12px;display:inline-flex}.sel-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sel-caret{color:var(--muted);flex-shrink:0;transition:transform .15s}.sel-caret.open{transform:rotate(180deg)}.sel-menu{z-index:50;border:1px solid var(--border);background:#fff;border-radius:12px;flex-direction:column;gap:2px;max-height:240px;padding:6px;display:flex;overflow-y:auto;box-shadow:0 12px 32px #1d1b2629}.sel-item{width:100%;font-size:var(--fs-sm);text-align:left;box-shadow:none;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;display:flex}.sel-item:hover,.sel-item.focused{background:var(--lavender);box-shadow:none}.sel-item.selected{font-weight:600}.sel-item-label{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.sel-check{color:var(--accent);flex-shrink:0}.workspace{-webkit-backdrop-filter:blur(24px)saturate(1.4);border:1px solid var(--glass-border);background:#ffffffb8;border-radius:20px;flex-direction:column;flex:1;min-width:0;display:flex;overflow:clip;box-shadow:0 10px 40px #1d1b260f}.workspace-top{border-bottom:1px solid var(--border);font-size:var(--fs-sm);color:var(--muted);align-items:center;gap:12px;padding:7px 28px;display:flex}.crumb b{color:var(--text);font-weight:600}.crumb-sep{color:#c6c4d2;margin:0 4px}.workspace-body{flex-direction:column;flex:1;padding:20px 28px 32px;display:flex}.workspace-body>.page{width:100%}.page-title{font-size:var(--fs-title);font-weight:700;line-height:var(--lh-tight);letter-spacing:-.015em;color:var(--text);margin:0}.page{max-width:1280px}.page.tts-page{flex-direction:column;flex:1;max-width:none;min-height:0;display:flex}.main-area{align-items:flex-start;gap:20px;display:flex}.side-panel{flex-shrink:0;width:300px}.content{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.params-panel{background:var(--card);border:1px solid #1d1b2614;border-radius:16px;flex-direction:column;gap:20px;padding:18px;display:flex}.pp-section{flex-direction:column;gap:8px;display:flex}.pp-label{font-size:var(--fs-sm);color:var(--text);font-weight:600}.pp-label-row{justify-content:space-between;align-items:baseline;display:flex}.pp-value{font-size:var(--fs-sm);color:var(--accent);font-variant-numeric:tabular-nums;font-weight:600}.ppv{position:relative}.ppv-trigger{text-align:left;border:1px solid var(--border);cursor:pointer;width:100%;font:inherit;font-size:var(--fs-body);background:#fff;border-radius:12px;align-items:center;gap:10px;padding:9px 12px;transition:border-color .15s,box-shadow .15s;display:flex}.ppv-trigger:hover{border-color:#6c5ce76b}.ppv-avatar{color:#fff;width:26px;height:26px;font-size:var(--fs-caption);border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid}.ppv-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:500;overflow:hidden}.ppv-lang{font-size:var(--fs-caption);color:var(--muted);background:var(--lavender);border-radius:999px;flex-shrink:0;padding:2px 8px}.ppv-caret{color:var(--muted);flex-shrink:0;transition:transform .15s}.ppv-caret.open{transform:rotate(180deg)}.ppv-menu{z-index:30;border:1px solid var(--border);background:#fff;border-radius:14px;max-height:320px;padding:6px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 12px 32px #1d1b2624}.ppv-group-label{font-size:var(--fs-caption);color:var(--muted);text-transform:uppercase;letter-spacing:.4px;padding:8px 10px 4px;font-weight:600}.ppv-item{cursor:pointer;font-size:var(--fs-body);border-radius:10px;align-items:center;gap:10px;padding:7px 10px;transition:background .12s;display:flex}.ppv-item:hover,.ppv-item:focus-visible{background:var(--accent-soft)}.ppv-item.selected{background:var(--lavender)}.ppv-play{width:26px;height:26px;color:var(--muted);background:0 0;border:none;border-radius:50%;flex-shrink:0;place-items:center;padding:0;display:grid}.ppv-play:hover{color:var(--accent);box-shadow:none;background:#fff}.ppv-check{color:var(--accent);flex-shrink:0}.cv-panel.vp-panel{width:860px;max-height:84vh}.vp-tabs{border-bottom:1px solid var(--border);gap:4px;display:flex}.vp-tab{box-shadow:none;cursor:pointer;font-size:var(--fs-body);color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;margin-bottom:-1px;padding:8px 14px;font-weight:600}.vp-tab:hover{color:var(--text);box-shadow:none}.vp-tab.active{color:var(--text);border-bottom-color:var(--accent)}.vp-filters{flex-direction:column;gap:10px;display:flex}.vp-list{flex:1;min-height:200px;padding:2px;overflow-y:auto}.vp-list .vl-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.vl-card.vp-selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.vp-check{color:var(--accent);flex-shrink:0}.pp-models{flex-direction:column;gap:8px;display:flex}.pp-model-card{text-align:left;border:1.5px solid var(--border);cursor:pointer;background:#fff;border-radius:12px;align-items:center;gap:10px;width:100%;padding:11px 12px;transition:border-color .15s,background .15s;display:flex}.pp-model-card:hover{box-shadow:none;border-color:#6c5ce76b}.pp-model-card.selected{border-color:var(--accent);background:var(--accent-soft)}.pp-model-radio{background:#fff;border:1.5px solid #c9c5da;border-radius:50%;flex-shrink:0;place-items:center;width:16px;height:16px;transition:border-color .15s;display:grid}.pp-model-card.selected .pp-model-radio{border-color:var(--accent)}.pp-model-card.selected .pp-model-radio:after{content:"";background:var(--accent);border-radius:50%;width:8px;height:8px}.pp-model-body{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.pp-model-name{font-size:var(--fs-body);font-weight:600}.pp-model-desc{font-size:var(--fs-caption);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pp-model-ico{color:#c9c5da;flex-shrink:0}.pp-model-card.selected .pp-model-ico{color:var(--accent)}.pp-slider{appearance:none;outline-offset:4px;cursor:pointer;border-radius:999px;width:100%;height:5px}.pp-slider::-webkit-slider-thumb{appearance:none;border:2px solid var(--accent);background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .12s;box-shadow:0 1px 4px #1d1b2633}.pp-slider::-webkit-slider-thumb:hover{transform:scale(1.12)}.pp-slider::-moz-range-thumb{border:2px solid var(--accent);background:#fff;border-radius:50%;width:18px;height:18px;box-shadow:0 1px 4px #1d1b2633}.pp-seg{background:#f0eff7;border-radius:10px;gap:3px;padding:3px;display:flex}.pp-seg-item{font-size:var(--fs-sm);color:var(--muted);text-transform:uppercase;cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;padding:7px 0;font-weight:600;transition:background .15s,color .15s}.pp-seg-item:hover{box-shadow:none;color:var(--text)}.pp-seg-item.selected{color:var(--text);background:#fff;box-shadow:0 1px 4px #1d1b261f}.pp-format-row{gap:8px;display:flex}.pp-format-select{flex:1;min-width:0}.pp-format-select .sel-trigger{width:100%}.pp-input{border:1px solid var(--border);font:inherit;font-size:var(--fs-body);background:#fff;border-radius:12px;width:100%;padding:9px 12px}.pp-chips{flex-wrap:wrap;gap:6px;display:flex}.pp-chip{border:1px solid var(--border);font-size:var(--fs-caption);cursor:pointer;background:#fff;border-radius:999px;padding:5px 12px;transition:border-color .15s,background .15s,color .15s}.pp-chip:hover{box-shadow:none;border-color:#6c5ce76b}.pp-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.pp-switch-row{flex-direction:row;justify-content:space-between;align-items:center}.pp-switch{cursor:pointer;background:#d9d6e8;border:none;border-radius:999px;flex-shrink:0;width:40px;height:23px;padding:0;transition:background .18s;position:relative}.pp-switch:hover{box-shadow:none}.pp-switch.on{background:var(--accent)}.pp-switch-thumb{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .18s;position:absolute;top:2.5px;left:2.5px;box-shadow:0 1px 3px #1d1b2640}.pp-switch.on .pp-switch-thumb{transform:translate(17px)}select,input[type=text],textarea{border:1px solid var(--border);font:inherit;background:#fff;border-radius:10px;padding:8px 12px}select:focus,input:focus,textarea:focus{outline-offset:0;outline:2px solid #17151f59}textarea{resize:vertical;width:100%}textarea.over-limit{border-color:#dc2626}.char-count{font-size:var(--fs-caption);color:var(--muted);text-align:right}.char-count.over{color:#dc2626;font-weight:600}button,.btn{border:1px solid var(--glass-violet-border);background:var(--glass-violet);-webkit-backdrop-filter:blur(14px)saturate(1.4);cursor:pointer;font:inherit;font-size:var(--fs-body);color:var(--text);border-radius:999px;padding:8px 16px;font-weight:500;text-decoration:none;transition:border-color .15s,background .15s,box-shadow .18s,transform .1s;display:inline-block}button:hover,.btn:hover{background:var(--glass-violet-strong);border-color:#6c5ce76b;box-shadow:0 4px 14px #6c5ce729}button:active:not(:disabled),.btn:active{transform:scale(.98)}button svg,.btn svg{vertical-align:-2px}button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}button.primary,.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary);-webkit-backdrop-filter:none;font-weight:600}button.primary:hover,.btn.primary:hover{background:#2b2838;border-color:#2b2838;box-shadow:0 10px 30px #6c5ce747}button.danger{color:#fff;-webkit-backdrop-filter:none;background:#dc2626;border-color:#dc2626}button.danger:hover{background:#b91c1c;border-color:#b91c1c}.chips,.samples,.ssml-toolbar{font-size:var(--fs-sm);color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{font-size:var(--fs-caption);background:var(--lavender);color:var(--text);-webkit-backdrop-filter:none;border:none;border-radius:999px;padding:4px 12px}.chip:hover{background:var(--glass-violet-strong)}.chip.active{background:var(--primary);color:#fff}.actions{align-items:center;gap:10px;display:flex}.error-banner{background:var(--rose);color:#b91c1c;border:none;border-radius:12px;padding:12px 16px}.ttfa{color:#059669;font-weight:600}.player-row{background:var(--surface);border-radius:14px;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;display:flex}.muted{color:var(--muted);font-size:var(--fs-caption)}.tts-layout{flex:1;align-items:stretch;gap:20px;min-height:0;display:flex}.tts-left{flex-direction:column;flex:1;gap:16px;min-width:0;display:flex}.tts-side{flex-shrink:0;width:320px;overflow-y:auto}.tts-editor{background:var(--card);border:1px solid #1d1b2614;border-radius:16px;flex-direction:column;flex:2;gap:10px;padding:16px;display:flex}.tts-textarea{resize:none;min-height:160px;font-size:var(--fs-body);border:none;outline:none;flex:1;line-height:1.7}.tts-editor-footer{border-top:1px solid #1d1b2614;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding-top:12px;display:flex}.tts-history{background:var(--surface);border-radius:14px;flex-direction:column;flex:1;min-height:140px;padding:12px 16px;display:flex}.tts-history-head{font-weight:600;font-size:var(--fs-body);margin-bottom:6px}.tts-history-empty{padding:12px 0}.tts-history-list{flex:1;overflow-y:auto}.tts-history-item{font-size:var(--fs-sm);border-top:1px solid #1d1b2614;align-items:center;gap:10px;padding:8px 0;display:flex}.hist-play{border-radius:50%;flex-shrink:0;place-items:center;width:30px;height:30px;padding:0;display:grid}.hist-main{flex:1;min-width:0}.hist-meta{margin-top:2px}.hist-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.hist-btn{font-size:var(--fs-caption);color:inherit;cursor:pointer;background:#fff;border:1px solid #1d1b261f;border-radius:8px;align-items:center;gap:4px;padding:4px 10px;text-decoration:none;display:inline-flex}.history{background:var(--surface);border:none;border-radius:14px;padding:12px 16px}.history summary{font-weight:600;font-size:var(--fs-body);cursor:pointer}.history-item{font-size:var(--fs-sm);border-top:1px solid #1d1b2614;align-items:center;gap:10px;padding:8px 0;display:flex}.history-item button{font-size:var(--fs-caption);padding:4px 12px}.hist-text{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.code-examples{background:#f6f5fb;border:none;border-radius:16px;margin-top:24px;overflow:hidden}.code-header{flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;display:flex}.collapse-btn{background:0 0;border:none;font-weight:600}.tabs{gap:2px;display:flex}.tab{background:0 0;border:none;border-radius:8px;padding:5px 14px}.tab.active{background:var(--primary);color:#fff}.code-block{color:#e2e8f0;font-size:var(--fs-sm);background:#17151f;margin:0;padding:16px;overflow-x:auto}.log-toggle{font-size:var(--fs-sm);margin-left:auto;padding:5px 14px}.log-drawer{z-index:20;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffffe6;border:1px solid #ffffffb3;border-radius:18px;width:380px;padding:18px;position:fixed;top:14px;bottom:14px;right:14px;overflow-y:auto;box-shadow:-8px 0 40px #1d1b2629}.log-item{border-top:1px solid var(--border);font-size:var(--fs-sm);padding:8px 0}.log-item.error{color:#b91c1c}.log-item .warn{color:#b45309}.segments{border-collapse:separate;border-spacing:0;border:1px solid var(--border);background:#fff;border-radius:12px;width:100%;overflow:hidden}.segments th{font-size:var(--fs-caption);color:var(--muted);background:#f6f5fb}.segments th,.segments td{border-bottom:1px solid var(--border);text-align:left;font-size:var(--fs-sm);line-height:var(--lh-snug);padding:8px 12px}.segments tbody tr{cursor:pointer}.segments tbody tr:hover{background:var(--lavender)}.segments tr.low-conf td{background:#fdf6e9}.partial-text{color:#9ca3af}.final-text{color:var(--text)}.asr-fulltext{background:var(--lavender);border:none;border-radius:12px;padding:14px 16px}.ssml-preview{border:1px dashed var(--border);font-size:var(--fs-sm);white-space:pre-wrap;background:#fff;border-radius:12px;padding:12px}.ssml-tag{background:var(--lavender);color:var(--accent);border-radius:4px;padding:0 3px}.mobile-nav-btn{border:1px solid var(--border);color:#111;cursor:pointer;background:#fff;border-radius:12px;flex-shrink:0;place-items:center;width:40px;height:40px;padding:0;display:none}.mobile-nav-btn svg{display:block}.sidebar-backdrop{z-index:55;background:#17151f52;position:fixed;inset:0}@media (width<=900px){.app-shell{flex-direction:column;padding:8px}.app-shell .sidebar,.app-shell .sidebar.collapsed{z-index:60;background:#fffffff0;border-radius:0 20px 20px 0;width:min(280px,82vw);height:100dvh;transition:transform .25s;position:fixed;top:0;bottom:0;left:0;transform:translate(-105%)}.app-shell .sidebar.mobile-open{transform:none;box-shadow:12px 0 40px #1d1b262e}.sidebar .sidebar-toggle{display:none}.mobile-nav-btn{display:grid}.main-area{flex-direction:column}.side-panel{width:100%}.tts-layout{flex-direction:column;gap:16px;min-height:0}.tts-left{display:contents}.tts-editor{order:1}.tts-side{order:2;width:100%}.tts-history{order:3}.log-drawer{width:auto;left:8px;right:8px}}.morph-page{flex-direction:column;gap:16px;display:flex}.morph-controls{gap:10px;display:flex}.morph-input{border:1px solid var(--border);max-width:420px;font-size:var(--fs-body);border-radius:12px;flex:1;padding:10px 14px}.morph-input:focus{outline:2px solid var(--accent);border-color:#0000}.morph-apply{background:var(--primary);color:#fff;font-weight:600;font-size:var(--fs-body);cursor:pointer;border:none;border-radius:12px;padding:10px 22px}.morph-apply:hover{background:var(--accent)}.morph-stage{border:1px solid var(--border);border-radius:18px;width:fit-content;max-width:100%;overflow:hidden;box-shadow:0 10px 36px #1d1b261a}.morph-hint{color:var(--muted);font-size:var(--fs-sm);margin:0}.top-tabs{gap:6px;display:flex}.top-tabs a{color:var(--muted);font-weight:600;font-size:var(--fs-body);border-radius:10px;padding:8px 18px;text-decoration:none;transition:background .15s,color .15s}.top-tabs a:hover{color:var(--text);background:#17151f14}.top-tabs a.active{background:var(--lavender);color:var(--accent)}.top-spacer{flex:1}.apiref{align-items:flex-start;gap:28px;display:flex}.apiref-toc{width:210px;max-height:calc(100vh - 28px);font-size:var(--fs-sm);flex-direction:column;flex-shrink:0;gap:14px;display:flex;position:sticky;top:14px;overflow-y:auto}.apiref-toc-group{flex-direction:column;gap:2px;display:flex}.apiref-toc-label{font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:4px 8px;font-weight:600}.apiref-toc a{color:var(--text);border-radius:8px;align-items:center;gap:7px;padding:5px 8px;text-decoration:none;display:flex}.apiref-toc a:hover{background:var(--lavender)}.method-dot{text-align:center;border-radius:5px;flex-shrink:0;width:34px;padding:1px 0;font-size:9px;font-weight:700}.apiref-content{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.apiref-group-title{font-size:var(--fs-h1);border-top:1px solid var(--border);margin:28px 0 4px;padding-top:20px;font-weight:700}.apiref-endpoint{padding:18px 0 8px}.apiref-ep-name{font-size:var(--fs-title-sm);margin:0 0 10px;font-weight:700}.apiref-ep-route{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.method-badge{font-size:var(--fs-caption);letter-spacing:.04em;border-radius:7px;padding:3px 10px;font-weight:700}.method-get,.method-dot.method-get{color:#047857;background:#d9f5e5}.method-post,.method-dot.method-post{color:#1d4ed8;background:#e6ecfb}.method-ws,.method-dot.method-ws{background:var(--lavender);color:var(--accent)}.apiref-path{font-size:var(--fs-body);background:#f6f5fb;border-radius:7px;padding:3px 10px;font-weight:600}.apiref-tag{font-size:var(--fs-caption);color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:2px 9px}.apiref-tag.warn{color:#b45309;background:#fdf6e9;border-color:#f3d9ae}.apiref-desc{color:var(--muted);font-size:var(--fs-body);max-width:720px;margin:0 0 14px;line-height:1.7}.apiref-cols{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.apiref-main{flex:380px;min-width:0}.apiref-main h4{font-size:var(--fs-sm);align-items:center;gap:10px;margin:14px 0 8px;font-weight:700;display:flex}.apiref-ct{font-size:var(--fs-caption);color:var(--muted);background:#f6f5fb;border-radius:6px;padding:2px 8px;font-weight:400}.apiref-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.apiref-table th{text-align:left;color:var(--muted);font-weight:600;font-size:var(--fs-caption);border-bottom:1px solid var(--border);padding:7px 10px}.apiref-table td{vertical-align:top;border-bottom:1px solid #f1f0f7;padding:8px 10px;line-height:1.55}.apiref-table code{font-size:var(--fs-caption);background:#f6f5fb;border-radius:5px;padding:1px 6px}.apiref-type{color:var(--muted);font-family:ui-monospace,monospace;font-size:var(--fs-caption)}.req{color:#dc2626;font-weight:600;font-size:var(--fs-caption)}.apiref-default{color:var(--muted);font-size:var(--fs-caption);margin-top:2px;display:block}.apiref-response{font-size:var(--fs-caption);background:#f6f5fb;border-radius:12px;margin:0 0 8px;padding:14px 16px;line-height:1.6;overflow-x:auto}.apiref-note{color:var(--muted);font-size:var(--fs-caption);margin:6px 0 0;line-height:1.6}.apiref-errors{font-size:var(--fs-caption);color:var(--muted);margin:14px 0 0}.apiref-errors a{color:inherit}.apiref-sample{flex:420px;min-width:0}.apiref-sample .code-block{border-radius:0 0 12px 12px;max-height:460px;overflow:auto}.apiref-sample-head{background:#26232f;border-radius:12px 12px 0 0;align-items:center;gap:8px;padding:8px 12px;display:flex}.apiref-sample-title{color:#a8a3bd;font-size:var(--fs-caption);margin-right:auto;font-weight:600}.apiref-sample .tab{color:#a8a3bd;font-size:var(--fs-caption);padding:3px 10px}.apiref-sample .tab.active{color:#fff;background:#4b4460}.apiref-copy{color:#a8a3bd;font-size:var(--fs-caption);background:0 0;border:none;padding:3px 10px}.apiref-copy:hover{color:#fff;box-shadow:none}@media (width<=1100px){.apiref-toc{display:none}}code,pre,kbd,samp{font-family:Cascadia Code,Consolas,SF Mono,Menlo,PingFang SC,Microsoft YaHei,Hiragino Sans,sans-serif}.mode-switcher{margin:2px 0 6px;position:relative}.mode-trigger{border:1px solid var(--border);width:100%;font-size:var(--fs-body);cursor:pointer;text-align:left;background:#fff;border-radius:999px;align-items:center;gap:10px;padding:10px 14px;font-weight:600;display:flex}.mode-trigger:hover{border-color:#6c5ce76b}.mode-label{flex:1}.mode-caret{color:var(--muted);align-items:center;display:flex}.mode-menu{z-index:30;border:1px solid var(--border);background:#fff;border-radius:16px;flex-direction:column;gap:2px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);left:0;right:0;box-shadow:0 12px 32px #1d1b2629}.mode-item{font-size:var(--fs-body);cursor:pointer;text-align:left;box-shadow:none;background:0 0;border:none;border-radius:11px;align-items:center;gap:10px;padding:10px;font-weight:500;display:flex}.mode-item:hover{box-shadow:none;background:#f3f2fa}.mode-check{color:var(--accent);align-items:center;display:inline-flex}.vl-page{flex-direction:column;gap:20px;display:flex}.vl-carousel{border:1px solid var(--border);border-radius:18px;padding:22px 26px 14px;position:relative;overflow:hidden}.vl-carousel-body{animation:.45s vl-fade}@keyframes vl-fade{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:none}}.vl-new-badge{background:var(--primary);color:#fff;font-size:var(--fs-caption);letter-spacing:.06em;border-radius:999px;margin-bottom:10px;padding:2px 10px;font-weight:700;display:inline-block}.vl-new-badge.small{vertical-align:2px;margin:0 0 0 8px;padding:1px 7px;font-size:9px}.vl-carousel-main{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.vl-carousel-text{flex:1;min-width:220px}.vl-carousel-name{font-size:var(--fs-h1);margin-bottom:4px;font-weight:700}.vl-carousel-desc{color:var(--muted);font-size:var(--fs-sm);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:10px;display:-webkit-box;overflow:hidden}.vl-play-main{flex-shrink:0}.vl-dots{justify-content:center;gap:6px;margin-top:12px;display:flex}.vl-dot{cursor:pointer;width:7px;height:7px;box-shadow:none;background:#1d1b262e;border:none;border-radius:999px;padding:0}.vl-dot.active{background:var(--primary);width:18px}.vl-dot:hover{box-shadow:none}.vl-avatar{width:42px;height:42px;font-size:var(--fs-title);border-radius:999px;flex-shrink:0;place-items:center;font-weight:700;display:grid;overflow:hidden}.vl-avatar svg{display:block}.vl-avatar.large{border:3px solid #fff;width:64px;height:64px;font-size:26px;box-shadow:0 6px 18px #1d1b261f}.vl-main{align-items:flex-start;gap:20px;display:flex}.vl-filters{background:#f8f7fc;border-radius:16px;flex-direction:column;flex-shrink:0;gap:16px;width:220px;padding:16px;display:flex;position:sticky;top:0}.vl-search{width:100%;font-size:var(--fs-sm)}.vl-filter-label{font-size:var(--fs-caption);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;font-weight:700}.vl-filter-options{flex-wrap:wrap;gap:6px;display:flex}.vl-opt{font-size:var(--fs-caption);border:1px solid var(--border);background:#fff;border-radius:999px;padding:5px 13px}.vl-opt.active{background:var(--primary);color:#fff;border-color:var(--primary)}.vl-list{flex:1;min-width:0}.vl-count{color:var(--muted);font-size:var(--fs-caption);margin-bottom:10px}.vl-empty{color:var(--muted);font-size:var(--fs-body);text-align:center;padding:40px 0}.vl-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;display:grid}.vl-card{border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:10px;padding:16px;transition:box-shadow .15s,transform .15s;display:flex;position:relative}.vl-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #1d1b261a}.vl-clickable{cursor:pointer}.vl-detail{flex-direction:column;gap:14px;display:flex}.vl-detail-head{align-items:center;gap:14px;display:flex}.vl-detail-name{font-weight:700;font-size:var(--fs-title);align-items:center;display:flex}.vl-detail-actions{justify-content:flex-end;gap:10px;display:flex}.vl-highlight{animation:2.4s 2 vl-highlight-pulse}@keyframes vl-highlight-pulse{0%,to{border-color:var(--border);box-shadow:0 0 #6c5ce700}40%{border-color:var(--accent);box-shadow:0 0 0 4px #6c5ce740}}.vl-card-head{align-items:center;gap:12px;display:flex}.vl-card-title{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.vl-card-name{font-weight:700;font-size:var(--fs-body)}.vl-card-meta{color:var(--muted);font-size:var(--fs-caption)}.vl-card-desc{color:var(--muted);font-size:var(--fs-sm);-webkit-line-clamp:2;-webkit-box-orient:vertical;flex:1;margin:0;line-height:1.6;display:-webkit-box;overflow:hidden}.vl-detail .vl-card-desc{-webkit-line-clamp:unset;display:block;overflow:visible}.vl-play{width:38px;height:38px;font-size:var(--fs-sm);border-radius:999px;flex-shrink:0;place-items:center;padding:0;display:grid}.vl-play.playing{background:var(--primary);color:#fff;border-color:var(--primary)}.vl-chiprow{flex-wrap:wrap;gap:6px;display:flex}.vl-chip{font-size:var(--fs-caption);color:var(--text);background:#f3f2fa;border-radius:999px;padding:3px 10px}.vl-listhead{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.vl-listhead .vl-count{margin-bottom:0}.cv-overlay{z-index:40;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#17151f73;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.cv-panel{background:#fff;border-radius:18px;flex-direction:column;gap:16px;width:520px;max-width:100%;padding:20px 22px;display:flex;position:relative;box-shadow:0 20px 60px #17151f4d}.cv-head{justify-content:space-between;align-items:center;display:flex}.cv-title{font-size:var(--fs-title);font-weight:700}.cv-close{color:var(--muted);background:0 0;border:none;border-radius:8px;padding:6px}.cv-close:hover{box-shadow:none;background:#f3f2fa}.cv-close-float{z-index:1;position:absolute;top:14px;right:14px}.cv-options{grid-template-columns:1fr 1fr;gap:12px;display:grid}.cv-option{border:1px solid var(--border);text-align:left;background:#fff;border-radius:14px;flex-direction:column;align-items:flex-start;gap:6px;padding:18px 16px;display:flex}.cv-option:hover:not(:disabled){border-color:var(--accent);box-shadow:0 6px 18px #17151f26}.cv-option-ico{color:var(--accent)}.cv-option:disabled .cv-option-ico{color:var(--muted)}.cv-option-name{font-weight:700;font-size:var(--fs-body)}.cv-option-desc{font-size:var(--fs-caption);color:var(--muted);align-items:center;gap:4px;display:inline-flex}.cv-record{flex-direction:column;gap:14px;display:flex}.cv-back{color:var(--muted);font-size:var(--fs-sm);background:0 0;border:none;align-self:flex-start;align-items:center;gap:4px;padding:4px 6px;display:inline-flex}.cv-back:hover{color:var(--text);box-shadow:none}.cv-mic-label{font-size:var(--fs-caption);color:var(--muted);flex-direction:column;gap:6px;font-weight:600;display:flex}.cv-mic-select .sel-trigger{width:100%}.cv-wave{border:1px solid var(--border);background:#fafafe;border-radius:12px;width:100%;height:96px}.cv-timer{text-align:center;font-variant-numeric:tabular-nums;color:var(--muted);font-size:22px;font-weight:700}.cv-timer[data-recording]{color:#dc2626}.cv-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.cv-playback{flex-direction:column;align-items:center;gap:12px;display:flex}.cv-error{color:#dc2626;font-size:var(--fs-sm);padding:12px 0}.cv-hint{color:#6b6880;font-size:var(--fs-caption)}.cv-warn{color:#b45309;font-size:var(--fs-caption)}.cv-save{flex-wrap:wrap;align-items:center;gap:8px;width:100%;display:flex}.cv-save .cv-error{width:100%;padding:0}.cv-name-input{min-width:180px;font-size:var(--fs-sm);border:1px solid var(--border,#d9d6e4);background:#fff;border-radius:8px;flex:1;padding:8px 10px}.cv-name-input:focus{border-color:var(--accent);outline:none}.cv-filename{font-size:var(--fs-sm);color:#6b6880;word-break:break-all}.vl-mine{margin-bottom:18px}.vl-mine-title{font-weight:600;font-size:var(--fs-body);margin-bottom:10px}.vl-mine .vl-avatar{color:#fff;place-items:center;display:inline-grid}.vl-menu-wrap{flex-shrink:0;position:relative}.vl-more{width:30px;height:30px;color:var(--muted);box-shadow:none;background:0 0;border:none;border-radius:8px;place-items:center;padding:0;display:grid}.vl-more:hover{color:var(--text);box-shadow:none;background:#f3f2fa}.vl-menu{z-index:10;border:1px solid var(--border);background:#fff;border-radius:12px;flex-direction:column;min-width:132px;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);left:0}.vl-menu-item{width:100%;font-size:var(--fs-sm);color:var(--text);text-align:left;box-shadow:none;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;display:flex}.vl-menu-item:hover{box-shadow:none;background:#f3f2fa}.vl-menu-danger{color:#dc2626}.vl-menu-danger:hover{background:#fdecec}@media (width<=900px){.vl-main{flex-direction:column}.vl-filters{width:100%;position:static}}.mode-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.mode-desc{font-size:var(--fs-caption);color:var(--muted);font-weight:400}.fx-page{flex-direction:column;gap:16px;max-width:720px;display:flex}.fx-subtitle{color:var(--muted);font-size:var(--fs-body);margin:-8px 0 0}.fx-card{background:#f7f7fc;border-radius:16px;flex-direction:column;gap:8px;padding:18px;display:flex}.fx-label{font-size:var(--fs-sm);margin-top:6px;font-weight:600}.fx-card .actions{margin-top:10px}.fx-drop{text-align:center;color:var(--muted);font-size:var(--fs-sm);cursor:pointer;background:#fff;border:1.5px dashed #cfcadf;border-radius:12px;place-items:center;padding:26px 16px;transition:border-color .15s;display:grid}.fx-drop:hover{border-color:var(--accent)}.fx-drop b{color:var(--text)}.fx-consent{font-size:var(--fs-sm);color:var(--muted);align-items:center;gap:8px;margin-top:8px;display:flex}.fx-result-list{flex-direction:column;gap:10px;display:flex}.fx-result-row{background:#fff;border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;display:flex}.fx-result-name{font-weight:600;font-size:var(--fs-sm);min-width:80px}.fx-result-row audio{flex:1;min-width:220px;height:36px}.vd-page{max-width:1080px}.vd-main{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:20px;display:grid}@media (width<=960px){.vd-main{grid-template-columns:minmax(0,1fr)}}.vd-center{flex-direction:column;gap:16px;width:100%;max-width:640px;margin:0 auto;display:flex}.vd-form .actions{justify-content:flex-end}.vd-form textarea,.vd-form input[type=text]{font-size:var(--fs-body)}.vd-section-title{font-size:var(--fs-body);font-weight:700}.vd-hint{font-size:var(--fs-caption);margin:2px 0 6px}.vd-templates{flex-direction:column;display:flex}.vd-templates-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.vd-template-list{flex-direction:column;gap:8px;display:flex}.vd-template{text-align:left;border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:12px;align-items:flex-start;gap:10px;padding:10px 12px;transition:border-color .15s,box-shadow .15s;animation:.35s both vd-tpl-in;display:flex}@keyframes vd-tpl-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.vd-template:hover{border-color:var(--accent);box-shadow:0 4px 12px #17151f14}.vd-template.selected{border-color:var(--accent);background:var(--accent-soft)}.vd-template-ico{border-radius:50%;flex-shrink:0;place-items:center;width:30px;height:30px;display:grid;overflow:hidden;box-shadow:inset 0 0 0 1px #17151f14}.vd-template-ico svg{display:block}.vd-template-body{flex-direction:column;gap:3px;min-width:0;display:flex}.vd-template-name{font-size:var(--fs-sm);color:var(--text);font-weight:700}.vd-template-prompt{font-size:var(--fs-caption);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.vd-history{min-height:auto}.vd-hist-block+.vd-hist-block{margin-top:4px}.vd-progress{font-size:var(--fs-caption);align-items:center;gap:12px;padding:8px 0;display:flex}.vd-progress-track{background:#1d1b261a;border-radius:999px;flex:1;height:6px;overflow:hidden}.vd-progress-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .4s}.vd-failed{color:#dc2626;font-weight:600}.vd-saved-inline{color:#15803d;align-items:center;gap:4px;font-weight:600;display:inline-flex}.vd-saved-inline svg{vertical-align:-2px}.vd-current{flex-direction:column;gap:12px;margin-top:14px;display:flex}.vd-choices{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.vd-choice{font-size:var(--fs-sm);border:1.5px solid var(--border);background:#fff;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:14px 10px;font-weight:600;transition:border-color .15s,box-shadow .15s;display:flex}.vd-choice:hover{border-color:var(--accent)}.vd-choice.selected{border-color:var(--accent);background:var(--accent-soft)}.vd-choice.playing svg{color:var(--accent)}.vd-choice.adopted{border-color:#15803d}.vd-adopted-mark{font-size:var(--fs-caption);color:#15803d;align-items:center;gap:3px;display:inline-flex}.vd-pick-actions{font-size:var(--fs-caption);justify-content:flex-end}.vd-pick-actions .muted{margin-right:auto}.vd-hist-toggle{text-align:left;cursor:pointer;-webkit-backdrop-filter:none;background:0 0;border:none;border-top:1px solid #1d1b2614;border-radius:0;width:100%;padding:8px 0;font-weight:400}.vd-hist-toggle:hover{box-shadow:none;background:0 0;border-color:#1d1b2614}.vd-caret{color:var(--muted);flex-shrink:0;transition:transform .2s;display:inline-flex}.vd-caret.open{transform:rotate(180deg)}.vd-expand{grid-template-rows:0fr;transition:grid-template-rows .25s;display:grid}.vd-expand.open{grid-template-rows:1fr}.vd-expand-inner{flex-direction:column;gap:12px;padding:0 16px;display:flex;overflow:hidden}.vd-expand.open .vd-expand-inner{padding:10px 16px 14px}.vcard{border:1px solid var(--border);background:#fff;border-radius:14px;flex-direction:column;gap:12px;padding:14px;display:flex}.cv-panel .vcard{background:0 0;border:none;padding:0}.vcard-head{align-items:flex-start;gap:12px;display:flex}.vcard-head .vl-avatar{flex-shrink:0}.vcard-title{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.vcard-name{font-size:var(--fs-body);border-radius:8px;padding:6px 10px;font-weight:600}.vcard-tags{flex-direction:column;gap:6px;display:flex}.vcard-chiprow{border:1px solid var(--border);background:#fff;border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;display:flex}.vcard-chip{align-items:center;gap:4px;display:inline-flex}.vcard-chip button{box-shadow:none;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:1px;display:inline-flex}.vcard-chip button:hover{color:#dc2626}.vcard-tag-input{min-width:120px;font-size:var(--fs-caption);background:0 0;border:none;outline:none;flex:1;padding:4px 2px}.vcard-actions{justify-content:flex-end}.dub-page{max-width:860px;margin:0 auto}.dub-hero{text-align:center}.dub-hero p{font-size:var(--fs-body);margin:0}.dub-card-wrap{position:relative}.dub-card{gap:14px}.dub-drop{cursor:pointer;text-align:center;border:1.5px dashed #d8d6e6;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:200px;padding:24px;transition:border-color .15s,background .15s;display:flex}.dub-drop:hover,.dub-drop.dragging{border-color:var(--accent);background:#fafaff}.dub-drop-ico{color:var(--muted)}.dub-drop-title{font-size:var(--fs-body);font-weight:600}.dub-drop-sub{font-size:var(--fs-caption);letter-spacing:.04em}.dub-file{flex-direction:column;align-items:center;gap:6px;display:flex;position:relative}.dub-file-name{font-weight:600;font-size:var(--fs-body);text-overflow:ellipsis;white-space:nowrap;max-width:420px;overflow:hidden}.dub-file-clear{font-size:var(--fs-caption);cursor:pointer;color:var(--muted);background:#fff;border:1px solid #d8d6e6;border-radius:999px;align-items:center;gap:4px;margin-top:4px;padding:4px 10px;display:inline-flex}.dub-file-clear:hover{color:var(--text);border-color:var(--accent)}.dub-langs{align-items:flex-end;gap:14px;display:flex}.dub-lang{flex-direction:column;flex:1;gap:6px;display:flex}.dub-lang-arrow{color:var(--muted);font-size:var(--fs-body);padding-bottom:10px}.dub-footer{border-top:1px solid #e9e7f0;justify-content:flex-end;align-items:center;gap:12px;margin-top:2px;padding-top:12px;display:flex}.dub-footer .primary{align-items:center;gap:6px;display:inline-flex}.keys-page{flex-direction:column;gap:16px;width:100%;max-width:860px;margin-inline:auto;display:flex}.keys-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.keys-head .vd-section-title{align-items:center;gap:8px;display:flex}.keys-desc{font-size:var(--fs-sm);max-width:620px;margin:6px 0 0;line-height:1.6}.keys-warning{font-size:var(--fs-sm);color:#7a5c14;background:#fdf6e8;border:1px solid #f0e2c4;border-radius:12px;align-items:flex-start;gap:8px;padding:10px 14px;line-height:1.6;display:flex}.keys-warning svg{flex-shrink:0;margin-top:3px}.keys-warning.strong{color:#90322f;background:#fdeeee;border-color:#f2cfcf}.keys-empty{border:1px dashed var(--border);color:var(--muted);border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:56px 0;display:flex}.keys-empty p{margin:0}.keys-table-wrap{border:1px solid var(--border);background:#fff;border-radius:14px;overflow-x:auto}.keys-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.keys-table th{text-align:left;font-size:var(--fs-caption);color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px;font-weight:600}.keys-table td{border-bottom:1px solid var(--border);white-space:nowrap;padding:11px 14px}.keys-table tbody tr:last-child td{border-bottom:none}.keys-name{font-weight:600}.keys-prefix{font-family:var(--mono,ui-monospace, monospace);background:#f3f2fa;border-radius:6px;padding:2px 8px}.keys-badge{font-size:var(--fs-caption);border-radius:999px;padding:2px 10px;font-weight:600}.keys-badge.active{color:#14724a;background:#e3f6ec}.keys-badge.revoked{color:var(--muted);background:#f3f2f2}.keys-row-revoked td{opacity:.62}.keys-actions{text-align:right}.keys-revoke{font-size:var(--fs-caption);padding:5px 12px}.keys-plain{border:1px solid var(--border);background:#f8f7fc;border-radius:12px;align-items:center;gap:10px;padding:12px 14px;display:flex}.keys-plain code{word-break:break-all;white-space:normal;min-width:0;font-family:var(--mono,ui-monospace, monospace);font-size:var(--fs-sm);flex:1}.keys-copy{font-size:var(--fs-sm);flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.keys-revoke-text{margin:0;line-height:1.7}.keys-revoke-hint{font-size:var(--fs-sm);margin:0}.dub-history{flex-direction:column;gap:12px;margin-top:8px;display:flex}.dub-listhead{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.dub-listhead-tagline{font-size:var(--fs-sm);margin:4px 0 0}.cv-panel.dub-create-panel{width:640px}.dub-result{flex-direction:column;gap:8px;display:flex}.dub-result-video{background:#000;border-radius:10px;width:100%;max-height:320px}.dub-download{font-size:var(--fs-sm);color:var(--accent);align-self:flex-start;align-items:center;gap:6px;font-weight:600;text-decoration:none;display:inline-flex}.dub-download:hover{text-decoration:underline}.sidebar-toggle{z-index:5;width:24px;height:24px;color:var(--muted);cursor:pointer;background:#fff;border:1px solid #1d1b261f;border-radius:50%;place-items:center;padding:0;line-height:1;transition:color .15s,transform .15s,box-shadow .15s;display:grid;position:absolute;top:27px;right:-12px;box-shadow:0 2px 8px #1d1b2624}.sidebar-toggle:hover{color:var(--primary);transform:scale(1.12);box-shadow:0 4px 12px #1d1b2633}.sidebar{white-space:nowrap;transition:width .28s cubic-bezier(.4,0,.2,1)}.sidebar.collapsed{width:74px}.sidebar.collapsed .sidebar-inner{padding:20px 12px}.side-nav a,.brand-name,.side-label{transition:opacity .2s}.sidebar.collapsed .side-nav a{transition:opacity .2s,font-size 0s .1s}.mode-switcher{transition:opacity .2s}.sidebar.collapsed .mode-switcher{opacity:0;pointer-events:none;height:0;margin:0;overflow:hidden}.sidebar.collapsed .brand{justify-content:center;padding:2px 0 14px}.sidebar.collapsed .brand-name,.sidebar.collapsed .side-label{display:none}.sidebar.collapsed .side-nav a,.sidebar.collapsed .side-nav .nav-disabled{justify-content:center;gap:0;padding:10px 0;font-size:0}.sidebar.collapsed .side-nav .nav-ico{width:auto}.brand-mark svg,.sidebar-toggle svg{display:block}.auth-loading{min-height:100vh;color:var(--muted);place-items:center;font-size:24px;display:grid}.user-menu{align-items:center;gap:12px;margin-left:0;display:flex;position:relative}.credit-chip{color:var(--ink,#1d1b26);cursor:pointer;align-items:center;gap:6px;transition:background .15s,border-color .15s;display:inline-flex}.credit-chip:hover{background:#f2f2f7;border-color:#d8d8e2}.credit-chip-num{font-variant-numeric:tabular-nums}.lang-select{margin-top:0}.lang-select .sel-trigger,.credit-chip{box-sizing:border-box;border:1px solid var(--border);height:34px;font-size:var(--fs-sm);font-weight:600;font-family:var(--font-sans), var(--font-sc);background:#fff;border-radius:10px;padding:0 12px}.lang-select .sel-menu,.lang-select .sel-item,.lang-select .sel-label{font-family:var(--font-sans), var(--font-sc)}.user-avatar{border:1px solid var(--glass-violet-border);background:var(--glass-violet-strong);-webkit-backdrop-filter:blur(14px)saturate(1.4);width:34px;height:34px;color:var(--accent);font-weight:700;font-size:var(--fs-body);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;overflow:hidden}.user-avatar img{object-fit:cover;width:100%;height:100%}.user-dropdown{z-index:30;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:1px solid var(--border);background:#ffffffeb;border-radius:14px;width:220px;padding:8px;position:absolute;top:42px;right:0;box-shadow:0 12px 40px #1d1b261f}.user-info{border-bottom:1px solid var(--border);padding:8px 10px 10px}.user-name{font-weight:700;font-size:var(--fs-body)}.user-email{font-size:var(--fs-caption);color:var(--muted);word-break:break-all;margin-top:2px}.user-tenant{font-size:var(--fs-caption);color:var(--muted);align-items:center;gap:6px;margin-top:6px;display:flex}.user-role{font-size:var(--fs-caption);background:var(--lavender);color:var(--accent);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:1px 8px;font-weight:600}.user-logout{color:#c0392b;width:100%;font-size:var(--fs-body);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;margin-top:6px;padding:9px 10px;font-weight:500;display:flex}.user-logout:hover{background:var(--rose)}.user-credit-row{width:100%;color:var(--ink,#1d1b26);font-size:var(--fs-body);cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:space-between;align-items:center;margin-top:6px;padding:9px 10px;display:flex}.user-credit-row:hover{background:#f2f2f7}.user-credit-left{color:var(--muted);align-items:center;gap:8px;display:flex}.user-credit-right{align-items:center;gap:6px;display:flex}.user-credit-right strong{font-variant-numeric:tabular-nums}.user-credit-right svg{color:var(--muted)}.mobile-only{display:none}.user-lang{margin-top:6px}.user-lang-current{width:100%;box-shadow:none;color:var(--ink,#1d1b26);font-size:var(--fs-body);cursor:pointer;font-weight:500;font-family:var(--font-sans), var(--font-sc);background:0 0;border:none;border-radius:10px;justify-content:space-between;align-items:center;padding:9px 10px;display:flex}.user-lang-current:hover{box-shadow:none;background:#f2f2f7}.user-lang-left{color:var(--muted)}.user-lang-right{align-items:center;gap:6px;font-weight:600;display:flex}.user-lang-right svg{color:var(--muted);transition:transform .15s}.user-lang-right svg.open{transform:rotate(180deg)}.user-lang-list{flex-direction:column;gap:2px;margin:2px 0;display:flex}.user-lang-opt{width:100%;min-height:40px;color:var(--text);font-size:var(--fs-sm);cursor:pointer;text-align:left;box-shadow:none;white-space:nowrap;font-weight:500;font-family:var(--font-sans), var(--font-sc);background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:9px 10px 9px 18px;display:flex}.user-lang-opt:hover{box-shadow:none;background:#f2f2f7}.user-lang-opt.is-sel{color:var(--accent);font-weight:600}.user-lang-opt.is-sel svg{color:var(--accent)}.btn-est{opacity:.85;align-items:center;gap:4px;font-weight:600;display:inline-flex}.btn-est svg{vertical-align:-2px}.credit-modal{width:min(560px,92vw)}.credit-modal-title{align-items:center;gap:8px;display:inline-flex}.credit-balance-card{background:var(--card,#f7f7fc);border:1px solid var(--border);border-radius:14px;justify-content:space-between;align-items:center;margin-bottom:14px;padding:14px 16px;display:flex}.credit-balance-label{color:var(--muted);font-size:var(--fs-caption)}.credit-balance-value{font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:22px;font-weight:800;display:inline-flex}.credit-ledger th.th-filter{position:relative;overflow:visible}.th-filter-btn{cursor:pointer;color:var(--muted);font-weight:600;font-size:inherit;background:0 0;border:none;align-items:center;gap:4px;padding:0;font-family:inherit;display:inline-flex}.th-filter-btn:hover{color:var(--text)}.th-filter-btn.active,.th-filter-btn.active svg{color:var(--accent-ink,#1d1b26)}.th-pop{z-index:60;border:1px solid var(--border);background:#fff;border-radius:10px;min-width:150px;max-width:calc(100vw - 16px);padding:6px;font-weight:400;box-shadow:0 12px 32px #1d1b2629}.th-pop-item{cursor:pointer;width:100%;font-size:var(--fs-sm);text-align:left;color:var(--text);background:0 0;border:none;border-radius:8px;flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;display:flex}.th-pop-item>span{flex:auto;min-width:0}.th-pop-item>svg{flex:none}.th-pop-item:hover{background:#f2f2f7}.th-pop-item.is-sel{font-weight:600}.th-pop-item.is-sel svg{color:var(--accent-ink,#1d1b26)}.th-pop-range{flex-direction:column;gap:8px;min-width:180px;display:flex}.th-pop-range label{font-size:var(--fs-caption);color:var(--muted);flex-direction:column;gap:4px;display:flex}.th-pop-range input[type=date]{box-sizing:border-box;border:1px solid var(--border);height:32px;font-size:var(--fs-sm);color:var(--text);background:#fff;border-radius:8px;padding:0 8px;font-family:inherit;font-weight:400}.th-pop-clear{color:var(--text);font-size:var(--fs-caption);cursor:pointer;background:#f2f2f7;border:none;border-radius:8px;margin-top:2px;padding:6px}.th-pop-clear:hover{background:#e9e9f0}.credit-empty{text-align:center;padding:18px 4px}.credit-ledger-wrap{max-height:52vh;overflow:auto}.credit-ledger{border-collapse:collapse;table-layout:fixed;width:100%;font-size:var(--fs-caption)}.credit-ledger col.col-delta{width:14%}.credit-ledger col.col-reason{width:36%}.credit-ledger col.col-balance{width:18%}.credit-ledger col.col-time{width:32%}.credit-ledger th{color:var(--muted);border-bottom:1px solid var(--border);background:#fffffff5;padding:6px 10px;font-weight:600;position:sticky;top:0}.credit-ledger td{border-bottom:1px solid var(--border);padding:10px}.credit-ledger th,.credit-ledger td{text-align:left}.credit-ledger .c-delta,.credit-ledger .c-balance{font-variant-numeric:tabular-nums;white-space:nowrap}.credit-ledger .c-time{white-space:nowrap}.credit-reason{color:var(--ink,#1d1b26);background:#efeff5;border-radius:999px;padding:1px 8px;font-weight:600;display:inline-block}.credit-reason.in{color:#1c7a4a;background:#e5f5ec}.credit-reason.out{color:#4a4a55;background:#f0f0f5}.credit-delta.in{color:#1c7a4a;font-weight:700}.credit-delta.out{color:#c0392b;font-weight:700}@media (width<=768px){html,body{overflow-x:hidden}img,video,canvas{max-width:100%}.app-shell{gap:10px;padding:8px}.side-nav a,.side-nav .nav-disabled{min-height:44px}.workspace-top{flex-wrap:wrap;padding:8px 14px}.workspace-body{padding:14px 14px 24px}.workspace-top>.lang-select,.user-menu .credit-chip{display:none}.mobile-only{display:block}.mode-trigger,.sel-trigger,.ppv-trigger,.pp-model-card,button.primary,.btn.primary,button.danger,.morph-apply{min-height:44px}.hist-play,.vl-play,.ppv-play{width:40px;height:40px}select,input[type=text],input[type=url],textarea{font-size:16px}.tts-editor-footer{flex-direction:column;align-items:stretch}.tts-editor-footer .actions{width:100%}.actions{flex-wrap:wrap}.actions button.primary{flex:1;min-width:0}.morph-controls{flex-direction:column}.morph-input{max-width:none}.cv-options{grid-template-columns:1fr}.dub-langs{flex-direction:column;align-items:stretch;gap:6px}.dub-lang-arrow{text-align:center;padding:0;transform:rotate(90deg)}.dub-footer{justify-content:stretch}.dub-footer .primary{flex:1;justify-content:center}.dub-file-name{max-width:100%}.vd-choices{grid-template-columns:1fr}.fx-result-row audio{width:100%;min-width:0}.player-row{padding:10px 12px}.player-row .aplayer{width:100%}.tts-history-item,.history-item{flex-wrap:wrap}.hist-actions{margin-left:auto}.page-title{font-size:var(--fs-title-sm)}.vl-carousel{padding:16px 16px 12px}.vl-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.apiref{gap:0}.code-block{font-size:var(--fs-caption)}}@media (width<=480px){.app-shell{gap:8px;padding:6px}.sidebar-inner,.sidebar.collapsed .sidebar-inner{padding:10px 12px}.workspace-top{gap:8px;padding:8px 12px}.workspace-body{padding:12px 12px 20px}.tts-editor{padding:12px}.tts-textarea{min-height:120px}.params-panel{gap:16px;padding:14px}.vl-grid{grid-template-columns:1fr}.vl-carousel-name{font-size:var(--fs-title)}.cv-overlay{padding:10px}.cv-panel{padding:16px}.log-drawer{padding:14px;inset:6px}.apiref-response{font-size:var(--fs-caption)}.dub-drop{min-height:160px;padding:18px 12px}}.sel-menu,.ppv-menu,.mode-menu,.user-dropdown{background:var(--glass-solid);-webkit-backdrop-filter:blur(24px)saturate(1.5);border-color:var(--glass-border)}.params-panel,.tts-editor{background:var(--glass);-webkit-backdrop-filter:blur(16px)saturate(1.3);border-color:var(--glass-border)}.cv-overlay{-webkit-backdrop-filter:blur(10px);background:#17151f80}.cv-panel{background:#fff}.toast-stack{z-index:1000;pointer-events:none;flex-direction:column;align-items:center;gap:8px;max-width:min(520px,100vw - 32px);display:flex;position:fixed;top:20px;left:50%;transform:translate(-50%)}.toast{pointer-events:auto;font-size:var(--fs-sm);border-radius:12px;align-items:center;gap:8px;padding:10px 12px 10px 14px;animation:.22s toast-in;display:flex;box-shadow:0 10px 30px #17151f29}.toast.leaving{opacity:0;transition:opacity .2s,transform .2s;transform:translateY(-6px)}.toast-error{border:1px solid var(--rose);color:#b91c1c;background:#fff}.toast-error .toast-ico{flex-shrink:0}.toast-msg a{color:inherit;margin-left:6px;font-weight:600;text-decoration:underline}.toast-close{width:22px;height:22px;color:inherit;opacity:.55;box-shadow:none;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.toast-close:hover{opacity:1;background:var(--rose);box-shadow:none}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.vd-status-failed{font-size:var(--fs-sm)}.billing-page{max-width:860px}.billing-notice{font-size:var(--fs-sm);border:1px solid var(--border);background:var(--card,#f7f7fc);border-radius:12px;align-items:center;gap:8px;padding:10px 14px;display:flex}.billing-notice.is-ok{color:#1c7a4a;background:#e5f5ec;border-color:#bfe5cf}.billing-notice.is-pending{color:var(--muted)}.billing-spin{animation:.9s linear infinite billing-spin}@keyframes billing-spin{to{transform:rotate(360deg)}}.billing-plans{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.billing-plan{border:1px solid var(--border);background:var(--card,#f7f7fc);border-radius:14px;flex-direction:column;gap:6px;padding:18px 16px;display:flex;position:relative}.billing-plan.is-popular{border-color:var(--primary)}.billing-badge{background:var(--primary);color:#fff;font-size:var(--fs-caption);border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-weight:600;display:inline-flex;position:absolute;top:-9px;left:16px}.billing-plan-credits{font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:20px;font-weight:800;display:inline-flex}.billing-plan-price{font-size:var(--fs-body);font-weight:600}.billing-plan-rate{color:var(--muted);font-size:var(--fs-caption);margin-bottom:6px}.billing-plan button{width:100%;margin-top:auto}.billing-note,.billing-offline{font-size:var(--fs-caption);line-height:1.6}.aplayer{border:1px solid var(--border);background:#fff;border-radius:999px;align-items:center;gap:12px;min-width:320px;max-width:460px;padding:10px 16px 10px 10px;display:flex;box-shadow:0 2px 10px #26231c12}.aplayer-compact{gap:8px;min-width:240px;padding:6px 12px 6px 6px}.aplayer button.aplayer-btn{cursor:pointer;background:linear-gradient(135deg, #7d6ef0, var(--accent));color:#fff;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;padding:0;line-height:0;transition:transform .12s,box-shadow .15s;display:inline-flex;box-shadow:0 2px 8px #17151f59}.aplayer button.aplayer-btn:hover{border:none;transform:scale(1.05);box-shadow:0 3px 12px #17151f73}.aplayer button.aplayer-btn:active{transform:scale(.95)}.aplayer-compact button.aplayer-btn{width:28px;height:28px}.aplayer button.aplayer-mute{width:30px;height:30px;color:var(--muted);box-shadow:none;background:0 0}.aplayer button.aplayer-mute:hover{background:var(--lavender);color:var(--accent);box-shadow:none;transform:none}.aplayer-time{color:var(--muted);font-variant-numeric:tabular-nums;text-align:center;flex-shrink:0;font-size:12px;font-weight:500}.aplayer-bar{cursor:pointer;touch-action:none;flex:1;align-items:center;height:24px;display:flex}.aplayer-track{background:#ecebf5;border-radius:999px;width:100%;height:6px;transition:height .12s;position:relative}.aplayer-bar:hover .aplayer-track{height:8px}.aplayer-fill{background:linear-gradient(90deg, #8b7cf0, var(--accent));border-radius:999px;position:absolute;top:0;bottom:0;left:0}.aplayer-thumb{border:2.5px solid var(--accent);pointer-events:none;background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .12s;position:absolute;top:50%;transform:translate(-50%,-50%)scale(0);box-shadow:0 1px 4px #17151f40}.aplayer-bar:hover .aplayer-thumb,.aplayer-bar.dragging .aplayer-thumb{transform:translate(-50%,-50%)scale(1)}@media (width<=768px){.aplayer{width:100%;min-width:0;max-width:none}.aplayer button.aplayer-btn{width:44px;height:44px}.aplayer-compact{min-width:0}.aplayer-compact button.aplayer-btn{width:36px;height:36px}}
