aboutsummaryrefslogtreecommitdiffstats
path: root/frontend/src/app/globals.css
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/app/globals.css')
-rw-r--r--frontend/src/app/globals.css260
1 files changed, 253 insertions, 7 deletions
diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css
index 89de65b..5210ba7 100644
--- a/frontend/src/app/globals.css
+++ b/frontend/src/app/globals.css
@@ -3,6 +3,9 @@
@custom-variant dark (&:is(.dark *));
+/* Custom responsive breakpoints */
+@custom-variant xs (&:is(@media (min-width: 475px) *));
+
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
@@ -289,16 +292,23 @@ button.nav-button-transparent:focus,
/* Dropdown and navigation item transparency */
.nav-dropdown-transparent {
- background: rgba(255, 255, 255, 0.98) !important;
- backdrop-filter: blur(16px) saturate(180%) !important;
- border: 1px solid rgba(255, 255, 255, 0.3) !important;
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1) !important;
+ background: rgba(255, 255, 255, 0.85) !important;
+ backdrop-filter: blur(20px) saturate(180%) !important;
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
+ box-shadow:
+ 0 8px 32px rgba(0, 0, 0, 0.12),
+ 0 2px 16px rgba(0, 0, 0, 0.08),
+ inset 0 1px 0 rgba(255, 255, 255, 0.4) !important;
+ border-radius: 0.75rem !important;
}
.dark .nav-dropdown-transparent {
- background: rgba(23, 23, 23, 0.98) !important;
- border: 1px solid rgba(82, 82, 82, 0.4) !important;
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
+ background: rgba(15, 15, 15, 0.85) !important;
+ border: 1px solid rgba(82, 82, 82, 0.3) !important;
+ box-shadow:
+ 0 8px 32px rgba(0, 0, 0, 0.4),
+ 0 2px 16px rgba(0, 0, 0, 0.3),
+ inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
}
.nav-dropdown-item {
@@ -510,3 +520,239 @@ a.nav-button-transparent:not(:hover):not(:focus):not(:active) {
background: rgba(255, 255, 255, 0.06) !important;
background-color: rgba(255, 255, 255, 0.06) !important;
}
+
+/* Enhanced Theme Toggle Transparency Effects */
+/* Theme toggle specific enhancements for better navbar integration */
+.nav-button-transparent.group {
+ position: relative;
+ overflow: hidden;
+ backdrop-filter: blur(8px) saturate(150%);
+ border-radius: 0.5rem;
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+}
+
+/* Enhanced hover state for theme toggle */
+.nav-button-transparent.group:hover {
+ background: rgba(0, 0, 0, 0.08) !important;
+ background-color: rgba(0, 0, 0, 0.08) !important;
+ transform: scale(1.05);
+ backdrop-filter: blur(12px) saturate(180%);
+}
+
+.dark .nav-button-transparent.group:hover {
+ background: rgba(255, 255, 255, 0.06) !important;
+ background-color: rgba(255, 255, 255, 0.06) !important;
+}
+
+/* Active state for theme toggle */
+.nav-button-transparent.group:active {
+ transform: scale(0.95);
+ transition: transform 0.1s ease-in-out;
+}
+
+/* Enhanced focus state for theme toggle */
+.nav-button-transparent.group:focus-visible {
+ background: rgba(0, 0, 0, 0.04) !important;
+ background-color: rgba(0, 0, 0, 0.04) !important;
+ box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1) !important;
+ outline: none !important;
+}
+
+.dark .nav-button-transparent.group:focus-visible {
+ background: rgba(255, 255, 255, 0.03) !important;
+ background-color: rgba(255, 255, 255, 0.03) !important;
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1) !important;
+}
+
+
+/* Enhanced dropdown items for theme toggle */
+.nav-dropdown-item.group\/item {
+ background: transparent !important;
+ border: none !important;
+ border-radius: 0.5rem !important;
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
+ margin: 2px !important;
+ padding: 0.5rem 0.75rem !important;
+}
+
+.nav-dropdown-item.group\/item:hover {
+ background: rgba(0, 0, 0, 0.08) !important;
+ backdrop-filter: blur(8px) !important;
+ transform: translateX(2px) !important;
+}
+
+.dark .nav-dropdown-item.group\/item:hover {
+ background: rgba(255, 255, 255, 0.08) !important;
+}
+
+/* Smooth icon transitions for theme toggle */
+.nav-button-transparent.group svg {
+ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
+ filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1));
+}
+
+.dark .nav-button-transparent.group svg {
+ filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));
+}
+
+/* Enhanced glow effect for theme toggle */
+.nav-button-transparent.group:hover svg {
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.15));
+}
+
+.dark .nav-button-transparent.group:hover svg {
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.4));
+}
+
+/* Ultra-smooth dropdown animations */
+@keyframes dropdown-in {
+ from {
+ opacity: 0;
+ transform: scale(0.95) translateY(-4px);
+ }
+ to {
+ opacity: 1;
+ transform: scale(1) translateY(0);
+ }
+}
+
+@keyframes dropdown-out {
+ from {
+ opacity: 1;
+ transform: scale(1) translateY(0);
+ }
+ to {
+ opacity: 0;
+ transform: scale(0.95) translateY(-4px);
+ }
+}
+
+/* Apply dropdown animation to nav dropdowns */
+.nav-dropdown-transparent[data-state="open"] {
+ animation: dropdown-in 0.2s cubic-bezier(0.4, 0, 0.2, 1);
+}
+
+/* Improved checkmark animation */
+.nav-dropdown-item span[class*="animate-in"] {
+ animation: checkmark-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
+}
+
+@keyframes checkmark-in {
+ from {
+ opacity: 0;
+ transform: scale(0.3) rotate(-12deg);
+ }
+ to {
+ opacity: 1;
+ transform: scale(1) rotate(0deg);
+ }
+}
+
+/* Prevent any conflicting backgrounds on theme toggle */
+.nav-button-transparent.group[data-state="open"] {
+ background: rgba(0, 0, 0, 0.08) !important;
+ background-color: rgba(0, 0, 0, 0.08) !important;
+ border: none !important;
+ transform: scale(1.05);
+}
+
+.dark .nav-button-transparent.group[data-state="open"] {
+ background: rgba(255, 255, 255, 0.08) !important;
+ backdrop-filter: blur(8px) !important;
+ border-radius: 0.5rem !important;
+}
+
+/* Mobile-friendly enhancements */
+@media (max-width: 768px) {
+ /* Ensure touch targets are at least 44px */
+ .touch-manipulation {
+ touch-action: manipulation;
+ -webkit-tap-highlight-color: transparent;
+ }
+
+ /* Better mobile spacing for action buttons */
+ .mobile-action-buttons {
+ gap: 0.25rem !important;
+ }
+
+ /* Mobile menu improvements */
+ .mobile-menu-item {
+ min-height: 44px;
+ padding: 0.75rem 1rem;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 0.5rem;
+ transition: all 0.2s ease-in-out;
+ }
+
+ .mobile-menu-item:active {
+ transform: scale(0.98);
+ background: rgba(0, 0, 0, 0.05);
+ }
+
+ .dark .mobile-menu-item:active {
+ background: rgba(255, 255, 255, 0.05);
+ }
+
+ /* Prevent text selection on mobile UI elements */
+ .no-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ }
+
+ /* Improve mobile sheet content scrolling */
+ .mobile-sheet-content {
+ overscroll-behavior: contain;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+
+/* Small mobile optimizations */
+@media (max-width: 475px) {
+ /* Tighter spacing on very small screens */
+ .action-buttons-compact {
+ gap: 0.125rem !important;
+ }
+
+ /* Slightly smaller touch targets for very small screens */
+ .compact-touch-target {
+ min-width: 40px !important;
+ min-height: 40px !important;
+ }
+
+ /* Reduce header height on very small screens */
+ .compact-header {
+ height: 3.5rem !important; /* 56px */
+ }
+}
+
+/* Accessibility improvements */
+@media (prefers-reduced-motion: reduce) {
+ .nav-button-transparent,
+ .nav-dropdown-item,
+ .mobile-menu-item {
+ transition: none !important;
+ animation: none !important;
+ }
+}
+
+/* High contrast mode support */
+@media (prefers-contrast: high) {
+ .nav-button-transparent {
+ border: 1px solid currentColor !important;
+ }
+
+ .nav-dropdown-transparent {
+ border: 1px solid currentColor !important;
+ background: var(--background) !important;
+ }
+}
+
+/* Focus visible for keyboard navigation */
+.nav-button-transparent:focus-visible {
+ outline: 2px solid var(--ring) !important;
+ outline-offset: 2px !important;
+}