@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Public+Sans:ital,wght@0,100..900;1,100..900&display=swap'); @import "tailwindcss"; @custom-variant dark (&:is(.dark *)); :root { --font-size: 16px; --background: #ffffff; --foreground: oklch(0.145 0 0); --card: #ffffff; --card-foreground: oklch(0.145 0 0); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0); --primary: #da291c; --primary-600: #da291c; --primary-700: #b82216; --primary-50: #fef2f2; --primary-foreground: oklch(1 0 0); --secondary: oklch(0.95 0.0058 264.53); --secondary-foreground: #030213; --muted: #ececf0; --muted-foreground: #717182; --accent: #e9ebef; --accent-foreground: #030213; --destructive: #d4183d; --destructive-foreground: #ffffff; --border: rgba(0, 0, 0, 0.1); --input: transparent; --input-background: #f3f3f5; --switch-background: #cbced4; --font-weight-medium: 500; --font-weight-normal: 400; --ring: oklch(0.708 0 0); --chart-1: oklch(0.646 0.222 41.116); --chart-2: oklch(0.6 0.118 184.704); --chart-3: oklch(0.398 0.07 227.392); --chart-4: oklch(0.828 0.189 84.429); --chart-5: oklch(0.769 0.188 70.08); --radius: 0.625rem; --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0 0); --sidebar-primary: #030213; --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.97 0 0); --sidebar-accent-foreground: oklch(0.205 0 0); --sidebar-border: oklch(0.922 0 0); --sidebar-ring: oklch(0.708 0 0); /* Royal Enfield Brand Colors */ --re-red: #da291c; --re-red-hover: #b82216; --re-black: #000000; --re-white: #FFFFFF; --re-gray: #717171; /* Status / progress semantics (see statusProgressTheme.ts) */ --status-in-progress: #d97706; --status-in-progress-hover: #b45309; --status-success: #16a34a; --status-success-hover: #15803d; --status-negative: var(--re-red); --status-negative-hover: var(--re-red-hover); } .dark { --background: oklch(0.145 0 0); --foreground: oklch(0.985 0 0); --card: oklch(0.145 0 0); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.145 0 0); --popover-foreground: oklch(0.985 0 0); --primary: oklch(0.985 0 0); --primary-foreground: oklch(0.205 0 0); --secondary: oklch(0.269 0 0); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.269 0 0); --muted-foreground: oklch(0.708 0 0); --accent: oklch(0.269 0 0); --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.396 0.141 25.723); --destructive-foreground: oklch(0.637 0.237 25.331); --border: oklch(0.269 0 0); --input: oklch(0.269 0 0); --ring: oklch(0.439 0 0); --font-weight-medium: 500; --font-weight-normal: 400; --chart-1: oklch(0.488 0.243 264.376); --chart-2: oklch(0.696 0.17 162.48); --chart-3: oklch(0.769 0.188 70.08); --chart-4: oklch(0.627 0.265 303.9); --chart-5: oklch(0.645 0.246 16.439); --sidebar: oklch(0.205 0 0); --sidebar-foreground: oklch(0.985 0 0); --sidebar-primary: oklch(0.488 0.243 264.376); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.269 0 0); --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(0.269 0 0); --sidebar-ring: oklch(0.439 0 0); } @theme inline { --font-montserrat: "Montserrat", sans-serif; --font-sans: var(--font-montserrat); --font-serif: var(--font-montserrat); --font-mono: var(--font-montserrat); --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-600: var(--primary-600); --color-primary-700: var(--primary-700); --color-primary-50: var(--primary-50); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-border: var(--border); --color-input: var(--input); --color-input-background: var(--input-background); --color-switch-background: var(--switch-background); --color-ring: var(--ring); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); /* Royal Enfield brand color tokens — usable as bg-re-red, text-re-red, etc. */ --color-re-red: var(--re-red); --color-re-red-hover: var(--re-red-hover); --color-re-black: var(--re-black); --color-re-gray: var(--re-gray); --color-status-in-progress: var(--status-in-progress); --color-status-success: var(--status-success); --color-status-negative: var(--status-negative); } @layer base { * { @apply border-border outline-ring/50 font-sans; } body { @apply bg-background text-foreground font-sans; } } @layer utilities { /* ─── Status / progress only (amber) — use these instead of bg-amber-* for trackers ─── */ .bg-status-progress { background-color: var(--status-in-progress); } .hover\:bg-status-progress-hover:hover { background-color: var(--status-in-progress-hover); } .text-status-progress { color: var(--status-in-progress); } .text-status-progress-muted { color: var(--status-in-progress-hover); } .text-status-progress-strong { color: #92400e; } .bg-status-progress-soft { background-color: #fffbeb; } .border-status-progress { border-color: #fde68a; } .bg-status-workflow-icon { background-color: #fef3c7; color: var(--status-in-progress); } .bg-status-workflow-panel { background-color: #fffbeb; border-color: #fde68a; } .border-status-workflow-panel { border-color: #fde68a; } .bg-status-workflow-badge { background-color: #fef3c7; color: #b45309; border-color: #fcd34d; } .bg-status-workflow-active { background-color: var(--status-in-progress); border-color: var(--status-in-progress); } .ring-status-workflow-active { --tw-ring-color: var(--status-in-progress); } /* ─── Brand primary: legacy amber CTAs → re-red ─── */ .btn-re-primary, button.bg-amber-600, a.bg-amber-600, [data-slot="button"].bg-amber-600 { background-color: var(--color-re-red) !important; color: #fff; } .btn-re-primary:hover, button.bg-amber-600:hover, button.hover\:bg-amber-700:hover, a.bg-amber-600:hover, a.hover\:bg-amber-700:hover { background-color: var(--color-re-red-hover) !important; } /* Non-button amber-600 (badges, divs) → re-red unless using status-progress-* classes */ .bg-amber-600:not(.bg-status-progress):not(.bg-status-workflow-active):not(.bg-status-workflow-badge):not(.bg-status-workflow-icon) { background-color: var(--color-re-red) !important; } .hover\:bg-amber-700:hover:not(.hover\:bg-status-progress-hover) { background-color: var(--color-re-red-hover) !important; } } /* RE Branding Utilities */ .re-heading { font-family: 'Montserrat', sans-serif; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; } .re-card { @apply bg-white border border-slate-200 rounded-none shadow-sm; } .re-input { @apply w-full px-4 py-3 border border-slate-300 rounded-none focus:border-red-600 focus:ring-1 focus:ring-red-600/20 outline-none transition-all duration-200 text-sm; } .re-label { @apply block text-sm font-semibold text-slate-800 mb-1.5 uppercase tracking-wide; } .re-btn-primary { @apply bg-black text-white px-8 py-3 font-bold uppercase tracking-widest hover:bg-slate-900 transition-all active:scale-[0.98]; } .re-btn-outline { @apply border-2 border-black text-black px-8 py-3 font-bold uppercase tracking-widest hover:bg-black hover:text-white transition-all active:scale-[0.98]; } .re-intro-text { @apply text-slate-700 leading-relaxed text-sm; } .re-disclaimer { @apply bg-slate-50 border-l-4 border-red-600 p-4 text-xs italic text-slate-600; } /** * Base typography. This is not applied to elements which have an ancestor with a Tailwind text class. */ @layer base { :where(:not(:has([class*=" text-"]), :not(:has([class^="text-"])))) { h1 { font-size: var(--text-2xl); font-weight: var(--font-weight-medium); line-height: 1.5; } h2 { font-size: var(--text-xl); font-weight: var(--font-weight-medium); line-height: 1.5; } h3 { font-size: var(--text-lg); font-weight: var(--font-weight-medium); line-height: 1.5; } h4 { font-size: var(--text-base); font-weight: var(--font-weight-medium); line-height: 1.5; } p { font-size: var(--text-base); font-weight: var(--font-weight-normal); line-height: 1.5; } label { font-size: var(--text-base); font-weight: var(--font-weight-medium); line-height: 1.5; } button { font-size: var(--text-base); font-weight: var(--font-weight-medium); line-height: 1.5; } input { font-size: var(--text-base); font-weight: var(--font-weight-normal); line-height: 1.5; } } } html { font-size: var(--font-size); } .custom-scrollbar::-webkit-scrollbar { width: 3px; } .custom-scrollbar::-webkit-scrollbar-track { background: transparent; } .custom-scrollbar::-webkit-scrollbar-thumb { background: #e2e8f0; border-radius: 10px; } .custom-scrollbar::-webkit-scrollbar-thumb:hover { background: #cbd5e1; } .custom-scrollbar { scrollbar-width: thin; scrollbar-color: #e2e8f0 transparent; } /* Thin, light horizontal scrollbar (e.g. tab strips with overflow-x) */ .custom-scrollbar-x::-webkit-scrollbar { height: 2px; } .custom-scrollbar-x::-webkit-scrollbar-track { background: transparent; } .custom-scrollbar-x::-webkit-scrollbar-thumb { background: #f1f5f9; border-radius: 9999px; } .custom-scrollbar-x::-webkit-scrollbar-thumb:hover { background: #e2e8f0; } .custom-scrollbar-x { scrollbar-width: thin; scrollbar-color: #f1f5f9 transparent; } /* Extra-thin, subtle horizontal scrollbar (documents modal tables) */ .custom-scrollbar-x-slim::-webkit-scrollbar { height: 2px; } .custom-scrollbar-x-slim::-webkit-scrollbar-track { background: transparent; } .custom-scrollbar-x-slim::-webkit-scrollbar-thumb { background: #f8fafc; border-radius: 9999px; } .custom-scrollbar-x-slim::-webkit-scrollbar-thumb:hover { background: #f1f5f9; } .custom-scrollbar-x-slim { scrollbar-width: thin; scrollbar-color: #f8fafc transparent; } /* Extra-thin, light vertical scrollbar (e.g. modals) */ .custom-scrollbar-slim::-webkit-scrollbar { width: 2px; } .custom-scrollbar-slim::-webkit-scrollbar-track { background: transparent; } .custom-scrollbar-slim::-webkit-scrollbar-thumb { background: #f1f5f9; border-radius: 9999px; } .custom-scrollbar-slim::-webkit-scrollbar-thumb:hover { background: #e2e8f0; } .custom-scrollbar-slim { scrollbar-width: thin; scrollbar-color: #f1f5f9 transparent; } /* Password fields with a custom show/hide toggle: hide native reveal (Edge/IE + Chromium). */ .no-native-password-reveal::-ms-reveal { display: none; } .no-native-password-reveal::-ms-clear { display: none; }