feat: add Prettier with go-template and toml plugins, format all files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+330
-131
@@ -7,53 +7,58 @@
|
||||
|
||||
/* ── Design tokens — sneaker drop culture ────────────────────── */
|
||||
@theme {
|
||||
|
||||
/* Dark base — deep navy-black */
|
||||
--color-void: #050510;
|
||||
--color-ink: #09091A;
|
||||
--color-concrete: #0F0F22;
|
||||
--color-zinc: #1C1C38;
|
||||
--color-smoke: #383860;
|
||||
--color-fog: #6868A0;
|
||||
--color-chalk: #B8B8E0;
|
||||
--color-paper: #EEEEFF;
|
||||
--color-void: #050510;
|
||||
--color-ink: #09091a;
|
||||
--color-concrete: #0f0f22;
|
||||
--color-zinc: #1c1c38;
|
||||
--color-smoke: #383860;
|
||||
--color-fog: #6868a0;
|
||||
--color-chalk: #b8b8e0;
|
||||
--color-paper: #eeeeff;
|
||||
|
||||
/* Gradient triad — pink → purple → ice */
|
||||
--color-heat: #FF1A8C; /* hot pink — primary energy */
|
||||
--color-pulse: #9B00FF; /* electric purple — mid */
|
||||
--color-frost: #00C8FF; /* ice blue — cool accent */
|
||||
--color-ember: #FF4455; /* alert red */
|
||||
--color-lime: #1AFF8D; /* acid lime — highlight */
|
||||
--color-stem: #FF7A1A; /* peony stem orange */
|
||||
--color-heat: #ff1a8c; /* hot pink — primary energy */
|
||||
--color-pulse: #9b00ff; /* electric purple — mid */
|
||||
--color-frost: #00c8ff; /* ice blue — cool accent */
|
||||
--color-ember: #ff4455; /* alert red */
|
||||
--color-lime: #1aff8d; /* acid lime — highlight */
|
||||
--color-stem: #ff7a1a; /* peony stem orange */
|
||||
|
||||
/* Backward-compat aliases so existing templates still work */
|
||||
--color-gold: var(--color-heat);
|
||||
--color-gold-dim: #CC1570;
|
||||
--color-hot: var(--color-heat);
|
||||
--color-volt: var(--color-lime);
|
||||
--color-ice: var(--color-frost);
|
||||
--color-mist: var(--color-zinc);
|
||||
--color-ash: var(--color-smoke);
|
||||
--color-graphite: var(--color-concrete);
|
||||
--color-charcoal: var(--color-ink);
|
||||
--color-gold: var(--color-heat);
|
||||
--color-gold-dim: #cc1570;
|
||||
--color-hot: var(--color-heat);
|
||||
--color-volt: var(--color-lime);
|
||||
--color-ice: var(--color-frost);
|
||||
--color-mist: var(--color-zinc);
|
||||
--color-ash: var(--color-smoke);
|
||||
--color-graphite: var(--color-concrete);
|
||||
--color-charcoal: var(--color-ink);
|
||||
|
||||
/* ── Typography ─────────────────────────────────────────────── */
|
||||
--font-display: "Bebas Neue", "Arial Black", sans-serif;
|
||||
--font-body: "Barlow", system-ui, sans-serif;
|
||||
--font-comic: "Unbounded", "Arial Black", sans-serif;
|
||||
--font-mono: "Share Tech Mono", "Courier New", monospace;
|
||||
--font-body: "Barlow", system-ui, sans-serif;
|
||||
--font-comic: "Unbounded", "Arial Black", sans-serif;
|
||||
--font-mono: "Share Tech Mono", "Courier New", monospace;
|
||||
|
||||
/* ── Easing ─────────────────────────────────────────────────── */
|
||||
--ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
|
||||
--ease-sharp: cubic-bezier(0.4, 0, 0.6, 1);
|
||||
--ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
|
||||
--ease-sharp: cubic-bezier(0.4, 0, 0.6, 1);
|
||||
--ease-cinematic: cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
||||
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
|
||||
/* ── Base ─────────────────────────────────────────────────────── */
|
||||
@layer base {
|
||||
*, *::before, *::after { box-sizing: border-box; }
|
||||
[x-cloak] { display: none !important; }
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
[x-cloak] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
html {
|
||||
background-color: var(--color-void);
|
||||
@@ -66,9 +71,16 @@
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
|
||||
body { min-height: 100vh; }
|
||||
body {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: var(--font-display);
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.01em;
|
||||
@@ -82,7 +94,12 @@
|
||||
transition: color 0.2s var(--ease-sharp);
|
||||
}
|
||||
|
||||
img, video { max-width: 100%; height: auto; display: block; }
|
||||
img,
|
||||
video {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
::selection {
|
||||
background-color: var(--color-heat);
|
||||
@@ -95,14 +112,20 @@
|
||||
}
|
||||
|
||||
/* Gradient scrollbar */
|
||||
::-webkit-scrollbar { width: 4px; height: 4px; }
|
||||
::-webkit-scrollbar-track { background: var(--color-ink); }
|
||||
::-webkit-scrollbar-thumb { background: linear-gradient(180deg, var(--color-heat), var(--color-frost)); }
|
||||
::-webkit-scrollbar {
|
||||
width: 4px;
|
||||
height: 4px;
|
||||
}
|
||||
::-webkit-scrollbar-track {
|
||||
background: var(--color-ink);
|
||||
}
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: linear-gradient(180deg, var(--color-heat), var(--color-frost));
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Components ───────────────────────────────────────────────── */
|
||||
@layer components {
|
||||
|
||||
/* ── Gradient text ─────────────────────────────────────────── */
|
||||
.text-gradient {
|
||||
background: var(--color-heat);
|
||||
@@ -113,7 +136,13 @@
|
||||
}
|
||||
|
||||
.text-gradient-animated {
|
||||
background: linear-gradient(90deg, var(--color-heat), var(--color-pulse), var(--color-frost), var(--color-heat));
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
var(--color-heat),
|
||||
var(--color-pulse),
|
||||
var(--color-frost),
|
||||
var(--color-heat)
|
||||
);
|
||||
background-size: 300% 100%;
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
@@ -128,7 +157,7 @@
|
||||
to top,
|
||||
rgba(5, 5, 16, 0.98) 0%,
|
||||
rgba(5, 5, 16, 0.65) 40%,
|
||||
rgba(5, 5, 16, 0.1) 70%,
|
||||
rgba(5, 5, 16, 0.1) 70%,
|
||||
transparent 100%
|
||||
);
|
||||
}
|
||||
@@ -136,8 +165,8 @@
|
||||
.overlay-gradient-hero {
|
||||
background: linear-gradient(
|
||||
155deg,
|
||||
rgba(5, 5, 16, 0.1) 0%,
|
||||
rgba(5, 5, 16, 0.5) 45%,
|
||||
rgba(5, 5, 16, 0.1) 0%,
|
||||
rgba(5, 5, 16, 0.5) 45%,
|
||||
rgba(5, 5, 16, 0.97) 100%
|
||||
);
|
||||
}
|
||||
@@ -165,23 +194,58 @@
|
||||
padding: 5px 16px;
|
||||
text-transform: uppercase;
|
||||
clip-path: polygon(8px 0, 100% 0, calc(100% - 8px) 100%, 0 100%);
|
||||
transition: transform 0.15s var(--ease-bounce), filter 0.2s;
|
||||
transition:
|
||||
transform 0.15s var(--ease-bounce),
|
||||
filter 0.2s;
|
||||
}
|
||||
|
||||
a.badge:hover { transform: skewX(-4deg) scale(1.06); filter: brightness(1.2); }
|
||||
a.badge, a > .badge { cursor: pointer; }
|
||||
a.badge:hover {
|
||||
transform: skewX(-4deg) scale(1.06);
|
||||
filter: brightness(1.2);
|
||||
}
|
||||
a.badge,
|
||||
a > .badge {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.badge-heat { background: var(--color-heat); color: #fff; }
|
||||
.badge-pulse { background: var(--color-pulse); color: #fff; }
|
||||
.badge-frost { background: var(--color-frost); color: var(--color-void); }
|
||||
.badge-lime { background: var(--color-lime); color: var(--color-void); }
|
||||
.badge-ember { background: var(--color-ember); color: #fff; }
|
||||
.badge-stem { background: var(--color-stem); color: var(--color-void); }
|
||||
.badge-heat {
|
||||
background: var(--color-heat);
|
||||
color: #fff;
|
||||
}
|
||||
.badge-pulse {
|
||||
background: var(--color-pulse);
|
||||
color: #fff;
|
||||
}
|
||||
.badge-frost {
|
||||
background: var(--color-frost);
|
||||
color: var(--color-void);
|
||||
}
|
||||
.badge-lime {
|
||||
background: var(--color-lime);
|
||||
color: var(--color-void);
|
||||
}
|
||||
.badge-ember {
|
||||
background: var(--color-ember);
|
||||
color: #fff;
|
||||
}
|
||||
.badge-stem {
|
||||
background: var(--color-stem);
|
||||
color: var(--color-void);
|
||||
}
|
||||
|
||||
/* Semantic aliases kept for template compat */
|
||||
.badge-hot { background: var(--color-heat); color: #fff; }
|
||||
.badge-volt { background: var(--color-lime); color: var(--color-void); }
|
||||
.badge-ice { background: var(--color-frost); color: var(--color-void); }
|
||||
.badge-hot {
|
||||
background: var(--color-heat);
|
||||
color: #fff;
|
||||
}
|
||||
.badge-volt {
|
||||
background: var(--color-lime);
|
||||
color: var(--color-void);
|
||||
}
|
||||
.badge-ice {
|
||||
background: var(--color-frost);
|
||||
color: var(--color-void);
|
||||
}
|
||||
|
||||
.badge-gradient {
|
||||
background: var(--color-heat);
|
||||
@@ -214,13 +278,13 @@
|
||||
clip-path: polygon(10px 0, 100% 0, calc(100% - 10px) 100%, 0 100%);
|
||||
transition:
|
||||
box-shadow 0.25s var(--ease-sharp),
|
||||
transform 0.2s var(--ease-bounce);
|
||||
transform 0.2s var(--ease-bounce);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* shimmer sweep */
|
||||
.btn::before {
|
||||
content: '';
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: linear-gradient(
|
||||
@@ -236,11 +300,16 @@
|
||||
|
||||
.btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 32px rgba(255, 26, 140, 0.5),
|
||||
0 2px 8px rgba(155, 0, 255, 0.2);
|
||||
box-shadow:
|
||||
0 8px 32px rgba(255, 26, 140, 0.5),
|
||||
0 2px 8px rgba(155, 0, 255, 0.2);
|
||||
}
|
||||
.btn:hover::before {
|
||||
transform: translateX(200%);
|
||||
}
|
||||
.btn:active {
|
||||
transform: translateY(0px);
|
||||
}
|
||||
.btn:hover::before { transform: translateX(200%); }
|
||||
.btn:active { transform: translateY(0px); }
|
||||
|
||||
.btn-outline {
|
||||
background: transparent;
|
||||
@@ -248,7 +317,9 @@
|
||||
color: var(--color-heat);
|
||||
clip-path: none;
|
||||
}
|
||||
.btn-outline::before { display: none; }
|
||||
.btn-outline::before {
|
||||
display: none;
|
||||
}
|
||||
.btn-outline:hover {
|
||||
background: var(--color-heat);
|
||||
color: #fff;
|
||||
@@ -269,7 +340,9 @@
|
||||
color: var(--color-chalk);
|
||||
clip-path: none;
|
||||
}
|
||||
.btn-ghost::before { display: none; }
|
||||
.btn-ghost::before {
|
||||
display: none;
|
||||
}
|
||||
.btn-ghost:hover {
|
||||
border-color: var(--color-heat);
|
||||
color: var(--color-heat);
|
||||
@@ -301,13 +374,13 @@
|
||||
overflow: hidden;
|
||||
transition:
|
||||
border-color 0.2s var(--ease-sharp),
|
||||
box-shadow 0.3s var(--ease-out-expo),
|
||||
transform 0.25s var(--ease-out-expo);
|
||||
box-shadow 0.3s var(--ease-out-expo),
|
||||
transform 0.25s var(--ease-out-expo);
|
||||
}
|
||||
|
||||
/* gradient top bar */
|
||||
.card-comic::after {
|
||||
content: '';
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
@@ -325,25 +398,30 @@
|
||||
box-shadow:
|
||||
0 0 0 1.5px rgba(255, 26, 140, 0.4),
|
||||
0 20px 60px rgba(255, 26, 140, 0.18),
|
||||
0 8px 24px rgba(155, 0, 255, 0.12),
|
||||
6px 6px 0 rgba(255, 26, 140, 0.22);
|
||||
0 8px 24px rgba(155, 0, 255, 0.12),
|
||||
6px 6px 0 rgba(255, 26, 140, 0.22);
|
||||
}
|
||||
|
||||
.card-comic:hover::after { opacity: 1; }
|
||||
.card-comic:hover::after {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* ── Isometric triangle grid — 3 sets of lines at 0° / 60° / -60°
|
||||
Creates an infinite isometric floor-tile illusion.
|
||||
Colors: heat (horizontal) · frost (60°) · pulse (-60°)
|
||||
────────────────────────────────────────────────────────────── */
|
||||
.speed-lines {
|
||||
background-image:
|
||||
repeating-linear-gradient(
|
||||
-55deg,
|
||||
rgba(255, 26, 140, 0.14) 0, rgba(255, 26, 140, 0.14) 1px,
|
||||
transparent 1px, transparent 22px,
|
||||
rgba(0, 200, 255, 0.08) 22px, rgba(0, 200, 255, 0.08) 23px,
|
||||
transparent 23px, transparent 44px
|
||||
);
|
||||
background-image: repeating-linear-gradient(
|
||||
-55deg,
|
||||
rgba(255, 26, 140, 0.14) 0,
|
||||
rgba(255, 26, 140, 0.14) 1px,
|
||||
transparent 1px,
|
||||
transparent 22px,
|
||||
rgba(0, 200, 255, 0.08) 22px,
|
||||
rgba(0, 200, 255, 0.08) 23px,
|
||||
transparent 23px,
|
||||
transparent 44px
|
||||
);
|
||||
}
|
||||
|
||||
/* ── Diamond crosshatch ──────────────────────────────────── */
|
||||
@@ -351,13 +429,17 @@
|
||||
background-image:
|
||||
repeating-linear-gradient(
|
||||
45deg,
|
||||
rgba(255, 26, 140, 0.07) 0, rgba(255, 26, 140, 0.07) 1px,
|
||||
transparent 1px, transparent 24px
|
||||
rgba(255, 26, 140, 0.07) 0,
|
||||
rgba(255, 26, 140, 0.07) 1px,
|
||||
transparent 1px,
|
||||
transparent 24px
|
||||
),
|
||||
repeating-linear-gradient(
|
||||
-45deg,
|
||||
rgba(0, 200, 255, 0.05) 0, rgba(0, 200, 255, 0.05) 1px,
|
||||
transparent 1px, transparent 24px
|
||||
rgba(0, 200, 255, 0.05) 0,
|
||||
rgba(0, 200, 255, 0.05) 1px,
|
||||
transparent 1px,
|
||||
transparent 24px
|
||||
);
|
||||
}
|
||||
|
||||
@@ -365,9 +447,13 @@
|
||||
.spray-bg {
|
||||
background-image:
|
||||
radial-gradient(circle, rgba(255, 26, 140, 0.09) 1px, transparent 1px),
|
||||
radial-gradient(circle, rgba(0, 200, 255, 0.06) 1px, transparent 1px);
|
||||
background-size: 18px 18px, 29px 29px;
|
||||
background-position: 0 0, 9px 9px;
|
||||
radial-gradient(circle, rgba(0, 200, 255, 0.06) 1px, transparent 1px);
|
||||
background-size:
|
||||
18px 18px,
|
||||
29px 29px;
|
||||
background-position:
|
||||
0 0,
|
||||
9px 9px;
|
||||
}
|
||||
|
||||
/* ── Noise overlay ──────────────────────────────────────────── */
|
||||
@@ -399,10 +485,15 @@
|
||||
white-space: nowrap;
|
||||
animation: marquee-scroll 32s linear infinite;
|
||||
}
|
||||
.marquee-track:hover { animation-play-state: paused; }
|
||||
.marquee-track:hover {
|
||||
animation-play-state: paused;
|
||||
}
|
||||
|
||||
/* ── Section rules ──────────────────────────────────────────── */
|
||||
.section-rule { border: none; border-top: 1px solid var(--color-zinc); }
|
||||
.section-rule {
|
||||
border: none;
|
||||
border-top: 1px solid var(--color-zinc);
|
||||
}
|
||||
|
||||
.section-rule-electric {
|
||||
border: none;
|
||||
@@ -419,9 +510,21 @@
|
||||
}
|
||||
|
||||
/* ── Neon glow utilities ────────────────────────────────────── */
|
||||
.neon-heat { box-shadow: 0 0 24px rgba(255, 26, 140, 0.35), 0 0 60px rgba(255, 26, 140, 0.08); }
|
||||
.neon-pulse { box-shadow: 0 0 24px rgba(155, 0, 255, 0.35), 0 0 60px rgba(155, 0, 255, 0.08); }
|
||||
.neon-frost { box-shadow: 0 0 24px rgba( 0, 200, 255, 0.35), 0 0 60px rgba( 0, 200, 255, 0.08); }
|
||||
.neon-heat {
|
||||
box-shadow:
|
||||
0 0 24px rgba(255, 26, 140, 0.35),
|
||||
0 0 60px rgba(255, 26, 140, 0.08);
|
||||
}
|
||||
.neon-pulse {
|
||||
box-shadow:
|
||||
0 0 24px rgba(155, 0, 255, 0.35),
|
||||
0 0 60px rgba(155, 0, 255, 0.08);
|
||||
}
|
||||
.neon-frost {
|
||||
box-shadow:
|
||||
0 0 24px rgba(0, 200, 255, 0.35),
|
||||
0 0 60px rgba(0, 200, 255, 0.08);
|
||||
}
|
||||
|
||||
/* ── Prose editorial ────────────────────────────────────────── */
|
||||
.prose-editorial {
|
||||
@@ -432,15 +535,25 @@
|
||||
max-width: 72ch;
|
||||
}
|
||||
|
||||
.prose-editorial > * + * { margin-top: 1.6em; }
|
||||
.prose-editorial > * + * {
|
||||
margin-top: 1.6em;
|
||||
}
|
||||
|
||||
.prose-editorial strong { color: var(--color-paper); font-weight: 600; }
|
||||
.prose-editorial em { font-style: italic; color: var(--color-paper); }
|
||||
.prose-editorial strong {
|
||||
color: var(--color-paper);
|
||||
font-weight: 600;
|
||||
}
|
||||
.prose-editorial em {
|
||||
font-style: italic;
|
||||
color: var(--color-paper);
|
||||
}
|
||||
|
||||
.prose-editorial a {
|
||||
color: var(--color-heat);
|
||||
border-bottom: 1px solid rgba(255, 26, 140, 0.35);
|
||||
transition: border-color 0.2s, color 0.2s;
|
||||
transition:
|
||||
border-color 0.2s,
|
||||
color 0.2s;
|
||||
}
|
||||
.prose-editorial a:hover {
|
||||
color: var(--color-frost);
|
||||
@@ -457,7 +570,9 @@
|
||||
letter-spacing: 0.01em;
|
||||
line-height: 1.1;
|
||||
}
|
||||
.prose-editorial blockquote p { margin: 0; }
|
||||
.prose-editorial blockquote p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.prose-editorial h2 {
|
||||
font-size: 2.5rem;
|
||||
@@ -509,7 +624,9 @@
|
||||
background: linear-gradient(90deg, var(--color-heat), var(--color-pulse), var(--color-frost));
|
||||
box-shadow: 0 0 12px rgba(255, 26, 140, 0.6);
|
||||
z-index: 9999;
|
||||
transition: width 0.4s var(--ease-out-expo), opacity 0.3s ease;
|
||||
transition:
|
||||
width 0.4s var(--ease-out-expo),
|
||||
opacity 0.3s ease;
|
||||
width: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
@@ -517,62 +634,128 @@
|
||||
|
||||
/* ── Utilities ────────────────────────────────────────────────── */
|
||||
@layer utilities {
|
||||
|
||||
.gutter-x {
|
||||
padding-left: clamp(1rem, 4vw, 3rem);
|
||||
padding-left: clamp(1rem, 4vw, 3rem);
|
||||
padding-right: clamp(1rem, 4vw, 3rem);
|
||||
}
|
||||
|
||||
/* Aspect ratios */
|
||||
.aspect-editorial { aspect-ratio: 3 / 4; }
|
||||
.aspect-cinema { aspect-ratio: 21 / 9; }
|
||||
.aspect-portrait { aspect-ratio: 2 / 3; }
|
||||
.aspect-editorial {
|
||||
aspect-ratio: 3 / 4;
|
||||
}
|
||||
.aspect-cinema {
|
||||
aspect-ratio: 21 / 9;
|
||||
}
|
||||
.aspect-portrait {
|
||||
aspect-ratio: 2 / 3;
|
||||
}
|
||||
|
||||
/* Text wrapping */
|
||||
.text-balance { text-wrap: balance; }
|
||||
.text-pretty { text-wrap: pretty; }
|
||||
.text-balance {
|
||||
text-wrap: balance;
|
||||
}
|
||||
.text-pretty {
|
||||
text-wrap: pretty;
|
||||
}
|
||||
|
||||
/* Offset shadow */
|
||||
.shadow-comic { box-shadow: 5px 5px 0 var(--color-heat); }
|
||||
.shadow-comic-hot { box-shadow: 5px 5px 0 var(--color-heat); }
|
||||
.shadow-comic-volt { box-shadow: 5px 5px 0 var(--color-lime); }
|
||||
.shadow-comic-ice { box-shadow: 5px 5px 0 var(--color-frost); }
|
||||
.shadow-comic {
|
||||
box-shadow: 5px 5px 0 var(--color-heat);
|
||||
}
|
||||
.shadow-comic-hot {
|
||||
box-shadow: 5px 5px 0 var(--color-heat);
|
||||
}
|
||||
.shadow-comic-volt {
|
||||
box-shadow: 5px 5px 0 var(--color-lime);
|
||||
}
|
||||
.shadow-comic-ice {
|
||||
box-shadow: 5px 5px 0 var(--color-frost);
|
||||
}
|
||||
|
||||
/* Text stroke — hollow headline */
|
||||
.text-stroke-gold { -webkit-text-stroke: 1.5px var(--color-heat); color: transparent; }
|
||||
.text-stroke-paper { -webkit-text-stroke: 1.5px var(--color-paper); color: transparent; }
|
||||
.text-stroke-heat { -webkit-text-stroke: 1.5px var(--color-heat); color: transparent; }
|
||||
.text-stroke-frost { -webkit-text-stroke: 1.5px var(--color-frost); color: transparent; }
|
||||
.text-stroke-gold {
|
||||
-webkit-text-stroke: 1.5px var(--color-heat);
|
||||
color: transparent;
|
||||
}
|
||||
.text-stroke-paper {
|
||||
-webkit-text-stroke: 1.5px var(--color-paper);
|
||||
color: transparent;
|
||||
}
|
||||
.text-stroke-heat {
|
||||
-webkit-text-stroke: 1.5px var(--color-heat);
|
||||
color: transparent;
|
||||
}
|
||||
.text-stroke-frost {
|
||||
-webkit-text-stroke: 1.5px var(--color-frost);
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
/* Scrollbar hide */
|
||||
.scrollbar-hide { scrollbar-width: none; -ms-overflow-style: none; }
|
||||
.scrollbar-hide::-webkit-scrollbar { display: none; }
|
||||
.scrollbar-hide {
|
||||
scrollbar-width: none;
|
||||
-ms-overflow-style: none;
|
||||
}
|
||||
.scrollbar-hide::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Keyframes ────────────────────────────────────────────────── */
|
||||
@keyframes gradient-shift {
|
||||
0% { background-position: 0% 50%; }
|
||||
50% { background-position: 100% 50%; }
|
||||
100% { background-position: 0% 50%; }
|
||||
0% {
|
||||
background-position: 0% 50%;
|
||||
}
|
||||
50% {
|
||||
background-position: 100% 50%;
|
||||
}
|
||||
100% {
|
||||
background-position: 0% 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes marquee-scroll {
|
||||
to { transform: translateX(-50%); }
|
||||
to {
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes scroll-line {
|
||||
0% { transform: translateY(-100%); opacity: 0; }
|
||||
20% { opacity: 1; }
|
||||
80% { opacity: 1; }
|
||||
100% { transform: translateY(100%); opacity: 0; }
|
||||
0% {
|
||||
transform: translateY(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
20% {
|
||||
opacity: 1;
|
||||
}
|
||||
80% {
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
transform: translateY(100%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Logo glitch animation ───────────────────────────────────── */
|
||||
@keyframes glitch-clip {
|
||||
0%, 88%, 100% { transform: translate(0); clip-path: none; }
|
||||
90% { transform: translate(-3px, 1px); clip-path: polygon(0 15%, 100% 15%, 100% 40%, 0 40%); }
|
||||
92% { transform: translate(3px, -1px); clip-path: polygon(0 60%, 100% 60%, 100% 78%, 0 78%); }
|
||||
94% { transform: translate(0); clip-path: none; }
|
||||
0%,
|
||||
88%,
|
||||
100% {
|
||||
transform: translate(0);
|
||||
clip-path: none;
|
||||
}
|
||||
90% {
|
||||
transform: translate(-3px, 1px);
|
||||
clip-path: polygon(0 15%, 100% 15%, 100% 40%, 0 40%);
|
||||
}
|
||||
92% {
|
||||
transform: translate(3px, -1px);
|
||||
clip-path: polygon(0 60%, 100% 60%, 100% 78%, 0 78%);
|
||||
}
|
||||
94% {
|
||||
transform: translate(0);
|
||||
clip-path: none;
|
||||
}
|
||||
}
|
||||
|
||||
a:hover .logo-glitch {
|
||||
@@ -591,15 +774,24 @@ footer .logo-img {
|
||||
}
|
||||
|
||||
@keyframes logo-float {
|
||||
0%, 100% { transform: translateY(0); filter: drop-shadow(0 0 8px rgba(255, 26, 140, 0.35)); }
|
||||
50% { transform: translateY(-4px); filter: drop-shadow(0 6px 14px rgba(255, 26, 140, 0.6)); }
|
||||
0%,
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
filter: drop-shadow(0 0 8px rgba(255, 26, 140, 0.35));
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-4px);
|
||||
filter: drop-shadow(0 6px 14px rgba(255, 26, 140, 0.6));
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Nav & footer link hover polish ─────────────────────────── */
|
||||
|
||||
/* Desktop nav links — lift + glow on hover */
|
||||
header nav a.label {
|
||||
transition: color 0.2s var(--ease-sharp), transform 0.2s var(--ease-out-expo);
|
||||
transition:
|
||||
color 0.2s var(--ease-sharp),
|
||||
transform 0.2s var(--ease-out-expo);
|
||||
}
|
||||
header nav a.label:hover {
|
||||
transform: translateY(-1px);
|
||||
@@ -612,7 +804,9 @@ header nav a.label span {
|
||||
|
||||
/* Footer links — subtle lift */
|
||||
footer nav a.label {
|
||||
transition: color 0.2s var(--ease-sharp), transform 0.2s var(--ease-out-expo);
|
||||
transition:
|
||||
color 0.2s var(--ease-sharp),
|
||||
transform 0.2s var(--ease-out-expo);
|
||||
}
|
||||
footer nav a.label:hover {
|
||||
transform: translateY(-1px);
|
||||
@@ -636,10 +830,15 @@ footer nav a.label:hover svg {
|
||||
}
|
||||
|
||||
@keyframes page-out {
|
||||
to { opacity: 0; transform: translateY(-10px); }
|
||||
to {
|
||||
opacity: 0;
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes page-in {
|
||||
from { opacity: 0; transform: translateY(14px); }
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(14px);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-5
@@ -17,7 +17,9 @@
|
||||
bar.style.width = "100%";
|
||||
setTimeout(() => {
|
||||
bar.style.opacity = "0";
|
||||
setTimeout(() => { bar.style.width = "0"; }, 350);
|
||||
setTimeout(() => {
|
||||
bar.style.width = "0";
|
||||
}, 350);
|
||||
}, 150);
|
||||
});
|
||||
})();
|
||||
@@ -37,9 +39,11 @@ function initLazyVideos(root) {
|
||||
observer.unobserve(video);
|
||||
});
|
||||
},
|
||||
{ rootMargin: "300px" }
|
||||
{ rootMargin: "300px" },
|
||||
);
|
||||
(root || document).querySelectorAll("video[data-src]").forEach((v) => observer.observe(v));
|
||||
(root || document)
|
||||
.querySelectorAll("video[data-src]")
|
||||
.forEach((v) => observer.observe(v));
|
||||
}
|
||||
|
||||
initLazyVideos();
|
||||
@@ -67,7 +71,9 @@ document.body.addEventListener("htmx:historyRestore", () => {
|
||||
bar.style.width = "100%";
|
||||
setTimeout(() => {
|
||||
bar.style.opacity = "0";
|
||||
setTimeout(() => { bar.style.width = "0"; }, 350);
|
||||
setTimeout(() => {
|
||||
bar.style.width = "0";
|
||||
}, 350);
|
||||
}, 150);
|
||||
}
|
||||
|
||||
@@ -81,4 +87,3 @@ document.body.addEventListener("htmx:historyRestore", () => {
|
||||
window.scrollTo({ top: 0, behavior: "instant" });
|
||||
window.dispatchEvent(new Event("scroll"));
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user