/* * Revamp ("Aurora glass") flourishes. * * These rules only apply to the default/revamp theme. They are scoped to * :root exclusions so they cover both the explicit data-theme="revamp" * attribute AND the no-JS default (no attribute), while never touching the * alternate themes. Token colours live in 00-base.css; this file adds the * things a flat token swap can't: the animated aurora backdrop, frosted glass, * gradient accents, glow and motion. */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) { scroll-behavior: smooth; } /* Animated aurora backdrop ------------------------------------------------ */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) body::before { content: ""; position: fixed; inset: -20vmax; z-index: -1; pointer-events: none; background: radial-gradient(38vmax 38vmax at 18% 12%, rgba(99, 102, 241, 0.38), transparent 60%), radial-gradient(34vmax 34vmax at 82% 18%, rgba(34, 211, 238, 0.26), transparent 60%), radial-gradient(40vmax 40vmax at 70% 88%, rgba(139, 92, 246, 0.34), transparent 62%), radial-gradient(30vmax 30vmax at 12% 82%, rgba(236, 72, 153, 0.22), transparent 60%); filter: blur(8px) saturate(125%); animation: aurora-drift 26s ease-in-out infinite alternate; } :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) body::after { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; /* faint grain/vignette to keep the glow from washing out text */ background: radial-gradient(circle at 50% 40%, transparent 0, rgba(10, 9, 24, 0.55) 78%); } @keyframes aurora-drift { 0% { transform: translate3d(-4%, -2%, 0) rotate(0deg) scale(1.05); } 50% { transform: translate3d(3%, 2%, 0) rotate(8deg) scale(1.12); } 100% { transform: translate3d(2%, -3%, 0) rotate(-6deg) scale(1.08); } } @media (prefers-reduced-motion: reduce) { :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) body::before { animation: none; } } /* Frosted glass cards ----------------------------------------------------- */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .card { background: linear-gradient( 155deg, color-mix(in srgb, var(--card) 78%, transparent), color-mix(in srgb, var(--card) 92%, transparent) ); border-color: rgba(168, 150, 255, 0.18); backdrop-filter: blur(18px) saturate(140%); -webkit-backdrop-filter: blur(18px) saturate(140%); } /* Sticky header gets the same glassy treatment */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .site-header { backdrop-filter: blur(20px) saturate(150%); -webkit-backdrop-filter: blur(20px) saturate(150%); } /* Brand mark glows */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .brand-mark { background: linear-gradient(135deg, #8b5cf6, #6366f1 55%, #22d3ee); color: #fff; box-shadow: 0 6px 18px rgba(124, 58, 237, 0.45); } /* Headings get a soft gradient sheen */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) h1 { background: linear-gradient(120deg, #f5f3ff 0%, #c4b5fd 60%, #67e8f9 100%); -webkit-background-clip: text; background-clip: text; color: transparent; } /* Gradient primary buttons ------------------------------------------------ */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .button-primary, :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .button.is-active { background: linear-gradient(135deg, #8b5cf6 0%, #6366f1 55%, #22d3ee 130%); color: #fff; border-color: transparent; box-shadow: 0 8px 22px rgba(99, 102, 241, 0.38); transition: transform 140ms ease, box-shadow 160ms ease, filter 160ms ease; } :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .button-primary:hover { background: linear-gradient(135deg, #8b5cf6 0%, #6366f1 55%, #22d3ee 130%); filter: brightness(1.08); box-shadow: 0 12px 30px rgba(99, 102, 241, 0.5); transform: translateY(-1px); } :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .button-primary:active { transform: translateY(0); } /* Outline / ghost buttons get a subtle lift on hover */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .button-outline, :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .button-ghost { transition: background 140ms ease, border-color 140ms ease, transform 140ms ease; } :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .button-outline:hover, :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .button-ghost:hover { border-color: rgba(168, 150, 255, 0.4); transform: translateY(-1px); } /* Glow focus rings -------------------------------------------------------- */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) :focus-visible { outline: 2px solid transparent; box-shadow: 0 0 0 2px var(--background), 0 0 0 4px var(--ring), 0 0 16px rgba(167, 139, 250, 0.55); } :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) input:focus, :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) select:focus { border-color: var(--ring); box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.22); } /* Drop zone: animated, glowing -------------------------------------------- */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .drop-zone { border-color: rgba(168, 150, 255, 0.3); background: radial-gradient(120% 90% at 50% 0%, rgba(139, 92, 246, 0.1), transparent 70%), var(--surface-1); transition: border-color 180ms ease, background 180ms ease, transform 180ms ease, box-shadow 180ms ease; } :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .drop-zone:hover, :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .drop-zone.is-dragging { border-color: #a78bfa; box-shadow: 0 0 0 1px rgba(167, 139, 250, 0.4), 0 18px 50px rgba(99, 102, 241, 0.28); transform: translateY(-2px); } :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .drop-icon { color: #c4b5fd; } :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .drop-zone.is-dragging .drop-icon { animation: drop-bounce 700ms ease infinite; } @keyframes drop-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } } /* Badges pick up a tinted glass look */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .badge { background: rgba(139, 92, 246, 0.14); color: #d6ccff; border: 1px solid rgba(168, 150, 255, 0.22); } /* File / result rows lift on hover */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .download-item, :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .result-item { background: color-mix(in srgb, var(--card) 60%, transparent); border-color: rgba(168, 150, 255, 0.14); transition: border-color 140ms ease, transform 140ms ease, background 140ms ease; } :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .download-item:hover { border-color: rgba(168, 150, 255, 0.34); transform: translateY(-1px); } /* Thumbnails on the download page */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) .file-emblem { background: linear-gradient(135deg, rgba(139, 92, 246, 0.25), rgba(34, 211, 238, 0.18)); color: #d6ccff; border: 1px solid rgba(168, 150, 255, 0.22); } /* Gentle entrance for primary content cards */ :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) main > * { animation: rise-in 420ms ease both; } @keyframes rise-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @media (prefers-reduced-motion: reduce) { :root:not([data-theme="classic"]):not([data-theme="retro"]):not([data-theme="gruvbox"]):not([data-theme="cyberpunk"]) main > * { animation: none; } }