@import "tailwindcss";
html,
body {
background: linear-gradient(135deg, var(--gradient-start) 0%, var(--gradient-end) 100%);
background-attachment: fixed;
overscroll-behavior-y: none;
}
:root,
[data-theme="light"] {
--gradient-start: #667eea;
--gradient-end: #764ba2;
--glass-bg: rgba(255, 255, 255, 0.8);
--text-primary: #1f2937;
--text-secondary: #6b7280;
--category-from: #8b5cf6;
--category-to: #3b82f6;
--btn-primary-from: #8b5cf6;
--btn-primary-to: #6366f1;
--btn-success-from: #22c55e;
--btn-success-to: #16a34a;
--btn-danger-from: #ef4444;
--btn-danger-to: #ec4899;
--card-bg: rgba(255, 255, 255, 0.8);
}
[data-theme="dark"] {
--gradient-start: #000000;
--gradient-end: #000000;
--glass-bg: rgba(17, 17, 17, 0.95);
--text-primary: #f9fafb;
--text-secondary: #d1d5db;
--category-from: #6366f1;
--category-to: #8b5cf6;
--btn-primary-from: #6366f1;
--btn-primary-to: #8b5cf6;
--btn-success-from: #059669;
--btn-success-to: #10b981;
--btn-danger-from: #dc2626;
--btn-danger-to: #be185d;
--card-bg: rgba(31, 31, 31, 0.9);
}
[data-theme="sunset"] {
--gradient-start: #f97316;
--gradient-end: #ec4899;
--glass-bg: rgba(255, 255, 255, 0.85);
--text-primary: #1f2937;
--text-secondary: #6b7280;
--category-from: #f97316;
--category-to: #ec4899;
--btn-primary-from: #f97316;
--btn-primary-to: #ea580c;
--btn-success-from: #22c55e;
--btn-success-to: #16a34a;
--btn-danger-from: #ef4444;
--btn-danger-to: #dc2626;
--card-bg: rgba(255, 255, 255, 0.85);
}
[data-theme="ocean"] {
--gradient-start: #3b82f6;
--gradient-end: #06b6d4;
--glass-bg: rgba(255, 255, 255, 0.85);
--text-primary: #1f2937;
--text-secondary: #6b7280;
--category-from: #3b82f6;
--category-to: #06b6d4;
--btn-primary-from: #3b82f6;
--btn-primary-to: #2563eb;
--btn-success-from: #22c55e;
--btn-success-to: #16a34a;
--btn-danger-from: #ef4444;
--btn-danger-to: #dc2626;
--card-bg: rgba(255, 255, 255, 0.85);
}
[data-theme="forest"] {
--gradient-start: #22c55e;
--gradient-end: #14b8a6;
--glass-bg: rgba(255, 255, 255, 0.85);
--text-primary: #1f2937;
--text-secondary: #6b7280;
--category-from: #22c55e;
--category-to: #14b8a6;
--btn-primary-from: #22c55e;
--btn-primary-to: #16a34a;
--btn-success-from: #22c55e;
--btn-success-to: #16a34a;
--btn-danger-from: #ef4444;
--btn-danger-to: #dc2626;
--card-bg: rgba(255, 255, 255, 0.85);
}
[data-theme="purple"] {
--gradient-start: #8b5cf6;
--gradient-end: #ec4899;
--glass-bg: rgba(255, 255, 255, 0.85);
--text-primary: #1f2937;
--text-secondary: #6b7280;
--category-from: #8b5cf6;
--category-to: #ec4899;
--btn-primary-from: #8b5cf6;
--btn-primary-to: #7c3aed;
--btn-success-from: #22c55e;
--btn-success-to: #16a34a;
--btn-danger-from: #ef4444;
--btn-danger-to: #dc2626;
--card-bg: rgba(255, 255, 255, 0.85);
}
.gradient-bg {
background: linear-gradient(135deg, var(--gradient-start) 0%, var(--gradient-end) 100%);
}
.gradient-bg-light {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
}
.card-hover {
transition: all 0.3s;
}
.card-hover:hover {
box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
transform: translateY(-0.25rem);
}
.glass-effect {
background: var(--glass-bg);
backdrop-filter: blur(12px);
}
.category-icon {
background: linear-gradient(135deg, var(--category-from) 0%, var(--category-to) 100%);
}
.btn-primary {
background: linear-gradient(135deg, var(--btn-primary-from) 0%, var(--btn-primary-to) 100%);
}
.btn-success {
background: linear-gradient(135deg, var(--btn-success-from) 0%, var(--btn-success-to) 100%);
}
.btn-danger {
background: linear-gradient(135deg, var(--btn-danger-from) 0%, var(--btn-danger-to) 100%);
}
[data-theme="dark"] .glass-effect {
color: var(--text-primary);
}
[data-theme="dark"] .text-gray-800,
[data-theme="dark"] .text-gray-900 {
color: var(--text-primary);
}
[data-theme="dark"] .text-gray-600,
[data-theme="dark"] .text-gray-500 {
color: var(--text-secondary);
}
[data-theme="dark"] .bg-gray-100,
[data-theme="dark"] .bg-gray-50 {
background-color: rgba(55, 55, 55, 0.5);
}
[data-theme="dark"] .bg-gray-200 {
background-color: rgba(75, 75, 75, 0.5);
}
[data-theme="dark"] .border-gray-200,
[data-theme="dark"] .border-gray-300 {
border-color: rgba(75, 75, 75, 0.8);
}
[data-theme="dark"] input,
[data-theme="dark"] textarea {
background-color: rgba(40, 40, 40, 0.9);
color: var(--text-primary);
border-color: rgba(75, 75, 75, 0.8);
}
[data-theme="dark"] input::placeholder,
[data-theme="dark"] textarea::placeholder {
color: var(--text-secondary);
}
.member-current {
background-color: rgb(243, 232, 255);
border-color: rgb(216, 180, 254);
}
[data-theme="dark"] .member-current {
background-color: rgba(139, 92, 246, 0.2);
border-color: rgba(139, 92, 246, 0.5);
}
.shopping-purchased {
background-color: rgb(240, 253, 244);
border-color: rgb(187, 247, 208);
}
[data-theme="dark"] .shopping-purchased {
background-color: rgba(34, 197, 94, 0.15);
border-color: rgba(34, 197, 94, 0.4);
}
.expense-history-item {
background-color: rgb(255, 255, 255);
border-color: rgb(229, 231, 235);
}
[data-theme="dark"] .expense-history-item {
background-color: rgba(55, 55, 55, 0.6);
border-color: rgba(75, 75, 75, 0.8);
}
.expense-description {
background-color: rgb(249, 250, 251);
}
[data-theme="dark"] .expense-description {
background-color: rgba(40, 40, 40, 0.8);
}
.animate-fadeIn {
animation: fadeIn 0.2s ease-in-out;
}
.animate-scaleIn {
animation: scaleIn 0.2s ease-in-out;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.95);
}
to {
opacity: 1;
transform: scale(1);
}
}