/* Custom CSS for shadcn/ui-like styling */ :root { --background: #ffffff; --foreground: #020817; --card: #ffffff; --card-foreground: #020817; --popover: #ffffff; --popover-foreground: #020817; --primary: #0f172a; --primary-foreground: #f8fafc; --secondary: #f1f5f9; --secondary-foreground: #0f172a; --muted: #f1f5f9; --muted-foreground: #64748b; --accent: #f1f5f9; --accent-foreground: #0f172a; --destructive: #ef4444; --destructive-foreground: #f8fafc; --border: #e2e8f0; --input: #e2e8f0; --ring: #020817; --radius: 0.5rem; } .dark { --background: #020817; --foreground: #f8fafc; --card: #020817; --card-foreground: #f8fafc; --popover: #020817; --popover-foreground: #f8fafc; --primary: #f8fafc; --primary-foreground: #0f172a; --secondary: #1e293b; --secondary-foreground: #f8fafc; --muted: #1e293b; --muted-foreground: #94a3b8; --accent: #1e293b; --accent-foreground: #f8fafc; --destructive: #7f1d1d; --destructive-foreground: #f8fafc; --border: #1e293b; --input: #1e293b; --ring: #cbd5e1; } * { box-sizing: border-box; border-color: var(--border); } body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background-color: var(--background); color: var(--foreground); } code { font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; } /* Utility classes */ .min-h-screen { min-height: 100vh; } .bg-background { background-color: var(--background); } .bg-card { background-color: var(--card); } .text-foreground { color: var(--foreground); } .text-muted-foreground { color: var(--muted-foreground); } .border { border: 1px solid var(--border); } .border-b { border-bottom: 1px solid var(--border); } .rounded-lg { border-radius: 0.5rem; } .p-4 { padding: 1rem; } .p-6 { padding: 1.5rem; } .p-8 { padding: 2rem; } .px-4 { padding-left: 1rem; padding-right: 1rem; } .px-6 { padding-left: 1.5rem; padding-right: 1.5rem; } .py-4 { padding-top: 1rem; padding-bottom: 1rem; } .py-8 { padding-top: 2rem; padding-bottom: 2rem; } .m-0 { margin: 0; } .mb-6 { margin-bottom: 1.5rem; } .mt-2 { margin-top: 0.5rem; } .mx-auto { margin-left: auto; margin-right: auto; } .w-full { width: 100%; } .max-w-4xl { max-width: 56rem; } .h-10 { height: 2.5rem; } .h-12 { height: 3rem; } .text-2xl { font-size: 1.5rem; line-height: 2rem; } .text-3xl { font-size: 1.875rem; line-height: 2.25rem; } .text-lg { font-size: 1.125rem; line-height: 1.75rem; } .text-sm { font-size: 0.875rem; line-height: 1.25rem; } .font-bold { font-weight: 700; } .font-medium { font-weight: 500; } .flex { display: flex; } .items-center { align-items: center; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .relative { position: relative; } .overflow-auto { overflow: auto; } .caption-bottom { caption-side: bottom; } .transition-colors { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .hover\:bg-muted\/50:hover { background-color: rgba(241, 245, 249, 0.5); } .hover\:bg-primary\/90:hover { background-color: rgba(15, 23, 42, 0.9); } .focus-visible\:outline-none:focus-visible { outline: 2px solid transparent; outline-offset: 2px; } .focus-visible\:ring-2:focus-visible { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .focus-visible\:ring-ring:focus-visible { --tw-ring-color: var(--ring); } .focus-visible\:ring-offset-2:focus-visible { --tw-ring-offset-width: 2px; } .disabled\:pointer-events-none:disabled { pointer-events: none; } .disabled\:opacity-50:disabled { opacity: 0.5; } .inline-flex { display: inline-flex; } .whitespace-nowrap { white-space: nowrap; } .rounded-md { border-radius: 0.375rem; } .ring-offset-background { --tw-ring-offset-color: var(--background); } /* Button styles */ .btn { display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; border-radius: 0.375rem; font-size: 0.875rem; font-weight: 500; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; cursor: pointer; border: none; outline: none; } .btn:focus-visible { outline: 2px solid transparent; outline-offset: 2px; box-shadow: 0 0 0 2px var(--ring); } .btn:disabled { pointer-events: none; opacity: 0.5; } .btn-primary { background-color: var(--primary); color: var(--primary-foreground); height: 2.5rem; padding: 0.5rem 1rem; } .btn-primary:hover { background-color: rgba(15, 23, 42, 0.9); } /* Table styles */ .table-container { position: relative; width: 100%; overflow: auto; } .table { width: 100%; font-size: 0.875rem; caption-side: bottom; border-collapse: collapse; } .table th { height: 3rem; padding: 0 1rem; text-align: left; vertical-align: middle; font-weight: 500; color: var(--muted-foreground); } .table td { padding: 1rem; vertical-align: middle; } .table tbody tr { border-bottom: 1px solid var(--border); transition: background-color 150ms; } .table tbody tr:last-child { border-bottom: none; } .table tbody tr:hover { background-color: rgba(241, 245, 249, 0.5); } .table caption { margin-top: 1rem; font-size: 0.875rem; color: var(--muted-foreground); } /* Container */ .container { width: 100%; margin-left: auto; margin-right: auto; padding-left: 2rem; padding-right: 2rem; } @media (min-width: 1400px) { .container { max-width: 1400px; } }