@import "tailwindcss"; @import "@fontsource/geist/400.css"; @import "@fontsource/geist/500.css"; @import "@fontsource/geist/600.css"; @import "@fontsource/geist/700.css"; @custom-variant dark (&:is(.dark *)); /* Liner Style Design System - Minimal, Clean, Refined */ :root { /* Colors - Light Mode - Soft & Clean */ --background: 0 0% 99%; --foreground: 220 10% 15%; --card: 0 0% 100%; --card-foreground: 220 10% 15%; --popover: 0 0% 100%; --popover-foreground: 220 10% 15%; /* Primary - Subtle Blue */ --primary: 217 91% 60%; --primary-foreground: 0 0% 100%; /* Secondary - Ultra Light Gray */ --secondary: 220 14% 96%; --secondary-foreground: 220 10% 25%; /* Muted - Very Light */ --muted: 220 14% 96%; --muted-foreground: 220 8% 46%; /* Accent - Soft Highlight */ --accent: 217 91% 97%; --accent-foreground: 217 91% 40%; /* Destructive */ --destructive: 0 84% 60%; --destructive-foreground: 0 0% 100%; /* Borders - Ultra Fine */ --border: 220 13% 91%; --input: 220 13% 91%; --ring: 217 91% 60%; /* Radius - Larger, Softer */ --radius: 0.625rem; /* Shadows - Minimal */ --shadow: 0 1px 2px 0 hsl(220 14% 96%); --shadow-sm: 0 0px 0px 1px hsl(220 13% 91%); --shadow-md: 0 2px 4px 0 hsl(220 14% 96%); --shadow-lg: 0 4px 8px 0 hsl(220 14% 96%); } /* Dark Mode - Soft Dark */ .dark { --background: 220 20% 7%; --foreground: 220 14% 96%; --card: 220 18% 9%; --card-foreground: 220 14% 96%; --popover: 220 18% 9%; --popover-foreground: 220 14% 96%; --primary: 217 91% 65%; --primary-foreground: 220 20% 7%; --secondary: 220 18% 14%; --secondary-foreground: 220 14% 96%; --muted: 220 18% 14%; --muted-foreground: 220 8% 64%; --accent: 217 33% 20%; --accent-foreground: 217 91% 75%; --destructive: 0 62% 50%; --destructive-foreground: 0 0% 100%; --border: 220 18% 16%; --input: 220 18% 16%; --ring: 217 91% 65%; --shadow: 0 1px 2px 0 hsl(220 20% 4%); --shadow-sm: 0 0px 0px 1px hsl(220 18% 16%); --shadow-md: 0 2px 4px 0 hsl(220 20% 4%); --shadow-lg: 0 4px 8px 0 hsl(220 20% 4%); } /* Base Styles */ * { border-color: hsl(var(--border)); } body { font-family: "Geist", system-ui, -apple-system, sans-serif; background: hsl(var(--background)); color: hsl(var(--foreground)); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-feature-settings: "cv02", "cv03", "cv04", "cv11"; } /* Smooth Scrolling */ html { scroll-behavior: smooth; } /* Selection */ ::selection { background: hsl(var(--primary) / 0.15); color: hsl(var(--foreground)); } /* Focus Visible */ :focus-visible { outline: 2px solid hsl(var(--ring) / 0.5); outline-offset: 2px; border-radius: calc(var(--radius) - 2px); } /* Scrollbar - Minimal */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: hsl(var(--border)); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: hsl(var(--muted-foreground) / 0.3); } /* Animations - Subtle */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideDown { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } } @keyframes scaleIn { from { opacity: 0; transform: scale(0.97); } to { opacity: 1; transform: scale(1); } } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* Animation Classes */ .animate-fade-in { animation: fadeIn 0.2s ease-out forwards; } .animate-slide-up { animation: slideUp 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards; } .animate-slide-down { animation: slideDown 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards; } .animate-scale-in { animation: scaleIn 0.2s cubic-bezier(0.16, 1, 0.3, 1) forwards; } .animate-spin { animation: spin 0.8s linear infinite; } /* Staggered Animation */ .stagger-1 { animation-delay: 30ms; } .stagger-2 { animation-delay: 60ms; } .stagger-3 { animation-delay: 90ms; } .stagger-4 { animation-delay: 120ms; } .stagger-5 { animation-delay: 150ms; } /* Transitions - Smooth */ .transition-base { transition: all 0.15s cubic-bezier(0.16, 1, 0.3, 1); } .transition-smooth { transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1); } /* Hover Effects - Subtle Lift */ .hover-lift { transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.15s cubic-bezier(0.16, 1, 0.3, 1); } .hover-lift:hover { transform: translateY(-1px); box-shadow: var(--shadow-md); } .hover-scale { transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1); } .hover-scale:hover { transform: scale(1.01); } /* Button Press Effect */ .btn-press:active { transform: scale(0.98); } /* Glass Effect - Subtle */ .glass { background: hsl(var(--background) / 0.85); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } /* Reduced Motion */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } } /* Typography Scale */ .text-display { font-size: 3rem; line-height: 1.1; letter-spacing: -0.03em; font-weight: 700; } .text-heading-1 { font-size: 2rem; line-height: 1.2; letter-spacing: -0.025em; font-weight: 600; } .text-heading-2 { font-size: 1.5rem; line-height: 1.3; letter-spacing: -0.02em; font-weight: 600; } .text-heading-3 { font-size: 1.125rem; line-height: 1.4; letter-spacing: -0.01em; font-weight: 600; } .text-body { font-size: 0.9375rem; line-height: 1.6; } .text-body-small { font-size: 0.8125rem; line-height: 1.5; } .text-caption { font-size: 0.75rem; line-height: 1.4; letter-spacing: 0.01em; } /* Liner-Style Card - Border only, no shadow */ .liner-card { border: 1px solid hsl(var(--border)); background: hsl(var(--card)); border-radius: var(--radius); } /* Liner-Style Button - Clean, minimal */ .liner-btn { background: hsl(var(--background)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); transition: all 0.15s cubic-bezier(0.16, 1, 0.3, 1); } .liner-btn:hover { background: hsl(var(--accent)); border-color: hsl(var(--accent-foreground) / 0.2); } .liner-btn:active { transform: scale(0.98); } /* Liner-Style Input */ .liner-input { background: hsl(var(--background)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); transition: all 0.15s cubic-bezier(0.16, 1, 0.3, 1); } .liner-input:focus { border-color: hsl(var(--ring)); box-shadow: 0 0 0 3px hsl(var(--ring) / 0.1); } /* Liner-Style Badge */ .liner-badge { background: hsl(var(--accent)); color: hsl(var(--accent-foreground)); border: 1px solid transparent; border-radius: calc(var(--radius) - 2px); font-weight: 500; letter-spacing: -0.01em; } /* Liner-Style Table */ .liner-table { border-collapse: separate; border-spacing: 0; } .liner-table th { background: hsl(var(--muted)); border-bottom: 1px solid hsl(var(--border)); font-weight: 500; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; color: hsl(var(--muted-foreground)); } .liner-table td { border-bottom: 1px solid hsl(var(--border)); } .liner-table tr:hover td { background: hsl(var(--accent)); } /* Gradient Text */ .gradient-text { background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--primary) / 0.8)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Subtle Divider */ .divider { height: 1px; background: linear-gradient(90deg, transparent, hsl(var(--border)), transparent); }