@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100..900&display=swap');

/* === Basic Styles === */

	* {
		margin: 0; padding: 0;
		border: 0; outline: 0;
		box-sizing: border-box;
		text-decoration: none;
		font-family: 'Montserrat', sans-serif;
		-webkit-tap-highlight-color: transparent;
	}

	img, svg {
		vertical-align: bottom;
	}

	button {
		width: 300px;
		height: 50px;
		color: white;
		display: block;
		margin: 0 auto;
		cursor: pointer;
		font-size: 18px;
		border-radius: 6px;
		font-weight: bold;
		background: #223;
	}

	#app {
		width: 100%;
		min-width: 1200px;
		min-height: 100dvh;
	}

	.page {
		display: grid;
		grid-template-columns: 300px 1fr;
	}

	aside {
		height: 100dvh;
		position: sticky;
		top: 0;
		background: #333;
	}

	.logo-wrapper {
		height: 100px;
		display: flex;
		align-items: center;
		justify-content: center;
		background: #fff1;
	}

	.logo {
		color: #bbb;
		height: 30px;
	}

	.sidenav {
		padding: 30px 20px;
	}

	.sidenav a {
		color: #fff7;
		display: block;
		font-weight: 500;
		border-radius: 8px;
		padding: 15px 15px;
		margin-bottom: 10px;
	}

	.sidenav a.active,
	.sidenav a:hover {
		background: #fff1;
	}

	main {
		min-height: 100dvh;
	}

	.page-heading {
		height: 100px;
		display: flex;
		font-size: 24px;
		align-items: center;
		justify-content: center;
		border-bottom: 1px solid #0001;
	}


	.header {
		height: 60px;
		display: flex;
		padding: 0 30px;
		position: sticky;
		align-items: center; top: 0;
		justify-content: space-around;
		background-color: #fff9;
		backdrop-filter: blur(2px);
		box-shadow: 0 1px 1px #0001;
	}

	.header-logo {
		height: 24px;
		color: #445;
	}

	.overlay {
		width: 100%;
		height: 100dvh;
		background: #0008;
		position: fixed;
		top: 0; left: 0;
		display: none;
		align-items: center;
		justify-content: center;
		backdrop-filter: blur(1px);
	}

	.overlay.show {
		display: flex;
	}

	.overlay-model {
		width: 768px;
		max-height: 80dvh;
		background: white;
		position: relative;
		overflow-x: auto;
	}

	.overlay-title {
		padding: 15px 10px;
		background: white;
		position: sticky;
		top: 0; z-index: 2;
		text-align: center;
		background: #eee;
	}

/* === Login Page === */

	.login-container {
		height: 100dvh;
		display: flex;
		align-items: center;
		justify-content: center;
		background: #333;
	}

	.login-form {
		width: 500px;
		padding: 20px;
		background: white;
		border-radius: 10px;
		border: 1px solid #0001;
	}

	.login-form h2 {
		font-size: 24px;
		text-align: center;
		margin-bottom: 40px;
	}

	.login-field {
		display: flex;
		padding: 3px 10px;
		overflow: hidden;
		margin-bottom: 30px;
		align-items: center;
		border: 1px solid #bbb;
		border-radius: 8px;
	}

	.login-form svg {
		width: 25px;
		aspect-ratio: 1;
		color: #666;
	}

	.login-form input {
		width: 100%;
		height: 54px;
		color: #555;
		font-size: 18px;
		font-weight: 500;
		padding-left: 15px;
		background: transparent;
	}

/* === Home Page === */

	.overview-card-wrapper {
		padding: 20px;
		display: grid;
		grid-gap: 20px;
		grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
	}

	.overview-card {
		height: 200px;
		padding: 20px;
		border-radius: 20px;
		border: 1px solid #0001;
		background: linear-gradient(to bottom right, #9991, #0002);
	}

	.section {
		margin: 0 auto 30px;
		max-width: 768px;
		border: 1px solid #0002;
	}

	.section-heading {
		color: #113;
		padding: 10px;
		font-size: 18px;
		font-weight: 600;
		background: #0002;
		text-align: center;
	}

	.no-data-wrap {
		display: flex;
		font-size: 16px;
		color: #445;
		align-items: center;
		justify-content: center;
		min-height: 150px;
	}

/* === Topics Page ===*/

	.topics-wrapper {}

	.topics-wrapper .add-new-wrap {
		padding: 20px;
		display: flex;
		align-items: center;
		justify-content: flex-end;
	}

	.add-topic-form,
	.edit-topic-form {
		display: grid;
		grid-gap: 20px;
		padding: 20px;
		grid-template-columns: 1fr 1fr;
	}

	.form-field {
		margin-bottom: 15px;
	}

	.form-field label {
		display: block;
		font-size: 16px;
		font-weight: 500;
		padding-bottom: 8px;
	}

	.form-field textarea,
	.form-field select,
	.searchbar select {
		width: 100%;
		padding: 10px;
		font-size: 16px;
		line-height: 1.5;
		resize: vertical;
		border: 1px solid #0002;
	}

	.topic-list-wrap,
	.leaderboard-list-wrap,
	.topic-updation-wrap {
		padding: 20px;
	}

	.topic-list-grid,
	.leaderboard-list-grid {
		display: grid;
		margin-bottom: 20px;
		border: 1px solid #ccc;
		grid-template-columns: 1fr repeat(4, 180px);
	}

	.topic-list-heading,
	.leaderboard-list-heading {
		padding: 10px 10px 5px;
		font-size: 13px;
		font-weight: 600;
		text-transform: uppercase;
		color: #aab;
		text-align: center;
	}

	.topic-list-value,
	.leaderboard-list-value {
		padding: 5px 10px 10px;
		text-align: center;
		font-size: 15px;
		font-weight: 500;
	}

	.topic-list-action-wrap,
	.leaderboard-list-action-wrap {
		display: flex;
		gap: 10px;
		flex-wrap: wrap;
		justify-content: center;
	}

	.topic-list-action-wrap a,
	.leaderboard-list-action-wrap a {
		color: white;
		font-size: 13px;
		font-weight: 500;
		padding: 5px 10px;
		background: #223;
	}

/* === Single Topic Page === */

	.topic-details-wrapper {}

	.topic-updation-wrap {}

	.topic-date-updation-form,
	.topic-completion-form {
		display: grid;
		grid-gap: 20px;
		align-items: center;
		margin-bottom: 20px;
		grid-template-columns: repeat(3, 1fr);
	}

	.leaderboard-list-grid {
		grid-template-columns: 1fr 100px 100px 120px 100px 150px 120px;
	}

	.fp-select {
		font-size: 15px;
		font-weight: 500;
		padding: 2px 12px;
		border: 1px solid #0002;
	}

	.fp-remarks {
		width: 100%;
		padding: 5px;
		resize: vertical;
		border: 1px solid #0002;
	}

	.view-logs {
		color: white;
		font-size: 14px;
		padding: 5px 10px;
		background: #223;
		display: inline-block;
	}

	.activity-logs {
		padding: 20px;
	}

	.activity-logs p {
		line-height: 2;
	}

	.activity-logs p span {
		color: #555;
		width: 160px;
		font-weight: 500;
		display: inline-block;
	}