Skip to content

Commit b7712db

Browse files
committed
fix: anaglyph mode improvements
1 parent 6c2e2e7 commit b7712db

1 file changed

Lines changed: 12 additions & 123 deletions

File tree

frontend/src/style.css

Lines changed: 12 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -142,140 +142,29 @@ html.anaglyph-active * {
142142
transition: text-shadow 0.4s ease, box-shadow 0.4s ease, filter 0.4s ease;
143143
}
144144

145-
/* ── Text: red/cyan text-shadow on everything ────────────── */
145+
/* ── Text: static red/cyan parallax, scales with font size ──
146+
The element's own glyph (white in dark mode / black in light
147+
mode) stays as the zero-parallax neutral body; the two shadows
148+
are the left/right colour fringes each eye fuses into depth.
149+
- offset in em so the parallax holds at any zoom / font size
150+
- pure opaque colours so the lenses cleanly cancel each other
151+
- NO animation: stereo fusion needs a static offset */
146152
html.anaglyph-active * {
147153
text-shadow:
148-
-3px 0 rgba(255, 0, 0, 0.7),
149-
3px 0 rgba(0, 255, 255, 0.7) !important;
150-
animation: anaglyph-text-wobble 3s ease-in-out infinite;
154+
-0.09em 0 0 rgb(255, 0, 0),
155+
0.09em 0 0 rgb(0, 255, 255) !important;
156+
animation: none !important;
151157
}
152158

153159
/* ── SVG icons (Lucide etc.) ─────────────────────────────── */
154160
html.anaglyph-active svg {
155161
filter:
156-
drop-shadow(-2px 0 rgba(255, 0, 0, 0.65)) drop-shadow(2px 0 rgba(0, 255, 255, 0.65));
157-
animation: anaglyph-icon-wobble 3s ease-in-out infinite;
162+
drop-shadow(-0.09em 0 rgb(255, 0, 0)) drop-shadow(0.09em 0 rgb(0, 255, 255));
158163
}
159164

160165
/* ── Images ──────────────────────────────────────────────── */
161166
html.anaglyph-active img {
162167
filter:
163-
drop-shadow(-3px 0 rgba(255, 0, 0, 0.5)) drop-shadow(3px 0 rgba(0, 255, 255, 0.5));
168+
drop-shadow(-3px 0 rgb(255, 0, 0)) drop-shadow(3px 0 rgb(0, 255, 255));
164169
}
165170

166-
/* ── Interactive elements: buttons, inputs ───────────────── */
167-
html.anaglyph-active button,
168-
html.anaglyph-active [role="button"],
169-
html.anaglyph-active input,
170-
html.anaglyph-active select,
171-
html.anaglyph-active textarea {
172-
box-shadow:
173-
-3px 0 0 rgba(255, 0, 0, 0.25),
174-
3px 0 0 rgba(0, 255, 255, 0.25) !important;
175-
}
176-
177-
/* ── Cards, tables, bordered containers ──────────────────── */
178-
html.anaglyph-active [data-slot="card"],
179-
html.anaglyph-active table,
180-
html.anaglyph-active .border,
181-
html.anaglyph-active [class*="rounded-lg"][class*="border"] {
182-
box-shadow:
183-
-3px 0 0 rgba(255, 0, 0, 0.18),
184-
3px 0 0 rgba(0, 255, 255, 0.18);
185-
}
186-
187-
/* ── Top nav bar ─────────────────────────────────────────── */
188-
html.anaglyph-active nav.border-b {
189-
box-shadow:
190-
0 2px 0 rgba(255, 0, 0, 0.2),
191-
0 -2px 0 rgba(0, 255, 255, 0.2);
192-
}
193-
194-
/* ── CRT scanline overlay ────────────────────────────────── */
195-
html.anaglyph-active body::after {
196-
content: '';
197-
position: fixed;
198-
inset: 0;
199-
z-index: 99999;
200-
pointer-events: none;
201-
background: repeating-linear-gradient(0deg,
202-
rgba(255, 255, 255, 0.025) 0px,
203-
rgba(255, 255, 255, 0.025) 1px,
204-
transparent 1px,
205-
transparent 3px);
206-
opacity: 0;
207-
animation: anaglyph-fade-in 0.5s ease forwards, anaglyph-scanline-scroll 8s linear infinite;
208-
}
209-
210-
/* ── Wobble animations ───────────────────────────────────── */
211-
@keyframes anaglyph-text-wobble {
212-
213-
0%,
214-
100% {
215-
text-shadow:
216-
-3px 0 rgba(255, 0, 0, 0.7),
217-
3px 0 rgba(0, 255, 255, 0.7);
218-
}
219-
220-
25% {
221-
text-shadow:
222-
-4px 1px rgba(255, 0, 0, 0.75),
223-
4px -1px rgba(0, 255, 255, 0.75);
224-
}
225-
226-
50% {
227-
text-shadow:
228-
-2px -0.5px rgba(255, 0, 0, 0.65),
229-
2px 0.5px rgba(0, 255, 255, 0.65);
230-
}
231-
232-
75% {
233-
text-shadow:
234-
-4px 0.5px rgba(255, 0, 0, 0.7),
235-
4px -0.5px rgba(0, 255, 255, 0.7);
236-
}
237-
}
238-
239-
@keyframes anaglyph-icon-wobble {
240-
241-
0%,
242-
100% {
243-
filter:
244-
drop-shadow(-2px 0 rgba(255, 0, 0, 0.65)) drop-shadow(2px 0 rgba(0, 255, 255, 0.65));
245-
}
246-
247-
25% {
248-
filter:
249-
drop-shadow(-3px 0.5px rgba(255, 0, 0, 0.7)) drop-shadow(3px -0.5px rgba(0, 255, 255, 0.7));
250-
}
251-
252-
50% {
253-
filter:
254-
drop-shadow(-1.5px -0.5px rgba(255, 0, 0, 0.6)) drop-shadow(1.5px 0.5px rgba(0, 255, 255, 0.6));
255-
}
256-
257-
75% {
258-
filter:
259-
drop-shadow(-3px 0.3px rgba(255, 0, 0, 0.65)) drop-shadow(3px -0.3px rgba(0, 255, 255, 0.65));
260-
}
261-
}
262-
263-
@keyframes anaglyph-scanline-scroll {
264-
0% {
265-
background-position: 0 0;
266-
}
267-
268-
100% {
269-
background-position: 0 100px;
270-
}
271-
}
272-
273-
@keyframes anaglyph-fade-in {
274-
from {
275-
opacity: 0;
276-
}
277-
278-
to {
279-
opacity: 1;
280-
}
281-
}

0 commit comments

Comments
 (0)