miruro / app /globals.css
mwask's picture
Upload 45 files
3e8e34c verified
Raw
History Blame Contribute Delete
5.74 kB
@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;
}