Dealer_Onboard_Frontend/src/styles/globals.css

435 lines
12 KiB
CSS

@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;
}