Files
deerflow-code/web-code/theme.css
T
2026-05-28 18:29:37 +08:00

241 lines
4.5 KiB
CSS

/* 引入字体文件 */
@font-face {
font-family: 'NotoSansHans';
font-weight: 900;
src: url('/font/NotoSansHans/NotoSansHans-Black.otf') format('opentype');
}
@font-face {
font-family: 'NotoSansHansBold';
font-weight: bold;
src: url('/font/NotoSansHans/NotoSansHans-Bold.otf') format('opentype');
}
@font-face {
font-family: 'NotoSansHans';
font-weight: normal;
src: url('/font/NotoSansHans/NotoSansHans-Regular.otf') format('opentype');
}
@font-face {
font-family: 'NotoSansHansLight';
font-weight: 300;
src: url('/font/NotoSansHans/NotoSansHans-Light.otf') format('opentype');
}
@font-face {
font-family: 'DDIN';
font-weight: normal;
src: url('/font/D-Din/D-DIN.ttf') format('truetype');
unicode-range: U+0030-0039;
}
@font-face {
font-family: 'DDINBold';
font-weight: bold;
src: url('/font/D-Din/D-DIN-Bold.ttf') format('truetype');
unicode-range: U+0030-0039;
}
@font-face {
font-family: 'Douyu';
src: url('/font/DouyuFont/douyuFont-2.otf') format('opentype');
}
@font-face {
font-family: 'Noto Sans S Chinese';
font-weight: 100;
src: url('/font/NotoSansHans/NotoSansHans-Thin-Windows.otf') format('opentype');
}
@font-face {
font-family: 'Noto Sans S Chinese';
font-weight: 300;
src: url('/font/NotoSansHans/NotoSansHans-Light.otf') format('opentype');
}
@font-face {
font-family: 'Noto Sans S Chinese';
font-weight: 400;
src: url('/font/NotoSansHans/NotoSansHans-Regular.otf') format('opentype');
}
@font-face {
font-family: 'Noto Sans S Chinese';
font-weight: 500;
src: url('/font/NotoSansHans/NotoSansHans-Medium.otf') format('opentype');
}
@font-face {
font-family: 'Noto Sans S Chinese';
font-weight: 700;
src: url('/font/NotoSansHans/NotoSansHans-Bold.otf') format('opentype');
}
@font-face {
font-family: 'Noto Sans S Chinese';
font-weight: 900;
src: url('/font/NotoSansHans/NotoSansHans-Black.otf') format('opentype');
}
div,span,p {
font-family: 'Noto Sans S Chinese';
}
#root {
margin: 0 auto;
}
@keyframes qa-stop-breathing {
0%, 100% {
transform: scale(1);
box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.45);
}
50% {
transform: scale(1.04);
box-shadow: 0 0 0 8px rgba(239, 68, 68, 0);
}
}
@keyframes qa-avatar-orbit {
0% {
transform: rotate(0deg) scale(1);
}
50% {
transform: rotate(4deg) scale(1.06);
}
100% {
transform: rotate(0deg) scale(1);
}
}
@keyframes qa-avatar-icon-pulse {
0%, 100% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.12);
opacity: 0.82;
}
}
@keyframes qa-avatar-shine {
0% {
transform: translateX(-120%) skewX(-18deg);
opacity: 0;
}
45% {
opacity: 0.5;
}
100% {
transform: translateX(120%) skewX(-18deg);
opacity: 0;
}
}
@keyframes qa-spark-twinkle {
0%, 100% {
transform: scale(0.85) rotate(0deg);
opacity: 0.65;
}
50% {
transform: scale(1.15) rotate(18deg);
opacity: 1;
}
}
.qa-stop-breathing {
animation: qa-stop-breathing 1.25s ease-in-out infinite;
}
.qa-avatar-active {
animation: qa-avatar-orbit 1.8s ease-in-out infinite;
}
.qa-avatar-icon-active {
animation: qa-avatar-icon-pulse 1.1s ease-in-out infinite;
}
.qa-avatar-active .qa-avatar-shine {
animation: qa-avatar-shine 1.6s ease-in-out infinite;
}
.qa-avatar-spark {
animation: qa-spark-twinkle 1s ease-in-out infinite;
}
@keyframes qa-generating-marquee {
0% {
background-position: 180% 50%;
}
100% {
background-position: -80% 50%;
}
}
.qa-generating-marquee {
display: inline-block;
background-size: 220% 100%;
background-clip: text;
-webkit-background-clip: text;
color: transparent;
-webkit-text-fill-color: transparent;
animation: qa-generating-marquee 1.45s linear infinite;
}
.qa-generating-marquee-light {
background-image: linear-gradient(90deg, #4b5563 0%, #4b5563 34%, #ef4444 48%, #fb923c 55%, #4b5563 68%, #4b5563 100%);
}
.qa-generating-marquee-dark {
background-image: linear-gradient(90deg, #cbd5e1 0%, #cbd5e1 34%, #67e8f9 48%, #a78bfa 55%, #cbd5e1 68%, #cbd5e1 100%);
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.react:hover {
filter: drop-shadow(0 0 2em #61dafbaa);
}
@keyframes logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@media (prefers-reduced-motion: no-preference) {
a:nth-of-type(2) .logo {
animation: logo-spin infinite 20s linear;
}
}
.card {
padding: 2em;
}
.read-the-docs {
color: #888;
}