291 lines
6.6 KiB
CSS
291 lines
6.6 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
/* Base layer overrides */
|
|
@layer base {
|
|
html {
|
|
@apply scroll-smooth;
|
|
}
|
|
|
|
body {
|
|
@apply bg-gradient-light min-h-screen antialiased;
|
|
font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
|
}
|
|
|
|
/* Typography defaults */
|
|
h1 {
|
|
@apply text-4xl font-bold text-gray-800;
|
|
}
|
|
|
|
h2 {
|
|
@apply text-3xl font-bold text-gray-800;
|
|
}
|
|
|
|
h3 {
|
|
@apply text-2xl font-semibold text-gray-700;
|
|
}
|
|
|
|
h4 {
|
|
@apply text-xl font-semibold text-gray-700;
|
|
}
|
|
|
|
p {
|
|
@apply text-gray-600;
|
|
}
|
|
}
|
|
|
|
/* Component layer */
|
|
@layer components {
|
|
/* Bright Glass Card Variants */
|
|
.glass-card-bright {
|
|
@apply glass rounded-glass p-6 transition-all duration-300;
|
|
}
|
|
|
|
.glass-card-ultra {
|
|
@apply glass-ultra rounded-glass p-6 transition-all duration-300;
|
|
}
|
|
|
|
.glass-card-monaco {
|
|
@apply glass-monaco rounded-glass p-6 transition-all duration-300;
|
|
}
|
|
|
|
/* Glass Stat Card */
|
|
.glass-stat-card {
|
|
@apply glass-light rounded-glass p-6 hover:glass-ultra transition-all duration-300 hover:-translate-y-1 hover:shadow-glass-lg;
|
|
}
|
|
|
|
.glass-stat-icon {
|
|
@apply w-12 h-12 rounded-xl bg-glass-monaco-soft flex items-center justify-center mb-4;
|
|
}
|
|
|
|
.glass-stat-value {
|
|
@apply text-3xl font-bold text-gray-800 mb-1;
|
|
}
|
|
|
|
.glass-stat-label {
|
|
@apply text-sm text-gray-600 uppercase tracking-wide;
|
|
}
|
|
|
|
/* Glass Dues Card */
|
|
.glass-dues-card {
|
|
@apply glass rounded-glass p-4 hover:shadow-glass-lg transition-all duration-300;
|
|
}
|
|
|
|
.glass-dues-header {
|
|
@apply flex items-center justify-between mb-3;
|
|
}
|
|
|
|
.glass-dues-avatar {
|
|
@apply w-10 h-10 rounded-full ring-2 ring-white/60;
|
|
}
|
|
|
|
.glass-dues-name {
|
|
@apply font-semibold text-gray-800;
|
|
}
|
|
|
|
.glass-dues-amount {
|
|
@apply text-lg font-bold text-monaco-600;
|
|
}
|
|
|
|
.glass-dues-status {
|
|
@apply px-3 py-1 rounded-full text-xs font-medium;
|
|
}
|
|
|
|
.glass-dues-status-overdue {
|
|
@apply bg-red-100 text-red-700;
|
|
}
|
|
|
|
.glass-dues-status-upcoming {
|
|
@apply bg-amber-100 text-amber-700;
|
|
}
|
|
|
|
/* Glass Button Variants */
|
|
.btn-glass {
|
|
@apply glass-button px-6 py-2.5 rounded-xl font-medium text-gray-700 hover:text-monaco-600;
|
|
}
|
|
|
|
.btn-glass-primary {
|
|
@apply bg-gradient-monaco text-white px-6 py-2.5 rounded-xl font-medium shadow-monaco-sm hover:shadow-monaco transition-all duration-300 hover:-translate-y-0.5;
|
|
}
|
|
|
|
.btn-glass-secondary {
|
|
@apply glass px-6 py-2.5 rounded-xl font-medium text-monaco-600 border-monaco-200 hover:bg-glass-monaco-soft;
|
|
}
|
|
|
|
.btn-glass-ghost {
|
|
@apply bg-transparent border-2 border-monaco-600 text-monaco-600 px-6 py-2.5 rounded-xl font-medium hover:bg-glass-monaco-soft transition-all duration-300;
|
|
}
|
|
|
|
/* Glass Navigation Items */
|
|
.nav-item-glass {
|
|
@apply flex items-center gap-3 px-4 py-3 rounded-xl transition-all duration-200 text-gray-700 hover:bg-glass-monaco-soft hover:text-monaco-600 hover:translate-x-0.5;
|
|
}
|
|
|
|
.nav-item-glass-active {
|
|
@apply flex items-center gap-3 px-4 py-3 rounded-xl bg-glass-monaco text-monaco-600 font-medium relative;
|
|
}
|
|
|
|
.nav-item-indicator {
|
|
@apply absolute left-0 top-1/2 -translate-y-1/2 w-1 h-8 bg-gradient-monaco rounded-r-full;
|
|
}
|
|
|
|
/* Glass Input Fields */
|
|
.input-glass {
|
|
@apply glass-input px-4 py-3 rounded-xl w-full;
|
|
}
|
|
|
|
.select-glass {
|
|
@apply glass-input px-4 py-3 rounded-xl w-full appearance-none cursor-pointer;
|
|
}
|
|
|
|
.textarea-glass {
|
|
@apply glass-input px-4 py-3 rounded-xl w-full resize-none;
|
|
}
|
|
|
|
/* Glass Table */
|
|
.table-glass {
|
|
@apply glass-ultra rounded-glass overflow-hidden;
|
|
}
|
|
|
|
.table-glass thead {
|
|
@apply bg-glass-monaco-soft border-b border-white/40;
|
|
}
|
|
|
|
.table-glass th {
|
|
@apply px-6 py-4 text-left text-sm font-semibold text-gray-700 uppercase tracking-wider;
|
|
}
|
|
|
|
.table-glass td {
|
|
@apply px-6 py-4 text-gray-600;
|
|
}
|
|
|
|
.table-glass tbody tr {
|
|
@apply border-b border-white/20 hover:bg-glass-monaco-soft transition-colors duration-150;
|
|
}
|
|
|
|
/* Glass Modal/Dialog */
|
|
.modal-glass {
|
|
@apply glass-ultra rounded-glass shadow-2xl;
|
|
}
|
|
|
|
.modal-glass-header {
|
|
@apply px-6 py-4 border-b border-white/40 bg-gradient-glass;
|
|
}
|
|
|
|
.modal-glass-body {
|
|
@apply px-6 py-4;
|
|
}
|
|
|
|
.modal-glass-footer {
|
|
@apply px-6 py-4 border-t border-white/40 bg-glass-monaco-soft flex justify-end gap-3;
|
|
}
|
|
|
|
/* Glass Badge */
|
|
.badge-glass {
|
|
@apply inline-flex items-center px-3 py-1 rounded-full text-xs font-medium bg-glass border border-white/60;
|
|
}
|
|
|
|
.badge-glass-monaco {
|
|
@apply inline-flex items-center px-3 py-1 rounded-full text-xs font-medium bg-glass-monaco text-monaco-700 border-monaco-200;
|
|
}
|
|
|
|
/* Glass Alert */
|
|
.alert-glass {
|
|
@apply glass-light rounded-glass p-4 border-l-4;
|
|
}
|
|
|
|
.alert-glass-success {
|
|
@apply alert-glass border-green-500 text-green-800;
|
|
}
|
|
|
|
.alert-glass-warning {
|
|
@apply alert-glass border-amber-500 text-amber-800;
|
|
}
|
|
|
|
.alert-glass-error {
|
|
@apply alert-glass border-red-500 text-red-800;
|
|
}
|
|
|
|
.alert-glass-info {
|
|
@apply alert-glass border-blue-500 text-blue-800;
|
|
}
|
|
}
|
|
|
|
/* Utility layer */
|
|
@layer utilities {
|
|
/* Text gradient utilities */
|
|
.text-gradient-monaco {
|
|
@apply bg-gradient-monaco bg-clip-text text-transparent;
|
|
}
|
|
|
|
/* Hover lift effect */
|
|
.hover-lift {
|
|
@apply transition-transform duration-300 hover:-translate-y-1;
|
|
}
|
|
|
|
/* Hover scale effect */
|
|
.hover-scale {
|
|
@apply transition-transform duration-300 hover:scale-105;
|
|
}
|
|
|
|
/* Focus ring Monaco */
|
|
.focus-monaco {
|
|
@apply focus:ring-2 focus:ring-monaco-400 focus:ring-offset-2 focus:outline-none;
|
|
}
|
|
|
|
/* Loading skeleton */
|
|
.skeleton {
|
|
@apply animate-pulse bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 rounded-lg;
|
|
}
|
|
}
|
|
|
|
/* Custom animations */
|
|
@keyframes float {
|
|
0%, 100% {
|
|
transform: translateY(0);
|
|
}
|
|
50% {
|
|
transform: translateY(-10px);
|
|
}
|
|
}
|
|
|
|
@keyframes shimmer {
|
|
0% {
|
|
background-position: -1000px 0;
|
|
}
|
|
100% {
|
|
background-position: 1000px 0;
|
|
}
|
|
}
|
|
|
|
/* Glass morphism scrollbar */
|
|
::-webkit-scrollbar {
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: rgba(0, 0, 0, 0.05);
|
|
border-radius: 9999px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
|
|
border-radius: 9999px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: linear-gradient(135deg, #b91c1c 0%, #991b1b 100%);
|
|
}
|
|
|
|
/* Reduced motion preferences */
|
|
@media (prefers-reduced-motion: reduce) {
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
animation-duration: 0.01ms !important;
|
|
animation-iteration-count: 1 !important;
|
|
transition-duration: 0.01ms !important;
|
|
}
|
|
} |