/* --------------------------   --------------------------
    01. Basic Contents
		- External Calls
        - Initialization
        - Basic Blocks
    02. Common Blocks
		- margin class
		- application cards
		- custom navbar
		- custom alert
		- custom alert text
		- custom modal
		- custom tabs
		- custom tabs sub
		- common inputs
		- status text
		//- file inputs
		- checkbox & radio
		- buttons
		- image preview
		- modal preview
    03. Override Css
		- bootstrap form group
		- choice.js select box
		- choice.js tag input
		- quill editor
		- navbar
    04. Login Page
		- login container
    05. Application Page
		- cards stats
    06. Category Page
		- cards content
    07. Works Page
		- voice recorder
		- tasks list
		- tasks filter
		- timeline
--------------------------   -------------------------- */

/* --------------------   -------------------- */
/*  01. Basic Contents - External Calls
/* --------------------   -------------------- */

@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@400..700&display=swap');

/* --------------------   -------------------- */
/*  01. Basic Contents - Initialization
/* --------------------   -------------------- */

:root {
	--primary: #2563eb;
	--primary-rgb: 37, 99, 235;
	--radius: 10px;

	--bg: #f5f7fa;
	--text: #1c1e21;
	--text-mid: #5C5C5C;
	--text-muted: #777;
	--text-muted-rgb: 119, 119, 119;
	--modal-bg: rgba(255, 255, 255, 0.85);
	--border: #e2e8f0;
	--nav-bg: #fff;
	--shadow: rgba(0, 0, 0, 0.05);
	--card-bg: #fff;
	--card-apps-light: #ffffff;
	--card-apps-dark: #182131;
	--text-apps-light: #1f2937;
	--text-apps-dark: #e2e8f0;
	--apps-shadow: rgba(0, 0, 0, 0.1);

	--active: #6bb577;
	--active-rgb: 107, 181, 119;
	--inactive: #df4752;
	--inactive-rgb: 223, 71, 82;
}

body.dark {
	--bg: linear-gradient(135deg, #0d1b2a, #1b263b);
	--text: #e0e6ed;
	--text-muted: #aaa;
	--text-muted-rgb: 170, 170, 170;
	--modal-bg: rgba(27, 38, 59, 0.9);
	--border: #2b3a55;
	--nav-bg: rgba(27, 38, 59, 0.9);
}

/* --------------------   -------------------- */
/*  01. Basic Contents - Basic Blocks
/* --------------------   -------------------- */

body {
	font-family: "Lexend", sans-serif;
	background: var(--bg);
	color: var(--text);
	transition: 0.3s ease;
	padding: 20px;
}

::placeholder {
	color: var(--text-muted) !important;
}

/* --------------------   -------------------- */
/*  02. Common Blocks - margin class
/* --------------------   -------------------- */

.input-mg-bt {
	margin-bottom: 15px;
}

/* --------------------   -------------------- */
/*  02. Common Blocks - application cards
/* --------------------   -------------------- */

.card-custom {
	background: var(--card-bg);
	border: 1px solid var(--border);
	border-radius: 16px;
	box-shadow: 0 6px 15px var(--apps-shadow);
	overflow: hidden;
	transition: all 0.3s ease;
	cursor: pointer;
}

body.dark .card-custom {
	background: var(--card-apps-dark);
	box-shadow: 0 5px 15px rgba(255, 255, 255, 0.04);
}

.card-custom:hover {
	transform: translateY(-6px);
	box-shadow: 0 10px 25px rgba(0, 0, 0, 0.12);
}

.card-custom-header {
	display: flex;
	align-items: center;
	padding: 20px;
	border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.card-custom-header img {
	width: 52px;
	height: 52px;
	border-radius: 12px;
	margin-right: 15px;
	object-fit: cover;
}

.card-custom-header h3 {
	font-size: 1.1rem;
	margin: 0;
	font-weight: 600;
}

.card-custom-header p {
	font-size: 0.9rem;
	color: #6b7280;
	margin: 4px 0 0;
}

.card-custom-header a {
	text-decoration: none;
}

body.dark .card-custom-header p {
	color: #a1a9b5;
}

.card-custom-body {
	padding: 18px 22px;
}

.card-custom-footer {
	padding: 15px 22px;
	font-size: 0.75rem;
	color: var(--text-muted);
	border-top: 1px solid rgba(0, 0, 0, 0.05);
}

.card-custom-footer span {
	color: var(--text);
}

body.dark .card-custom-footer {
	color: #a0aec0;
}

.card-custom-footer i {
	margin-right: 5px;
	color: #4f46e5;
}

/* --------------------   -------------------- */
/*  02. Common Blocks - custom navbar
/* --------------------   -------------------- */

.custom-navbar {
	background: var(--nav-bg);
	color: var(--text);
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
	transition: background 0.3s;
}

/* --------------------   -------------------- */
/*  02. Common Blocks - custom alert
/* --------------------   -------------------- */

.alert-overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(0, 0, 0, 0.4);
	display: flex;
	justify-content: center;
	align-items: center;
	backdrop-filter: blur(4px);
	z-index: 1000;
}

.alert-box {
	background: #fff;
	border-radius: 20px;
	width: 380px;
	padding: 30px 25px;
	text-align: center;
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
	transform: scale(0.8);
	opacity: 0;
	transition: all 0.3s ease;
}

.alert-box.show {
	transform: scale(1);
	opacity: 1;
}

.alert-icon {
	width: 70px;
	height: 70px;
	margin: 0 auto 20px;
	border-radius: 50%;
	display: flex;
	justify-content: center;
	align-items: center;
	color: #fff;
	font-size: 30px;
	box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
	animation: pop 0.4s ease;
}

@keyframes pop {
	0% {
		transform: scale(0.5);
		opacity: 0;
	}

	100% {
		transform: scale(1);
		opacity: 1;
	}
}

.alert-success {
	background: linear-gradient(135deg, #00c851, #007e33);
}

.alert-warning {
	background: linear-gradient(135deg, #ffbb33, #ff8800);
}

.alert-failed {
	background: linear-gradient(135deg, #ff4444, #cc0000);
}

.alert-info {
	background: linear-gradient(135deg, #33b5e5, #0099cc);
}

.alert-title {
	font-size: 20px;
	font-weight: 700;
	color: #333;
	margin-bottom: 10px;
}

.alert-text {
	font-size: 15px;
	color: #666;
	line-height: 1.5;
	margin-bottom: 20px;
}

.alert-text a {
	color: #2575fc;
	text-decoration: none;
	font-weight: 500;
}

.alert-buttons {
	display: flex;
	justify-content: center;
	gap: 15px;
}

.alert-btn {
	padding: 10px 22px;
	border-radius: 50px;
	font-size: 14px;
	font-weight: 600;
	border: none;
	cursor: pointer;
	transition: all 0.3s ease;
}

.alert-btn.ok {
	background: #2575fc;
	color: #fff;
	box-shadow: 0 3px 8px rgba(37, 117, 252, 0.3);
}

.alert-btn.ok:hover {
	background: #1a5ad8;
	transform: scale(1.05);
}

.alert-btn.visit {
	background: #f2f4f8;
	color: #444;
}

.alert-btn.visit:hover {
	background: #e3e6ea;
	transform: scale(1.05);
}

@keyframes pulse {
	0% {
		transform: scale(1);
		box-shadow: 0 3px 8px rgba(0, 200, 81, 0.3);
	}

	50% {
		transform: scale(1.05);
		box-shadow: 0 4px 12px rgba(0, 200, 81, 0.4);
	}

	100% {
		transform: scale(1);
		box-shadow: 0 3px 8px rgba(0, 200, 81, 0.3);
	}
}

/* --------------------   -------------------- */
/*  02. Common Blocks - custom alert text
/* --------------------   -------------------- */

    .txt--alert {
        display: block;
        align-items: center;
        padding: 4px 0;
        margin-bottom: 6px;
        font-size: 1.1rem;
        line-height: 1.5;
        font-weight: 600;
        animation: fadeSlide .22s cubic-bezier(.4,0,.2,1);
    }

    .txt--alert-success { color: #15803d; }
    .txt--alert-error   { color: #b91c1c; }
    .txt--alert-warning { color: #b45309; }
    .txt--alert-info    { color: #1d4ed8; }

    @keyframes fadeSlide {
        from { opacity: 0; transform: translateY(-2px); }
        to   { opacity: 1; transform: translateY(0); }
    }

/* --------------------   -------------------- */
/*  02. Common Blocks - custom modal
/* --------------------   -------------------- */

.custom-modal-overlay {
	position: fixed;
	display: none;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	inset: 0;
	background: rgba(0, 0, 0, 0.5);
	padding-top: 5vh;
	overflow-y: auto;
	z-index: 999999;
	backdrop-filter: blur(6px);
}

.custom-modal {
	width: 100%;
	max-width: 720px;
	background: var(--modal-bg);
	border-radius: 20px;
	padding: 20px;
	backdrop-filter: blur(8px);
	border: 1px solid var(--border);
	box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
	animation: fadeIn 0.3s ease;
	margin: 20px auto;
}

@keyframes fadeIn {
	from {
		opacity: 0;
		transform: translateY(-10px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.modal-header,
.modal-footer {
	display: flex;
	justify-content: space-between;
	align-items: center;
}

.modal-header {
	border-bottom: 1px solid var(--border);
	margin-bottom: 15px;
}

.modal-footer {
	border-top: 1px solid var(--border);
	margin-top: 15px;
	padding-top: 10px;
}

.close-modal {
	background: transparent;
	border: none;
	font-size: 1.4rem;
	color: var(--text);
	cursor: pointer;
	transition: 0.2s;
}

.close-modal:hover {
	color: #0d6efd;
}

.disabled-card {
	filter: grayscale(1);
	opacity: 0.6;
}

/* --------------------   -------------------- */
/*  02. Common Blocks - custom tabs
/* --------------------   -------------------- */

.tabs-container {
	width: 100%;
	overflow: hidden;
	background: transparent;
	border: none;
	transition: all 0.3s ease;
	box-shadow: none;
	margin-bottom: 1.5rem;
}

body.dark .tabs-container {
	background: transparent;
	border: none;
	box-shadow: none;
}

.tabs-header {
	display: flex;
	justify-content: space-around;
	border-bottom: 1px solid var(--border);
	background: var(--card-bg);
	margin-bottom: 10px;
	border-radius: var(--radius);
	overflow: hidden;
	/* Keep generic overflow hidden */
}

body.dark .tabs-header {
	border-bottom: 1px solid var(--border);
	background: linear-gradient(to right, rgba(37, 99, 235, 0.1), transparent);
}

.tab-btn {
	flex: 1;
	padding: 10px 20px;
	font-weight: 600;
	background: none;
	border: none;
	cursor: pointer;
	transition: all 0.25s ease;
	color: var(--text);
	position: relative;
	font-family: 'Outfit', sans-serif;
	white-space: nowrap;
	/* Prevent text wrapping */
}

/* Mobile Responsive for Tabs */
@media (max-width: 768px) {
	.tabs-header {
		justify-content: space-between;
		padding-bottom: 0;
	}

	.tab-btn {
		flex: 1;
		padding: 10px 2px;
		font-size: 0.85rem;
		min-width: 0;
		/* Allow shrinking */
		white-space: normal;
		/* Allow wrapping */
		line-height: 1.2;
		display: flex;
		align-items: center;
		justify-content: center;
	}
}



body.dark .tab-btn {
	color: var(--text-apps-dark);
}

.tab-btn::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 0;
	transform: translateX(-50%) scaleX(0);
	width: 50%;
	height: 3px;
	background: var(--primary);
	border-radius: 2px;
	transition: transform 0.25s ease;
}

.tab-btn.active {
	color: var(--primary);
	background: rgba(37, 99, 235, 0.05);
}

body.dark .tab-btn.active {
	background: rgba(37, 99, 235, 0.15);
}

.tab-btn.active::after {
	transform: translateX(-50%) scaleX(1);
}

.tab-content {
	padding: 25px 0;
	display: block;
	transition: opacity 0.25s ease, transform 0.25s ease;
}

.hidden {
	display: none;
}

/* --------------------   -------------------- */
/*  02. Common Blocks - custom tabs sub
/* --------------------   -------------------- */

.wupdate--sub-tabs {
	display: inline-flex;
	background: var(--modal-bg);
	padding: 4px;
	border-radius: 6px;
}

.wupdate--sub-tab {
	border: none;
	background: transparent;
	padding: 0.4rem 2rem;
    font-weight: 600;
	cursor: pointer;
	border-radius: 4px;
	color: var(--text-mid);
	transition: 0.25s;
    font-size: 0.9rem;
}

.wupdate--sub-tab:hover {
	background: #e0e0e0;
}

.wupdate--sub-tab.active {
	background: var(--primary);
    color: #fff;
}

.wupdate--sub-tab-content {
	margin-top: 14px;
}

.wupdate--content {
	display: none;
}

.wupdate--content.active {
	display: block;
}

/* --------------------   -------------------- */
/*  02. Common Blocks - common inputs
/* --------------------   -------------------- */

.form-label {
	margin-bottom: 0.5rem;
	margin-left: 0.5rem;
	font-size: 0.95rem;
	color: var(--text);
}

.form-label.required:after {
	content: '*';
	margin-left: 0.1rem;
	color: red;
}

.form-control,
.form-control textarea {
	background: var(--modal-bg);
	border: 1px solid var(--border);
	border-radius: 12px;
	margin-bottom: 15px;
	color: var(--text);
	font-size: 15px;
	padding: 10px 14px;
	transition: all 0.2s ease;
}

.form-control:focus {
	border-color: #0d6efd;
	box-shadow: 0 0 0 3px rgba(13, 110, 253, 0.1);
	background: var(--modal-bg);
	color: var(--text);
}

.form-control-modern {
	background: var(--modal-bg);
	border: 1px solid var(--border);
	border-radius: 10px;
	padding: 10px 14px;
	color: var(--text);
	font-size: 15px;
	transition: 0.2s ease;
	width: 180px;
}

.form-control-modern:focus {
	border-color: #0d6efd;
	box-shadow: 0 0 0 4px rgba(13, 110, 253, 0.25);
}

/* --------------------   -------------------- */
/*  02. Common Blocks - status text
/* --------------------   -------------------- */

.status-container {
	font-size: 0.9rem;
	font-weight: 600;
	display: flex;
	align-items: center;
	gap: 0.2rem;
	margin-top: 0.3rem;
}

.status-container img {
	width: 1.2rem;
	height: 1.2rem;
	margin-right: 0;
}

.status-container.active {
	color: var(--active);
}

.status-container.inactive {
	color: var(--inactive);
}

/* --------------------   -------------------- */
/*  02. Common Blocks - checkbox & radio
/* --------------------   -------------------- */

.option-group {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin-top: 8px;
}

.custom-option {
	position: relative;
	display: flex;
	align-items: center;
	font-size: 0.95rem;
	font-weight: 500;
	color: var(--text-light, #1f2937);
	cursor: pointer;
	user-select: none;
	padding-left: 28px;
	transition: color 0.3s;
}

body.dark .custom-option {
	color: var(--text-dark, #e5e7eb);
}

.custom-option input {
	position: absolute;
	opacity: 0;
	cursor: pointer;
}

.custom-option .checkmark {
	position: absolute;
	left: 0;
	top: 2px;
	height: 18px;
	width: 18px;
	background: #e5e7eb;
	border-radius: 4px;
	border: 2px solid #ccc;
	transition: all 0.3s ease;
	box-sizing: border-box;
}

body.dark .custom-option .checkmark {
	background: #2b3446;
	border-color: #555;
}

.custom-option input[type="radio"]+.checkmark {
	border-radius: 50%;
}

.custom-option input:checked+.checkmark {
	background: var(--primary, #4f46e5);
	border-color: var(--primary, #4f46e5);
	box-shadow: 0 0 8px rgba(79, 70, 229, 0.4);
}

.custom-option .checkmark::after {
	content: "";
	position: absolute;
	display: none;
}

.custom-option input:checked+.checkmark::after {
	display: block;
}

.custom-option input[type="radio"]+.checkmark::after {
	top: 4px;
	left: 4px;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: white;
}

.custom-option input[type="checkbox"]+.checkmark::after {
	left: 4px;
	top: 0px;
	width: 6px;
	height: 12px;
	border: solid white;
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}

/* --------------------   -------------------- */
/*  02. Common Blocks - buttons
/* --------------------   -------------------- */

.btn-modern {
	background: linear-gradient(135deg, #0d6efd, #007bff);
	color: #fff;
	border: none;
	border-radius: 10px;
	padding: 10px 16px;
	font-weight: 500;
	transition: all 0.3s ease;
}

.btn-modern:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 12px rgba(13, 110, 253, 0.3);
}

/* --------------------   -------------------- */
/*  02. Common Blocks - image preview
/* --------------------   -------------------- */

.igpw img {
	width: 80px;
	height: 80px;
	object-fit: cover;
	border-radius: 10px;
	border: 1px solid var(--border);
	box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
	transition: 0.2s ease;
}

.igpw img:hover {
	transform: scale(1.05);
}

.igpw-icon {
	position: relative;
	display: inline-block;
}

.igpw-icon img {
	width: 80px;
	height: 80px;
	object-fit: cover;
	border-radius: 10px;
	border: 1px solid var(--border);
	box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
	transition: 0.2s ease;
	overflow: hidden;
}

.igpw-icon::after {
	content: '\1F512';
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 28px;
	color: white;
	background: rgba(0, 0, 0, 0);
	transition: background 0.3s ease, opacity 0.3s ease;
	opacity: 0;
}

.igpw-icon:hover::after {
	background: rgba(0, 0, 0, 0.45);
	opacity: 1;
}

.igpw-icon:hover img {
	transform: scale(1.05);
}

/* --------------------   -------------------- */
/*  02. Common Blocks - modal preview
/* --------------------   -------------------- */

.website-detail-modern {
	font-family: "Outfit", sans-serif;
	color: var(--text);
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.website-header {
	display: flex;
	align-items: center;
	gap: 20px;
}

.website-logo {
	width: 75px;
	height: 75px;
	border-radius: 14px;
	object-fit: cover;
	box-shadow: 0 4px 12px var(--shadow);
}

.website-info {
	flex: 1;
}

.website-title {
	margin-left: 0.3rem;
	font-size: 1.25rem;
	font-weight: 600;
	text-align: left;
	color: var(--text);
}

.website-links {
	font-size: 0.9rem;
	display: flex;
	gap: 6px;
	color: var(--text-muted);
}

.website-links a {
	color: var(--primary);
	font-size: 0.9rem;
	text-decoration: none;
	display: flex;
	margin: 0;
	align-items: center;
	gap: 6px;
	opacity: 0.85;
	transition: opacity 0.2s;
}

.website-links a {
	color: var(--primary);
	font-size: 14px;
	text-decoration: none;
	display: flex;
	align-items: center;
	gap: 6px;
	opacity: 0.85;
	transition: opacity 0.2s;
}

.website-links a:hover {
	opacity: 1;
}

.website-remark {
	background: rgba(255, 255, 255, 0.5);
	padding: 1rem;
	border-radius: 8px;
	font-size: 0.9rem;
	box-shadow: 0 2px 8px var(--shadow);
	display: flex;
	gap: 6px;
	align-items: center;
}

body.dark .website-remark {
	background: rgba(255, 255, 255, 0.05);
}

.bg-white-70 {
	background: rgba(255, 255, 255, 0.70) !important;
}

.preview-stat .stat-count {
	font-size: 1.25rem !important;
}

.preview-stat .stat-label {
	font-size: 0.9rem !important;
}

.website-info-list {
	list-style: none;
	padding: 0;
	margin: 0;
	border-top: 1px solid var(--border);
	border-bottom: 1px solid var(--border);
}

.website-info-list li {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 10px 0;
	border-bottom: 1px solid var(--border);
}

.website-info-list li:last-child {
	border-bottom: none;
}

.info-label {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--text-muted);
	font-size: 0.85rem;
}

.info-value {
	font-weight: 600;
	font-size: 0.85rem;
	color: var(--text);
}

/* --------------------   -------------------- */
/*  03. Override Css - bootstrap form group
/* --------------------   -------------------- */

.form-group {
	margin-bottom: 1.2rem;
	text-align: left;
}

.form-group label {
	display: block;
	margin-bottom: 0.4rem;
	font-size: 0.9rem;
	font-weight: 500;
}

.form-group input {
	width: 100%;
	padding: 0.8rem;
	border: 1px solid #dfe4ea;
	border-radius: 10px;
	background: #f9fafc;
	transition: all 0.3s;
	font-size: 0.95rem;
}

body.dark .form-group input {
	background: rgba(255, 255, 255, 0.05);
	border-color: rgba(255, 255, 255, 0.1);
	color: #e6e8eb;
}

.form-group input:focus {
	border-color: var(--accent);
	outline: none;
	background: #fff;
}

body.dark .form-group input:focus {
	background: rgba(255, 255, 255, 0.1);
}

/* --------------------   -------------------- */
/*  03. Override Css - choice.js select box
/* --------------------   -------------------- */

select.common-input {
	display: none !important;
}

.choices {
	width: 240px;
	margin: 0;
}

.choices__inner {
	height: 42px;
	padding: 10px 15px !important;
	border-radius: 10px !important;
	border: 1px solid var(--border) !important;
	line-height: 22px;
	color: var(--text) !important;
	font-size: 15px !important;
	transition: 0.2s ease;
	background: var(--modal-bg) !important;
}

.choices__list {
	display: inline-block;
	width: 100%;
	text-align: left;
	padding: 0 !important;
}

.choices__list--dropdown {
	background: #FFF !important;
	border: 1px solid var(--border) !important;
	border-radius: 10px !important;
}

.choices[data-type*=select-one]::after {
	border-color: #999999 transparent transparent;
	right: 18.5px;
	opacity: 0.8;
}

/* --------------------   -------------------- */
/*  03. Override Css - choice.js tag input
/* --------------------   -------------------- */

.tag-container {
	width: 100%;
}

.tag-container .choices {
	width: 100%;
}

.tag-container .choices__item {
	align-items: center;
	line-height: 1.4;
}

.tag-container .choices__item.choices__item--selectable {
	background: var(--primary);
	border-color: var(--primary);
	color: #fff;
}

.tag-container .choices__inner {
	border: 1px solid var(--border);
	background: var(--modal-bg);
	color: var(--text);
	min-height: 42px;
	display: flex;
	align-items: center;
	border-radius: 10px;
	height: auto;
	justify-content: flex-start;
	align-items: center;
	flex-wrap: wrap;
	padding: 5px 15px !important;
}

.tag-container .choices__list--single {
	background: transparent !important;
}

.dark-mode .tag-container .choices__inner {
	background: var(--modal-bg);
	border-color: var(--border);
	color: var(--text);
}

.dark-mode .tag-container .choices__item--selectable {
	background: var(--primary);
	color: #fff;
}

/* --------------------   -------------------- */
/*  03. Override Css - quill editor
/* --------------------   -------------------- */

.ql-container .ql-editor {
	min-height: 120px;
}

.ql-container {
	background: var(--bs-body-bg);
	border: 1px solid #ced4da;
	border-radius: .375rem;
}

.ql-toolbar {
	border-radius: .375rem .375rem 0 0;
	background: var(--bs-body-bg);
}

.ql-container {
	border-radius: 0 0 .375rem .375rem;
}

/* --------------------   -------------------- */
/*  03. Override Css - navbar
/* --------------------   -------------------- */

.navbar-expand-lg .navbar-nav .nav-link {
	font-size: 1rem;
	font-weight: 500 !important;
}

.navbar-expand-lg .navbar-nav .nav-link.active {
	color: var(--primary);
}

.nav-link {
	position: relative;
	color: var(--text);
}

.nav-link::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 4px;
	width: 0;
	height: 2px;
	background: var(--primary);
	transition: all 0.3s ease;
}

.nav-link.active::after {
	left: 0;
	width: 100%;
}

.navbar-toggler-icon {
	transition: filter 0.3s ease;
}

body:not(.dark) .navbar-toggler-icon {
	filter: invert(0) !important;
}

body.dark .navbar-toggler-icon {
	filter: invert(1) !important;
}

.navbar-toggler {
	padding: 0;
	font-size: 20px;
	line-height: 1;
	color: var(--bs-navbar-color);
	background-color: transparent;
	border: none;
	outline: none;
	border-radius: var(--bs-navbar-toggler-border-radius);
	transition: var(--bs-navbar-toggler-transition);
}

/* --------------------   -------------------- */
/*  04. Login Page - login container
/* --------------------   -------------------- */

.login-container {
	width: 380px;
	background: var(--card-bg);
	border-radius: 16px;
	box-shadow: 0 6px 30px rgba(0, 0, 0, 0.08);
	padding: 2rem;
	text-align: center;
	transition: background 0.3s, box-shadow 0.3s;
}

body.dark .login-container {
	background: var(--card-apps-dark);
	box-shadow: 0 0 15px rgba(0, 0, 0, 0.4);
}

.login-title {
	color: var(--text);
	font-size: 1.6rem;
	font-weight: 600;
	margin-bottom: 1rem;
}

.login-sub {
	font-size: 0.9rem;
	color: var(--text-muted);
	margin-bottom: 2rem;
}

body.dark .login-sub {
	color: var(--text-muted);
}

.login-btn {
	width: 100%;
	padding: 0.9rem;
	border: none;
	border-radius: 10px;
	background: #3a8df5;
	color: #fff;
	font-weight: 600;
	cursor: pointer;
	font-size: 1rem;
	transition: background 0.3s;
}

.login-btn:hover {
	background: #2976d6;
}

/* --------------------   -------------------- */
/*  05. Application Page - card stats
/* --------------------   -------------------- */

.apps-stats {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-top: 10px;
	gap: 10px;
}

.apps-stat {
	flex: 1;
	background: rgba(0, 0, 0, 0.04);
	border-radius: 12px;
	padding: 10px 12px;
	text-align: center;
	transition: 0.3s;
}

body.dark .apps-stat {
	background: rgba(255, 255, 255, 0.05);
}

.apps-stat:hover {
	background: rgba(0, 0, 0, 0.07);
	transform: translateY(-2px);
}

body.dark .apps-stat:hover {
	background: rgba(255, 255, 255, 0.1);
}

.apps-stat i {
	display: block;
	font-size: 1.3rem;
	margin-bottom: 5px;
}

.apps-stat .stat-count {
	padding: 0 0.5rem;
	font-weight: 500;
	font-size: 1.15rem;
}

.apps-stat .stat-label {
	margin-top: 0.3rem;
	font-weight: 400;
	font-size: 0.75rem;
}

/* --------------------   -------------------- */
/*  06. Category Page - cards content
/* --------------------   -------------------- */

.category-used {
	font-size: 0.9rem;
	color: var(--text-muted);
}

.category-used span {
	font-weight: 600;
	color: var(--primary);
}

/* --------------------   -------------------- */
/*  07. Works Page - voice recorder
/* --------------------   -------------------- */

.voice--record-btn.stop {
	background: #e74c3c;
}

.voice--record-btn {
	background: var(--primary);
	color: #fff;
	border: none;
	padding: 9px 15px;
	border-radius: 8px;
	cursor: pointer;
	font-size: 0.9rem;
	font-weight: 500;
	margin-left: 0.4rem;
}

.voice--indicator {
	margin-left: 8px;
	color: #e74c3c;
	display: none;
	font-size: 14px;
	font-weight: bold;
	position: relative;
	padding-left: 1.3rem;
}

.voice--indicator::before {
	content: "";
	position: absolute;
	left: 0;
	top: 4px;
	width: 10px;
	height: 10px;
	background: #e74c3c;
	border-radius: 50%;
	display: inline-block;
	animation: voice--pulse 1s infinite ease-in-out;
}

.voice--indicator::after {
	content: "";
	width: 10px;
	height: 10px;
	border: 2px solid #e74c3c;
	border-radius: 50%;
	position: absolute;
	left: 1px;
	top: 4px;
	margin-left: -1px;
	animation: voice--ripple 1.2s infinite ease-out;
	opacity: 0.5;
}

@keyframes voice--pulse {
	0% {
		transform: scale(1);
		opacity: 1;
	}

	50% {
		transform: scale(1.4);
		opacity: 0.6;
	}

	100% {
		transform: scale(1);
		opacity: 1;
	}
}

@keyframes voice--ripple {
	0% {
		transform: scale(1);
		opacity: 0.6;
	}

	100% {
		transform: scale(2.4);
		opacity: 0;
	}
}

.voice--list {
	margin-top: 15px;
}

.voice--item {
	background: var(--modal-bg);
	padding: 12px;
	border-radius: 10px;
	margin-bottom: 12px;
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.voice--left {
	display: flex;
	align-items: center;
	gap: 12px;
}

.voice--play {
	width: 34px;
	height: 34px;
	background: var(--primary);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
}

.voice--play span {
	font-size: 16px;
	color: #FFF;
	font-weight: bold;
}

.voice--info {
	display: flex;
	flex-direction: column;
	font-size: 14px;
}

.voice--filename {
	color: var(--text);
	font-weight: 600;
}

.voice--duration {
	color: var(--text-muted);
	opacity: 0.7;
	font-size: 13px;
}

.voice--delete {
	color: #e74c3c;
	cursor: pointer;
	font-size: 20px;
	padding: 5px;
}

/* --------------------   -------------------- */
/*  07. Works Page - tasks list
/* --------------------   -------------------- */

.task-board {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 1.5rem;
	position: relative;
}

.task-item {
	background: var(--modal-bg);
	border: 1px solid var(--border);
	border-radius: 16px;
	padding: 1.4rem 1.5rem;
	box-shadow: 0 6px 20px var(--shadow);
	backdrop-filter: blur(10px);
	transition: all 0.3s ease;
	cursor: pointer;
}

.task-item:hover {
	transform: translateY(-4px);
	box-shadow: 0 10px 24px var(--shadow);
}

.task-head {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 0.8rem;
	padding-bottom: 0.8rem;
	border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.task-head img {
	width: 52px;
	height: 52px;
	border-radius: 12px;
	margin-right: 15px;
	object-fit: cover;
}

.task-status {
	position: absolute;
	top: 0;
	right: 0;
	padding: 5px 12px;
	border-bottom-left-radius: 16px;
	border-top-right-radius: inherit;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.3px;
	color: #fff;
	background: linear-gradient(135deg, #007bff, #00bfff);
}
.status-complete {
	background: linear-gradient(135deg, #28a745, #62d26f);
}
.status-pending {
	background: linear-gradient(135deg, #f5a623, #fbd46d);
}
.status-hold {
	background: linear-gradient(135deg, #dc3545, #ff758c);
}

.tstatus-new {
	color: #007bff;
}
.tstatus-ongoing {
	color: #28a745;
}
.tstatus-completed {
	color: #f5a623;
}
.tstatus-cancelled {
	color: #dc3545;
}

.task-dates {
	font-size: 0.8rem;
	opacity: 0.75;
}

.task-title {
	font-size: 1.1rem;
	font-weight: 600;
	margin: 0.5rem 0;
	text-align: left;
}

.task-desc {
	font-size: 0.8rem;
	color: var(--text-muted);
	opacity: 0.8;
	line-height: 1.5;
	margin-bottom: 0.6rem;
	min-height: 3rem;
	text-align: left;
}

.task-meta {
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 0.8rem;
	opacity: 0.85;
	border-top: 1px solid rgba(0, 0, 0, 0.05);
	padding-top: 0.7rem;
}

.task-meta i {
	margin-right: 6px;
	color: #007bff;
}

.task-cats {
	font-size: 0.85rem;
	margin-bottom: 0.8rem;
	text-align: left;
}

.task-cats span {
	padding: 0.3rem 0.7rem;
	background-color: rgba(var(--primary-rgb), 0.1);
	color: var(--primary);
	border-radius: 0.3rem;
	font-weight: 500;
}

.task--preview-desc {
	background-color: #FFFFFFA1;
    padding: 1.3rem 1rem;
    border-radius: 0.7rem;
    color: var(--text-mid);
    font-size: 0.9rem;
    text-align: left;
    font-weight: 500;
}

.task--preview-desc>p {
	margin: 0;
}

.task--preview-desc:first-letter {
	margin-left: 1rem;
}

.work--preview-url>a {
    border: 2px solid rgba(var(--text-muted-rgb), 0.5);
    color: var(--text-muted);
    font-weight: 600;
    font-size: 0.9rem;
    padding: 0.6rem 1rem;
    text-align: left;
    border-radius: 0.5rem;
    margin: 0.4rem 0;
	display: block;
	text-decoration: none;
}

.work--preview-priority {
	font-size: 0.9rem;
	font-weight: 600;
}
.work--preview-priority.critical {
	color: #D32F2F;
}
.work--preview-priority.high {
	color: #F57C00;
}
.work--preview-priority.medium {
	color: #FBC02D;
}
.work--preview-priority.low {
	color: #388E3C;
}
.work--preview-priority.optional {
	color: #9E9F2E;
}

.sub--work-list {
	position: relative;
    font-size: 0.9rem;
    padding: 0.4rem 2rem 0.4rem 1rem;
    margin-bottom: 0.5rem;
	margin-right: 0.4rem;
    display: inline-block;
    border-radius: 0.7rem;
	overflow: hidden;
}

.sub--work-completed {
	box-shadow: 0 0 4px #487877;
	background-color: #578c83;
	color: #FFFFFF;
}

.sub--work-pending {
	box-shadow: 0 0 4px rgba(var(--inactive-rgb), 1);
	background-color: rgba(var(--inactive-rgb), 0.3);
	color: var(--text);
}

.sub--work-list>span {
	margin-left: 0.45rem;
}

.sub--work-list>span>img {
	position: absolute;
    right: 0.4rem;
    top: 0.5rem;
    width: 1.2rem;
    cursor: pointer;
    margin-left: 0.3rem;
}

.sub--work-completed>span {
    border-left: 2px solid #9CC1B0;
	color: #FFFFFF;
}

.sub--work-pending>span {
    border-left: 2px solid rgba(var(--inactive-rgb), 0.15);
	color: rgba(var(--inactive-rgb), 1);
}

.works--count-container {
	display: flex;
	justify-content: center;
	gap: 1rem;
	margin-bottom: 1.2rem;
	border-bottom: 1px solid #d1d1d1;
    padding-bottom: 0.8rem;
}

.works--count {
	color: #FFF;
	padding: 8px 20px;
	border-radius: 50px;
	display: flex;
	font-weight: 500;
	align-items: center;
	box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}

.works--count>span:first-child {
	font-weight: 600;
	margin-right: 0.3rem;
	font-size: 1.1em;
}

.works--count-completed {
	background-color: #81AA80;
}

.works--count-pending {
	background-color: #7d3340;
}

/* --------------------   -------------------- */
/*  07. Works Page - tasks filter
/* --------------------   -------------------- */

.filter-bar-modern {
	background: linear-gradient(135deg, rgba(255, 255, 255, 0.6), rgba(240, 240, 255, 0.3));
	border: 1px solid rgba(255, 255, 255, 0.3);
	backdrop-filter: blur(10px);
	box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
	transition: all 0.3s ease;
}

body.dark .filter-bar-modern {
	background: linear-gradient(135deg, rgba(24, 36, 58, 0.7), rgba(40, 56, 85, 0.4));
	border: 1px solid rgba(255, 255, 255, 0.05);
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}

/* --------------------   -------------------- */
/*  07. Works Page - timeline
/* --------------------   -------------------- */

.wupdate--content {
	font-family: 'Outfit', sans-serif;
	padding: 20px 0;
}

.timeline--container {
	position: relative;
	max-width: 1000px;
	margin: 0 auto;
	padding: 20px;
}

.timeline--item {
	position: relative;
	margin-bottom: 40px;
	display: flex;
	align-items: flex-start;
}

.timeline--item::after {
	content: '';
	position: absolute;
	left: 150px;
	top: 15px;
	width: 2px;
	height: calc(100% + 40px);
	background: #bfdbfe;
	margin-left: -1px;
	z-index: 0;
}

.timeline--item:last-child::after {
	display: none;
}

.timeline--date {
	width: 150px;
	padding-right: 30px;
	text-align: right;
	font-weight: 600;
	color: var(--text-muted);
	font-size: 0.9rem;
	position: relative;
	padding-top: 15px;
}

.timeline--marker {
	position: absolute;
	left: 150px;
	top: 15px;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	z-index: 10;
	transform: translateX(-50%);
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	font-size: 14px;
}

.timeline--marker svg {
	width: 20px;
	height: 20px;
	fill: currentColor;
	stroke: currentColor;
	stroke-width: 1;
}

.timeline--content {
	flex: 1;
	text-align: left;
	border-radius: 6px;
	margin-left: 30px;
	position: relative;
}

.timeline--title {
	font-weight: 600;
	font-size: 0.9rem;
	color: var(--text);
	margin-bottom: 8px;
}

.timeline--text {
	color: var(--text-mid);
	font-size: 0.8rem;
}

.timeline--desc {
    font-size: 0.8rem;
    color: var(--text-muted);
}

.timeline--marker.status-new {
	background: linear-gradient(135deg, #007bff, #00bfff);
}
.timeline--marker.status-complete {
	background: linear-gradient(135deg, #28a745, #62d26f);
}
.timeline--marker.status-pending {
	background: linear-gradient(135deg, #f5a623, #fbd46d);
}
.timeline--marker.status-hold {
	background: linear-gradient(135deg, #dc3545, #ff758c);
}

@keyframes pulse-scale { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.2); } }
@keyframes draw { 
	0% { stroke-dashoffset: 24; }
	40% { stroke-dashoffset: 0; }
	80% { stroke-dashoffset: 0; opacity: 1; }
	100% { stroke-dashoffset: 0; opacity: 0; }
}
@keyframes hourglass {
	0% { transform: rotate(0); }
	25% { transform: rotate(180deg); }
	50% { transform: rotate(180deg); }
	75% { transform: rotate(360deg); }
	100% { transform: rotate(360deg); }
}
@keyframes popper {
	0% {
		transform: translateX(-50%) translateY(-50%) scale(1);
		opacity: 0.5;
	}
	100% {
		transform: translateX(-50%) translateY(-50%) scale(3);
		opacity: 0;
	}
}

.timeline--marker.status-new::before,
.timeline--marker.status-new::after {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 100%;
	height: 100%;
	border-radius: 50%;
	background: inherit;
	z-index: -1;
	animation: popper 2s cubic-bezier(0, 0, 0.2, 1) infinite;
}
.timeline--marker.status-new::after {
	animation-delay: 1s;
}

.timeline--marker.status-new svg { animation: pulse-scale 2s infinite; }
.timeline--marker.status-pending svg { animation: hourglass 3s ease-in-out infinite; }

.timeline--marker.status-complete svg path {
	fill: none;
	stroke: #fff;
	stroke-width: 3;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-dasharray: 24;
	stroke-dashoffset: 24;
	animation: draw 2.5s cubic-bezier(0.65, 0, 0.45, 1) infinite;
}

.timeline--marker.status-hold svg path {
	fill: none;
	stroke: #fff;
	stroke-width: 3;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-dasharray: 24;
	stroke-dashoffset: 24;
}

.timeline--marker.status-hold svg path:nth-child(1) {
	animation: draw 2.5s cubic-bezier(0.65, 0, 0.45, 1) infinite;
}

.timeline--marker.status-hold svg path:nth-child(2) {
	animation: draw 2.5s cubic-bezier(0.65, 0, 0.45, 1) infinite 0.2s;
}

@media (max-width: 600px) {
	.timeline--item::after {
		left: 20px;
		margin-left: -1px;
	}
	
	.timeline--item {
		flex-direction: column;
	}
	.timeline--date {
		width: 100%;
		text-align: left;
		padding-left: 50px;
		padding-right: 0;
		margin-bottom: 5px;
		padding-top: 0;
	}
	.timeline--marker {
		left: 20px;
		top: 5px;
	}
	.timeline--item::after {
		top: 5px;
		height: calc(100% + 40px);
	}
	
	.timeline--content {
		margin-left: 50px;
		width: calc(100% - 50px);
	}
}