/* ==============================================
   Professional Theme for CareAbout Calculators
   Design System: Navy, Blue, Green, Gold
   Accessibility: WCAG 2.1 AAA Compliant
   ============================================== */

:root {
  /* Professional Color Palette - AAA Compliant */
  --color-primary-navy: #1B365D;          /* Primary brand, headers */
  --color-primary-blue: #2E5F8A;          /* Interactive elements */
  --color-success-green: #2D5A3B;         /* Success states */
  --color-accent-gold: #B8860B;           /* Premium highlights */
  
  /* Text Colors - 7:1+ Contrast Ratios */
  --color-text-primary: #1A1A1A;          /* Main text (16.21:1) */
  --color-text-secondary: #444444;        /* Body text (9.73:1) */
  --color-text-tertiary: #666666;         /* Supporting text (5.74:1 on light bg) */
  --color-text-light: #888888;            /* Captions (3.54:1 - AAA large text) */
  
  /* Background Colors */
  --color-bg-primary: #FFFFFF;            /* Main backgrounds */
  --color-bg-secondary: #F8F9FA;          /* Section backgrounds */
  --color-bg-tertiary: #F2F4F6;           /* Card backgrounds */
  --color-bg-accent: #F5F7F9;             /* Highlighted sections */
  
  /* Status Colors - Professional */
  --color-success: #2D5A3B;               /* Completed, positive */
  --color-warning: #8B4513;               /* Attention needed */
  --color-error: #8B0000;                 /* Critical issues */
  --color-info: #2E5F8A;                  /* Information */
  
  /* Interactive States */
  --color-interactive-primary: #1B365D;
  --color-interactive-hover: #0F2A4A;
  --color-interactive-focus: #4A90B8;
  --color-interactive-disabled: #CCCCCC;
  
  /* Borders & Dividers */
  --color-border-primary: #E1E5E9;
  --color-border-secondary: #D4D8DC;
  --color-border-accent: #C7CDD3;
  
  /* Typography - 18px Minimum */
  --font-family-primary: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-size-xs: 16px;        /* Legal text only */
  --font-size-sm: 18px;        /* Body minimum */
  --font-size-base: 20px;      /* Standard body */
  --font-size-lg: 24px;        /* Large body */
  --font-size-xl: 28px;        /* Section headings */
  --font-size-2xl: 32px;       /* Page headings */
  --font-size-3xl: 36px;       /* Main headings */
  --font-size-4xl: 42px;       /* Hero headings */
  
  /* Font Weights */
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  
  /* Line Heights */
  --line-height-tight: 1.25;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.75;
  
  /* Spacing - Professional Scale */
  --spacing-1: 8px;
  --spacing-2: 16px;
  --spacing-3: 24px;
  --spacing-4: 32px;
  --spacing-5: 40px;
  --spacing-6: 48px;
  --spacing-8: 64px;
  --spacing-10: 80px;
  --spacing-12: 96px;
  --spacing-16: 128px;
  
  /* Component Spacing */
  --component-padding-sm: var(--spacing-3);
  --component-padding-md: var(--spacing-4);
  --component-padding-lg: var(--spacing-6);
  
  /* Section Spacing */
  --section-gap-sm: var(--spacing-6);
  --section-gap-md: var(--spacing-8);
  --section-gap-lg: var(--spacing-12);
  
  /* Touch Targets - 44px Minimum */
  --touch-target-min: 44px;
  
  /* Borders & Radius */
  --border-radius-sm: 6px;
  --border-radius: 8px;
  --border-radius-lg: 12px;
  --border-width: 2px;
  
  /* Shadows - Professional */
  --shadow-sm: 0 2px 4px rgba(27, 54, 93, 0.08);
  --shadow-md: 0 4px 8px rgba(27, 54, 93, 0.12);
  --shadow-lg: 0 8px 16px rgba(27, 54, 93, 0.16);
  --shadow-xl: 0 12px 24px rgba(27, 54, 93, 0.20);
  
  /* Transitions */
  --transition-fast: all 0.15s ease;
  --transition-base: all 0.3s ease;
  --transition-slow: all 0.5s ease;
}

/* Professional Typography */
body {
  font-family: var(--font-family-primary);
  font-size: var(--font-size-base);
  line-height: var(--line-height-relaxed);
  color: var(--color-text-primary);
  background-color: var(--color-bg-primary);
  font-feature-settings: 'kern' 1, 'liga' 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Professional Headings */
h1 {
  font-size: var(--font-size-4xl);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
  color: var(--color-primary-navy);
  margin: 0 0 var(--spacing-4) 0;
}

h2 {
  font-size: var(--font-size-3xl);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-tight);
  color: var(--color-primary-navy);
  margin: var(--spacing-8) 0 var(--spacing-4) 0;
}

h3 {
  font-size: var(--font-size-2xl);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-normal);
  color: var(--color-text-primary);
  margin: var(--spacing-6) 0 var(--spacing-3) 0;
}

h4 {
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-normal);
  color: var(--color-text-primary);
  margin: var(--spacing-4) 0 var(--spacing-2) 0;
}

/* Professional Text Styles */
p {
  margin: 0 0 var(--spacing-3) 0;
  color: var(--color-text-secondary);
}

.text-large {
  font-size: var(--font-size-lg);
  line-height: var(--line-height-relaxed);
}

.text-small {
  font-size: var(--font-size-sm);
  color: var(--color-text-tertiary);
}

.text-muted {
  color: var(--color-text-tertiary);
}

/* Professional Container */
.professional-container {
  max-width: 1200px;
  margin: 0 auto;
  padding: var(--spacing-6) var(--spacing-4);
}

/* Professional Cards */
.professional-card {
  background: var(--color-bg-primary);
  border: 1px solid var(--color-border-primary);
  border-radius: var(--border-radius-lg);
  padding: var(--component-padding-lg);
  box-shadow: var(--shadow-sm);
  transition: var(--transition-base);
}

.professional-card:hover {
  box-shadow: var(--shadow-md);
}

.professional-card-elevated {
  box-shadow: var(--shadow-md);
}

.professional-card-header {
  border-bottom: 2px solid var(--color-border-primary);
  padding-bottom: var(--spacing-3);
  margin-bottom: var(--spacing-4);
}

/* Professional Buttons */
.btn-professional {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--touch-target-min);
  min-width: var(--touch-target-min);
  padding: var(--spacing-3) var(--spacing-6);
  border: var(--border-width) solid transparent;
  border-radius: var(--border-radius);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-semibold);
  font-family: var(--font-family-primary);
  text-decoration: none;
  cursor: pointer;
  transition: var(--transition-fast);
  gap: var(--spacing-2);
}

.btn-professional-primary {
  background: var(--color-primary-navy);
  color: white;
  border-color: var(--color-primary-navy);
}

.btn-professional-primary:hover {
  background: var(--color-interactive-hover);
  border-color: var(--color-interactive-hover);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

.btn-professional-secondary {
  background: white;
  color: var(--color-primary-navy);
  border-color: var(--color-primary-navy);
}

.btn-professional-secondary:hover {
  background: var(--color-bg-accent);
}

.btn-professional-large {
  min-height: 56px;
  padding: var(--spacing-4) var(--spacing-8);
  font-size: var(--font-size-lg);
}

/* Professional Forms */
.form-professional-group {
  margin-bottom: var(--spacing-5);
}

.form-professional-label {
  display: block;
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
  margin-bottom: var(--spacing-2);
}

.form-professional-input {
  width: 100%;
  min-height: var(--touch-target-min);
  padding: var(--spacing-3) var(--spacing-4);
  border: var(--border-width) solid var(--color-border-primary);
  border-radius: var(--border-radius);
  font-size: var(--font-size-base);
  font-family: var(--font-family-primary);
  background: var(--color-bg-primary);
  transition: var(--transition-fast);
}

.form-professional-input:focus {
  outline: none;
  border-color: var(--color-interactive-focus);
  box-shadow: 0 0 0 3px rgba(74, 144, 184, 0.15);
}

/* Professional Tables */
.table-professional-container {
  background: var(--color-bg-primary);
  border: 1px solid var(--color-border-primary);
  border-radius: var(--border-radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

.table-professional {
  width: 100%;
  border-collapse: collapse;
}

.table-professional-header {
  background: var(--color-bg-secondary);
  border-bottom: 2px solid var(--color-border-accent);
}

.table-professional-header th {
  padding: var(--spacing-4);
  text-align: left;
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
}

.table-professional-row {
  border-bottom: 1px solid var(--color-border-primary);
}

.table-professional-row:last-child {
  border-bottom: none;
}

.table-professional-cell {
  padding: var(--spacing-4);
  font-size: var(--font-size-base);
  color: var(--color-text-secondary);
}

/* Professional Progress */
.progress-professional {
  margin: var(--spacing-6) 0;
}

.progress-professional-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--spacing-3);
}

.progress-professional-label {
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
}

.progress-professional-value {
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-bold);
  color: var(--color-success-green);
}

.progress-professional-bar {
  width: 100%;
  height: 12px;
  background: var(--color-bg-tertiary);
  border-radius: 6px;
  overflow: hidden;
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}

.progress-professional-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--color-success-green) 0%, var(--color-primary-blue) 100%);
  border-radius: 6px;
  transition: width 0.3s ease;
}

/* Professional Alerts */
.alert-professional {
  padding: var(--spacing-4);
  border-radius: var(--border-radius);
  border: 1px solid;
  margin-bottom: var(--spacing-4);
  display: flex;
  align-items: flex-start;
  gap: var(--spacing-3);
}

.alert-professional-success {
  background: rgba(45, 90, 59, 0.1);
  border-color: var(--color-success-green);
  color: var(--color-success-green);
}

.alert-professional-warning {
  background: rgba(184, 134, 11, 0.1);
  border-color: var(--color-accent-gold);
  color: #8B4513;
}

.alert-professional-error {
  background: rgba(139, 0, 0, 0.1);
  border-color: var(--color-error);
  color: var(--color-error);
}

.alert-professional-info {
  background: rgba(46, 95, 138, 0.1);
  border-color: var(--color-info);
  color: var(--color-info);
}

/* Focus Indicators */
*:focus-visible {
  outline: 3px solid var(--color-interactive-focus);
  outline-offset: 2px;
  border-radius: 4px;
}

/* High Contrast Mode Support */
@media (prefers-contrast: high) {
  :root {
    --color-primary-navy: #000080;
    --color-text-primary: #000000;
    --color-text-secondary: #000000;
    --color-border-primary: #000000;
  }
  
  .btn-professional,
  .form-professional-input {
    border-width: 3px;
  }
}

/* Reduced Motion Support */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* Additional Component Styles */
.progress-professional-details {
  display: flex;
  justify-content: space-between;
  margin-top: var(--spacing-3);
}

.progress-detail-item {
  text-align: center;
}

.service-card {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-3);
}

.service-card-header {
  display: flex;
  gap: var(--spacing-3);
}

.service-card-icon {
  flex-shrink: 0;
}

.service-card-info {
  flex: 1;
}

.service-card-title {
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
  margin: 0 0 var(--spacing-1) 0;
}

.service-card-description {
  font-size: var(--font-size-sm);
  color: var(--color-text-tertiary);
  margin: 0;
}

.service-card-rate {
  margin-top: var(--spacing-2);
}

.rate-display {
  display: flex;
  align-items: center;
  gap: var(--spacing-2);
  font-size: var(--font-size-base);
}

.rate-label {
  color: var(--color-text-tertiary);
}

.rate-value {
  font-weight: var(--font-weight-semibold);
  color: var(--color-primary-navy);
}

.input-group {
  display: flex;
  align-items: center;
  gap: var(--spacing-2);
}

.hours-input {
  flex: 1;
  text-align: center;
}

.btn-icon {
  min-width: var(--touch-target-min);
  min-height: var(--touch-target-min);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--color-border-primary);
  border-radius: var(--border-radius);
  background: white;
  cursor: pointer;
  transition: var(--transition-fast);
  padding: 0;
}

.btn-icon:hover {
  background: var(--color-bg-accent);
  border-color: var(--color-primary-blue);
}

.service-card-cost {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--spacing-3);
  border-top: 1px solid var(--color-border-primary);
  font-size: var(--font-size-base);
}

.cost-label {
  color: var(--color-text-tertiary);
}

.cost-value {
  font-weight: var(--font-weight-bold);
  color: var(--color-success-green);
}

.table-title {
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
  margin: 0 0 var(--spacing-4) 0;
}

.table-total {
  background: var(--color-bg-accent);
}

.table-grand-total {
  background: var(--color-bg-tertiary);
  font-size: var(--font-size-lg);
}

.alert-content {
  flex: 1;
}

.alert-icon {
  flex-shrink: 0;
}

.alert-close {
  flex-shrink: 0;
  opacity: 0.6;
  transition: opacity var(--transition-fast);
}

.alert-close:hover {
  opacity: 1;
}

.summary-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--spacing-2) 0;
  border-bottom: 1px solid var(--color-border-primary);
}

.summary-item:last-child {
  border-bottom: none;
}

.text-error {
  color: var(--color-error);
}

.text-success {
  color: var(--color-success-green);
}

.rate-edit-form {
  display: flex;
  align-items: center;
  gap: var(--spacing-2);
  margin-top: var(--spacing-2);
}

.rate-input {
  width: 100px;
}

/* Fee Input Styles */
.fee-input-card {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-4);
  margin-bottom: var(--spacing-4);
}

.fee-input-header {
  display: flex;
  gap: var(--spacing-3);
  align-items: flex-start;
}

.fee-input-icon {
  flex-shrink: 0;
}

.fee-input-info {
  flex: 1;
}

.fee-input-title {
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
  margin: 0 0 var(--spacing-1) 0;
}

.fee-input-description {
  font-size: var(--font-size-base);
  margin: 0;
}

.fee-input-control {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-2);
}

.fee-group {
  display: flex;
  align-items: center;
  gap: var(--spacing-2);
  max-width: 300px;
}

.fee-input-wrapper {
  position: relative;
  flex: 1;
}

.fee-value-input {
  width: 100%;
  text-align: center;
  padding-right: 35px !important;
  padding-left: 12px !important;
}

.fee-unit {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: #333;
  font-size: 16px;
  font-weight: 600;
  pointer-events: none;
  z-index: 2;
}

.fee-range-info {
  text-align: center;
  margin-top: var(--spacing-1);
}

.fee-impact {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--spacing-3);
  border-top: 1px solid var(--color-border-primary);
}

.fee-impact-item {
  display: flex;
  align-items: center;
  gap: var(--spacing-2);
}

.fee-amount {
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-bold);
  color: var(--color-primary-navy);
}

.fee-amount-monthly {
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-secondary);
}

/* Fee Total Display */
.fee-total-display {
  padding: var(--spacing-4);
}

.fee-total-display h4 {
  color: var(--color-primary-navy);
  margin: 0 0 var(--spacing-3) 0;
}

.fee-total-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--spacing-2) 0;
}

.fee-total-row:not(:last-child) {
  border-bottom: 1px solid var(--color-border-primary);
}

.font-weight-bold {
  font-weight: var(--font-weight-bold);
}

.color-primary-navy {
  color: var(--color-primary-navy);
}

/* Print Styles */
@media print {
  :root {
    --color-primary-navy: #000000;
    --color-primary-blue: #333333;
    --color-success-green: #000000;
    --color-accent-gold: #666666;
  }
  
  .professional-container {
    max-width: 100%;
    padding: 0;
  }
  
  .no-print {
    display: none !important;
  }
  
  .professional-card {
    box-shadow: none;
    border: 2px solid #000000;
    break-inside: avoid;
  }
}