171 lines
4.4 KiB
CSS
171 lines
4.4 KiB
CSS
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=Sarabun:wght@300;400;500;600;700&display=swap');
|
|
|
|
:root {
|
|
--color-primary: #10b981; /* Emerald 500 */
|
|
--color-primary-dark: #059669; /* Emerald 600 */
|
|
--color-secondary: #06b6d4; /* Cyan 500 */
|
|
--color-accent: #f59e0b; /* Amber 500 */
|
|
--color-danger: #ef4444; /* Red 500 */
|
|
--color-success: #10b981; /* Emerald 500 */
|
|
|
|
--bg-gradient-light: linear-gradient(135deg, #ecfdf5 0%, #f0fdf4 50%, #e0f2fe 100%);
|
|
--bg-gradient-dark: linear-gradient(135deg, #0f172a 0%, #064e3b 50%, #0c4a6e 100%);
|
|
|
|
--glass-bg-light: rgba(255, 255, 255, 0.75);
|
|
--glass-border-light: rgba(255, 255, 255, 0.6);
|
|
--glass-shadow-light: 0 10px 30px -10px rgba(16, 185, 129, 0.15);
|
|
|
|
--glass-bg-dark: rgba(15, 23, 42, 0.75);
|
|
--glass-border-dark: rgba(255, 255, 255, 0.12);
|
|
--glass-shadow-dark: 0 10px 30px -10px rgba(0, 0, 0, 0.5);
|
|
|
|
--font-main: 'Sarabun', 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif;
|
|
--transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
|
|
[x-cloak] {
|
|
display: none !important;
|
|
}
|
|
|
|
body {
|
|
font-family: var(--font-main);
|
|
margin: 0;
|
|
padding: 0;
|
|
min-height: 100vh;
|
|
transition: background 0.5s ease, color 0.5s ease;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
/* Light Theme */
|
|
body.theme-light {
|
|
background: var(--bg-gradient-light);
|
|
color: #1e293b;
|
|
}
|
|
body.theme-light .glass-card,
|
|
body.theme-light .glass-nav,
|
|
body.theme-light .glass-modal {
|
|
background: var(--glass-bg-light);
|
|
backdrop-filter: blur(16px) saturate(180%);
|
|
-webkit-backdrop-filter: blur(16px) saturate(180%);
|
|
border: 1px solid var(--glass-border-light);
|
|
box-shadow: var(--glass-shadow-light);
|
|
}
|
|
body.theme-light .text-subtle {
|
|
color: #64748b;
|
|
}
|
|
|
|
/* Dark Theme */
|
|
body.theme-dark {
|
|
background: var(--bg-gradient-dark);
|
|
color: #f8fafc;
|
|
}
|
|
body.theme-dark .glass-card,
|
|
body.theme-dark .glass-nav,
|
|
body.theme-dark .glass-modal {
|
|
background: var(--glass-bg-dark);
|
|
backdrop-filter: blur(16px) saturate(180%);
|
|
-webkit-backdrop-filter: blur(16px) saturate(180%);
|
|
border: 1px solid var(--glass-border-dark);
|
|
box-shadow: var(--glass-shadow-dark);
|
|
}
|
|
body.theme-dark .text-subtle {
|
|
color: #94a3b8;
|
|
}
|
|
|
|
/* Glassmorphism Interactive Elements */
|
|
.glass-btn-primary {
|
|
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
|
|
color: white;
|
|
border: none;
|
|
font-weight: 600;
|
|
padding: 0.625rem 1.25rem;
|
|
border-radius: 0.75rem;
|
|
box-shadow: 0 4px 14px 0 rgba(16, 185, 129, 0.39);
|
|
transition: var(--transition-smooth);
|
|
cursor: pointer;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 0.5rem;
|
|
}
|
|
.glass-btn-primary:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 6px 20px rgba(16, 185, 129, 0.55);
|
|
}
|
|
.glass-btn-primary:active {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.glass-input {
|
|
width: 100%;
|
|
padding: 0.75rem 1rem;
|
|
border-radius: 0.75rem;
|
|
transition: var(--transition-smooth);
|
|
font-size: 0.95rem;
|
|
}
|
|
body.theme-light .glass-input {
|
|
background: rgba(255, 255, 255, 0.8);
|
|
border: 1px solid #cbd5e1;
|
|
color: #0f172a;
|
|
}
|
|
body.theme-dark .glass-input {
|
|
background: rgba(30, 41, 59, 0.7);
|
|
border: 1px solid #334155;
|
|
color: #f8fafc;
|
|
}
|
|
.glass-input:focus {
|
|
outline: none;
|
|
border-color: var(--color-primary);
|
|
box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.25);
|
|
}
|
|
|
|
/* Animations & Micro-Interactions */
|
|
@keyframes pulse-glow {
|
|
0%, 100% { box-shadow: 0 0 15px rgba(16, 185, 129, 0.4); }
|
|
50% { box-shadow: 0 0 25px rgba(6, 182, 212, 0.7); }
|
|
}
|
|
|
|
@keyframes slide-up {
|
|
from { opacity: 0; transform: translateY(15px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
@keyframes float {
|
|
0%, 100% { transform: translateY(0px); }
|
|
50% { transform: translateY(-6px); }
|
|
}
|
|
|
|
.animate-slide-up {
|
|
animation: slide-up 0.4s ease-out forwards;
|
|
}
|
|
|
|
.animate-float {
|
|
animation: float 4s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-pulse-glow {
|
|
animation: pulse-glow 3s infinite;
|
|
}
|
|
|
|
/* Custom Scrollbar */
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
::-webkit-scrollbar-thumb {
|
|
background: rgba(148, 163, 184, 0.4);
|
|
border-radius: 4px;
|
|
}
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: var(--color-primary);
|
|
}
|
|
|
|
/* Accessibility WCAG 2.1 Focus Rings */
|
|
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
|
|
outline: 2px solid var(--color-primary) !important;
|
|
outline-offset: 2px !important;
|
|
}
|