.cpc-app,
.cpc-auth-shell,
.cpc-access-gate,
.cpc-verification-body {
	--bg: #f6f7fb;
	--surface: #ffffff;
	--surface-subtle: #f0f2f7;
	--border: #e4e7ee;
	--text-primary: #14161f;
	--text-secondary: #6b7089;
	--accent: #4f46e5;
	--accent-soft: #eef0ff;
	--success: #16a34a;
	--success-soft: #eafbf0;
	--text: var(--text-primary);
	--muted: var(--text-secondary);
	--muted-strong: #4d5668;
	--border-strong: #cbd2dc;
	--accent-dark: #4338ca;
	--danger: #b42318;
	--danger-soft: #fff0ee;
	--nav: #111827;
	--nav-muted: #99a3b4;
	--shadow: 0 18px 46px rgba(24, 33, 50, 0.08);
	--shadow-sm: 0 1px 2px rgba(20, 22, 31, 0.04);
	--radius-sm: 8px;
	--radius: 12px;
	--radius-lg: 20px;
}

.cpc-app,
.cpc-auth-shell,
.cpc-access-gate {
	box-sizing: border-box;
	color: var(--text);
	font-family: "Poppins", sans-serif;
	font-size: 15px;
	font-weight: 400;
	line-height: 1.65;
}

.cpc-app *,
.cpc-auth-shell *,
.cpc-access-gate * {
	box-sizing: border-box;
}

.cpc-app svg,
.cpc-auth-shell svg,
.cpc-access-gate svg {
	display: block;
	fill: none;
	height: 20px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.8;
	width: 20px;
}

.cpc-dashboard-root.cpc-app {
	background: var(--bg);
	border: 1px solid var(--border);
	border-radius: var(--radius-lg);
	box-sizing: border-box;
	box-shadow: none;
	display: grid;
	gap: 24px;
	grid-template-columns: 280px minmax(0, 1fr);
	margin: 28px auto;
	max-width: 1200px;
	min-height: 820px;
	overflow: hidden;
	width: 100%;
}

.cpc-app h1,
.cpc-app h2,
.cpc-app h3,
.cpc-auth-shell h2,
.cpc-access-gate h2 {
	color: var(--text);
	font-family: "Poppins", sans-serif;
	font-weight: 600;
	letter-spacing: -0.025em;
	line-height: 1.25;
	margin: 0;
}

.cpc-app p,
.cpc-auth-shell p,
.cpc-access-gate p {
	margin-top: 0;
}

.cpc-sidebar {
	background: var(--nav);
	color: #fff;
	display: flex;
	flex-direction: column;
	min-width: 0;
	padding: 26px 18px 30px;
}

.cpc-brand {
	align-items: center;
	display: flex;
	gap: 12px;
	padding: 0 10px 24px;
}

.cpc-brand-icon {
	align-items: center;
	background: var(--accent);
	border-radius: 10px;
	display: inline-flex;
	flex: 0 0 40px;
	height: 40px;
	justify-content: center;
}

.cpc-brand-icon svg {
	height: 22px;
	width: 22px;
}

.cpc-brand > span:last-child {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.cpc-brand strong {
	font-size: 14px;
	font-weight: 600;
}

.cpc-brand small {
	color: var(--nav-muted);
	font-size: 11px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.cpc-primary-nav {
	border-bottom: 1px solid rgba(255, 255, 255, 0.1);
	display: grid;
	gap: 4px;
	padding-bottom: 20px;
}

.cpc-primary-nav a {
	align-items: center;
	border-radius: 9px;
	color: var(--nav-muted);
	display: flex;
	font-size: 13px;
	font-weight: 500;
	gap: 11px;
	padding: 10px 12px;
	text-decoration: none;
	transition: background-color 160ms ease, color 160ms ease;
}

.cpc-primary-nav a:hover,
.cpc-primary-nav a:focus,
.cpc-primary-nav a.is-active {
	background: rgba(255, 255, 255, 0.09);
	color: #fff;
	outline: none;
}

.cpc-primary-nav svg {
	height: 17px;
	width: 17px;
}

.cpc-module-nav {
	min-height: 0;
	padding-top: 22px;
}

.cpc-sidebar-heading {
	align-items: center;
	color: var(--nav-muted);
	display: flex;
	font-size: 10px;
	font-weight: 600;
	justify-content: space-between;
	letter-spacing: 0.09em;
	padding: 0 10px 11px;
	text-transform: uppercase;
}

.cpc-sidebar-heading span:last-child {
	background: rgba(255, 255, 255, 0.09);
	border-radius: 10px;
	color: #d9dee7;
	line-height: 20px;
	min-width: 22px;
	text-align: center;
}

.cpc-module-nav ol {
	display: grid;
	gap: 3px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.cpc-module-nav li {
	margin: 0;
}

.cpc-module-nav a {
	align-items: center;
	border: 1px solid transparent;
	border-radius: 10px;
	color: #b2bac8;
	display: flex;
	gap: 10px;
	min-width: 0;
	padding: 9px 8px;
	text-decoration: none;
	transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease;
}

.cpc-module-nav a:hover,
.cpc-module-nav a:focus {
	background: rgba(255, 255, 255, 0.06);
	color: #fff;
	outline: none;
}

.cpc-module-nav a.is-current {
	background: rgba(79, 70, 229, 0.18);
	border-color: transparent;
	border-left: 3px solid var(--accent);
	color: #fff;
	padding-left: 6px;
}

.cpc-module-state {
	align-items: center;
	border: 1px solid #5f6979;
	border-radius: 50%;
	color: #b8c0cd;
	display: inline-flex;
	flex: 0 0 28px;
	font-size: 10px;
	height: 28px;
	justify-content: center;
}

.cpc-module-state .cpc-module-check {
	display: none;
}

.cpc-module-state.is-complete {
	background: var(--success);
	border-color: var(--success);
	color: #fff;
}

.cpc-module-nav a.is-current .cpc-module-state:not(.is-complete) {
	background: var(--accent);
	border-color: var(--accent);
	color: #fff;
}

.cpc-module-state.is-complete .cpc-module-number {
	display: none;
}

.cpc-module-state.is-complete .cpc-module-check {
	display: block;
}

.cpc-module-state svg {
	height: 15px;
	stroke-width: 2.4;
	width: 15px;
}

.cpc-module-copy {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.cpc-module-copy strong {
	font-size: 11px;
	font-weight: 500;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.cpc-module-copy small {
	color: #7e899a;
	font-size: 10px;
}

.cpc-sidebar-empty {
	color: var(--nav-muted);
	font-size: 12px;
	padding: 0 10px;
}

.cpc-workspace {
	min-width: 0;
}

.cpc-topbar {
	align-items: center;
	background: var(--surface);
	border-bottom: 1px solid var(--border);
	display: flex;
	justify-content: space-between;
	min-height: 96px;
	padding: 20px 38px;
}

.cpc-topbar h1 {
	font-size: 21px;
}

.cpc-eyebrow {
	color: var(--accent);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.11em;
	margin-bottom: 4px;
	text-transform: uppercase;
}

.cpc-student-menu {
	align-items: center;
	display: flex;
	gap: 12px;
}

.cpc-student-menu > span:first-child {
	display: flex;
	flex-direction: column;
	text-align: right;
}

.cpc-student-menu strong {
	font-size: 12px;
	font-weight: 600;
}

.cpc-student-menu small {
	color: var(--muted);
	font-size: 10px;
}

.cpc-avatar {
	align-items: center;
	background: var(--text);
	border-radius: 50%;
	color: #fff;
	display: inline-flex;
	font-size: 11px;
	font-weight: 600;
	height: 40px;
	justify-content: center;
	letter-spacing: 0.04em;
	width: 40px;
}

.cpc-main {
	padding: 36px 38px 48px;
}

.cpc-progress-card,
.cpc-learning-panel,
.cpc-certificate-section,
.cpc-empty-state {
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	box-shadow: none;
	transition: box-shadow 160ms ease;
}

.cpc-progress-card:hover,
.cpc-learning-panel:hover,
.cpc-certificate-section:hover,
.cpc-empty-state:hover {
	box-shadow: var(--shadow-sm);
}

.cpc-progress-card {
	margin-bottom: 24px;
	padding: 24px 26px;
}

.cpc-progress-copy {
	align-items: flex-end;
	display: flex;
	gap: 24px;
	justify-content: space-between;
	margin-bottom: 17px;
}

.cpc-progress-copy h2 {
	font-size: 17px;
}

.cpc-progress-percent {
	color: var(--accent);
	font-size: 25px;
	font-weight: 600;
	line-height: 1;
}

.cpc-progress-track {
	background: var(--surface-subtle);
	border-radius: 4px;
	height: 6px;
	overflow: hidden;
}

.cpc-progress-track span {
	background: var(--accent);
	border-radius: inherit;
	display: block;
	height: 100%;
	transition: width 300ms ease;
}

.cpc-learning-panel {
	overflow: hidden;
}

.cpc-video-frame {
	aspect-ratio: 16 / 9;
	background: #0c111b;
	position: relative;
}

.cpc-video-frame iframe {
	border: 0;
	display: block;
	height: 100%;
	width: 100%;
}

.cpc-video-placeholder {
	align-items: center;
	color: #b8c0cd;
	display: flex;
	flex-direction: column;
	gap: 14px;
	height: 100%;
	justify-content: center;
	padding: 30px;
	text-align: center;
}

.cpc-video-placeholder svg {
	color: #fff;
	height: 38px;
	width: 38px;
}

.cpc-video-placeholder p {
	font-size: 13px;
	margin-bottom: 0;
}

.cpc-module-detail {
	padding: 30px 32px 32px;
}

.cpc-module-heading {
	align-items: flex-start;
	display: flex;
	gap: 24px;
	justify-content: space-between;
}

.cpc-module-heading h2 {
	font-size: 25px;
}

.cpc-duration {
	align-items: center;
	color: var(--muted);
	display: flex;
	font-size: 12px;
	gap: 7px;
	margin: 9px 0 0;
}

.cpc-duration svg {
	height: 16px;
	width: 16px;
}

.cpc-module-description {
	border-top: 1px solid var(--border);
	color: var(--muted-strong);
	font-size: 13px;
	margin-top: 24px;
	padding-top: 22px;
}

.cpc-module-pagination {
	align-items: center;
	display: flex;
	gap: 12px;
	justify-content: space-between;
	margin-top: 24px;
}

.cpc-button {
	align-items: center;
	background: var(--surface);
	border: 1px solid var(--border-strong);
	border-radius: var(--radius-sm);
	color: var(--text);
	cursor: pointer;
	display: inline-flex;
	font-family: "Poppins", sans-serif;
	font-size: 12px;
	font-weight: 500;
	gap: 8px;
	justify-content: center;
	line-height: 1.2;
	min-height: 42px;
	padding: 11px 17px;
	text-decoration: none;
	transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease;
}

.cpc-button:hover,
.cpc-button:focus {
	border-color: var(--accent);
	color: var(--accent);
	outline: none;
	transform: translateY(-1px);
}

.cpc-button svg {
	height: 17px;
	width: 17px;
}

.cpc-button-primary {
	background: var(--accent);
	border-color: var(--accent);
	color: #fff;
}

.cpc-button-primary:hover,
.cpc-button-primary:focus {
	background: var(--accent-dark);
	border-color: var(--accent-dark);
	color: #fff;
}

.cpc-button-full {
	width: 100%;
}

.cpc-completion-toggle {
	flex: 0 0 auto;
}

.cpc-completion-toggle .cpc-button-icon {
	display: none;
}

.cpc-completion-toggle.is-complete {
	background: var(--success-soft);
	border-color: #b7e6c5;
	color: var(--success);
}

.cpc-completion-toggle.is-complete .cpc-button-icon {
	display: inline-flex;
}

.cpc-completion-toggle.is-loading {
	cursor: wait;
	opacity: 0.62;
	pointer-events: none;
}

.cpc-save-message {
	color: var(--muted);
	font-size: 11px;
	margin: 12px 0 0;
	min-height: 18px;
}

.cpc-save-message.is-error {
	color: var(--danger);
}

.cpc-certificate-section {
	margin-top: 24px;
	padding: 30px 32px 32px;
}

.cpc-section-heading {
	align-items: flex-start;
	display: flex;
	gap: 24px;
	justify-content: space-between;
}

.cpc-section-heading h2 {
	font-size: 20px;
}

.cpc-status-pill {
	background: var(--surface-subtle);
	border: 1px solid var(--border);
	border-radius: 20px;
	color: var(--muted-strong);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.04em;
	padding: 5px 10px;
	text-transform: uppercase;
}

.cpc-certificate-section.is-unlocked .cpc-status-pill {
	background: var(--success-soft);
	border-color: #b7e6c5;
	color: var(--success);
}

.cpc-certificate-locked {
	align-items: center;
	background: var(--surface-subtle);
	border: 1px solid var(--border);
	border-radius: 10px;
	display: flex;
	gap: 18px;
	margin-top: 24px;
	padding: 22px;
}

.cpc-certificate-lock {
	align-items: center;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: 50%;
	color: var(--muted);
	display: inline-flex;
	flex: 0 0 46px;
	height: 46px;
	justify-content: center;
}

.cpc-certificate-locked strong {
	display: block;
	font-size: 13px;
	font-weight: 600;
}

.cpc-certificate-locked p {
	color: var(--muted);
	font-size: 12px;
	margin: 3px 0 0;
}

.cpc-certificate-unlocked {
	margin-top: 24px;
}

.cpc-canvas-wrap {
	background: #e8ebf0;
	border: 1px solid var(--border);
	border-radius: 10px;
	margin-bottom: 18px;
	overflow: hidden;
	padding: 16px;
}

.cpc-canvas-wrap canvas {
	background: #fff8e7;
	box-shadow: 0 8px 24px rgba(21, 25, 35, 0.12);
	display: block;
	height: auto;
	width: 100%;
}

[hidden] {
	display: none !important;
}

.cpc-empty-state {
	padding: 70px 32px;
	text-align: center;
}

.cpc-empty-state > svg {
	color: var(--accent);
	height: 42px;
	margin: 0 auto 18px;
	width: 42px;
}

.cpc-empty-state h2 {
	font-size: 21px;
}

.cpc-empty-state p {
	color: var(--muted);
	font-size: 13px;
	margin: 8px 0 0;
}

.cpc-auth-shell,
.cpc-access-gate {
	background: var(--bg);
	padding: 50px 20px;
}

.cpc-auth-panel,
.cpc-access-gate {
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	box-shadow: none;
	margin: 0 auto;
	max-width: 480px;
	padding: 38px;
	transition: box-shadow 160ms ease;
}

.cpc-auth-panel:hover,
.cpc-access-gate:hover {
	box-shadow: var(--shadow-sm);
}

.cpc-auth-mark,
.cpc-access-icon {
	align-items: center;
	background: var(--nav);
	border-radius: 10px;
	color: #fff;
	display: flex;
	height: 44px;
	justify-content: center;
	margin-bottom: 24px;
	width: 44px;
}

.cpc-auth-panel h2,
.cpc-access-gate h2 {
	font-size: 26px;
}

.cpc-auth-intro,
.cpc-access-gate > p {
	color: var(--muted);
	font-size: 13px;
	margin: 8px 0 24px;
}

.cpc-auth-form {
	display: grid;
	gap: 9px;
}

.cpc-auth-form label {
	color: var(--muted-strong);
	font-size: 11px;
	font-weight: 600;
	margin-top: 7px;
}

.cpc-auth-form input[type="text"],
.cpc-auth-form input[type="email"],
.cpc-auth-form input[type="password"] {
	appearance: none;
	background: var(--surface);
	border: 1px solid var(--border-strong);
	border-radius: var(--radius-sm);
	box-shadow: none;
	color: var(--text);
	font-family: "Poppins", sans-serif;
	font-size: 13px;
	min-height: 46px;
	padding: 10px 13px;
	width: 100%;
}

.cpc-auth-form input:focus {
	border-color: var(--accent);
	box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12);
	outline: none;
}

.cpc-auth-form .cpc-button {
	margin-top: 13px;
}

.cpc-checkbox {
	align-items: center;
	display: flex;
	gap: 8px;
}

.cpc-checkbox input {
	accent-color: var(--accent);
}

.cpc-auth-footnote {
	border-top: 1px solid var(--border);
	color: var(--muted);
	font-size: 11px;
	margin: 24px 0 0;
	padding-top: 18px;
}

.cpc-text-link {
	color: var(--accent);
	display: inline-block;
	font-size: 11px;
	font-weight: 500;
	margin-top: 18px;
	text-decoration: none;
}

.cpc-form-error {
	background: var(--danger-soft);
	border: 1px solid #f3c7c2;
	border-radius: var(--radius-sm);
	color: var(--danger);
	font-size: 12px;
	margin-bottom: 18px;
	padding: 11px 13px;
}

.cpc-auth-success p {
	color: var(--muted);
	font-size: 13px;
	margin: 10px 0 22px;
}

.cpc-access-gate {
	text-align: left;
}

.cpc-access-actions {
	display: flex;
	gap: 10px;
	margin-top: 24px;
}

.cpc-verification-body {
	align-items: center;
	background: var(--bg);
	display: flex;
	font-family: "Poppins", sans-serif;
	justify-content: center;
	margin: 0;
	min-height: 100vh;
	padding: 28px;
}

.cpc-verification-page {
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: 12px;
	box-shadow: none;
	color: var(--text-primary);
	max-width: 620px;
	padding: 42px;
	transition: box-shadow 160ms ease;
	width: 100%;
}

.cpc-verification-page:hover {
	box-shadow: var(--shadow-sm);
}

.cpc-verification-page h1 {
	font-family: "Poppins", sans-serif;
	font-size: 28px;
	font-weight: 600;
	letter-spacing: -0.03em;
	margin: 0;
}

.cpc-verification-mark {
	align-items: center;
	border-radius: 50%;
	display: flex;
	height: 48px;
	justify-content: center;
	margin-bottom: 22px;
	width: 48px;
}

.cpc-verification-mark.is-valid {
	background: var(--success-soft);
	color: var(--success);
}

.cpc-verification-mark.is-invalid {
	background: #fff0ee;
	color: var(--danger);
}

.cpc-verification-mark svg {
	height: 23px;
	stroke-width: 2.3;
	width: 23px;
}

.cpc-verification-summary {
	color: var(--text-secondary);
	font-size: 14px;
	margin: 12px 0 26px;
}

.cpc-verification-page dl {
	border-bottom: 1px solid var(--border);
	border-top: 1px solid var(--border);
	margin: 0;
	padding: 6px 0;
}

.cpc-verification-page dl div {
	align-items: baseline;
	display: flex;
	gap: 20px;
	justify-content: space-between;
	padding: 10px 0;
}

.cpc-verification-page dt {
	color: var(--text-secondary);
	font-size: 12px;
}

.cpc-verification-page dd {
	font-size: 13px;
	font-weight: 600;
	margin: 0;
	text-align: right;
}

.cpc-verification-reference {
	color: var(--text-secondary);
	font-size: 10px;
	margin: 20px 0 0;
	overflow-wrap: anywhere;
}

@media (max-width: 980px) {
	.cpc-topbar,
	.cpc-main {
		padding-left: 26px;
		padding-right: 26px;
	}

	.cpc-module-heading {
		align-items: stretch;
		flex-direction: column;
	}

	.cpc-module-pagination {
		align-items: stretch;
		flex-direction: column;
	}

	.cpc-module-pagination .cpc-button {
		width: 100%;
	}

	.cpc-completion-toggle {
		align-self: flex-start;
	}
}

@media (max-width: 768px) {
	.cpc-dashboard-root.cpc-app {
		display: block;
		margin: 10px auto;
	}

	.cpc-sidebar {
		padding: 18px;
	}

	.cpc-brand {
		padding-bottom: 16px;
	}

	.cpc-primary-nav {
		border-bottom: 0;
		display: flex;
		overflow-x: auto;
		padding-bottom: 4px;
	}

	.cpc-primary-nav a {
		flex: 0 0 auto;
	}

	.cpc-module-nav {
		padding-top: 16px;
	}

	.cpc-module-nav ol {
		display: flex;
		overflow-x: auto;
		padding-bottom: 5px;
	}

	.cpc-module-nav li {
		flex: 0 0 210px;
	}

	.cpc-topbar {
		min-height: 82px;
		padding: 16px 20px;
	}

	.cpc-topbar h1 {
		font-size: 17px;
	}

	.cpc-student-menu > span:first-child {
		display: none;
	}

	.cpc-main {
		padding: 20px;
	}

	.cpc-progress-copy,
	.cpc-section-heading {
		align-items: flex-start;
	}

	.cpc-module-detail,
	.cpc-certificate-section {
		padding: 24px 20px;
	}

	.cpc-module-heading h2 {
		font-size: 21px;
	}
}

@media (max-width: 520px) {
	.cpc-progress-copy,
	.cpc-section-heading {
		flex-direction: column;
		gap: 12px;
	}

	.cpc-progress-percent {
		font-size: 21px;
	}

	.cpc-certificate-locked {
		align-items: flex-start;
	}

	.cpc-auth-panel,
	.cpc-access-gate {
		padding: 28px 22px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.cpc-app *,
	.cpc-auth-shell *,
	.cpc-access-gate * {
		scroll-behavior: auto !important;
		transition: none !important;
	}
}

/* Version 1.3: responsive learning experience. */
.cpc-app,
.cpc-auth-shell,
.cpc-access-gate,
.cpc-verification-body {
	--focus-ring: 0 0 0 3px rgba(79, 70, 229, 0.22);
	--shadow-card: 0 12px 32px rgba(17, 24, 39, 0.07);
	--shadow-app: 0 24px 70px rgba(17, 24, 39, 0.12);
}

.cpc-dashboard-root.cpc-app {
	border-color: #dfe3eb;
	border-radius: 24px;
	box-sizing: border-box;
	box-shadow: var(--shadow-app);
	float: none;
	gap: 24px;
	grid-template-columns: 280px minmax(0, 1fr);
	margin: 28px auto 44px;
	max-width: 1200px;
	min-height: min(880px, calc(100dvh - 56px));
	overflow: clip;
	position: relative;
	transform: none;
	width: 100%;
}

.cpc-dashboard-root.cpc-app::before {
	display: none;
}

.cpc-skip-link {
	background: var(--surface);
	border: 2px solid var(--accent);
	border-radius: 8px;
	color: var(--accent);
	font-size: 13px;
	font-weight: 600;
	left: 320px;
	padding: 10px 14px;
	position: absolute;
	top: 10px;
	transform: translateY(-160%);
	transition: transform 160ms ease;
	z-index: 100;
}

.cpc-skip-link:focus {
	outline: none;
	transform: translateY(0);
}

.cpc-dashboard-root .cpc-sidebar {
	align-self: start;
	background: var(--nav);
	border-radius: 23px 0 0 23px;
	height: min(920px, calc(100dvh - 32px));
	max-height: 100%;
	min-width: 0;
	overflow: hidden;
	padding: 28px 20px 24px;
	position: sticky;
	top: 16px;
	width: 100%;
	z-index: 1;
}

.cpc-brand {
	gap: 13px;
	padding: 0 8px 26px;
}

.cpc-brand-icon {
	border-radius: 12px;
	box-shadow: 0 8px 20px rgba(79, 70, 229, 0.3);
	height: 42px;
}

.cpc-brand strong {
	font-size: 15px;
}

.cpc-brand small {
	color: #aeb7c6;
	font-size: 11px;
	margin-top: 1px;
}

.cpc-primary-nav {
	gap: 5px;
	padding-bottom: 22px;
}

.cpc-primary-nav a {
	border: 1px solid transparent;
	font-size: 13px;
	min-height: 44px;
	padding: 11px 12px;
}

.cpc-primary-nav a:hover,
.cpc-primary-nav a:focus-visible {
	background: rgba(255, 255, 255, 0.08);
	border-color: rgba(255, 255, 255, 0.08);
}

.cpc-primary-nav a.is-active {
	background: var(--accent);
	border-color: var(--accent);
	box-shadow: 0 8px 20px rgba(79, 70, 229, 0.26);
}

.cpc-module-nav {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	min-height: 0;
	padding-top: 22px;
}

.cpc-sidebar-heading {
	font-size: 11px;
	padding-bottom: 12px;
}

.cpc-module-nav ol {
	gap: 5px;
	overflow-y: auto;
	padding-right: 4px;
	scrollbar-color: rgba(255, 255, 255, 0.22) transparent;
	scrollbar-width: thin;
}

.cpc-module-nav ol::-webkit-scrollbar {
	width: 5px;
}

.cpc-module-nav ol::-webkit-scrollbar-thumb {
	background: rgba(255, 255, 255, 0.22);
	border-radius: 10px;
}

.cpc-module-nav a {
	border-radius: 11px;
	gap: 11px;
	min-height: 52px;
	padding: 9px 10px;
}

.cpc-module-nav a.is-current {
	background: rgba(79, 70, 229, 0.24);
	border-color: rgba(129, 140, 248, 0.35);
	border-left: 3px solid #818cf8;
	padding-left: 8px;
}

.cpc-module-copy strong {
	font-size: 12px;
	line-height: 1.35;
}

.cpc-module-copy small {
	color: #929cad;
	font-size: 10px;
	margin-top: 2px;
}

.cpc-module-state {
	flex-basis: 30px;
	height: 30px;
}

.cpc-dashboard-root .cpc-workspace {
	background: var(--bg);
	min-height: inherit;
	min-width: 0;
	position: relative;
	width: 100%;
	z-index: 1;
}

.cpc-topbar {
	background: rgba(255, 255, 255, 0.98);
	min-height: 92px;
	padding: 20px 40px;
	position: sticky;
	top: 0;
	z-index: 20;
}

.cpc-topbar h1 {
	font-size: clamp(19px, 2vw, 23px);
}

.cpc-avatar {
	background: var(--nav);
	box-shadow: 0 0 0 4px var(--surface-subtle);
	height: 42px;
	width: 42px;
}

.cpc-dashboard-root .cpc-main {
	box-sizing: border-box;
	margin: 0;
	max-width: none;
	padding: 36px 40px 56px;
	width: 100%;
}

.cpc-dashboard-root .cpc-progress-card,
.cpc-dashboard-root .cpc-learning-panel,
.cpc-dashboard-root .cpc-certificate-section,
.cpc-dashboard-root .cpc-empty-state,
.cpc-dashboard-root .cpc-video-frame {
	box-sizing: border-box;
	max-width: none;
	width: 100%;
}

.cpc-dashboard-root .cpc-video-frame iframe {
	display: block;
	height: 100%;
	width: 100%;
}

.cpc-progress-card,
.cpc-learning-panel,
.cpc-certificate-section,
.cpc-empty-state {
	border-color: #dfe3eb;
	box-shadow: var(--shadow-card);
}

.cpc-progress-card:hover,
.cpc-learning-panel:hover,
.cpc-certificate-section:hover,
.cpc-empty-state:hover {
	box-shadow: var(--shadow-card);
}

.cpc-progress-card {
	margin-bottom: 28px;
	padding: 25px 28px;
}

.cpc-progress-copy {
	margin-bottom: 18px;
}

.cpc-progress-copy h2 {
	font-size: clamp(17px, 1.8vw, 20px);
}

.cpc-progress-percent {
	font-size: 29px;
	font-variant-numeric: tabular-nums;
}

.cpc-progress-track {
	border-radius: 999px;
	height: 8px;
}

.cpc-progress-track span {
	box-shadow: 0 0 0 1px rgba(67, 56, 202, 0.1);
}

.cpc-learning-panel {
	border-radius: 16px;
}

.cpc-video-frame {
	aspect-ratio: 16 / 9;
	background: #090d16;
}

.cpc-video-frame iframe {
	background: #090d16;
}

.cpc-module-detail {
	padding: 32px 34px 34px;
}

.cpc-module-heading {
	align-items: center;
}

.cpc-module-heading h2 {
	font-size: clamp(24px, 2.6vw, 31px);
	line-height: 1.2;
}

.cpc-duration {
	font-size: 13px;
}

.cpc-module-description {
	color: #4d5668;
	font-size: 14px;
	line-height: 1.75;
}

.cpc-module-description:empty {
	display: none;
}

.cpc-button {
	border-color: #c8cfdb;
	font-size: 13px;
	min-height: 46px;
	padding: 12px 18px;
	touch-action: manipulation;
}

.cpc-button:hover {
	transform: translateY(-1px);
}

.cpc-button:active {
	transform: translateY(0);
}

.cpc-button:focus-visible,
.cpc-auth-form input:focus-visible,
.cpc-module-nav a:focus-visible,
.cpc-primary-nav a:focus-visible {
	box-shadow: var(--focus-ring);
	outline: none;
}

.cpc-completion-toggle {
	min-width: 148px;
}

.cpc-completion-toggle.is-complete {
	border-color: #93d9aa;
}

.cpc-completion-toggle:disabled {
	cursor: wait;
	opacity: 0.65;
}

.cpc-save-message {
	font-size: 12px;
}

.cpc-certificate-section {
	border-radius: 16px;
	margin-top: 28px;
	padding: 32px 34px 34px;
}

.cpc-certificate-locked {
	border-radius: 12px;
	padding: 24px;
}

.cpc-auth-shell {
	background: transparent;
	left: 50%;
	padding: 64px 20px;
	position: relative;
	transform: translateX(-50%);
	width: min(100vw, 760px);
}

.cpc-auth-panel,
.cpc-access-gate {
	border-radius: 18px;
	box-shadow: var(--shadow-card);
	max-width: 520px;
	padding: 42px;
}

.cpc-auth-panel:hover,
.cpc-access-gate:hover {
	box-shadow: var(--shadow-card);
}

.cpc-auth-panel h2,
.cpc-access-gate h2 {
	font-size: clamp(27px, 4vw, 34px);
}

.cpc-auth-intro,
.cpc-access-gate > p {
	font-size: 14px;
	line-height: 1.65;
}

.cpc-auth-form {
	gap: 10px;
}

.cpc-auth-form label {
	color: var(--text);
	font-size: 12px;
	margin-top: 8px;
}

.cpc-auth-form input[type="text"],
.cpc-auth-form input[type="email"],
.cpc-auth-form input[type="password"] {
	border-color: #c8cfdb;
	border-radius: 10px;
	font-size: 16px;
	min-height: 50px;
	padding: 12px 14px;
}

.cpc-auth-form .cpc-button {
	margin-top: 16px;
	min-height: 50px;
}

.cpc-access-gate {
	left: 50%;
	margin: 60px 0;
	max-width: 620px;
	position: relative;
	transform: translateX(-50%);
	width: calc(100vw - 32px);
}

.cpc-access-actions .cpc-button {
	min-width: 150px;
}

@media (max-width: 1180px) {
	.cpc-dashboard-root.cpc-app {
		grid-template-columns: 280px minmax(0, 1fr);
	}

	.cpc-topbar,
	.cpc-main {
		padding-left: 28px;
		padding-right: 28px;
	}

	.cpc-sidebar {
		padding-left: 16px;
		padding-right: 16px;
	}
}

@media (max-width: 768px) {
	.cpc-dashboard-root.cpc-app {
		border-radius: 18px;
		display: block;
		margin: 12px auto 28px;
		max-width: 100%;
		min-height: 0;
		overflow: hidden;
		transform: none;
		width: 100%;
	}

	.cpc-dashboard-root.cpc-app::before {
		display: none;
	}

	.cpc-skip-link {
		left: 14px;
	}

	.cpc-dashboard-root .cpc-sidebar {
		background: var(--nav);
		border-radius: 17px 17px 0 0;
		height: auto;
		max-height: none;
		overflow: visible;
		padding: 18px 16px 20px;
		position: static;
		width: 100%;
	}

	.cpc-brand {
		padding: 0 2px 17px;
	}

	.cpc-brand small {
		max-width: 250px;
	}

	.cpc-primary-nav {
		display: grid;
		gap: 6px;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		overflow: visible;
		padding-bottom: 18px;
	}

	.cpc-primary-nav a {
		flex-direction: column;
		font-size: 11px;
		gap: 5px;
		justify-content: center;
		min-height: 58px;
		padding: 8px 5px;
	}

	.cpc-module-nav {
		display: block;
		padding-top: 16px;
	}

	.cpc-module-nav ol {
		display: flex;
		gap: 8px;
		margin: 0 -2px;
		overflow-x: auto;
		overflow-y: hidden;
		padding: 0 2px 8px;
		scroll-padding-inline: 2px;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}

	.cpc-module-nav ol::-webkit-scrollbar {
		display: none;
	}

	.cpc-module-nav li {
		flex: 0 0 min(78vw, 280px);
		scroll-snap-align: center;
	}

	.cpc-module-nav a {
		background: rgba(255, 255, 255, 0.055);
		border-color: rgba(255, 255, 255, 0.08);
		min-height: 64px;
		padding: 10px 12px;
	}

	.cpc-module-nav a.is-current {
		border: 1px solid rgba(129, 140, 248, 0.55);
		border-bottom: 3px solid #818cf8;
		padding: 10px 12px 8px;
	}

	.cpc-module-copy strong {
		font-size: 13px;
		white-space: normal;
	}

	.cpc-dashboard-root .cpc-workspace {
		min-height: 0;
	}

	.cpc-topbar {
		min-height: 74px;
		padding: 14px 18px;
	}

	.cpc-topbar h1 {
		font-size: 17px;
	}

	.cpc-dashboard-root .cpc-main {
		padding: 18px 14px 34px;
	}

	.cpc-progress-card {
		margin-bottom: 18px;
		padding: 20px;
	}

	.cpc-progress-copy {
		align-items: center;
		flex-direction: row;
		gap: 12px;
	}

	.cpc-progress-copy h2 {
		font-size: 16px;
	}

	.cpc-progress-percent {
		font-size: 24px;
	}

	.cpc-learning-panel,
	.cpc-certificate-section {
		border-radius: 13px;
	}

	.cpc-module-detail {
		padding: 24px 20px 22px;
	}

	.cpc-module-heading {
		align-items: stretch;
		gap: 20px;
	}

	.cpc-module-heading h2 {
		font-size: 25px;
	}

	.cpc-completion-toggle {
		align-self: stretch;
		width: 100%;
	}

	.cpc-module-description {
		font-size: 14px;
	}

	.cpc-module-pagination {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cpc-module-pagination .cpc-button {
		min-width: 0;
		padding-inline: 10px;
		width: 100%;
	}

	.cpc-certificate-section {
		margin-top: 18px;
		padding: 24px 20px;
	}

	.cpc-certificate-locked {
		align-items: flex-start;
		padding: 20px;
	}

	.cpc-auth-shell {
		padding: 28px 12px 42px;
	}

	.cpc-auth-panel,
	.cpc-access-gate {
		padding: 30px 22px;
	}

	.cpc-access-gate {
		margin: 24px 0;
		width: calc(100vw - 24px);
	}
}

/*
 * Version 1.3.1: keep the dashboard centered inside classic and block themes.
 * These selectors intentionally outrank theme content-width rules while staying
 * scoped to the course dashboard.
 */
.wp-block-post-content > .cpc-dashboard-root.cpc-app,
.entry-content > .cpc-dashboard-root.cpc-app,
.wp-site-blocks .cpc-dashboard-root.cpc-app {
	clear: both;
	float: none;
	margin-left: auto !important;
	margin-right: auto !important;
	max-width: 1200px !important;
	width: 100% !important;
}

@media (max-width: 768px) {
	.wp-block-post-content > .cpc-dashboard-root.cpc-app,
	.entry-content > .cpc-dashboard-root.cpc-app,
	.wp-site-blocks .cpc-dashboard-root.cpc-app {
		max-width: 100% !important;
	}
}

@media (max-width: 420px) {
	.cpc-brand small {
		max-width: 210px;
	}

	.cpc-student-menu > span:first-child {
		display: none;
	}

	.cpc-progress-copy {
		align-items: flex-start;
		flex-direction: column;
	}

	.cpc-module-pagination {
		grid-template-columns: 1fr;
	}

	.cpc-module-pagination > span:empty {
		display: none;
	}

	.cpc-access-actions {
		flex-direction: column;
	}

	.cpc-access-actions .cpc-button {
		width: 100%;
	}
}
