Files
Church-Music/new-site/frontend/src/index.css

194 lines
4.3 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
/* Base Styles */
:root {
--color-primary: #3b82f6;
--color-primary-dark: #2563eb;
--color-glass-white: rgba(255, 255, 255, 0.1);
--color-glass-dark: rgba(0, 0, 0, 0.1);
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0f172a 100%);
min-height: 100vh;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
transition: background 0.3s ease;
/* Mobile optimization */
-webkit-tap-highlight-color: transparent;
-webkit-touch-callout: none;
overscroll-behavior-y: none;
}
/* Light mode */
html:not(.dark) body {
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #f1f5f9 100%);
}
/* Dark mode */
html.dark body {
background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0f172a 100%);
}
/* Custom Scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.1);
border-radius: 4px;
}
::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.3);
border-radius: 4px;
transition: background 0.2s ease;
}
::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.5);
}
/* Glassmorphism Utilities */
@layer utilities {
.glass {
@apply bg-white/10 backdrop-blur-md border border-white/20 shadow-glass;
}
.glass-dark {
@apply bg-black/10 backdrop-blur-md border border-black/10 shadow-glass;
}
.glass-card {
@apply bg-white/90 backdrop-blur-lg border border-white/50 shadow-soft rounded-2xl;
}
.glass-nav {
@apply bg-white/80 backdrop-blur-xl border-b border-white/30 shadow-soft;
}
.btn-primary {
@apply px-6 py-2.5 bg-primary-600 text-white rounded-xl font-medium
hover:bg-primary-700 active:scale-[0.98] transition-all duration-200
shadow-soft hover:shadow-soft-lg;
}
.btn-secondary {
@apply px-6 py-2.5 bg-white/20 backdrop-blur-sm text-white rounded-xl font-medium
border border-white/30 hover:bg-white/30 active:scale-[0.98]
transition-all duration-200;
}
.btn-ghost {
@apply px-4 py-2 text-gray-600 hover:bg-gray-100 rounded-xl font-medium
transition-all duration-200;
}
.input-glass {
@apply w-full px-4 py-3 bg-white/80 backdrop-blur-sm border border-gray-200
rounded-xl focus:outline-none focus:ring-2 focus:ring-primary-500/50
focus:border-primary-500 transition-all duration-200 placeholder:text-gray-400;
}
.card-hover {
@apply transition-all duration-300 hover:shadow-soft-lg hover:-translate-y-1;
}
}
/* Page Transitions */
.page-enter {
opacity: 0;
transform: translateY(10px);
}
.page-enter-active {
opacity: 1;
transform: translateY(0);
transition: opacity 0.3s ease-out, transform 0.3s ease-out;
}
.page-exit {
opacity: 1;
transform: translateY(0);
}
.page-exit-active {
opacity: 0;
transform: translateY(-10px);
transition: opacity 0.2s ease-in, transform 0.2s ease-in;
}
/* Selection */
::selection {
background-color: rgba(59, 130, 246, 0.3);
color: inherit;
}
/* Focus Visible */
:focus-visible {
outline: 2px solid #3b82f6;
outline-offset: 2px;
}
/* Prevent text selection on drag */
.no-select {
user-select: none;
-webkit-user-select: none;
}
/* Mobile Touch Optimization */
@media (max-width: 768px) {
/* Larger touch targets */
button:not(.no-touch-target),
a:not(.no-touch-target),
input[type="checkbox"],
input[type="radio"] {
min-height: 44px;
}
/* Better spacing for mobile */
body {
font-size: 16px; /* Prevents iOS zoom on focus */
}
input, textarea, select {
font-size: 16px; /* Prevents iOS zoom */
}
/* Smooth scrolling on mobile */
* {
-webkit-overflow-scrolling: touch;
}
}
/* iPhone X and later (notch support) */
@supports (padding: max(0px)) {
body {
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
}
}
/* Tablet and Desktop refinements */
@media (min-width: 768px) and (max-width: 1024px) {
/* iPad specific adjustments */
.container {
padding-left: 2rem;
padding-right: 2rem;
}
}