.lp-portal-page {

	width: 100%;

	min-height: 100vh;

	padding: 0 var(--lp-page-pad-desktop) var(--lp-space-10);

	background: var(--lp-bg);

}



.lp-dashboard-shell {

	width: 100%;

	max-width: none;

	margin: 0;

}



.lp-dashboard-shell__content {

	width: min(var(--lp-container), 100%);

	margin: 0 auto;

	background: transparent;

}



.lp-portal-header {

	position: relative;

	z-index: 40;

	width: 100vw;

	margin: 0 calc(50% - 50vw) var(--lp-page-top-gap);

	border-bottom: 1px solid var(--lp-border-light);

	background: var(--lp-surface);

}



.lp-portal-header__inner {

	display: grid;

	grid-template-columns: 180px minmax(0, 1fr) auto;

	align-items: center;

	width: min(var(--lp-container), calc(100vw - (var(--lp-page-pad-desktop) * 2)));

	min-height: 76px;

	margin: 0 auto;

	gap: var(--lp-space-6);

}



.lp-portal-header__logo {

	display: inline-flex;

	align-items: center;

	justify-self: start;

	text-decoration: none;

	color: var(--lp-red);

	font-weight: 800;

}



.lp-portal-header__logo img {

	display: block;

	width: auto;

	max-width: 120px;

	max-height: 58px;

}



.lp-portal-nav {

	display: flex;

	align-items: center;

	justify-content: center;

	gap: clamp(14px, 1.5vw, 26px);

	min-width: 0;

}



.lp-portal-nav__link {

	display: inline-flex;

	align-items: center;

	gap: 7px;

	color: var(--lp-muted);

	font-family: var(--lp-font-main);

	font-size: var(--lp-menu-font-size);

	font-weight: 400;

	text-decoration: none;

	text-transform: uppercase;

	letter-spacing: var(--lp-label-letter-spacing);

	white-space: nowrap;

	transition: color var(--lp-transition-fast);

}



.lp-portal-nav__link svg {

	width: 23px;

	height: 23px;

	flex: 0 0 auto;

}



.lp-portal-nav__link.is-active,

.lp-portal-nav__link:hover {

	color: var(--lp-red);

}



.lp-portal-user {

	position: relative;

	display: inline-flex;

	align-items: center;

	justify-self: end;

	white-space: nowrap;

}



.lp-portal-user__trigger {

	display: inline-flex;

	align-items: center;

	gap: var(--lp-space-3);

	padding: var(--lp-space-2);

	border: 0;

	background: transparent;

	cursor: pointer;

	white-space: nowrap;

}



.lp-portal-user__avatar {

	display: inline-flex;

	align-items: center;

	justify-content: center;

	width: 32px;

	height: 32px;

	border-radius: 999px;

	color: #fff;

}



.lp-portal-user__avatar svg {

	width: 22px;

	height: 22px;

}



.lp-portal-user__name {

	color: var(--lp-text);

	font-family: var(--lp-font-main);

	font-size: var(--lp-menu-font-size);

	font-weight: 400;

	letter-spacing: 0.04em;

}



.lp-portal-user__chevron {

	color: #777;

	font-size: 16px;

	line-height: 1;

}



.lp-portal-user__dropdown {

	position: absolute;

	top: 100%;

	right: 0;

	z-index: 50;

	display: none;

	min-width: 190px;

	padding: 14px 8px 8px;

	border: 1px solid #ddd;

	background: #fff;

	box-shadow: var(--lp-shadow-soft);

}



.lp-portal-user:hover .lp-portal-user__dropdown,

.lp-portal-user:focus-within .lp-portal-user__dropdown {

	display: grid;

}



.lp-portal-user__dropdown a,

.lp-portal-user__dropdown-placeholder {

	display: block;

	padding: 10px 12px;

	color: #666;

	text-decoration: none;

	font-size: 0.88rem;

}



.lp-portal-user__dropdown a:hover {

	color: var(--lp-red);

	background: #fafafa;

}



.lp-portal-user__dropdown-placeholder {

	color: #aaa;

	font-style: italic;

}

.lp-portal-language-switch {
	display: flex;
	align-items: center;
	gap: 8px;
}

.lp-portal-language-switch img {
	display: block;
	width: 20px;
	height: auto;
}



.lp-portal-menu-toggle {

	display: none;

	width: 42px;

	height: 42px;

	padding: 0;

	border: 0;

	background: transparent;

	cursor: pointer;

}



.lp-portal-menu-toggle span:not(.screen-reader-text) {

	display: block;

	width: 24px;

	height: 2px;

	margin: 5px auto;

	border-radius: 999px;

	background: var(--lp-red);

}



.lp-portal-mobile-overlay {

	position: fixed;

	inset: 0;

	z-index: 99998;

	visibility: hidden;

	opacity: 0;

	background: rgba(0, 0, 0, 0.35);

	transition: opacity 0.2s ease, visibility 0.2s ease;

}



.lp-portal-mobile-menu {

	position: fixed;

	top: 0;

	right: 0;

	z-index: 100000;

	width: min(390px, 86vw);

	height: 100vh;

	padding: var(--lp-space-6);

	background: #fff;

	box-shadow: -10px 0 30px rgba(0, 0, 0, 0.12);

	transform: translateX(100%);

	transition: transform 0.25s ease;

	overflow-y: auto;

}



.lp-mobile-menu-open .lp-portal-mobile-overlay,

html.lp-mobile-menu-open .lp-portal-mobile-overlay {

	visibility: visible;

	opacity: 1;

}



.lp-mobile-menu-open .lp-portal-mobile-menu,

html.lp-mobile-menu-open .lp-portal-mobile-menu {

	transform: translateX(0);

}



html.lp-mobile-menu-open,

body.lp-mobile-menu-open {

	overflow: hidden;

}



.lp-portal-mobile-menu__head,

.lp-portal-mobile-user {

	display: flex;

	align-items: center;

	gap: var(--lp-space-3);

}



.lp-portal-mobile-menu__head {

	justify-content: space-between;

	margin-bottom: var(--lp-space-6);

}



.lp-portal-mobile-menu__close {

	position: relative;

	width: 42px;

	height: 42px;

	padding: 0;

	border: 0;

	background: transparent;

	cursor: pointer;

}



.lp-portal-mobile-menu__close span {

	position: absolute;

	top: 50%;

	left: 50%;

	display: block;

	width: 26px;

	height: 2px;

	border-radius: 999px;

	background: var(--lp-red);

	transform-origin: center;

}



.lp-portal-mobile-menu__close span:first-child {

	transform: translate(-50%, -50%) rotate(45deg);

}



.lp-portal-mobile-menu__close span:last-child {

	transform: translate(-50%, -50%) rotate(-45deg);

}



.lp-portal-mobile-nav {

	display: grid;

	gap: var(--lp-space-2);

}



.lp-portal-mobile-nav__link,

.lp-portal-mobile-nav__placeholder {

	display: flex;

	align-items: center;

	gap: 10px;

	padding: 12px;

	border-bottom: 1px solid var(--lp-border-light);

	color: var(--lp-text);

	font-family: var(--lp-font-main);

	font-size: var(--lp-menu-font-size);

	font-weight: 400;

	text-decoration: none;

	text-transform: uppercase;

	letter-spacing: 0.06em;

}



.lp-portal-mobile-nav__link svg {

	width: 22px;

	height: 22px;

}



.lp-portal-mobile-nav__link.is-active {

	color: var(--lp-red);

}



.lp-portal-mobile-nav__placeholder {

	color: #aaa;

	font-style: italic;

	text-transform: none;

}



.lp-page-header,

.lp-section-header,

.lp-calendar-header,

.lp-student-class-selection__header {

	display: flex;

	align-items: flex-start;

	justify-content: space-between;

	gap: var(--lp-column-gap);

	margin-bottom: var(--lp-title-content-gap);

}



.lp-page-header__content,

.lp-section-header > :first-child,

.lp-calendar-header > :first-child,

.lp-student-class-selection__header > :first-child {

	min-width: 0;

}



.lp-page-header p,

.lp-section-header p,

.lp-calendar-header p,

.lp-student-class-selection__header p {

	margin: 0;

	color: var(--lp-muted);

	font-family: var(--lp-font-main);

	font-size: var(--lp-page-subtitle-size);

	font-weight: 400;

	letter-spacing: 0.04em;

}



.lp-page-actions,

.lp-button-row {

	display: flex;

	flex-wrap: wrap;

	justify-content: flex-end;

	align-items: center;

	gap: var(--lp-space-3);

}



.lp-grid {

	display: grid;

	gap: var(--lp-card-gap);

}



.lp-grid--2 {

	grid-template-columns: minmax(0, 1fr) minmax(320px, 0.42fr);

}



.lp-grid--70-30,

.lp-two-column-layout,

.lp-student-class-layout {

	display: grid;

	grid-template-columns: minmax(0, 70fr) minmax(340px, 30fr);

	gap: var(--lp-column-gap);

	align-items: start;

}



.lp-grid--main-sidebar {

	display: grid;

	grid-template-columns: minmax(0, 1fr) minmax(330px, 420px);

	gap: var(--lp-column-gap);

	align-items: start;

}



.lp-grid--sidebar-main {

	display: grid;

	grid-template-columns: minmax(260px, 320px) minmax(0, 1fr) minmax(320px, 0.42fr);

	gap: var(--lp-space-6);

	align-items: start;

}



.lp-stack {

	display: grid;

	gap: var(--lp-card-gap);

}



.lp-stack--small {

	gap: var(--lp-space-4);

}



.lp-full-width {

	grid-column: 1 / -1;

}



/* =========================================================

   Phase 3.1E Fix - Missing Layout Legacy Selectors

   ========================================================= */



.lp-admin-main-column,

.lp-admin-side-column {

	min-width: 0;

}



.lp-class-builder {

	display: grid;

	gap: var(--lp-space-6);

}



.lp-student-class-selection__header--with-action {

	display: flex;

	justify-content: space-between;

	align-items: flex-start;

	gap: var(--lp-space-5);

}



.lp-dashboard-shell__header {

	display: flex;

	align-items: flex-start;

	justify-content: space-between;

	gap: var(--lp-space-4);

}



.lp-dashboard-shell__header h1 {

	margin: 0;

}



.lp-dashboard-shell__nav {

	width: 100%;

}



.lp-dashboard-shell__nav-list {

	display: flex;

	flex-wrap: wrap;

	gap: var(--lp-space-3);

	margin: 0;

	padding: 0;

	list-style: none;

}



.lp-dashboard-shell__nav-link {

	display: inline-flex;

	align-items: center;

	min-height: 36px;

	padding: 7px 14px;

	border: 1px solid var(--lp-border);

	background: #fff;

	color: var(--lp-text);

	text-decoration: none;

	font-weight: 700;

}



.lp-dashboard-shell__nav-link:hover {

	border-color: var(--lp-red);

	color: var(--lp-red);

}