/* ==========================================================================
   Design System: MORTAGE_CRMS
   ========================================================================== */

/* -------------------------------------------------------------------------- */
/* Global Variables                                                           */
/* -------------------------------------------------------------------------- */
:root {
  /* Colors */
  --color-brand-primary: #000c66;
  --color-brand-primary-dark: #000951;
  --color-brand-secondary: #d6f2fc;
  --color-brand-tertiary: #7ec8e3;
  --color-brand-tertiary-dark: #61b1cf;
  --color-neutral-dark: #222222;
  --color-link-active: #0157ff;
  --color-white: #ffffff;
  --color-black: #000000;
  --color-background: #e8e8e8;
  --color-border: #cccccc;
  --color-text-muted: #666666;
  --color-destructive: #b91c1c;
  --color-destructive-bg: #fee2e2;
  --color-destructive-border: #fecaca;
  --color-destructive-bg-hover: #fecaca;
  --color-destructive-border-hover: #fca5a5;
  --color-success: #166534;
  --color-success-bg: #dcfce7;
  --color-success-border: #bbf7d0;
  --color-warning: #92400e;
  --color-warning-bg: #fef3c7;
  --color-warning-border: #fde68a;
  --color-muted: #64748b;
  --color-muted-bg: #f1f5f9;
  --color-muted-border: #e2e8f0;
  --color-normal: #1e293b;
  --color-normal-bg: #e2e8f0;
  --color-normal-border: #cbd5e1;

  /* Fonts */
  --font-primary: "Poppins", sans-serif;
  --font-secondary: "Source Serif 4", serif;

  /* Font Sizes */
  --font-size-base: 16px;
  --font-size-sm: 14px;
  --font-size-lg: 18px;
  --font-size-xl: 24px;
  --font-size-xxl: 32px;

  /* Font Weights */
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  /* Shadows */
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),
    0 4px 6px -4px rgb(0 0 0 / 0.1);
  --shadow-none: none;

  /* Borders & Radii */
  --border-radius-sm: 4px;
  --border-radius-base: 6px;
  --border-radius-md: 8px;
  --border-radius-lg: 10px;
  --border-radius-xl: 12px;
  --border-radius-full: 9999px;

  /* Specific Component Radii (Can override base) */
  --button-border-radius: var(--border-radius-md);
  --input-border-radius: var(--border-radius-md);
  --card-border-radius: var(--border-radius-lg);

  /* Transitions */
  --transition-speed: 0.2s;
  --transition-ease: ease-in-out;
  --transition-base: all var(--transition-speed) var(--transition-ease);
}

/* -------------------------------------------------------------------------- */
/* Base Element Styling                                                       */
/* -------------------------------------------------------------------------- */
* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-primary);
  font-size: var(--font-size-base);
  color: var(--color-neutral-dark);
  line-height: 1.6;
  background-color: var(--color-background);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

a {
  text-decoration: none;
  color: var(--color-brand-primary);
  transition: color var(--transition-speed) var(--transition-ease);
}

a:hover {
  color: var(--color-brand-primary-dark);
}

a.underlined {
  text-decoration-line: underline;
  text-underline-offset: 4px;
  color: inherit;
  transition: color var(--transition-speed) var(--transition-ease);
}

p {
  margin-bottom: 1rem;
  font-size: var(--font-size-base);
  line-height: 1.7;
}

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  max-width: 100%;
  height: auto;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin-top: 0;
  margin-bottom: 0.75rem;
  font-weight: var(--font-weight-bold);
  line-height: 1.2;
  color: var(--color-neutral-dark);
  letter-spacing: -0.02em;
}

h1 {
  font-size: 2.5rem;
} /* ~40px */
h2 {
  font-size: 2rem;
} /* ~32px */
h3 {
  font-size: 1.75rem;
} /* ~28px */
h4 {
  font-size: 1.5rem;
} /* ~24px */
h5 {
  font-size: 1.25rem;
} /* ~20px */
h6 {
  font-size: 1.125rem;
  font-weight: var(--font-weight-semibold);
} /* ~18px */

/* -------------------------------------------------------------------------- */
/* Utility Classes                                                            */
/* -------------------------------------------------------------------------- */

/* Text Colors */
.text-brand-primary {
  color: var(--color-brand-primary) !important;
}
.text-neutral-dark {
  color: var(--color-neutral-dark) !important;
}
.text-white {
  color: var(--color-white) !important;
}
.text-muted {
  color: var(--color-text-muted) !important;
}
.text-destructive {
  color: var(--color-destructive) !important;
}
.text-success {
  color: var(--color-success) !important;
}
.text-warning {
  color: var(--color-warning) !important;
}

/* Background Colors */
.bg-brand-primary {
  background-color: var(--color-brand-primary) !important;
}
.bg-brand-secondary {
  background-color: var(--color-brand-secondary) !important;
}
.bg-brand-tertiary {
  background-color: var(--color-brand-tertiary) !important;
}
.bg-neutral-dark {
  background-color: var(--color-neutral-dark) !important;
}
.bg-white {
  background-color: var(--color-white) !important;
}
.bg-background {
  background-color: var(--color-background) !important;
}

/* Text Sizes */
.text-sm {
  font-size: var(--font-size-sm) !important;
}
.text-base {
  font-size: var(--font-size-base) !important;
}
.text-lg {
  font-size: var(--font-size-lg) !important;
}
.text-xl {
  font-size: var(--font-size-xl) !important;
}
.text-xxl {
  font-size: var(--font-size-xxl) !important;
}

/* Text Alignment */
.text-left {
  text-align: left !important;
}
.text-center {
  text-align: center !important;
}
.text-right {
  text-align: right !important;
}

/* Font Weights */
.font-normal {
  font-weight: var(--font-weight-normal) !important;
}
.font-medium {
  font-weight: var(--font-weight-medium) !important;
}
.font-semibold {
  font-weight: var(--font-weight-semibold) !important;
}
.font-bold {
  font-weight: var(--font-weight-bold) !important;
}

/* ==========================================================================
   Components
   ========================================================================== */

/* -------------------------------------------------------------------------- */
/* Component: Button                                                          */
/* -------------------------------------------------------------------------- */

.button {
  display: inline-flex; /* Use inline-flex for alignment */
  align-items: center;
  justify-content: center;
  gap: 0.5rem; /* Space between text and icon */
  padding: 0.5rem 1rem; /* Default padding */
  border-radius: var(--button-border-radius);
  font-family: var(--font-primary);
  font-size: var(--font-size-base); /* Use base font size */
  font-weight: var(--font-weight-medium);
  line-height: 1.2; /* Ensure consistent line height */
  cursor: pointer;
  text-align: center;
  white-space: nowrap; /* Prevent wrapping */
  vertical-align: middle; /* Align with surrounding text/elements */
  user-select: none; /* Prevent text selection */
  border: 1px solid transparent; /* Base border */
  transition: var(--transition-base), transform 0.1s ease; /* Smooth transitions */
  box-shadow: var(--shadow-sm);
}

/* --- Button Size Variants --- */
.button-sm {
  padding: 0.25rem 0.75rem;
  font-size: var(--font-size-sm);
  gap: 0.375rem;
}

.button-lg {
  padding: 0.75rem 1.5rem;
  font-size: var(--font-size-lg);
  gap: 0.75rem;
}

/* --- Button Style Variants --- */

/* Primary */
.button-primary {
  background-color: var(--color-brand-primary);
  color: var(--color-white);
  border-color: var(--color-brand-primary);
}
.button-primary:hover:not(:disabled) {
  background-color: var(--color-brand-primary-dark);
  border-color: var(--color-brand-primary-dark);
}

/* Secondary */
.button-secondary {
  background-color: var(--color-brand-tertiary);
  color: var(--color-neutral-dark);
  border-color: var(--color-brand-tertiary);
}
.button-secondary:hover:not(:disabled) {
  background-color: var(--color-brand-tertiary-dark);
  border-color: var(--color-brand-tertiary-dark);
}

/* Outline */
.button-outline {
  background-color: transparent;
  color: var(--color-brand-primary);
  border-color: var(--color-brand-primary);
  box-shadow: var(--shadow-none); /* Outline typically has no shadow */
}
.button-outline:hover:not(:disabled) {
  background-color: var(
    --color-brand-secondary
  ); /* Light background on hover */
  border-color: var(--color-brand-primary); /* Keep border consistent */
}

/* Destructive */
.button-destructive {
  background-color: var(--color-destructive-bg);
  color: var(--color-destructive);
  border-color: var(--color-destructive-border);
}
.button-destructive:hover:not(:disabled) {
  background-color: var(--color-destructive-bg-hover);
  border-color: var(--color-destructive-border-hover);
}

/* Ghost */
.button-ghost {
  background-color: transparent;
  color: var(--color-brand-primary);
  border-color: transparent;
  box-shadow: var(--shadow-none);
}
.button-ghost:hover:not(:disabled) {
  background-color: var(--color-brand-secondary); /* Subtle background */
  color: var(--color-brand-primary-dark);
}

/* Link */
.button-link {
  background-color: transparent;
  color: var(--color-link-active);
  border-color: transparent;
  box-shadow: var(--shadow-none);
  padding: 0; /* Remove padding for link-like appearance */
  text-decoration: underline;
  text-underline-offset: 2px;
  height: auto; /* Let content define height */
  line-height: inherit; /* Inherit line height */
}
.button-link:hover:not(:disabled) {
  text-decoration: none;
  color: var(--color-brand-primary-dark);
}

/* --- Button States --- */
.button:hover:not(:disabled) {
  transform: translateY(-1px); /* Subtle lift */
  box-shadow: var(--shadow-md); /* Elevate shadow */
}
/* Specific hover shadow override for outline/ghost/link */
.button-outline:hover:not(:disabled),
.button-ghost:hover:not(:disabled),
.button-link:hover:not(:disabled) {
  box-shadow: var(--shadow-none);
  transform: none; /* No lift for these variants usually */
}

.button:active:not(:disabled) {
  transform: translateY(0px); /* Press down */
  box-shadow: var(--shadow-sm); /* Slightly less shadow when pressed */
}

.button:focus {
  outline: 2px solid var(--color-brand-secondary);
  outline-offset: 2px;
  box-shadow: var(--shadow-sm); /* Maintain some shadow on focus */
}
/* Ensure focus outline is visible on dark backgrounds if needed */
.button-primary:focus {
  outline: 2px solid var(--color-brand-tertiary); /* Lighter outline on dark button */
}

.button:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  box-shadow: var(--shadow-none); /* No shadow when disabled */
  transform: none; /* No transform when disabled */
}

/* --- Button Icon --- */
.button svg {
  width: 1em; /* Scale with font size */
  height: 1em; /* Scale with font size */
  flex-shrink: 0; /* Prevent icon from shrinking */
}

/* Modifier for icon-only buttons */
.button-icon {
  padding: 0.5rem; /* Square padding */
  gap: 0; /* No gap needed */
}
.button-icon.button-sm {
  padding: 0.35rem;
}
.button-icon.button-lg {
  padding: 0.75rem;
}
.button-icon svg {
  width: 1.25em; /* Slightly larger icon for icon-only buttons */
  height: 1.25em;
}

/* -------------------------------------------------------------------------- */
/* Component: Card                                                            */
/* -------------------------------------------------------------------------- */

.custom-card {
  padding: 1.5rem;
  border: 1px solid var(--color-border);
  background-color: var(--color-white);
  border-radius: var(--card-border-radius);
  box-shadow: var(--shadow-md);
  transition: var(--transition-base);
}

.custom-card-header {
  padding: 1rem 1.5rem;
  margin-bottom: 0;
  background-color: rgba(0, 0, 0, 0.03);
  border-bottom: var(--border-width) solid var(--color-border);
  border-radius: var(--card-border-radius) var(--card-border-radius) 0 0;
}
.custom-card-header h1,
.custom-card-header h2,
.custom-card-header h3,
.custom-card-header h4,
.custom-card-header h5,
.custom-card-header h6 {
  margin-bottom: 0;
}

.custom-card-body {
  padding: 1.5rem;
}
.custom-card-footer {
  padding: 1rem 1.5rem;
  background-color: rgba(0, 0, 0, 0.03);
  border-top: var(--border-width) solid var(--color-border);
  border-radius: 0 0 var(--card-border-radius) var(--card-border-radius);
}

/* Optional: Add hover effect to lift card */
/*
.custom-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-2px);
}
*/

/* -------------------------------------------------------------------------- */
/* Component: Badge                                                           */
/* -------------------------------------------------------------------------- */

.badge {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 12px;
  padding: 0.2rem 0.5rem;
  border-radius: var(--border-radius-sm);
  font-weight: var(--font-weight-medium);
  line-height: 1.4;
  white-space: nowrap;
  vertical-align: middle;
}

/* --- Filled Variants --- */
.badge-filled-normal {
  background-color: var(--color-normal-bg);
  color: var(--color-normal);
}
.badge-filled-muted {
  background-color: var(--color-muted-bg);
  color: var(--color-muted);
}
.badge-filled-danger {
  background-color: var(--color-destructive-bg);
  color: var(--color-destructive);
}
.badge-filled-success {
  background-color: var(--color-success-bg);
  color: var(--color-success);
}
.badge-filled-warning {
  background-color: var(--color-warning-bg);
  color: var(--color-warning);
}
.badge-filled-primary {
  background-color: var(--color-brand-secondary);
  color: var(--color-brand-primary);
} /* Example primary badge */

/* --- Outline Variants --- */
.badge-outline {
  background-color: transparent;
  border: 1px solid;
}

.badge-outline-normal {
  color: var(--color-normal);
  border-color: var(--color-normal-border);
}
.badge-outline-muted {
  color: var(--color-muted);
  border-color: var(--color-muted-border);
}
.badge-outline-danger {
  color: var(--color-destructive);
  border-color: var(--color-destructive-border);
}
.badge-outline-success {
  color: var(--color-success);
  border-color: var(--color-success-border);
}
.badge-outline-warning {
  color: var(--color-warning);
  border-color: var(--color-warning-border);
}
.badge-outline-primary {
  color: var(--color-brand-primary);
  border-color: var(--color-brand-secondary);
} /* Example primary outline badge */

/* --- Badge Icon --- */
.badge svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}

/* ==========================================================================
   End of Design System
   ========================================================================== */
