mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-15 00:33:44 +08:00
860 lines
18 KiB
CSS
860 lines
18 KiB
CSS
@import "tailwindcss";
|
|
@import "./scroll-optimization.css";
|
|
|
|
:root {
|
|
--font-family-system: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
|
|
|
|
/* Light Mode Palette */
|
|
--bg-color-light: #f0f2f5;
|
|
--bg-image-light: linear-gradient(120deg, #fdfbfb 0%, #ebedee 100%);
|
|
--text-color-light: #1d1d1f;
|
|
--text-color-secondary-light: #6e6e73;
|
|
--accent-color-light: #0056b3;
|
|
/* Updated from #007aff for WCAG AA compliance (6.85:1 with white) */
|
|
--glass-bg-light: rgba(242, 242, 247, 0.8);
|
|
--glass-border-light: rgba(255, 255, 255, 0.5);
|
|
--shadow-color-light: rgba(0, 0, 0, 0.1);
|
|
|
|
/* Dark Mode Palette */
|
|
--bg-color-dark: #121212;
|
|
--bg-image-dark: linear-gradient(120deg, #272B30 0%, #121212 100%);
|
|
--text-color-dark: #f5f5f7;
|
|
--text-color-secondary-dark: #8e8e93;
|
|
--accent-color-dark: #1A6DBF;
|
|
/* Updated for WCAG AA compliance (5.27:1 with white) */
|
|
--glass-bg-dark: rgba(28, 28, 30, 0.75);
|
|
--glass-border-dark: rgba(60, 60, 60, 0.7);
|
|
--shadow-color-dark: rgba(0, 0, 0, 0.3);
|
|
|
|
/* Universal Variables */
|
|
--radius-2xl: 1.5rem;
|
|
--radius-full: 9999px;
|
|
--shadow-sm: 0 2px 4px var(--shadow-color);
|
|
--shadow-md: 0 4px 12px var(--shadow-color);
|
|
--transition-fluid: 0.4s cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
|
|
/* Active Theme Variables */
|
|
--bg-color: var(--bg-color-light);
|
|
--bg-image: var(--bg-image-light);
|
|
--text-color: var(--text-color-light);
|
|
--text-color-secondary: var(--text-color-secondary-light);
|
|
--accent-color: var(--accent-color-light);
|
|
--glass-bg: var(--glass-bg-light);
|
|
--glass-border: var(--glass-border-light);
|
|
--shadow-color: var(--shadow-color-light);
|
|
|
|
--background: #f0f2f5;
|
|
--foreground: #1d1d1f;
|
|
}
|
|
|
|
body {
|
|
--bg-color: var(--bg-color-light);
|
|
--bg-image: var(--bg-image-light);
|
|
--text-color: var(--text-color-light);
|
|
--text-color-secondary: var(--text-color-secondary-light);
|
|
--accent-color: var(--accent-color-light);
|
|
--glass-bg: var(--glass-bg-light);
|
|
--glass-border: var(--glass-border-light);
|
|
--shadow-color: var(--shadow-color-light);
|
|
|
|
background-color: var(--bg-color);
|
|
background-image: var(--bg-image);
|
|
color: var(--text-color);
|
|
font-family: var(--font-family-system);
|
|
|
|
/* Optimize scrolling performance */
|
|
-webkit-overflow-scrolling: touch;
|
|
overscroll-behavior-y: none;
|
|
}
|
|
|
|
body.dark,
|
|
.dark body {
|
|
--bg-color: var(--bg-color-dark);
|
|
--bg-image: var(--bg-image-dark);
|
|
--text-color: var(--text-color-dark);
|
|
--text-color-secondary: var(--text-color-secondary-dark);
|
|
--accent-color: var(--accent-color-dark);
|
|
--glass-bg: var(--glass-bg-dark);
|
|
--glass-border: var(--glass-border-dark);
|
|
--shadow-color: var(--shadow-color-dark);
|
|
|
|
--background: #121212;
|
|
--foreground: #f5f5f7;
|
|
}
|
|
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
box-sizing: border-box;
|
|
/* Optimize font rendering */
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
html {
|
|
/* Disable smooth scrolling for better performance - users expect instant scroll */
|
|
scroll-behavior: auto;
|
|
}
|
|
|
|
/* Global focus-visible styles for keyboard navigation accessibility */
|
|
*:focus-visible {
|
|
outline: 2px solid var(--accent-color);
|
|
outline-offset: 2px;
|
|
border-radius: var(--radius-2xl);
|
|
}
|
|
|
|
/* Screen reader only utility */
|
|
.sr-only {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
padding: 0;
|
|
margin: -1px;
|
|
overflow: hidden;
|
|
clip: rect(0, 0, 0, 0);
|
|
white-space: nowrap;
|
|
border-width: 0;
|
|
}
|
|
|
|
button:focus-visible,
|
|
a:focus-visible,
|
|
input:focus-visible,
|
|
textarea:focus-visible,
|
|
select:focus-visible {
|
|
outline: 2px solid var(--accent-color);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
/* Special handling for pill-shaped elements */
|
|
[class*="rounded-full"]:focus-visible {
|
|
border-radius: var(--radius-full);
|
|
}
|
|
|
|
|
|
/* Scrollbar styling */
|
|
::-webkit-scrollbar {
|
|
width: 10px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: color-mix(in srgb, var(--glass-bg) 80%, transparent);
|
|
border-radius: var(--radius-full);
|
|
border: 2px solid transparent;
|
|
background-clip: padding-box;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: color-mix(in srgb, var(--accent-color) 60%, transparent);
|
|
background-clip: padding-box;
|
|
}
|
|
|
|
/* Hide scrollbar utility */
|
|
.scrollbar-hide {
|
|
-ms-overflow-style: none;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
.scrollbar-hide::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
/* Custom animations */
|
|
@keyframes fade-in {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(10px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes slide-up {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes pulse {
|
|
|
|
0%,
|
|
100% {
|
|
opacity: 1;
|
|
}
|
|
|
|
50% {
|
|
opacity: 0.5;
|
|
}
|
|
}
|
|
|
|
@keyframes spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes spin-slow {
|
|
from {
|
|
transform: rotate(0deg);
|
|
}
|
|
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes spin-reverse {
|
|
from {
|
|
transform: rotate(360deg);
|
|
}
|
|
|
|
to {
|
|
transform: rotate(0deg);
|
|
}
|
|
}
|
|
|
|
@keyframes bounce-subtle {
|
|
|
|
0%,
|
|
100% {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
50% {
|
|
transform: translateY(-5px);
|
|
}
|
|
}
|
|
|
|
@keyframes shimmer {
|
|
0% {
|
|
transform: translateX(-100%);
|
|
}
|
|
|
|
100% {
|
|
transform: translateX(100%);
|
|
}
|
|
}
|
|
|
|
@keyframes scale-in {
|
|
0% {
|
|
opacity: 0;
|
|
transform: scale(0.9) translateY(10px);
|
|
}
|
|
|
|
100% {
|
|
opacity: 1;
|
|
transform: scale(1) translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes scale-out {
|
|
0% {
|
|
opacity: 1;
|
|
transform: scale(1) translateY(0);
|
|
}
|
|
|
|
100% {
|
|
opacity: 0;
|
|
transform: scale(0.9) translateY(-10px);
|
|
}
|
|
}
|
|
|
|
@keyframes float {
|
|
|
|
0%,
|
|
100% {
|
|
transform: translateY(0) translateX(0);
|
|
opacity: 0.3;
|
|
}
|
|
|
|
50% {
|
|
transform: translateY(-20px) translateX(10px);
|
|
opacity: 0.8;
|
|
}
|
|
}
|
|
|
|
@keyframes gradient-x {
|
|
|
|
0%,
|
|
100% {
|
|
background-position: 0% 50%;
|
|
}
|
|
|
|
50% {
|
|
background-position: 100% 50%;
|
|
}
|
|
}
|
|
|
|
.animate-fade-in {
|
|
animation: fade-in 0.4s ease-out;
|
|
}
|
|
|
|
.animate-slide-up {
|
|
animation: slide-up 0.5s cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
}
|
|
|
|
.animate-pulse {
|
|
animation: pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
}
|
|
|
|
.animate-spin {
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
|
|
.animate-spin-slow {
|
|
animation: spin-slow 3s linear infinite;
|
|
}
|
|
|
|
.animate-spin-reverse {
|
|
animation: spin-reverse 2s linear infinite;
|
|
}
|
|
|
|
.animate-bounce-subtle {
|
|
animation: bounce-subtle 2s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-shimmer {
|
|
animation: shimmer 2s infinite;
|
|
}
|
|
|
|
.animate-scale-in {
|
|
animation: scale-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
|
|
}
|
|
|
|
.animate-scale-out {
|
|
animation: scale-out 0.2s ease-out forwards;
|
|
}
|
|
|
|
.animate-float {
|
|
animation: float 3s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-gradient-x {
|
|
background-size: 200% 200%;
|
|
animation: gradient-x 3s ease infinite;
|
|
}
|
|
|
|
/* Liquid Glass Components */
|
|
.glass-card {
|
|
/* background: var(--glass-bg); */
|
|
/* Performance fix: Use solid color with opacity instead of blur */
|
|
background: var(--bg-color);
|
|
opacity: 0.95;
|
|
|
|
/* backdrop-filter: blur(8px) saturate(120%); */
|
|
/* -webkit-backdrop-filter: blur(8px) saturate(120%); */
|
|
|
|
border-radius: var(--radius-2xl);
|
|
box-shadow: var(--shadow-md);
|
|
border: 1px solid var(--glass-border);
|
|
transition: transform 0.2s ease-out;
|
|
}
|
|
|
|
.glass-card:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 8px 24px var(--shadow-color);
|
|
}
|
|
|
|
/* Optimize fixed/sticky elements for scrolling */
|
|
nav:where(.sticky, .fixed),
|
|
.sticky,
|
|
.fixed {
|
|
backface-visibility: hidden;
|
|
-webkit-backface-visibility: hidden;
|
|
}
|
|
|
|
.glass-input {
|
|
background: var(--glass-bg);
|
|
/* Performance fix: Disable blur */
|
|
/* backdrop-filter: blur(6px) saturate(120%); */
|
|
/* -webkit-backdrop-filter: blur(6px) saturate(120%); */
|
|
border: 1px solid var(--glass-border);
|
|
border-radius: var(--radius-2xl);
|
|
color: var(--text-color);
|
|
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.glass-input:focus {
|
|
outline: none;
|
|
border-color: var(--accent-color);
|
|
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 30%, transparent);
|
|
}
|
|
|
|
.glass-button {
|
|
background: var(--accent-color);
|
|
color: white;
|
|
border: none;
|
|
border-radius: var(--radius-2xl);
|
|
padding: 0.75rem 1.25rem;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
|
|
.glass-button:hover {
|
|
transform: translateY(-2px);
|
|
filter: brightness(1.1);
|
|
box-shadow: 0 4px 8px var(--shadow-color);
|
|
}
|
|
|
|
.glass-button:active {
|
|
transform: translateY(0) scale(0.98);
|
|
filter: brightness(0.95);
|
|
}
|
|
|
|
.glass-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0.25rem 0.75rem;
|
|
border-radius: var(--radius-full);
|
|
font-size: 0.8rem;
|
|
font-weight: 600;
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
}
|
|
|
|
/* Animations for History Components */
|
|
@keyframes slideIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(-10px) scale(0.95);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes slideInRight {
|
|
from {
|
|
transform: translateX(100%);
|
|
}
|
|
|
|
to {
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
/* Custom Video Player Styles */
|
|
.spinner {
|
|
width: 48px;
|
|
height: 48px;
|
|
border: 5px solid color-mix(in srgb, var(--glass-bg) 50%, transparent);
|
|
border-top-color: var(--accent-color);
|
|
border-radius: var(--radius-full);
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
|
|
.btn-icon {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-width: 2.5rem;
|
|
height: 2.5rem;
|
|
background: rgba(255, 255, 255, 0.1);
|
|
backdrop-filter: blur(10px);
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
border-radius: var(--radius-2xl);
|
|
color: white;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
-webkit-tap-highlight-color: transparent;
|
|
touch-action: manipulation;
|
|
user-select: none;
|
|
-webkit-user-select: none;
|
|
position: relative;
|
|
z-index: 10;
|
|
}
|
|
|
|
.btn-icon:hover {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
.btn-icon:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.slider-track {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 8px;
|
|
background: rgba(255, 255, 255, 0.3);
|
|
border-radius: var(--radius-full);
|
|
cursor: pointer;
|
|
overflow: visible;
|
|
user-select: none;
|
|
-webkit-user-select: none;
|
|
}
|
|
|
|
.slider-track.h-1 {
|
|
height: 4px;
|
|
}
|
|
|
|
.slider-range {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
height: 100%;
|
|
background-color: var(--accent-color);
|
|
border-radius: var(--radius-full);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.slider-thumb {
|
|
position: absolute;
|
|
top: 50%;
|
|
width: 16px;
|
|
height: 16px;
|
|
background-color: white;
|
|
border-radius: var(--radius-full);
|
|
transform: translate(-50%, -50%);
|
|
cursor: grab;
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.slider-track.h-1 .slider-thumb {
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
|
|
.slider-track:hover .slider-thumb {
|
|
transform: translate(-50%, -50%) scale(1.2);
|
|
}
|
|
|
|
.slider-thumb:active,
|
|
.slider-track:active .slider-thumb {
|
|
transform: translate(-50%, -50%) scale(1.3);
|
|
cursor: grabbing;
|
|
}
|
|
|
|
/* Hide scrollbar utility */
|
|
.scrollbar-hide {
|
|
-ms-overflow-style: none;
|
|
/* IE and Edge */
|
|
scrollbar-width: none;
|
|
/* Firefox */
|
|
}
|
|
|
|
.scrollbar-hide::-webkit-scrollbar {
|
|
display: none;
|
|
/* Chrome, Safari and Opera */
|
|
}
|
|
|
|
/* Toast slide-up animation */
|
|
@keyframes slide-up {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
.animate-slide-up {
|
|
animation: slide-up 0.3s cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
}
|
|
|
|
/* Performance optimizations for scrolling */
|
|
/* Apply CSS containment to grid items for better scroll performance */
|
|
[class*="grid"]>* {
|
|
content-visibility: auto;
|
|
contain-intrinsic-size: auto 400px;
|
|
contain: layout style paint;
|
|
}
|
|
|
|
/* Smooth video grid transitions */
|
|
[class*="grid"]>a {
|
|
animation: fadeInUp 0.2s ease-out;
|
|
}
|
|
|
|
@keyframes fadeInUp {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(8px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
/* Reduce paint complexity on scroll */
|
|
img {
|
|
content-visibility: auto;
|
|
}
|
|
|
|
/* Disable pointer events during scroll for better performance */
|
|
body.scrolling * {
|
|
pointer-events: none !important;
|
|
}
|
|
|
|
/* Force hardware acceleration for specific animated elements */
|
|
.group:hover img,
|
|
.glass-card,
|
|
nav {
|
|
transform: translateZ(0);
|
|
backface-visibility: hidden;
|
|
perspective: 1000px;
|
|
}
|
|
|
|
/* Optimize badge rendering */
|
|
[class*="badge"],
|
|
[class*="Badge"] {
|
|
contain: layout style;
|
|
}
|
|
|
|
/* ===========================================
|
|
SEARCH HISTORY DROPDOWN - LIQUID GLASS
|
|
=========================================== */
|
|
|
|
/* Search History Dropdown - Absolute positioning under search bar, Liquid Glass effect */
|
|
.search-history-dropdown {
|
|
/* Removed position: fixed - now using absolute from component */
|
|
max-height: 400px;
|
|
overflow-y: auto;
|
|
|
|
/* Liquid Glass effect - Core aesthetic */
|
|
background: var(--glass-bg);
|
|
backdrop-filter: blur(25px) saturate(180%);
|
|
-webkit-backdrop-filter: blur(25px) saturate(180%);
|
|
|
|
/* Rounded-2xl corners - Universal softness */
|
|
border-radius: var(--radius-2xl);
|
|
|
|
/* Depth and definition */
|
|
box-shadow: var(--shadow-md);
|
|
border: 1px solid var(--glass-border);
|
|
|
|
/* Content padding */
|
|
padding: 0.75rem;
|
|
|
|
/* Smooth appearance animation */
|
|
opacity: 0;
|
|
transform: translateY(-10px) scale(0.95);
|
|
animation: search-dropdown-appear 0.3s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
|
|
|
|
/* Transform origin for natural scaling */
|
|
transform-origin: top center;
|
|
|
|
/* Prevent text selection during interaction */
|
|
user-select: none;
|
|
-webkit-user-select: none;
|
|
}
|
|
|
|
@keyframes search-dropdown-appear {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(-10px) scale(0.95);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
}
|
|
|
|
/* Header section */
|
|
.search-history-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 0.5rem 0.75rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
/* Divider with glass effect subtlety */
|
|
.search-history-divider {
|
|
height: 1px;
|
|
width: 100%;
|
|
background: var(--glass-border);
|
|
margin: 0.5rem 0;
|
|
}
|
|
|
|
/* List container */
|
|
.search-history-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.25rem;
|
|
}
|
|
|
|
/* Individual history item */
|
|
.search-history-item {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
|
|
/* Universal rounded-2xl for container elements */
|
|
border-radius: var(--radius-2xl);
|
|
|
|
padding: 0.75rem 1rem;
|
|
cursor: pointer;
|
|
|
|
/* Fluid animation - Physics-based transitions */
|
|
transition: all var(--transition-fluid);
|
|
|
|
/* Subtle background for hover/highlight */
|
|
background: transparent;
|
|
}
|
|
|
|
/* Hover state - Light interaction */
|
|
.search-history-item:hover {
|
|
background: color-mix(in srgb, var(--accent-color) 10%, transparent);
|
|
transform: translateX(2px);
|
|
}
|
|
|
|
/* Highlighted state - Keyboard navigation */
|
|
.search-history-item.highlighted {
|
|
background: color-mix(in srgb, var(--accent-color) 15%, transparent);
|
|
transform: translateX(4px);
|
|
|
|
/* Subtle inner-glow effect - Lensing principle */
|
|
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-color) 30%, transparent);
|
|
}
|
|
|
|
/* Remove button */
|
|
.search-history-remove {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
|
|
/* Rounded-full for small circular elements */
|
|
width: 24px;
|
|
height: 24px;
|
|
border-radius: var(--radius-full);
|
|
|
|
background: transparent;
|
|
border: none;
|
|
color: var(--text-color-secondary);
|
|
|
|
cursor: pointer;
|
|
flex-shrink: 0;
|
|
|
|
/* Fluid animation */
|
|
transition: all 0.2s cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
|
|
/* Prevent triggering parent hover */
|
|
z-index: 1;
|
|
}
|
|
|
|
.search-history-remove:hover {
|
|
background: color-mix(in srgb, var(--text-color-secondary) 20%, transparent);
|
|
color: var(--text-color);
|
|
transform: scale(1.1);
|
|
}
|
|
|
|
.search-history-remove:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
/* Optimize scrolling performance */
|
|
.search-history-dropdown {
|
|
overflow-y: auto;
|
|
overscroll-behavior: contain;
|
|
-webkit-overflow-scrolling: touch;
|
|
}
|
|
|
|
/* Custom scrollbar for dropdown */
|
|
.search-history-dropdown::-webkit-scrollbar {
|
|
width: 6px;
|
|
}
|
|
|
|
.search-history-dropdown::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
.search-history-dropdown::-webkit-scrollbar-thumb {
|
|
background: color-mix(in srgb, var(--glass-bg) 80%, transparent);
|
|
border-radius: var(--radius-full);
|
|
}
|
|
|
|
.search-history-dropdown::-webkit-scrollbar-thumb:hover {
|
|
background: color-mix(in srgb, var(--accent-color) 50%, transparent);
|
|
}
|
|
|
|
/* Empty state styling */
|
|
.search-history-empty {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 2rem 1rem;
|
|
text-align: center;
|
|
}
|
|
|
|
/* Accessibility - Focus visible states */
|
|
.search-history-item:focus-visible {
|
|
outline: 2px solid var(--accent-color);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.search-history-remove:focus-visible {
|
|
outline: 2px solid var(--accent-color);
|
|
outline-offset: 1px;
|
|
border-radius: var(--radius-full);
|
|
}
|
|
|
|
/* Mobile optimizations */
|
|
@media (max-width: 640px) {
|
|
.search-history-dropdown {
|
|
/* Increase touch target sizes */
|
|
padding: 0.5rem;
|
|
}
|
|
|
|
.search-history-item {
|
|
padding: 1rem 0.75rem;
|
|
/* Larger minimum touch target */
|
|
min-height: 48px;
|
|
}
|
|
|
|
.search-history-remove {
|
|
width: 32px;
|
|
height: 32px;
|
|
}
|
|
}
|
|
|
|
/* Dark mode enhancements */
|
|
body.dark .search-history-dropdown,
|
|
.dark .search-history-dropdown {
|
|
/* Enhanced glass effect in dark mode */
|
|
backdrop-filter: blur(30px) saturate(200%);
|
|
-webkit-backdrop-filter: blur(30px) saturate(200%);
|
|
|
|
/* Stronger shadow for depth */
|
|
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
/* ===========================================
|
|
END SEARCH HISTORY DROPDOWN
|
|
=========================================== */ |