/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/@solidworx/platform/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/scss/app.scss ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
/**
 * SolidInvoice Main Application Stylesheet
 *
 * This is the main entry point for all application styles.
 * It imports Bootstrap, the design system, components, and layouts.
 */
/**
 * SolidInvoice Design System - Main Index
 *
 * Imports all design system foundation files.
 * This file should be imported early in app.scss,
 * after Bootstrap functions/variables but before components.
 */
/**
 * SolidInvoice Design System - Design Tokens
 *
 * Core design tokens defining colors, spacing, shadows, border radius,
 * and transitions. All values are exposed as CSS custom properties
 * with the `--swp-` prefix for runtime theming support.
 */
:root {
  --swp-primary: #2e963a;
  --swp-primary-rgb: 46, 150, 58;
  --swp-primary-hover: #268032;
  --swp-primary-dark: #1f6c29;
  --swp-primary-light: #e8f5e9;
  --swp-primary-lighter: #f1f9f2;
  --swp-secondary: #f0a015;
  --swp-secondary-rgb: 240, 160, 21;
  --swp-secondary-hover: #d89012;
  --swp-secondary-dark: #c8820e;
  --swp-secondary-light: #fff8e1;
  --swp-secondary-lighter: #fffcf0;
  --swp-gray-50: #f8fafc;
  --swp-gray-100: #f1f5f9;
  --swp-gray-200: #e2e8f0;
  --swp-gray-300: #cbd5e1;
  --swp-gray-400: #94a3b8;
  --swp-gray-500: #64748b;
  --swp-gray-600: #475569;
  --swp-gray-700: #334155;
  --swp-gray-800: #1e293b;
  --swp-gray-900: #0f172a;
  --swp-success: #10b981;
  --swp-success-rgb: 16, 185, 129;
  --swp-success-hover: #059669;
  --swp-success-dark: #047857;
  --swp-success-light: #d1fae5;
  --swp-success-lighter: #ecfdf5;
  --swp-danger: #ef4444;
  --swp-danger-rgb: 239, 68, 68;
  --swp-danger-hover: #dc2626;
  --swp-danger-dark: #b91c1c;
  --swp-danger-light: #fee2e2;
  --swp-danger-lighter: #fef2f2;
  --swp-warning: #f59e0b;
  --swp-warning-rgb: 245, 158, 11;
  --swp-warning-hover: #d97706;
  --swp-warning-dark: #92400e;
  --swp-warning-light: #fef3c7;
  --swp-warning-lighter: #fffbeb;
  --swp-info: #3b82f6;
  --swp-info-rgb: 59, 130, 246;
  --swp-info-hover: #2563eb;
  --swp-info-dark: #1d4ed8;
  --swp-info-light: #dbeafe;
  --swp-info-lighter: #eff6ff;
  --swp-body-bg: #f4f6f8;
  --swp-surface: #ffffff;
  --swp-surface-hover: #f8fafc;
  --swp-surface-elevated: #ffffff;
  --swp-surface-overlay: rgb(15 23 42 / 50%);
  --swp-body-color: var(--swp-text-primary);
  --swp-text-primary: #1e293b;
  --swp-text-secondary: #475569;
  --swp-text-muted: #64748b;
  --swp-text-light: #94a3b8;
  --swp-text-inverse: #ffffff;
  --swp-border: #e2e8f0;
  --swp-border-light: #f1f5f9;
  --swp-border-dark: #cbd5e1;
  --swp-link-color: var(--swp-primary);
  --swp-link-hover-color: var(--swp-primary-dark);
}

:root {
  --swp-space-0: 0;
  --swp-space-px: 1px;
  --swp-space-0-5: 0.125rem;
  --swp-space-1: 0.25rem;
  --swp-space-1-5: 0.375rem;
  --swp-space-2: 0.5rem;
  --swp-space-2-5: 0.625rem;
  --swp-space-3: 0.75rem;
  --swp-space-3-5: 0.875rem;
  --swp-space-4: 1rem;
  --swp-space-5: 1.25rem;
  --swp-space-6: 1.5rem;
  --swp-space-7: 1.75rem;
  --swp-space-8: 2rem;
  --swp-space-9: 2.25rem;
  --swp-space-10: 2.5rem;
  --swp-space-11: 2.75rem;
  --swp-space-12: 3rem;
  --swp-space-14: 3.5rem;
  --swp-space-16: 4rem;
  --swp-space-20: 5rem;
  --swp-space-24: 6rem;
}

:root {
  --swp-radius-none: 0;
  --swp-radius-sm: 0.375rem;
  --swp-radius-md: 0.5rem;
  --swp-radius-lg: 0.75rem;
  --swp-radius-xl: 1rem;
  --swp-radius-2xl: 1.5rem;
  --swp-radius-full: 9999px;
}

:root {
  --swp-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 5%);
  --swp-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 10%), 0 1px 2px -1px rgb(0 0 0 / 10%);
  --swp-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -2px rgb(0 0 0 / 10%);
  --swp-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%);
  --swp-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 10%), 0 8px 10px -6px rgb(0 0 0 / 10%);
  --swp-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 25%);
  --swp-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 5%);
  --swp-shadow-primary: 0 4px 14px 0 rgb(46 150 58 / 25%);
  --swp-shadow-primary-lg: 0 8px 20px 0 rgb(46 150 58 / 30%);
  --swp-shadow-danger: 0 4px 14px 0 rgb(239 68 68 / 25%);
  --swp-shadow-danger-lg: 0 8px 20px 0 rgb(239 68 68 / 30%);
  --swp-ring-primary: 0 0 0 3px rgb(46 150 58 / 15%);
  --swp-ring-danger: 0 0 0 3px rgb(239 68 68 / 15%);
  --swp-ring-offset: 0 0 0 2px var(--swp-surface);
}

:root {
  --swp-duration-fast: 150ms;
  --swp-duration-base: 200ms;
  --swp-duration-slow: 300ms;
  --swp-duration-slower: 400ms;
  --swp-ease-linear: linear;
  --swp-ease-in: cubic-bezier(0.4, 0, 1, 1);
  --swp-ease-out: cubic-bezier(0, 0, 0.2, 1);
  --swp-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --swp-transition-fast: var(--swp-duration-fast) var(--swp-ease-in-out);
  --swp-transition-base: var(--swp-duration-base) var(--swp-ease-in-out);
  --swp-transition-slow: var(--swp-duration-slow) var(--swp-ease-in-out);
  --swp-transition-colors: color var(--swp-transition-fast),
                           background-color var(--swp-transition-fast),
                           border-color var(--swp-transition-fast);
  --swp-transition-shadow: box-shadow var(--swp-transition-base);
  --swp-transition-transform: transform var(--swp-transition-base);
  --swp-transition-all: all var(--swp-transition-base);
}

:root {
  --swp-z-dropdown: 1000;
  --swp-z-sticky: 1020;
  --swp-z-fixed: 1030;
  --swp-z-modal-backdrop: 1040;
  --swp-z-modal: 1050;
  --swp-z-popover: 1060;
  --swp-z-tooltip: 1070;
  --swp-z-toast: 1080;
}

:root {
  --swp-card-bg: var(--swp-surface);
  --swp-card-border: var(--swp-border-light);
  --swp-card-radius: var(--swp-radius-lg);
  --swp-card-shadow: var(--swp-shadow-sm);
  --swp-card-padding: var(--swp-space-6);
  --swp-card-header-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-card-footer-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-input-bg: var(--swp-surface);
  --swp-input-border: var(--swp-border);
  --swp-input-radius: var(--swp-radius-md);
  --swp-input-padding-y: var(--swp-space-2-5);
  --swp-input-padding-x: var(--swp-space-4);
  --swp-input-focus-border: var(--swp-primary);
  --swp-input-focus-ring: var(--swp-ring-primary);
  --swp-btn-radius: var(--swp-radius-md);
  --swp-btn-padding-y: var(--swp-space-2-5);
  --swp-btn-padding-x: var(--swp-space-4);
  --swp-btn-font-weight: 500;
  --swp-modal-bg: var(--swp-surface);
  --swp-modal-radius: var(--swp-radius-xl);
  --swp-modal-shadow: var(--swp-shadow-xl);
  --swp-modal-padding: var(--swp-space-6);
  --swp-table-bg: var(--swp-surface);
  --swp-table-border: var(--swp-border-light);
  --swp-table-header-bg: var(--swp-gray-50);
  --swp-table-row-hover-bg: var(--swp-gray-50);
  --swp-table-cell-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-alert-radius: var(--swp-radius-md);
  --swp-alert-padding: var(--swp-space-4);
  --swp-money-currency: var(--swp-text-secondary);
  --swp-money-neutral: var(--swp-text-primary);
  --swp-money-paid: var(--swp-success-dark);
  --swp-money-overdue: var(--swp-danger-dark);
  --swp-money-total-scale: 1.125;
  --swp-money-currency-scale: 0.75em;
}

/**
 * SolidInvoice Design System - Typography
 *
 * Typography scale, font families, weights, and line heights.
 * Uses system fonts for optimal performance and native feel.
 */
:root {
  --swp-font-sans: -apple-system, blinkmacsystemfont, 'Segoe UI', roboto,
                   'Helvetica Neue', arial, 'Noto Sans', sans-serif,
                   'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
                   'Noto Color Emoji';
  --swp-font-mono: ui-monospace, sfmono-regular, 'SF Mono', menlo, monaco,
                   consolas, 'Liberation Mono', 'Courier New', monospace;
  --swp-font-family: var(--swp-font-sans);
}

:root {
  --swp-text-xs: 0.75rem;
  --swp-text-sm: 0.8125rem;
  --swp-text-base: 0.9375rem;
  --swp-text-md: 1rem;
  --swp-text-lg: 1.125rem;
  --swp-text-xl: 1.25rem;
  --swp-text-2xl: 1.5rem;
  --swp-text-3xl: 1.875rem;
  --swp-text-4xl: 2.25rem;
  --swp-text-5xl: 3rem;
}

:root {
  --swp-leading-none: 1;
  --swp-leading-tight: 1.25;
  --swp-leading-snug: 1.375;
  --swp-leading-normal: 1.5;
  --swp-leading-relaxed: 1.625;
  --swp-leading-loose: 2;
}

:root {
  --swp-font-thin: 100;
  --swp-font-extralight: 200;
  --swp-font-light: 300;
  --swp-font-normal: 400;
  --swp-font-medium: 500;
  --swp-font-semibold: 600;
  --swp-font-bold: 700;
  --swp-font-extrabold: 800;
  --swp-font-black: 900;
}

:root {
  --swp-tracking-tighter: -0.05em;
  --swp-tracking-tight: -0.025em;
  --swp-tracking-normal: 0;
  --swp-tracking-wide: 0.025em;
  --swp-tracking-wider: 0.05em;
  --swp-tracking-widest: 0.1em;
}

.text-page-title {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-tight);
  color: var(--swp-text-primary);
  letter-spacing: var(--swp-tracking-tight);
}

.text-page-subtitle {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-card-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-snug);
  color: var(--swp-text-primary);
}

.text-card-subtitle {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-section-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-snug);
  color: var(--swp-text-primary);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.text-section-title svg,
.text-section-title i {
  color: var(--swp-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.text-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-secondary);
}

.text-body {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-relaxed);
  color: var(--swp-body-color);
}

.text-help {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-mono {
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
}

.text-table-header {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
}

.text-emphasis {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

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

.text-link {
  color: var(--swp-link-color);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.text-link:hover {
  color: var(--swp-link-hover-color);
  text-decoration: underline;
}

.text-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.text-line-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.text-line-clamp-3 {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/**
 * SolidInvoice Design System - Component Index
 *
 * Custom component styles that extend Bootstrap/Tabler.
 * Only add styles here that provide functionality beyond what Bootstrap/Tabler offer.
 *
 * Note: Most component styling comes from Bootstrap 5 and Tabler.
 * This file imports only custom extensions, not replacements.
 */
/**
 * SolidInvoice - Shared Form Page Styles
 *
 * Consolidated form-page layout pattern used across TaxBundle, ClientBundle,
 * UserBundle (Profile, Invite, ChangePassword) and similar form pages.
 *
 * Template structure:
 *   .form-page > .form-page-container[--narrow|--medium|--wide] >
 *     .form-page-header > .form-page-header-content >
 *       .form-page-icon[--security] + div(.form-page-title + .form-page-subtitle)
 *     .form-page-sections > .form-page-section >
 *       .section-header > .section-icon[--security] + .section-header-text
 *         (.section-title + .section-description)
 *       .section-content > .form-grid > .form-field[.form-field-wide]
 *     .form-page-actions > .form-page-actions-inner[--medium]
 */
.form-page {
  min-height: 100%;
}

.form-page-container {
  margin: 0 auto;
  padding-bottom: var(--swp-space-24);
}
.form-page-container--narrow {
  max-width: 800px;
}
.form-page-container--medium {
  max-width: 900px;
}
.form-page-container--wide {
  max-width: 1100px;
}

.form-page-header {
  margin-bottom: var(--swp-space-8);
  padding: var(--swp-space-6) 0;
}

.form-page-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.form-page-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.form-page-icon--security {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.2) 0%, rgba(var(--swp-success-rgb), 0.1) 100%);
  color: var(--swp-success);
}

.form-page-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.form-page-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.form-page-sections {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-6);
}

.form-page-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.form-page-section:hover {
  border-color: var(--swp-border-dark);
}
.form-page-section:focus-within {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}

.section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-5) var(--swp-space-6) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border);
}

.section-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.1) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.section-icon--security {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.15) 0%, rgba(var(--swp-success-rgb), 0.05) 100%);
  color: var(--swp-success);
}

.section-header-text {
  flex: 1;
  padding-top: var(--swp-space-1);
}

.section-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
  line-height: 1.4;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}

.section-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.5;
}

.section-content {
  padding: var(--swp-space-6);
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-4);
}
@media (width <= 768px) {
  .form-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-3);
  }
}

.form-field {
  display: flex;
  flex-direction: column;
}

.form-field-wide {
  grid-column: 1/-1;
}

.form-page-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.form-page-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 800px;
  margin: 0 auto;
  padding: 0 var(--swp-space-4);
}
.form-page-actions-inner--medium {
  max-width: 900px;
}

.btn-save,
.btn-save-primary {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3) var(--swp-space-6);
  font-weight: var(--swp-font-semibold);
  box-shadow: var(--swp-shadow-primary);
}
.btn-save:hover,
.btn-save-primary:hover {
  box-shadow: var(--swp-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-save:active,
.btn-save-primary:active {
  transform: translateY(0);
}

@media (width <= 767.98px) {
  .form-page {
    padding: var(--swp-space-4);
  }
  .form-page-header {
    padding: var(--swp-space-4) 0;
    margin-bottom: var(--swp-space-6);
  }
  .form-page-header-content {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--swp-space-3);
  }
  .form-page-icon {
    width: 48px;
    height: 48px;
  }
  .form-page-title {
    font-size: 1.5rem;
  }
  .section-header {
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--swp-space-4) var(--swp-space-4) var(--swp-space-3);
  }
  .section-icon {
    width: 36px;
    height: 36px;
  }
  .section-content {
    padding: var(--swp-space-4);
  }
  .form-page-actions-inner {
    gap: var(--swp-space-3);
  }
  .form-page-actions-inner .btn {
    flex: 1;
  }
}
@media print {
  .form-page-actions {
    display: none !important;
  }
  .form-page {
    padding: 0;
  }
  .form-page-container {
    max-width: none;
  }
}
/**
 * SolidInvoice - Document View Shared Styles
 *
 * Shared layout and component styles for Invoice and Quote view pages.
 * Uses generic `doc-view-*` / `doc-*` class names to avoid duplication.
 * Both invoice-view.scss and quote-view.scss use these classes directly.
 */
.doc-view-page {
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--swp-space-6);
}

.doc-view-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-space-6);
}
@media (width <= 768px) {
  .doc-view-header {
    flex-direction: column;
    align-items: flex-start;
  }
}

.doc-view-header-left {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.doc-view-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, var(--swp-primary-lighter) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.doc-view-title-group {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.doc-view-title {
  font-size: var(--swp-text-xl, 1.25rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0;
  line-height: 1.3;
}

.doc-view-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-wrap: wrap;
}

.doc-view-meta-item {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
}
.doc-view-meta-item svg {
  opacity: 0.7;
}

.doc-view-header-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
}
@media (width <= 768px) {
  .doc-view-header-actions {
    width: 100%;
    justify-content: flex-end;
  }
}

.doc-view-utility-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
}

.doc-view-header .dropdown-menu {
  min-width: 200px;
  padding: var(--swp-space-2);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-lg);
  border-radius: var(--swp-radius-lg);
}
.doc-view-header .dropdown-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-sm, 0.875rem);
}
.doc-view-header .dropdown-menu .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.doc-view-header .dropdown-menu .dropdown-item.text-danger:hover {
  background: var(--swp-danger-lighter);
}
.doc-view-header .dropdown-menu .dropdown-item svg {
  opacity: 0.7;
}
.doc-view-header .dropdown-menu .dropdown-divider {
  margin: var(--swp-space-2) 0;
  border-color: var(--swp-border-light);
}

.btn-hero {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3) var(--swp-space-5);
  font-weight: var(--swp-font-semibold, 600);
  font-size: var(--swp-text-base, 1rem);
  box-shadow: var(--swp-shadow-primary);
  transition: all var(--swp-transition-base);
}
.btn-hero:hover {
  transform: translateY(-1px);
  box-shadow: var(--swp-shadow-primary-lg);
}
.btn-hero:active {
  transform: translateY(0);
}

.btn-hero-urgent {
  background: linear-gradient(135deg, var(--swp-danger) 0%, var(--swp-danger-hover) 100%);
  border-color: var(--swp-danger);
  box-shadow: var(--swp-shadow-danger);
}
.btn-hero-urgent:hover {
  background: linear-gradient(135deg, var(--swp-danger-hover) 0%, var(--swp-danger) 100%);
  box-shadow: var(--swp-shadow-danger-lg);
}

.doc-view-content {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: var(--swp-space-6);
}
@media (width <= 1024px) {
  .doc-view-content {
    grid-template-columns: 1fr;
  }
}

.doc-view-document {
  min-width: 0;
}

.doc-card {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  overflow: hidden;
}

.doc-card .badge,
.doc-page-header .badge,
.doc-view-header .badge,
.doc-view-sidebar .badge {
  border-radius: var(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-font-medium, 500);
  letter-spacing: 0;
}
.doc-card .badge.bg-gray.text-gray-fg,
.doc-page-header .badge.bg-gray.text-gray-fg,
.doc-view-header .badge.bg-gray.text-gray-fg,
.doc-view-sidebar .badge.bg-gray.text-gray-fg {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.doc-header-from-to {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-8);
  padding: var(--swp-space-6);
  background: linear-gradient(180deg, var(--swp-gray-50) 0%, var(--swp-surface) 100%);
  border-bottom: 1px solid var(--swp-border-light);
}
@media (width <= 640px) {
  .doc-header-from-to {
    grid-template-columns: 1fr;
    gap: var(--swp-space-6);
  }
}

.doc-party {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.doc-party-label {
  font-size: var(--swp-text-xs, 0.75rem);
  font-weight: var(--swp-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
}

.doc-party-name {
  font-size: var(--swp-text-lg, 1.125rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-2) 0;
}

.doc-party-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  line-height: 1.5;
}
.doc-party-detail svg {
  flex-shrink: 0;
  margin-top: 2px;
  opacity: 0.6;
}
.doc-party-detail .detail-label {
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-muted);
}
.doc-party-detail .detail-label::after {
  content: ":";
  margin-right: var(--swp-space-1);
}
.doc-party-detail .detail-value {
  color: var(--swp-text-secondary);
}
.doc-party-detail a.detail-value {
  color: var(--swp-primary);
}
.doc-party-detail a.detail-value:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.doc-items {
  padding: var(--swp-space-6);
}
@media (width <= 640px) {
  .doc-items {
    padding: var(--swp-space-4);
  }
}

.doc-items-table {
  width: 100%;
  border-collapse: collapse;
}
.doc-items-table thead th {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-xs, 0.75rem);
  font-weight: var(--swp-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-border);
  text-align: left;
}
.doc-items-table thead th.column-price, .doc-items-table thead th.column-qty, .doc-items-table thead th.column-tax, .doc-items-table thead th.column-total {
  text-align: right;
}
@media (width <= 640px) {
  .doc-items-table thead {
    display: none;
  }
}
.doc-items-table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.doc-items-table tbody tr:hover {
  background: var(--swp-gray-50);
}
@media (width <= 640px) {
  .doc-items-table tbody tr {
    display: block;
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border-radius: var(--swp-radius-md);
    border: 1px solid var(--swp-border-light);
  }
  .doc-items-table tbody tr:hover {
    background: var(--swp-gray-100);
  }
  .doc-items-table tbody tr:last-child {
    margin-bottom: 0;
  }
}
.doc-items-table tbody td {
  padding: var(--swp-space-4);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  border-bottom: 1px solid var(--swp-border-light);
  vertical-align: top;
}
.doc-items-table tbody td.column-description {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium, 500);
}
.doc-items-table tbody td.column-price, .doc-items-table tbody td.column-qty, .doc-items-table tbody td.column-tax, .doc-items-table tbody td.column-total {
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.doc-items-table tbody td.column-total {
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
}
@media (width <= 640px) {
  .doc-items-table tbody td {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--swp-space-2) 0;
    border-bottom: 1px solid var(--swp-border-light);
    text-align: right;
  }
  .doc-items-table tbody td::before {
    content: attr(data-label);
    font-size: var(--swp-text-xs, 0.75rem);
    font-weight: var(--swp-font-semibold, 600);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    text-align: left;
    flex-shrink: 0;
    margin-right: var(--swp-space-3);
  }
  .doc-items-table tbody td.column-description {
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    padding-bottom: var(--swp-space-3);
    margin-bottom: var(--swp-space-2);
    border-bottom: 2px solid var(--swp-border);
  }
  .doc-items-table tbody td.column-description::before {
    margin-bottom: var(--swp-space-1);
  }
  .doc-items-table tbody td.column-total {
    border-bottom: none;
    padding-bottom: 0;
  }
}
@media (width >= 641px) {
  .doc-items-table .column-description {
    width: auto;
  }
  .doc-items-table .column-price {
    width: 120px;
  }
  .doc-items-table .column-qty {
    width: 80px;
  }
  .doc-items-table .column-tax {
    width: 100px;
  }
  .doc-items-table .column-total {
    width: 120px;
  }
}

.doc-totals {
  display: flex;
  justify-content: flex-end;
  padding: var(--swp-space-6);
  padding-top: 0;
}

.doc-totals-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  min-width: 280px;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-2) 0;
}
.totals-row .totals-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
}
.totals-row .totals-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.totals-row-payment .totals-value {
  color: var(--swp-success);
}

.totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.totals-row-final {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-dark);
}
.totals-row-final .totals-label {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
}
.totals-row-final .totals-value {
  font-size: var(--swp-text-lg, 1.125rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}

.doc-footer {
  padding: var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-gray-50);
}

.doc-footer-section + .doc-footer-section {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border-light);
}

.doc-footer-title {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-2) 0;
}

.doc-footer-text {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  margin: 0;
  line-height: 1.6;
  white-space: pre-wrap;
}

.doc-view-sidebar {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}
@media (width <= 1024px) {
  .doc-view-sidebar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  }
}

.doc-sidebar-card {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  overflow: hidden;
}

.doc-sidebar-card-muted {
  background: var(--swp-gray-50);
}

.doc-sidebar-card-success {
  border-left: 4px solid var(--swp-success);
}

.doc-sidebar-card-highlight {
  border-left: 4px solid var(--swp-primary);
}

.doc-sidebar-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  border-bottom: 1px solid var(--swp-border-light);
}

.doc-sidebar-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-sm);
  color: var(--swp-primary);
}

.doc-sidebar-card-success .doc-sidebar-card-icon {
  background: var(--swp-success-lighter);
  color: var(--swp-success);
}

.doc-sidebar-card-title {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0;
}

.doc-sidebar-card-body {
  padding: var(--swp-space-4);
}

.doc-summary-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.summary-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-3);
}
.summary-item .summary-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
}
.summary-item .summary-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}
.summary-item .summary-value-amount {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.summary-item .summary-value-balance {
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-warning);
}

.summary-item-overdue {
  padding: var(--swp-space-2);
  margin: calc(-1 * var(--swp-space-2));
  background: var(--swp-danger-lighter);
  border-radius: var(--swp-radius-sm);
}
.summary-item-overdue .summary-value {
  color: var(--swp-danger);
}

.summary-item-paid .summary-value {
  color: var(--swp-success);
}

.client-info {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.client-name {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-primary);
  text-decoration: none;
}
.client-name:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.client-contacts {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.client-contact {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.contact-name {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  margin-bottom: var(--swp-space-1);
}

.contact-email,
.contact-detail {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-muted);
}
.contact-email svg,
.contact-detail svg {
  opacity: 0.6;
}

.payments-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.payment-card {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border-left: 3px solid var(--swp-gray-300);
  transition: all var(--swp-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--swp-success);
  background: var(--swp-success-lighter);
}

.payment-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--swp-space-2);
}

.payment-amount {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.payment-method,
.payment-date {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-muted);
}
.payment-method svg,
.payment-date svg {
  opacity: 0.6;
}

.payment-message {
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-secondary);
  font-style: italic;
  margin-top: var(--swp-space-1);
}

.related-quote-link,
.related-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-primary);
  text-decoration: none;
}
.related-quote-link:hover,
.related-invoice-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.related-invoice-status {
  margin-top: var(--swp-space-2);
}

@media print {
  .doc-view-page {
    max-width: 100%;
    padding: 0;
    margin: 0;
  }
  .doc-view-content {
    display: block;
  }
  .doc-view-document {
    width: 100%;
  }
  .doc-card {
    box-shadow: none;
    border: none;
  }
  .doc-header-from-to {
    background: none;
    padding: 20px 0;
  }
  .doc-items-table thead th {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-totals-grid {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-footer {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .no-print {
    display: none !important;
  }
}
/**
 * External Document View - Shared Styles
 *
 * Shared styles for public-facing invoice and quote views.
 * Invoice-specific: external-invoice-view.scss
 * Quote-specific: external-quote-view.scss
 */
.ext-doc-page {
  min-height: 100vh;
  background: var(--tblr-gray-50, #f8fafc);
}

.app-branding-header {
  padding: 1.5rem 0;
  border-bottom: 2px solid var(--tblr-border-color-light, #e2e8f0);
}
.app-branding-header .app-logo img {
  max-height: 40px;
  width: auto;
  display: block;
}
.app-branding-header .app-brand-name {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1.2;
}
.app-branding-header .app-brand-tagline {
  font-size: 0.875rem;
  color: var(--tblr-secondary, #64748b);
  opacity: 0.8;
  line-height: 1.3;
}

.ext-doc-action-bar {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-action-bar .card-body {
  padding: 0.75rem 1.5rem;
}
.ext-doc-action-bar .btn {
  font-weight: 500;
}

.ext-doc-company-name {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.3;
}

.ext-doc-number {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.2;
  letter-spacing: -0.02em;
}

.ext-doc-number-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-vat-number {
  font-size: 0.9375rem;
  opacity: 0.75;
}

.ext-doc-logo img {
  max-width: 100%;
  height: auto;
  display: block;
}

.ext-doc-metadata-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: box-shadow 0.2s ease;
}
.ext-doc-metadata-card:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.ext-doc-metadata-card .card-body {
  padding: 1.5rem;
}

.ext-doc-metadata-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  margin-bottom: 0.375rem;
  opacity: 0.6;
}

.ext-doc-metadata-value {
  font-size: 1rem;
  color: var(--tblr-body-color, #1e293b);
}

.ext-doc-metadata-total {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1.2;
}

.ext-doc-parties-section {
  margin-bottom: 2rem;
}

.ext-doc-party-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-party-name {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.4;
}

.ext-doc-party-detail {
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.6;
  margin-bottom: 0.375rem;
  font-size: 0.9375rem;
}

.ext-doc-items-table {
  margin-bottom: 2rem;
}
.ext-doc-items-table thead th {
  border-bottom: 2px solid var(--tblr-border-color, #cbd5e1);
  padding: 0.875rem 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  font-size: 0.75rem;
  opacity: 0.6;
}
.ext-doc-items-table tbody tr {
  border-bottom: 1px solid var(--tblr-border-color-light, #e2e8f0);
  transition: background-color 0.15s ease;
}
.ext-doc-items-table tbody tr:last-child {
  border-bottom: none;
}
.ext-doc-items-table tbody tr:hover {
  background-color: var(--tblr-gray-50, #f8fafc);
}
.ext-doc-items-table tbody td {
  padding: 1rem 0.75rem;
  color: var(--tblr-body-color, #1e293b);
  vertical-align: top;
}
.ext-doc-items-table .item-description {
  font-weight: 500;
  line-height: 1.5;
  color: var(--tblr-body-color, #1e293b);
}
.ext-doc-items-table .item-amount {
  font-weight: 600;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-totals-card .card-body {
  padding: 1.5rem;
}

.ext-doc-totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.625rem 0;
}
.ext-doc-totals-row:not(:last-child) {
  margin-bottom: 0.375rem;
}

.ext-doc-totals-label {
  font-size: 0.9375rem;
  color: var(--tblr-body-color, #1e293b);
  font-weight: 500;
}

.ext-doc-totals-value {
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-final {
  border-top: 2px solid var(--tblr-border-color-dark, #94a3b8);
  padding-top: 1rem;
  margin-top: 0.75rem;
}
.ext-doc-totals-final .ext-doc-totals-row {
  padding: 0.5rem 0 0;
  margin-bottom: 0;
}
.ext-doc-totals-final .ext-doc-totals-label {
  font-size: 1.25rem;
  font-weight: 600;
}
.ext-doc-totals-final .ext-doc-totals-value {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1;
}

.ext-doc-footer .card {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-footer .btn-sm {
  font-weight: 500;
  padding: 0.5rem 1rem;
}
.ext-doc-footer .app-logo img {
  max-height: 24px;
  width: auto;
  display: block;
}

.badge {
  font-weight: 600;
  letter-spacing: 0.025em;
}

hr {
  border-color: var(--tblr-border-color-light, #e2e8f0);
  opacity: 1;
}

.btn:focus-visible {
  outline: 2px solid var(--tblr-primary, #2e963a);
  outline-offset: 2px;
}

.card-lg {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
}
.card-lg .card-body {
  padding: 2.5rem;
}

@media (width <= 991px) {
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1.25rem;
  }
  .card-lg .card-body {
    padding: 2rem;
  }
}
@media (width <= 767px) {
  .ext-doc-number {
    font-size: 1.75rem;
  }
  .ext-doc-metadata-total {
    font-size: 1.5rem;
  }
  .ext-doc-totals-final .ext-doc-totals-value {
    font-size: 1.75rem;
  }
  .ext-doc-parties-section .col-sm-6:first-child {
    margin-bottom: 1.5rem;
  }
}
@media (width <= 576px) {
  .container-xl {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1rem;
  }
  .app-branding-header {
    padding: 1rem 0;
  }
  .app-branding-header .d-flex {
    flex-direction: column;
    text-align: center;
  }
  .app-branding-header .app-brand-name {
    font-size: 1.25rem;
  }
  .app-branding-header .app-brand-tagline {
    font-size: 0.8125rem;
  }
  .ext-doc-footer .btn-sm {
    width: 100%;
    margin-bottom: 0.5rem;
  }
  .ext-doc-footer .btn-sm:last-child {
    margin-bottom: 0;
  }
  .ext-doc-metadata-card .col-sm-4,
  .ext-doc-metadata-card .col-sm-6 {
    margin-bottom: 1rem;
  }
  .ext-doc-metadata-card .col-sm-4:last-child,
  .ext-doc-metadata-card .col-sm-6:last-child {
    margin-bottom: 0;
  }
  .ext-doc-action-bar .d-flex.justify-content-between {
    flex-direction: column;
    gap: 0.75rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 {
    flex-direction: column;
    width: 100%;
    gap: 0.5rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 .btn {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .btn-primary,
  .ext-doc-action-bar .d-flex.justify-content-between .btn-danger {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-items-table {
    font-size: 0.875rem;
  }
  .ext-doc-items-table thead th {
    padding: 0.75rem 0.5rem;
  }
  .ext-doc-items-table tbody td {
    padding: 0.875rem 0.5rem;
  }
}
@media print {
  .no-print,
  .d-print-none {
    display: none !important;
    visibility: hidden !important;
  }
  @page {
    margin: 1cm;
  }
  html,
  body {
    background: #ffffff !important;
    height: auto !important;
    overflow: visible !important;
  }
  .ext-doc-page,
  .page-wrapper,
  .page-body {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    overflow: visible !important;
    width: 100% !important;
    background: #ffffff !important;
  }
  .container-xl {
    max-width: 100% !important;
    padding: 0.5cm !important;
    margin: 0 !important;
  }
  .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .card,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    box-shadow: none !important;
    border: 1px solid #dee2e6;
    break-inside: avoid;
    display: block !important;
    visibility: visible !important;
  }
  .card-body {
    display: block !important;
    visibility: visible !important;
    break-inside: avoid;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  table {
    break-inside: auto;
  }
  tr {
    break-inside: avoid;
    break-after: auto;
  }
  thead {
    display: table-header-group;
  }
  .bg-light,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    background-color: #f8f9fa !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .bg-danger {
    background-color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-primary,
  .ext-doc-metadata-total,
  .ext-doc-totals-final .ext-doc-totals-value {
    color: #2e963a !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-danger {
    color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-success {
    color: #10b981 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .ext-doc-items-table tbody tr:hover {
    background-color: transparent !important;
  }
  .ext-doc-metadata-card:hover {
    box-shadow: none !important;
  }
  hr {
    border-color: #cbd5e1 !important;
    opacity: 1 !important;
  }
}
/**
 * SolidInvoice - Shared Marketplace Styles
 *
 * Common styles shared between PaymentBundle and NotificationBundle marketplace pages.
 * Page-specific styles remain in payment-marketplace.scss and notification-marketplace.scss.
 */
.marketplace-panel {
  position: sticky;
  top: var(--swp-space-4);
  max-height: calc(100vh - var(--swp-space-16));
  overflow-y: auto;
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
}
.marketplace-panel::-webkit-scrollbar {
  width: 6px;
}
.marketplace-panel::-webkit-scrollbar-track {
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}
.marketplace-panel::-webkit-scrollbar-thumb {
  background: var(--swp-gray-300);
  border-radius: var(--swp-radius-full);
  transition: var(--swp-transition-colors);
}
.marketplace-panel::-webkit-scrollbar-thumb:hover {
  background: var(--swp-gray-400);
}

.marketplace-header h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.marketplace-header p {
  line-height: 1.5;
}
.marketplace-header .input-group {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
}
.marketplace-header .input-group .input-group-text {
  border-right: 0;
  color: var(--swp-text-muted);
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control {
  border-left: 0;
  padding-left: 0;
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control:focus {
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.1);
  border-color: var(--swp-primary);
}
.marketplace-header .input-group .form-control::placeholder {
  color: var(--swp-text-muted);
  opacity: 0.6;
}
.marketplace-header .input-group:has(.form-control:focus) .input-group-text {
  border-color: var(--swp-primary);
}

.delete-confirmation-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 1060;
  animation: marketplace-fade-in 0.15s ease;
  backdrop-filter: blur(4px);
}

.delete-confirmation-modal {
  position: fixed;
  inset: 0;
  z-index: 1070;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.15s ease;
}

.delete-confirmation-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  width: 100%;
  max-width: 480px;
  animation: marketplace-scale-in 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.delete-confirmation-header {
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
}
.delete-confirmation-header h4 {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--swp-text-primary);
}
.delete-confirmation-header .delete-icon-wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-danger-light);
  flex-shrink: 0;
}

.delete-confirmation-body {
  padding: var(--swp-space-6);
  color: var(--swp-text-secondary);
  line-height: 1.6;
}

.delete-confirmation-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top: 1px solid var(--swp-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-bottom-left-radius: var(--swp-radius-lg);
  border-bottom-right-radius: var(--swp-radius-lg);
}

@keyframes marketplace-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes marketplace-slide-up {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
@keyframes marketplace-scale-in {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
.badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.5rem;
  font-weight: 500;
  border-radius: var(--swp-radius-sm);
}

.marketplace-search-clear {
  z-index: 10;
  right: 8px !important;
}

/**
 * Global Search - Top navigation search bar with live results dropdown
 */
.global-search {
  position: relative;
  max-width: 600px;
}
.global-search-input-wrapper {
  position: relative;
  display: flex;
  align-items: center;
}
.global-search-icon {
  position: absolute;
  left: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  color: #9aa0ac;
  pointer-events: none;
  display: flex;
  align-items: center;
  line-height: 1;
  z-index: 1;
}
.global-search-input {
  box-sizing: border-box;
  width: 100%;
  padding: 0 6.5rem 0 2.5rem;
  height: 38px;
  line-height: 38px;
  background-color: #ffffff;
  border: 1px solid #d0d3d8;
  border-radius: 6px;
  font-size: 0.875rem;
  color: #354052;
  appearance: none;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.global-search-input::-webkit-search-cancel-button, .global-search-input::-webkit-search-decoration {
  appearance: none;
}
.global-search-input:focus {
  border-color: #2e963a;
  box-shadow: 0 0 0 3px rgba(46, 150, 58, 0.12);
  background-color: #ffffff;
  outline: none;
}
.global-search-input::placeholder {
  color: #9aa0ac;
}
.global-search-actions {
  position: absolute;
  right: 0.625rem;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: 6px;
}
.global-search-shortcut {
  display: flex;
  gap: 3px;
  pointer-events: none;
}
.global-search-shortcut kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.1rem 0.35rem;
  font-size: 0.7rem;
  font-family: var(--tblr-font-monospace);
  color: #9aa0ac;
  background-color: #f5f7fb;
  border: 1px solid #e6e7e9;
  border-radius: 3px;
  line-height: 1.4;
}

.search-help-trigger {
  background: none;
  border: 1px solid #e0e3e8;
  padding: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #adb5bd;
  transition: color 0.15s ease, border-color 0.15s ease;
  flex-shrink: 0;
  line-height: 1;
}
.search-help-trigger:hover {
  color: #495057;
  border-color: #9aa0ac;
}

.search-help-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
  margin-bottom: 0.75rem;
}

.search-help-op {
  font-size: 0.8rem;
  font-family: var(--tblr-font-monospace);
  background: #f5f7fb;
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  color: #354052;
}

.search-help-example {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 12px;
  background: #f8fafc;
  border-radius: 6px;
  border-left: 3px solid #2e963a;
}
.search-help-example code {
  font-size: 0.8rem;
  color: #1a56db;
  background: none;
  padding: 0;
  word-break: break-all;
}
.search-help-example span {
  font-size: 0.775rem;
  color: #9aa0ac;
}

#searchHelpModal .modal-body {
  padding: 0;
}

.search-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  min-width: 520px;
  margin-left: -60px;
  margin-right: -60px;
  background-color: #ffffff;
  border: 1px solid #e6e7e9;
  border-radius: 8px;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.08);
  isolation: isolate;
  z-index: 9999;
}
.search-dropdown.is-open {
  display: block;
  animation: search-dropdown-in 0.12s ease-out;
}

@keyframes search-dropdown-in {
  from {
    opacity: 0;
    transform: translateY(-4px) scale(0.99);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
.search-spinner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 1.25rem;
  color: #9aa0ac;
  font-size: 0.875rem;
}

.search-results {
  max-height: 440px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background-color: #ffffff;
  border-radius: 8px;
}
.search-results::-webkit-scrollbar {
  width: 4px;
}
.search-results::-webkit-scrollbar-track {
  background: transparent;
}
.search-results::-webkit-scrollbar-thumb {
  background-color: #e0e3e8;
  border-radius: 2px;
}

.search-group + .search-group {
  border-top: 1px solid #f0f2f5;
}
.search-group:last-child {
  padding-bottom: 0.25rem;
}
.search-group-label {
  padding: 0.625rem 0.875rem 0.25rem;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
}

.search-result-item.is-active .search-result-link {
  background-color: #f5f7fb;
}
.search-result-item:hover .search-result-link {
  background-color: #f5f7fb;
  text-decoration: none;
}

.search-result-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.875rem;
  color: #354052;
  text-decoration: none;
  transition: background-color 0.08s ease;
}

.search-result-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  padding: 6px;
  border-radius: 8px;
}
.search-result-icon svg {
  display: block;
}

.search-result-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}

.search-result-title {
  font-size: 0.875rem;
  font-weight: 500;
  color: #354052;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-result-subtitle {
  font-size: 0.775rem;
  color: #9aa0ac;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 1px;
}

.search-result-aside {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.2rem;
  flex-shrink: 0;
  margin-left: auto;
  padding-left: 0.5rem;
}

.search-result-badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.15rem 0.45rem;
}

.search-result-meta {
  font-size: 0.8rem;
  font-weight: 600;
  color: #354052;
  white-space: nowrap;
}

.search-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2.5rem 1rem;
  color: #9aa0ac;
  background-color: #ffffff;
}
.search-empty-icon {
  margin-bottom: 0.625rem;
  opacity: 0.4;
  display: flex;
}
.search-empty-text {
  margin: 0;
  font-size: 0.875rem;
  font-weight: 500;
}

.search-error {
  padding: 1.25rem;
  font-size: 0.875rem;
  color: var(--tblr-danger, #d63939);
  text-align: center;
  background-color: #ffffff;
}

.search-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.15rem 0.5rem;
  background-color: #e8f0fe;
  color: #1a56db;
  border-radius: 4px;
  font-size: 0.8rem;
  font-weight: 500;
  white-space: nowrap;
  flex-shrink: 0;
}
.search-chip-remove {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
  opacity: 0.6;
  font-size: 0.9rem;
  line-height: 1;
}
.search-chip-remove:hover {
  opacity: 1;
}

.search-chips-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 0.25rem 0.5rem;
  border-bottom: 1px solid #f0f2f5;
  min-height: 0;
}
.search-chips-bar:empty {
  display: none;
}

.search-suggestions {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  background: #ffffff;
  border: 1px solid #e6e7e9;
  border-radius: 6px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
  z-index: 10000;
  padding: 0.25rem 0;
  display: none;
}
.search-suggestions.is-open {
  display: block;
}
.search-suggestions-header {
  padding: 0.25rem 0.75rem 0.1rem;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
}
.search-suggestions-item {
  padding: 0.4rem 0.75rem;
  font-size: 0.85rem;
  cursor: pointer;
  color: #354052;
}
.search-suggestions-item:hover, .search-suggestions-item.is-active {
  background-color: #f5f7fb;
}
.search-suggestions-item code {
  font-size: 0.75rem;
  color: #6c757d;
  margin-left: 0.5rem;
}

/**
 * SolidInvoice DataGrid Component Styles
 *
 * Modern, clean data grid styling following the SolidInvoice design system.
 * Uses design tokens from _tokens.scss for consistency.
 */
.datagrid {
  position: relative;
  display: block;
}
.datagrid > .alert {
  margin-bottom: var(--swp-space-4);
}

.datagrid-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border-light);
  background: var(--swp-surface);
}

.datagrid-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.datagrid-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border-light);
}
@media (width <= 768px) {
  .datagrid-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
}

.datagrid-toolbar-start {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
  min-width: 0;
}

.datagrid-toolbar-end {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-shrink: 0;
}

.datagrid-search {
  position: relative;
  flex: 1;
  max-width: 320px;
}
.datagrid-search .datagrid-search-icon {
  position: absolute;
  left: var(--swp-space-3);
  top: 50%;
  transform: translateY(-50%);
  color: var(--swp-text-muted);
  pointer-events: none;
  width: 18px;
  height: 18px;
}
.datagrid-search .datagrid-search-input {
  width: 100%;
  padding: var(--swp-space-2) var(--swp-space-4) var(--swp-space-2) var(--swp-space-10);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border: 1px solid transparent;
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-fast), border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.datagrid-search .datagrid-search-input::placeholder {
  color: var(--swp-text-muted);
}
.datagrid-search .datagrid-search-input:hover {
  background: var(--swp-gray-100);
}
.datagrid-search .datagrid-search-input:focus {
  background: var(--swp-surface);
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  outline: none;
}

.datagrid-active-filters {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}

.datagrid-active-filter {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1) var(--swp-space-2);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.datagrid-active-filter:hover {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
.datagrid-active-filter:hover .datagrid-active-filter-remove {
  color: var(--swp-danger);
}
.datagrid-active-filter .datagrid-active-filter-key {
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
}
.datagrid-active-filter .datagrid-active-filter-key::after {
  content: ":";
  margin-right: var(--swp-space-1);
}
.datagrid-active-filter .datagrid-active-filter-value {
  max-width: 150px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.datagrid-active-filter .datagrid-active-filter-remove {
  width: 14px;
  height: 14px;
  margin-left: var(--swp-space-1);
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}

.datagrid-filter-dropdown {
  position: relative;
}

.datagrid-filter-panel {
  width: 320px;
  max-height: calc(100vh - 200px);
  padding: 0 !important;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-lg);
  overflow: hidden;
}
.datagrid-filter-panel .dropdown-menu,
.datagrid-filter-panel .select2-container--open {
  z-index: 1060 !important;
}

.datagrid-filter-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.datagrid-filter-panel-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.datagrid-filter-panel-title svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}

.datagrid-filter-panel-body {
  padding: var(--swp-space-4);
  max-height: calc(100vh - 350px);
  overflow-y: auto;
}

.datagrid-filter-form {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.datagrid-filter-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.datagrid-filter-field .form-select,
.datagrid-filter-field select {
  position: relative;
  z-index: 1;
}
.datagrid-filter-field .row {
  --bs-gutter-x: 0.5rem;
}

.datagrid-filter-label {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.datagrid-filter-widget > div:has(> div > input[type=date]) {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-2);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div .form-label {
  display: block;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-1);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div input[type=date] {
  width: 100%;
}
.datagrid-filter-widget .form-check {
  display: flex !important;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-widget .form-check:hover {
  background: var(--swp-gray-50);
}
.datagrid-filter-widget .form-check.form-switch {
  padding-left: var(--swp-space-3);
}
.datagrid-filter-widget .form-check .form-check-input {
  width: 16px !important;
  height: 16px !important;
  min-width: 16px;
  margin: 0 !important;
  flex-shrink: 0;
  border-radius: 3px !important;
  border: 1px solid var(--swp-border-dark);
  background-color: var(--swp-surface);
  cursor: pointer;
}
.datagrid-filter-widget .form-check .form-check-input:checked {
  background-color: var(--swp-primary);
  border-color: var(--swp-primary);
}
.datagrid-filter-widget .form-check .form-check-input:focus {
  box-shadow: var(--swp-ring-primary);
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox] {
  border-radius: 3px !important;
  background-image: none;
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox]:checked {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10l3 3l6-6%27/%3e%3c/svg%3e");
}
.datagrid-filter-widget .form-check .form-check-label {
  display: inline-block !important;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-primary);
  cursor: pointer;
  margin-left: var(--swp-space-2);
  user-select: none;
}
.datagrid-filter-widget .form-check + .form-check {
  margin-top: var(--swp-space-1);
}

.datagrid-filter-panel-footer {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-light);
}

.datagrid-filter-panel .form-control,
.datagrid-filter-panel .form-select {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  border-color: var(--swp-border);
}
.datagrid-filter-panel .form-control:focus,
.datagrid-filter-panel .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.datagrid-filter-panel .datagrid-filter-field > .form-label {
  display: none;
}
.datagrid-filter-panel .datagrid-filter-field .row .form-label {
  display: block;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div {
  padding-left: var(--swp-space-1);
  padding-right: var(--swp-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div:first-child {
  padding-left: 0;
}
.datagrid-filter-panel .datagrid-filter-field .row > div:last-child {
  padding-right: 0;
}
.datagrid-filter-panel .form-check {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-1-5) var(--swp-space-2);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-panel .form-check:hover {
  background: var(--swp-gray-50);
}
.datagrid-filter-panel .form-check .form-check-input {
  width: 16px;
  height: 16px;
  margin: 0;
  flex-shrink: 0;
}
.datagrid-filter-panel .form-check .form-check-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  cursor: pointer;
}
.datagrid-filter-panel .form-check + .form-check {
  margin-top: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] {
  min-height: 120px;
  padding: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] option {
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-sm);
}
.datagrid-filter-panel select[multiple] option:checked {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}

.datagrid-export-dropdown {
  position: relative;
}

.datagrid-export-menu {
  width: 280px;
  padding: 0 !important;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-lg);
  overflow: hidden;
}

.datagrid-export-menu-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.datagrid-export-menu-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.datagrid-export-menu-title svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}

.datagrid-export-menu-subtitle {
  margin: var(--swp-space-1) 0 0;
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.datagrid-export-menu-body {
  display: flex;
  flex-direction: column;
  padding: var(--swp-space-2);
  gap: var(--swp-space-1);
}

.datagrid-export-option {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-primary);
  text-decoration: none;
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
  cursor: pointer;
}
.datagrid-export-option:hover, .datagrid-export-option:focus-visible {
  background: var(--swp-gray-50);
  color: var(--swp-text-primary);
  outline: none;
}

.datagrid-export-option-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  color: var(--swp-text-secondary);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
}
.datagrid-export-option:hover .datagrid-export-option-icon, .datagrid-export-option:focus-visible .datagrid-export-option-icon {
  color: var(--swp-primary);
  border-color: var(--swp-primary-light);
  background: var(--swp-primary-lighter);
}

.datagrid-export-option-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.datagrid-export-option-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  letter-spacing: 0.02em;
}

.datagrid-export-option-hint {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.datagrid-column-picker .dropdown-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-column-picker .dropdown-toggle:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-border-dark);
}
.datagrid-column-picker .dropdown-toggle::after {
  display: none;
}
.datagrid-column-picker .dropdown-menu {
  min-width: 200px;
  max-height: 320px;
  overflow-y: auto;
  padding: var(--swp-space-2);
}
.datagrid-column-picker .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
}
.datagrid-column-picker .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.datagrid-column-picker .dropdown-item input[type=checkbox] {
  width: 16px;
  height: 16px;
  accent-color: var(--swp-primary);
}

.datagrid-table-wrapper {
  overflow-x: auto;
}

.datagrid-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--swp-text-sm);
}
.datagrid-table th,
.datagrid-table td {
  padding: var(--swp-space-3) var(--swp-space-4);
  text-align: left;
  vertical-align: middle;
  border-bottom: 1px solid var(--swp-border-light);
}
.datagrid-table th {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: var(--swp-gray-50);
  white-space: nowrap;
  user-select: none;
}
.datagrid-table tbody {
  font-variant-numeric: tabular-nums;
}
.datagrid-table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.datagrid-table tbody tr:hover {
  background: var(--swp-surface-hover);
}
.datagrid-table tbody tr.selected {
  background: var(--swp-primary-lighter);
}
.datagrid-table tbody tr.selected:hover {
  background: var(--swp-primary-light);
}
.datagrid-table .col-checkbox {
  width: 40px;
  text-align: center;
}
.datagrid-table th.col-checkbox {
  text-align: center;
}
.datagrid-table .col-id {
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}
.datagrid-table .col-date {
  white-space: nowrap;
}
.datagrid-table .col-amount,
.datagrid-table .col-money {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: var(--swp-font-medium);
}
.datagrid-table th.col-amount,
.datagrid-table th.col-money {
  text-align: right;
}
.datagrid-table th.col-amount .datagrid-sort-link,
.datagrid-table th.col-money .datagrid-sort-link {
  justify-content: flex-end;
}
.datagrid-table .col-status {
  white-space: nowrap;
}
.datagrid-table .col-actions {
  width: 1%;
  white-space: nowrap;
  text-align: right;
}
.datagrid-table tbody .badge {
  border-radius: var(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-font-medium);
  letter-spacing: 0;
}
.datagrid-table tbody .badge.bg-gray.text-gray-fg {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.datagrid-sort-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-text-muted);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.datagrid-sort-link:hover {
  color: var(--swp-text-primary);
}
.datagrid-sort-link.sorted {
  color: var(--swp-primary);
}
.datagrid-sort-link .datagrid-sort-icon {
  display: inline-flex;
  width: 14px;
  height: 14px;
  opacity: 0.35;
  transition: opacity var(--swp-transition-fast);
}
.datagrid-sort-link .datagrid-sort-icon.is-active {
  opacity: 1;
}
.datagrid-sort-link:hover .datagrid-sort-icon {
  opacity: 1;
}

.datagrid-row-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--swp-space-1);
}

.datagrid-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-action-btn svg {
  width: 18px;
  height: 18px;
}
.datagrid-action-btn:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.datagrid-action-btn.action-view:hover {
  color: var(--swp-info);
  background: var(--swp-info-lighter);
}
.datagrid-action-btn.action-edit:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.datagrid-action-btn.action-delete:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}

.datagrid-more-btn {
  opacity: 0.6;
  transition: opacity var(--swp-transition-fast), color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-more-btn:hover, .datagrid-more-btn[aria-expanded=true] {
  opacity: 1;
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}

.datagrid-more-menu .dropdown-menu {
  min-width: 160px;
  padding: var(--swp-space-1);
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-md);
}
.datagrid-more-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
}
.datagrid-more-menu .dropdown-item svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}
.datagrid-more-menu .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.datagrid-more-menu .dropdown-item.text-danger {
  color: var(--swp-danger);
}
.datagrid-more-menu .dropdown-item.text-danger svg {
  color: var(--swp-danger);
}
.datagrid-more-menu .dropdown-item.text-danger:hover {
  background: var(--swp-danger-lighter);
}
.datagrid-more-menu .dropdown-divider {
  margin: var(--swp-space-1) 0;
}

tbody tr:not(:hover) .datagrid-more-btn {
  opacity: 0;
}

tbody tr:hover .datagrid-more-btn,
.datagrid-more-menu.show .datagrid-more-btn {
  opacity: 0.6;
}

.datagrid-checkbox {
  display: flex;
  align-items: center;
  justify-content: center;
}
.datagrid-checkbox input[type=checkbox] {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--swp-primary);
  cursor: pointer;
}

.datagrid-empty {
  padding: var(--swp-space-16) var(--swp-space-6);
  text-align: center;
}

.datagrid-empty-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  margin: 0 auto var(--swp-space-6);
  color: var(--swp-gray-300);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-full);
}
.datagrid-empty-icon svg {
  width: 40px;
  height: 40px;
}

.datagrid-empty-title {
  margin: 0 0 var(--swp-space-2);
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.datagrid-empty-message {
  margin: 0 0 var(--swp-space-6);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  max-width: 400px;
  margin-left: auto;
  margin-right: auto;
}

.datagrid-empty-action {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.datagrid-bulk-bar {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(100px);
  z-index: 9999;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s 300ms;
}
.datagrid-bulk-bar.visible {
  transform: translateX(-50%) translateY(0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s;
}

.datagrid-bulk-bar-inner {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-3) var(--swp-space-6);
  background: var(--swp-gray-900);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-xl);
}

.datagrid-bulk-count {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-inverse);
  white-space: nowrap;
}
.datagrid-bulk-count .count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--swp-space-2);
  margin-right: var(--swp-space-1);
  font-size: var(--swp-text-xs);
  color: var(--swp-gray-900);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}

.datagrid-bulk-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.datagrid-bulk-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: background-color var(--swp-transition-fast);
}
.datagrid-bulk-btn svg {
  width: 16px;
  height: 16px;
}
.datagrid-bulk-btn:hover {
  background: rgba(255, 255, 255, 0.2);
}
.datagrid-bulk-btn.btn-danger {
  color: var(--swp-danger-light);
}
.datagrid-bulk-btn.btn-danger:hover {
  background: rgba(239, 68, 68, 0.2);
}

.datagrid-bulk-divider {
  width: 1px;
  height: 24px;
  background: rgba(255, 255, 255, 0.2);
}

.datagrid-bulk-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--swp-gray-400);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-bulk-close svg {
  width: 18px;
  height: 18px;
}
.datagrid-bulk-close:hover {
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
}

.datagrid-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-surface);
}
@media (width <= 768px) {
  .datagrid-footer {
    flex-direction: column;
    gap: var(--swp-space-3);
  }
}

.datagrid-footer-info {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}

.datagrid-per-page {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}
.datagrid-per-page select {
  padding: var(--swp-space-1-5) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
}
.datagrid-per-page select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  outline: none;
}

.datagrid-pagination .pagination {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.datagrid-pagination .page-item .page-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-pagination .page-item .page-link:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-border);
}
.datagrid-pagination .page-item.active .page-link {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary-light);
  font-weight: var(--swp-font-medium);
}
.datagrid-pagination .page-item.disabled .page-link {
  color: var(--swp-text-light);
  cursor: not-allowed;
  pointer-events: none;
}

.datagrid-status {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-0-5) var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
  border-radius: var(--swp-radius-sm);
}
.datagrid-status.status-success {
  color: #065f46;
  background: var(--swp-success-lighter);
}
.datagrid-status.status-danger {
  color: #991b1b;
  background: var(--swp-danger-lighter);
}
.datagrid-status.status-warning {
  color: #92400e;
  background: var(--swp-warning-lighter);
}
.datagrid-status.status-info {
  color: #1e40af;
  background: var(--swp-info-lighter);
}
.datagrid-status.status-primary {
  color: var(--swp-primary-dark);
  background: var(--swp-primary-lighter);
}
.datagrid-status.status-secondary {
  color: var(--swp-gray-700);
  background: var(--swp-gray-100);
}

.datagrid-relative-date {
  cursor: help;
  text-decoration: underline dotted var(--swp-border-dark);
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.datagrid-loading {
  position: relative;
}
.datagrid-loading::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.7);
  z-index: 10;
}

.datagrid-loading-indicator {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 11;
}

@media (width <= 768px) {
  .datagrid-header {
    flex-direction: column;
    align-items: stretch;
  }
  .datagrid-search {
    max-width: none;
  }
  .datagrid-table th,
  .datagrid-table td {
    padding: var(--swp-space-2) var(--swp-space-3);
  }
  .datagrid-bulk-bar-inner {
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
  }
  .datagrid-bulk-divider {
    display: none;
  }
}
.datagrid-table .col-expand {
  width: 40px;
  text-align: center;
  padding-right: var(--swp-space-2);
}

.datagrid-expand-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-expand-btn span {
  display: inline-flex;
  transition: transform 200ms ease;
}
.datagrid-expand-btn:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}

.datagrid-detail-row {
  display: none;
  background: var(--swp-gray-50);
}
.datagrid-detail-row.visible {
  display: table-row;
}
.datagrid-detail-row td {
  padding: 0;
  border-bottom: none;
}

.datagrid-detail-content {
  padding: var(--swp-space-4) var(--swp-space-6);
  animation: datagrid-slide-down 200ms ease;
}
.datagrid-detail-content .card {
  box-shadow: none;
  border: 1px solid var(--swp-border-light);
}

@keyframes datagrid-slide-down {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.api-token-history h4 {
  font-size: 1rem;
  font-weight: var(--swp-font-weight-semibold);
  color: var(--swp-text-primary);
}
.api-token-history .table {
  margin-bottom: 0;
  background: var(--swp-white);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
}
.api-token-history .table thead th {
  font-size: 0.75rem;
  font-weight: var(--swp-font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-border-light);
  padding: var(--swp-space-2) var(--swp-space-3);
}
.api-token-history .table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.api-token-history .table tbody tr:hover {
  background-color: var(--swp-surface-hover);
}
.api-token-history .table tbody tr td {
  padding: var(--swp-space-2) var(--swp-space-3);
  vertical-align: middle;
  font-size: 0.875rem;
  border-bottom: 1px solid var(--swp-border-light);
}
.api-token-history .table tbody tr:last-child td {
  border-bottom: none;
}
.api-token-history .badge {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  font-weight: var(--swp-font-weight-medium);
}

/**
 * SolidInvoice - Client Form Styles
 *
 * Client-specific styles for the client creation/edit form.
 * Outer form-page layout uses shared classes from _form-page.scss.
 */
.client-form-section-optional {
  background: var(--swp-gray-50);
  border-style: dashed;
}
.client-form-section-optional .section-header {
  background: transparent;
}

.section-icon-required {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.contact-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.contact-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.contact-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border-light);
}

.contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-full);
  color: var(--swp-primary);
}

.contact-card-title {
  flex: 1;
}

.contact-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.contact-card-actions {
  display: flex;
  gap: var(--swp-space-2);
}

.contact-card-body {
  padding: var(--swp-space-4);
}

.contact-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}
@media (width <= 576px) {
  .contact-form-grid {
    grid-template-columns: 1fr;
  }
}

.contact-field-email {
  grid-column: 1/-1;
}

.additional-details-section {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.additional-details-header {
  margin-bottom: var(--swp-space-3);
}

.additional-details-label {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
}

.additional-details-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.additional-detail-row {
  display: grid;
  grid-template-columns: 140px 1fr auto;
  gap: var(--swp-space-2);
  align-items: start;
}
@media (width <= 576px) {
  .additional-detail-row {
    grid-template-columns: 1fr;
    gap: var(--swp-space-2);
  }
  .additional-detail-row .additional-detail-action {
    justify-self: end;
  }
}

.additional-detail-action {
  display: flex;
  align-items: center;
  padding-top: var(--swp-space-1);
}

.additional-details-add {
  margin-top: var(--swp-space-3);
}

.add-detail-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm);
}

.addresses-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.address-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.address-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.address-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.address-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-info-light);
  border-radius: var(--swp-radius-full);
  color: var(--swp-info);
}

.address-card-title {
  flex: 1;
}

.address-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.address-card-actions {
  display: flex;
  gap: var(--swp-space-2);
}

.address-card-body {
  padding: var(--swp-space-4);
}

.address-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}
@media (width <= 576px) {
  .address-form-grid {
    grid-template-columns: 1fr;
  }
}

.add-item-action {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.add-item-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-4);
  font-weight: var(--swp-font-medium);
  border-style: dashed;
  transition: all var(--swp-transition-fast);
}
.add-item-btn:hover {
  background: var(--swp-primary-lighter);
  border-style: solid;
}
.add-item-btn::before {
  content: "+";
  font-size: 1.25em;
  font-weight: 300;
}

@keyframes client-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.contact-card,
.address-card {
  animation: client-slide-in 0.2s ease-out;
}

.contacts-list:empty::before,
.addresses-list:empty::before {
  content: "";
  display: none;
}

.empty-contacts-hint,
.empty-addresses-hint {
  padding: var(--swp-space-6);
  text-align: center;
  background: var(--swp-surface);
  border: 2px dashed var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.empty-contacts-hint p,
.empty-addresses-hint p {
  font-size: var(--swp-text-sm);
}

/**
 * SolidInvoice - Billing Form Styles
 *
 * Modern, clean invoice creation form with 2-column layout,
 * sticky totals sidebar, and collapsible sections.
 * Uses design system tokens for consistent styling.
 */
.billing-form-page {
  min-height: 100%;
}

.billing-form-container {
  max-width: 1100px;
  margin: 0 auto;
  padding-bottom: var(--swp-space-24);
}

.billing-form-header {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-6) 0;
}

.billing-form-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.billing-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.billing-form-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.billing-form-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.billing-details-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  padding: var(--swp-space-6);
  margin-bottom: var(--swp-space-6);
  transition: box-shadow var(--swp-transition-base);
}
.billing-details-section:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.billing-details-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-6);
}
@media (width <= 768px) {
  .billing-details-grid {
    grid-template-columns: 1fr;
  }
}
.billing-details-grid--no-dates .billing-details-right {
  justify-content: flex-start;
  padding-top: var(--swp-space-2);
}

.billing-details-left {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.billing-details-right {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.billing-id-display {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}
.billing-id-display .billing-id-label {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.billing-id-display .billing-id-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-family: var(--swp-font-mono);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
}
.billing-id-display .billing-id-edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--swp-radius-sm);
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.billing-id-display .billing-id-edit:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-light);
}

.billing-id-form {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.billing-id-form .form-control {
  max-width: 200px;
}
.billing-id-form .btn {
  padding: var(--swp-space-2);
}

.invoice-dates-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-4);
}
@media (width <= 576px) {
  .invoice-dates-row {
    grid-template-columns: 1fr;
  }
}

.client-selection {
  margin-bottom: var(--swp-space-4);
}

.selected-client-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  animation: billing-slide-in 0.2s ease-out;
}

.selected-client-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-3);
}

.selected-client-name {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.selected-client-change {
  font-size: var(--swp-text-sm);
  color: var(--swp-primary);
  text-decoration: none;
}
.selected-client-change:hover {
  text-decoration: underline;
}

.selected-client-contacts {
  border-top: 1px dashed var(--swp-border);
  padding-top: var(--swp-space-3);
  margin-top: var(--swp-space-3);
}

.contacts-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.contact-checkbox {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-sm);
  transition: background var(--swp-transition-fast);
}
.contact-checkbox:hover {
  background: var(--swp-gray-100);
}
.contact-checkbox .form-check-input {
  margin: 0;
}
.contact-checkbox .contact-name {
  font-weight: var(--swp-font-medium);
}
.contact-checkbox .contact-email {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}

.billing-form-main {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: var(--swp-space-6);
  align-items: start;
}
@media (width <= 1100px) {
  .billing-form-main {
    grid-template-columns: 1fr 280px;
  }
}
@media (width <= 900px) {
  .billing-form-main {
    grid-template-columns: 1fr;
  }
}

.billing-items-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.billing-items-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.billing-items-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
}

.billing-items-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-items-body {
  padding: var(--swp-space-4);
}

.billing-items-list {
  margin-bottom: var(--swp-space-4);
}

.billing-items-header-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border);
}
.billing-items-header-row > div {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  white-space: nowrap;
}
.billing-items-header-row .column-total {
  text-align: right;
}
.billing-items-header-row .column-actions {
  text-align: center;
}
@media (width <= 900px) {
  .billing-items-header-row {
    display: none;
  }
}

.billing-items-list:not(:has(.column-tax)) .billing-items-header-row {
  grid-template-columns: 28px minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
.billing-items-list:not(:has(.column-tax)) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:not(:has(.column-tax)) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}

.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-items-header-row,
.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.2fr) minmax(130px, 1.1fr) 56px minmax(80px, 0.5fr) minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}

.billing-item-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border-light);
  align-items: start;
  transition: background var(--swp-transition-fast);
}
.billing-item-row > div {
  min-width: 0;
}
.billing-item-row:hover {
  background: var(--swp-gray-50);
}
.billing-item-row:last-child {
  border-bottom: none;
}
.billing-item-row .column-description {
  min-width: 0;
  overflow: hidden;
}
.billing-item-row .column-description textarea {
  min-height: 60px;
  resize: vertical;
  width: 100%;
  max-width: 100%;
}
.billing-item-row .line-description {
  margin-top: 0.25rem;
}
.billing-item-row .line-description > summary {
  color: var(--tblr-secondary);
  cursor: pointer;
  font-size: 0.75rem;
  list-style: none;
  width: fit-content;
}
.billing-item-row .line-description > summary::-webkit-details-marker {
  display: none;
}
.billing-item-row .line-description > summary::before {
  content: "+";
  margin-right: 0.25rem;
}
.billing-item-row .line-description > summary:hover {
  color: var(--tblr-primary);
}
.billing-item-row .line-description[open] > summary {
  margin-bottom: 0.25rem;
}
.billing-item-row .line-description[open] > summary::before {
  content: "−";
}
.billing-item-row .column-price input,
.billing-item-row .column-price select,
.billing-item-row .column-qty input,
.billing-item-row .column-qty select,
.billing-item-row .column-tax input,
.billing-item-row .column-tax select {
  width: 100%;
}
.billing-item-row .column-price .input-group-text {
  padding: 0.25rem 0.4rem;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-color: var(--swp-border-light);
}
.billing-item-row .column-price input {
  min-width: 0;
}
.billing-item-row .column-qty input {
  text-align: center;
}
.billing-item-row .column-total {
  text-align: right;
  padding-top: var(--swp-space-1);
}
.billing-item-row .column-total .item-total-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.billing-item-row .column-actions {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 0;
}
.billing-item-row .column-drag {
  display: flex;
  align-items: center;
  justify-content: center;
  padding-top: var(--swp-space-2);
}
.billing-item-row .line-drag-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 0;
  border-radius: var(--swp-radius-sm);
  background: none;
  color: var(--swp-text-muted);
  cursor: grab;
  opacity: 0;
  transition: opacity var(--swp-transition-fast), background var(--swp-transition-fast), color var(--swp-transition-fast);
}
.billing-item-row .line-drag-handle:hover {
  background: var(--swp-gray-100);
  color: var(--swp-text-primary);
}
.billing-item-row .line-drag-handle:active {
  cursor: grabbing;
}
.billing-item-row .line-drag-handle:focus-visible {
  opacity: 1;
  outline: 2px solid var(--swp-primary);
  outline-offset: 1px;
}
.billing-item-row:hover .line-drag-handle {
  opacity: 1;
}
.billing-item-row .mobile-label {
  display: none;
}
@media (width <= 900px) {
  .billing-item-row {
    display: grid;
    position: relative;
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "desc desc" "price qty" "tax tax" "actions total";
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border: 1px solid var(--swp-border);
    border-radius: var(--swp-radius-md);
  }
  .billing-item-row:hover {
    background: var(--swp-gray-50);
  }
  .billing-item-row:last-child {
    border-bottom: 1px solid var(--swp-border);
  }
  .billing-item-row .mobile-label {
    display: block;
    font-size: var(--swp-text-xs);
    font-weight: var(--swp-font-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    margin-bottom: var(--swp-space-1);
  }
  .billing-item-row .column-description {
    grid-area: desc;
  }
  .billing-item-row .column-description textarea {
    width: 100%;
    min-height: 80px;
  }
  .billing-item-row .column-price {
    grid-area: price;
  }
  .billing-item-row .column-price input {
    width: 100%;
  }
  .billing-item-row .column-qty {
    grid-area: qty;
  }
  .billing-item-row .column-qty input {
    width: 100%;
  }
  .billing-item-row .column-tax {
    grid-area: tax;
  }
  .billing-item-row .column-tax select {
    width: 100%;
  }
  .billing-item-row .column-actions {
    grid-area: actions;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-top: var(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-drag {
    position: absolute;
    top: var(--swp-space-2);
    right: var(--swp-space-2);
    padding-top: 0;
  }
  .billing-item-row .line-drag-handle {
    opacity: 1;
  }
  .billing-item-row .column-total {
    grid-area: total;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: var(--swp-space-2);
    padding-top: var(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-total .mobile-label {
    display: inline;
    margin-bottom: 0;
  }
  .billing-item-row .column-total .item-total-value {
    font-size: var(--swp-text-lg);
    font-weight: var(--swp-font-semibold);
    color: var(--swp-primary);
  }
}

.remove-item-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  border: 1px solid var(--swp-border);
  background: var(--swp-surface);
  color: var(--swp-text-muted);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.remove-item-btn svg {
  width: 12px;
  height: 12px;
}
.remove-item-btn:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger);
}
.remove-item-btn:focus {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

.add-item-action {
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.add-item-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  gap: var(--swp-space-2);
  font-weight: var(--swp-font-medium);
  color: var(--swp-primary);
  background: transparent;
  border: 2px dashed var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.add-item-btn:hover {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
  border-style: solid;
}

.line-tax-collection {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  min-width: 0;
}

.line-tax-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.line-tax-row {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.line-tax-field-tax {
  flex: 1 1 auto;
  min-width: 0;
}
.line-tax-field-tax select,
.line-tax-field-tax .form-select {
  width: 100%;
  min-width: 0;
  padding: 4px 22px 4px 8px;
  font-size: var(--swp-text-xs);
  line-height: 1.2;
  background-position: right 6px center;
  background-size: 12px;
}

.line-tax-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
}

.line-tax-remove-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  color: var(--swp-text-muted);
  background: transparent;
  border: 0;
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background var(--swp-transition-fast);
}
.line-tax-remove-btn svg {
  width: 12px;
  height: 12px;
}
.line-tax-remove-btn:hover {
  color: var(--swp-danger);
  background: rgba(var(--swp-danger-rgb), 0.08);
}

.line-tax-add-btn {
  align-self: flex-start;
  padding: 2px 8px;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  line-height: 1.4;
  color: var(--swp-primary);
  background: transparent;
  border: 1px dashed var(--swp-border);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.line-tax-add-btn:hover {
  color: var(--swp-primary-dark);
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}

.billing-invoice-taxes {
  margin-top: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6) var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-gray-50);
}

.billing-invoice-taxes-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-3);
}

.billing-invoice-taxes-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-invoice-taxes-subtitle {
  flex-basis: 100%;
  margin: 0;
  font-size: var(--swp-text-sm);
}

.billing-invoice-taxes-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-3);
}

.billing-invoice-tax-row {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 3fr) auto;
  gap: var(--swp-space-3);
  align-items: start;
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
@media (width <= 768px) {
  .billing-invoice-tax-row {
    grid-template-columns: 1fr;
  }
}

.invoice-tax-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}
.invoice-tax-field .mobile-label {
  display: none;
  font-size: var(--swp-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--swp-text-muted);
}
@media (width <= 768px) {
  .invoice-tax-field .mobile-label {
    display: block;
  }
}

.invoice-tax-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

.billing-totals-sidebar {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 992px) {
  .billing-totals-sidebar {
    position: static;
  }
}

.billing-totals-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.billing-totals-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.billing-totals-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-success-light) 0%, rgba(var(--swp-success-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-success);
}

.billing-totals-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-totals-body {
  padding: var(--swp-space-5);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-3) 0;
}
.totals-row:not(:last-child) {
  border-bottom: 1px solid var(--swp-border-light);
}

.totals-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
}

.totals-value {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.totals-row-total {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-dark);
}
.totals-row-total .totals-label {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.totals-row-total .totals-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.discount-field {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}
.discount-field .form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
}

.billing-terms-section {
  margin-top: var(--swp-space-6);
  background: var(--swp-gray-50);
  border: 1px dashed var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}
.billing-terms-section[open] {
  background: var(--swp-surface);
  border-style: solid;
}
.billing-terms-section[open] .terms-summary {
  border-bottom: 1px solid var(--swp-border-light);
}
.billing-terms-section[open] .terms-summary-icon {
  transform: rotate(90deg);
}

.terms-summary {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  cursor: pointer;
  list-style: none;
  transition: background var(--swp-transition-fast);
}
.terms-summary::-webkit-details-marker {
  display: none;
}
.terms-summary:hover {
  background: var(--swp-gray-100);
}

.terms-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  color: var(--swp-text-muted);
  transition: transform var(--swp-transition-fast);
}

.terms-summary-text {
  flex: 1;
}

.terms-summary-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.terms-content {
  padding: var(--swp-space-6);
}

.terms-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-4);
}
@media (width <= 768px) {
  .terms-grid {
    grid-template-columns: 1fr;
  }
}

.billing-form-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.billing-form-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 var(--swp-space-4);
}

.save-button-group {
  box-shadow: var(--swp-shadow-primary);
  border-radius: var(--swp-radius-md);
}
.save-button-group .btn-save-primary {
  box-shadow: none;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.save-button-group .btn-save-primary:hover {
  box-shadow: none;
  transform: none;
}
.save-button-group .dropdown-toggle-split {
  padding: var(--swp-space-3) var(--swp-space-3);
  border-left: 1px solid rgba(255, 255, 255, 0.2);
}
.save-button-group .dropdown-toggle-split::after {
  vertical-align: middle;
}
.save-button-group .dropdown-menu {
  min-width: 180px;
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-lg);
  border: 1px solid var(--swp-border);
}
.save-button-group .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-3);
  border-radius: var(--swp-radius-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  transition: all var(--swp-transition-fast);
}
.save-button-group .dropdown-item svg {
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}
.save-button-group .dropdown-item:hover {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
}
.save-button-group .dropdown-item:hover svg {
  color: var(--swp-primary);
}
.save-button-group:hover {
  box-shadow: var(--swp-shadow-primary-lg);
}

@media (width <= 768px) {
  .billing-items-table {
    display: none;
  }
  .billing-items-cards {
    display: flex;
    flex-direction: column;
    gap: var(--swp-space-4);
  }
}
@media (width >= 769px) {
  .billing-items-cards {
    display: none;
  }
}
.billing-item-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  animation: billing-slide-in 0.2s ease-out;
}
.billing-item-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.billing-item-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-3);
}

.billing-item-card-number {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
}

.billing-item-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.billing-item-card-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: var(--swp-space-3);
}

.billing-item-card-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--swp-space-3);
  margin-top: var(--swp-space-3);
  border-top: 1px dashed var(--swp-border);
}
.billing-item-card-total .item-total-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}
.billing-item-card-total .item-total-value {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
}

@keyframes billing-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (width <= 768px) {
  .billing-form-container {
    padding: 0 var(--swp-space-4);
    padding-bottom: var(--swp-space-20);
  }
  .billing-form-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-space-4) 0;
  }
  .billing-form-icon {
    width: 48px;
    height: 48px;
  }
  .billing-form-title {
    font-size: 1.5rem;
  }
  .billing-details-section,
  .billing-items-section,
  .billing-totals-card {
    border-radius: var(--swp-radius-md);
  }
  .billing-form-actions-inner {
    gap: var(--swp-space-3);
  }
  .billing-form-actions-inner .btn {
    flex: 1;
  }
  .billing-id-display {
    flex-wrap: wrap;
  }
  .billing-id-display .billing-id-label,
  .billing-id-display .billing-id-value {
    font-size: var(--swp-text-xl);
  }
}
.recurring-schedule-section {
  margin-block: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
}
.recurring-schedule-section .section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  margin-block-end: var(--swp-space-5);
  padding-block-end: var(--swp-space-4);
  border-block-end: 1px solid var(--swp-border-light);
}
.recurring-schedule-section .section-header .section-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--swp-radius-md);
  background: linear-gradient(135deg, var(--swp-primary) 0%, var(--swp-primary-dark) 100%);
  color: #ffffff;
  flex-shrink: 0;
}
.recurring-schedule-section .section-header .section-header-content {
  flex: 1;
}
.recurring-schedule-section .section-header .section-header-content .section-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1) 0;
}
.recurring-schedule-section .section-header .section-header-content .section-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin: 0;
}
.recurring-schedule-section .recurring-schedule-content {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--swp-space-3);
  margin-block-start: var(--swp-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
    grid-template-columns: repeat(2, 1fr);
  }
}
.recurring-options-wrapper [id$=_type] .form-check-label.required::after, .recurring-options-wrapper [id$=_endType] .form-check-label.required::after {
  display: none;
}
.recurring-options-wrapper [id$=_type] > .form-check, .recurring-options-wrapper [id$=_endType] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio], .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check label, .recurring-options-wrapper [id$=_endType] > .form-check label {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-3);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  transition: all 0.2s ease;
  min-height: 70px;
  cursor: pointer;
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  text-align: center;
}
.recurring-options-wrapper [id$=_type] > .form-check:hover label, .recurring-options-wrapper [id$=_endType] > .form-check:hover label {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio]:checked + label, .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio]:checked + label {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: #ffffff;
}
.recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
}
.recurring-options-wrapper [id$=_days] {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
  gap: var(--swp-space-2);
  margin-block-start: var(--swp-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_days] {
    grid-template-columns: repeat(auto-fit, minmax(70px, 1fr));
  }
}
.recurring-options-wrapper [id$=_days] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check label {
  display: flex !important;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-3) var(--swp-space-2);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary) !important;
  transition: all 0.2s ease;
  min-height: 44px;
  text-align: center;
  cursor: pointer;
  margin: 0;
  opacity: 1 !important;
  visibility: visible !important;
}
.recurring-options-wrapper [id$=_days] > .form-check label::before, .recurring-options-wrapper [id$=_days] > .form-check label::after {
  content: none !important;
}
.recurring-options-wrapper [id$=_days] > .form-check:hover label {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox]:checked + label {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: #ffffff !important;
}

.recurring-frequency-display {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: linear-gradient(135deg, var(--swp-primary-lighter) 0%, rgba(var(--swp-primary-rgb), 0.05) 100%);
  border: 1px solid rgba(var(--swp-primary-rgb), 0.2);
  border-radius: var(--swp-radius-md);
}
.recurring-frequency-display .recurring-frequency-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.recurring-frequency-display .recurring-frequency-text {
  flex: 1;
  font-size: var(--swp-text-base);
  color: var(--swp-text-primary);
}
.recurring-frequency-display .recurring-frequency-text strong {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
}

.recurring-variables-help {
  margin-block-start: var(--swp-space-3);
  padding: var(--swp-space-3);
  border: 1px solid var(--swp-info-border-subtle);
  border-radius: var(--swp-radius-md);
  background: var(--swp-info-bg-subtle);
}
.recurring-variables-help .variables-summary {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-info);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.recurring-variables-help .variables-summary::-webkit-details-marker {
  display: none;
}
.recurring-variables-help .variables-summary svg {
  flex-shrink: 0;
}
.recurring-variables-help .variables-summary:hover {
  color: var(--swp-info-emphasis);
}
.recurring-variables-help .variables-content {
  margin-block-start: var(--swp-space-3);
  padding-block-start: var(--swp-space-3);
  border-block-start: 1px solid var(--swp-info-border-subtle);
}
.recurring-variables-help .variables-content .variables-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin-block-end: var(--swp-space-3);
}
.recurring-variables-help .variables-content .variables-list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--swp-space-3) 0;
}
.recurring-variables-help .variables-content .variables-list li {
  display: flex;
  align-items: baseline;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) 0;
  font-size: var(--swp-text-sm);
  line-height: 1.6;
}
.recurring-variables-help .variables-content .variables-list li code {
  padding: 2px 8px;
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-primary);
  font-weight: var(--swp-font-medium);
  white-space: nowrap;
}
.recurring-variables-help .variables-content .variables-list li .variable-description {
  color: var(--swp-text-muted);
}
.recurring-variables-help .variables-content .variable-example {
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border-inline-start: 3px solid var(--swp-info);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-sm);
}
.recurring-variables-help .variables-content .variable-example strong {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-semibold);
}
.recurring-variables-help .variables-content .variable-example .example-text {
  display: block;
  margin-block-start: var(--swp-space-2);
  color: var(--swp-text-secondary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
}
.recurring-variables-help[open] .variables-summary {
  margin-block-end: 0;
}

.invoice-sidebar-card-highlight {
  border-left: 3px solid var(--swp-primary);
  background: linear-gradient(to right, rgba(var(--swp-primary-rgb), 0.03), transparent);
}

.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.recurring-schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: var(--swp-space-2) 0;
}
.recurring-schedule-item:not(:last-child) {
  border-bottom: 1px solid var(--swp-border-light);
}

.recurring-schedule-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-secondary);
}

.recurring-schedule-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  text-align: right;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.occurrence-item:hover {
  background: var(--swp-surface);
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  transform: translateX(2px);
}

.occurrence-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-lighter);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.occurrence-date {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.generated-invoice-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.generated-invoice-item:hover {
  background: var(--swp-surface);
  border-color: rgba(var(--swp-primary-rgb), 0.3);
}

.generated-invoice-link {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex: 1;
  min-width: 0;
  text-decoration: none;
  color: var(--swp-text-primary);
  transition: color var(--swp-transition-fast);
}
.generated-invoice-link:hover {
  color: var(--swp-primary);
}
.generated-invoice-link:hover .generated-invoice-number {
  color: var(--swp-primary);
}

.generated-invoice-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: var(--swp-success-lighter);
  border-radius: var(--swp-radius-sm);
  color: var(--swp-success);
  flex-shrink: 0;
}

.generated-invoice-number {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  transition: color var(--swp-transition-fast);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-shrink: 0;
}

.generated-invoice-total {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  white-space: nowrap;
}

.view-all-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  margin-top: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-primary);
  text-decoration: none;
  background: var(--swp-primary-lighter);
  border: 1px solid rgba(var(--swp-primary-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.view-all-link:hover {
  background: rgba(var(--swp-primary-rgb), 0.15);
  border-color: var(--swp-primary);
  transform: translateY(-1px);
}

/**
 * SolidInvoice - Payment Page Styles
 *
 * Modern, clean payment page with two-column layout,
 * card-based payment method selection, and invoice summary.
 * Uses design system tokens for consistent styling.
 */
.payment-page {
  min-height: 100%;
}

.payment-container {
  max-width: 1200px;
  margin: 0 auto;
  padding-bottom: var(--swp-space-12);
}

.payment-header {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-6) 0;
}

.payment-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.payment-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.payment-header-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.payment-header-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.payment-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-6);
  align-items: start;
}
@media (width <= 992px) {
  .payment-layout {
    grid-template-columns: 1fr;
  }
}

.payment-invoice-summary {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 992px) {
  .payment-invoice-summary {
    position: static;
    order: 2;
  }
}

.invoice-summary-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.invoice-summary-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.invoice-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-info-light) 0%, rgba(var(--swp-info-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-info);
}

.invoice-summary-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.invoice-summary-body {
  padding: var(--swp-space-5);
}

.summary-section {
  padding: var(--swp-space-4) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.summary-section:first-child {
  padding-top: 0;
}
.summary-section:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.summary-section-label {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}

.summary-client-info {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}
.summary-client-info .client-name {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.client-credit-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1-5) var(--swp-space-3);
  margin-top: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-success);
  background: var(--swp-success-lighter);
  border-radius: var(--swp-radius-full);
}

.invoice-details-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.detail-label {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.detail-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.line-items-preview {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.line-item-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.line-item-desc {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 60%;
}

.line-item-amount {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.summary-totals {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border);
}

.summary-totals .totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-2) 0;
}

.summary-totals .totals-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
}

.summary-totals .totals-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.summary-totals .totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.summary-totals .totals-row-payment .totals-value {
  color: var(--swp-success);
}

.summary-totals .totals-row-balance {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-dark);
}
.summary-totals .totals-row-balance .totals-label {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.summary-totals .totals-row-balance .totals-value {
  font-size: var(--swp-text-xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

@media (width <= 992px) {
  .payment-form-section {
    order: 1;
  }
}

.payment-form-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.payment-form-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.payment-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-success-light) 0%, rgba(var(--swp-success-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-success);
}

.payment-form-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-form-body {
  padding: var(--swp-space-5);
}

.payment-form-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border-light);
}

.payment-form-body .form-label {
  display: block;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.payment-form-body .form-label.required::after {
  content: " *";
  color: var(--swp-danger);
}
.payment-form-body .form-text {
  display: block;
  margin-top: var(--swp-space-2);
}
.payment-form-body .input-group {
  flex-wrap: nowrap;
}
.payment-form-body textarea.form-control {
  min-height: 80px;
  resize: vertical;
}
.payment-form-body .mb-4:last-child {
  margin-bottom: 0 !important;
}

.payment-methods-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--swp-space-3);
}

.payment-method-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.payment-method-card:hover {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.payment-method-card:has(.payment-method-input:checked) {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-ring-primary);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-check {
  opacity: 1;
  transform: scale(1);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-icon {
  background: var(--swp-primary);
  color: #ffffff;
}
.payment-method-card:has(.payment-method-input:focus-visible) {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

.payment-method-preferred {
  order: -1;
}

.payment-method-input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.payment-method-content {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  flex: 1;
}

.payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-secondary);
  transition: all var(--swp-transition-fast);
}

.payment-method-name {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.payment-method-badge {
  display: inline-flex;
  align-self: flex-start;
  padding: 2px 8px;
  font-size: 10px;
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  background: var(--swp-gray-200);
  border-radius: var(--swp-radius-full);
}

.payment-method-badge-online {
  color: var(--swp-info);
  background: var(--swp-info-light);
}

.payment-method-badge-credit {
  color: var(--swp-success);
  background: var(--swp-success-light);
}

.payment-method-check {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: var(--swp-primary);
  color: #ffffff;
  border-radius: var(--swp-radius-full);
  opacity: 0;
  transform: scale(0.8);
  transition: all var(--swp-transition-fast);
}

.amount-field-wrapper {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
  flex-wrap: wrap;
}
.amount-field-wrapper .form-label,
.amount-field-wrapper .form-section-label {
  margin-bottom: 0;
}

.amount-balance-hint {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  white-space: nowrap;
  padding: var(--swp-space-1) var(--swp-space-2);
  background: var(--swp-primary-lighter);
  border-radius: var(--swp-radius-sm);
}
.amount-balance-hint strong {
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

.capture-online-field {
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.capture-online-field .form-check {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
  padding-left: 0;
}
.capture-online-field .form-check-input {
  float: none;
  margin-left: 0;
  margin-top: 0;
  width: 2.5rem;
  height: 1.25rem;
  flex-shrink: 0;
}
.capture-online-field .form-check-label {
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  margin-bottom: 0;
}
.capture-online-field .form-help {
  margin-left: 0;
  padding-left: calc(2.5rem + var(--swp-space-2));
}

[data-payment-method-select-target=captureOnline].d-none {
  display: none !important;
}

.client-name-link,
.invoice-id-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-semibold);
  transition: color var(--swp-transition-fast);
}
.client-name-link svg,
.invoice-id-link svg {
  opacity: 0.5;
  transition: opacity var(--swp-transition-fast);
}
.client-name-link:hover,
.invoice-id-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}
.client-name-link:hover svg,
.invoice-id-link:hover svg {
  opacity: 1;
}

.client-name-link {
  font-size: var(--swp-text-lg);
}

.invoice-id-link {
  font-size: var(--swp-text-sm);
  font-family: var(--swp-font-mono, monospace);
}

.payment-history-card {
  margin-top: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.payment-history-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.payment-history-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: linear-gradient(135deg, var(--swp-warning-light, #fef3c7) 0%, rgba(245, 158, 11, 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-warning, #f59e0b);
}

.payment-history-title {
  flex: 1;
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-history-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-muted);
  background: var(--swp-gray-200);
  border-radius: var(--swp-radius-full);
}

.payment-history-body {
  padding: var(--swp-space-4) var(--swp-space-5);
}

.payments-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.payment-card {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border-left: 3px solid var(--swp-gray-300);
  transition: all var(--swp-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--swp-success);
  background: var(--swp-success-lighter, rgba(16, 185, 129, 0.05));
}

.payment-card-failed {
  border-left-color: var(--swp-danger);
  background: var(--swp-danger-lighter, rgba(239, 68, 68, 0.05));
}

.payment-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-2);
}

.payment-amount {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.payment-detail {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}
.payment-detail svg {
  flex-shrink: 0;
  opacity: 0.7;
}

.payment-message {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-light);
  font-size: var(--swp-text-xs);
  font-style: italic;
  color: var(--swp-text-secondary);
}

.btn-pay {
  padding: var(--swp-space-3) var(--swp-space-6);
  font-weight: var(--swp-font-semibold);
  box-shadow: var(--swp-shadow-primary);
}
.btn-pay:hover {
  box-shadow: var(--swp-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-pay:active {
  transform: translateY(0);
}

@media (width <= 768px) {
  .payment-container {
    padding: 0 var(--swp-space-4);
    padding-bottom: var(--swp-space-16);
  }
  .payment-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-space-4) 0;
  }
  .payment-header-icon {
    width: 48px;
    height: 48px;
  }
  .payment-header-title {
    font-size: 1.5rem;
  }
  .payment-methods-grid {
    grid-template-columns: 1fr;
  }
  .invoice-details-grid {
    grid-template-columns: 1fr;
  }
  .payment-form-footer {
    flex-direction: column-reverse;
    gap: var(--swp-space-3);
  }
  .payment-form-footer .btn {
    width: 100%;
    justify-content: center;
  }
  .amount-field-wrapper {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-1);
  }
}
/**
 * Payments List Page Styles
 *
 * Minimal styling for the payments list page with KPI cards.
 * Most styles come from Tabler/Bootstrap - this file only adds specific customizations.
 */
.row-deck .card-sm {
  transition: all 0.2s ease-in-out;
}
.row-deck .card-sm:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

/**
 * SolidInvoice - Users Page Styles
 *
 * Modern users list page with KPI cards and tabbed interface.
 * Uses design system tokens for consistent styling.
 */
.users-page {
  min-height: 100%;
}

/**
 * SolidInvoice - Profile Page Styles
 *
 * Styles for the user profile view and sidebar navigation.
 * Form pages (edit, change-password) use shared classes from _form-page.scss.
 * Includes: sidebar navigation, profile view, security status.
 */
.profile-sidebar {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 991.98px) {
  .profile-sidebar {
    position: static;
    margin-bottom: var(--swp-space-4);
  }
}

.profile-nav-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  box-shadow: var(--swp-shadow-sm);
}

.profile-nav {
  display: flex;
  flex-direction: column;
}

.profile-nav-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  color: var(--swp-text-secondary);
  text-decoration: none;
  transition: all var(--swp-transition-base);
  border-left: 3px solid transparent;
  font-size: var(--swp-text-base);
}
.profile-nav-item:hover {
  background: var(--swp-gray-50);
  color: var(--swp-text-primary);
  text-decoration: none;
}
.profile-nav-item.active {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  border-left-color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

.profile-nav-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: currentcolor;
}

.profile-nav-text {
  flex: 1;
}

.profile-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}
@media (width <= 767.98px) {
  .profile-header {
    flex-direction: column;
    text-align: center;
    padding: var(--swp-space-5);
  }
}

.profile-avatar {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  color: var(--swp-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  flex-shrink: 0;
  letter-spacing: -0.02em;
}

.profile-header-info {
  flex: 1;
}

.profile-name {
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  line-height: 1.3;
  letter-spacing: -0.025em;
}

.profile-email {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0;
}

.profile-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.profile-section:hover {
  border-color: var(--swp-border-dark);
}

.profile-section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-5) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border);
}

.profile-section-title {
  flex: 1;
  padding-top: var(--swp-space-1);
}

.profile-section-body {
  padding: var(--swp-space-6);
}

.profile-section-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-3);
}

.profile-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-5);
}
@media (width <= 767.98px) {
  .profile-detail-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-4);
  }
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.detail-item-wide {
  grid-column: 1/-1;
}

.detail-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
}

.detail-value {
  font-size: var(--swp-text-base);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium);
}

.security-status {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.security-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  transition: border-color var(--swp-transition-base);
}
.security-item:hover {
  border-color: var(--swp-border-dark);
}

.security-item-info {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
}

.security-item-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--swp-radius-md);
  flex-shrink: 0;
}

.security-item-icon-success {
  background: rgba(var(--swp-success-rgb), 0.1);
  color: var(--swp-success);
}

.security-item-icon-warning {
  background: rgba(var(--swp-warning-rgb), 0.1);
  color: var(--swp-warning);
}

.security-item-content {
  flex: 1;
}

.security-item-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-0-5);
}

.security-item-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
}

.security-item-action {
  flex-shrink: 0;
  margin-left: var(--swp-space-3);
}

.google-signin-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  background: var(--swp-surface);
  border-color: var(--swp-border);
  color: var(--swp-text-primary);
  transition: all var(--swp-transition-base);
}
.google-signin-btn:hover {
  background: var(--swp-gray-50);
  border-color: var(--swp-border-dark);
  color: var(--swp-text-primary);
  box-shadow: var(--swp-shadow-sm);
}
.google-signin-btn:active {
  transform: translateY(1px);
}
.google-signin-btn svg {
  flex-shrink: 0;
}

.password-requirements {
  background: rgba(var(--swp-info-rgb), 0.05);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  margin-bottom: var(--swp-space-6);
}

.password-requirements-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-3);
}
.password-requirements-header .section-icon {
  width: 32px;
  height: 32px;
  background: rgba(var(--swp-info-rgb), 0.15);
  color: var(--swp-info);
}
.password-requirements-header h3 {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.password-requirements-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.password-requirements-list li {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  padding: var(--swp-space-1) 0 var(--swp-space-1) var(--swp-space-6);
  position: relative;
}
.password-requirements-list li::before {
  content: "✓";
  position: absolute;
  left: var(--swp-space-2);
  color: var(--swp-info);
  font-weight: var(--swp-font-bold);
}

@media (width >= 768px) and (width <= 991.98px) {
  .profile-sidebar {
    margin-bottom: var(--swp-space-6);
  }
}
@media (width <= 767.98px) {
  .profile-section-footer {
    flex-direction: column;
  }
  .profile-section-footer .btn {
    width: 100%;
    justify-content: center;
  }
}
@media print {
  .profile-section-footer,
  .profile-sidebar {
    display: none !important;
  }
}
/**
 * SolidInvoice - Two-Factor Authentication Styles
 *
 * Modern 2FA configuration and login pages with elegant design.
 * Matches the profile page patterns and Tabler design system.
 */
.two-factor-settings .form-page-sections {
  gap: var(--swp-space-5);
}

.two-factor-section-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-5);
}
@media (width <= 767.98px) {
  .two-factor-section-content {
    flex-direction: column;
    align-items: flex-start;
    padding: var(--swp-space-4);
  }
}

.two-factor-section-info {
  flex: 1;
}

.two-factor-section-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-shrink: 0;
}
@media (width <= 767.98px) {
  .two-factor-section-actions {
    width: 100%;
    flex-direction: column;
  }
  .two-factor-section-actions .btn {
    width: 100%;
    justify-content: center;
  }
}

.totp-setup-container {
  padding: var(--swp-space-4) 0;
}

.setup-steps {
  display: flex;
  justify-content: center;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-6);
}
@media (width <= 575.98px) {
  .setup-steps {
    flex-direction: column;
    gap: var(--swp-space-2);
  }
}

.setup-steps .step {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: all var(--swp-transition-base);
}
.setup-steps .step.active {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
  box-shadow: var(--swp-shadow-sm);
}
.setup-steps .step .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: currentcolor;
  color: #ffffff;
  border-radius: var(--swp-radius-full);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-bold);
  opacity: 0.8;
}
.setup-steps .step.active .step-number {
  opacity: 1;
}

.qr-code-container {
  padding: var(--swp-space-6);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-5);
}
@media (width <= 575.98px) {
  .qr-code-container {
    padding: var(--swp-space-4);
  }
}

.qr-code-image {
  max-width: 300px;
  width: 100%;
  height: auto;
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: #ffffff;
  padding: var(--swp-space-3);
  box-shadow: var(--swp-shadow-sm);
}

.manual-entry-details {
  text-align: center;
}
.manual-entry-details summary {
  cursor: pointer;
  color: var(--swp-primary);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  user-select: none;
  list-style: none;
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-base);
}
.manual-entry-details summary:hover {
  background: rgba(var(--swp-primary-rgb), 0.05);
}
.manual-entry-details summary::-webkit-details-marker {
  display: none;
}
.manual-entry-details .manual-entry-content {
  margin-top: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: #ffffff;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.manual-entry-details .manual-entry-code {
  display: block;
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-lg);
  font-family: var(--swp-font-mono);
  letter-spacing: 0.1em;
  word-break: break-all;
  color: var(--swp-text-primary);
}

.verification-form-container {
  padding: var(--swp-space-4) 0;
}

.verification-code-input {
  font-family: var(--swp-font-mono);
  letter-spacing: 0.5em !important;
  text-align: center;
  font-size: 1.5rem !important;
  padding: var(--swp-space-4) !important;
}
.verification-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.5;
}
.verification-code-input:focus {
  letter-spacing: 0.5em !important;
}

.backup-codes-modal-content {
  padding: var(--swp-space-2) 0;
}

.backup-codes-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
}
@media (width <= 575.98px) {
  .backup-codes-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-2);
  }
}

.backup-code-item code {
  display: block;
  padding: var(--swp-space-3);
  background: #ffffff;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  text-align: center;
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  font-family: var(--swp-font-mono);
  letter-spacing: 0.05em;
  transition: all var(--swp-transition-base);
  color: var(--swp-text-primary);
}
.backup-code-item code:hover {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  transform: translateY(-2px);
}

.two-factor-login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--swp-gray-50);
  padding: var(--swp-space-4);
}

.two-factor-login-card .card {
  border: none;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  overflow: hidden;
}
.two-factor-login-card .card-status-top {
  height: 4px;
  background: var(--swp-primary);
}
.two-factor-login-card .card-body {
  padding: var(--swp-space-8) var(--swp-space-6);
}
@media (width <= 575.98px) {
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
}

.two-factor-avatar {
  width: 72px;
  height: 72px;
  margin: 0 auto var(--swp-space-4);
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--swp-primary);
  box-shadow: 0 4px 12px rgba(var(--swp-primary-rgb), 0.2);
}
.two-factor-avatar.two-factor-avatar-success {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.2) 0%, rgba(var(--swp-success-rgb), 0.1) 100%);
  color: var(--swp-success);
  box-shadow: 0 4px 12px rgba(var(--swp-success-rgb), 0.2);
}

.two-factor-login-title {
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin-bottom: var(--swp-space-2);
  text-align: center;
}

.two-factor-login-description {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-6);
  text-align: center;
}

.two-factor-code-input {
  font-family: var(--swp-font-mono);
  letter-spacing: 0.5em;
  text-align: center;
  font-size: 1.75rem !important;
  padding: var(--swp-space-4) var(--swp-space-3) !important;
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  transition: all var(--swp-transition-base);
}
.two-factor-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.4;
}
.two-factor-code-input:focus {
  border-color: var(--swp-primary);
  box-shadow: 0 0 0 4px rgba(var(--swp-primary-rgb), 0.1);
  letter-spacing: 0.5em !important;
}
@media (width <= 575.98px) {
  .two-factor-code-input {
    font-size: 1.5rem !important;
    padding: var(--swp-space-3) !important;
  }
}

.two-factor-form-hint {
  text-align: center;
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin-top: var(--swp-space-2);
}
.two-factor-form-hint a {
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-medium);
}
.two-factor-form-hint a:hover {
  text-decoration: underline;
}

.trust-device-option {
  padding: var(--swp-space-3);
  background: rgba(var(--swp-info-rgb), 0.05);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  margin: var(--swp-space-4) 0;
}
.trust-device-option .form-check {
  margin: 0;
}
.trust-device-option .form-check-input {
  margin-top: 0.15em;
}
.trust-device-option .form-check-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium);
  cursor: pointer;
}

.alternative-methods {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border);
  text-align: center;
}
.alternative-methods .alternative-methods-title {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}
.alternative-methods .alternative-methods-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.alternative-methods .btn {
  width: 100%;
  justify-content: center;
}

.two-factor-security-notice {
  text-align: center;
  margin-top: var(--swp-space-4);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
}

.email-resend-section {
  text-align: center;
  margin-top: var(--swp-space-4);
  padding: var(--swp-space-3);
  background: rgba(var(--swp-info-rgb), 0.05);
  border-radius: var(--swp-radius-md);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
}
.email-resend-section .resend-text {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.email-resend-section .resend-link {
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-medium);
}
.email-resend-section .resend-link:hover {
  text-decoration: underline;
}
.email-resend-section .expiry-warning {
  font-size: var(--swp-text-xs);
  color: var(--swp-warning);
  margin-top: var(--swp-space-2);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
}

@media (width <= 767.98px) {
  .totp-setup-container {
    padding: var(--swp-space-2) 0;
  }
  .setup-steps {
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-container {
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-image {
    max-width: 250px;
  }
  .verification-form-container {
    padding: var(--swp-space-3) 0;
  }
  .backup-codes-grid {
    padding: var(--swp-space-3);
  }
}
@media (width <= 575.98px) {
  .qr-code-image {
    max-width: 200px;
  }
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
  .two-factor-avatar {
    width: 64px;
    height: 64px;
  }
  .two-factor-login-title {
    font-size: 1.25rem;
  }
  .two-factor-login-description {
    font-size: var(--swp-text-sm);
  }
}
.backup-code-item code:focus-visible,
.manual-entry-details summary:focus-visible {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

@media (prefers-contrast: high) {
  .qr-code-image {
    border-width: 3px;
  }
  .backup-code-item code {
    border-width: 2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .backup-code-item code,
  .setup-steps .step,
  .manual-entry-details summary,
  .two-factor-code-input {
    transition: none;
  }
}
/**
 * SolidInvoice - Notifications Page Styles
 *
 * Notification preferences page with card-based layout and category grouping.
 * Page container/header/footer use shared form-page-* classes from _form-page.scss.
 * This file contains only notification-specific styles.
 */
.integration-management-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}

.integration-management-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-5);
}

.integration-management-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.15) 0%, rgba(var(--swp-primary-rgb), 0.05) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.integration-management-info {
  flex: 1;
}

.integration-management-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
  line-height: 1.4;
}

.integration-management-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.5;
}

.integration-management-list {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  padding: 0 var(--swp-space-5) var(--swp-space-5);
  border-top: 1px solid var(--swp-border);
  padding-top: var(--swp-space-4);
}

.integration-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  white-space: nowrap;
}
.integration-badge svg {
  flex-shrink: 0;
  color: var(--swp-primary);
}

.notification-groups {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--swp-space-6);
  margin-bottom: var(--swp-space-6);
}

.notification-group {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.group-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 var(--swp-space-2);
}
.group-title svg {
  color: var(--swp-primary);
  flex-shrink: 0;
}

.notification-cards {
  display: grid;
  gap: var(--swp-space-3);
}

.notification-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4) var(--swp-space-4);
  transition: all var(--swp-transition-base);
}
.notification-card:hover {
  border-color: var(--swp-border-dark);
  box-shadow: var(--swp-shadow-sm);
}
.notification-card:focus-within {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}

.notification-card-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
  min-width: 0;
}

.notification-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.08) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.notification-card-info {
  flex: 1;
  min-width: 0;
}

.notification-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-0-5);
  line-height: 1.4;
}

.notification-description {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.4;
}

.notification-card-channels {
  flex-shrink: 0;
}

.notification-card-channels .form-check {
  margin: 0;
  padding: 0;
  min-height: auto;
  position: relative;
}
.notification-card-channels .form-check .form-check-input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}
.notification-card-channels .form-check .form-check-input:focus + .form-check-label {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.notification-card-channels .form-check .form-check-label {
  display: inline-flex;
  align-items: center;
  padding: var(--swp-space-1-5) var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  cursor: pointer;
  transition: all var(--swp-transition-base);
  margin: 0;
  white-space: nowrap;
  user-select: none;
}
.notification-card-channels .form-check .form-check-label:hover {
  background: var(--swp-surface);
  border-color: var(--swp-primary);
  color: var(--swp-text-primary);
}
.notification-card-channels .form-check .form-check-input:checked + .form-check-label {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

@media (width <= 767.98px) {
  .integration-management-header {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
  }
  .integration-management-header .btn {
    width: 100%;
    justify-content: center;
  }
  .integration-management-list {
    padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-4);
  }
  .notification-groups {
    gap: var(--swp-space-5);
  }
  .group-title {
    font-size: var(--swp-text-xs);
  }
  .group-title svg {
    width: 16px;
    height: 16px;
  }
  .notification-card {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
    padding: var(--swp-space-3);
  }
  .notification-card-content {
    gap: var(--swp-space-2-5);
  }
  .notification-card-icon {
    width: 32px;
    height: 32px;
  }
  .notification-card-icon svg {
    width: 16px;
    height: 16px;
  }
  .notification-title {
    font-size: var(--swp-text-sm);
  }
  .notification-description {
    font-size: var(--swp-text-xs);
  }
  .notification-card-channels .notification-channels-list {
    flex-direction: column;
    gap: var(--swp-space-1-5);
  }
  .notification-card-channels .form-check .form-check-label {
    width: 100%;
    padding: var(--swp-space-2-5) var(--swp-space-3);
    font-size: var(--swp-text-sm);
    min-height: 44px;
  }
  .notifications-empty-state {
    padding: var(--swp-space-8) var(--swp-space-4);
  }
  .notifications-empty-state .empty-state-icon {
    width: 64px;
    height: 64px;
  }
  .notifications-empty-state .empty-state-icon svg {
    width: 48px;
    height: 48px;
  }
  .notifications-empty-state h3 {
    font-size: var(--swp-text-lg);
  }
  .notifications-empty-state p {
    font-size: var(--swp-text-sm);
  }
  .notifications-empty-state .btn {
    width: 100%;
  }
}
@media (width >= 768px) {
  .notification-groups {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media print {
  .notification-card {
    break-inside: avoid;
  }
}
/**
 * SolidInvoice - Subscription Pages Styles
 *
 * Billing, plan-picker, and subscription-state pages (pricing, overview,
 * change, cancelled, paused, pending, trial expired).
 *
 * All values are `--swp-*` design tokens. State is carried by a soft icon
 * medallion + heading, never by a decorative accent stripe, a colored glow, or
 * a looping animation. Colour stays on the brand: Trust Green is the only
 * accent; there is no Tabler blue and no amber-by-accident here.
 */
.subscription-page {
  min-height: calc(100vh - var(--swp-space-24));
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-12) var(--swp-space-4);
}

.subscription-container {
  max-width: 640px;
  width: 100%;
  text-align: center;
  padding: var(--swp-space-10);
  background: var(--swp-surface);
  border: none;
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-xl);
  animation: subscription-fade-in 0.3s ease-out;
}

@keyframes subscription-fade-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.subscription-page-header {
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-shadow-sm);
}
.subscription-page-header .h4 {
  font-weight: 600;
  color: var(--swp-text-primary);
}

.subscription-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: var(--swp-radius-xl);
  margin: 0 auto var(--swp-space-8);
}
.subscription-icon svg {
  width: 32px;
  height: 32px;
}

.subscription-icon-warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning);
}

.subscription-icon-danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}

.subscription-icon-info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.subscription-icon-paused {
  background: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.subscription-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-3);
  letter-spacing: -0.02em;
  line-height: 1.2;
}

.subscription-subtitle {
  font-size: var(--swp-text-lg);
  color: var(--swp-text-secondary);
  margin: 0 0 var(--swp-space-10);
  line-height: 1.7;
}

.subscription-benefits {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  padding: var(--swp-space-6);
  margin-bottom: var(--swp-space-8);
  text-align: left;
  box-shadow: var(--swp-shadow-xs);
}
.subscription-benefits h3 {
  font-size: var(--swp-text-md);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-4);
}
.subscription-benefits ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.subscription-benefits li {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-2-5) 0;
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-base);
}
.subscription-benefits li svg {
  width: 20px;
  height: 20px;
  color: var(--swp-success);
  flex-shrink: 0;
}

.subscription-cancelled-page .subscription-benefits li svg {
  color: var(--swp-text-muted);
}

.subscription-actions {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-4);
}
.subscription-actions .btn-lg {
  padding: var(--swp-space-3-5) var(--swp-space-6);
  font-size: var(--swp-text-md);
  font-weight: 600;
  box-shadow: var(--swp-shadow-sm);
  transition: box-shadow var(--swp-transition-base);
}
.subscription-actions .btn-lg svg {
  width: 20px;
  height: 20px;
}
.subscription-actions .btn-lg:hover {
  box-shadow: var(--swp-shadow-md);
}
.subscription-actions .btn-lg:focus-visible {
  outline: none;
  box-shadow: var(--swp-shadow-md), var(--swp-ring-primary);
}
.subscription-actions .btn-ghost svg {
  width: 18px;
  height: 18px;
}
.subscription-actions .btn-ghost:hover {
  background: var(--swp-gray-50);
}
.subscription-actions .btn-ghost:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.subscription-paused-page .subscription-benefits li svg {
  color: var(--swp-text-secondary);
}

.alert-banner {
  border-radius: 0;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  margin-bottom: 0;
  padding: var(--swp-space-3) var(--swp-space-4);
}
.alert-banner .d-flex {
  align-items: center;
}
.alert-banner .alert-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.alert-banner .btn-sm {
  white-space: nowrap;
  flex-shrink: 0;
}
.alert-banner.alert-warning {
  background: var(--swp-warning-lighter);
  border-bottom-color: var(--swp-warning-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-warning .btn-warning {
  background: var(--swp-warning);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-warning .btn-warning:hover {
  background: var(--swp-warning-hover);
}
.alert-banner.alert-danger {
  background: var(--swp-danger-lighter);
  border-bottom-color: var(--swp-danger-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-danger .btn-danger {
  background: var(--swp-danger);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-danger .btn-danger:hover {
  background: var(--swp-danger-hover);
}

.subscription-pricing-page .subscription-container {
  max-width: 1100px;
  text-align: center;
}

.plan-card {
  position: relative;
  overflow: hidden;
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.plan-card:hover {
  box-shadow: var(--swp-shadow-md);
}
.plan-card > .card-body {
  padding-top: var(--swp-space-9);
}

.plan-card-recommended {
  border-width: 2px;
  box-shadow: var(--swp-shadow-md);
}
.plan-card-recommended:hover {
  box-shadow: var(--swp-shadow-xl);
}

.plan-card-banner {
  position: absolute;
  top: 0;
  inset-inline: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-inverse);
  background: var(--swp-primary);
}
.plan-card-banner svg {
  flex-shrink: 0;
}

.plan-card-free {
  background: var(--swp-gray-50);
  border: 1px dashed var(--swp-border);
  box-shadow: none;
  transition: border-color var(--swp-transition-base), background var(--swp-transition-base);
}
.plan-card-free:hover {
  border-color: var(--swp-primary);
  background: var(--swp-surface);
}
.plan-card-free .card-body {
  padding: var(--swp-space-4) var(--swp-space-6);
}
.plan-card-free .plan-card-features {
  font-size: var(--swp-text-sm);
}
.plan-card-free .plan-card-features li {
  margin-bottom: var(--swp-space-1);
}

.plan-card-free-header {
  flex-shrink: 0;
  min-width: 0;
}

.plan-card-free-cta {
  flex-shrink: 0;
}

.plan-card-features-inline {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
}
.plan-card-features-inline li {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  white-space: nowrap;
}

.plan-card-price {
  font-size: var(--swp-text-4xl);
  line-height: 1.1;
}

.plan-card-interval {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
}

.plan-card-features {
  text-align: start;
}

.subscription-coupon {
  background: var(--swp-primary-lighter);
  border: 1px solid var(--swp-primary-light);
  border-radius: var(--swp-radius-lg);
}
.subscription-coupon .badge {
  background: var(--swp-primary);
  color: var(--swp-text-inverse);
}

.subscription-welcome-page .subscription-container {
  max-width: 720px;
}

.welcome-plan {
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-xs);
}
.welcome-plan .card-body {
  padding: var(--swp-space-6);
}
.welcome-plan .plan-card-features {
  margin-bottom: 0;
}

.welcome-plan-pricing {
  white-space: nowrap;
}

.welcome-plan-price {
  font-size: var(--swp-text-2xl);
  font-weight: 700;
  line-height: 1.1;
}

.welcome-reassure-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2-5);
  height: 100%;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
}
.welcome-reassure-item svg {
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-success);
}

@media (width <= 767.98px) {
  .subscription-page {
    padding: var(--swp-space-6) var(--swp-space-3);
  }
  .subscription-page-header .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .subscription-page-header .btn-group {
    width: 100%;
  }
  .subscription-page-header .btn-group .btn {
    width: 100%;
  }
  .subscription-container {
    padding: var(--swp-space-6);
  }
  .subscription-icon {
    width: 48px;
    height: 48px;
  }
  .subscription-icon svg {
    width: 28px;
    height: 28px;
  }
  .subscription-title {
    font-size: 1.375rem;
  }
  .subscription-subtitle {
    font-size: var(--swp-text-md);
  }
  .subscription-benefits {
    padding: var(--swp-space-4);
  }
  .subscription-actions .btn {
    width: 100%;
  }
  .alert-banner .d-flex {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-3);
  }
  .alert-banner .btn-sm {
    width: 100%;
  }
}
@media (width >= 768px) and (width <= 991.98px) {
  .subscription-container {
    max-width: 600px;
    padding: var(--swp-space-8);
  }
}
@media (prefers-reduced-motion: reduce) {
  .subscription-container {
    animation: none;
  }
  .plan-card,
  .plan-card-free,
  .subscription-actions .btn-lg {
    transition: none;
  }
}
@media print {
  .subscription-page {
    padding: 0;
  }
  .subscription-container {
    box-shadow: none;
    border: 1px solid var(--swp-border);
  }
  .subscription-actions {
    display: none;
  }
  .alert-banner {
    display: none;
  }
}
/**
 * Onboarding Checklist - Dashboard widget
 *
 * The first component a new user meets. Priorities, in order:
 *   1. Convey state (todo / done / hovered / focused). Never decoration.
 *   2. Stay on the SolidInvoice design system - `--swp-*` tokens only.
 *   3. Read correctly whether a row is an <a> (actionable) or a <span> (done).
 *
 * Structure comes from Tabler (`card`, `card-stamp`, `card-link-pop`,
 * `offcanvas`, `visually-hidden`). This file only adds what Tabler does not
 * already provide - it does not restate or fight it.
 */
.card.card-active {
  border-color: var(--swp-success);
  background: var(--swp-success-lighter);
}

.card-stamp-icon {
  opacity: 0.15;
}

.checklist-items-wrapper {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2-5);
}

.checklist-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  color: inherit;
  transition: color var(--swp-duration-fast) var(--swp-ease-out), background-color var(--swp-duration-fast) var(--swp-ease-out), border-color var(--swp-duration-fast) var(--swp-ease-out), box-shadow var(--swp-duration-fast) var(--swp-ease-out);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) .checklist-item-action {
  color: var(--swp-primary);
}
.checklist-item:not(.completed):focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.checklist-item.completed {
  background: var(--swp-success-lighter);
  border-color: var(--swp-success-light);
  cursor: default;
}
.checklist-item.completed .item-name {
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-normal);
  text-decoration: line-through;
}
.checklist-item.completed .item-icon {
  color: var(--swp-text-light);
}
.checklist-item.completed .checklist-item-action {
  display: none;
}

.checklist-item-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-success);
}

.checklist-item:not(.completed) .checklist-item-icon {
  color: var(--swp-gray-400);
}

.checklist-item-content {
  flex: 1;
  min-width: 0;
}

.checklist-item-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-1);
}

.checklist-item .item-icon {
  display: flex;
  align-items: center;
  color: var(--swp-primary);
}

.checklist-item .item-name {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.checklist-item-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: var(--swp-leading-normal);
}

.checklist-item-action {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-text-light);
}

.onboarding-offcanvas {
  width: 420px;
  max-width: 100%;
}

.onboarding-offcanvas .offcanvas-body .card {
  border: 1px solid var(--swp-border-light);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-shadow-sm);
}

.onboarding-progress-label {
  min-width: 3rem;
}

@media (prefers-reduced-motion: reduce) {
  .checklist-item {
    transition: none;
  }
}
/**
 * Onboarding Wizard - the first-run flow (/onboarding)
 *
 * This is the first screen every new user meets: post-install and post-signup,
 * a user with no company is redirected here to create their company, an
 * optional first client, and a first invoice.
 *
 * It used to be styled with inline \3c style> blocks that contradicted the design
 * system wholesale - Bootstrap blue (#066fd1) instead of Trust Green, gradients
 * on the canvas / step icon / badge, a 3px `border-left` side-stripe on the
 * benefits box (a hard ban), and a bounce/elastic celebration with an infinite
 * pulse and no reduced-motion fallback. This file replaces all of it with
 * `--swp-*` tokens, flat surfaces, and ease-out motion.
 *
 * Everything is scoped under `.onboarding-container` because the class names
 * (`step-icon`, `step-benefits`, `welcome-badge`, ...) are generic and used
 * nowhere else - scoping keeps them from leaking into the rest of the app.
 *
 * Structure (Bootstrap grid, `card`, `btn`, `form-control`, `progress`) comes
 * from Tabler; this file only styles the custom wizard chrome.
 */
.onboarding-container {
  background: var(--swp-body-bg);
}
.onboarding-container .onboarding-progress {
  box-shadow: var(--swp-shadow-xs);
}
.onboarding-container .step-indicator {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.onboarding-container .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-gray-100);
  color: var(--swp-text-muted);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out), color var(--swp-duration-slow) var(--swp-ease-out), box-shadow var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-number {
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-number {
  background: var(--swp-primary);
  color: var(--swp-text-inverse);
  box-shadow: var(--swp-ring-primary);
}
.onboarding-container .step-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-label,
.onboarding-container .step-indicator.current .step-label {
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-label {
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-connector {
  flex: 1;
  height: 2px;
  margin: 0 var(--swp-space-4);
  background: var(--swp-border);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-connector.completed {
  background: var(--swp-primary);
}
.onboarding-container .onboarding-step-card {
  padding: var(--swp-space-12);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-sm);
}
.onboarding-container .step-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  margin: 0 auto var(--swp-space-6);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.onboarding-container .welcome-section {
  margin-bottom: var(--swp-space-8);
  text-align: center;
}
.onboarding-container .welcome-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
  padding: var(--swp-space-2) var(--swp-space-4);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-benefits {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-primary-lighter);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
}
.onboarding-container .step-benefits ul {
  margin: 0;
  padding-left: var(--swp-space-5);
  color: var(--swp-text-secondary);
}
.onboarding-container .step-benefits li + li {
  margin-top: var(--swp-space-2);
}
.onboarding-container .celebration-icon {
  display: flex;
  justify-content: center;
}
.onboarding-container .success-checkmark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 6rem;
  height: 6rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-success-light);
  color: var(--swp-success-dark);
  animation: onboarding-celebrate var(--swp-duration-slow) var(--swp-ease-out) both;
}
.onboarding-container .onboarding-tip {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  text-align: left;
  color: var(--swp-text-secondary);
}
.onboarding-container .onboarding-tip svg {
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-secondary-dark);
}
@media (width <= 768px) {
  .onboarding-container .onboarding-step-card {
    padding: var(--swp-space-8) var(--swp-space-6);
  }
  .onboarding-container .step-connector {
    margin: 0 var(--swp-space-2);
  }
}

@keyframes onboarding-celebrate {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .onboarding-container .step-number,
  .onboarding-container .step-label,
  .onboarding-container .step-connector {
    transition: none;
  }
  .onboarding-container .success-checkmark {
    animation: none;
  }
}
/**
 * SolidInvoice Design System - Money Display
 *
 * The signature component (DESIGN.md section 5). Every currency value in the
 * application renders through `.money`; it is the single source of truth for
 * money display, and raw `{{ amount }}` rendering is prohibited.
 *
 * Contract:
 *   <span class="money">
 *     <span class="money-currency">USD</span>
 *     <strong class="money-amount">1,234.56</strong>
 *   </span>
 *
 * Modifiers (on the `.money` root, combinable):
 *   .money--paid      Amount in AA-safe success. ONLY valid alongside an
 *                     explicit "Paid" label (the Money-Color Rule).
 *   .money--overdue   Amount in AA-safe danger. Same labelling rule.
 *   .money--total     Weight 600, amount one size step up.
 *   (none)            Neutral - the default and the common case.
 *
 * The component never sets its own font-size. It inherits from context, so the
 * same markup is correct inline in a table cell, in a heading, and at
 * `.stat-value` scale in the dashboard hero tiles. Only `.money--total` steps
 * the amount, and it steps relatively so the result is right at every base.
 */
.money {
  display: inline-flex;
  align-items: baseline;
  gap: var(--swp-space-1);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.money-currency {
  color: var(--swp-money-currency);
}

.money-amount {
  color: var(--swp-money-neutral);
  font-weight: var(--swp-font-medium);
}

.money--paid .money-amount {
  color: var(--swp-money-paid);
}

.money--overdue .money-amount {
  color: var(--swp-money-overdue);
}

.money--total .money-amount {
  font-size: calc(1em * var(--swp-money-total-scale));
  font-weight: var(--swp-font-semibold);
}

.money--total .money-currency {
  font-size: var(--swp-money-currency-scale);
}

/**
 * SolidInvoice Design System - Status Chip
 *
 * The one status chip (DESIGN.md section 5). Every status word in the
 * application renders through `.status-chip`, on a five-value semantic set:
 * neutral, info, success, warning, danger.
 *
 * Contract:
 *   <span class="status-chip status-chip--success">Paid</span>
 *
 * Every variant is an AA-safe text colour on its own tint:
 *   neutral   gray-100      / text-secondary   6.92:1
 *   info      info-light    / info-dark        5.49:1
 *   success   success-light / success-dark     4.84:1
 *   warning   warning-light / warning-dark     6.37:1
 *   danger    danger-light  / danger-dark      5.30:1
 *
 * The tint itself measures 1.05-1.22:1 against the page. That is deliberate.
 * The chip's meaning is carried by its text label, so the pill is decoration
 * around legible text, not a control whose boundary must be perceivable.
 *
 * A chip is never interactive: no shadow, no border, no hover, no transition,
 * and it is never a focus target. A chip is also never truncated - a
 * half-shown status is worse than a wider column.
 */
.status-chip {
  display: inline-flex;
  align-items: center;
  padding: var(--swp-space-0-5) var(--swp-space-2-5);
  border-radius: var(--swp-radius-full);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  line-height: 1.25;
  letter-spacing: 0;
  white-space: nowrap;
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}
.status-chip--neutral {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}
.status-chip--info {
  background-color: var(--swp-info-light);
  color: var(--swp-info-dark);
}
.status-chip--success {
  background-color: var(--swp-success-light);
  color: var(--swp-success-dark);
}
.status-chip--warning {
  background-color: var(--swp-warning-light);
  color: var(--swp-warning-dark);
}
.status-chip--danger {
  background-color: var(--swp-danger-light);
  color: var(--swp-danger-dark);
}

/**
 * SolidInvoice Design System - Layout Index
 *
 * Layout pattern styles that extend Tabler/Bootstrap.
 * Only add layout files for patterns not covered by the frameworks.
 *
 * Note: Most layout styling comes from Tabler (page-wrapper, page-header, etc.)
 * This file imports only custom extensions when needed.
 */
/**
 * SolidInvoice — Vertical Navbar (Sidebar)
 *
 * Tabler ships `.navbar-vertical.navbar-dark` as a heavy slate panel (gray-800)
 * that PRODUCT.md names as the AdminLTE anti-reference the rewrite is escaping.
 * This file recolors the sidebar one shade lighter (gray-700) so it still
 * carries presence, but uses tinted neutrals and a green-tinted active state
 * to differentiate it from generic Tabler admin output.
 *
 * Selector specificity targets `.navbar-vertical` so Tabler's mobile-collapse,
 * drawer, and dropdown rules continue to apply.
 */
.navbar.navbar-vertical,
.navbar.navbar-vertical.navbar-dark {
  background-color: var(--swp-gray-700);
  color: var(--swp-gray-300);
  border-right: 1px solid var(--swp-gray-800);
  box-shadow: none;
}
.navbar.navbar-vertical .navbar-brand,
.navbar.navbar-vertical.navbar-dark .navbar-brand {
  color: var(--swp-gray-50);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .navbar-brand-autodark,
.navbar.navbar-vertical.navbar-dark .navbar-brand-autodark {
  filter: none;
}
.navbar.navbar-vertical .nav-link,
.navbar.navbar-vertical.navbar-dark .nav-link {
  color: var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
}
.navbar.navbar-vertical .nav-link .nav-link-icon,
.navbar.navbar-vertical .nav-link .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-title {
  color: inherit;
}
.navbar.navbar-vertical .nav-link:hover,
.navbar.navbar-vertical.navbar-dark .nav-link:hover {
  background-color: var(--swp-gray-600);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link:focus-visible,
.navbar.navbar-vertical.navbar-dark .nav-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link.active,
.navbar.navbar-vertical.navbar-dark .nav-link.active {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .nav-link.active .nav-link-icon,
.navbar.navbar-vertical .nav-link.active .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-title {
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .nav-link.active:hover,
.navbar.navbar-vertical.navbar-dark .nav-link.active:hover {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .nav-subtitle,
.navbar.navbar-vertical .nav-header,
.navbar.navbar-vertical.navbar-dark .nav-subtitle,
.navbar.navbar-vertical.navbar-dark .nav-header {
  color: var(--swp-gray-400);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  font-weight: var(--swp-font-semibold);
  font-size: var(--swp-text-xs);
}
.navbar.navbar-vertical .nav-link-toggle,
.navbar.navbar-vertical .dropdown-toggle::after,
.navbar.navbar-vertical.navbar-dark .nav-link-toggle,
.navbar.navbar-vertical.navbar-dark .dropdown-toggle::after {
  color: var(--swp-gray-400);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu {
  background-color: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-md);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item {
  color: var(--swp-text-secondary);
  border-radius: var(--swp-radius-sm);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:hover, .navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:focus,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:hover,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:focus {
  background-color: var(--swp-surface-hover);
  color: var(--swp-text-primary);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item.active,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item.active {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .navbar-toggler,
.navbar.navbar-vertical.navbar-dark .navbar-toggler {
  color: var(--swp-gray-200);
  border-color: var(--swp-gray-600);
}
.navbar.navbar-vertical .navbar-toggler:focus-visible,
.navbar.navbar-vertical.navbar-dark .navbar-toggler:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

@media (width < 992px) {
  .navbar.navbar-vertical.navbar-expand-lg .navbar-collapse {
    background-color: var(--swp-gray-700);
  }
}

/**
 * SolidInvoice Design System - Form Styles
 *
 * Generic form component styles for the entire application.
 * Uses design system tokens for consistent styling.
 */
.form-control,
.form-select {
  border-radius: var(--swp-input-radius);
  border-color: var(--swp-input-border);
  padding: var(--swp-input-padding-y) var(--swp-input-padding-x);
  font-size: var(--swp-text-base);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.form-control:focus,
.form-select:focus {
  border-color: var(--swp-input-focus-border);
  box-shadow: var(--swp-input-focus-ring);
}
.form-control::placeholder,
.form-select::placeholder {
  color: var(--swp-text-light);
}

.form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.form-label.required::after {
  content: " *";
  color: var(--swp-danger);
}

.form-field .form-label {
  font-weight: var(--swp-font-medium);
  color: var(--swp-body-color);
  margin-bottom: var(--swp-space-2);
}
.form-field .form-control,
.form-field .form-select {
  border-color: var(--swp-border);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.form-field .form-control:focus,
.form-field .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.form-field .input-group-text {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border);
  color: var(--swp-text-muted);
}

.form-help,
.form-text,
.form-help-text {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
  line-height: var(--swp-leading-normal);
  margin-top: var(--swp-space-1);
}
.form-help small,
.form-text small,
.form-help-text small {
  font-size: inherit;
}

.form-switch-field {
  padding: var(--swp-space-3-5) var(--swp-space-4);
  background-color: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border: 1px solid var(--swp-border);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.form-switch-field:hover {
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  background-color: var(--swp-primary-lighter);
}

.form-switch-wrapper {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  margin-bottom: 0;
}
.form-switch-wrapper .form-check-input {
  width: 2.5rem;
  height: 1.25rem;
  margin-top: 0;
  cursor: pointer;
  background-color: var(--swp-gray-300);
  border: none;
  transition: background-color var(--swp-transition-fast);
}
.form-switch-wrapper .form-check-input:checked {
  background-color: var(--swp-primary);
}
.form-switch-wrapper .form-check-input:focus {
  box-shadow: var(--swp-ring-primary);
}
.form-switch-wrapper .form-check-label {
  font-weight: var(--swp-font-medium);
  cursor: pointer;
  margin-bottom: 0;
  margin-left: 0.5rem;
  flex: 1;
}

.input-icon-group .input-group-text {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border);
  color: var(--swp-text-muted);
}
.input-icon-group .input-group-text svg {
  width: 18px;
  height: 18px;
}
.input-icon-group .form-control {
  border-left: none;
}
.input-icon-group .form-control:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.input-icon-group .form-control:focus ~ .input-group-text,
.input-icon-group .form-control:focus + .input-group-text {
  border-color: var(--swp-primary);
}
.input-icon-group .input-group-text:first-child {
  border-right: none;
}
.input-icon-group .input-group-text:first-child + .form-control {
  border-left: none;
}

.input-validate-group .btn-validate {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: var(--swp-text-sm);
}
.input-validate-group .btn-validate svg {
  width: 16px;
  height: 16px;
}

.form-group-card {
  padding: var(--swp-space-5);
  background-color: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border);
}
.form-group-card .form-group-header {
  margin-bottom: var(--swp-space-4);
}
.form-group-card .form-group-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-body-color);
  margin: 0;
}
.form-group-card .form-group-content .mb-3:last-child,
.form-group-card .form-group-content .mb-4:last-child {
  margin-bottom: 0 !important;
}

.address-widget .card-body {
  padding: var(--swp-space-4);
}
.address-widget .form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
}
.address-widget .form-control,
.address-widget .form-select {
  font-size: var(--swp-text-base);
}

.form-control.is-invalid,
.form-select.is-invalid {
  border-color: var(--swp-danger);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23ef4444%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23ef4444%27 stroke=%27none%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.form-control.is-invalid:focus,
.form-select.is-invalid:focus {
  border-color: var(--swp-danger);
  box-shadow: var(--swp-ring-danger);
}

.form-control.is-valid,
.form-select.is-valid {
  border-color: var(--swp-success);
}
.form-control.is-valid:focus,
.form-select.is-valid:focus {
  border-color: var(--swp-success);
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15);
}

.invalid-feedback {
  color: var(--swp-danger);
  font-size: var(--swp-text-sm);
  margin-top: var(--swp-space-1-5);
}

.valid-feedback {
  color: var(--swp-success);
  font-size: var(--swp-text-sm);
  margin-top: var(--swp-space-1-5);
}

.file-upload-area {
  border: 2px dashed var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-6);
  text-align: center;
  background: var(--swp-surface);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
  cursor: pointer;
}
.file-upload-area:hover, .file-upload-area.dragover {
  border-color: var(--swp-primary);
  background-color: var(--swp-primary-lighter);
}
.file-upload-area .upload-icon {
  color: var(--swp-text-light);
  margin-bottom: var(--swp-space-2);
}
.file-upload-area .upload-icon svg {
  width: 32px;
  height: 32px;
}
.file-upload-area .upload-text {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
}
.file-upload-area .upload-hint {
  color: var(--swp-text-light);
  font-size: var(--swp-text-xs);
  margin-top: var(--swp-space-1);
}

.dropzone {
  border: 2px dashed var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  text-align: center;
  background: var(--swp-surface);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
  min-height: auto;
}
.dropzone:hover, .dropzone.dropzone-dragover {
  border-color: var(--swp-primary);
  background-color: var(--swp-primary-lighter);
}

.form-section-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-body-color);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
}
.form-section-title svg,
.form-section-title i {
  color: var(--swp-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
}

/**
 * Standard Form Actions Pattern:
 *
 * ┌─────────────────────────────────────────────────────────────┐
 * │ [Cancel (ghost)]                      [Save (primary + icon)]│
 * └─────────────────────────────────────────────────────────────┘
 *
 * - Cancel: Left side OR ghost style
 * - Save: Right side, primary style, with save icon
 */
.form-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border-light);
}
.card-footer .form-actions {
  padding: 0;
  background: transparent;
  border-top: none;
}
.form-actions.form-actions-spread {
  justify-content: space-between;
}

.form-inline {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-wrap: wrap;
}
.form-inline .form-control,
.form-inline .form-select {
  width: auto;
}

.form-horizontal .form-group,
.form-horizontal .mb-3,
.form-horizontal .mb-4 {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: var(--swp-space-4);
  align-items: start;
}
@media (width <= 768px) {
  .form-horizontal .form-group,
  .form-horizontal .mb-3,
  .form-horizontal .mb-4 {
    grid-template-columns: 1fr;
  }
}
.form-horizontal .form-label {
  padding-top: var(--swp-space-2-5);
  margin-bottom: 0;
  text-align: right;
}
@media (width <= 768px) {
  .form-horizontal .form-label {
    text-align: left;
    padding-top: 0;
  }
}

.form-compact .mb-3,
.form-compact .mb-4 {
  margin-bottom: var(--swp-space-3) !important;
}
.form-compact .form-control,
.form-compact .form-select {
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
}
.form-compact .form-label {
  font-size: var(--swp-text-xs);
  margin-bottom: var(--swp-space-1);
}

.btn {
  gap: var(--swp-space-2);
}

.btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border-radius: var(--swp-radius-md);
}
.btn-icon svg {
  width: 18px;
  height: 18px;
}

.btn-ghost-danger {
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
}
.btn-ghost-danger:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}
.btn-ghost-danger:focus {
  box-shadow: var(--swp-ring-danger);
}

.card-header-tabs .nav-link {
  font-size: 0.875rem;
}

.fw-medium {
  font-weight: 500 !important;
}

@media (width <= 576px) {
  .form-switch-field {
    padding: var(--swp-space-3);
  }
  .form-switch-wrapper .form-check-input {
    width: 2.25rem;
    height: 1.125rem;
  }
  .form-group-card {
    padding: var(--swp-space-4);
  }
  .form-actions {
    padding: var(--swp-space-3) var(--swp-space-4);
    flex-wrap: wrap;
  }
  .form-actions .btn {
    flex: 1;
    min-width: 100px;
  }
}
/**
 * Company Pages Styles
 *
 * Styles for company selection and creation pages
 * All styles are scoped to .company-select-page and .company-create-page
 * to avoid conflicts with other pages.
 */
.company-select-page,
.company-create-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.company-select-page .company-page-header,
.company-create-page .company-page-header {
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-shadow-xs);
}
.company-select-page .company-page-logo,
.company-create-page .company-page-logo {
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-page-logo img,
.company-create-page .company-page-logo img {
  height: 48px;
  width: auto;
}
.company-select-page .company-page-brand h1,
.company-create-page .company-page-brand h1 {
  font-weight: 700;
  color: var(--swp-text-primary);
}
.company-select-page .company-page-intro h2,
.company-create-page .company-page-intro h2 {
  font-weight: 600;
  color: var(--swp-text-primary);
  font-size: 1.75rem;
}
.company-select-page .company-page-intro p,
.company-create-page .company-page-intro p {
  font-size: 1.125rem;
}
.company-select-page .avatar-md,
.company-create-page .avatar-md {
  width: 2.5rem;
  height: 2.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-lg,
.company-create-page .avatar-lg {
  width: 3.5rem;
  height: 3.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-2xl,
.company-create-page .avatar-2xl {
  width: 4rem;
  height: 4rem;
  font-size: 1.25rem;
  font-weight: 600;
}
.company-select-page .avatar-xl,
.company-create-page .avatar-xl {
  width: 5rem;
  height: 5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-initials,
.company-create-page .avatar-initials {
  font-weight: 600;
  font-size: 1.25rem;
  letter-spacing: -0.02em;
}
.company-select-page .form-hint,
.company-create-page .form-hint {
  font-size: 0.875rem;
  color: var(--swp-text-secondary);
  display: flex;
  align-items: center;
}
@media (width <= 767.98px) {
  .company-select-page .avatar-lg,
  .company-create-page .avatar-lg {
    width: 3rem;
    height: 3rem;
  }
  .company-select-page .avatar-lg svg,
  .company-create-page .avatar-lg svg {
    width: 24px;
    height: 24px;
  }
  .company-select-page .avatar-2xl,
  .company-create-page .avatar-2xl {
    width: 3rem;
    height: 3rem;
    font-size: 1rem;
  }
  .company-select-page .h2, .company-select-page h2,
  .company-create-page .h2,
  .company-create-page h2 {
    font-size: 1.5rem;
  }
}

.company-select-page .card.shadow-sm {
  box-shadow: var(--swp-shadow-lg) !important;
  border: none;
  background: var(--swp-surface);
}
.company-select-page .card-company {
  transition: var(--swp-transition-all);
  border: 2px solid var(--swp-border);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-md);
  border-radius: var(--swp-radius-lg);
}
.company-select-page .card-company:hover {
  transform: translateY(-4px);
  box-shadow: var(--swp-shadow-xl);
  border-color: var(--swp-primary);
}
.company-select-page .card-company:hover .company-arrow {
  transform: translateX(4px);
}
.company-select-page .card-company:hover h3 {
  color: var(--swp-primary);
}
.company-select-page .card-company:active {
  transform: translateY(-2px);
}
.company-select-page .company-avatar {
  flex-shrink: 0;
}
.company-select-page .company-avatar .avatar {
  box-shadow: var(--swp-shadow-sm);
}
.company-select-page .company-avatar .avatar img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: var(--swp-space-2);
}
.company-select-page .company-avatar .avatar.bg-primary {
  background-color: var(--swp-primary) !important;
  background-image: none !important;
}
.company-select-page .company-avatar .avatar-initials,
.company-select-page .company-avatar .avatar.bg-primary span {
  color: var(--swp-text-inverse) !important;
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-arrow {
  flex-shrink: 0;
  transition: transform var(--swp-duration-base) var(--swp-ease-in-out);
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .min-w-0 {
  min-width: 0;
}
.company-select-page .card-create-company {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05) 0%, rgba(var(--swp-success-rgb), 0.02) 100%);
  border: 2px dashed var(--swp-border);
  transition: var(--swp-transition-all);
}
.company-select-page .card-create-company:hover {
  border-color: var(--swp-success);
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.08) 0%, rgba(var(--swp-success-rgb), 0.04) 100%);
}
.company-select-page .w-md-auto {
  width: auto !important;
}
@media (width >= 768px) {
  .company-select-page .w-md-auto {
    width: auto !important;
  }
}

.company-create-page .form-smooth .form-control:focus,
.company-create-page .form-smooth .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--swp-primary-rgb), 0.1);
}
.company-create-page .card {
  box-shadow: var(--swp-shadow-lg);
  border: none;
}
.company-create-page .alert {
  border-radius: var(--swp-radius-lg);
  border: 1px solid transparent;
}
.company-create-page .alert.alert-info {
  background-color: rgba(var(--swp-info-rgb), 0.08);
  border-color: rgba(var(--swp-info-rgb), 0.2);
}
.company-create-page .alert.alert-warning {
  background-color: rgba(var(--swp-warning-rgb), 0.08);
  border-color: rgba(var(--swp-warning-rgb), 0.2);
}
.company-create-page .alert.alert-success {
  background-color: rgba(var(--swp-success-rgb), 0.08);
  border-color: rgba(var(--swp-success-rgb), 0.2);
}
.company-create-page .btn-primary {
  font-weight: 600;
  letter-spacing: 0.01em;
}

/**
 * Settings Page Styles
 * Only custom styles that can't be achieved with Bootstrap/Tabler utilities
 */
.settings-page {
  max-width: 900px;
  margin: 0 auto;
  padding-bottom: 2rem;
}

@media (max-width: 767.98px) {
  .settings-page > .nav-underline {
    margin-left: -1rem;
    margin-right: -1rem;
    padding-left: 1rem;
    padding-right: 1rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
  }
  .settings-page > .nav-underline::-webkit-scrollbar {
    display: none;
  }
  .settings-page > .nav-underline .nav-item {
    flex-shrink: 0;
  }
}
.settings-content-card {
  border-radius: var(--swp-radius-lg);
}
.settings-content-card:hover {
  transform: none;
}
.settings-content-card > .card-body {
  padding: var(--swp-space-6);
}
@media (min-width: 768px) {
  .settings-content-card > .card-body {
    padding: var(--swp-space-8) var(--swp-space-8) var(--swp-space-6);
  }
}
.settings-content-card > .card-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top-color: var(--swp-border-light);
}
@media (min-width: 768px) {
  .settings-content-card > .card-footer {
    padding: var(--swp-space-4) var(--swp-space-8);
  }
}
.settings-content-card .card-body > .border-bottom {
  border-bottom-color: var(--swp-border-light) !important;
}
.settings-content-card .card-body h3 {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.settings-content-card .card-body h3 > svg {
  color: var(--swp-text-muted);
}
.settings-content-card .card-body h3 + p.text-muted {
  max-width: 65ch;
}

.logo-upload-card .logo-preview-frame {
  width: 80px;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ffffff;
  border-radius: 0.5rem;
  border: 1px solid #e2e8f0;
  overflow: hidden;
}
.logo-upload-card .logo-preview-frame img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.logo-upload-card .dropzone {
  border: 2px dashed #cbd5e1;
  border-radius: 0.5rem;
  min-height: auto;
}
.logo-upload-card .dropzone:hover, .logo-upload-card .dropzone.dropzone-dragover {
  border-color: var(--swp-primary);
  background-color: rgba(var(--swp-primary-rgb), 0.02);
}

.settings-danger-zone .card {
  border-radius: var(--swp-radius-lg);
  border-color: var(--swp-danger-light);
}
.settings-danger-zone .card:hover {
  transform: none;
}
.settings-danger-zone .card .card-header {
  background: var(--swp-danger-lighter) !important;
  border-bottom-color: var(--swp-danger-light) !important;
  padding: var(--swp-space-3) var(--swp-space-6);
}
.settings-danger-zone .card .card-header .card-title {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-danger);
}
.settings-danger-zone .card .card-body {
  padding: var(--swp-space-5) var(--swp-space-6);
}
.settings-danger-zone .card .card-body h3 {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

#deleteCompanyModal .modal-content {
  border-radius: 1rem;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
}
#deleteCompanyModal .font-monospace {
  background-color: #fef2f2;
  padding: 0.5rem 1rem;
  border-radius: 0.5rem;
}

.custom-field-list .custom-field-row {
  transition: background-color 120ms ease;
}
.custom-field-list .custom-field-row:hover .custom-field-handle {
  color: var(--tblr-body-color, #1e293b);
}
.custom-field-list .custom-field-row.sortable-ghost {
  opacity: 0.4;
  background-color: rgba(var(--swp-primary-rgb, 99 102 241), 0.06);
}
.custom-field-list .custom-field-row.sortable-chosen {
  background-color: rgba(var(--swp-primary-rgb, 99 102 241), 0.04);
}
.custom-field-list .custom-field-handle {
  cursor: grab;
  padding: 0.25rem;
  color: var(--tblr-muted, #94a3b8);
  line-height: 1;
  border-radius: 0.25rem;
}
.custom-field-list .custom-field-handle:active {
  cursor: grabbing;
}

@media print {
  .settings-page .nav-underline,
  .settings-page .settings-danger-zone,
  .settings-page .card-footer {
    display: none !important;
  }
}
.template-picker .template-picker-card {
  overflow: hidden;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.template-picker .template-picker-card:has(.template-picker-input:checked) {
  border-color: var(--tblr-primary, #206bc4);
  box-shadow: 0 0 0 2px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.25);
}
.template-picker .template-picker-card:has(.template-picker-input:focus-visible) {
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.5);
}
.template-picker .template-picker-option {
  display: block;
  position: relative;
  margin: 0;
  cursor: pointer;
}
.template-picker .template-picker-input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  border: 0;
  opacity: 0;
  pointer-events: none;
}
.template-picker .template-picker-thumb {
  display: block;
  position: relative;
  width: 100%;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--tblr-bg-surface-secondary, #f1f5f9);
}
.template-picker .template-picker-thumb iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 400%;
  height: 400%;
  border: 0;
  transform: scale(0.25);
  transform-origin: 0 0;
  pointer-events: none;
}
.template-picker .template-picker-check {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  display: none;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  background: var(--tblr-primary, #206bc4);
  color: #ffffff;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.25);
}
.template-picker .template-picker-option:has(.template-picker-input:checked) .template-picker-check {
  display: flex;
}
.template-picker.template-picker-disabled .template-picker-option {
  cursor: not-allowed;
}
.template-picker.template-picker-disabled .template-picker-thumb {
  opacity: 0.6;
}

/**
 * SolidInvoice Dashboard Styles
 *
 * Styles for the redesigned dashboard including hero stats,
 * charts, attention required section, quick actions, and activity feed.
 */
.dashboard-hero-stats {
  display: grid;
  gap: var(--swp-space-4);
  grid-template-columns: 1fr;
}
@media (width >= 577px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (width >= 1201px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(9, 1fr);
  }
}

.stat-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  padding: var(--swp-space-6);
}
@media (width >= 1201px) {
  .stat-card {
    grid-column: span 2;
  }
}
.stat-card--danger {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
@media (width >= 1201px) {
  .stat-card--urgent {
    grid-column: span 3;
  }
}
.stat-card--urgent .stat-value {
  font-size: var(--swp-text-3xl);
}

.stat-card-content {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-4);
}

.stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.stat-icon--primary {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.stat-icon--success {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.stat-icon--danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.stat-icon--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning);
}
.stat-icon--info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.stat-info {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  min-width: 0;
}

.stat-label {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
}

.stat-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  line-height: 1.2;
  letter-spacing: var(--swp-tracking-tight);
  font-variant-numeric: tabular-nums;
}
.stat-value--danger {
  color: var(--swp-danger-hover);
}
.stat-value .money--total .money-amount {
  font-size: 1em;
}

.stat-subvalue {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-variant-numeric: tabular-nums;
}

.dashboard-chart-container {
  min-height: 280px;
  position: relative;
}

.dashboard-revenue-chart {
  height: 280px !important;
}

.dashboard-donut-container {
  min-height: 280px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dashboard-donut-chart {
  height: 280px !important;
}

.dashboard-donut-center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, calc(-50% - var(--swp-space-1-5)));
  text-align: center;
  pointer-events: none;
  z-index: 1;
}

.dashboard-donut-total {
  display: block;
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  line-height: 1;
  letter-spacing: var(--swp-tracking-tight);
  font-variant-numeric: tabular-nums;
}

.dashboard-donut-label {
  display: block;
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  font-weight: var(--swp-font-semibold);
  margin-top: var(--swp-space-1);
}

.dashboard-chart-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.dashboard-chart-empty-icon {
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}

.dashboard-chart-empty-text {
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}

.dashboard-chart-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.dashboard-chart-error-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: var(--swp-danger-light);
  color: var(--swp-danger);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--swp-space-3);
}
.dashboard-chart-error-icon svg {
  width: 32px;
  height: 32px;
}

.dashboard-chart-error-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
}

.dashboard-chart-error-text {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0 0 var(--swp-space-4);
  max-width: 42ch;
}

.attention-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.attention-empty-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: var(--swp-success-lighter);
  color: var(--swp-success);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--swp-space-3);
}

.attention-empty-text {
  color: var(--swp-text-secondary);
  margin: 0;
}

.attention-sections {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.attention-section:not(:last-child) {
  padding-bottom: var(--swp-space-4);
  border-bottom: 1px solid var(--swp-border-light);
}

.attention-section-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  margin-bottom: var(--swp-space-3);
}
.attention-section-header--danger {
  color: var(--swp-danger);
}
.attention-section-header--warning {
  color: var(--swp-warning-hover);
}
.attention-section-header--info {
  color: var(--swp-info);
}
.attention-section-header--primary {
  color: var(--swp-primary);
}

.attention-badge {
  font-size: var(--swp-text-xs);
  padding: 2px 6px;
  border-radius: var(--swp-radius-full);
  font-weight: var(--swp-font-semibold);
}
.attention-badge--danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.attention-badge--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning-hover);
}
.attention-badge--info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}
.attention-badge--primary {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}

.attention-items {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.attention-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  color: inherit;
  transition: background-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.attention-item:hover {
  background: var(--swp-surface-hover);
}
.attention-item:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.attention-item--danger {
  background: var(--swp-danger-lighter);
}
.attention-item--danger:hover {
  background: var(--swp-danger-light);
}
.attention-item--danger:focus-visible {
  box-shadow: var(--swp-ring-danger);
}

.attention-item-main {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  min-width: 0;
  flex: 1;
}

.attention-item-id {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
}

.attention-item-client {
  color: var(--swp-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.attention-item-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-shrink: 0;
}

.attention-item-amount {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.attention-item-date {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-variant-numeric: tabular-nums;
}

.quick-actions-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}

.quick-action-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-4);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: transform var(--swp-transition-fast), background-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.quick-action-btn:hover {
  transform: translateY(-2px);
  box-shadow: var(--swp-shadow-md);
}
.quick-action-btn:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.quick-action-btn--primary {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}
.quick-action-btn--primary:hover {
  background: var(--swp-primary-light);
}
.quick-action-btn--secondary {
  background: var(--swp-secondary-lighter);
  color: var(--swp-secondary-dark);
}
.quick-action-btn--secondary:hover {
  background: var(--swp-secondary-light);
}
.quick-action-btn--info {
  background: var(--swp-info-lighter);
  color: var(--swp-info-hover);
}
.quick-action-btn--info:hover {
  background: var(--swp-info-light);
}
.quick-action-btn--success {
  background: var(--swp-success-lighter);
  color: var(--swp-success-hover);
}
.quick-action-btn--success:hover {
  background: var(--swp-success-light);
}
@media (prefers-reduced-motion: reduce) {
  .quick-action-btn, .quick-action-btn:hover {
    transition: none;
    transform: none;
  }
}

.quick-action-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.quick-action-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-align: center;
}

.activity-timeline {
  display: flex;
  flex-direction: column;
}

.activity-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.activity-item:last-child {
  border-bottom: none;
}

.activity-icon {
  width: 36px;
  height: 36px;
  border-radius: var(--swp-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
}
.activity-icon--payment {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.activity-icon--invoice, .activity-icon--invoice_sent {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.activity-icon--quote_accepted {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.activity-icon--quote_declined {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.activity-icon--recurring_generated {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.activity-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.activity-description {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  line-height: 1.4;
}

.activity-text {
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-base);
}

.activity-doc-link {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
  text-decoration: none;
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
  border-radius: var(--swp-radius-sm);
}
.activity-doc-link:hover {
  text-decoration: underline;
  color: var(--swp-primary-dark);
}
.activity-doc-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.activity-details {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  font-size: var(--swp-text-sm);
}

.activity-client-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--swp-text-secondary);
  text-decoration: none;
  border-radius: var(--swp-radius-sm);
  transition: color var(--swp-transition-fast);
}
.activity-client-link:hover {
  color: var(--swp-primary);
}
.activity-client-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
  color: var(--swp-primary);
}
.activity-client-link svg {
  opacity: 0.6;
}

.activity-separator {
  color: var(--swp-text-muted);
}

.activity-amount {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.activity-time {
  color: var(--swp-text-muted);
}

/**
 * Client Page Styles
 *
 * Custom styles for the Client view page.
 * Follows the design system tokens and modern SaaS aesthetic.
 */
.client-hero {
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-space-6);
}

.client-hero-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  line-height: 1.2;
}

.client-hero-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--swp-space-4);
  color: var(--swp-text-muted);
  font-size: 0.875rem;
}
.client-hero-meta a {
  color: var(--swp-text-muted);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.client-hero-meta a:hover {
  color: var(--swp-primary);
}

.client-hero-meta-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1-5);
}

.client-stat-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-2);
}

.client-stat-value {
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.client-stat-value--success {
  color: var(--swp-success);
}

.client-stat-value--warning,
.client-stat-value--danger {
  color: var(--swp-warning);
}

.client-stat-badges {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2);
  margin-top: var(--swp-space-2);
}

.client-credit-card {
  margin-bottom: var(--swp-space-6);
}
.client-credit-card .card-body {
  padding: var(--swp-space-5);
}

.client-credit-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-lg);
  background: var(--swp-info-lighter);
  color: var(--swp-info);
}

.client-credit-amount {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin-bottom: 0;
}

.client-credit-label {
  font-size: 0.75rem;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.client-tabs-card .card-header {
  padding-bottom: 0;
  border-bottom: none;
}
.client-tabs-card {
  /* .nav-tabs {
      border-bottom: 1px solid var(--swp-border);
      margin: 0 calc(-1 * var(--swp-space-6));
      padding: 0 var(--swp-space-6);
  } */
}
.client-tabs-card .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  transition: color var(--swp-transition-fast), border-color var(--swp-transition-fast);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.client-tabs-card .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(46, 150, 58, 0.3);
}
.client-tabs-card .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
}
.client-tabs-card .nav-link .badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.2em 0.5em;
}
.client-tabs-card .tab-content {
  padding-top: var(--swp-space-4);
}

.client-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-4);
}

.client-section-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: 1rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
}
.client-section-title .badge {
  font-size: 0.7rem;
  font-weight: 600;
}

.client-contact-card,
.client-address-card {
  height: 100%;
  transition: box-shadow var(--swp-transition-base);
}
.client-contact-card:hover,
.client-address-card:hover {
  box-shadow: var(--swp-shadow-md);
}
.client-contact-card .card-header,
.client-address-card .card-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  border-bottom: 1px solid var(--swp-border-light);
}
.client-contact-card .card-body,
.client-address-card .card-body {
  padding: var(--swp-space-4);
}

.client-contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  font-size: 0.875rem;
}

.client-contact-name {
  font-weight: 500;
  color: var(--swp-text-primary);
}

.client-contact-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}
.client-contact-detail:last-child {
  margin-bottom: 0;
}

.client-contact-detail-icon {
  color: var(--swp-text-muted);
  flex-shrink: 0;
  margin-top: 2px;
}

.client-contact-detail-label {
  font-size: 0.75rem;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.client-contact-detail-value {
  color: var(--swp-text-primary);
}
.client-contact-detail-value a {
  color: var(--swp-primary);
  text-decoration: none;
}
.client-contact-detail-value a:hover {
  text-decoration: underline;
}

.btn-icon-sm {
  width: 28px;
  height: 28px;
  padding: var(--swp-space-1);
}

.btn-ghost-secondary {
  color: var(--swp-text-secondary);
  background: transparent;
  border: none;
}
.btn-ghost-secondary:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}
.btn-ghost-secondary:focus {
  box-shadow: var(--swp-ring-primary);
}

.client-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-2);
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border-light);
}

.client-address-text {
  white-space: pre-line;
  color: var(--swp-text-primary);
  line-height: 1.5;
  margin-bottom: var(--swp-space-3);
}

.client-address-map-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: 0.875rem;
}

.client-contact-extra {
  margin-top: var(--swp-space-3);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-light);
}

.client-contact-extra-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-bottom: var(--swp-space-2);
}

.client-contact-extra-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: 0.875rem;
  margin-bottom: var(--swp-space-1);
}
.client-contact-extra-item:last-child {
  margin-bottom: 0;
}

.client-contact-extra-label {
  color: var(--swp-text-muted);
  min-width: 80px;
}

.client-contact-extra-value {
  color: var(--swp-text-primary);
}

.custom-fields-card .card-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  border-bottom: 1px solid var(--swp-border-light);
}
.custom-fields-card .card-body {
  padding: var(--swp-space-2) var(--swp-space-4);
}

.custom-fields-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.custom-fields-item {
  display: grid;
  grid-template-columns: minmax(140px, 30%) 1fr;
  gap: var(--swp-space-3);
  align-items: baseline;
  padding: var(--swp-space-2) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.custom-fields-item:last-child {
  border-bottom: none;
}

.custom-fields-label {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--swp-text-muted);
  margin: 0;
  text-transform: none;
  letter-spacing: 0;
}

.custom-fields-value {
  font-size: 0.875rem;
  color: var(--swp-text-primary);
  word-break: break-all;
}
.custom-fields-value a {
  color: var(--swp-primary);
  text-decoration: none;
}
.custom-fields-value a:hover {
  text-decoration: underline;
}
.custom-fields-value .badge {
  margin-right: var(--swp-space-1);
  font-weight: 500;
}

@media (width <= 575.98px) {
  .custom-fields-item {
    grid-template-columns: 1fr;
    gap: var(--swp-space-1);
  }
}
@media (width <= 991.98px) {
  .client-hero {
    padding: var(--swp-space-4);
  }
  .client-hero-title {
    font-size: 1.5rem;
  }
  .client-stat-value {
    font-size: 1.5rem;
  }
}
@media (width <= 767.98px) {
  .client-hero {
    text-align: center;
  }
  .client-hero-meta {
    justify-content: center;
  }
  .client-tabs-card .nav-tabs {
    margin: 0 calc(-1 * var(--swp-space-4));
    padding: 0 var(--swp-space-4);
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
  }
  .client-tabs-card .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .client-tabs-card .nav-item {
    flex-shrink: 0;
  }
  .client-section-header {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-2);
  }
}
@media print {
  .client-hero .dropdown,
  .client-hero .btn,
  .client-section-header .btn,
  .btn-ghost-secondary,
  .btn-ghost-danger,
  .client-form-actions {
    display: none !important;
  }
  .client-hero {
    box-shadow: none;
    border: 1px solid #DDDDDD;
  }
}
/**
 * Invoice View Page
 *
 * All shared document view styles are in components/_document-view.scss.
 * Invoice-specific recurring invoice styles are also in that shared component.
 */
.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--swp-space-2);
}

.recurring-schedule-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
  flex-shrink: 0;
}

.schedule-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
}
.occurrence-item svg {
  opacity: 0.6;
  flex-shrink: 0;
}

.occurrence-date {
  color: var(--swp-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.generated-invoice-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.generated-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-primary);
  text-decoration: none;
}
.generated-invoice-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.generated-invoice-id {
  font-weight: var(--swp-font-semibold, 600);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.generated-invoice-amount {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

/**
 * External Invoice View
 *
 * Invoice-specific styles for the public-facing invoice page.
 * All shared external document styles are in components/_external-doc-view.scss.
 */
.btn-invoice-action {
  padding: 0.75rem 1.25rem;
  font-weight: 500;
  border-radius: 0.375rem;
  transition: all 0.2s ease;
}
.btn-invoice-action:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.btn-invoice-action:active {
  transform: translateY(0);
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border-width: 0;
}

@media print {
  .btn-invoice-action:hover {
    box-shadow: none !important;
    transform: none !important;
  }
}
/**
 * External Quote View
 *
 * All shared external document styles (including quote styles) are in
 * components/_external-doc-view.scss.
 *
 * There are currently no quote-specific styles beyond what is shared.
 */
/**
 * Quote View Page - Quote-Specific Styles
 *
 * Shared document layout is in components/_document-view.scss.
 * This file is intentionally minimal - all shared doc view styles are in the component.
 */
/**
 * Payment Marketplace Styles
 * Only payment-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.payment-marketplace {
  padding-bottom: var(--swp-space-8);
}

.payment-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--swp-border);
}
.payment-marketplace > .nav-tabs .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  transition: var(--swp-transition-colors);
}
.payment-marketplace > .nav-tabs .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.payment-marketplace > .nav-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}
.payment-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.gateway-grid {
  display: grid;
  gap: var(--swp-space-3);
}

.gateway-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
  position: relative;
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
}
.gateway-card:hover {
  border-color: var(--swp-primary);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px var(--swp-primary);
  transform: translateY(-2px);
}
.gateway-card:hover .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, var(--swp-primary) 100%);
  color: var(--swp-primary);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05) 0%, rgba(var(--swp-success-rgb), 0.02) 100%);
  border-color: rgba(var(--swp-success-rgb), 0.3);
}
.gateway-card.is-configured .gateway-icon {
  background: linear-gradient(135deg, var(--swp-success-light) 0%, var(--swp-success) 100%);
  color: #ffffff;
}
.gateway-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.08) 0%, rgba(var(--swp-success-rgb), 0.04) 100%);
  border-color: var(--swp-success);
}
.gateway-card.is-custom-gateway {
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.04) 0%, rgba(var(--swp-primary-rgb), 0.01) 100%);
  border: 2px dashed rgba(var(--swp-primary-rgb), 0.3);
  position: relative;
  margin-bottom: var(--swp-space-6);
}
.gateway-card.is-custom-gateway::after {
  content: "";
  position: absolute;
  bottom: calc(-1 * var(--swp-space-6) / 2);
  left: var(--swp-space-4);
  right: var(--swp-space-4);
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, var(--swp-border) 15%, var(--swp-border) 85%, transparent 100%);
}
.gateway-card.is-custom-gateway::before {
  content: "";
  position: absolute;
  inset: -2px;
  background: linear-gradient(135deg, var(--swp-primary), var(--swp-primary-dark));
  border-radius: var(--swp-radius-lg);
  opacity: 0;
  z-index: -1;
  transition: opacity 0.2s ease;
}
.gateway-card.is-custom-gateway .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  color: var(--swp-primary);
  border: 2px solid rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card.is-custom-gateway:hover {
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.08) 0%, rgba(var(--swp-primary-rgb), 0.02) 100%);
  border-color: var(--swp-primary);
  border-style: solid;
}
.gateway-card.is-custom-gateway:hover::before {
  opacity: 0.08;
}
.gateway-card.is-custom-gateway:hover .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary) 0%, var(--swp-primary-dark) 100%);
  color: #ffffff;
  border-color: var(--swp-primary);
}
.gateway-card .gateway-card-body {
  padding: var(--swp-space-4);
}
.gateway-card .gateway-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.gateway-card h6 {
  font-size: var(--swp-text-base);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.gateway-card .text-muted {
  font-size: var(--swp-text-sm);
  line-height: 1.5;
  color: var(--swp-text-muted);
}
.gateway-card .btn {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
}
.gateway-card .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card .badge-sm {
  font-size: 0.625rem;
  padding: 0.2rem 0.5rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
}

.active-methods-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.active-methods-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.active-methods-list {
  display: grid;
  gap: var(--swp-space-3);
}

.active-method-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.active-method-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.active-method-card:hover .payment-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.active-method-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.active-method-card .card-body {
  padding: var(--swp-space-5);
}
.active-method-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.active-method-card .payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.active-method-card .payment-method-icon svg {
  width: 28px;
  height: 28px;
}
.active-method-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.active-method-card .badge.bg-success {
  background: linear-gradient(135deg, var(--swp-success) 0%, var(--swp-success-hover) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(var(--swp-success-rgb), 0.2);
}
.active-method-card .badge.bg-secondary {
  background: linear-gradient(135deg, var(--swp-gray-400) 0%, var(--swp-gray-500) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.active-method-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.active-method-card .btn:hover {
  transform: translateY(-1px);
}
.active-method-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.active-method-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.payment-marketplace .card-header .d-flex {
  width: 100%;
}
.payment-marketplace .card-header .d-flex > div:first-child {
  flex: 1;
}
.payment-marketplace .card-header .d-flex .btn-icon {
  flex-shrink: 0;
}
.payment-marketplace form .form-switch-field + .form-switch-field {
  margin-top: var(--swp-space-4);
}
.payment-marketplace form .mb-3 + .mb-3 {
  margin-top: var(--swp-space-3);
}

.payment-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.payment-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.payment-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 920px;
  max-height: calc(100vh - var(--swp-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.payment-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

.payment-modal-title {
  font-size: var(--swp-text-xl);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-modal-close {
  flex-shrink: 0;
  margin-left: var(--swp-space-4);
}

.payment-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-space-6);
}
.payment-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.payment-modal-body > div > .card .card-header {
  display: none;
}
.payment-modal-body > div > .card .card-body {
  padding: 0;
}
.payment-modal-body > div > .card .card-footer {
  padding: var(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .payment-modal {
    padding: 0;
    align-items: flex-end;
  }
  .payment-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: marketplace-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes marketplace-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.payment-modal) {
  overflow: hidden;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--swp-space-4);
  }
  .gateway-grid {
    grid-template-columns: 1fr;
  }
  .active-method-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .active-method-card .d-flex .btn-group,
  .active-method-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .active-method-card .d-flex .btn-group .btn,
  .active-method-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .payment-marketplace > .nav-tabs {
    margin-left: calc(var(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .payment-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .payment-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
}
@media print {
  .payment-marketplace .nav-tabs,
  .payment-marketplace .marketplace-panel,
  .payment-marketplace .btn {
    display: none !important;
  }
  .payment-marketplace .active-method-card {
    break-inside: avoid;
  }
}
.gateway-group {
  margin-bottom: var(--swp-space-4);
}
.gateway-group .gateway-group-header h6 {
  letter-spacing: 0.04em;
}
.gateway-group .is-custom-gateway {
  margin-bottom: var(--swp-space-3);
}
.gateway-group .is-custom-gateway::after {
  display: none;
}

.gateway-group--more {
  border-top: 1px solid var(--swp-border-light);
  padding-top: var(--swp-space-3);
}
.gateway-group--more > summary {
  cursor: pointer;
  list-style: none;
}
.gateway-group--more > summary::-webkit-details-marker {
  display: none;
}
.gateway-group--more > summary:hover h6 {
  color: var(--swp-primary);
}

.payment-gateway-about .alert-title {
  margin-bottom: var(--swp-space-1);
}
.payment-gateway-about .payment-gateway-compare summary {
  cursor: pointer;
  list-style: none;
}
.payment-gateway-about .payment-gateway-compare summary::-webkit-details-marker {
  display: none;
}

/**
 * Notification Marketplace Styles
 * Notification-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.notification-marketplace {
  padding-bottom: var(--swp-space-8);
}

.notification-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--swp-border);
}
.notification-marketplace > .nav-tabs .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  transition: var(--swp-transition-colors);
}
.notification-marketplace > .nav-tabs .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.notification-marketplace > .nav-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}
.notification-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.marketplace-tabs {
  border-bottom: 2px solid var(--swp-border);
  margin-bottom: 0;
}
.marketplace-tabs .nav-item {
  flex: 1;
}
.marketplace-tabs .nav-link {
  border: none;
  border-bottom: 3px solid transparent;
  color: var(--swp-text-secondary);
  font-weight: 600;
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
}
.marketplace-tabs .nav-link .nav-link-icon {
  display: flex;
  align-items: center;
}
.marketplace-tabs .nav-link:hover:not(.active) {
  color: var(--swp-primary-hover);
  background: rgba(var(--swp-primary-rgb), 0.05);
}
.marketplace-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}

.integration-section-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: 600;
  color: var(--swp-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--swp-space-3);
  padding-bottom: var(--swp-space-2);
  border-bottom: 1px solid var(--swp-border-light);
}

.integration-section {
  margin-bottom: var(--swp-space-6);
}
.integration-section:last-child {
  margin-bottom: 0;
}

.integration-cards-grid {
  display: grid;
  gap: var(--swp-space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 992px) {
  .integration-cards-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

.integration-card {
  background: var(--swp-surface);
  border: 1.5px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  height: 100%;
  display: flex;
  flex-direction: column;
}
.integration-card:hover {
  border-color: var(--swp-primary);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  transform: translateY(-4px);
}
.integration-card:hover .integration-card-icon {
  background: linear-gradient(135deg, var(--swp-primary-light), rgba(var(--swp-primary-rgb), 0.2));
  color: var(--swp-primary);
  transform: scale(1.05);
}
.integration-card:hover .btn {
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.25);
}
.integration-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.03), rgba(var(--swp-success-rgb), 0.01));
  border-color: rgba(var(--swp-success-rgb), 0.25);
}
.integration-card.is-configured .integration-card-icon {
  background: linear-gradient(135deg, var(--swp-success-light), var(--swp-success));
  color: #ffffff;
}
.integration-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05), rgba(var(--swp-success-rgb), 0.02));
  border-color: var(--swp-success);
}
.integration-card .integration-card-body {
  padding: var(--swp-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  height: 100%;
}
.integration-card .integration-card-icon {
  width: 64px;
  height: 64px;
  background: linear-gradient(135deg, var(--swp-gray-100), var(--swp-gray-200));
  border-radius: var(--swp-radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  transition: all 0.25s ease;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
}
.integration-card .integration-card-icon svg {
  width: 32px;
  height: 32px;
}
.integration-card .integration-card-content {
  flex: 1;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.integration-card .integration-card-title {
  font-size: var(--swp-text-base);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
}
.integration-card .integration-card-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.integration-card .integration-card-action {
  margin-top: auto;
}
.integration-card .integration-card-action .btn {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
  width: 100%;
}

.configured-integrations-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.configured-integrations-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.configured-integrations-list {
  display: grid;
  gap: var(--swp-space-3);
}

.configured-integration-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.configured-integration-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.configured-integration-card:hover .integration-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.configured-integration-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.configured-integration-card .card-body {
  padding: var(--swp-space-5);
}
.configured-integration-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.configured-integration-card .integration-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.configured-integration-card .integration-method-icon svg {
  width: 28px;
  height: 28px;
}
.configured-integration-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.configured-integration-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.configured-integration-card .btn:hover {
  transform: translateY(-1px);
}
.configured-integration-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.configured-integration-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.notification-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.notification-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.notification-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 800px;
  max-height: calc(100vh - var(--swp-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.notification-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

.notification-modal-title {
  font-size: var(--swp-text-xl);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0;
}

.notification-modal-close {
  flex-shrink: 0;
  margin-left: var(--swp-space-4);
}

.notification-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-space-6);
}
.notification-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.notification-modal-body > div > .card .card-header {
  display: none;
}
.notification-modal-body > div > .card .card-body {
  padding: 0;
}
.notification-modal-body > div > .card .card-footer {
  padding: var(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--swp-space-4);
  }
  .configured-integration-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .configured-integration-card .d-flex .btn-group,
  .configured-integration-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .configured-integration-card .d-flex .btn-group .btn,
  .configured-integration-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .notification-marketplace > .nav-tabs {
    margin-left: calc(var(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .notification-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .notification-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
  .notification-modal {
    padding: 0;
    align-items: flex-end;
  }
  .notification-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: notification-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes notification-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.notification-modal) {
  overflow: hidden;
}

@media print {
  .notification-marketplace .nav-tabs,
  .notification-marketplace .marketplace-panel,
  .notification-marketplace .btn {
    display: none !important;
  }
  .notification-marketplace .configured-integration-card {
    break-inside: avoid;
  }
}
/* .nav-link.active {
    background-color: #eef2ff;
    color: #4f46e5;
    border-radius: 8px;
    font-weight: 600;
} */

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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MkJBQTJCO0FBQzdCO0FBQ0E7RUFDRSxZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLHVCQUF1QjtBQUN6QjtBQUNBO0VBQ0UsYUFBYTtBQUNmO0FBQ0E7RUFDRSxVQUFVO0FBQ1o7QUFDQTtFQUNFLGlDQUFpQztFQUNqQyx1Q0FBdUM7RUFDdkMsOEJBQThCO0VBQzlCLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFO0lBQ0UsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixpQ0FBaUM7RUFDbkM7RUFDQTtJQUNFLHNCQUFzQjtJQUN0QixrQ0FBa0M7SUFDbEMsdUJBQXVCO0VBQ3pCO0VBQ0E7O0lBRUUsV0FBVztFQUNiO0VBQ0E7O0lBRUUsT0FBTztFQUNUO0VBQ0E7SUFDRSwwQ0FBMEM7SUFDMUMsMkNBQTJDO0lBQzNDLGdDQUFnQztJQUNoQyxpQ0FBaUM7SUFDakMsZ0JBQWdCO0lBQ2hCLGlDQUFpQztJQUNqQyxpQkFBaUI7SUFDakIscUJBQXFCO0VBQ3ZCO0VBQ0E7SUFDRSxhQUFhO0VBQ2Y7RUFDQTtJQUNFLGNBQWM7RUFDaEI7RUFDQTtJQUNFLFVBQVU7SUFDVixxQkFBcUI7RUFDdkI7RUFDQTtJQUNFLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsNEJBQTRCO0lBQzVCLDZCQUE2QjtJQUM3QiwwRUFBMEU7RUFDNUU7RUFDQTtJQUNFO01BQ0UsMkJBQTJCO0lBQzdCO0lBQ0E7TUFDRSx3QkFBd0I7SUFDMUI7RUFDRjtBQUNGO0FBQ0E7RUFDRSxnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRTs7O0lBR0Usd0JBQXdCO0VBQzFCO0VBQ0E7SUFDRSxtQkFBbUI7RUFDckI7QUFDRjtBQUNBOzs7OztHQXQvVkEsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2FwcC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2Rlc2lnbi1zeXN0ZW0vX2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZGVzaWduLXN5c3RlbS9fdG9rZW5zLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZGVzaWduLXN5c3RlbS9fdHlwb2dyYXBoeS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZm9ybS1wYWdlLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTb2xpZEludm9pY2UgTWFpbiBBcHBsaWNhdGlvbiBTdHlsZXNoZWV0XG4gKlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgYWxsIGFwcGxpY2F0aW9uIHN0eWxlcy5cbiAqIEl0IGltcG9ydHMgQm9vdHN0cmFwLCB0aGUgZGVzaWduIHN5c3RlbSwgY29tcG9uZW50cywgYW5kIGxheW91dHMuXG4gKi9cblxuQHVzZSAnc2Fzczpjb2xvcic7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDEuIEJPT1RTVFJBUCBDT1JFIElNUE9SVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IEJvb3RzdHJhcCBmdW5jdGlvbnMgZmlyc3QgKG5lZWRlZCBmb3IgY29sb3IgbWFuaXB1bGF0aW9uLCBldGMuKVxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyAyLiBTT0xJRElOVk9JQ0UgQlJBTkQgVkFSSUFCTEVTIChPdmVycmlkZSBCb290c3RyYXAgZGVmYXVsdHMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFByaW1hcnkgY29sb3JzXG4kZ3JlZW4tYmFzZTogIzJlOTYzYTtcbiRncmVlbi1kYXJrOiAjMWY2YzI5O1xuJGdyZWVuLWxpZ2h0OiAjZThmNWU5O1xuJG9yYW5nZS1iYXNlOiAjZjBhMDE1O1xuJG9yYW5nZS1kYXJrOiAjYzg4MjBlO1xuJG9yYW5nZS1saWdodDogI2ZmZjhlMTtcblxuLy8gT3ZlcnJpZGUgQm9vdHN0cmFwIHZhcmlhYmxlc1xuJHByaW1hcnk6ICRncmVlbi1iYXNlO1xuJHNlY29uZGFyeTogJG9yYW5nZS1iYXNlO1xuXG4vLyBCb2R5IGFuZCBMaW5rIENvbG9yc1xuJGJvZHktY29sb3I6ICMzMzMzMzM7XG4kYm9keS1iZzogI2Y0ZjZmODtcbiRsaW5rLWNvbG9yOiAkcHJpbWFyeTtcbiRsaW5rLWhvdmVyLWNvbG9yOiAkZ3JlZW4tZGFyaztcblxuLy8gQnV0dG9uIHN0YXRlc1xuJGJ0bi1wcmltYXJ5LWJnOiAkcHJpbWFyeTtcbiRidG4tcHJpbWFyeS1ib3JkZXItY29sb3I6ICRwcmltYXJ5O1xuJGJ0bi1wcmltYXJ5LWhvdmVyLWJnOiAkZ3JlZW4tZGFyaztcbiRidG4tcHJpbWFyeS1ob3Zlci1ib3JkZXItY29sb3I6ICRncmVlbi1kYXJrO1xuJGJ0bi1wcmltYXJ5LWFjdGl2ZS1iZzogJGdyZWVuLWRhcms7XG4kYnRuLXByaW1hcnktYWN0aXZlLWJvcmRlci1jb2xvcjogJGdyZWVuLWRhcms7XG4kYnRuLXNlY29uZGFyeS1iZzogJHNlY29uZGFyeTtcbiRidG4tc2Vjb25kYXJ5LWJvcmRlci1jb2xvcjogJHNlY29uZGFyeTtcbiRidG4tc2Vjb25kYXJ5LWhvdmVyLWJnOiAkb3JhbmdlLWRhcms7XG4kYnRuLXNlY29uZGFyeS1ob3Zlci1ib3JkZXItY29sb3I6ICRvcmFuZ2UtZGFyaztcbiRidG4tc2Vjb25kYXJ5LWFjdGl2ZS1iZzogJG9yYW5nZS1kYXJrO1xuJGJ0bi1zZWNvbmRhcnktYWN0aXZlLWJvcmRlci1jb2xvcjogJG9yYW5nZS1kYXJrO1xuXG4vLyBBbGVydCBDb2xvcnNcbiRhbGVydC1wcmltYXJ5LWJnOiAkZ3JlZW4tbGlnaHQ7XG4kYWxlcnQtcHJpbWFyeS1ib3JkZXItY29sb3I6IGNvbG9yLmFkanVzdCgkZ3JlZW4tbGlnaHQsICRsaWdodG5lc3M6IC01JSk7XG4kYWxlcnQtcHJpbWFyeS10ZXh0OiAkZ3JlZW4tZGFyaztcbiRhbGVydC1zZWNvbmRhcnktYmc6ICRvcmFuZ2UtbGlnaHQ7XG4kYWxlcnQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcjogY29sb3IuYWRqdXN0KCRvcmFuZ2UtbGlnaHQsICRsaWdodG5lc3M6IC01JSk7XG4kYWxlcnQtc2Vjb25kYXJ5LXRleHQ6ICRvcmFuZ2UtZGFyaztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gMy4gREVTSUdOIFNZU1RFTSBGT1VOREFUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBkZXNpZ24gdG9rZW5zIChjb2xvcnMsIHNwYWNpbmcsIHNoYWRvd3MsIHR5cG9ncmFwaHksIGV0Yy4pXG5AaW1wb3J0ICcuL2Rlc2lnbi1zeXN0ZW0vaW5kZXgnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA0LiBDT01QT05FTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBhbGwgY29tcG9uZW50IHN0eWxlc1xuQGltcG9ydCAnLi9jb21wb25lbnRzL2luZGV4JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNS4gTEFZT1VUIFBBVFRFUk5TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBhbGwgbGF5b3V0IHN0eWxlc1xuQGltcG9ydCAnLi9sYXlvdXRzL2luZGV4JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNi4gRk9STSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gR2VuZXJpYyBmb3JtIGNvbXBvbmVudHMgKHJldXNhYmxlIGFjcm9zcyB0aGUgYXBwKVxuQGltcG9ydCAnLi9mb3Jtcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDcuIFBBR0UtU1BFQ0lGSUMgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbXBhbnkgcGFnZSBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL2NvbXBhbnknO1xuXG4vLyBTZXR0aW5ncyBwYWdlIGN1c3RvbSBzdHlsZXNcbkBpbXBvcnQgJy4vc2V0dGluZ3MnO1xuXG4vLyBEYXNoYm9hcmQgY3VzdG9tIHN0eWxlc1xuQGltcG9ydCAnLi9kYXNoYm9hcmQnO1xuXG4vLyBDbGllbnQgcGFnZSBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL2NsaWVudCc7XG5cbi8vIEludm9pY2UgdmlldyBwYWdlIHN0eWxlc1xuQGltcG9ydCAnLi9pbnZvaWNlLXZpZXcnO1xuXG4vLyBFeHRlcm5hbCBpbnZvaWNlIHZpZXcgcGFnZSBzdHlsZXMgKHB1YmxpYy1mYWNpbmcpXG5AaW1wb3J0ICcuL2V4dGVybmFsLWludm9pY2Utdmlldyc7XG5cbi8vIEV4dGVybmFsIHF1b3RlIHZpZXcgcGFnZSBzdHlsZXMgKHB1YmxpYy1mYWNpbmcpXG5AaW1wb3J0ICcuL2V4dGVybmFsLXF1b3RlLXZpZXcnO1xuXG4vLyBRdW90ZSB2aWV3IHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL3F1b3RlLXZpZXcnO1xuXG4vLyBQYXltZW50IG1hcmtldHBsYWNlIHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL3BheW1lbnQtbWFya2V0cGxhY2UnO1xuXG4vLyBOb3RpZmljYXRpb24gbWFya2V0cGxhY2UgcGFnZSBzdHlsZXNcbkBpbXBvcnQgJy4vbm90aWZpY2F0aW9uLW1hcmtldHBsYWNlJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gOC4gTEVHQUNZIEJPT1RTVFJBUCBPVkVSUklERVMgKFRvIGJlIGNsZWFuZWQgdXApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRoZXNlIGFyZSB0ZW1wb3Jhcnkgb3ZlcnJpZGVzIHRoYXQgc2hvdWxkIGV2ZW50dWFsbHkgYmUgbW92ZWRcbi8vIHRvIHRoZSBhcHByb3ByaWF0ZSBjb21wb25lbnQgZmlsZXMgaW4gdGhlIGRlc2lnbiBzeXN0ZW0uXG5cbi8vIEtlZXAgbGVnYWN5IGFjdGl2ZSBuYXYgc3R5bGluZyBmb3Igbm93XG5cbi8qIC5uYXYtbGluay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWYyZmY7XG4gICAgY29sb3I6ICM0ZjQ2ZTU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59ICovXG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gTWFpbiBJbmRleFxuICpcbiAqIEltcG9ydHMgYWxsIGRlc2lnbiBzeXN0ZW0gZm91bmRhdGlvbiBmaWxlcy5cbiAqIFRoaXMgZmlsZSBzaG91bGQgYmUgaW1wb3J0ZWQgZWFybHkgaW4gYXBwLnNjc3MsXG4gKiBhZnRlciBCb290c3RyYXAgZnVuY3Rpb25zL3ZhcmlhYmxlcyBidXQgYmVmb3JlIGNvbXBvbmVudHMuXG4gKi9cblxuLy8gQ29yZSBkZXNpZ24gdG9rZW5zIChjb2xvcnMsIHNwYWNpbmcsIHNoYWRvd3MsIGV0Yy4pXG5AaW1wb3J0ICd0b2tlbnMnO1xuXG4vLyBUeXBvZ3JhcGh5IHN5c3RlbVxuQGltcG9ydCAndHlwb2dyYXBoeSc7XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gRGVzaWduIFRva2Vuc1xuICpcbiAqIENvcmUgZGVzaWduIHRva2VucyBkZWZpbmluZyBjb2xvcnMsIHNwYWNpbmcsIHNoYWRvd3MsIGJvcmRlciByYWRpdXMsXG4gKiBhbmQgdHJhbnNpdGlvbnMuIEFsbCB2YWx1ZXMgYXJlIGV4cG9zZWQgYXMgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzXG4gKiB3aXRoIHRoZSBgLS1zd3AtYCBwcmVmaXggZm9yIHJ1bnRpbWUgdGhlbWluZyBzdXBwb3J0LlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTE9SIFBBTEVUVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBCcmFuZCBDb2xvcnMgKFByaW1hcnkgJiBTZWNvbmRhcnkpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gUHJpbWFyeTogR3JlZW4gLSBVc2VkIGZvciBtYWluIENUQXMsIGxpbmtzLCBhY3RpdmUgc3RhdGVzXG4gICAgLS1zd3AtcHJpbWFyeTogIzJlOTYzYTtcbiAgICAtLXN3cC1wcmltYXJ5LXJnYjogNDYsIDE1MCwgNTg7XG4gICAgLS1zd3AtcHJpbWFyeS1ob3ZlcjogIzI2ODAzMjtcbiAgICAtLXN3cC1wcmltYXJ5LWRhcms6ICMxZjZjMjk7XG4gICAgLS1zd3AtcHJpbWFyeS1saWdodDogI2U4ZjVlOTtcbiAgICAtLXN3cC1wcmltYXJ5LWxpZ2h0ZXI6ICNmMWY5ZjI7XG5cbiAgICAvLyBTZWNvbmRhcnk6IE9yYW5nZSAtIFVzZWQgc3BhcmluZ2x5IGZvciBhY2NlbnRzXG4gICAgLS1zd3Atc2Vjb25kYXJ5OiAjZjBhMDE1O1xuICAgIC0tc3dwLXNlY29uZGFyeS1yZ2I6IDI0MCwgMTYwLCAyMTtcbiAgICAtLXN3cC1zZWNvbmRhcnktaG92ZXI6ICNkODkwMTI7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWRhcms6ICNjODgyMGU7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWxpZ2h0OiAjZmZmOGUxO1xuICAgIC0tc3dwLXNlY29uZGFyeS1saWdodGVyOiAjZmZmY2YwO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIE5ldXRyYWwgQ29sb3JzIChTbGF0ZS1iYXNlZCBncmF5IHNjYWxlIGZvciBtb2Rlcm4gZmVlbClcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1ncmF5LTUwOiAjZjhmYWZjO1xuICAgIC0tc3dwLWdyYXktMTAwOiAjZjFmNWY5O1xuICAgIC0tc3dwLWdyYXktMjAwOiAjZTJlOGYwO1xuICAgIC0tc3dwLWdyYXktMzAwOiAjY2JkNWUxO1xuICAgIC0tc3dwLWdyYXktNDAwOiAjOTRhM2I4O1xuICAgIC0tc3dwLWdyYXktNTAwOiAjNjQ3NDhiO1xuICAgIC0tc3dwLWdyYXktNjAwOiAjNDc1NTY5O1xuICAgIC0tc3dwLWdyYXktNzAwOiAjMzM0MTU1O1xuICAgIC0tc3dwLWdyYXktODAwOiAjMWUyOTNiO1xuICAgIC0tc3dwLWdyYXktOTAwOiAjMGYxNzJhO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFNlbWFudGljIENvbG9ycyAoRmVlZGJhY2sgJiBTdGF0dXMpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gU3VjY2Vzc1xuICAgIC8vIE5PVEU6IGBzdWNjZXNzYCAoMi41NDoxIG9uIHN1cmZhY2UpIGFuZCBgc3VjY2Vzcy1ob3ZlcmAgKDMuNzc6MSkgYXJlIGZpbGxcbiAgICAvLyBjb2xvdXJzLCBub3QgdGV4dCBjb2xvdXJzIC0gYm90aCBmYWlsIFdDQUcgQUEgYXMgdGV4dC4gVXNlIGBzdWNjZXNzLWRhcmtgXG4gICAgLy8gZm9yIGFueSBzdWNjZXNzLWNvbG91cmVkICp0ZXh0Ki4gU2VlIERFU0lHTi5tZCAtIFRoZSBMZWdpYmxlIFN0YXR1cyBSdWxlLlxuICAgIC0tc3dwLXN1Y2Nlc3M6ICMxMGI5ODE7XG4gICAgLS1zd3Atc3VjY2Vzcy1yZ2I6IDE2LCAxODUsIDEyOTtcbiAgICAtLXN3cC1zdWNjZXNzLWhvdmVyOiAjMDU5NjY5O1xuICAgIC0tc3dwLXN1Y2Nlc3MtZGFyazogIzA0Nzg1NzsgICAvLyBFbWVyYWxkLTcwMCAtIEFBLXNhZmUgc3VjY2VzcyB0ZXh0ICg1LjQ4OjEgb24gc3VyZmFjZSwgNS4wNjoxIG9uIGJvZHktYmcpXG4gICAgLS1zd3Atc3VjY2Vzcy1saWdodDogI2QxZmFlNTtcbiAgICAtLXN3cC1zdWNjZXNzLWxpZ2h0ZXI6ICNlY2ZkZjU7XG5cbiAgICAvLyBEYW5nZXJcbiAgICAvLyBOT1RFOiBgZGFuZ2VyYCAoMy43NjoxIG9uIHN1cmZhY2UpIGlzIGEgZmlsbCBjb2xvdXIsIG5vdCBhIHRleHQgY29sb3VyLlxuICAgIC8vIFVzZSBgZGFuZ2VyLWRhcmtgIGZvciBkYW5nZXItY29sb3VyZWQgKnRleHQqLlxuICAgIC0tc3dwLWRhbmdlcjogI2VmNDQ0NDtcbiAgICAtLXN3cC1kYW5nZXItcmdiOiAyMzksIDY4LCA2ODtcbiAgICAtLXN3cC1kYW5nZXItaG92ZXI6ICNkYzI2MjY7XG4gICAgLS1zd3AtZGFuZ2VyLWRhcms6ICNiOTFjMWM7ICAgIC8vIFJlZC03MDAgLSBBQS1zYWZlIGRhbmdlciB0ZXh0ICg2LjQ3OjEgb24gc3VyZmFjZSwgNS45NzoxIG9uIGJvZHktYmcpXG4gICAgLS1zd3AtZGFuZ2VyLWxpZ2h0OiAjZmVlMmUyO1xuICAgIC0tc3dwLWRhbmdlci1saWdodGVyOiAjZmVmMmYyO1xuXG4gICAgLy8gV2FybmluZ1xuICAgIC8vIE5PVEU6IGB3YXJuaW5nYCAoMi4xNToxIG9uIHN1cmZhY2UpIGlzIGEgZmlsbCBjb2xvdXIsIG5vdCBhIHRleHQgY29sb3VyLlxuICAgIC8vIFVzZSBgd2FybmluZy1kYXJrYCBmb3Igd2FybmluZy1jb2xvdXJlZCAqdGV4dCouXG4gICAgLS1zd3Atd2FybmluZzogI2Y1OWUwYjtcbiAgICAtLXN3cC13YXJuaW5nLXJnYjogMjQ1LCAxNTgsIDExO1xuICAgIC0tc3dwLXdhcm5pbmctaG92ZXI6ICNkOTc3MDY7XG4gICAgLS1zd3Atd2FybmluZy1kYXJrOiAjOTI0MDBlOyAgIC8vIEFtYmVyLTgwMCAtIEFBLXNhZmUgd2FybmluZyB0ZXh0ICg3LjA5OjEgb24gc3VyZmFjZSwgNi41NDoxIG9uIGJvZHktYmcsIDYuMzc6MSBvbiB3YXJuaW5nLWxpZ2h0KVxuICAgIC0tc3dwLXdhcm5pbmctbGlnaHQ6ICNmZWYzYzc7XG4gICAgLS1zd3Atd2FybmluZy1saWdodGVyOiAjZmZmYmViO1xuXG4gICAgLy8gSW5mb1xuICAgIC0tc3dwLWluZm86ICMzYjgyZjY7XG4gICAgLS1zd3AtaW5mby1yZ2I6IDU5LCAxMzAsIDI0NjtcbiAgICAtLXN3cC1pbmZvLWhvdmVyOiAjMjU2M2ViO1xuICAgIC0tc3dwLWluZm8tZGFyazogIzFkNGVkODsgICAgICAvLyBCbHVlLTcwMCAtIEFBLXNhZmUgaW5mbyB0ZXh0ICg2LjcwOjEgb24gc3VyZmFjZSwgNi4xOToxIG9uIGJvZHktYmcsIDUuNDk6MSBvbiBpbmZvLWxpZ2h0KVxuICAgIC0tc3dwLWluZm8tbGlnaHQ6ICNkYmVhZmU7XG4gICAgLS1zd3AtaW5mby1saWdodGVyOiAjZWZmNmZmO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFN1cmZhY2UgQ29sb3JzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLS1zd3AtYm9keS1iZzogI2Y0ZjZmODtcbiAgICAtLXN3cC1zdXJmYWNlOiAjZmZmZmZmO1xuICAgIC0tc3dwLXN1cmZhY2UtaG92ZXI6ICNmOGZhZmM7XG4gICAgLS1zd3Atc3VyZmFjZS1lbGV2YXRlZDogI2ZmZmZmZjtcbiAgICAtLXN3cC1zdXJmYWNlLW92ZXJsYXk6IHJnYigxNSAyMyA0MiAvIDUwJSk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVGV4dCBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLyBEZWZhdWx0IGJvZHkgdGV4dC4gQWxpYXNlcyBgdGV4dC1wcmltYXJ5YCByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyB0aGVcbiAgICAvLyBsaXRlcmFsIC0gaXQgd2FzIGEgcHVyZSAjMzMzMzMzIGdyYXksIHdoaWNoIHRoZSBUaW50ZWQgTmV1dHJhbHMgUnVsZVxuICAgIC8vIHByb2hpYml0cywgYW5kIHRoZXJlIGlzIG5vIHJlYXNvbiBmb3IgdGhlIHR3byB0byBldmVyIGRpdmVyZ2UuXG4gICAgLS1zd3AtYm9keS1jb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgLS1zd3AtdGV4dC1wcmltYXJ5OiAjMWUyOTNiO1xuICAgIC0tc3dwLXRleHQtc2Vjb25kYXJ5OiAjNDc1NTY5O1xuICAgIC0tc3dwLXRleHQtbXV0ZWQ6ICM2NDc0OGI7XG5cbiAgICAvLyBXQVJOSU5HOiAyLjU2OjEgb24gc3VyZmFjZSwgMi4zNzoxIG9uIGJvZHktYmcgLSBGQUlMUyBXQ0FHIEFBICgxLjQuMykuXG4gICAgLy8gU2FmZSBPTkxZIGZvciBkaXNhYmxlZCB0ZXh0IChleGVtcHQgZnJvbSAxLjQuMykgYW5kIGRlY29yYXRpdmUgZ2x5cGhzLlxuICAgIC8vIE5ldmVyIHVzZSBmb3IgcGxhY2Vob2xkZXJzIG9yIGFueSBvdGhlciBtZWFuaW5nZnVsIHRleHQuXG4gICAgLS1zd3AtdGV4dC1saWdodDogIzk0YTNiODtcbiAgICAtLXN3cC10ZXh0LWludmVyc2U6ICNmZmZmZmY7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQm9yZGVyIENvbG9yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC0tc3dwLWJvcmRlcjogI2UyZThmMDtcbiAgICAtLXN3cC1ib3JkZXItbGlnaHQ6ICNmMWY1Zjk7XG4gICAgLS1zd3AtYm9yZGVyLWRhcms6ICNjYmQ1ZTE7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gTGluayBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1saW5rLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1zd3AtbGluay1ob3Zlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNQQUNJTkcgU0NBTEUgKDhweCBiYXNlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3Atc3BhY2UtMDogMDtcbiAgICAtLXN3cC1zcGFjZS1weDogMXB4O1xuICAgIC0tc3dwLXNwYWNlLTAtNTogMC4xMjVyZW07ICAvLyAycHhcbiAgICAtLXN3cC1zcGFjZS0xOiAwLjI1cmVtOyAgICAgLy8gNHB4XG4gICAgLS1zd3Atc3BhY2UtMS01OiAwLjM3NXJlbTsgIC8vIDZweFxuICAgIC0tc3dwLXNwYWNlLTI6IDAuNXJlbTsgICAgICAvLyA4cHhcbiAgICAtLXN3cC1zcGFjZS0yLTU6IDAuNjI1cmVtOyAgLy8gMTBweFxuICAgIC0tc3dwLXNwYWNlLTM6IDAuNzVyZW07ICAgICAvLyAxMnB4XG4gICAgLS1zd3Atc3BhY2UtMy01OiAwLjg3NXJlbTsgIC8vIDE0cHhcbiAgICAtLXN3cC1zcGFjZS00OiAxcmVtOyAgICAgICAgLy8gMTZweFxuICAgIC0tc3dwLXNwYWNlLTU6IDEuMjVyZW07ICAgICAvLyAyMHB4XG4gICAgLS1zd3Atc3BhY2UtNjogMS41cmVtOyAgICAgIC8vIDI0cHhcbiAgICAtLXN3cC1zcGFjZS03OiAxLjc1cmVtOyAgICAgLy8gMjhweFxuICAgIC0tc3dwLXNwYWNlLTg6IDJyZW07ICAgICAgICAvLyAzMnB4XG4gICAgLS1zd3Atc3BhY2UtOTogMi4yNXJlbTsgICAgIC8vIDM2cHhcbiAgICAtLXN3cC1zcGFjZS0xMDogMi41cmVtOyAgICAgLy8gNDBweFxuICAgIC0tc3dwLXNwYWNlLTExOiAyLjc1cmVtOyAgICAvLyA0NHB4XG4gICAgLS1zd3Atc3BhY2UtMTI6IDNyZW07ICAgICAgIC8vIDQ4cHhcbiAgICAtLXN3cC1zcGFjZS0xNDogMy41cmVtOyAgICAgLy8gNTZweFxuICAgIC0tc3dwLXNwYWNlLTE2OiA0cmVtOyAgICAgICAvLyA2NHB4XG4gICAgLS1zd3Atc3BhY2UtMjA6IDVyZW07ICAgICAgIC8vIDgwcHhcbiAgICAtLXN3cC1zcGFjZS0yNDogNnJlbTsgICAgICAgLy8gOTZweFxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCT1JERVIgUkFESVVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC1yYWRpdXMtbm9uZTogMDtcbiAgICAtLXN3cC1yYWRpdXMtc206IDAuMzc1cmVtOyAgICAvLyA2cHggLSBTbWFsbCBlbGVtZW50cywgdGFnc1xuICAgIC0tc3dwLXJhZGl1cy1tZDogMC41cmVtOyAgICAgIC8vIDhweCAtIEZvcm0gY29udHJvbHMsIGJ1dHRvbnNcbiAgICAtLXN3cC1yYWRpdXMtbGc6IDAuNzVyZW07ICAgICAvLyAxMnB4IC0gQ2FyZHMsIG1vZGFsc1xuICAgIC0tc3dwLXJhZGl1cy14bDogMXJlbTsgICAgICAgIC8vIDE2cHggLSBMYXJnZSBjYXJkcywgZGlhbG9nc1xuICAgIC0tc3dwLXJhZGl1cy0yeGw6IDEuNXJlbTsgICAgIC8vIDI0cHggLSBFeHRyYSBsYXJnZSBlbGVtZW50c1xuICAgIC0tc3dwLXJhZGl1cy1mdWxsOiA5OTk5cHg7ICAgIC8vIFBpbGwgc2hhcGVcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0hBRE9XUyAoU3VidGxlLCBtb2Rlcm4gZWxldmF0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gRWxldmF0aW9uIHNoYWRvd3NcbiAgICAtLXN3cC1zaGFkb3cteHM6IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDUlKTtcbiAgICAtLXN3cC1zaGFkb3ctc206IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDEwJSksIDAgMXB4IDJweCAtMXB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgLS1zd3Atc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAxMCUpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tc3dwLXNoYWRvdy1sZzogMCAxMHB4IDE1cHggLTNweCByZ2IoMCAwIDAgLyAxMCUpLCAwIDRweCA2cHggLTRweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tc3dwLXNoYWRvdy14bDogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAxMCUpLCAwIDhweCAxMHB4IC02cHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXN3cC1zaGFkb3ctMnhsOiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAyNSUpO1xuXG4gICAgLy8gSW5uZXIgc2hhZG93XG4gICAgLS1zd3Atc2hhZG93LWlubmVyOiBpbnNldCAwIDJweCA0cHggMCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAvLyBDb2xvcmVkIHNoYWRvd3MgZm9yIGJ1dHRvbnMgYW5kIGludGVyYWN0aXZlIGVsZW1lbnRzXG4gICAgLS1zd3Atc2hhZG93LXByaW1hcnk6IDAgNHB4IDE0cHggMCByZ2IoNDYgMTUwIDU4IC8gMjUlKTtcbiAgICAtLXN3cC1zaGFkb3ctcHJpbWFyeS1sZzogMCA4cHggMjBweCAwIHJnYig0NiAxNTAgNTggLyAzMCUpO1xuICAgIC0tc3dwLXNoYWRvdy1kYW5nZXI6IDAgNHB4IDE0cHggMCByZ2IoMjM5IDY4IDY4IC8gMjUlKTtcbiAgICAtLXN3cC1zaGFkb3ctZGFuZ2VyLWxnOiAwIDhweCAyMHB4IDAgcmdiKDIzOSA2OCA2OCAvIDMwJSk7XG5cbiAgICAvLyBGb2N1cyByaW5nIHNoYWRvd1xuICAgIC0tc3dwLXJpbmctcHJpbWFyeTogMCAwIDAgM3B4IHJnYig0NiAxNTAgNTggLyAxNSUpO1xuICAgIC0tc3dwLXJpbmctZGFuZ2VyOiAwIDAgMCAzcHggcmdiKDIzOSA2OCA2OCAvIDE1JSk7XG4gICAgLS1zd3AtcmluZy1vZmZzZXQ6IDAgMCAwIDJweCB2YXIoLS1zd3Atc3VyZmFjZSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRSQU5TSVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyBEdXJhdGlvbnNcbiAgICAtLXN3cC1kdXJhdGlvbi1mYXN0OiAxNTBtcztcbiAgICAtLXN3cC1kdXJhdGlvbi1iYXNlOiAyMDBtcztcbiAgICAtLXN3cC1kdXJhdGlvbi1zbG93OiAzMDBtcztcbiAgICAtLXN3cC1kdXJhdGlvbi1zbG93ZXI6IDQwMG1zO1xuXG4gICAgLy8gVGltaW5nIGZ1bmN0aW9uc1xuICAgIC0tc3dwLWVhc2UtbGluZWFyOiBsaW5lYXI7XG4gICAgLS1zd3AtZWFzZS1pbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgLS1zd3AtZWFzZS1vdXQ6IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIC0tc3dwLWVhc2UtaW4tb3V0OiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuXG4gICAgLy8gQ29tbW9uIHRyYW5zaXRpb25zXG4gICAgLS1zd3AtdHJhbnNpdGlvbi1mYXN0OiB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgdmFyKC0tc3dwLWVhc2UtaW4tb3V0KTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLWJhc2U6IHZhcigtLXN3cC1kdXJhdGlvbi1iYXNlKSB2YXIoLS1zd3AtZWFzZS1pbi1vdXQpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tc2xvdzogdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLWluLW91dCk7XG5cbiAgICAvLyBQcm9wZXJ0eS1zcGVjaWZpYyB0cmFuc2l0aW9uc1xuICAgIC0tc3dwLXRyYW5zaXRpb24tY29sb3JzOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tc2hhZG93OiBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tdHJhbnNmb3JtOiB0cmFuc2Zvcm0gdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi1hbGw6IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gWi1JTkRFWCBTQ0FMRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3Atei1kcm9wZG93bjogMTAwMDtcbiAgICAtLXN3cC16LXN0aWNreTogMTAyMDtcbiAgICAtLXN3cC16LWZpeGVkOiAxMDMwO1xuICAgIC0tc3dwLXotbW9kYWwtYmFja2Ryb3A6IDEwNDA7XG4gICAgLS1zd3Atei1tb2RhbDogMTA1MDtcbiAgICAtLXN3cC16LXBvcG92ZXI6IDEwNjA7XG4gICAgLS1zd3Atei10b29sdGlwOiAxMDcwO1xuICAgIC0tc3dwLXotdG9hc3Q6IDEwODA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTVBPTkVOVC1TUEVDSUZJQyBUT0tFTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIENhcmRcbiAgICAtLXN3cC1jYXJkLWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtY2FyZC1ib3JkZXI6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIC0tc3dwLWNhcmQtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAtLXN3cC1jYXJkLXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgLS1zd3AtY2FyZC1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgLS1zd3AtY2FyZC1oZWFkZXItcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAtLXN3cC1jYXJkLWZvb3Rlci1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gRm9ybSBjb250cm9sc1xuICAgIC0tc3dwLWlucHV0LWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtaW5wdXQtYm9yZGVyOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAtLXN3cC1pbnB1dC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIC0tc3dwLWlucHV0LXBhZGRpbmcteTogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgLS1zd3AtaW5wdXQtcGFkZGluZy14OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgLS1zd3AtaW5wdXQtZm9jdXMtYm9yZGVyOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1zd3AtaW5wdXQtZm9jdXMtcmluZzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG5cbiAgICAvLyBCdXR0b25zXG4gICAgLS1zd3AtYnRuLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgLS1zd3AtYnRuLXBhZGRpbmcteTogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgLS1zd3AtYnRuLXBhZGRpbmcteDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIC0tc3dwLWJ0bi1mb250LXdlaWdodDogNTAwO1xuXG4gICAgLy8gTW9kYWxcbiAgICAtLXN3cC1tb2RhbC1iZzogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tc3dwLW1vZGFsLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgLS1zd3AtbW9kYWwtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbiAgICAtLXN3cC1tb2RhbC1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBUYWJsZVxuICAgIC0tc3dwLXRhYmxlLWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtdGFibGUtYm9yZGVyOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAtLXN3cC10YWJsZS1oZWFkZXItYmc6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAtLXN3cC10YWJsZS1yb3ctaG92ZXItYmc6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAtLXN3cC10YWJsZS1jZWxsLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBBbGVydFxuICAgIC0tc3dwLWFsZXJ0LXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgLS1zd3AtYWxlcnQtcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgLy8gTW9uZXkgZGlzcGxheSAoc2lnbmF0dXJlIGNvbXBvbmVudCAtIHNlZSBjb21wb25lbnRzL19tb25leS5zY3NzKVxuICAgIC8vIEV2ZXJ5IGNvbG91ciBoZXJlIGlzIEFBLWNvbXBsaWFudCBhZ2FpbnN0IEJPVEggYHN1cmZhY2VgIGFuZCBgYm9keS1iZ2AsXG4gICAgLy8gYmVjYXVzZSBtb25leSBtdXN0IG5ldmVyIGJlIG1pc3JlYWRhYmxlIG9uIGFueSBzdXJmYWNlIGl0IGxhbmRzIG9uLlxuICAgIC0tc3dwLW1vbmV5LWN1cnJlbmN5OiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpOyAgLy8gNy41ODoxIC8gNi45OToxXG4gICAgLS1zd3AtbW9uZXktbmV1dHJhbDogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7ICAgICAvLyAxNC42MzoxIC8gMTMuNTA6MVxuICAgIC0tc3dwLW1vbmV5LXBhaWQ6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspOyAgICAgICAgLy8gNS40ODoxIC8gNS4wNjoxXG4gICAgLS1zd3AtbW9uZXktb3ZlcmR1ZTogdmFyKC0tc3dwLWRhbmdlci1kYXJrKTsgICAgICAvLyA2LjQ3OjEgLyA1Ljk3OjFcblxuICAgIC8vIFJlbGF0aXZlIHN0ZXAgYXBwbGllZCB0byBhIGAubW9uZXktLXRvdGFsYCBhbW91bnQuIFVuaXRsZXNzIG11bHRpcGxpZXIgc29cbiAgICAvLyB0aGUgc3RlcCBpcyBjb3JyZWN0IGF0IGV2ZXJ5IGluaGVyaXRlZCBiYXNlIHNpemUuXG4gICAgLS1zd3AtbW9uZXktdG90YWwtc2NhbGU6IDEuMTI1O1xuXG4gICAgLy8gUmVsYXRpdmUgc2l6ZSBvZiB0aGUgY3VycmVuY3kgY29kZSBhZ2FpbnN0IGl0cyBhbW91bnQuIFRoZSBjb2RlIGlzIGEgdW5pdCxcbiAgICAvLyBub3QgYSBzZWNvbmQgbnVtYmVyLCBhbmQgcmVhZHMgYXMgc3Vib3JkaW5hdGUgcmF0aGVyIHRoYW4gY29tcGV0aW5nLlxuICAgIC0tc3dwLW1vbmV5LWN1cnJlbmN5LXNjYWxlOiAwLjc1ZW07XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gVHlwb2dyYXBoeVxuICpcbiAqIFR5cG9ncmFwaHkgc2NhbGUsIGZvbnQgZmFtaWxpZXMsIHdlaWdodHMsIGFuZCBsaW5lIGhlaWdodHMuXG4gKiBVc2VzIHN5c3RlbSBmb250cyBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQgbmF0aXZlIGZlZWwuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9OVCBGQU1JTElFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gU3lzdGVtIGZvbnQgc3RhY2sgLSBNb2Rlcm4sIHBlcmZvcm1hbnQsIG5hdGl2ZSBmZWVsXG4gICAgLS1zd3AtZm9udC1zYW5zOiAtYXBwbGUtc3lzdGVtLCBibGlua21hY3N5c3RlbWZvbnQsICdTZWdvZSBVSScsIHJvYm90byxcbiAgICAgICAgICAgICAgICAgICAgICdIZWx2ZXRpY2EgTmV1ZScsIGFyaWFsLCAnTm90byBTYW5zJywgc2Fucy1zZXJpZixcbiAgICAgICAgICAgICAgICAgICAgICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnLFxuICAgICAgICAgICAgICAgICAgICAgJ05vdG8gQ29sb3IgRW1vamknO1xuXG4gICAgLy8gTW9ub3NwYWNlIGZvciBjb2RlLCBudW1iZXJzIGluIHRhYmxlc1xuICAgIC0tc3dwLWZvbnQtbW9ubzogdWktbW9ub3NwYWNlLCBzZm1vbm8tcmVndWxhciwgJ1NGIE1vbm8nLCBtZW5sbywgbW9uYWNvLFxuICAgICAgICAgICAgICAgICAgICAgY29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG5cbiAgICAvLyBEZWZhdWx0IGZvbnQgZmFtaWx5XG4gICAgLS1zd3AtZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LXNhbnMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT05UIFNJWkVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC10ZXh0LXhzOiAwLjc1cmVtOyAgICAgICAvLyAxMnB4IC0gRmluZSBwcmludCwgYmFkZ2VzXG4gICAgLS1zd3AtdGV4dC1zbTogMC44MTI1cmVtOyAgICAgLy8gMTNweCAtIEhlbHAgdGV4dCwgY2FwdGlvbnNcbiAgICAtLXN3cC10ZXh0LWJhc2U6IDAuOTM3NXJlbTsgICAvLyAxNXB4IC0gQm9keSB0ZXh0IChzbGlnaHRseSBsYXJnZXIgdGhhbiAxNHB4IGZvciByZWFkYWJpbGl0eSlcbiAgICAtLXN3cC10ZXh0LW1kOiAxcmVtOyAgICAgICAgICAvLyAxNnB4IC0gRW1waGFzaXplZCBib2R5XG4gICAgLS1zd3AtdGV4dC1sZzogMS4xMjVyZW07ICAgICAgLy8gMThweCAtIENhcmQgdGl0bGVzLCBzZWN0aW9uIGhlYWRlcnNcbiAgICAtLXN3cC10ZXh0LXhsOiAxLjI1cmVtOyAgICAgICAvLyAyMHB4IC0gUGFnZSBzdWJ0aXRsZXNcbiAgICAtLXN3cC10ZXh0LTJ4bDogMS41cmVtOyAgICAgICAvLyAyNHB4IC0gUGFnZSB0aXRsZXNcbiAgICAtLXN3cC10ZXh0LTN4bDogMS44NzVyZW07ICAgICAvLyAzMHB4IC0gSGVybyB0aXRsZXNcbiAgICAtLXN3cC10ZXh0LTR4bDogMi4yNXJlbTsgICAgICAvLyAzNnB4IC0gTGFyZ2UgZGlzcGxheVxuICAgIC0tc3dwLXRleHQtNXhsOiAzcmVtOyAgICAgICAgIC8vIDQ4cHggLSBFeHRyYSBsYXJnZSBkaXNwbGF5XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTkUgSEVJR0hUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtbGVhZGluZy1ub25lOiAxO1xuICAgIC0tc3dwLWxlYWRpbmctdGlnaHQ6IDEuMjU7XG4gICAgLS1zd3AtbGVhZGluZy1zbnVnOiAxLjM3NTtcbiAgICAtLXN3cC1sZWFkaW5nLW5vcm1hbDogMS41O1xuICAgIC0tc3dwLWxlYWRpbmctcmVsYXhlZDogMS42MjU7XG4gICAgLS1zd3AtbGVhZGluZy1sb29zZTogMjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9OVCBXRUlHSFRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC1mb250LXRoaW46IDEwMDtcbiAgICAtLXN3cC1mb250LWV4dHJhbGlnaHQ6IDIwMDtcbiAgICAtLXN3cC1mb250LWxpZ2h0OiAzMDA7XG4gICAgLS1zd3AtZm9udC1ub3JtYWw6IDQwMDtcbiAgICAtLXN3cC1mb250LW1lZGl1bTogNTAwO1xuICAgIC0tc3dwLWZvbnQtc2VtaWJvbGQ6IDYwMDtcbiAgICAtLXN3cC1mb250LWJvbGQ6IDcwMDtcbiAgICAtLXN3cC1mb250LWV4dHJhYm9sZDogODAwO1xuICAgIC0tc3dwLWZvbnQtYmxhY2s6IDkwMDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTEVUVEVSIFNQQUNJTkdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLXRyYWNraW5nLXRpZ2h0ZXI6IC0wLjA1ZW07XG4gICAgLS1zd3AtdHJhY2tpbmctdGlnaHQ6IC0wLjAyNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLW5vcm1hbDogMDtcbiAgICAtLXN3cC10cmFja2luZy13aWRlOiAwLjAyNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLXdpZGVyOiAwLjA1ZW07XG4gICAgLS1zd3AtdHJhY2tpbmctd2lkZXN0OiAwLjFlbTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQT0dSQVBIWSBVVElMSVRZIENMQVNTRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUGFnZSB0aXRsZSAtIExhcmdlLCBwcm9taW5lbnQgaGVhZGluZ1xuXG4udGV4dC1wYWdlLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctdGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXRpZ2h0KTtcbn1cblxuLy8gUGFnZSBzdWJ0aXRsZVxuXG4udGV4dC1wYWdlLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vIENhcmQgdGl0bGVcblxuLnRleHQtY2FyZC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctc251Zyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBDYXJkIHN1YnRpdGxlXG5cbi50ZXh0LWNhcmQtc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vIFNlY3Rpb24gdGl0bGUgKHdpdGggaWNvbiBwYXR0ZXJuKVxuXG4udGV4dC1zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1zbnVnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgc3ZnLFxuICAgIGkge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLy8gTGFiZWwgdGV4dCAoZm9ybSBsYWJlbHMsIHRhYmxlIGhlYWRlcnMpXG5cbi50ZXh0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLy8gQm9keSB0ZXh0XG5cbi50ZXh0LWJvZHkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLXJlbGF4ZWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtYm9keS1jb2xvcik7XG59XG5cbi8vIFNtYWxsL0hlbHAgdGV4dFxuXG4udGV4dC1oZWxwIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBNb25vc3BhY2UgdGV4dCAoZm9yIElEcywgY29kZXMpXG5cbi50ZXh0LW1vbm8ge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbn1cblxuLy8gVGFibGUgaGVhZGVyIHRleHRcblxuLnRleHQtdGFibGUtaGVhZGVyIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGVyKTtcbn1cblxuLy8gRW1waGFzaXplZC9IaWdobGlnaHQgdGV4dFxuXG4udGV4dC1lbXBoYXNpcyB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIE11dGVkIHRleHRcblxuLnRleHQtc3VidGxlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBMaW5rIHN0eWxpbmdcblxuLnRleHQtbGluayB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1saW5rLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1saW5rLWhvdmVyLWNvbG9yKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4vLyBUcnVuY2F0ZSB0ZXh0IHdpdGggZWxsaXBzaXNcblxuLnRleHQtdHJ1bmNhdGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLy8gTXVsdGktbGluZSB0cnVuY2F0aW9uIChyZXF1aXJlcyAtd2Via2l0KVxuXG4udGV4dC1saW5lLWNsYW1wLTIge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi50ZXh0LWxpbmUtY2xhbXAtMyB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBDb21wb25lbnQgSW5kZXhcbiAqXG4gKiBDdXN0b20gY29tcG9uZW50IHN0eWxlcyB0aGF0IGV4dGVuZCBCb290c3RyYXAvVGFibGVyLlxuICogT25seSBhZGQgc3R5bGVzIGhlcmUgdGhhdCBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgYmV5b25kIHdoYXQgQm9vdHN0cmFwL1RhYmxlciBvZmZlci5cbiAqXG4gKiBOb3RlOiBNb3N0IGNvbXBvbmVudCBzdHlsaW5nIGNvbWVzIGZyb20gQm9vdHN0cmFwIDUgYW5kIFRhYmxlci5cbiAqIFRoaXMgZmlsZSBpbXBvcnRzIG9ubHkgY3VzdG9tIGV4dGVuc2lvbnMsIG5vdCByZXBsYWNlbWVudHMuXG4gKi9cblxuLy8gU2hhcmVkIEZvcm0gUGFnZSAtIENvbnNvbGlkYXRlZCBmb3JtLXBhZ2UgbGF5b3V0IHBhdHRlcm5cbkBpbXBvcnQgJ2Zvcm0tcGFnZSc7XG5cbi8vIERvY3VtZW50IFZpZXcgLSBTaGFyZWQgbGF5b3V0IGZvciBJbnZvaWNlIGFuZCBRdW90ZSB2aWV3IHBhZ2VzXG5AaW1wb3J0ICdkb2N1bWVudC12aWV3JztcblxuLy8gRXh0ZXJuYWwgRG9jdW1lbnQgVmlldyAtIFNoYXJlZCBsYXlvdXQgZm9yIHB1YmxpYy1mYWNpbmcgSW52b2ljZSBhbmQgUXVvdGUgcGFnZXNcbkBpbXBvcnQgJ2V4dGVybmFsLWRvYy12aWV3JztcblxuLy8gTWFya2V0cGxhY2UgLSBTaGFyZWQgc3R5bGVzIGZvciBQYXltZW50IGFuZCBOb3RpZmljYXRpb24gbWFya2V0cGxhY2UgcGFnZXNcbkBpbXBvcnQgJ21hcmtldHBsYWNlJztcblxuLy8gR2xvYmFsIFNlYXJjaCAtIFRvcCBuYXZpZ2F0aW9uIHNlYXJjaCBiYXIgd2l0aCBsaXZlIHJlc3VsdHMgZHJvcGRvd25cbkBpbXBvcnQgJ2dsb2JhbC1zZWFyY2gnO1xuXG4vLyBEYXRhR3JpZCAtIE1vZGVybiB0YWJsZS9ncmlkIGNvbXBvbmVudCBzdHlsZXNcbkBpbXBvcnQgJ2RhdGFncmlkJztcblxuLy8gQ2xpZW50IEZvcm0gLSBNb2Rlcm4gY2xpZW50IGNyZWF0aW9uIGZvcm1cbkBpbXBvcnQgJ2NsaWVudC1mb3JtJztcblxuLy8gQmlsbGluZyBGb3JtIC0gU2hhcmVkIHN0eWxlcyBmb3IgSW52b2ljZSBhbmQgUXVvdGUgY3JlYXRpb24gZm9ybXNcbkBpbXBvcnQgJ2JpbGxpbmctZm9ybSc7XG5cbi8vIFBheW1lbnQgUGFnZSAtIEludm9pY2UgcGF5bWVudCBmb3JtIHdpdGggbWV0aG9kIHNlbGVjdGlvblxuQGltcG9ydCAncGF5bWVudC1wYWdlJztcblxuLy8gUGF5bWVudHMgTGlzdCAtIFBheW1lbnRzIGxpc3QgcGFnZSB3aXRoIEtQSSBjYXJkcyBhbmQgZmlsdGVyc1xuQGltcG9ydCAncGF5bWVudHMtbGlzdCc7XG5cbi8vIFVzZXJzIFBhZ2UgLSBVc2VycyBsaXN0IHdpdGggS1BJIGNhcmRzIGFuZCB0YWJzXG5AaW1wb3J0ICd1c2Vycy1wYWdlJztcblxuLy8gUHJvZmlsZSBQYWdlIC0gVXNlciBwcm9maWxlIGFuZCBzZXR0aW5ncyBwYWdlc1xuQGltcG9ydCAncHJvZmlsZS1wYWdlJztcblxuLy8gVHdvLUZhY3RvciBBdXRoZW50aWNhdGlvbiAtIDJGQSBjb25maWd1cmF0aW9uIGFuZCBsb2dpbiBwYWdlc1xuQGltcG9ydCAndHdvLWZhY3Rvcic7XG5cbi8vIE5vdGlmaWNhdGlvbnMgUGFnZSAtIFVzZXIgbm90aWZpY2F0aW9uIHByZWZlcmVuY2VzXG5AaW1wb3J0ICdub3RpZmljYXRpb25zLXBhZ2UnO1xuXG4vLyBTdWJzY3JpcHRpb24gUGFnZXMgLSBUcmlhbCBleHBpcmVkLCBjYW5jZWxsZWQsIHBlbmRpbmcgc3Vic2NyaXB0aW9uIHN0YXRlc1xuQGltcG9ydCAnc3Vic2NyaXB0aW9uLXBhZ2VzJztcblxuLy8gT25ib2FyZGluZyBDaGVja2xpc3QgLSBEYXNoYm9hcmQgY2hlY2tsaXN0IHdpZGdldCBzdHlsZXNcbkBpbXBvcnQgJ29uYm9hcmRpbmctY2hlY2tsaXN0JztcblxuLy8gT25ib2FyZGluZyBXaXphcmQgLSBGaXJzdC1ydW4gZmxvdyAoL29uYm9hcmRpbmcpIHN0eWxlc1xuQGltcG9ydCAnb25ib2FyZGluZy13aXphcmQnO1xuXG4vLyBNb25leSAtIFNpZ25hdHVyZSBjb21wb25lbnQ7IHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGV2ZXJ5IGN1cnJlbmN5IHZhbHVlXG5AaW1wb3J0ICdtb25leSc7XG5cbi8vIFN0YXR1cyBDaGlwIC0gU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgZXZlcnkgc3RhdHVzIHdvcmRcbkBpbXBvcnQgJ3N0YXR1cy1jaGlwJztcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gU2hhcmVkIEZvcm0gUGFnZSBTdHlsZXNcbiAqXG4gKiBDb25zb2xpZGF0ZWQgZm9ybS1wYWdlIGxheW91dCBwYXR0ZXJuIHVzZWQgYWNyb3NzIFRheEJ1bmRsZSwgQ2xpZW50QnVuZGxlLFxuICogVXNlckJ1bmRsZSAoUHJvZmlsZSwgSW52aXRlLCBDaGFuZ2VQYXNzd29yZCkgYW5kIHNpbWlsYXIgZm9ybSBwYWdlcy5cbiAqXG4gKiBUZW1wbGF0ZSBzdHJ1Y3R1cmU6XG4gKiAgIC5mb3JtLXBhZ2UgPiAuZm9ybS1wYWdlLWNvbnRhaW5lclstLW5hcnJvd3wtLW1lZGl1bXwtLXdpZGVdID5cbiAqICAgICAuZm9ybS1wYWdlLWhlYWRlciA+IC5mb3JtLXBhZ2UtaGVhZGVyLWNvbnRlbnQgPlxuICogICAgICAgLmZvcm0tcGFnZS1pY29uWy0tc2VjdXJpdHldICsgZGl2KC5mb3JtLXBhZ2UtdGl0bGUgKyAuZm9ybS1wYWdlLXN1YnRpdGxlKVxuICogICAgIC5mb3JtLXBhZ2Utc2VjdGlvbnMgPiAuZm9ybS1wYWdlLXNlY3Rpb24gPlxuICogICAgICAgLnNlY3Rpb24taGVhZGVyID4gLnNlY3Rpb24taWNvblstLXNlY3VyaXR5XSArIC5zZWN0aW9uLWhlYWRlci10ZXh0XG4gKiAgICAgICAgICguc2VjdGlvbi10aXRsZSArIC5zZWN0aW9uLWRlc2NyaXB0aW9uKVxuICogICAgICAgLnNlY3Rpb24tY29udGVudCA+IC5mb3JtLWdyaWQgPiAuZm9ybS1maWVsZFsuZm9ybS1maWVsZC13aWRlXVxuICogICAgIC5mb3JtLXBhZ2UtYWN0aW9ucyA+IC5mb3JtLXBhZ2UtYWN0aW9ucy1pbm5lclstLW1lZGl1bV1cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIFdSQVBQRVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gV0lEVEgtQ09OU1RSQUlORUQgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTI0KTtcblxuICAgICYtLW5hcnJvdyB7IG1heC13aWR0aDogODAwcHg7IH1cblxuICAgICYtLW1lZGl1bSB7IG1heC13aWR0aDogOTAwcHg7IH1cblxuICAgICYtLXdpZGUgICB7IG1heC13aWR0aDogMTEwMHB4OyB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDA7XG59XG5cbi5mb3JtLXBhZ2UtaGVhZGVyLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmZvcm0tcGFnZS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgJi0tc2VjdXJpdHkge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMikgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICB9XG59XG5cbi5mb3JtLXBhZ2UtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5mb3JtLXBhZ2Utc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDAgMDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTlMgTElTVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLXNlY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElORElWSURVQUwgU0VDVElPTiBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2Utc2VjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKSxcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgIH1cblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0hBUkVEIFNFQ1RJT04gSEVBREVSICh1c2VkIGluc2lkZSBmb3JtLXBhZ2Utc2VjdGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KSB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5zZWN0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtLXNlY3VyaXR5IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjE1KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA1KSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICB9XG59XG5cbi5zZWN0aW9uLWhlYWRlci10ZXh0IHtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uc2VjdGlvbi1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTiBCT0RZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZWN0aW9uLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFdPLUNPTFVNTiBGT1JNIEdSSURcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxufVxuXG4uZm9ybS1maWVsZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZm9ybS1maWVsZC13aWRlIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVElDS1kgRk9PVEVSIEFDVElPTlMgQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtYWN0aW9ucyB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBib3gtc2hhZG93OiAwIC00cHggMTJweCByZ2IoMCAwIDAgLyA1JSk7XG59XG5cbi5mb3JtLXBhZ2UtYWN0aW9ucy1pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXgtd2lkdGg6IDgwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgJi0tbWVkaXVtIHsgbWF4LXdpZHRoOiA5MDBweDsgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFTkhBTkNFRCBTQVZFIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYnRuLXNhdmUsXG4uYnRuLXNhdmUtcHJpbWFyeSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAuZm9ybS1wYWdlIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWhlYWRlci1jb250ZW50IHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1hY3Rpb25zLWlubmVyIHtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5mb3JtLXBhZ2UtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/