/* TurboGears flash bootstrap look */
#flash > div {
  padding: 8px 35px 8px 14px;
  margin-bottom: 20px;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
  background-color: #fcf8e3;
  border: 1px solid #fbeed5;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  color: #c09853;
}

#flash > .ok {
  color: #468847;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}

#flash > .error {
  color: #b94a48;
  background-color: #f2dede;
  border-color: #eed3d7;
}

#flash > .info {
  color: #3a87ad;
  background-color: #d9edf7;
  border-color: #bce8f1;
}

/* Footer styling */
.footer {
  margin-top: 15px;
  padding: 7px 30px;
  border-top: 1px solid #e5e5e5;
}

@media screen and (min-width: 600px) {
  .footer {
    display: flex;
    align-items: center;
  }
}

.footer p {
  margin-bottom: 0;
  color: #555;
}

/* The switch - the box around the slider */
.switch {
  position: relative;
  display: inline-block;
  width: 30px;
  min-width: 30px;
  height: 17px;
}

/* Hide default HTML checkbox */
.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

/* The slider */
.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  -webkit-transition: 0.4s;
  transition: 0.4s;
}

.slider:before {
  position: absolute;
  content: "";
  height: 13px;
  width: 13px;
  left: 2px;
  bottom: 2px;
  background-color: white;
  -webkit-transition: 0.4s;
  transition: 0.4s;
}

input:checked + .slider {
  background-color: #5cb85c;
}

input:focus + .slider {
  box-shadow: 0 0 1px #5cb85c;
}

input:checked + .slider:before {
  -webkit-transform: translateX(13px);
  -ms-transform: translateX(13px);
  transform: translateX(13px);
}

/* Rounded sliders */
.slider.round {
  border-radius: 17px;
}

.slider.round:before {
  border-radius: 50%;
}
.flex-center {
  display: flex;
  align-items: center;
}

.navbar-brand > img {
  display: inline;
}

blockquote {
  font-size: inherit;
}

.spinner {
  animation: spin 1.5s infinite linear;
}

@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

.loading {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.3);
  align-items: center;
  justify-content: center;
  color: #ffff;
  z-index: 11;
  flex-direction: column;
}

.loading.show {
  display: flex;
}

@media (prefers-color-scheme: dark) {
  /* Global dark mode background and text */
  body {
    background-color: #121212;
    color: #e0e0e0;
  }

  /* Navbar */
  .navbar {
    background-color: #222;
    border-color: #080808;
  }

  /* Flash messages overrides */
  #flash > div {
    background-color: #333;
    border-color: #444;
    color: #e0e0e0;
  }
  #flash > .ok {
    background-color: #2e7d32;
    border-color: #27632a;
    color: #e0e0e0;
  }
  #flash > .error {
    background-color: #8a2b2b;
    border-color: #8a2b2b;
    color: #e0e0e0;
  }
  #flash > .info {
    background-color: #1565c0;
    border-color: #0d47a1;
    color: #e0e0e0;
  }

  /* Footer styling */
  .footer {
    border-top-color: #444;
    color: #e0e0e0;
  }

  /* Fix dark mode color for footer p */
  .footer p {
    color: #e0e0e0;
  }

  /* Switch slider adjustments (optional) */
  .slider {
    background-color: #555;
  }
  input:checked + .slider {
    background-color: #5cb85c;
  }

  /* Navbar link hover for dark mode with important */
  .navbar-nav > li > a:hover,
  .navbar-nav > li > a:focus {
    background-color: #444;
    color: #fff;
  }

  /* Dropdown menu link hover for dark mode with important */
  .dropdown-menu > li > a:hover,
  .dropdown-menu > li > a:focus {
    background-color: #444;
    color: #fff;
  }

  /* Base dropdown menu link styling in dark mode */
  .dropdown-menu > li > a {
    color: #e0e0e0;
  }
  .dropdown-menu > li.active > a,
  .dropdown-menu > li.active > a:hover,
  .dropdown-menu > li.active > a:focus {
    background-color: #444;
  }

  /* Table-striped dark mode support */
  .table-striped tbody tr:nth-of-type(odd) {
    background-color: #2a2a2a;
  }

  /* Fix dark mode support for navbar-nav active with important */
  .navbar-default .navbar-nav > li.active > a,
  .navbar-default .navbar-nav > li.active > a:hover,
  .navbar-default .navbar-nav > li.active > a:focus {
    background-color: #444;
    color: #fff;
  }

  /* Navbar default link color in dark mode */
  .navbar-default .navbar-nav > li > a {
    color: #e0e0e0;
  }

  /* Navbar brand dark mode support */
  .navbar-default .navbar-brand,
  .navbar-default .navbar-brand:hover,
  .navbar-default .navbar-brand:focus {
    color: #e0e0e0;
  }

  /* Navbar open background for dark mode */
  .navbar-default .navbar-collapse.in {
    background-color: #222;
  }

  /* Navbar open state dark mode support */
  .navbar-default .navbar-nav > .open > a,
  .navbar-default .navbar-nav > .open > a:hover,
  .navbar-default .navbar-nav > .open > a:focus {
    background-color: #444;
    color: #fff;
  }

  /* Navbar toggle dark mode support */
  .navbar-default .navbar-toggle {
    background-color: #222;
    border-color: #444;
  }
  .navbar-default .navbar-toggle .icon-bar {
    background-color: #e0e0e0;
  }

  /* Navbar toggle focus state with different styling in dark mode */
  .navbar-default .navbar-toggle:focus {
    background-color: #111; /* darker than normal state (#222) */
    border-color: #666; /* different border color */
    outline: none;
  }

  /* Dropdown menu dark mode support */
  .navbar-default .dropdown-menu {
    background-color: #222;
    border: 1px solid #444;
    color: #e0e0e0;
  }

  /* Form-control dark mode support */
  .form-control {
    background-color: #222;
    border: 1px solid #444;
    color: #e0e0e0;
  }
  .form-control[disabled] {
    background-color: #1a1a1a;
    color: #888;
  }

  .form-control:focus {
    background-color: #222;
    border-color: #666;
    box-shadow: none;
  }

  /* Dark mode support for input[type="button"] */
  input[type="button"] {
    background-color: #222;
    color: #e0e0e0;
    border: 1px solid #444;
  }
  input[type="button"]:hover,
  input[type="button"]:focus {
    background-color: #444;
    color: #fff;
  }

  /* Alert-info dark mode support - adjusted colors */
  .alert-info {
    background-color: #0e293c; /* darker blue background */
    border-color: #0b2030; /* darker blue border */
    color: #7fb3da; /* lighter blue text */
  }

  /* Alert-warning dark mode support */
  .alert-warning {
    background-color: #5c4e12; /* dark yellow background */
    border-color: #4e4210; /* dark border */
    color: #f9d36b; /* light yellow text */
  }
  .alert-warning .label-warning {
    background-color: #937c1a;
  }

  /* Alert-success dark mode support */
  .alert-success {
    background-color: #1d4d29; /* dark green background */
    border-color: #194c25; /* dark green border */
    color: #a8d5ba; /* light green text */
  }

  /* Alert-danger dark mode support */
  .alert-danger {
    background-color: #4a1414; /* dark red background */
    border-color: #421212; /* dark red border */
    color: #f2a6a6; /* light red text */
  }

  /* Code element dark mode support */
  code {
    background-color: #2a2a2a;
    color: #e0e0e0;
  }

  /* Panel-primary dark mode support */
  .panel-primary {
    background-color: #222;
    border-color: #1a237e;
    color: #e0e0e0;
  }
  .panel-primary > .panel-heading {
    background-color: #1a237e;
    border-color: #1a237e;
    color: #fff;
  }
  .panel-primary > .panel-body {
    background-color: #222;
    color: #e0e0e0;
  }

  /* Panel-warning dark mode support */
  .panel-warning {
    background-color: #3e310d; /* darker yellow background */
    border-color: #36290a; /* darker yellow border */
    color: #f0c36d; /* light gold text */
  }
  .panel-warning > .panel-heading {
    background-color: #36290a;
    border-color: #36290a;
    color: #fff;
  }
  .panel-warning > .panel-body {
    background-color: #3e310d;
    color: #f0c36d;
  }

  /* Panel-info dark mode support */
  .panel-info {
    background-color: #0b3d56; /* dark blue-teal background */
    border-color: #093449; /* dark teal border */
    color: #b3d7e8; /* light cyan text */
  }
  .panel-info > .panel-heading {
    background-color: #093449;
    border-color: #093449;
    color: #fff;
  }
  .panel-info > .panel-body {
    background-color: #0b3d56;
    color: #b3d7e8;
  }

  /* Panel-danger dark mode support */
  .panel-danger {
    background-color: #222;
    border-color: #4a1414;
    color: #f2a6a6;
  }
  .panel-danger > .panel-heading {
    background-color: #4a1414;
    border-color: #4a1414;
    color: #fff;
  }
  .panel-danger > .panel-body {
    background-color: #222;
    color: #f2a6a6;
  }

  /* Panel-success dark mode support */
  .panel-success {
    background-color: #222;
    border-color: #1d4d29;
    color: #a8d5ba;
  }
  .panel-success > .panel-heading {
    background-color: #1d4d29;
    border-color: #1d4d29;
    color: #fff;
  }
  .panel-success > .panel-body {
    background-color: #222;
    color: #a8d5ba;
  }

  /* Bootstrap label dark mode support */
  .label,
  .label-default {
    background-color: #444;
    color: #e0e0e0;
    border: 1px solid #555;
  }
  .label-primary {
    background-color: #1a237e;
    color: #fff;
    border: 1px solid #1a237e;
  }
  .label-success {
    background-color: #1d4d29;
    color: #a8d5ba;
    border: 1px solid #194c25;
  }
  .label-info {
    background-color: #0b3d56;
    color: #b3d7e8;
    border: 1px solid #093449;
  }
  .label-warning {
    background-color: #5c4e12;
    color: #f9d36b;
    border: 1px solid #4e4210;
  }
  .label-danger {
    background-color: #4a1414;
    color: #f2a6a6;
    border: 1px solid #421212;
  }

  /* Bootstrap button dark mode support */
  .btn,
  .btn[disabled]:hover,
  .btn[disabled]:focus,
  .btn[disabled]:active,
  .btn[disabled]:active:hover,
  .btn[disabled]:active:focus {
    background-color: #222;
    color: #e0e0e0;
    border: 1px solid #444;
  }
  .btn:hover,
  .btn:focus,
  .btn:active,
  .btn:active:hover,
  .btn:active:focus {
    background-color: #444;
    color: #fff;
    border-color: #666;
  }

  .btn-default,
  .btn-default[disabled]:hover,
  .btn-default[disabled]:focus,
  .btn-default[disabled]:active,
  .btn-default[disabled]:active:hover,
  .btn-default[disabled]:active:focus {
    background-color: #222;
    color: #e0e0e0;
    border: 1px solid #444;
  }
  .btn-default:hover,
  .btn-default:focus,
  .btn-default:active,
  .btn-default:active:hover {
    background-color: #111;
    color: #fff;
    border-color: #666;
  }
  .btn-outline-secondary,
  .btn-outline-secondary[disabled]:hover,
  .btn-outline-secondary[disabled]:focus,
  .btn-outline-secondary[disabled]:active,
  .btn-outline-secondary[disabled]:active:hover {
    background-color: #222;
    color: #e0e0e0;
    border: 1px solid #444;
  }
  .btn-outline-secondary:hover,
  .btn-outline-secondary:focus,
  .btn-outline-secondary:active,
  .btn-outline-secondary:active:hover {
    background-color: #444;
    color: #fff;
    border-color: #666;
  }
  .btn-primary,
  .btn-primary[disabled]:hover,
  .btn-primary[disabled]:focus,
  .btn-primary[disabled]:active,
  .btn-primary[disabled]:active:hover,
  .btn-primary[disabled]:active:focus {
    background-color: #1a237e;
    color: #fff;
    border: 1px solid #1a237e;
  }
  .btn-primary:hover,
  .btn-primary:focus,
  .btn-primary:active,
  .btn-primary:active:hover,
  .btn-primary:active:focus {
    background-color: #161e66; /* slightly darker primary */
    border-color: #141a60;
    color: #fff;
  }
  .btn-success,
  .btn-success[disabled]:hover,
  .btn-success[disabled]:focus,
  .btn-success[disabled]:active,
  .btn-success[disabled]:active:hover,
  .btn-success[disabled]:active:focus {
    background-color: #1d4d29;
    color: #a8d5ba;
    border: 1px solid #194c25;
  }
  .btn-success:hover,
  .btn-success:focus,
  .btn-success:active,
  .btn-success:active:hover,
  .btn-success:active:focus {
    background-color: #173d22; /* slightly darker success */
    border-color: #153a1f;
    color: #fff;
  }
  .btn-info,
  .btn-info[disabled]:hover,
  .btn-info[disabled]:focus,
  .btn-info[disabled]:active,
  .btn-info[disabled]:active:hover {
    background-color: #0b3d56;
    color: #b3d7e8;
    border: 1px solid #093449;
  }
  .btn-info:hover,
  .btn-info:focus,
  .btn-info:active,
  .btn-info:active:hover {
    background-color: #092b45; /* slightly darker info */
    border-color: #08263d;
    color: #fff;
  }
  .btn-warning,
  .btn-warning[disabled]:hover,
  .btn-warning[disabled]:focus,
  .btn-warning[disabled]:active,
  .btn-warning[disabled]:active:hover {
    background-color: #5c4e12;
    color: #f9d36b;
    border: 1px solid #4e4210;
  }
  .btn-warning:hover,
  .btn-warning:focus,
  .btn-warning:active,
  .btn-warning:active:hover,
  .btn-warning:active:focus {
    background-color: #4e3f0f; /* slightly darker warning */
    border-color: #483a0d;
    color: #fff;
  }
  .btn-danger,
  .btn-danger[disabled]:hover,
  .btn-danger[disabled]:focus,
  .btn-danger[disabled]:active,
  .btn-danger[disabled]:active:hover {
    background-color: #4a1414;
    color: #f2a6a6;
    border: 1px solid #421212;
  }
  .btn-danger:hover,
  .btn-danger:focus,
  .btn-danger:active,
  .btn-danger:active:hover,
  .btn-danger:active:focus {
    background-color: #3c0e0e; /* slightly darker danger */
    border-color: #360c0c;
    color: #fff;
  }

  /* Modal dark mode support */
  .modal-content {
    background-color: #222;
    color: #e0e0e0;
    border: 1px solid #444;
  }
  .modal-header,
  .modal-footer {
    border-color: #444;
  }
  .modal-title {
    color: #fff;
  }

  /* Close button dark mode support */
  .close {
    color: #e0e0e0;
    opacity: 0.8;
  }
  .close:hover,
  .close:focus {
    color: #fff;
    opacity: 1;
  }

  /* Add dark mode support for help-block */
  .help-block {
    color: #e0e0e0;
  }

  /* Add dark mode support for blockquote */
  blockquote {
    border-left-color: #444;
    color: #e0e0e0;
  }

  /* Add dark mode support for bootstrap a tag */
  a:not([class]) {
    color: #78a9ff;
  }

  /* Add dark mode support for bootstrap a tag focus and hover state */
  a:hover,
  a:focus {
    color: #93c2ff;
  }

  /* Combine dark mode support for select2 components */
  .select2,
  .select2-container,
  .select2-container--default .select2-selection--single,
  .select2-container--default .select2-selection--multiple,
  .select2-container--default .select2-dropdown,
  .select2-container--default .select2-search--dropdown .select2-search__field,
  .select2-container--default
    .select2-selection--single
    .select2-selection__rendered {
    background-color: #222;
    color: #e0e0e0;
  }

  /* Add dark mode support for highlighted and selected options in select2 */
  .select2-container--default .select2-results__option[aria-selected="true"],
  .select2-container--default
    .select2-results__option--highlighted[aria-selected] {
    background-color: #444;
    color: #fff;
  }
  .select2-container .select2-selection--single {
    height: 30px;
  }

  /* Dark mode support for pagination */
  .pagination {
    background-color: #222;
  }
  .pagination > li > a,
  .pagination > li > span {
    color: #e0e0e0;
    border: 1px solid #444;
    background-color: transparent;
  }
  .pagination > li > a:hover,
  .pagination > li > span:hover,
  .pagination > li > a:focus,
  .pagination > li > span:focus {
    background-color: #666;
    color: #fff;
    border-color: #666;
  }
  .pagination > li.active > a,
  .pagination > li.active > span {
    background-color: #444;
    color: #fff;
    border-color: #444;
  }
  .pagination > li.active > a:hover,
  .pagination > li.active > span:hover,
  .pagination > li.active > a:focus,
  .pagination > li.active > span:focus {
    background-color: #555;
    border-color: #555;
    color: #fff;
  }

  /* Dark mode support for .nav > li > a:hover and .nav > li > a:focus */
  .navbar-default .navbar-nav > li > a:hover,
  .navbar-default .navbar-nav > li > a:focus {
    background-color: #444;
    color: #fff;
  }

  .nav > li > a:hover,
  .nav > li > a:focus {
    background-color: #444;
  }

  /* Add dark mode support for nav-tabs */
  .nav-tabs {
    border-bottom: 1px solid #444;
  }
  .nav-tabs > li > a {
    background-color: #222;
    border: 1px solid transparent;
  }
  .nav-tabs > li.active > a,
  .nav-tabs > li.active > a:hover,
  .nav-tabs > li.active > a:focus {
    background-color: #121212;
    color: #fff;
    border: 1px solid #444;
    border-bottom-color: transparent;
  }
  .nav-tabs > li > a:hover {
    background-color: #121212;
    border-color: #444;
  }

  /* Dark mode support for .list-group-item */
  a.list-group-item {
    background-color: #222;
    color: #e0e0e0;
    border: 1px solid #444;
  }
  a.list-group-item:hover,
  a.list-group-item:focus {
    background-color: #444;
    color: #fff;
  }

  /* Add dark mode support for .list-group-item-heading */
  a.list-group-item .list-group-item-heading {
    color: #e0e0e0;
    background-color: transparent;
  }
}
