/* Copyright, developed by Log Cabin Coding for Deveau Engineering Ventures LLC */

:root {
    --bg-color: #ffffff;
    --text-color: #212529;
    --card-bg: #ffffff;
    --navbar-bg: #f8f9fa;
    --border-color: #dee2e6;
    --input-bg: #ffffff;
    --input-text: #212529;
    --muted-text: #6c757d;
    --primary-color: #0d6efd;
    --primary-muted: #e7f1ff;
}

[data-theme="dark"] {
    --bg-color: #1a1a1b;
    --text-color: #e9ecef;
    --card-bg: #212529;
    --navbar-bg: #212529;
    --border-color: #343a40;
    --input-bg: #2b3035;
    --input-text: #e9ecef;
    --muted-text: #adb5bd;
    --primary-color: #6ea8fe;
    --primary-muted: #2c3e50;
    --header-bg: #2d3238;
}

html {
    overflow-y: scroll;
}

body {
    background-color: #ffffff;
    color: #212529;
    transition: background-color 0.3s ease, color 0.3s ease;
    min-height: 100vh;
}

[data-theme="dark"] body {
    background-color: var(--bg-color);
    color: var(--text-color);
}

[data-theme="dark"] .text-body {
    color: var(--text-color) !important;
}

/* Override Bootstrap Backgrounds */
[data-theme="dark"] .bg-white,
[data-theme="dark"] .bg-light {
    background-color: var(--card-bg) !important;
    color: var(--text-color) !important;
}

[data-theme="dark"] .card {
    background-color: var(--header-bg); /* Match table headers for more contrast */
    border-color: var(--border-color);
    color: var(--text-color);
}

[data-theme="dark"] .card-header {
    background-color: var(--card-bg) !important; /* Slightly darker than card body */
    border-bottom-color: var(--border-color);
    color: var(--text-color) !important;
}

[data-theme="dark"] h1,
[data-theme="dark"] h2,
[data-theme="dark"] h3,
[data-theme="dark"] h4,
[data-theme="dark"] h5,
[data-theme="dark"] h6,
[data-theme="dark"] .h1,
[data-theme="dark"] .h2,
[data-theme="dark"] .h3,
[data-theme="dark"] .h4,
[data-theme="dark"] .h5,
[data-theme="dark"] .h6,
[data-theme="dark"] .card-title,
[data-theme="dark"] .section-header,
[data-theme="dark"] .breed-text,
[data-theme="dark"] .nav-link:hover {
    color: #ffffff !important;
}

[data-theme="dark"] .nav-link.active {
    color: #ffffff !important;
    font-weight: bold;
}

[data-theme="dark"] .text-dark {
    color: var(--text-color) !important;
}

[data-theme="dark"] .text-muted {
    color: #adb5bd !important; /* Lighter muted text */
}

[data-theme="dark"] .border,
[data-theme="dark"] .border-top,
[data-theme="dark"] .border-bottom,
[data-theme="dark"] .border-start,
[data-theme="dark"] .border-end {
    border-color: var(--border-color) !important;
}

.card {
    background-color: var(--card-bg);
    border-color: var(--border-color);
}

.navbar {
    background-color: var(--navbar-bg) !important;
}

.navbar-light .navbar-nav .nav-link {
    color: var(--text-color);
}

[data-theme="dark"] .nav-tabs .nav-link {
    color: var(--muted-text);
    border-color: transparent;
}

[data-theme="dark"] .nav-tabs .nav-link.active {
    background-color: var(--card-bg);
    color: var(--text-color) !important;
    border-color: var(--border-color) var(--border-color) var(--card-bg);
    font-weight: bold;
}

.form-control, .form-select {
    background-color: var(--input-bg);
    color: var(--input-text);
    border-color: var(--border-color);
}

[data-theme="dark"] .form-control, 
[data-theme="dark"] .form-select {
    background-color: #343a40 !important; /* Medium grey */
    color: #f8f9fa !important;
}

[data-theme="dark"] .form-control::placeholder {
    color: #adb5bd !important;
}

[data-theme="dark"] .form-label,
[data-theme="dark"] label {
    color: var(--text-color) !important;
}

/* Fix for search bars and specific inputs */
[data-theme="dark"] #client-search-input,
[data-theme="dark"] .search-input {
    color: #f8f9fa !important;
}

.form-control:focus, .form-select:focus {
    background-color: var(--input-bg);
    color: var(--input-text);
}

[data-theme="dark"] .navbar-light .navbar-nav .nav-link.active {
    color: #ffffff !important;
    font-weight: bold;
}

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

[data-theme="dark"] .table {
    color: var(--text-color) !important;
    border-color: var(--border-color) !important;
    --bs-table-bg: transparent !important;
}

[data-theme="dark"] .table td,
[data-theme="dark"] .table th,
[data-theme="dark"] .table-light td,
[data-theme="dark"] .table-light th {
    color: var(--text-color) !important;
}

[data-theme="dark"] .table thead th,
[data-theme="dark"] .table thead td {
    background-color: var(--header-bg);
    color: var(--text-color) !important;
    border-bottom-color: var(--border-color);
}

[data-theme="dark"] .table-light {
    --bs-table-bg: #2a2c2e !important;
    --bs-table-color: var(--text-color) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .table-hover tbody tr:hover {
    --bs-table-hover-bg: #32383e !important;
    color: var(--text-color) !important;
}

[data-theme="dark"] .breadcrumb-item.active {
    color: #ffffff !important;
    font-weight: 500;
}

[data-theme="dark"] .breadcrumb-item a {
    color: var(--primary-color) !important;
}

/* WCAG AA Contrast: ensure blue text is readable on dark backgrounds */
[data-theme="dark"] .text-primary {
    color: #6ea8fe !important;
}

[data-theme="dark"] a:not(.btn):not(.nav-link):not(.dropdown-item) {
    color: #6ea8fe;
}

[data-theme="dark"] a:not(.btn):not(.nav-link):not(.dropdown-item):hover {
    color: #9ec5fe;
}

[data-theme="dark"] .badge.bg-primary {
    background-color: #5a9cf5 !important; /* WCAG AA: ~5.0:1 on #212529 */
    color: #ffffff !important;
}

[data-theme="dark"] .badge.bg-danger {
    background-color: #e35d6a !important; /* WCAG AA: ~5.2:1 on #212529 */
    color: #ffffff !important;
}

[data-theme="dark"] .badge.bg-success {
    background-color: #479f76 !important; /* WCAG AA: ~5.5:1 on #212529 */
    color: #ffffff !important;
}

[data-theme="dark"] .badge.bg-secondary {
    background-color: #8d959d !important; /* WCAG AA: ~5.1:1 on #212529 */
    color: #ffffff !important;
}

[data-theme="dark"] .badge.bg-dark {
    background-color: #495057 !important; /* Visible on dark bg with border */
    color: #e9ecef !important;
    border: 1px solid #6c757d;
}

[data-theme="dark"] .badge.bg-info {
    color: #000000 !important; /* Keep dark text on bright cyan for contrast */
}

/* WCAG AA: utility text color overrides for dark mode */
[data-theme="dark"] .text-success {
    color: #75b798 !important; /* Lightened green, ~6.0:1 on dark */
}

[data-theme="dark"] .text-danger {
    color: #ea868f !important; /* Lightened red, ~6.3:1 on dark */
}

[data-theme="dark"] .text-info {
    color: #6edff6 !important;
}

.btn-outline-secondary {
    color: var(--text-color);
    border-color: var(--border-color);
}

footer {
    border-color: var(--border-color) !important;
}

/* Modal dark mode adjustments */
[data-theme="dark"] .modal-content {
    background-color: var(--card-bg);
    color: var(--text-color);
    border-color: var(--border-color);
}

[data-theme="dark"] .modal-header {
    border-bottom-color: var(--border-color);
    background-color: var(--header-bg);
}

[data-theme="dark"] .modal-footer {
    border-top-color: var(--border-color);
    background-color: var(--card-bg);
}

[data-theme="dark"] .modal-footer.bg-light {
    background-color: var(--header-bg) !important;
}

[data-theme="dark"] .btn-close {
    filter: invert(1);
}

/* Tab content containers — inventory/settings use bg-white */
[data-theme="dark"] .tab-content.bg-white {
    background-color: var(--card-bg) !important;
    color: var(--text-color) !important;
    border-color: var(--border-color) !important;
}

/* Hardcoded text-dark headers (inventory, settings page titles) */
[data-theme="dark"] .text-dark {
    color: var(--text-color) !important;
}

/* Dropdown menus */
[data-theme="dark"] .dropdown-menu {
    background-color: var(--card-bg);
    border-color: var(--border-color);
}

[data-theme="dark"] .dropdown-item {
    color: var(--text-color);
}

[data-theme="dark"] .dropdown-item:hover,
[data-theme="dark"] .dropdown-item:focus {
    background-color: var(--header-bg);
    color: #ffffff;
}

/* Table variants for dark mode */
[data-theme="dark"] .table-dark {
    --bs-table-bg: #2d3238 !important;
    --bs-table-color: #e9ecef !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .table-dark th,
[data-theme="dark"] .table-dark td {
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .table-striped > tbody > tr:nth-of-type(odd) > * {
    --bs-table-accent-bg: rgba(255, 255, 255, 0.03) !important;
    color: var(--text-color) !important;
}

/* Alerts */
[data-theme="dark"] .alert-info {
    background-color: rgba(13, 202, 240, 0.1) !important;
    border-color: rgba(13, 202, 240, 0.25) !important;
    color: #6edff6 !important;
}

[data-theme="dark"] .alert-info strong {
    color: #ffffff !important;
}

/* Progress bars */
[data-theme="dark"] .progress {
    background-color: #343a40;
}

/* Code tags */
[data-theme="dark"] code {
    color: #e685b5;
    background-color: rgba(255, 255, 255, 0.05);
    padding: 0.125rem 0.25rem;
    border-radius: 0.25rem;
}

/* Form check inputs */
[data-theme="dark"] .form-check-input {
    background-color: #343a40;
    border-color: #6c757d;
}

[data-theme="dark"] .form-check-input:checked {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
}

[data-theme="dark"] .form-check-label {
    color: var(--text-color);
}

/* Nav pills (inventory/settings tabs) */
[data-theme="dark"] .nav-pills .nav-link {
    color: var(--muted-text);
}

[data-theme="dark"] .nav-pills .nav-link.active {
    background-color: var(--primary-color);
    color: #ffffff;
}

/* Invoice card-header bg-primary in dark mode */
[data-theme="dark"] .card-header.bg-primary {
    background-color: #375a7f !important;
}

/* Card footer bg-light */
[data-theme="dark"] .card-footer.bg-light {
    background-color: var(--header-bg) !important;
    color: var(--text-color) !important;
}

/* Invoice dashed borders */
[data-theme="dark"] .border-bottom-custom {
    border-bottom-color: var(--border-color) !important;
}

/* Security tab cards with bg-light and border-0 */
[data-theme="dark"] .card.border-0.bg-light {
    background-color: var(--header-bg) !important;
    border: 1px solid var(--border-color) !important;
}

/* Pet Card Refinements */
.deceased-ribbon {
    position: absolute;
    top: 10px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.7);
    color: white;
    padding: 2px 15px;
    border-radius: 20px;
    font-size: 0.75rem;
    font-weight: bold;
    z-index: 10;
    white-space: nowrap;
    display: flex;
    align-items: center;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

.bi-rainbow {
    background: linear-gradient(to right, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #4b0082, #8b00ff);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    display: inline-block;
}

.deceased-icon-placeholder {
    width: 24px;
    display: inline-flex;
    justify-content: center;
    margin-right: 4px;
}

[data-theme="dark"] .card {
    background-color: #2a2c2e !important; /* Slightly lighter than background for pop */
    border-color: var(--border-color);
}

[data-theme="dark"] .card-header {
    background-color: #343a40 !important;
    border-bottom-color: var(--border-color);
    color: var(--text-color) !important;
}

[data-theme="dark"] .bg-light.card,
[data-theme="dark"] .bg-light {
    background-color: #2a2c2e !important;
    color: var(--text-color) !important;
}

/* Blind Link for Copyright */
.copyright-link {
    color: inherit !important;
    text-decoration: none !important;
}
.copyright-link:hover {
    text-decoration: underline !important;
}

/* Todo / Task List Padding */
.list-group-item {
    padding-left: 1.25rem !important;
    padding-right: 1.25rem !important;
}

[data-theme="dark"] .list-group-item {
    background-color: var(--card-bg);
    color: var(--text-color);
    border-color: var(--border-color);
}

/* Scheduler (FullCalendar) Dark Mode Support */
#calendar {
    background-color: #ffffff;
}

[data-theme="dark"] #calendar {
    background-color: var(--card-bg) !important;
}

[data-theme="dark"] .fc-toolbar,
[data-theme="dark"] .fc-header-toolbar {
    background-color: var(--card-bg) !important;
    color: var(--text-color);
    padding: 0; /* Remove extra padding that caused layout shift */
    margin-bottom: 1.5rem !important;
}

[data-theme="dark"] .fc-toolbar-title {
    color: var(--text-color) !important;
}

[data-theme="dark"] .fc-button {
    background-color: var(--card-bg) !important;
    border-color: var(--border-color) !important;
    color: var(--text-color) !important;
}

[data-theme="dark"] .fc-button:hover {
    background-color: var(--header-bg) !important;
}

[data-theme="dark"] .fc-button-active {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
}

/* Ensure light mode buttons look normal */
.fc .fc-button {
    background-color: #f8f9fa;
    border-color: #dee2e6;
    color: #212529;
}

.fc .fc-button-primary:not(:disabled).fc-button-active, 
.fc .fc-button-primary:not(:disabled):active {
    background-color: #e9ecef;
    border-color: #adb5bd;
    color: #212529;
}

.pet-card .card-body {
    min-height: 250px; /* Ensure uniform card heights */
    display: flex;
    flex-direction: column;
}

.pet-info-block {
    min-height: 48px; /* Accommodates 2 lines of text (Deceased + Date) */
    display: flex;
    flex-direction: column;
    justify-content: center;
}

[data-theme="dark"] .fc {
    --fc-page-bg-color: var(--bg-color);
    --fc-list-event-hover-bg-color: var(--header-bg);
    --fc-neutral-bg-color: var(--header-bg);
    --fc-border-color: rgba(255, 255, 255, 0.2); /* Boosted for calendar grid fractional pixel fix */
    --fc-button-text-color: var(--text-color);
    --fc-button-bg-color: var(--card-bg);
    --fc-button-border-color: var(--border-color);
    --fc-button-hover-bg-color: var(--header-bg);
    --fc-button-hover-border-color: var(--border-color);
    --fc-button-active-bg-color: var(--primary-color);
    --fc-button-active-border-color: var(--primary-color);
    --fc-event-bg-color: var(--primary-color);
    --fc-event-border-color: var(--primary-color);
    --fc-event-text-color: #ffffff;
}

[data-theme="dark"] .fc-theme-standard td, 
[data-theme="dark"] .fc-theme-standard th {
    border-color: rgba(255, 255, 255, 0.2) !important; /* Boosted for visibility */
}

[data-theme="dark"] .fc-col-header-cell {
    background-color: var(--header-bg);
}

[data-theme="dark"] .fc-day-today {
    background-color: rgba(55, 90, 127, 0.1) !important;
}

[data-theme="dark"] .fc-list-day-cushion {
    background-color: var(--header-bg);
}

[data-theme="dark"] .fc-timegrid-slot,
[data-theme="dark"] .fc-timegrid-axis,
[data-theme="dark"] .fc-scrollgrid,
[data-theme="dark"] .fc-day-grid,
[data-theme="dark"] .fc-timegrid-cols,
[data-theme="dark"] .fc-theme-standard td,
[data-theme="dark"] .fc-theme-standard th,
[data-theme="dark"] .fc-theme-standard .fc-scrollgrid {
    background-color: #212529 !important;
    border-color: rgba(255, 255, 255, 0.2) !important; /* WCAG 3:1 UI component ratio on #212529 */
}

/* Major timeslot dividers (hour marks) — solid, brighter */
[data-theme="dark"] .fc-timegrid-slot {
    border-bottom: 1px solid rgba(255, 255, 255, 0.2) !important;
}

/* Minor timeslot dividers (half-hour marks) — dotted for visual distinction */
[data-theme="dark"] .fc-timegrid-slot-minor {
    border-bottom: 1px dotted #5a6068 !important;
}

/* Day column vertical separators — box-shadow instead of border to survive border-collapse */
[data-theme="dark"] .fc-timegrid-col {
    box-shadow: inset -1px 0 0 #7b838b, inset 1px 0 0 #7b838b !important;
}

/* Header cells and daygrid cells also get vertical separators */
[data-theme="dark"] .fc-col-header-cell {
    box-shadow: inset -1px 0 0 #7b838b, inset 1px 0 0 #7b838b !important;
}

[data-theme="dark"] .fc-daygrid-day {
    box-shadow: inset -1px 0 0 #7b838b, inset 1px 0 0 #7b838b !important;
}

[data-theme="dark"] .fc-timegrid-event-harness-container {
    border-left: 1px solid #555555 !important;
}

[data-theme="dark"] .fc-timegrid-slot-label,
[data-theme="dark"] .fc-col-header-cell-cushion {
    color: #ffffff !important;
}

/* Fix for the white blocks and borders in main schedule window */
[data-theme="dark"] .fc .fc-scrollgrid-section-body td,
[data-theme="dark"] .fc-scrollgrid-section-header td,
[data-theme="dark"] .fc-scrollgrid-section-header th {
    background-color: #212529 !important;
}

[data-theme="dark"] .fc .fc-scrollgrid {
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
}

[data-theme="dark"] .fc-theme-standard {
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
}

[data-theme="dark"] .fc .fc-list-event:hover td {
    background-color: var(--header-bg) !important;
}

/* Report Issue Button visibility */
.btn-warning {
    color: #212529 !important;
}

[data-theme="dark"] .btn-warning {
    background-color: #ffc107;
    border-color: #ffc107;
}

/* Google Places Autocomplete dark mode */
[data-theme="dark"] .pac-container {
    background-color: #2a2c2e;
    border-color: #343a40;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}

[data-theme="dark"] .pac-item {
    background-color: #2a2c2e;
    color: #e9ecef;
    border-top-color: #343a40;
}

[data-theme="dark"] .pac-item:hover {
    background-color: #343a40;
}

[data-theme="dark"] .pac-item-query {
    color: #6ea8fe;
}

[data-theme="dark"] .pac-matched {
    color: #ffffff;
    font-weight: bold;
}

[data-theme="dark"] .pac-icon {
    filter: invert(0.8);
}

/* Print mode overrides */
@media print {
    /* Force light mode styles for print */
    body {
        background-color: #ffffff !important;
        color: #000000 !important;
    }
    .card {
        background-color: #ffffff !important;
        border: none !important;
        box-shadow: none !important;
    }
    [data-theme="dark"] .card-header, 
    [data-theme="dark"] .invoice-title, 
    [data-theme="dark"] .text-body {
        color: #000000 !important;
    }
    .card-header.bg-primary {
        background-color: #f8f9fa !important;
        border-bottom: 2px solid #000000 !important;
    }
    .text-muted {
        color: #444444 !important;
    }
    .d-print-none {
        display: none !important;
    }
    #sidebar, header, .navbar {
        display: none !important;
    }
    /* Ensure colors are printed if user allows background graphics */
    * {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
}
