www_site/app/globals.css

466 lines
8.4 KiB
CSS

@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;
}
}