/* Custom theme overrides for all color, background, and border classes */

/* Text color utilities */
.text-primary { color: var(--primary-color) !important; }
.text-secondary { color: var(--secondary-color) !important; }
.text-danger { color: var(--danger-color) !important; }
.text-success { color: var(--success-color) !important; }
.text-warning { color: var(--warning-color) !important; }
.text-info { color: var(--info-color) !important; }
.text-muted { color: var(--text-muted) !important; }
.text-light { color: var(--text-light) !important; }
.text-dark { color: var(--text-primary) !important; }

/* Background color utilities */
.bg-primary { background-color: var(--primary-color) !important; }
.bg-secondary { background-color: var(--secondary-color) !important; }
.bg-danger { background-color: var(--danger-color) !important; }
.bg-success { background-color: var(--success-color) !important; }
.bg-warning { background-color: var(--warning-color) !important; }
.bg-info { background-color: var(--info-color) !important; }
.bg-light { background-color: var(--content-bg) !important; }
.bg-dark { background-color: var(--navbar-bg) !important; }
.bg-muted { background-color: var(--text-muted) !important; }

/* Border color utilities */
.border-primary { border-color: var(--primary-color) !important; }
.border-secondary { border-color: var(--secondary-color) !important; }
.border-danger { border-color: var(--danger-color) !important; }
.border-success { border-color: var(--success-color) !important; }
.border-warning { border-color: var(--warning-color) !important; }
.border-info { border-color: var(--info-color) !important; }
.border-light { border-color: var(--border-light) !important; }
.border-dark { border-color: var(--border-color) !important; }

/* Remove all inline color/background/border styles in HTML and use only these classes or semantic classes in templates. */

/* Theme-aware table styling */
.table {
    color: var(--text-primary) !important;
    --bs-table-bg: var(--card-bg);
    --bs-table-striped-bg: var(--hover-bg);
    --bs-table-hover-bg: var(--hover-bg);
    background-color: var(--card-bg);
}

.table-striped > tbody > tr:nth-of-type(odd) > td,
.table-striped > tbody > tr:nth-of-type(odd) > th {
    --bs-table-accent-bg: var(--hover-bg);
    background-color: var(--hover-bg);
    color: var(--text-primary);
}

.table-striped > tbody > tr:nth-of-type(even) > td,
.table-striped > tbody > tr:nth-of-type(even) > th {
    background-color: var(--card-bg);
    color: var(--text-primary);
}

.table thead th {
    background-color: var(--content-bg);
    color: var(--text-primary);
    border-bottom-color: var(--border-color);
}

/* Override table-dark to use theme colors */
.table-dark,
.table-dark thead th {
    background-color: var(--content-bg) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color) !important;
}

.table-dark tbody td,
.table-dark tbody th {
    background-color: var(--card-bg) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color) !important;
}

.table tbody td,
.table tbody th {
    border-top-color: var(--border-color);
    color: var(--text-primary);
}

.table tfoot th,
.table tfoot td {
    background-color: var(--content-bg);
    color: var(--text-primary);
    border-top-color: var(--border-color);
}

/* Theme-aware button styling - consistent across all pages */
/* Base btn styles - only apply if not an outline or specific variant button */
.btn:not(.btn-outline):not(.btn-outline-secondary):not(.btn-outline-primary):not(.btn-outline-success):not(.btn-outline-danger):not(.btn-outline-warning):not(.btn-outline-info) {
    background-color: var(--primary-color);
    color: var(--text-light);
    border-color: var(--primary-color);
    transition: var(--transition-base);
}

.btn:not(.btn-outline):not(.btn-outline-secondary):not(.btn-outline-primary):not(.btn-outline-success):not(.btn-outline-danger):not(.btn-outline-warning):not(.btn-outline-info):hover {
    background-color: var(--primary-hover);
    border-color: var(--primary-hover);
    color: var(--text-light);
}

.btn-primary {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
    color: var(--text-light);
}

.btn-primary:hover {
    background-color: var(--primary-hover);
    border-color: var(--primary-hover);
    color: var(--text-light);
}

.btn-outline {
    background-color: transparent;
    border-color: var(--primary-color);
    color: var(--primary-color);
}

.btn-outline:hover {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
    color: var(--text-light);
}

.btn-outline-secondary {
    background-color: transparent !important;
    border-color: var(--secondary-color) !important;
    color: var(--secondary-color) !important;
}

.btn-outline-secondary:hover {
    background-color: var(--secondary-color) !important;
    border-color: var(--secondary-color) !important;
    color: var(--text-light) !important;
}

.btn-danger {
    background-color: var(--danger-color);
    border-color: var(--danger-color);
    color: var(--text-light);
}

.btn-danger:hover {
    background-color: var(--danger-hover);
    border-color: var(--danger-hover);
    color: var(--text-light);
}

.btn-success {
    background-color: var(--success-color);
    border-color: var(--success-color);
    color: var(--text-light);
}

.btn-success:hover {
    background-color: var(--success-hover);
    border-color: var(--success-hover);
    color: var(--text-light);
}

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

.btn-secondary:hover {
    background-color: var(--secondary-hover);
    border-color: var(--secondary-hover);
    color: var(--text-light);
}

.btn-link {
    color: var(--primary-color) !important;
    text-decoration: none;
}

.btn-link:hover {
    color: var(--primary-hover) !important;
    text-decoration: underline;
}

/* Wizard + encounter difficulty options: light bg when unselected; dark text always (works on yellow); solid FA icons */
.modal-difficulty-option.btn-outline-success,
.encounter-difficulty-option.btn-outline-success {
    border-color: var(--border-color);
    background-color: var(--hover-bg);
    color: var(--text-primary);
}
.modal-difficulty-option.btn-outline-success:hover,
.modal-difficulty-option.btn-outline-success.active,
.encounter-difficulty-option.btn-outline-success:hover,
.encounter-difficulty-option.btn-outline-success.active,
.encounter-difficulty-option.btn-outline-success.selected {
    background-color: var(--success-color);
    border-color: var(--success-color);
    color: var(--text-primary);
}
.modal-difficulty-option.btn-outline-warning,
.encounter-difficulty-option.btn-outline-warning {
    border-color: var(--border-color);
    background-color: var(--hover-bg);
    color: var(--text-primary);
}
.modal-difficulty-option.btn-outline-warning:hover,
.modal-difficulty-option.btn-outline-warning.active,
.encounter-difficulty-option.btn-outline-warning:hover,
.encounter-difficulty-option.btn-outline-warning.active,
.encounter-difficulty-option.btn-outline-warning.selected {
    background-color: var(--warning-color);
    border-color: var(--warning-color);
    color: var(--text-primary);
}
.modal-difficulty-option.btn-outline-danger,
.encounter-difficulty-option.btn-outline-danger {
    border-color: var(--border-color);
    background-color: var(--hover-bg);
    color: var(--text-primary);
}
.modal-difficulty-option.btn-outline-danger:hover,
.modal-difficulty-option.btn-outline-danger.active,
.encounter-difficulty-option.btn-outline-danger:hover,
.encounter-difficulty-option.btn-outline-danger.active,
.encounter-difficulty-option.btn-outline-danger.selected {
    background-color: var(--danger-color);
    border-color: var(--danger-color);
    color: var(--text-primary);
}
.modal-difficulty-option .text-muted,
.encounter-difficulty-option .text-muted {
    color: var(--text-primary) !important;
    opacity: 0.85;
}

/* Theme-aware breadcrumb styling - navigation links can use primary color */
.breadcrumb {
    background-color: transparent !important;
}

.breadcrumb-item a {
    color: var(--primary-color) !important;
    text-decoration: none;
    transition: var(--transition-base);
}

.breadcrumb-item a:hover {
    color: var(--primary-hover) !important;
    text-decoration: underline;
}

.breadcrumb-item.active {
    color: var(--text-primary) !important;
}

/* Professional, subtle link styling for content links */
/* This creates a more refined, less "blue everywhere" aesthetic */

/* Default content links - match text color, subtle underline on hover */
a:not(.btn):not(.nav-link):not(.dropdown-item):not(.breadcrumb-item a):not(.admin-nav a) {
    color: var(--text-primary);
    text-decoration: none;
    transition: var(--transition-base);
    border-bottom: 1px solid transparent;
}

a:not(.btn):not(.nav-link):not(.dropdown-item):not(.breadcrumb-item a):not(.admin-nav a):hover {
    color: var(--text-primary);
    border-bottom-color: currentColor;
    opacity: 0.85;
}

/* Emphasized content links (like monster names) - subtle primary accent on hover */
a.fw-bold:not(.btn):not(.nav-link):not(.dropdown-item) {
    color: var(--text-primary);
    font-weight: 600;
}

a.fw-bold:not(.btn):not(.nav-link):not(.dropdown-item):hover {
    color: var(--primary-color);
    border-bottom-color: var(--primary-color);
    opacity: 1;
}

/* Filter/action links in tables - muted by default, primary on hover */
.table a:not(.btn):not(.fw-bold) {
    color: var(--text-secondary);
}

.table a:not(.btn):not(.fw-bold):hover {
    color: var(--primary-color);
    border-bottom-color: var(--primary-color);
    opacity: 1;
}

/* Links with text-decoration-none class (filter links) - very subtle */
a.text-decoration-none:not(.btn):not(.nav-link):not(.dropdown-item) {
    color: var(--text-secondary);
    border-bottom: none;
}

a.text-decoration-none:not(.btn):not(.nav-link):not(.dropdown-item):hover {
    color: var(--primary-color);
    opacity: 1;
}

/* Colored card bodies - allow bg-* classes to override theme-card-body background */
.card.bg-primary .card-body,
.card.bg-success .card-body,
.card.bg-info .card-body,
.card.bg-danger .card-body {
    background-color: inherit !important;
}

/* Warning card needs dark text for contrast with yellow background */
.card.bg-warning .card-body {
    background-color: inherit !important;
    color: var(--text-primary) !important;
}

/* Ensure all cards use theme-aware styling by default */
.card:not(.bg-primary):not(.bg-success):not(.bg-info):not(.bg-danger):not(.bg-warning) {
    background-color: var(--card-bg);
    color: var(--text-primary);
    border-color: var(--border-color);
}

.card-header:not(.bg-primary):not(.bg-success):not(.bg-info):not(.bg-danger):not(.bg-warning) {
    background-color: var(--content-bg);
    color: var(--text-primary);
    border-bottom-color: var(--border-color);
}

.card-body:not(.bg-primary):not(.bg-success):not(.bg-info):not(.bg-danger):not(.bg-warning) {
    background-color: var(--card-bg);
    color: var(--text-primary);
}

/* Navbar theme-aware styling */
.navbar-dark .navbar-brand,
.navbar-dark .navbar-brand:hover,
.navbar-dark .navbar-brand:focus {
    color: var(--text-light) !important;
}

.navbar-dark .navbar-brand i {
    color: var(--text-light) !important;
}

.navbar-dark .nav-link {
    color: rgba(255, 255, 255, 0.85) !important;
}

.navbar-dark .nav-link:hover,
.navbar-dark .nav-link:focus {
    color: var(--text-light) !important;
}
