/* ==========================================================================
   Catppuccin Theme Variables
   Latte (light) = default, Mocha (dark) = [data-theme="dark"]
   ========================================================================== */

:root {
	--ctp-rosewater: #dc8a78;
	--ctp-flamingo:  #dd7878;
	--ctp-pink:      #ea76cb;
	--ctp-mauve:     #8839ef;
	--ctp-red:       #d20f39;
	--ctp-maroon:    #e64553;
	--ctp-peach:     #fe640b;
	--ctp-yellow:    #df8e1d;
	--ctp-green:     #40a02b;
	--ctp-teal:      #179299;
	--ctp-sky:       #04a5e5;
	--ctp-sapphire:  #209fb5;
	--ctp-blue:      #1e66f5;
	--ctp-lavender:  #7287fd;

	--ctp-text:      #4c4f69;
	--ctp-subtext1:  #5c5f77;
	--ctp-subtext0:  #6c6f85;
	--ctp-overlay2:  #7c7f93;
	--ctp-overlay1:  #8c8fa1;
	--ctp-overlay0:  #9ca0b0;
	--ctp-surface2:  #acb0be;
	--ctp-surface1:  #bcc0cc;
	--ctp-surface0:  #ccd0da;
	--ctp-base:      #eff1f5;
	--ctp-mantle:    #e6e9ef;
	--ctp-crust:     #dce0e8;

	--ctp-shadow: rgba(76, 79, 105, 0.15);
}

[data-theme="dark"] {
	--ctp-rosewater: #f5e0dc;
	--ctp-flamingo:  #f2cdcd;
	--ctp-pink:      #f5c2e7;
	--ctp-mauve:     #cba6f7;
	--ctp-red:       #f38ba8;
	--ctp-maroon:    #eba0ac;
	--ctp-peach:     #fab387;
	--ctp-yellow:    #f9e2af;
	--ctp-green:     #a6e3a1;
	--ctp-teal:      #94e2d5;
	--ctp-sky:       #89dceb;
	--ctp-sapphire:  #74c7ec;
	--ctp-blue:      #89b4fa;
	--ctp-lavender:  #b4befe;

	--ctp-text:      #cdd6f4;
	--ctp-subtext1:  #bac2de;
	--ctp-subtext0:  #a6adc8;
	--ctp-overlay2:  #9399b2;
	--ctp-overlay1:  #7f849c;
	--ctp-overlay0:  #6c7086;
	--ctp-surface2:  #585b70;
	--ctp-surface1:  #45475a;
	--ctp-surface0:  #313244;
	--ctp-base:      #1e1e2e;
	--ctp-mantle:    #181825;
	--ctp-crust:     #11111b;

	--ctp-shadow: rgba(0, 0, 0, 0.35);
}

@media (prefers-color-scheme: dark) {
	:root:not([data-theme]) {
		--ctp-rosewater: #f5e0dc;
		--ctp-flamingo:  #f2cdcd;
		--ctp-pink:      #f5c2e7;
		--ctp-mauve:     #cba6f7;
		--ctp-red:       #f38ba8;
		--ctp-maroon:    #eba0ac;
		--ctp-peach:     #fab387;
		--ctp-yellow:    #f9e2af;
		--ctp-green:     #a6e3a1;
		--ctp-teal:      #94e2d5;
		--ctp-sky:       #89dceb;
		--ctp-sapphire:  #74c7ec;
		--ctp-blue:      #89b4fa;
		--ctp-lavender:  #b4befe;

		--ctp-text:      #cdd6f4;
		--ctp-subtext1:  #bac2de;
		--ctp-subtext0:  #a6adc8;
		--ctp-overlay2:  #9399b2;
		--ctp-overlay1:  #7f849c;
		--ctp-overlay0:  #6c7086;
		--ctp-surface2:  #585b70;
		--ctp-surface1:  #45475a;
		--ctp-surface0:  #313244;
		--ctp-base:      #1e1e2e;
		--ctp-mantle:    #181825;
		--ctp-crust:     #11111b;

		--ctp-shadow: rgba(0, 0, 0, 0.35);
	}
}

/* ==========================================================================
   Base
   ========================================================================== */

body {
	background-color: var(--ctp-base);
	color: var(--ctp-text);
	font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
	font-size: 13px;
}

a {
	color: var(--ctp-blue);
}
a:hover, a:focus {
	color: var(--ctp-sapphire);
}

h3 {
	margin-top: 10px;
	margin-bottom: 20px;
	color: var(--ctp-text);
}

code {
	color: var(--ctp-mauve);
	background-color: var(--ctp-mantle);
}

hr {
	border-top-color: var(--ctp-surface0);
}

.text-muted {
	color: var(--ctp-subtext0);
}

/* ==========================================================================
   Navbar
   ========================================================================== */

.navbar-default {
	background-color: var(--ctp-mantle);
	border: none;
	border-radius: 0;
	margin-bottom: 0;
	border-bottom: 1px solid var(--ctp-surface0);
}
.navbar-default .navbar-brand {
	color: var(--ctp-text);
	font-size: 18px;
	font-weight: 600;
}
.navbar-default .navbar-brand:hover {
	color: var(--ctp-blue);
}
.navbar-default .navbar-brand .fa {
	margin-right: 6px;
}
.navbar-default .navbar-text {
	color: var(--ctp-subtext0);
}
.navbar-default .navbar-link {
	color: var(--ctp-subtext1);
}
.navbar-default .navbar-link:hover {
	color: var(--ctp-blue);
}

/* ==========================================================================
   Theme Toggle
   ========================================================================== */

.theme-toggle {
	cursor: pointer;
	font-size: 15px;
	vertical-align: middle;
}

.login-theme-toggle {
	position: absolute;
	top: 20px;
	right: 20px;
	color: var(--ctp-overlay1);
	font-size: 18px;
	cursor: pointer;
	z-index: 10;
	transition: color 0.2s;
}
.login-theme-toggle:hover {
	color: var(--ctp-text);
	text-decoration: none;
}

/* ==========================================================================
   DataTables
   ========================================================================== */

table.dataTable thead th {
	background-color: var(--ctp-surface0);
	color: var(--ctp-text);
	font-weight: 600;
	font-size: 12px;
	border-bottom: none;
}
table.dataTable thead th:first-child {
	border-radius: 3px 0 0 0;
}
table.dataTable thead th:last-child {
	border-radius: 0 3px 0 0;
}
.dt-actions {
	text-align: center;
	white-space: nowrap;
}
.dt-actions .btn-group .btn {
	margin-right: 2px;
}

/* Path text truncation */
.path-text {
	display: inline-block;
	max-width: 280px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	vertical-align: bottom;
}

/* Filters */
#dt-tbl-filters {
	margin-bottom: 15px;
}
#dt-tbl-filters .form-inline {
	display: flex;
	gap: 10px;
}
#dt-tbl-filters select.form-control {
	min-width: 150px;
}

/* ==========================================================================
   Bootstrap Overrides – Tables
   ========================================================================== */

.table {
	color: var(--ctp-text);
}
.table > thead > tr > th,
.table > thead > tr > td {
	border-bottom-color: var(--ctp-surface1);
}
.table > tbody > tr > td,
.table > tbody > tr > th,
.table > tfoot > tr > td,
.table > tfoot > tr > th {
	border-top-color: var(--ctp-surface0);
}
.table-bordered {
	border-color: var(--ctp-surface0);
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tbody > tr > th {
	border-color: var(--ctp-surface0);
}
.table-striped > tbody > tr:nth-of-type(odd) {
	background-color: var(--ctp-mantle);
}
.table-hover > tbody > tr:hover {
	background-color: var(--ctp-surface0);
}

/* ==========================================================================
   Bootstrap Overrides – Panels
   ========================================================================== */

.panel {
	background-color: var(--ctp-base);
	border-color: var(--ctp-surface0);
}
.panel-default {
	border-color: var(--ctp-surface0);
}
.panel-default > .panel-heading {
	background-color: var(--ctp-mantle);
	color: var(--ctp-text);
	border-bottom-color: var(--ctp-surface0);
}
.panel-body {
	background-color: var(--ctp-base);
}
.panel-danger {
	border-color: var(--ctp-red);
}
.panel-danger > .panel-heading {
	background-color: var(--ctp-red);
	color: var(--ctp-base);
	border-color: var(--ctp-red);
}
.panel-warning {
	border-color: var(--ctp-yellow);
}
.panel-warning > .panel-heading {
	background-color: var(--ctp-yellow);
	color: var(--ctp-crust);
	border-color: var(--ctp-yellow);
}
.panel-success {
	border-color: var(--ctp-green);
}
.panel-success > .panel-heading {
	background-color: var(--ctp-green);
	color: var(--ctp-crust);
	border-color: var(--ctp-green);
}
.panel-info {
	border-color: var(--ctp-sapphire);
}
.panel-info > .panel-heading {
	background-color: var(--ctp-sapphire);
	color: var(--ctp-crust);
	border-color: var(--ctp-sapphire);
}

/* ==========================================================================
   Bootstrap Overrides – Modals
   ========================================================================== */

.modal-content {
	background-color: var(--ctp-base);
	border-color: var(--ctp-surface0);
}
.modal-header {
	border-bottom-color: var(--ctp-surface0);
	color: var(--ctp-text);
}
.modal-footer {
	border-top-color: var(--ctp-surface0);
}
.modal-header .close {
	color: var(--ctp-overlay2);
	opacity: 0.8;
	text-shadow: none;
}
.modal-header .close:hover {
	color: var(--ctp-text);
	opacity: 1;
}
.modal-backdrop.in {
	opacity: 0.6;
}

/* ==========================================================================
   Bootstrap Overrides – Forms
   ========================================================================== */

.form-control {
	background-color: var(--ctp-mantle);
	border-color: var(--ctp-surface0);
	color: var(--ctp-text);
}
.form-control:focus {
	border-color: var(--ctp-blue);
	box-shadow: 0 0 0 2px rgba(var(--ctp-blue), 0.15);
}
.input-group-addon {
	background-color: var(--ctp-surface0);
	border-color: var(--ctp-surface0);
	color: var(--ctp-subtext0);
}

/* ==========================================================================
   Bootstrap Overrides – Buttons
   ========================================================================== */

.btn-default {
	background-color: var(--ctp-surface0);
	border-color: var(--ctp-surface1);
	color: var(--ctp-text);
}
.btn-default:hover, .btn-default:focus, .btn-default:active {
	background-color: var(--ctp-surface1);
	border-color: var(--ctp-surface2);
	color: var(--ctp-text);
}
.btn-primary {
	background-color: var(--ctp-blue);
	border-color: var(--ctp-blue);
	color: var(--ctp-crust);
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
	background-color: var(--ctp-sapphire);
	border-color: var(--ctp-sapphire);
	color: var(--ctp-crust);
}
.btn-success {
	background-color: var(--ctp-green);
	border-color: var(--ctp-green);
	color: var(--ctp-crust);
}
.btn-success:hover, .btn-success:focus, .btn-success:active {
	background-color: var(--ctp-teal);
	border-color: var(--ctp-teal);
	color: var(--ctp-crust);
}
.btn-danger {
	background-color: var(--ctp-red);
	border-color: var(--ctp-red);
	color: var(--ctp-base);
}
.btn-danger:hover, .btn-danger:focus, .btn-danger:active {
	background-color: var(--ctp-maroon);
	border-color: var(--ctp-maroon);
	color: var(--ctp-base);
}

/* ==========================================================================
   Bootstrap Overrides – Alerts
   ========================================================================== */

.alert-success {
	background-color: color-mix(in srgb, var(--ctp-green) 15%, var(--ctp-base));
	border-color: color-mix(in srgb, var(--ctp-green) 30%, var(--ctp-surface0));
	color: var(--ctp-text);
}
.alert-danger {
	background-color: color-mix(in srgb, var(--ctp-red) 15%, var(--ctp-base));
	border-color: color-mix(in srgb, var(--ctp-red) 30%, var(--ctp-surface0));
	color: var(--ctp-text);
}
.alert-warning {
	background-color: color-mix(in srgb, var(--ctp-yellow) 15%, var(--ctp-base));
	border-color: color-mix(in srgb, var(--ctp-yellow) 30%, var(--ctp-surface0));
	color: var(--ctp-text);
}
.alert-info {
	background-color: color-mix(in srgb, var(--ctp-blue) 15%, var(--ctp-base));
	border-color: color-mix(in srgb, var(--ctp-blue) 30%, var(--ctp-surface0));
	color: var(--ctp-text);
}

/* ==========================================================================
   Bootstrap Overrides – Labels & Badges
   ========================================================================== */

.label {
	font-weight: 500;
	font-size: 11px;
	padding: 4px 8px;
}
.label-default {
	background-color: var(--ctp-surface1);
	color: var(--ctp-text);
}
.label-primary {
	background-color: var(--ctp-blue);
	color: var(--ctp-crust);
}
.label-success {
	background-color: var(--ctp-green);
	color: var(--ctp-crust);
}
.label-info {
	background-color: var(--ctp-sapphire);
	color: var(--ctp-crust);
}
.label-warning {
	background-color: var(--ctp-yellow);
	color: var(--ctp-crust);
}
.label-danger {
	background-color: var(--ctp-red);
	color: var(--ctp-base);
}
.badge {
	background-color: var(--ctp-surface2);
	color: var(--ctp-text);
}

/* ==========================================================================
   Bootstrap Overrides – List Groups
   ========================================================================== */

.list-group-item {
	background-color: var(--ctp-base);
	border-color: var(--ctp-surface0);
	color: var(--ctp-text);
}

/* ==========================================================================
   Bootstrap Overrides – Wells
   ========================================================================== */

.well {
	background-color: var(--ctp-mantle);
	border-color: var(--ctp-surface0);
}

/* ==========================================================================
   Bootstrap Overrides – Dropdowns
   ========================================================================== */

.dropdown-menu {
	background-color: var(--ctp-base);
	border-color: var(--ctp-surface0);
}
.dropdown-menu > li > a {
	color: var(--ctp-text);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
	background-color: var(--ctp-surface0);
	color: var(--ctp-text);
}

/* ==========================================================================
   Bootstrap Overrides – Pagination
   ========================================================================== */

.pagination > li > a,
.pagination > li > span {
	background-color: var(--ctp-base);
	border-color: var(--ctp-surface0);
	color: var(--ctp-blue);
}
.pagination > li > a:hover,
.pagination > li > a:focus {
	background-color: var(--ctp-mantle);
	border-color: var(--ctp-surface0);
	color: var(--ctp-sapphire);
}
.pagination > .active > a,
.pagination > .active > a:hover,
.pagination > .active > a:focus,
.pagination > .active > span,
.pagination > .active > span:hover,
.pagination > .active > span:focus {
	background-color: var(--ctp-blue);
	border-color: var(--ctp-blue);
	color: var(--ctp-crust);
}
.pagination > .disabled > a,
.pagination > .disabled > span {
	background-color: var(--ctp-mantle);
	border-color: var(--ctp-surface0);
	color: var(--ctp-overlay0);
}

/* ==========================================================================
   Bootstrap Overrides – DataTables info/search
   ========================================================================== */

.dataTables_info {
	color: var(--ctp-subtext0);
}
.dataTables_filter label {
	color: var(--ctp-subtext0);
}

/* ==========================================================================
   Modal body specifics
   ========================================================================== */

.modal-body .panel {
	margin-bottom: 12px;
}
.modal-body .panel:last-child {
	margin-bottom: 0;
}
.modal-body .list-group-item {
	padding: 6px 12px;
	font-size: 12px;
}
.modal-body .list-group-item code {
	color: var(--ctp-mauve);
	background: transparent;
	padding: 0;
}
.modal-body .table td {
	font-size: 12px;
}
.modal-body .table td:first-child {
	white-space: nowrap;
}

/* ==========================================================================
   Login Page
   ========================================================================== */

body.login {
	background: var(--ctp-crust);
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
}
.login-container {
	display: flex;
	justify-content: center;
	align-items: center;
	min-height: 100vh;
	width: 100%;
	position: relative;
}
.login-panel {
	background: var(--ctp-base);
	border-radius: 6px;
	padding: 40px;
	width: 380px;
	box-shadow: 0 4px 20px var(--ctp-shadow);
	border: 1px solid var(--ctp-surface0);
}
.login-header {
	text-align: center;
	font-size: 24px;
	font-weight: 600;
	color: var(--ctp-text);
	margin-bottom: 30px;
}
.login-header small {
	display: block;
	font-size: 12px;
	color: var(--ctp-subtext0);
	margin-top: 6px;
	font-weight: 400;
}
.login-header .fa {
	margin-right: 8px;
	color: var(--ctp-blue);
}
.login-panel .form-group {
	margin-bottom: 18px;
}
.login-panel .input-group-addon {
	background: var(--ctp-surface0);
	border-color: var(--ctp-surface0);
	color: var(--ctp-overlay1);
}
.login-panel .form-control {
	background-color: var(--ctp-mantle);
	border-color: var(--ctp-surface0);
	color: var(--ctp-text);
	height: 42px;
}
.login-panel .form-control:focus {
	border-color: var(--ctp-blue);
}
.login-panel .btn-primary {
	background-color: var(--ctp-blue);
	border-color: var(--ctp-blue);
	color: var(--ctp-crust);
	height: 42px;
	font-size: 15px;
	font-weight: 600;
}
.login-panel .btn-primary:hover {
	background-color: var(--ctp-sapphire);
	border-color: var(--ctp-sapphire);
}
