@import "tailwindcss"; @theme { --color-ink: #0d0f12; --color-panel: #14181d; --color-panel-raised: #1a1d21; --color-line: #2a2f36; --color-copy: #f5f7fa; --color-muted: #9ca3af; --color-subtle: #4b5563; --color-orange: #ff6a00; --color-blue: #1677ff; --color-cyan: #00d1e6; --color-success: #22c55e; --color-warning: #f59e0b; --color-danger: #ef4444; --font-sans: var(--font-inter), "PingFang SC", "Microsoft YaHei", sans-serif; } :root { color-scheme: dark; background: #0d0f12; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { min-width: 320px; margin: 0; background: #0d0f12; color: #f5f7fa; font-family: var(--font-inter), "PingFang SC", "Microsoft YaHei", sans-serif; } a, button, input, textarea, select { font: inherit; } a { color: inherit; text-decoration: none; } button, a { -webkit-tap-highlight-color: transparent; } button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible { outline: 2px solid #00d1e6; outline-offset: 4px; } ::selection { background: #1677ff; color: #f5f7fa; } .skip-link { position: fixed; z-index: 100; top: 1rem; left: 1rem; transform: translateY(-200%); border-radius: 999px; background: #f5f7fa; color: #0d0f12; padding: 0.75rem 1rem; font-size: 0.875rem; font-weight: 700; transition: transform 180ms ease; } .skip-link:focus { transform: translateY(0); } .container-shell { width: min(1320px, calc(100% - 4rem)); margin-inline: auto; } .section-rule { border-top: 1px solid rgba(75, 85, 99, 0.42); } .eyebrow { display: inline-flex; align-items: center; gap: 0.75rem; color: #9ca3af; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; } .eyebrow::before { width: 2.25rem; height: 2px; background: #ff6a00; content: ""; } .eyebrow-cyan::before { background: #00d1e6; } .eyebrow-blue::before { background: #1677ff; } .display-heading { max-width: 10ch; margin-top: 1.25rem; font-size: clamp(2.8rem, 7vw, 6.5rem); font-weight: 650; letter-spacing: -0.07em; line-height: 0.98; } .text-balance { text-wrap: balance; } .desktop-nav { display: none; } .mobile-nav-trigger { display: inline-flex; } .body-copy { color: #9ca3af; line-height: 1.8; } .surface-grid { background-image: linear-gradient(rgba(42, 47, 54, 0.22) 1px, transparent 1px), linear-gradient(90deg, rgba(42, 47, 54, 0.22) 1px, transparent 1px); background-size: 64px 64px; mask-image: linear-gradient(to bottom, black 0%, transparent 80%); } .hero-glow { background: radial-gradient(circle at 74% 38%, rgba(22, 119, 255, 0.14), transparent 26rem), radial-gradient(circle at 68% 65%, rgba(0, 209, 230, 0.08), transparent 22rem); } .button-primary, .button-secondary, .button-ghost { display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center; gap: 0.7rem; border-radius: 0.65rem; padding: 0.78rem 1.2rem; font-size: 0.875rem; font-weight: 700; transition: transform 180ms ease, background-color 180ms ease, border-color 180ms ease; } .button-primary { border: 1px solid #2a2f36; background: transparent; color: #d1d5db; } .button-primary:hover { background: rgba(0, 209, 230, 0.1); border-color: #00d1e6; color: #f5f7fa; transform: translateY(-2px); } .button-secondary { border: 1px solid #2a2f36; background: transparent; color: #d1d5db; } .button-secondary:hover { background: rgba(0, 209, 230, 0.1); border-color: #00d1e6; color: #f5f7fa; transform: translateY(-2px); } .button-ghost { border: 1px solid #2a2f36; background: transparent; color: #d1d5db; } .button-ghost:hover { background: rgba(0, 209, 230, 0.1); border-color: #00d1e6; color: #f5f7fa; } .button-disabled, button:disabled { cursor: not-allowed; opacity: 0.52; } .product-visual { position: relative; min-height: 15rem; overflow: hidden; border: 1px solid rgba(75, 85, 99, 0.5); border-radius: 1rem; background: linear-gradient(135deg, #1a1d21, #101317 68%); } .product-visual::after { position: absolute; right: -15%; bottom: -52%; width: 80%; height: 95%; border: 1px solid rgba(0, 209, 230, 0.36); border-radius: 50%; box-shadow: 0 0 80px rgba(0, 209, 230, 0.13); content: ""; transform: rotate(-18deg); } .field-label { display: block; margin-bottom: 0.5rem; color: #d1d5db; font-size: 0.8125rem; font-weight: 600; } .field-input { width: 100%; border: 1px solid #2a2f36; border-radius: 0.65rem; background: #14181d; color: #f5f7fa; padding: 0.8rem 0.9rem; } .field-input:disabled { cursor: not-allowed; color: #6b7280; } .tts-editor { position: relative; overflow-y: auto; border: 1px solid #2a2f36; border-radius: 0.65rem; background: #14181d; color: #f5f7fa; padding: 1rem; white-space: pre-wrap; word-break: break-word; caret-color: #00d1e6; } .tts-editor.is-empty::before { color: #4b5563; content: "输入需要转换的文本,停顿会显示为胶囊,不需要手写代码。"; pointer-events: none; } .tts-editor:focus { border-color: rgba(0, 209, 230, 0.7); outline: 2px solid rgba(0, 209, 230, 0.12); outline-offset: 2px; } .pause-token { display: inline-flex; align-items: center; margin: 0 0.18rem; border: 1px solid rgba(0, 209, 230, 0.48); border-radius: 999px; background: rgba(0, 209, 230, 0.1); color: #55e4ef; padding: 0.12rem 0.55rem; font-size: 0.8em; line-height: 1.5; cursor: pointer; vertical-align: baseline; } .pause-token:hover, .pause-token:focus { border-color: #00d1e6; background: rgba(0, 209, 230, 0.2); } .typo-mark { text-decoration: underline wavy #ef4444 1.5px; text-underline-offset: 0.25rem; cursor: pointer; } .tool-button, .pause-option { display: inline-flex; min-height: 2.25rem; align-items: center; justify-content: center; gap: 0.35rem; border: 1px solid #2a2f36; border-radius: 0.55rem; background: #14181d; color: #d1d5db; padding: 0.45rem 0.75rem; font-size: 0.75rem; transition: border-color 180ms ease, background-color 180ms ease, color 180ms ease; } .tool-button:hover, .pause-option:hover, .pause-option.is-selected { border-color: #00d1e6; background: rgba(0, 209, 230, 0.1); color: #55e4ef; } .pause-panel { border: 1px solid rgba(0, 209, 230, 0.2); border-radius: 0.75rem; background: #101317; padding: 0.85rem; } .pause-input { width: 5.5rem; border: 1px solid #2a2f36; border-radius: 0.5rem; background: #1a1d21; color: #f5f7fa; padding: 0.45rem 0.55rem; font-size: 0.8rem; } .pause-range { width: min(12rem, 100%); accent-color: #00d1e6; } .assist-card { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 0.85rem; min-height: 6.25rem; border: 1px solid #2a2f36; border-radius: 0.85rem; background: rgba(20, 24, 29, 0.76); padding: 1rem; color: #f5f7fa; transition: border-color 180ms ease, background-color 180ms ease, transform 180ms ease; } .voice-clone-panel { border: 1px solid rgba(0, 209, 230, 0.3); border-radius: 0.85rem; background: rgba(0, 209, 230, 0.05); padding: 1rem; transition: border-color 180ms ease, background-color 180ms ease; } .voice-clone-panel.is-ready { border-color: rgba(0, 209, 230, 0.7); background: rgba(0, 209, 230, 0.09); } .assist-card:hover { border-color: rgba(0, 209, 230, 0.65); background: rgba(0, 209, 230, 0.06); transform: translateY(-2px); } .assist-card:disabled { cursor: wait; opacity: 0.6; } .assist-card strong, .assist-card small { display: block; } .assist-card strong { font-size: 0.9rem; } .assist-card small { margin-top: 0.35rem; color: #9ca3af; font-size: 0.75rem; line-height: 1.55; } .assist-icon { display: grid; width: 2.25rem; height: 2.25rem; place-items: center; border: 1px solid rgba(0, 209, 230, 0.3); border-radius: 0.65rem; color: #55e4ef; font-size: 1.1rem; } .assist-arrow { color: #4b5563; font-size: 1.2rem; } @media (max-width: 640px) { .container-shell { width: min(100% - 2rem, 1180px); } .display-heading { max-width: 8ch; } } @media (min-width: 768px) { .desktop-nav { display: flex; } .mobile-nav-trigger { display: none; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; } }