编译 Tailwind CSS,包含首页所需的 utility classes

- line-clamp-2, duration-250, backdrop-blur 等样式
- 验证首页 SSR 渲染正确

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
xfy 2026-05-26 10:36:18 +08:00
parent 452e7d8312
commit 1d57c91836

View File

@ -21,6 +21,7 @@
--color-blue-600: oklch(54.6% 0.245 262.881);
--color-blue-700: oklch(48.8% 0.243 264.376);
--color-gray-50: oklch(98.5% 0.002 247.839);
--color-gray-100: oklch(96.7% 0.003 264.542);
--color-gray-200: oklch(92.8% 0.006 264.531);
--color-gray-300: oklch(87.2% 0.01 258.338);
--color-gray-400: oklch(70.7% 0.022 261.325);
@ -32,19 +33,23 @@
--color-white: #fff;
--spacing: 0.25rem;
--container-md: 28rem;
--container-3xl: 48rem;
--container-7xl: 80rem;
--text-sm: 0.875rem;
--text-sm--line-height: calc(1.25 / 0.875);
--text-base: 1rem;
--text-base--line-height: calc(1.5 / 1);
--text-xl: 1.25rem;
--text-xl--line-height: calc(1.75 / 1.25);
--text-2xl: 1.5rem;
--text-2xl--line-height: calc(2 / 1.5);
--text-4xl: 2.25rem;
--text-4xl--line-height: calc(2.5 / 2.25);
--font-weight-medium: 500;
--font-weight-bold: 700;
--leading-tight: 1.25;
--leading-relaxed: 1.625;
--radius-lg: 0.5rem;
--radius-2xl: 1rem;
--blur-sm: 8px;
--default-transition-duration: 150ms;
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
--default-font-family: var(--font-sans);
@ -200,20 +205,20 @@
}
}
@layer utilities {
.fixed {
position: fixed;
.relative {
position: relative;
}
.static {
position: static;
}
.top-4 {
top: calc(var(--spacing) * 4);
.sticky {
position: sticky;
}
.right-4 {
right: calc(var(--spacing) * 4);
.top-0 {
top: calc(var(--spacing) * 0);
}
.z-50 {
z-index: 50;
.z-40 {
z-index: 40;
}
.mx-auto {
margin-inline: auto;
@ -221,9 +226,18 @@
.mt-2 {
margin-top: calc(var(--spacing) * 2);
}
.mt-3 {
margin-top: calc(var(--spacing) * 3);
}
.mt-4 {
margin-top: calc(var(--spacing) * 4);
}
.mt-10 {
margin-top: calc(var(--spacing) * 10);
}
.mt-auto {
margin-top: auto;
}
.mb-1 {
margin-bottom: calc(var(--spacing) * 1);
}
@ -236,27 +250,60 @@
.mb-6 {
margin-bottom: calc(var(--spacing) * 6);
}
.mb-10 {
margin-bottom: calc(var(--spacing) * 10);
}
.ml-1 {
margin-left: calc(var(--spacing) * 1);
}
.ml-auto {
margin-left: auto;
}
.line-clamp-2 {
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.block {
display: block;
}
.flex {
display: flex;
}
.hidden {
display: none;
}
.inline-flex {
display: inline-flex;
}
.table {
display: table;
}
.h-\[60px\] {
height: 60px;
}
.min-h-screen {
min-height: 100vh;
}
.w-full {
width: 100%;
}
.max-w-3xl {
max-width: var(--container-3xl);
}
.max-w-7xl {
max-width: var(--container-7xl);
}
.max-w-md {
max-width: var(--container-md);
}
.flex-1 {
flex: 1;
}
.flex-col {
flex-direction: column;
}
.items-center {
align-items: center;
}
@ -266,6 +313,15 @@
.justify-center {
justify-content: center;
}
.gap-1 {
gap: calc(var(--spacing) * 1);
}
.gap-2 {
gap: calc(var(--spacing) * 2);
}
.gap-3 {
gap: calc(var(--spacing) * 3);
}
.gap-4 {
gap: calc(var(--spacing) * 4);
}
@ -289,6 +345,17 @@
border-style: var(--tw-border-style);
border-width: 1px;
}
.border-t {
border-top-style: var(--tw-border-style);
border-top-width: 1px;
}
.border-b {
border-bottom-style: var(--tw-border-style);
border-bottom-width: 1px;
}
.border-gray-200 {
border-color: var(--color-gray-200);
}
.border-gray-300 {
border-color: var(--color-gray-300);
}
@ -298,9 +365,15 @@
.bg-gray-50 {
background-color: var(--color-gray-50);
}
.bg-gray-100 {
background-color: var(--color-gray-100);
}
.bg-gray-200 {
background-color: var(--color-gray-200);
}
.bg-gray-900 {
background-color: var(--color-gray-900);
}
.bg-green-100 {
background-color: var(--color-green-100);
}
@ -313,24 +386,48 @@
.bg-white {
background-color: var(--color-white);
}
.bg-white\/80 {
background-color: color-mix(in srgb, #fff 80%, transparent);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, var(--color-white) 80%, transparent);
}
}
.p-2 {
padding: calc(var(--spacing) * 2);
}
.p-3 {
padding: calc(var(--spacing) * 3);
}
.p-6 {
padding: calc(var(--spacing) * 6);
}
.p-8 {
padding: calc(var(--spacing) * 8);
}
.px-3 {
padding-inline: calc(var(--spacing) * 3);
}
.px-4 {
padding-inline: calc(var(--spacing) * 4);
}
.px-6 {
padding-inline: calc(var(--spacing) * 6);
}
.py-1 {
padding-block: calc(var(--spacing) * 1);
}
.py-2 {
padding-block: calc(var(--spacing) * 2);
}
.py-4 {
padding-block: calc(var(--spacing) * 4);
}
.py-5 {
padding-block: calc(var(--spacing) * 5);
}
.py-6 {
padding-block: calc(var(--spacing) * 6);
}
.py-8 {
padding-block: calc(var(--spacing) * 8);
}
@ -341,6 +438,10 @@
font-size: var(--text-2xl);
line-height: var(--tw-leading, var(--text-2xl--line-height));
}
.text-base {
font-size: var(--text-base);
line-height: var(--tw-leading, var(--text-base--line-height));
}
.text-sm {
font-size: var(--text-sm);
line-height: var(--tw-leading, var(--text-sm--line-height));
@ -349,6 +450,20 @@
font-size: var(--text-xl);
line-height: var(--tw-leading, var(--text-xl--line-height));
}
.text-\[13px\] {
font-size: 13px;
}
.text-\[34px\] {
font-size: 34px;
}
.leading-relaxed {
--tw-leading: var(--leading-relaxed);
line-height: var(--leading-relaxed);
}
.leading-tight {
--tw-leading: var(--leading-tight);
line-height: var(--leading-tight);
}
.font-bold {
--tw-font-weight: var(--font-weight-bold);
font-weight: var(--font-weight-bold);
@ -360,6 +475,9 @@
.text-blue-600 {
color: var(--color-blue-600);
}
.text-gray-400 {
color: var(--color-gray-400);
}
.text-gray-500 {
color: var(--color-gray-500);
}
@ -381,6 +499,18 @@
.text-white {
color: var(--color-white);
}
.underline {
text-decoration-line: underline;
}
.decoration-gray-900 {
text-decoration-color: var(--color-gray-900);
}
.decoration-2 {
text-decoration-thickness: 2px;
}
.underline-offset-\[0\.3rem\] {
text-underline-offset: 0.3rem;
}
.shadow {
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@ -389,11 +519,56 @@
--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.backdrop-blur-sm {
--tw-backdrop-blur: blur(var(--blur-sm));
-webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
}
.transition-all {
transition-property: all;
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
transition-duration: var(--tw-duration, var(--default-transition-duration));
}
.transition-colors {
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
transition-duration: var(--tw-duration, var(--default-transition-duration));
}
.transition-opacity {
transition-property: opacity;
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
transition-duration: var(--tw-duration, var(--default-transition-duration));
}
.duration-250 {
--tw-duration: 250ms;
transition-duration: 250ms;
}
.duration-300 {
--tw-duration: 300ms;
transition-duration: 300ms;
}
.group-hover\:opacity-80 {
&:is(:where(.group):hover *) {
@media (hover: hover) {
opacity: 80%;
}
}
}
.hover\:-translate-y-0\.5 {
&:hover {
@media (hover: hover) {
--tw-translate-y: calc(var(--spacing) * -0.5);
translate: var(--tw-translate-x) var(--tw-translate-y);
}
}
}
.hover\:border-gray-300 {
&:hover {
@media (hover: hover) {
border-color: var(--color-gray-300);
}
}
}
.hover\:bg-blue-700 {
&:hover {
@media (hover: hover) {
@ -401,6 +576,13 @@
}
}
}
.hover\:bg-gray-200 {
&:hover {
@media (hover: hover) {
background-color: var(--color-gray-200);
}
}
}
.hover\:bg-gray-300 {
&:hover {
@media (hover: hover) {
@ -422,6 +604,13 @@
}
}
}
.hover\:text-gray-900 {
&:hover {
@media (hover: hover) {
color: var(--color-gray-900);
}
}
}
.hover\:underline {
&:hover {
@media (hover: hover) {
@ -429,6 +618,13 @@
}
}
}
.hover\:opacity-80 {
&:hover {
@media (hover: hover) {
opacity: 80%;
}
}
}
.focus\:ring-2 {
&:focus {
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
@ -446,11 +642,46 @@
outline-style: none;
}
}
.md\:flex {
@media (width >= 48rem) {
display: flex;
}
}
.dark\:border-\[\#333\] {
@media (prefers-color-scheme: dark) {
border-color: #333;
}
}
.dark\:border-gray-600 {
@media (prefers-color-scheme: dark) {
border-color: var(--color-gray-600);
}
}
.dark\:bg-\[\#1d1e20\] {
@media (prefers-color-scheme: dark) {
background-color: #1d1e20;
}
}
.dark\:bg-\[\#1d1e20\]\/80 {
@media (prefers-color-scheme: dark) {
background-color: color-mix(in oklab, #1d1e20 80%, transparent);
}
}
.dark\:bg-\[\#2e2e33\] {
@media (prefers-color-scheme: dark) {
background-color: #2e2e33;
}
}
.dark\:bg-\[\#333\] {
@media (prefers-color-scheme: dark) {
background-color: #333;
}
}
.dark\:bg-\[\#dadadb\] {
@media (prefers-color-scheme: dark) {
background-color: #dadadb;
}
}
.dark\:bg-gray-700 {
@media (prefers-color-scheme: dark) {
background-color: var(--color-gray-700);
@ -476,6 +707,16 @@
background-color: var(--color-red-900);
}
}
.dark\:text-\[\#9b9c9d\] {
@media (prefers-color-scheme: dark) {
color: #9b9c9d;
}
}
.dark\:text-\[\#dadadb\] {
@media (prefers-color-scheme: dark) {
color: #dadadb;
}
}
.dark\:text-blue-400 {
@media (prefers-color-scheme: dark) {
color: var(--color-blue-400);
@ -491,6 +732,11 @@
color: var(--color-gray-400);
}
}
.dark\:text-gray-900 {
@media (prefers-color-scheme: dark) {
color: var(--color-gray-900);
}
}
.dark\:text-green-300 {
@media (prefers-color-scheme: dark) {
color: var(--color-green-300);
@ -506,6 +752,29 @@
color: var(--color-white);
}
}
.dark\:decoration-\[\#dadadb\] {
@media (prefers-color-scheme: dark) {
text-decoration-color: #dadadb;
}
}
.dark\:hover\:border-gray-600 {
@media (prefers-color-scheme: dark) {
&:hover {
@media (hover: hover) {
border-color: var(--color-gray-600);
}
}
}
}
.dark\:hover\:bg-\[\#444\] {
@media (prefers-color-scheme: dark) {
&:hover {
@media (hover: hover) {
background-color: #444;
}
}
}
}
.dark\:hover\:bg-gray-600 {
@media (prefers-color-scheme: dark) {
&:hover {
@ -515,6 +784,15 @@
}
}
}
.dark\:hover\:text-\[\#dadadb\] {
@media (prefers-color-scheme: dark) {
&:hover {
@media (hover: hover) {
color: #dadadb;
}
}
}
}
.dark\:hover\:text-gray-200 {
@media (prefers-color-scheme: dark) {
&:hover {
@ -535,6 +813,10 @@
inherits: false;
initial-value: solid;
}
@property --tw-leading {
syntax: "*";
inherits: false;
}
@property --tw-font-weight {
syntax: "*";
inherits: false;
@ -604,11 +886,67 @@
inherits: false;
initial-value: 0 0 #0000;
}
@property --tw-backdrop-blur {
syntax: "*";
inherits: false;
}
@property --tw-backdrop-brightness {
syntax: "*";
inherits: false;
}
@property --tw-backdrop-contrast {
syntax: "*";
inherits: false;
}
@property --tw-backdrop-grayscale {
syntax: "*";
inherits: false;
}
@property --tw-backdrop-hue-rotate {
syntax: "*";
inherits: false;
}
@property --tw-backdrop-invert {
syntax: "*";
inherits: false;
}
@property --tw-backdrop-opacity {
syntax: "*";
inherits: false;
}
@property --tw-backdrop-saturate {
syntax: "*";
inherits: false;
}
@property --tw-backdrop-sepia {
syntax: "*";
inherits: false;
}
@property --tw-duration {
syntax: "*";
inherits: false;
}
@property --tw-translate-x {
syntax: "*";
inherits: false;
initial-value: 0;
}
@property --tw-translate-y {
syntax: "*";
inherits: false;
initial-value: 0;
}
@property --tw-translate-z {
syntax: "*";
inherits: false;
initial-value: 0;
}
@layer properties {
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
*, ::before, ::after, ::backdrop {
--tw-space-y-reverse: 0;
--tw-border-style: solid;
--tw-leading: initial;
--tw-font-weight: initial;
--tw-shadow: 0 0 #0000;
--tw-shadow-color: initial;
@ -624,6 +962,19 @@
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-offset-shadow: 0 0 #0000;
--tw-backdrop-blur: initial;
--tw-backdrop-brightness: initial;
--tw-backdrop-contrast: initial;
--tw-backdrop-grayscale: initial;
--tw-backdrop-hue-rotate: initial;
--tw-backdrop-invert: initial;
--tw-backdrop-opacity: initial;
--tw-backdrop-saturate: initial;
--tw-backdrop-sepia: initial;
--tw-duration: initial;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-translate-z: 0;
}
}
}