@tailwind base; @tailwind components; @tailwind utilities; :root { --bg-deep: #060912; --bg-card: rgba(16, 22, 36, 0.78); --accent: #22d3ee; --accent2: #a78bfa; --danger: #f43f5e; --ok: #34d399; --text: #e8edf7; --muted: #94a3b8; } body { color: var(--text); background: var(--bg-deep); min-height: 100vh; font-family: var(--font-geist-sans), system-ui, sans-serif; } ::selection { background: rgba(34, 211, 238, 0.25); } @layer utilities { .glass { @apply border border-white/[0.08] shadow-2xl shadow-black/40; background: var(--bg-card); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); } .glow-text { text-shadow: 0 0 32px rgba(34, 211, 238, 0.28); } .btn-focus { @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/50 focus-visible:ring-offset-2 focus-visible:ring-offset-[#060912]; } } @keyframes toast-in { from { opacity: 0; transform: translate(-50%, 12px); } to { opacity: 1; transform: translate(-50%, 0); } } .animate-toast-in { animation: toast-in 0.35s ease-out both; } @keyframes pulse-soft { 0%, 100% { opacity: 1; } 50% { opacity: 0.65; } } .animate-pulse-soft { animation: pulse-soft 2s ease-in-out infinite; } /* 自定义滚动条,日志区更易读 */ .log-scroll { scrollbar-width: thin; scrollbar-color: rgba(148, 163, 184, 0.35) transparent; } .log-scroll::-webkit-scrollbar { width: 6px; height: 6px; } .log-scroll::-webkit-scrollbar-thumb { background: rgba(148, 163, 184, 0.35); border-radius: 6px; }