239 lines
6.2 KiB
CSS
239 lines
6.2 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@layer base {
|
|
:root {
|
|
--foreground-rgb: 0, 0, 0;
|
|
--background-start-rgb: 255, 255, 255;
|
|
--background-end-rgb: 255, 255, 255;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--foreground-rgb: 255, 255, 255;
|
|
--background-start-rgb: 15, 23, 42;
|
|
--background-end-rgb: 15, 23, 42;
|
|
}
|
|
}
|
|
|
|
body {
|
|
color: rgb(var(--foreground-rgb));
|
|
background: linear-gradient(
|
|
to bottom,
|
|
transparent,
|
|
rgb(var(--background-end-rgb))
|
|
)
|
|
rgb(var(--background-start-rgb));
|
|
}
|
|
}
|
|
|
|
@layer components {
|
|
/* Modern Button Styles */
|
|
.btn-primary {
|
|
@apply inline-flex items-center justify-center gap-2 px-6 py-3 rounded-lg font-semibold bg-gradient-to-r from-primary to-primary-dark text-white shadow-md transition-all duration-300 hover:shadow-lg hover:-translate-y-0.5 active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed border border-primary-dark/20;
|
|
}
|
|
|
|
.btn-secondary {
|
|
@apply inline-flex items-center justify-center gap-2 px-6 py-3 rounded-lg font-semibold bg-gradient-to-r from-secondary to-secondary-dark text-white shadow-md transition-all duration-300 hover:shadow-lg hover:-translate-y-0.5 active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed border border-secondary-dark/20;
|
|
}
|
|
|
|
.btn-outline {
|
|
@apply inline-flex items-center justify-center gap-2 px-6 py-3 rounded-lg font-semibold border-2 border-primary text-primary bg-white dark:bg-slate-800 transition-all duration-300 hover:bg-primary/5 dark:hover:bg-primary/10 active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed;
|
|
}
|
|
|
|
.btn-ghost {
|
|
@apply inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg font-medium text-gray-700 dark:text-gray-300 transition-all duration-300 hover:bg-gray-100 dark:hover:bg-slate-700 active:scale-95 hover:-translate-y-0.5;
|
|
}
|
|
|
|
.btn-danger {
|
|
@apply inline-flex items-center justify-center gap-2 px-6 py-3 rounded-lg font-semibold bg-gradient-to-r from-danger to-danger-dark text-white shadow-md transition-all duration-300 hover:shadow-lg hover:-translate-y-0.5 active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed border border-danger-dark/20;
|
|
}
|
|
|
|
.btn-sm {
|
|
@apply px-4 py-2 text-sm;
|
|
}
|
|
|
|
.btn-lg {
|
|
@apply px-8 py-4 text-lg;
|
|
}
|
|
|
|
/* Modern Input Styles */
|
|
.input-field {
|
|
@apply w-full px-4 py-3 border border-gray-300 dark:border-slate-600 rounded-lg bg-white dark:bg-slate-800 text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:border-primary focus:ring-2 focus:ring-primary/30 transition-all duration-300 outline-none shadow-sm;
|
|
}
|
|
|
|
.input-error {
|
|
@apply border-danger focus:border-danger focus:ring-danger/30;
|
|
}
|
|
|
|
/* Modern Card Styles */
|
|
.card {
|
|
@apply bg-white dark:bg-slate-800 rounded-xl shadow-sm border border-gray-200 dark:border-slate-700 transition-all duration-300 overflow-hidden;
|
|
}
|
|
|
|
.card:hover {
|
|
@apply shadow-md border-gray-300 dark:border-slate-600;
|
|
}
|
|
|
|
.card-hover {
|
|
@apply hover:shadow-elevation-2 hover:-translate-y-1 cursor-pointer;
|
|
}
|
|
|
|
/* Section Container */
|
|
.section-container {
|
|
@apply py-16 md:py-20 lg:py-28;
|
|
}
|
|
|
|
/* Badge Styles */
|
|
.badge {
|
|
@apply inline-flex items-center gap-2 px-3 py-1.5 rounded-full text-xs font-semibold bg-primary/10 text-primary dark:bg-primary/20;
|
|
}
|
|
|
|
.badge-success {
|
|
@apply bg-success/10 text-success dark:bg-success/20;
|
|
}
|
|
|
|
.badge-danger {
|
|
@apply bg-danger/10 text-danger dark:bg-danger/20;
|
|
}
|
|
|
|
.badge-warning {
|
|
@apply bg-warning/10 text-warning dark:bg-warning/20;
|
|
}
|
|
|
|
/* Animation Classes */
|
|
.hover-lift {
|
|
@apply transition-transform duration-300 hover:-translate-y-1;
|
|
}
|
|
|
|
.animate-float {
|
|
animation: float 6s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-slideDown {
|
|
animation: slideDown 0.8s ease-out;
|
|
}
|
|
|
|
.animate-slideUp {
|
|
animation: slideUp 0.8s ease-out;
|
|
}
|
|
|
|
.animate-fadeIn {
|
|
animation: fadeIn 0.6s ease-out;
|
|
}
|
|
|
|
.animate-pulse-soft {
|
|
animation: pulseSoft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
}
|
|
|
|
/* Modern Modal Styles */
|
|
.modal-overlay {
|
|
@apply fixed inset-0 z-[9999] flex items-center justify-center bg-black/40 backdrop-blur-sm transition-opacity duration-300;
|
|
}
|
|
|
|
.modal-content {
|
|
@apply relative z-10 w-full max-w-3xl max-h-[90vh] overflow-y-auto bg-white dark:bg-slate-800 rounded-xl shadow-2xl;
|
|
}
|
|
|
|
.modal-header {
|
|
@apply flex items-center justify-between px-6 py-4 bg-gradient-to-r from-primary/5 to-secondary/5 dark:from-primary/10 dark:to-secondary/10 border-b border-gray-200 dark:border-slate-700;
|
|
}
|
|
|
|
.modal-title {
|
|
@apply text-xl font-bold text-gray-900 dark:text-white;
|
|
}
|
|
|
|
.modal-close-btn {
|
|
@apply inline-flex items-center justify-center w-8 h-8 rounded-lg text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-slate-700 transition-all duration-200 hover:text-gray-700 dark:hover:text-gray-200;
|
|
}
|
|
|
|
.modal-body {
|
|
@apply px-6 py-6 space-y-4;
|
|
}
|
|
|
|
.modal-footer {
|
|
@apply px-6 py-4 bg-gray-50 dark:bg-slate-700/50 border-t border-gray-200 dark:border-slate-700 flex gap-3 justify-end;
|
|
}
|
|
|
|
/* Form input improvements */
|
|
.input {
|
|
@apply input-field;
|
|
}
|
|
|
|
.input-with-icon {
|
|
@apply relative;
|
|
}
|
|
|
|
.input-icon {
|
|
@apply absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 dark:text-gray-500 text-lg;
|
|
}
|
|
}
|
|
|
|
@keyframes float {
|
|
0%, 100% {
|
|
transform: translateY(0);
|
|
}
|
|
50% {
|
|
transform: translateY(-20px);
|
|
}
|
|
}
|
|
|
|
@keyframes slideDown {
|
|
0% {
|
|
opacity: 0;
|
|
transform: translateY(-20px);
|
|
}
|
|
100% {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes slideUp {
|
|
0% {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
100% {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
0% {
|
|
opacity: 0;
|
|
}
|
|
100% {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes pulseSoft {
|
|
0%, 100% {
|
|
opacity: 1;
|
|
}
|
|
50% {
|
|
opacity: 0.7;
|
|
}
|
|
}
|
|
|
|
/* Scrollbar Styles */
|
|
::-webkit-scrollbar {
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
@apply bg-gray-100 dark:bg-slate-900;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
@apply bg-gray-400 dark:bg-slate-600 rounded-full;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
@apply bg-gray-500 dark:bg-slate-500;
|
|
}
|