@import "tailwindcss"; @theme { --font-sans: "Inter", system-ui, sans-serif; --font-mono: "JetBrains Mono", monospace; --font-display: "Inter Tight", "Inter", system-ui, sans-serif; --color-bg: #000000; --color-fg: #e4e4e7; --color-muted: #71717a; --color-border: #27272a; --color-surface: #09090b; --color-surface-2: #18181b; --color-accent: #a1a1aa; --color-accent-2: #d4d4d8; } @layer base { html { scroll-behavior: smooth; overscroll-behavior: none; } body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background: var(--color-bg); color: var(--color-fg); overflow-x: hidden; } ::selection { background: rgba(161, 161, 170, 0.3); color: #ffffff; } ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: #000; } ::-webkit-scrollbar-thumb { background: #333; border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #555; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse-dot { 0%, 100% { opacity: 1; box-shadow: 0 0 8px currentColor; } 50% { opacity: 0.4; box-shadow: 0 0 2px currentColor; } } @keyframes glow-pulse { 0%, 100% { box-shadow: 0 0 8px rgba(161, 161, 170, 0.2); } 50% { box-shadow: 0 0 16px rgba(161, 161, 170, 0.35); } } @keyframes draw-line { from { stroke-dashoffset: 1000; } to { stroke-dashoffset: 0; } } @keyframes crosshair-fade { from { opacity: 0; } to { opacity: 1; } } } @layer utilities { .animate-fade-in-up { animation: fadeInUp 0.5s ease-out both; } .animate-delay-100 { animation-delay: 100ms; } .animate-delay-200 { animation-delay: 200ms; } .animate-delay-300 { animation-delay: 300ms; } .animate-pulse-dot { animation: pulse-dot 2s ease-in-out infinite; } .animate-glow-pulse { animation: glow-pulse 3s ease-in-out infinite; } .animate-draw-line { animation: draw-line 3s ease-out forwards; } .animate-crosshair-fade { animation: crosshair-fade 1.5s ease-out forwards; } } /* ── RootWallet slash animation ── */ @keyframes rw-slash-appear { 0% { opacity: 0; transform: translateY(20px) scale(0.9); } 60% { opacity: 1; transform: translateY(-4px) scale(1.02); } 100% { opacity: 1; transform: translateY(0) scale(1); } } @keyframes rw-pulse { 0%, 100% { opacity: 0; } 50% { opacity: 0.12; } } .rw-slash { animation: rw-slash-appear 1s cubic-bezier(0.16, 1, 0.3, 1) forwards; filter: drop-shadow(0 0 40px rgba(255, 255, 255, 0.1)); } .rw-slash-glow { background: radial-gradient(circle, rgba(255, 255, 255, 0.08) 0%, transparent 70%); animation: rw-pulse 3s ease-in-out infinite; } /* ── Token page — silver/metallic theme ── */ @keyframes token-symbol-appear { 0% { opacity: 0; transform: translateY(20px) scale(0.9); } 60% { opacity: 1; transform: translateY(-4px) scale(1.02); } 100% { opacity: 1; transform: translateY(0) scale(1); } } @keyframes token-shimmer { 0% { background-position: -200% center; } 100% { background-position: 200% center; } } @keyframes token-glow-pulse { 0%, 100% { opacity: 0; } 50% { opacity: 0.15; } } .token-symbol { animation: token-symbol-appear 1s cubic-bezier(0.16, 1, 0.3, 1) forwards; } .token-symbol-glow { background: radial-gradient(circle, rgba(200, 200, 210, 0.1) 0%, transparent 70%); animation: token-glow-pulse 3s ease-in-out infinite; } .silver-button { background: linear-gradient(180deg, #d4d4d8 0%, #a1a1aa 50%, #8a8a94 100%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.3), inset 0 -1px 0 rgba(0, 0, 0, 0.15); border: 1px solid rgba(255, 255, 255, 0.12); position: relative; overflow: hidden; } .silver-button::before { content: ""; position: absolute; inset: 0; background: linear-gradient( 90deg, transparent 0%, rgba(255, 255, 255, 0.2) 45%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.2) 55%, transparent 100% ); background-size: 200% 100%; animation: token-shimmer 4s ease-in-out infinite; pointer-events: none; } .silver-button:hover { background: linear-gradient(180deg, #e4e4e7 0%, #b4b4bc 50%, #9a9aa4 100%); box-shadow: 0 0 20px rgba(200, 200, 210, 0.25), 0 1px 3px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.35), inset 0 -1px 0 rgba(0, 0, 0, 0.1); } .silver-button:active { box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); transform: translateY(1px); } /* ── Redacted / Coming Soon ── */ .redacted-inline { color: var(--color-muted); filter: blur(4px); user-select: none; cursor: default; letter-spacing: 0.15em; } .redacted-block { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.5rem; padding: 2rem 1rem; border: 1px dashed var(--color-border); border-radius: 0.5rem; text-align: center; } .redacted-block .redacted-stars { color: var(--color-muted); filter: blur(6px); font-size: 1.5rem; user-select: none; letter-spacing: 0.2em; } .redacted-block .redacted-label { color: var(--color-accent); font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.1em; } .coming-soon-overlay { position: relative; overflow: hidden; border-radius: 0.5rem; } .coming-soon-content { filter: blur(8px); opacity: 0.3; pointer-events: none; user-select: none; } .coming-soon-badge { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; } .coming-soon-badge span { color: var(--color-accent-2); font-family: var(--font-mono); font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.15em; padding: 0.5rem 1.5rem; border: 1px dashed var(--color-border); border-radius: 0.25rem; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(4px); }