:root{--color-bg: #f2f6f6;--color-surface: #ffffff;--color-surface-muted: #f7fafa;--color-surface-subtle: #fbfcfc;--color-text: #0d1b1e;--color-text-secondary: #4c5f64;--color-text-muted: #84969b;--color-accent: #0d9488;--color-accent-strong: #0f766e;--color-accent-soft: #e6f7f4;--color-accent-line: #b7e3dd;--gradient-accent: linear-gradient(135deg, #0d9488 0%, #0ea5b7 100%);--gradient-accent-hover: linear-gradient(135deg, #0f766e 0%, #0d8ca0 100%);--color-douyin: #fe2c55;--color-douyin-soft: #ffe9ee;--color-bilibili: #fb7299;--color-bilibili-soft: #ffecf2;--color-xhs: #ff2442;--color-xhs-soft: #ffe8eb;--color-x: #14171a;--color-x-soft: #e8eaed;--color-warm: #b7791f;--color-warm-bg: #fff7e6;--color-border: #dfe8e7;--color-border-strong: #c3d3d1;--color-error: #d92d20;--color-error-bg: #fff1f0;--color-success: #12805c;--color-success-bg: #e9f7ef;--radius-sm: 9px;--radius: 14px;--radius-lg: 20px;--shadow-sm: 0 1px 2px rgba(13, 27, 30, .05);--shadow: 0 1px 2px rgba(13, 27, 30, .04), 0 4px 14px rgba(13, 27, 30, .05);--shadow-lg: 0 2px 6px rgba(13, 27, 30, .05), 0 18px 44px rgba(13, 27, 30, .09);--shadow-accent: 0 6px 20px rgba(13, 148, 136, .28);--ease-spring: cubic-bezier(.34, 1.4, .64, 1);--ease-out: cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;color:var(--color-text);background:radial-gradient(1100px 480px at 85% -10%,rgba(13,148,136,.1),transparent 60%),radial-gradient(900px 420px at 8% 0%,rgba(14,165,183,.08),transparent 55%),var(--color-bg);background-attachment:fixed;font-family:Inter,PingFang SC,Hiragino Sans GB,Microsoft YaHei,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.55;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid rgba(13,148,136,.28);outline-offset:2px;border-radius:var(--radius-sm)}::selection{color:#fff;background:var(--color-accent)}.app{width:min(1180px,calc(100% - 32px));min-height:100vh;margin:0 auto;padding:26px 0 34px;display:flex;flex-direction:column}.header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:4px 2px 22px}.brand-lockup{display:flex;align-items:center;gap:13px;min-width:0}.brand-mark{display:grid;width:44px;height:44px;place-items:center;flex:0 0 auto;border-radius:13px;color:#fff;background:var(--gradient-accent);box-shadow:var(--shadow-accent)}.brand-mark svg{width:22px;height:22px}.header-title{font-size:1.375rem;font-weight:800;line-height:1.15;letter-spacing:-.01em}.header-title span{background:var(--gradient-accent);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.header-subtitle,.header-note{color:var(--color-text-secondary);font-size:.9375rem}.header-note{max-width:360px;text-align:right;font-size:.875rem}.main{display:grid;gap:18px;animation:rise-in .45s var(--ease-out)}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.workbench-panel,.result-card,.empty-state,.error-message{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-lg)}.workbench-panel{position:relative;overflow:hidden;padding:26px 28px 24px}.workbench-panel:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--gradient-accent)}.panel-heading{display:flex;align-items:start;justify-content:space-between;gap:18px;margin-bottom:18px}.panel-heading h2{margin-top:3px;font-size:1.375rem;line-height:1.25;letter-spacing:-.01em}.eyebrow,.empty-kicker{color:var(--color-accent);font-size:.6875rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.link-input-area{display:grid;grid-template-columns:1fr auto;gap:10px 12px;align-items:end}.input-label{grid-column:1 / -1;color:var(--color-text-secondary);font-size:.8125rem;font-weight:700}.input-shell{position:relative;display:flex;align-items:center}.input-shell .input-icon{position:absolute;left:15px;width:17px;height:17px;color:var(--color-text-muted);pointer-events:none;transition:color .18s ease}.input-shell:focus-within .input-icon{color:var(--color-accent)}.link-input{width:100%;min-height:52px;padding:12px 96px 12px 42px;border:1.5px solid var(--color-border-strong);border-radius:var(--radius);color:var(--color-text);background:var(--color-surface-muted);font-size:.9375rem;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}.link-input::placeholder{color:var(--color-text-muted)}.link-input:focus{border-color:var(--color-accent);background:#fff;box-shadow:0 0 0 4px #0d94881f;outline:none}.link-input:disabled{opacity:.65;cursor:not-allowed}.input-tools{position:absolute;right:8px;display:flex;gap:4px}.input-tool-btn{display:inline-flex;min-width:36px;height:36px;align-items:center;justify-content:center;gap:5px;padding:0 9px;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);background:transparent;cursor:pointer;font-size:.75rem;font-weight:700;transition:color .15s ease,background .15s ease}.input-tool-btn:hover:not(:disabled){color:var(--color-accent-strong);background:var(--color-accent-soft)}.input-tool-btn:disabled{opacity:.4;cursor:not-allowed}.input-tool-btn svg{width:15px;height:15px}.link-textarea{min-height:148px;resize:vertical}.submit-btn{position:relative;min-height:52px;padding:0 26px;border:none;border-radius:var(--radius);color:#fff;background:var(--gradient-accent);box-shadow:var(--shadow-accent);cursor:pointer;font-weight:800;font-size:.9375rem;white-space:nowrap;transition:transform .18s var(--ease-spring),box-shadow .18s ease,filter .18s ease}.submit-btn:hover:not(:disabled){background:var(--gradient-accent-hover);box-shadow:0 10px 26px #0d948857;transform:translateY(-1px)}.submit-btn:active:not(:disabled){transform:translateY(0) scale(.98)}.submit-btn:disabled{cursor:not-allowed;filter:grayscale(.35);opacity:.55;box-shadow:none}.input-hint{grid-column:1 / -1;display:flex;align-items:center;gap:7px;color:var(--color-warm);font-size:.8125rem;font-weight:700;animation:rise-in .25s var(--ease-out)}.input-hint svg{width:15px;height:15px;flex:0 0 auto}.type-indicator{display:flex;align-items:center;gap:10px;margin-top:14px;padding:10px 13px;border:1px solid rgba(13,148,136,.22);border-radius:var(--radius);color:var(--color-text-secondary);background:var(--color-accent-soft);font-size:.8125rem;animation:rise-in .25s var(--ease-out)}.type-chip{display:inline-flex;min-height:25px;align-items:center;gap:5px;flex-shrink:0;border-radius:999px;padding:0 11px;color:#075f58;background:#fff;box-shadow:var(--shadow-sm);font-size:.75rem;font-weight:800;white-space:nowrap}.type-indicator--douyin{border-color:#fe2c5540;background:var(--color-douyin-soft)}.type-indicator--douyin .type-chip{color:var(--color-douyin)}.type-indicator--bilibili{border-color:#fb72994d;background:var(--color-bilibili-soft)}.type-indicator--bilibili .type-chip{color:#e0447c}.type-indicator--xiaohongshu{border-color:#ff244240;background:var(--color-xhs-soft)}.type-indicator--xiaohongshu .type-chip{color:var(--color-xhs)}.type-indicator--x{border-color:#14171a2e;background:var(--color-x-soft)}.type-indicator--x .type-chip{color:var(--color-x)}.result-workspace{min-height:300px}.empty-state{min-height:300px;padding:46px 24px;display:grid;place-items:center;align-content:center;gap:14px;text-align:center;background:var(--color-surface-subtle)}.empty-icon{display:grid;width:62px;height:62px;place-items:center;border:1px dashed var(--color-accent-line);border-radius:18px;color:var(--color-accent);background:var(--color-accent-soft)}.empty-icon svg{width:28px;height:28px}.empty-text{font-size:1.125rem;font-weight:800;letter-spacing:-.01em}.empty-sub{max-width:420px;color:var(--color-text-secondary);font-size:.875rem}.empty-capabilities{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:4px}.empty-capabilities span{display:inline-flex;min-height:30px;align-items:center;gap:6px;padding:4px 12px;border:1px solid var(--color-border);border-radius:999px;color:var(--color-text-secondary);background:var(--color-surface);font-size:.8125rem;font-weight:700;transition:transform .15s var(--ease-spring),border-color .15s ease}.empty-capabilities span:hover{transform:translateY(-1px);border-color:var(--color-border-strong)}.cap-dot{width:7px;height:7px;border-radius:50%;background:var(--color-accent)}.cap-dot--douyin{background:var(--color-douyin)}.cap-dot--bilibili{background:var(--color-bilibili)}.cap-dot--xiaohongshu{background:var(--color-xhs)}.cap-dot--x{background:var(--color-x)}.loading{min-height:300px;display:grid;place-items:center;color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-subtle);box-shadow:var(--shadow-sm)}.processing-progress{width:min(440px,100% - 32px);display:grid;justify-items:center;gap:18px}.spinner{width:34px;height:34px;border:3px solid var(--color-accent-line);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.processing-progress-meta{display:flex;width:100%;justify-content:space-between;gap:12px;color:var(--color-text-secondary);font-size:.8125rem;font-weight:800}.processing-progress-track{width:100%;height:8px;overflow:hidden;border-radius:999px;background:var(--color-border)}.processing-progress-bar{width:42%;height:100%;border-radius:inherit;background:var(--gradient-accent);animation:processing-slide 1.15s ease-in-out infinite}@keyframes processing-slide{0%{transform:translate(-110%)}to{transform:translate(250%)}}@media (prefers-reduced-motion: reduce){.processing-progress-bar{width:100%;animation:none}.spinner{animation-duration:2s}}.error-message{display:grid;justify-items:center;gap:12px;padding:40px 24px;text-align:center;background:var(--color-error-bg);border-color:#d92d2038;box-shadow:var(--shadow-sm)}.error-icon{display:grid;width:46px;height:46px;place-items:center;border-radius:14px;color:var(--color-error);background:#fff;box-shadow:var(--shadow-sm)}.error-icon svg{width:22px;height:22px}.error-text{max-width:480px;color:var(--color-error);font-size:.9375rem;font-weight:700}.retry-btn{min-height:42px;padding:0 20px;border:1.5px solid var(--color-error);border-radius:var(--radius);color:var(--color-error);background:#fff;cursor:pointer;font-size:.875rem;font-weight:800;transition:background .15s ease,color .15s ease,transform .15s var(--ease-spring)}.retry-btn:hover{color:#fff;background:var(--color-error);transform:translateY(-1px)}.result-card{padding:22px 24px;animation:rise-in .35s var(--ease-out)}.result-header{margin-bottom:16px;padding-bottom:15px;border-bottom:1px solid var(--color-border)}.result-title{font-size:1.25rem;line-height:1.35;font-weight:800;letter-spacing:-.01em}.result-source,.result-duration{display:block;margin-top:6px;color:var(--color-text-secondary);font-size:.8125rem;word-break:break-all}.result-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.result-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.result-toolbar-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.result-tabs{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface-muted)}.result-tab{min-width:86px;min-height:36px;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);background:transparent;cursor:pointer;font-size:.8125rem;font-weight:800;transition:background .16s ease,color .16s ease,box-shadow .16s ease}.result-tab:hover:not(.is-active){color:var(--color-text)}.result-tab.is-active{color:var(--color-accent-strong);background:#fff;box-shadow:var(--shadow-sm)}.action-btn{display:inline-flex;min-height:42px;align-items:center;justify-content:center;gap:6px;padding:0 16px;border:none;border-radius:var(--radius);color:#fff;background:var(--gradient-accent);box-shadow:var(--shadow-accent);cursor:pointer;text-decoration:none;font-size:.8125rem;font-weight:800;transition:transform .16s var(--ease-spring),box-shadow .16s ease,filter .16s ease}.action-btn svg{width:15px;height:15px}.action-btn:hover:not(:disabled){background:var(--gradient-accent-hover);box-shadow:0 10px 24px #0d948852;transform:translateY(-1px)}.action-btn:active:not(:disabled){transform:scale(.97)}.action-btn:disabled{cursor:not-allowed;filter:grayscale(.35);opacity:.55;box-shadow:none}.action-secondary{color:var(--color-text-secondary);border:1.5px solid var(--color-border-strong);background:var(--color-surface);box-shadow:none}.action-secondary:hover:not(:disabled){color:var(--color-accent-strong);border-color:var(--color-accent);background:var(--color-accent-soft);box-shadow:none}.audio-btn{color:var(--color-accent-strong);border-color:var(--color-accent)}.audio-btn svg{color:var(--color-accent)}.audio-btn:hover:not(:disabled){background:var(--gradient-accent);color:#fff;border-color:transparent;box-shadow:0 8px 20px #0d948847}.audio-btn:hover:not(:disabled) svg{color:#fff}.action-success{color:var(--color-success);border:1.5px solid var(--color-success);background:var(--color-success-bg);box-shadow:none}.action-success:hover:not(:disabled){color:var(--color-success);border-color:var(--color-success);background:var(--color-success-bg);box-shadow:none}.copy-btn{margin-left:auto}.text-preview{max-height:620px;overflow-y:auto;padding:26px 30px;border:1px solid var(--color-border);border-radius:var(--radius);color:#24313a;background:var(--color-surface-subtle);line-height:1.85;font-size:.9375rem;scroll-behavior:smooth}.text-preview::-webkit-scrollbar{width:10px}.text-preview::-webkit-scrollbar-thumb{border:3px solid var(--color-surface-subtle);border-radius:999px;background:var(--color-border-strong)}.text-preview h1,.text-preview h2,.text-preview h3,.text-preview h4{margin:1.2em 0 .5em;line-height:1.35;color:var(--color-text)}.text-preview p{margin:.7em 0}.text-preview a{color:var(--color-accent-strong)}.text-preview blockquote{margin:1em 0;padding:4px 0 4px 16px;border-left:3px solid var(--color-accent-line);color:var(--color-text-secondary)}.text-preview img{max-width:100%;height:auto;margin:.5em 0;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface)}.image-download-panel{padding:20px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface-subtle)}.image-download-meta{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px;color:var(--color-text);font-size:.9375rem}.image-download-meta span{color:var(--color-text-secondary);font-size:.8125rem}.image-download-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.image-download-item{display:grid;gap:10px;min-width:0;padding:10px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-sm);transition:transform .18s var(--ease-spring),box-shadow .18s ease}.image-download-item:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.image-download-item img{width:100%;aspect-ratio:4 / 3;object-fit:contain;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-muted)}.image-download-info{display:flex;align-items:center;justify-content:space-between;gap:8px}.image-download-info span{min-width:0;overflow:hidden;color:var(--color-text);font-size:.8125rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.image-download-info .action-btn{min-height:34px;padding:0 12px;border-radius:var(--radius-sm)}.image-download-url{overflow:hidden;color:var(--color-text-muted);font-size:.75rem;text-overflow:ellipsis;white-space:nowrap}.image-empty-state{min-height:160px;display:grid;place-items:center;color:var(--color-text-secondary);font-weight:700}.video-preview{width:100%;aspect-ratio:16 / 9;max-height:min(58vh,560px);object-fit:contain;display:block;border-radius:var(--radius);margin-bottom:18px;background:#071719;box-shadow:0 14px 34px #07171947}.quality-selector{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px;color:var(--color-text-secondary);font-size:.875rem;font-weight:700}.quality-pills{display:inline-flex;gap:6px;flex-wrap:wrap}.quality-pill{min-height:36px;padding:0 14px;border:1.5px solid var(--color-border-strong);border-radius:999px;color:var(--color-text-secondary);background:var(--color-surface);cursor:pointer;font-size:.8125rem;font-weight:800;transition:all .16s ease}.quality-pill:hover:not(.is-active){border-color:var(--color-accent-line);color:var(--color-text)}.quality-pill.is-active{border-color:var(--color-accent);color:var(--color-accent-strong);background:var(--color-accent-soft)}.quality-pill .quality-size{margin-left:4px;color:var(--color-text-muted);font-weight:700}.download-progress{margin:-4px 0 16px;padding:13px 14px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface-muted)}.download-progress-meta{display:flex;justify-content:space-between;gap:12px;margin-bottom:9px;color:var(--color-text-secondary);font-size:.8125rem;font-weight:700}.download-progress-track{width:100%;height:8px;overflow:hidden;border-radius:999px;background:var(--color-border)}.download-progress-bar{height:100%;border-radius:inherit;background:var(--gradient-accent);transition:width .2s ease}.download-error{margin-top:-6px;margin-bottom:12px;color:var(--color-error);font-size:.875rem;font-weight:700}.footer{margin-top:auto;padding-top:36px;text-align:center;color:var(--color-text-muted);font-size:.75rem}@media (max-width: 720px){.app{width:min(100% - 24px,1120px);padding-top:16px}.header,.panel-heading{align-items:stretch;flex-direction:column}.header-note{max-width:none;text-align:left}.workbench-panel{padding:20px 18px}.link-input-area{grid-template-columns:1fr}.submit-btn{width:100%}}@media (max-width: 480px){.workbench-panel,.result-card,.empty-state{padding:16px}.header-title{font-size:1.25rem}.panel-heading h2{font-size:1.1875rem}.text-preview{padding:18px}.result-actions,.result-toolbar,.result-toolbar-main,.quality-selector,.download-progress-meta{flex-direction:column;align-items:stretch}.result-tabs{display:flex}.result-tab{flex:1}.action-btn{width:100%}.copy-btn{margin-left:0}}.transcript-entry{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:4px;padding-top:16px;border-top:1px dashed var(--color-border)}.transcript-entry-hint{color:var(--color-text-muted);font-size:.8125rem}.transcript-panel{display:grid;gap:12px;margin-top:4px;padding:16px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface-subtle);animation:rise-in .3s var(--ease-out)}.transcript-panel--error{border-color:#d92d2038;background:var(--color-error-bg)}.transcript-status{display:flex;align-items:center;gap:12px}.transcript-status>div{display:grid;gap:2px}.transcript-status strong{font-size:.9375rem}.transcript-status span{color:var(--color-text-secondary);font-size:.8125rem}.transcript-panel--error .transcript-status strong{color:var(--color-error)}.transcript-panel--error .transcript-status span{color:var(--color-error);opacity:.85}.transcript-error-icon{width:26px;height:26px;flex:0 0 auto;color:var(--color-error)}.spinner-sm{width:26px;height:26px;border-width:2.5px;flex:0 0 auto}.transcript-result-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.transcript-result-header>div:first-child{display:grid;gap:2px}.transcript-result-header strong{font-size:.9375rem}.transcript-result-header span{color:var(--color-text-muted);font-size:.8125rem}.transcript-result-actions{display:flex;gap:8px;flex-wrap:wrap}.transcript-result-actions .action-btn{min-height:38px;border-radius:var(--radius-sm)}.transcript-text{max-height:380px;overflow-y:auto;padding:18px 20px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);line-height:1.9;font-size:.9375rem}.transcript-text p{margin:0 0 .4em}.transcript-text::-webkit-scrollbar{width:10px}.transcript-text::-webkit-scrollbar-thumb{border:3px solid var(--color-surface);border-radius:999px;background:var(--color-border-strong)}@media (max-width: 480px){.transcript-result-actions,.transcript-result-actions .action-btn,.transcript-entry .action-btn{width:100%}}
