diff --git a/web/src/app.css b/web/src/app.css index 1dd4f66..5191471 100644 --- a/web/src/app.css +++ b/web/src/app.css @@ -77,9 +77,6 @@ html, body { @apply font-inter overflow-x-hidden; color: var(--color-text-primary); - transition: - background-color 0.3s ease-in-out, - color 0.3s ease-in-out; } body { @@ -87,19 +84,6 @@ body { background-color: var(--color-bg-primary); } -/* Smooth theme transitions for all elements */ -*:not(canvas):not([class*="animate-"]) { - transition-property: background-color, border-color, color, fill, stroke; - transition-duration: 0.3s; - transition-timing-function: ease-in-out; -} - -/* Elements with explicit transition classes should extend, not replace */ -[class*="transition-colors"], -[class*="transition-all"] { - transition-duration: 0.3s !important; -} - html:not(.dark) { .os-scrollbar { --os-handle-bg: rgba(0, 0, 0, 0.25) !important; @@ -120,7 +104,7 @@ html.dark { border-radius: 4px; } -/* Native scrollbars (Webkit: Chrome, Safari, Edge) */ +/* Native scrollbars for other elements (Webkit: Chrome, Safari, Edge) */ html:not(.dark) ::-webkit-scrollbar { width: 10px; height: 10px; @@ -167,25 +151,46 @@ html.dark ::-webkit-scrollbar-thumb:active { background: rgba(255, 255, 255, 0.55); } -/* Native scrollbars (Firefox) */ -html:not(.dark) { - scrollbar-color: rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.05); +/* Native scrollbars for other elements (Firefox) - applied to a wrapper class */ +.native-scrollbar { scrollbar-width: thin; } -html.dark { +html:not(.dark) .native-scrollbar { + scrollbar-color: rgba(0, 0, 0, 0.25) rgba(0, 0, 0, 0.05); +} + +html.dark .native-scrollbar { scrollbar-color: rgba(255, 255, 255, 0.35) rgba(255, 255, 255, 0.05); - scrollbar-width: thin; +} + +/* Hide native scrollbar on html/body - OverlayScrollbars handles body scrolling */ +/* Must come AFTER general scrollbar styles to win via cascade */ +html, +body { + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* IE/Edge */ +} + +html::-webkit-scrollbar, +body::-webkit-scrollbar { + display: none; /* Chrome, Safari, Opera */ } /* Utility class for page main wrapper */ .page-main { - @apply relative min-h-screen text-zinc-900 dark:text-zinc-50 transition-colors duration-300; + @apply relative min-h-screen text-zinc-900 dark:text-zinc-50; } -/* View Transitions API - page transition animations */ +/* View Transitions API - theme toggle animation */ +/* Disable default cross-fade so JS can animate clip-path instead */ +::view-transition-old(root), +::view-transition-new(root) { + animation: none; + mix-blend-mode: normal; +} -/* Persistent elements (background with dots, theme toggle) - excluded from transition */ +/* Persistent elements (background with dots, theme toggle) - excluded from page transitions */ /* Hide old snapshots entirely so only the live element shows (prevents doubling/ghosting) */ ::view-transition-old(background), ::view-transition-old(theme-toggle) { @@ -220,12 +225,6 @@ html.dark { } } -/* Only animate page content, not root (persistent UI stays static) */ -::view-transition-old(root), -::view-transition-new(root) { - animation: none; -} - ::view-transition-old(page-content) { animation: vt-slide-to-left 250ms cubic-bezier(0.4, 0, 0.2, 1) both; } diff --git a/web/src/app.html b/web/src/app.html index e642e38..0de4f89 100644 --- a/web/src/app.html +++ b/web/src/app.html @@ -9,9 +9,10 @@ body { scrollbar-width: none; /* Firefox */ -ms-overflow-style: none; /* IE/Edge */ - &::-webkit-scrollbar { - display: none; /* Chrome, Safari, Opera */ - } + } + html::-webkit-scrollbar, + body::-webkit-scrollbar { + display: none; /* Chrome, Safari, Opera */ } handleToggle(e)} aria-label={themeStore.isDark ? "Switch to light mode" : "Switch to dark mode"} diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index 35f096f..2ac59b2 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -153,6 +153,6 @@ {/if} - + {@render children()} diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte index 5abb624..a789316 100644 --- a/web/src/routes/+page.svelte +++ b/web/src/routes/+page.svelte @@ -26,7 +26,7 @@ } - + - + Admin Login | xevion.dev - +