diff options
Diffstat (limited to 'frontend/src/app/globals.css')
-rw-r--r-- | frontend/src/app/globals.css | 260 |
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; +} |