Files
2026-09-16 23:20:08 +07:00

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;
}