:root {
	--orbit-blue: #173f5f;
	--orbit-blue-dark: #0e2d45;
	--orbit-yellow: #f2c14e;
	--orbit-coral: #f6d6ad;
	--orbit-mint: #a8d5ba;
	--orbit-ink: #152a36;
	--orbit-muted: #5d6d76;
	--orbit-bg: #f3f7f9;
	--orbit-border: #d9e3e8;
	--orbit-radius: 1rem;
	--orbit-shadow: 0 10px 35px rgba(23, 63, 95, .08);
}

html, body {
	background: var(--orbit-bg);
	color: var(--orbit-ink);
	font-family: Inter, Aptos, "Segoe UI", sans-serif;
	font-size: 1rem;
	line-height: 1.55;
}

h1, h2, h3 {
	color: var(--orbit-blue-dark);
	letter-spacing: -.02em;
}

h1 {
	font-size: clamp(2rem, 4vw, 2.75rem);
	font-weight: 750;
}

a {
	color: #115b8b;
	text-underline-offset: .18em;
}

.btn {
	border-radius: .65rem;
	font-weight: 700;
	min-height: 44px;
	padding: .6rem 1rem;
}

.btn-primary {
	background: var(--orbit-blue);
	border-color: var(--orbit-blue);
}

	.btn-primary:hover, .btn-primary:focus {
		background: var(--orbit-blue-dark);
		border-color: var(--orbit-blue-dark);
	}

.btn-outline-primary {
	border-color: var(--orbit-blue);
	color: var(--orbit-blue);
}

	.btn-outline-primary:hover {
		background: var(--orbit-blue);
		border-color: var(--orbit-blue);
	}

.form-control, .form-select {
	border: 1px solid #94a6b0;
	border-radius: .6rem;
	min-height: 48px;
}

	.form-control:focus, .form-select:focus, .btn:focus-visible, a:focus-visible, button:focus-visible {
		border-color: var(--orbit-blue);
		box-shadow: 0 0 0 .25rem rgba(242,193,78,.55);
		outline: none;
	}

.form-label {
	color: var(--orbit-blue-dark);
	font-weight: 700;
	margin-bottom: .45rem;
}

.skip-link {
	background: #fff;
	border: 2px solid var(--orbit-blue);
	left: 1rem;
	padding: .75rem 1rem;
	position: fixed;
	top: -100px;
	z-index: 2000;
}

	.skip-link:focus {
		top: 1rem;
	}

.application-shell {
	display: flex;
	min-height: 100vh;
}

.application-sidebar {
	background: var(--orbit-blue-dark);
	color: #fff;
	flex: 0 0 290px;
	min-height: 100vh;
	padding: 1.35rem 1rem;
	position: fixed;
	top: 0;
	bottom: 0;
	overflow-y: auto;
	width: 290px;
}

.application-main {
	margin-left: 290px;
	min-width: 0;
	width: calc(100% - 290px);
}

.application-topbar {
	align-items: center;
	background: rgba(255,255,255,.97);
	border-bottom: 1px solid var(--orbit-border);
	display: flex;
	height: 84px;
	justify-content: space-between;
	padding: 0 2.2rem;
	position: sticky;
	top: 0;
	z-index: 20;
}

.application-content {
	margin: 0 auto;
	max-width: 1500px;
	padding: 2.5rem 2.2rem 5rem;
}

.sidebar-brand {
	align-items: center;
	display: flex;
	gap: .7rem;
	padding: 0 .45rem 1.2rem;
}

	.sidebar-brand img {
		background: #fff;
		border-radius: 50%;
		object-fit: contain;
	}

	.sidebar-brand span {
		display: flex;
		flex-direction: column;
	}

	.sidebar-brand strong {
		font-size: 1.5rem;
	}

	.sidebar-brand small {
		color: #bcd0dc;
		font-size: .75rem;
		text-transform: uppercase;
	}

.sidebar-house-card {
	background: rgba(255,255,255,.09);
	border: 1px solid rgba(255,255,255,.15);
	border-radius: .75rem;
	margin-bottom: 1rem;
	padding: .8rem;
}

	.sidebar-house-card span, .sidebar-house-card strong {
		display: block;
	}

	.sidebar-house-card span {
		color: #bcd0dc;
		font-size: .72rem;
		font-weight: 800;
		letter-spacing: .06em;
		text-transform: uppercase;
	}

	.sidebar-house-card strong {
		font-size: .94rem;
		margin-top: .25rem;
	}

.sidebar-navigation {
	display: flex;
	flex-direction: column;
	gap: .25rem;
}

	.sidebar-navigation a {
		align-items: center;
		border-radius: .65rem;
		color: #e3edf2;
		display: grid;
		gap: .7rem;
		grid-template-columns: 28px 1fr;
		min-height: 49px;
		padding: .6rem .7rem;
		text-decoration: none;
	}

		.sidebar-navigation a small {
			color: #a9c1cf;
			font-size: .65rem;
			grid-column: 2;
			margin-top: -.5rem;
		}

		.sidebar-navigation a:hover {
			background: rgba(255,255,255,.08);
			color: #fff;
		}

		.sidebar-navigation a.active {
			background: var(--orbit-yellow);
			color: var(--orbit-blue-dark);
			font-weight: 800;
		}

			.sidebar-navigation a.active small {
				color: var(--orbit-blue);
			}

		.sidebar-navigation a.nav-child-link {
			border-left: 2px solid rgba(255,255,255,.25);
			margin-left: 1.25rem;
			width: calc(100% - 1.25rem);
		}

.nav-symbol {
	font-family: "Segoe UI Emoji", "Apple Color Emoji", sans-serif;
	font-size: 1.25rem;
	line-height: 1;
	text-align: center;
}

.sidebar-help {
	background: rgba(168,213,186,.13);
	border: 1px solid rgba(168,213,186,.3);
	border-radius: .7rem;
	margin-top: 1.25rem;
	padding: .85rem;
}

	.sidebar-help p {
		color: #d2e1e9;
		font-size: .82rem;
		margin: .25rem 0 0;
	}

	.sidebar-help a {
		color: #fff;
	}

.sidebar-actions {
	border-top: 1px solid rgba(255,255,255,.14);
	display: flex;
	flex-direction: column;
	gap: .5rem;
	margin-top: 1rem;
	padding: 1rem .4rem 0;
}

	.sidebar-actions a, .sidebar-actions button {
		background: transparent;
		border: 0;
		color: #dce8ee;
		padding: .25rem;
		text-align: left;
	}

.topbar-house {
	color: var(--orbit-muted);
	font-weight: 700;
}

.topbar-user {
	align-items: center;
	display: flex;
	gap: .7rem;
}

	.topbar-user > span:last-child {
		display: flex;
		flex-direction: column;
	}

	.topbar-user small {
		color: var(--orbit-muted);
	}

.user-initials {
	align-items: center;
	background: var(--orbit-coral);
	border-radius: 50%;
	color: var(--orbit-blue);
	display: flex;
	font-weight: 800;
	height: 44px;
	justify-content: center;
	width: 44px;
}

.mobile-menu-button {
	background: transparent;
	border: 1px solid var(--orbit-blue);
	border-radius: .5rem;
	color: var(--orbit-blue);
	display: none;
	font-weight: 700;
	padding: .55rem .75rem;
}

.page-heading-row {
	align-items: flex-end;
	display: flex;
	gap: 2rem;
	justify-content: space-between;
	margin-bottom: 2rem;
}

	.page-heading-row p {
		color: var(--orbit-muted);
		font-size: 1.08rem;
		margin: .45rem 0 0;
		max-width: 800px;
	}

.eyebrow {
	color: #765908;
	font-size: .78rem;
	font-weight: 800;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.back-link {
	display: inline-block;
	font-weight: 700;
	margin-bottom: .75rem;
}

.demo-notice {
	background: #fff5d9;
	border: 1px solid #e8ce88;
	border-left: 5px solid var(--orbit-yellow);
	border-radius: .65rem;
	margin-bottom: 2rem;
	padding: 1rem 1.1rem;
}

.summary-card {
	align-items: center;
	background: #fff;
	border: 1px solid var(--orbit-border);
	border-radius: var(--orbit-radius);
	box-shadow: var(--orbit-shadow);
	color: var(--orbit-ink);
	display: flex;
	gap: 1rem;
	height: 100%;
	padding: 1.25rem;
	text-decoration: none;
}

	.summary-card:hover {
		border-color: var(--orbit-yellow);
		color: var(--orbit-ink);
		transform: translateY(-2px);
	}

	.summary-card > span:last-child {
		display: flex;
		flex-direction: column;
	}

	.summary-card strong {
		color: var(--orbit-blue-dark);
		font-size: 1.55rem;
	}

	.summary-card small {
		color: var(--orbit-muted);
	}

.summary-icon {
	align-items: center;
	border-radius: .75rem;
	display: flex;
	flex: 0 0 52px;
	font-size: 1.25rem;
	font-weight: 900;
	height: 52px;
	justify-content: center;
}

.summary-icon-active {
	background: #dff0e6;
	color: #176442;
}

.summary-icon-draft {
	background: #fff0cc;
	color: #785800;
}

.summary-icon-users {
	background: #deecf3;
	color: var(--orbit-blue);
}

.summary-icon-profile {
	background: #fbe7d0;
	color: #824b10;
}

.content-card, .form-section-card, .filter-card {
	background: #fff;
	border: 1px solid var(--orbit-border);
	border-radius: var(--orbit-radius);
	box-shadow: var(--orbit-shadow);
	overflow: hidden;
}

.content-card-header {
	align-items: center;
	border-bottom: 1px solid var(--orbit-border);
	display: flex;
	justify-content: space-between;
	padding: 1.25rem 1.4rem;
}

	.content-card-header h2 {
		font-size: 1.35rem;
		margin: 0;
	}

	.content-card-header p {
		color: var(--orbit-muted);
		margin: .2rem 0 0;
	}

	.content-card-header > a {
		font-weight: 700;
	}

.responsive-table {
	overflow-x: auto;
}

.table {
	min-width: 760px;
}

	.table thead th {
		background: #f4f7f8;
		color: #415661;
		font-size: .76rem;
		letter-spacing: .05em;
		padding: .85rem 1.1rem;
		text-transform: uppercase;
	}

	.table tbody td {
		padding: 1rem 1.1rem;
	}

		.table tbody td strong, .table tbody td small {
			display: block;
		}

		.table tbody td small {
			color: var(--orbit-muted);
			margin-top: .2rem;
		}

.status-badge {
	border-radius: 2rem;
	display: inline-block;
	font-size: .78rem;
	font-weight: 800;
	padding: .35rem .7rem;
}

.status-active {
	background: #dff0e6;
	color: #155d3d;
}

.status-draft {
	background: #fff0cc;
	color: #705200;
}

.status-expired {
	background: #e7ebed;
	color: #46575f;
}

.status-inactive {
	background: #e7ebed;
	color: #3f5059;
}

.table-actions {
	display: flex;
	gap: .45rem;
	white-space: nowrap;
}

.quick-actions {
	display: flex;
	flex-direction: column;
}

	.quick-actions a {
		align-items: center;
		border-bottom: 1px solid var(--orbit-border);
		color: var(--orbit-ink);
		display: grid;
		gap: .1rem .8rem;
		grid-template-columns: 42px 1fr;
		padding: 1rem 1.3rem;
		text-decoration: none;
	}

		.quick-actions a:hover {
			background: var(--orbit-bg);
		}

		.quick-actions a > span {
			align-items: center;
			background: #edf4f7;
			border-radius: .6rem;
			color: var(--orbit-blue);
			display: flex;
			grid-row: span 2;
			height: 42px;
			justify-content: center;
		}

	.quick-actions small {
		color: var(--orbit-muted);
	}

.filter-card {
	padding: 1.25rem;
}

.empty-state {
	padding: 3rem;
	text-align: center;
}

.form-section-card {
	margin-bottom: 1.5rem;
	padding: 1.5rem;
}

.form-section-heading {
	align-items: flex-start;
	border-bottom: 1px solid var(--orbit-border);
	display: flex;
	gap: 1rem;
	margin-bottom: 1.5rem;
	padding-bottom: 1.25rem;
}

	.form-section-heading > span {
		align-items: center;
		background: var(--orbit-yellow);
		border-radius: 50%;
		color: var(--orbit-blue-dark);
		display: flex;
		flex: 0 0 40px;
		font-size: 1.1rem;
		font-weight: 900;
		height: 40px;
		justify-content: center;
	}

	.form-section-heading h2 {
		font-size: 1.5rem;
		margin: 0;
	}

	.form-section-heading p {
		color: var(--orbit-muted);
		margin: .25rem 0 0;
	}

.required-label {
	color: #9a2c20;
	font-size: .72rem;
	font-weight: 800;
	text-transform: uppercase;
}

.field-help {
	align-items: center;
	background: #e8f0f4;
	border: 0;
	border-radius: 50%;
	color: var(--orbit-blue);
	display: inline-flex;
	font-size: .72rem;
	font-weight: 900;
	height: 22px;
	justify-content: center;
	margin-left: .25rem;
	vertical-align: middle;
	width: 22px;
}

.address-notice {
	background: #e9f4ed;
	border: 1px solid #b8d8c3;
	border-radius: .65rem;
	display: flex;
	flex-direction: column;
	padding: .9rem 1rem;
}

	.address-notice span {
		color: var(--orbit-muted);
	}

.form-actions {
	align-items: center;
	background: #fff;
	border: 1px solid var(--orbit-border);
	border-radius: var(--orbit-radius);
	bottom: 1rem;
	box-shadow: 0 8px 30px rgba(23,63,95,.14);
	display: flex;
	gap: 1rem;
	justify-content: space-between;
	padding: 1rem;
	position: sticky;
	z-index: 10;
}

.form-action-feedback {
	flex: 1 1 360px;
	min-width: 0;
}

	.form-action-feedback:empty {
		display: none;
	}

.form-action-buttons {
	display: flex;
	flex: 0 0 auto;
	flex-wrap: wrap;
	gap: .75rem;
	justify-content: flex-end;
}

.save-confirmation {
	border-left: 5px solid #278455;
	font-size: 1.05rem;
}

.validation-message {
	color: #a01d16;
}

.invalid {
	border-color: #a01d16;
}

.file-upload-area {
	align-items: center;
	background: var(--orbit-bg);
	border: 2px dashed #8ca2ae;
	border-radius: var(--orbit-radius);
	cursor: pointer;
	display: flex;
	flex-direction: column;
	padding: 2.5rem 1.5rem;
	text-align: center;
}

	.file-upload-area > span {
		color: var(--orbit-blue);
		font-size: 2.4rem;
	}

	.file-upload-area small {
		color: var(--orbit-muted);
	}

	.file-upload-area input {
		margin-top: 1rem;
	}

.selected-file {
	background: #e7f3eb;
	border-radius: .5rem;
	margin-top: 1rem;
	padding: .8rem;
}

.plain-check-list {
	list-style: none;
	padding: 0;
}

	.plain-check-list li {
		border-bottom: 1px solid var(--orbit-border);
		padding: .75rem 0 .75rem 1.8rem;
		position: relative;
	}

		.plain-check-list li::before {
			color: #1c754d;
			content: "✓";
			font-weight: 900;
			left: .2rem;
			position: absolute;
		}

.role-explanation {
	background: #eaf2f6;
	border: 1px solid #c5d7e0;
	border-radius: .7rem;
	padding: 1rem 1.2rem;
}

	.role-explanation > strong {
		color: var(--orbit-blue);
		display: block;
		margin-bottom: .4rem;
	}

	.role-explanation div {
		display: flex;
		flex-wrap: wrap;
		gap: .5rem 1.5rem;
	}

.login-page-shell {
	background: linear-gradient(145deg, #eef4f7 0%, #f9fbfc 50%, #fdf5e7 100%);
	min-height: 100vh;
}

.login-card {
	border-radius: 1.25rem;
}

.login-logo {
	background: #fff;
	border-radius: 50%;
	box-shadow: var(--orbit-shadow);
	object-fit: contain;
	padding: .35rem;
}

.category-status-switch {
	align-items: flex-start;
	background: var(--orbit-bg);
	border: 1px solid var(--orbit-border);
	border-radius: .75rem;
	display: flex;
	gap: .75rem;
	padding: 1rem 1rem 1rem 3.5rem;
}

	.category-status-switch .form-check-input {
		height: 1.4rem;
		margin-left: -2.5rem;
		width: 2.6rem;
	}

	.category-status-switch .form-check-label span {
		color: var(--orbit-muted);
		display: block;
		font-size: .92rem;
		margin-top: .15rem;
	}

.program-category-table td:nth-child(2) {
	min-width: 360px;
}

.management-stat-card {
	background: #fff;
	border: 1px solid var(--orbit-border);
	border-radius: var(--orbit-radius);
	box-shadow: var(--orbit-shadow);
	display: flex;
	flex-direction: column;
	height: 100%;
	padding: 1.15rem 1.25rem;
}

	.management-stat-card > strong {
		color: var(--orbit-blue-dark);
		font-size: 1.8rem;
		margin-top: .45rem;
	}

	.management-stat-card > small {
		color: var(--orbit-muted);
	}

	.management-stat-card > .status-badge {
		align-self: flex-start;
	}

.summary-mini-label {
	color: var(--orbit-blue);
	font-size: .78rem;
	font-weight: 800;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.management-form-section {
	border-bottom: 1px solid var(--orbit-border);
	margin-bottom: 1.5rem;
	padding-bottom: 1.5rem;
}

	.management-form-section h3 {
		font-size: 1.15rem;
		margin-bottom: 1rem;
	}

.management-table td:first-child {
	min-width: 240px;
}

.temporary-password-panel {
	align-items: center;
	display: grid;
	gap: 1rem;
	grid-template-columns: minmax(0, 1fr) auto auto;
}

	.temporary-password-panel div {
		display: flex;
		flex-direction: column;
	}

	.temporary-password-panel code {
		background: #fff;
		border: 1px solid #8fc2a4;
		border-radius: .5rem;
		color: var(--orbit-blue-dark);
		font-size: 1rem;
		font-weight: 800;
		padding: .6rem .8rem;
		user-select: all;
	}

.offcanvas {
	background: var(--orbit-blue-dark);
	color: #fff;
}

	.offcanvas .sidebar-help, .offcanvas .sidebar-actions {
		margin-left: 1rem;
		margin-right: 1rem;
	}

#blazor-error-ui {
	background: #fff3cd;
	bottom: 0;
	box-shadow: 0 -2px 8px rgba(0,0,0,.2);
	display: none;
	left: 0;
	padding: .8rem 1.2rem;
	position: fixed;
	width: 100%;
	z-index: 2000;
}

.loading-progress {
	display: block;
	height: 8rem;
	inset: 20vh 0 auto;
	margin: auto;
	position: absolute;
	width: 8rem;
}

	.loading-progress circle {
		fill: none;
		stroke: #dce5e9;
		stroke-width: .6rem;
		transform: rotate(-90deg);
		transform-origin: 50% 50%;
	}

		.loading-progress circle:last-child {
			stroke: var(--orbit-blue);
			stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * .8), 500%;
		}

.loading-progress-text {
	font-weight: 700;
	inset: calc(20vh + 3.25rem) 0 auto;
	position: absolute;
	text-align: center;
}

	.loading-progress-text::after {
		content: var(--blazor-load-percentage-text, "Loading Orbit");
	}

h1:focus {
	outline: none;
}

@media (max-width: 1099.98px) {
	.application-sidebar {
		display: none;
	}

	.application-main {
		margin-left: 0;
		width: 100%;
	}

	.mobile-menu-button {
		display: inline-block;
	}

	.topbar-house {
		display: none;
	}
}

@media (max-width: 767.98px) {
	.application-topbar {
		height: 72px;
		padding: 0 1rem;
	}

	.application-content {
		padding: 1.5rem 1rem 4rem;
	}

	.topbar-user small {
		display: none;
	}

	.page-heading-row {
		align-items: stretch;
		flex-direction: column;
		gap: 1rem;
	}

		.page-heading-row .btn {
			width: 100%;
		}

	.form-section-card {
		padding: 1.1rem;
	}

	.form-actions {
		align-items: stretch;
		flex-direction: column;
		position: static;
	}

	.form-action-buttons {
		flex-direction: column-reverse;
	}

		.form-action-buttons .btn {
			width: 100%;
		}

	.role-explanation div {
		flex-direction: column;
	}

	.content-card-header {
		align-items: flex-start;
		flex-direction: column;
		gap: 1rem;
	}

		.content-card-header .btn {
			width: 100%;
		}

	.temporary-password-panel {
		align-items: stretch;
		grid-template-columns: 1fr auto;
	}

		.temporary-password-panel div, .temporary-password-panel code {
			grid-column: 1 / -1;
		}
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		transition-duration: .01ms !important;
	}
}
