:root,
[data-bs-theme="light"] {
    color-scheme: light;
    --cashly-bg: #f5f6f7;
    --cashly-bg-rgb: 245, 246, 247;
    --cashly-surface: #ffffff;
    --cashly-surface-soft: #f2f4f5;
    --cashly-surface-hover: #e9ecee;
    --cashly-border: #e3e6e9;
    --cashly-hairline: #eef0f2;
    --cashly-elev: 0 1px 2px rgba(12, 31, 51, 0.04);
    --cashly-elev-float: 0 2px 6px rgba(17, 24, 39, 0.06), 0 12px 32px -8px rgba(17, 24, 39, 0.18);
    --cashly-field-border: #868e96;
    --cashly-focus-border: #0f766e;
    --cashly-text: #3a4a5c;
    --cashly-text-rgb: 58, 74, 92;
    --cashly-heading: #0c1f33;
    --cashly-muted: #5a6778;
    --cashly-placeholder: #66707a;
    --cashly-disabled-bg: #eef0f2;
    --cashly-addon-bg: #eef0f2;
    --cashly-addon-text: #4b5560;
    --cashly-link-rgb: 15, 118, 110;
    --cashly-link-hover-rgb: 17, 94, 89;
    --cashly-dropdown-hover: #f2f4f5;
    --cashly-divider: #c5cbd1;
    --cashly-shadow: rgba(17, 24, 39, 0.1);
    --cashly-backdrop: rgba(15, 20, 25, 0.45);
    --cashly-on-primary: #ffffff;
    --cashly-primary: #0f766e;
    --cashly-primary-hover: #0c625b;
    --cashly-primary-rgb: 15, 118, 110;
    --cashly-on-danger: #ffffff;
    --cashly-danger: #c93a4a;
    --cashly-danger-hover: #b02f3e;
    --cashly-danger-rgb: 201, 58, 74;
    --cashly-danger-soft: #fbe9eb;
    --cashly-danger-text: #b33343;
    --cashly-primary-tint: #e5f3f1;
    --cashly-success-tint: #e3f4ea;
    --cashly-danger-tint: #fcebed;
    --cashly-success-text: #157a3c;
    --cashly-warning-text: #8a5a00;
    --cashly-warning: #d98e04;
    --cashly-warning-tint: #fdf3dc;
    --cashly-hero-from: #0a4a45;
    --cashly-hero-to: #0e6b64;
    --cashly-hero-text: #ffffff;
    --cashly-hero-muted: #cfe9e5;
    --cashly-hero-line: rgba(255, 255, 255, 0.16);
    --cashly-hero-chip: rgba(255, 255, 255, 0.14);
    --cashly-hero-danger: #ffd0d5;
}

[data-bs-theme="dark"] {
    color-scheme: dark;
    --cashly-bg: #0f1113;
    --cashly-bg-rgb: 15, 17, 19;
    --cashly-surface: #17191c;
    --cashly-surface-soft: #1e2124;
    --cashly-surface-hover: #272b2f;
    --cashly-border: #2a2e33;
    --cashly-hairline: #222529;
    --cashly-elev: 0 0 0 transparent;
    --cashly-elev-float: 0 0 0 1px rgba(255, 255, 255, 0.04), 0 16px 40px -8px rgba(0, 0, 0, 0.6);
    --cashly-field-border: #6a7178;
    --cashly-focus-border: #5ccfc2;
    --cashly-text: #b8bfc6;
    --cashly-text-rgb: 184, 191, 198;
    --cashly-heading: #eef0f2;
    --cashly-muted: #8e979f;
    --cashly-placeholder: #858d95;
    --cashly-disabled-bg: #1e2124;
    --cashly-addon-bg: #1e2124;
    --cashly-addon-text: #b8bfc6;
    --cashly-link-rgb: 92, 207, 194;
    --cashly-link-hover-rgb: 133, 222, 212;
    --cashly-dropdown-hover: #23272b;
    --cashly-divider: #3a3f45;
    --cashly-shadow: rgba(0, 0, 0, 0.5);
    --cashly-backdrop: rgba(0, 0, 0, 0.6);
    --cashly-on-primary: #052421;
    --cashly-primary: #2bb3a3;
    --cashly-primary-hover: #3cc4b4;
    --cashly-primary-rgb: 43, 179, 163;
    --cashly-on-danger: #2a0a0e;
    --cashly-danger: #e5606c;
    --cashly-danger-hover: #ec7984;
    --cashly-danger-rgb: 229, 96, 108;
    --cashly-danger-soft: #3a1d21;
    --cashly-danger-text: #f08791;
    --cashly-primary-tint: #14302c;
    --cashly-success-tint: #13301f;
    --cashly-danger-tint: #3a1d21;
    --cashly-success-text: #57c98d;
    --cashly-warning-text: #f0b429;
    --cashly-warning: #f0b429;
    --cashly-warning-tint: #2e2610;
    --cashly-hero-from: #0c2a27;
    --cashly-hero-to: #11403b;
    --cashly-hero-text: #eef0f2;
    --cashly-hero-muted: #a9cdc7;
    --cashly-hero-line: rgba(255, 255, 255, 0.12);
    --cashly-hero-chip: rgba(255, 255, 255, 0.1);
    --cashly-hero-danger: #ffb3bb;
}

:root,
[data-bs-theme] {
    --bs-font-sans-serif: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --bs-body-font-family: var(--bs-font-sans-serif);
    --bs-primary: var(--cashly-primary);
    --bs-primary-rgb: var(--cashly-primary-rgb);
    --bs-danger: var(--cashly-danger);
    --bs-danger-rgb: var(--cashly-danger-rgb);
    --bs-danger-bg-subtle: var(--cashly-danger-soft);
    --bs-danger-text-emphasis: var(--cashly-danger-text);
    --bs-danger-border-subtle: var(--cashly-danger-soft);
    --bs-body-bg: var(--cashly-bg);
    --bs-body-bg-rgb: var(--cashly-bg-rgb);
    --bs-body-color: var(--cashly-text);
    --bs-body-color-rgb: var(--cashly-text-rgb);
    --bs-heading-color: var(--cashly-heading);
    --bs-secondary-color: var(--cashly-muted);
    --bs-secondary-bg: var(--cashly-surface-hover);
    --bs-tertiary-bg: var(--cashly-surface-soft);
    --bs-border-color: var(--cashly-border);
    --bs-link-color: rgb(var(--cashly-link-rgb));
    --bs-link-color-rgb: var(--cashly-link-rgb);
    --bs-link-hover-color: rgb(var(--cashly-link-hover-rgb));
    --bs-link-hover-color-rgb: var(--cashly-link-hover-rgb);
}

.btn-primary {
    --bs-btn-color: var(--cashly-on-primary);
    --bs-btn-bg: var(--cashly-primary);
    --bs-btn-border-color: var(--cashly-primary);
    --bs-btn-hover-color: var(--cashly-on-primary);
    --bs-btn-hover-bg: var(--cashly-primary-hover);
    --bs-btn-hover-border-color: var(--cashly-primary-hover);
    --bs-btn-focus-shadow-rgb: var(--cashly-primary-rgb);
    --bs-btn-active-color: var(--cashly-on-primary);
    --bs-btn-active-bg: var(--cashly-primary-hover);
    --bs-btn-active-border-color: var(--cashly-primary-hover);
    --bs-btn-active-shadow: none;
    --bs-btn-disabled-color: var(--cashly-on-primary);
    --bs-btn-disabled-bg: var(--cashly-primary);
    --bs-btn-disabled-border-color: var(--cashly-primary);
}

.btn-danger {
    --bs-btn-color: var(--cashly-on-danger);
    --bs-btn-bg: var(--cashly-danger);
    --bs-btn-border-color: var(--cashly-danger);
    --bs-btn-hover-color: var(--cashly-on-danger);
    --bs-btn-hover-bg: var(--cashly-danger-hover);
    --bs-btn-hover-border-color: var(--cashly-danger-hover);
    --bs-btn-active-color: var(--cashly-on-danger);
    --bs-btn-active-bg: var(--cashly-danger-hover);
    --bs-btn-active-border-color: var(--cashly-danger-hover);
    --bs-btn-active-shadow: none;
    --bs-btn-focus-shadow-rgb: var(--cashly-danger-rgb);
}

.btn.btn-primary {
    color: var(--cashly-on-primary);
}

.btn.btn-danger {
    color: var(--cashly-on-danger);
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
    box-shadow: 0 0 0 3px rgba(var(--cashly-primary-rgb), 0.16);
}

.form-check-input:checked {
    background-color: var(--cashly-primary);
    border-color: var(--cashly-primary);
}

.btn-close:focus {
    box-shadow: 0 0 0 3px rgba(var(--cashly-primary-rgb), 0.25);
}

.card {
    --bs-card-bg: var(--cashly-surface);
    --bs-card-cap-bg: var(--cashly-surface);
    --bs-card-border-color: var(--cashly-border);
}

.modal {
    --bs-modal-bg: var(--cashly-surface);
    --bs-modal-color: var(--cashly-text);
    --bs-modal-border-color: var(--cashly-border);
    --bs-modal-header-border-color: var(--cashly-hairline);
    --bs-modal-footer-border-color: var(--cashly-hairline);
}

.modal-backdrop {
    --bs-backdrop-bg: var(--cashly-backdrop);
    --bs-backdrop-opacity: 1;
}

.dropdown-menu {
    --bs-dropdown-bg: var(--cashly-surface);
    --bs-dropdown-color: var(--cashly-text);
    --bs-dropdown-border-color: var(--cashly-border);
    --bs-dropdown-link-color: var(--cashly-text);
    --bs-dropdown-link-hover-color: var(--cashly-heading);
    --bs-dropdown-link-hover-bg: var(--cashly-dropdown-hover);
    --bs-dropdown-link-active-color: var(--cashly-heading);
    --bs-dropdown-link-active-bg: var(--cashly-surface-hover);
    --bs-dropdown-divider-bg: var(--cashly-hairline);
}

.form-control,
.form-select {
    color: var(--cashly-heading);
    background-color: var(--cashly-surface);
    border-color: var(--cashly-field-border);
}

.form-control:focus,
.form-select:focus {
    color: var(--cashly-heading);
    background-color: var(--cashly-surface);
    border-color: var(--cashly-focus-border);
}

.form-control::placeholder {
    color: var(--cashly-placeholder);
}

.form-control:disabled,
.form-select:disabled {
    background-color: var(--cashly-disabled-bg);
}

.form-check-input {
    --bs-form-check-bg: var(--cashly-surface);
    border-color: var(--cashly-field-border);
}

.input-group-text {
    color: var(--cashly-addon-text);
    background-color: var(--cashly-addon-bg);
    border-color: var(--cashly-field-border);
}

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

.alert-danger {
    --bs-alert-color: var(--cashly-danger-text);
    --bs-alert-bg: var(--cashly-danger-tint);
    --bs-alert-border-color: transparent;
    color: var(--cashly-danger-text);
    background-color: var(--cashly-danger-tint);
    border-color: transparent;
}

.btn-soft {
    --bs-btn-color: var(--cashly-heading);
    --bs-btn-bg: var(--cashly-surface-soft);
    --bs-btn-border-color: transparent;
    --bs-btn-hover-color: var(--cashly-heading);
    --bs-btn-hover-bg: var(--cashly-surface-hover);
    --bs-btn-hover-border-color: transparent;
    --bs-btn-active-color: var(--cashly-heading);
    --bs-btn-active-bg: var(--cashly-surface-hover);
    --bs-btn-active-border-color: transparent;
    --bs-btn-disabled-color: var(--cashly-muted);
    --bs-btn-disabled-bg: var(--cashly-surface-soft);
    --bs-btn-disabled-border-color: transparent;
}

.text-success {
    color: var(--cashly-success-text) !important;
}

.text-danger {
    color: var(--cashly-danger-text) !important;
}

.text-warning {
    color: var(--cashly-warning-text) !important;
}

.btn-outline-primary {
    --bs-btn-color: var(--bs-link-color);
    --bs-btn-border-color: var(--bs-link-color);
}

.swal2-popup {
    background: var(--cashly-surface);
    color: var(--cashly-text);
    border-radius: var(--cashly-radius-lg);
}

.swal2-popup.swal2-toast {
    background: var(--cashly-surface);
    border: 1px solid var(--cashly-border);
    border-radius: var(--cashly-radius-sm);
    box-shadow: var(--cashly-elev-float);
}

.swal2-actions .btn {
    min-height: var(--cashly-control-h);
}

.swal2-title,
.swal2-html-container {
    color: var(--cashly-heading);
}

.swal2-html-container {
    color: var(--cashly-text);
}

.swal2-validation-message {
    background: var(--cashly-surface-soft);
    color: var(--cashly-danger-text);
}

.swal2-container.swal2-backdrop-show {
    background: var(--cashly-backdrop);
}

.swal2-icon.swal2-success {
    border-color: var(--cashly-success-text);
    color: var(--cashly-success-text);
}

.swal2-icon.swal2-success .swal2-success-ring {
    border-color: rgba(var(--cashly-primary-rgb), 0.3);
}

.swal2-icon.swal2-success [class^="swal2-success-line"] {
    background-color: var(--cashly-success-text);
}

.swal2-icon.swal2-error {
    border-color: var(--cashly-danger-text);
    color: var(--cashly-danger-text);
}

.swal2-icon.swal2-error [class^="swal2-x-mark-line"] {
    background-color: var(--cashly-danger-text);
}

.swal2-icon.swal2-warning {
    border-color: var(--cashly-danger-text);
    color: var(--cashly-danger-text);
}

.swal2-icon.swal2-question {
    border-color: var(--cashly-focus-border);
    color: var(--cashly-focus-border);
}

.swal2-timer-progress-bar {
    background: rgba(var(--cashly-primary-rgb), 0.35);
}

.flatpickr-calendar {
    background: var(--cashly-surface);
    color: var(--cashly-text);
    box-shadow: 0 0 0 1px var(--cashly-border), 0 3px 13px var(--cashly-shadow);
}

.flatpickr-calendar.arrowTop:before {
    border-bottom-color: var(--cashly-border);
}

.flatpickr-calendar.arrowTop:after {
    border-bottom-color: var(--cashly-surface);
}

.flatpickr-calendar.arrowBottom:before {
    border-top-color: var(--cashly-border);
}

.flatpickr-calendar.arrowBottom:after {
    border-top-color: var(--cashly-surface);
}

.flatpickr-months .flatpickr-month,
.flatpickr-months .flatpickr-prev-month,
.flatpickr-months .flatpickr-next-month {
    color: var(--cashly-heading);
    fill: var(--cashly-heading);
}

.flatpickr-months .flatpickr-prev-month:hover,
.flatpickr-months .flatpickr-next-month:hover {
    color: var(--cashly-primary);
}

.flatpickr-months .flatpickr-prev-month:hover svg,
.flatpickr-months .flatpickr-next-month:hover svg {
    fill: var(--cashly-primary);
}

.flatpickr-current-month .flatpickr-monthDropdown-months:hover,
.flatpickr-current-month span.cur-month:hover,
.numInputWrapper:hover {
    background: var(--cashly-surface-hover);
}

.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
    background-color: var(--cashly-surface);
}

.numInputWrapper span {
    border-color: var(--cashly-border);
}

.numInputWrapper span:hover {
    background: var(--cashly-surface-hover);
}

.flatpickr-current-month .numInputWrapper span.arrowUp:after,
.numInputWrapper span.arrowUp:after {
    border-bottom-color: var(--cashly-muted);
}

.flatpickr-current-month .numInputWrapper span.arrowDown:after,
.numInputWrapper span.arrowDown:after {
    border-top-color: var(--cashly-muted);
}

span.flatpickr-weekday {
    color: var(--cashly-muted);
}

.flatpickr-day {
    color: var(--cashly-text);
}

.flatpickr-day.inRange,
.flatpickr-day.prevMonthDay.inRange,
.flatpickr-day.nextMonthDay.inRange,
.flatpickr-day.today.inRange,
.flatpickr-day.prevMonthDay.today.inRange,
.flatpickr-day.nextMonthDay.today.inRange,
.flatpickr-day:hover,
.flatpickr-day.prevMonthDay:hover,
.flatpickr-day.nextMonthDay:hover,
.flatpickr-day:focus,
.flatpickr-day.prevMonthDay:focus,
.flatpickr-day.nextMonthDay:focus {
    background: var(--cashly-surface-hover);
    border-color: var(--cashly-surface-hover);
}

.flatpickr-day.inRange {
    box-shadow: -5px 0 0 var(--cashly-surface-hover), 5px 0 0 var(--cashly-surface-hover);
}

.flatpickr-day.today {
    border-color: var(--cashly-placeholder);
}

.flatpickr-day.today:hover,
.flatpickr-day.today:focus {
    border-color: var(--cashly-placeholder);
    background: var(--cashly-placeholder);
    color: var(--cashly-on-primary);
}

.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange,
.flatpickr-day.selected.inRange,
.flatpickr-day.startRange.inRange,
.flatpickr-day.endRange.inRange,
.flatpickr-day.selected:focus,
.flatpickr-day.startRange:focus,
.flatpickr-day.endRange:focus,
.flatpickr-day.selected:hover,
.flatpickr-day.startRange:hover,
.flatpickr-day.endRange:hover,
.flatpickr-day.selected.prevMonthDay,
.flatpickr-day.startRange.prevMonthDay,
.flatpickr-day.endRange.prevMonthDay,
.flatpickr-day.selected.nextMonthDay,
.flatpickr-day.startRange.nextMonthDay,
.flatpickr-day.endRange.nextMonthDay {
    background: var(--cashly-primary);
    color: var(--cashly-on-primary);
    border-color: var(--cashly-primary);
}

.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
    box-shadow: -10px 0 0 var(--cashly-primary);
}

.flatpickr-day.flatpickr-disabled,
.flatpickr-day.flatpickr-disabled:hover,
.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay,
.flatpickr-day.notAllowed,
.flatpickr-day.notAllowed.prevMonthDay,
.flatpickr-day.notAllowed.nextMonthDay {
    color: var(--cashly-placeholder);
    background: transparent;
    border-color: transparent;
}

.flatpickr-current-month input.cur-year[disabled],
.flatpickr-current-month input.cur-year[disabled]:hover {
    color: var(--cashly-heading);
    background: transparent;
}
