@tailwind base; @tailwind components; @tailwind utilities; :root { --bg: #050208; --brand: #f59ff1; --brand-2: #c084fc; --brand-3: #a855f7; } * { box-sizing: border-box; } html, body { padding: 0; margin: 0; background-color: var(--bg); color: #fff; min-height: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { font-family: var(--font-montserrat), var(--font-inter), ui-sans-serif, system-ui, sans-serif; position: relative; overflow-x: hidden; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(139, 92, 246, 0.35); border-radius: 999px; border: 2px solid transparent; background-clip: padding-box; } ::-webkit-scrollbar-thumb:hover { background: rgba(139, 92, 246, 0.6); background-clip: padding-box; } .text-gradient-purple { background-image: linear-gradient(to right, #c084fc, #d8b4fe, #e9d5ff); -webkit-background-clip: text; background-clip: text; color: transparent; } /* Matches the logo "V" colour (#f59ff1), lightening toward the right */ .text-gradient-logo { background-image: linear-gradient(110deg, #f59ff1 0%, #f4a9f0 38%, #e9c7ff 100%); -webkit-background-clip: text; background-clip: text; color: transparent; } /* ─────────────────────────────────────────────────────────────────────── Scrolling movie-poster wall — cinematic page background. Columns drift up and down at varied speeds behind a dark, brand-tinted veil for legibility. ─────────────────────────────────────────────────────────────────────── */ .movie-wall { position: fixed; inset: 0; z-index: -1; overflow: hidden; background: var(--bg); } .movie-wall-track { display: flex; gap: 14px; height: 100%; padding: 14px; /* size columns to their content (not stretched) so translateY(-50%) maps to exactly one duplicated set — a seamless loop. */ align-items: flex-start; opacity: 0.2; } .movie-wall-col { flex: 0 0 clamp(120px, 13vw, 190px); display: flex; flex-direction: column; gap: 14px; will-change: transform; /* longhand props so a missing duration in a shorthand can't reset it to 0s */ animation-name: wall-up; animation-duration: var(--dur, 60s); animation-timing-function: linear; animation-iteration-count: infinite; } .movie-wall-col.is-down { animation-name: wall-down; } .movie-wall-col img { width: 100%; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 12px; display: block; } @keyframes wall-up { from { transform: translateY(0); } to { transform: translateY(-50%); } } @keyframes wall-down { from { transform: translateY(-50%); } to { transform: translateY(0); } } /* Dark, brand-tinted wash so foreground text stays readable over the wall. */ .movie-wall-veil { position: absolute; inset: 0; background: radial-gradient(ellipse 60% 55% at 50% 42%, rgba(5, 2, 8, 0.55), rgba(5, 2, 8, 0.93) 78%), radial-gradient(circle at 12% 18%, rgba(168, 85, 247, 0.22), transparent 42%), radial-gradient(circle at 88% 80%, rgba(245, 159, 241, 0.16), transparent 46%), linear-gradient(to bottom, rgba(5, 2, 8, 0.86), rgba(5, 2, 8, 0.55) 32%, rgba(5, 2, 8, 0.92)); } @media (prefers-reduced-motion: reduce) { .movie-wall-col { animation: none !important; } } /* Glass card used across the marketing pages */ .glass { border: 1px solid rgba(255, 255, 255, 0.08); background: linear-gradient(to bottom, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.015)); border-radius: 20px; backdrop-filter: blur(10px); box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.05) inset, 0 24px 60px -28px rgba(0, 0, 0, 0.8); } /* Glass frame with corner brackets */ .frame { position: relative; border-radius: 24px; border: 1px solid rgba(255, 255, 255, 0.08); background: linear-gradient(to bottom, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.01)); box-shadow: 0 0 0 1px rgba(139, 92, 246, 0.06), 0 30px 80px -20px rgba(0, 0, 0, 0.7), inset 0 1px 0 0 rgba(255, 255, 255, 0.04); backdrop-filter: blur(2px); } .frame::before, .frame::after { content: ""; position: absolute; width: 28px; height: 28px; border-color: rgba(216, 180, 254, 0.55); pointer-events: none; } .frame-corner { position: absolute; width: 26px; height: 26px; pointer-events: none; } .frame-corner::before, .frame-corner::after { content: ""; position: absolute; background: rgba(216, 180, 254, 0.5); } .frame-corner::before { width: 100%; height: 1.5px; } .frame-corner::after { width: 1.5px; height: 100%; } .frame-corner.tl { top: 18px; left: 18px; } .frame-corner.tr { top: 18px; right: 18px; } .frame-corner.tr::before { right: 0; } .frame-corner.tr::after { right: 0; } .frame-corner.bl { bottom: 18px; left: 18px; } .frame-corner.bl::before { bottom: 0; } .frame-corner.br { bottom: 18px; right: 18px; } .frame-corner.br::before { bottom: 0; right: 0; } .frame-corner.br::after { bottom: 0; right: 0; } .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }