:root {
  --bg-color: #ffffff;
  --text-color: #000000;
  --navbar-bg: #f8f9fa;
  --navbar-text: #212529;
  --dropdown-bg: #ffffff;
  --dropdown-text: #212529;
  --badge-bg: #6c757d;
  --badge-text: #ffffff;
  --table-bg: #ffffff;
  --table-text: #212529;
  --table-header-bg: #e9ecef;
  --table-border-color: #dee2e6;
  --table-stripe-bg: rgba(0, 0, 0, 0.03);
  --table-hover-bg: rgba(0, 0, 0, 0.05);
  --battery-up-color: #198754;
  --battery-down-color: #dc3545;
  --battery-same-color: #212529;
  --input-bg: #ffffff;
  --input-text: #000000;
  --input-placeholder: #6c757d;
  --card-bg: #ffffff;
  --form-help-color: #6c757d;
  --autofill-glow: rgba(0, 123, 255, 0.25);
  --modal-success-bg: #d4edda;
  --modal-alert-bg: #fff3cd;
  --modal-error-bg: #f8d7da;
  --modal-info-bg: #d1ecf1;
}

[data-theme="dark"] {
  --bg-color: #121212;
  --text-color: #f5f5f5;
  --navbar-bg: #1f1f1f;
  --navbar-text: #f1f1f1;
  --dropdown-bg: #2a2a2a;
  --dropdown-text: #e0e0e0;
  --badge-bg: #444;
  --badge-text: #f1f1f1;
  --table-bg: #1e1e1e;
  --table-text: #f1f1f1;
  --table-header-bg: #2c2c2c;
  --table-border-color: #444;
  --table-stripe-bg: rgba(255, 255, 255, 0.03);
  --table-hover-bg: rgba(255, 255, 255, 0.05);
  --battery-up-color: #80ff80;
  --battery-down-color: #ff8080;
  --battery-same-color: #cccccc;
  --input-bg: #2a2a2a;
  --input-text: #f1f1f1;
  --input-placeholder: #aaaaaa;
  --card-bg: #1e1e1e;
  --form-help-color: #cccccc;
  --autofill-glow: rgba(0, 123, 255, 0.15);
  --modal-success-bg: #264d3c;
  --modal-alert-bg: #4d4426;
  --modal-error-bg: #4d2c2c;
  --modal-info-bg: #264d4d;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
  transition: background-color 0.3s ease, color 0.3s ease;
}

.navbar {
  background-color: var(--navbar-bg);
  color: var(--navbar-text);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  transition: background-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease;
}

[data-theme="dark"] .navbar {
  box-shadow: 0 2px 6px rgba(255, 255, 255, 0.05);
}

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

.navbar .nav-link:hover,
.navbar .navbar-brand:hover {
  opacity: 0.8;
}

.navbar-toggler {
  border: none;
}

.navbar-toggler-icon {
  background-image: none;
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='currentColor' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='currentColor' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
  background-color: var(--navbar-text);
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
  width: 1.5em;
  height: 1.5em;
}

.dropdown-menu {
  background-color: var(--dropdown-bg);
  color: var(--dropdown-text);
  border: 1px solid var(--table-border-color);
  z-index: 1000;
  transition: background-color 0.3s ease, color 0.3s ease;
}

.dropdown-item {
  color: var(--dropdown-text);
}

.dropdown-item:hover {
  background-color: rgba(255, 255, 255, 0.1);
  color: var(--dropdown-text);
}

.badge.bg-secondary,
.badge.bg-dark,
.badge.bg-light {
  background-color: var(--badge-bg);
  color: var(--badge-text);
  transition: background-color 0.3s ease, color 0.3s ease;
}

.table {
  background-color: var(--table-bg) !important;
  color: var(--table-text) !important;
  border-color: var(--table-border-color) !important;
  border-radius: 6px;
  overflow: hidden;
  transition: background-color 0.3s ease, color 0.3s ease;
}

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

.table thead {
  background-color: var(--table-header-bg) !important;
  color: var(--table-text) !important;
}

.table-secondary {
  background-color: var(--table-header-bg) !important;
  color: var(--table-text) !important;
}

.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: var(--table-stripe-bg) !important;
}

.table-hover tbody tr:hover {
  background-color: var(--table-hover-bg) !important;
}

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

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

.text-dark {
  color: var(--battery-same-color) !important;
}

input[type="text"],
input[type="number"],
input[type="email"],
input[type="file"],
input[type="password"],
textarea,
select {
  background-color: var(--input-bg);
  color: var(--input-text);
  border: 1px solid var(--table-border-color);
  padding: 0.5em;
  border-radius: 4px;
  width: 100%;
  box-shadow: 0 0 5px var(--autofill-glow);
  transition: background-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease;
}

input:focus,
textarea:focus,
select:focus {
  box-shadow: 0 0 8px var(--autofill-glow);
  outline: none;
}

input::placeholder,
textarea::placeholder {
  color: var(--input-placeholder);
}

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
  background-color: var(--input-bg) !important;
  color: var(--input-text) !important;
  -webkit-text-fill-color: var(--input-text) !important;
  -webkit-box-shadow: 0 0 0px 1000px var(--input-bg) inset, 0 0 5px var(--autofill-glow) !important;
  transition: background-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease;
}

.form-text,
.text-muted {
  color: var(--form-help-color) !important;
  transition: color 0.3s ease;
}

.card {
  background-color: var(--card-bg);
  color: var(--text-color);
  border: 1px solid var(--table-border-color);
  border-radius: 8px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  transition: background-color 0.3s ease, color 0.3s ease;
}

[data-theme="dark"] .card {
  box-shadow: 0 0 10px rgba(255, 255, 255, 0.05);
}

.card .text-danger {
  color: var(--battery-down-color);
}

.modal-success {
  background-color: var(--modal-success-bg);
  color: var(--text-color);
}

.modal-warning {
  background-color: var(--modal-alert-bg);
  color: var(--text-color);
}

.modal-danger {
  background-color: var(--modal-error-bg);
  color: var(--text-color);
}

.modal-info {
  background-color: var(--modal-info-bg);
  color: var(--text-color);
}

.modal-content.modal-success,
.modal-content.modal-warning,
.modal-content.modal-danger,
.modal-content.modal-info {
  border-radius: 8px;
  padding: 1rem;
}