@tailwind base; @tailwind components; @tailwind utilities; @layer base { * { @apply border-border; } html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { @apply bg-background text-foreground; font-feature-settings: "rlig" 1, "calt" 1, "ss01" 1; } ::selection { @apply bg-accent/20 text-foreground; } } @layer components { /* Display typography */ .font-display { font-family: var(--font-display), Georgia, serif; font-weight: 400; } /* Elegant input field */ .input-elegant { @apply w-full px-5 py-4 bg-background-secondary border border-border rounded-2xl text-foreground placeholder:text-foreground-subtle focus:outline-none focus:border-border-hover; transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1); } .input-elegant:focus { box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.1), 0 0 40px -10px rgba(16, 185, 129, 0.15); } /* Primary button with glow */ .btn-primary { @apply px-6 py-3 bg-accent text-background font-medium rounded-xl disabled:opacity-50 disabled:cursor-not-allowed; transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); } .btn-primary:not(:disabled):hover { @apply bg-accent-hover; box-shadow: 0 0 40px -8px rgba(16, 185, 129, 0.4); transform: translateY(-1px); } .btn-primary:not(:disabled):active { transform: translateY(0) scale(0.98); } /* Secondary button */ .btn-secondary { @apply px-6 py-3 bg-background-tertiary text-foreground font-medium rounded-xl border border-border disabled:opacity-50 disabled:cursor-not-allowed; transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); } .btn-secondary:not(:disabled):hover { @apply border-border-hover bg-background-elevated; transform: translateY(-1px); } /* Card styles */ .card { @apply bg-background-secondary border border-border rounded-3xl p-8; transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1); } .card-hover:hover { @apply border-border-hover; transform: translateY(-2px); box-shadow: 0 20px 40px -20px rgba(0, 0, 0, 0.5); } .card-glow { @apply card; box-shadow: 0 0 80px -20px rgba(16, 185, 129, 0.15); } /* Status badges */ .status-available { @apply text-accent bg-accent-muted; } .status-taken { @apply text-foreground-muted bg-background-tertiary; } /* Label style */ .label { font-size: 0.6875rem; line-height: 1.3; letter-spacing: 0.08em; font-weight: 500; text-transform: uppercase; @apply text-foreground-subtle; } /* Divider */ .divider { @apply h-px bg-gradient-to-r from-transparent via-border-hover to-transparent; } /* Glow effect utilities */ .glow-accent { box-shadow: 0 0 100px -30px rgba(16, 185, 129, 0.3); } .glow-accent-strong { box-shadow: 0 0 120px -20px rgba(16, 185, 129, 0.4); } } /* Custom scrollbar */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { @apply bg-transparent; } ::-webkit-scrollbar-thumb { @apply bg-border rounded-full; } ::-webkit-scrollbar-thumb:hover { @apply bg-border-hover; } /* Hide scrollbar utility */ .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } .scrollbar-hide::-webkit-scrollbar { display: none; } /* Smooth scrolling for touch devices */ .scroll-smooth { scroll-behavior: smooth; -webkit-overflow-scrolling: touch; } /* Prevent text selection on interactive elements */ .select-none { -webkit-user-select: none; user-select: none; } /* Touch action for horizontal scrolling */ .touch-pan-x { touch-action: pan-x; } /* Animation delays */ .delay-100 { animation-delay: 100ms; } .delay-150 { animation-delay: 150ms; } .delay-200 { animation-delay: 200ms; } .delay-250 { animation-delay: 250ms; } .delay-300 { animation-delay: 300ms; } .delay-400 { animation-delay: 400ms; } .delay-500 { animation-delay: 500ms; } /* Mobile tap highlight removal */ @media (max-width: 640px) { button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; } }