:root {
	--swp-primary: #0a98ac;
	--swp-accent: #31acd9;
	--swp-sidebar: #071821;
	--swp-sidebar-width: 286px;
	--swp-collapsed-width: 86px;
	--swp-hero-image: none;
	--swp-login-image: none;
	--swp-shadow-sm: 0 8px 28px rgba(18, 45, 55, 0.07);
	--swp-shadow-md: 0 18px 52px rgba(18, 45, 55, 0.12);
}

html,
body.swp-portal-page {
	margin: 0 !important;
	min-height: 100%;
	background: #eef3f4 !important;
}

body.swp-portal-page {
	overflow-x: hidden;
}

.swp-portal-page .swp-application-shell,
.swp-portal-page .sw-app {
	min-height: 100vh;
}

.swp-portal-page .sw-app {
	--sw-navy: var(--swp-sidebar);
	--sw-teal: var(--swp-primary);
	--sw-cyan: var(--swp-accent);
	--sw-line: #dfe7e9;
	--sw-bg: #eef3f4;
	background:
		radial-gradient(circle at 92% 0%, color-mix(in srgb, var(--swp-accent) 10%, transparent), transparent 27rem),
		#eef3f4;
	color: #19313a;
	font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.swp-portal-page .sw-app button,
.swp-portal-page .sw-app a,
.swp-portal-page .sw-app input,
.swp-portal-page .sw-app select,
.swp-portal-page .sw-app textarea {
	font: inherit;
}

/* Application navigation */
.swp-portal-page .sw-sidebar {
	width: var(--swp-sidebar-width);
	padding: 22px 17px 16px;
	background:
		linear-gradient(180deg, color-mix(in srgb, var(--swp-primary) 10%, transparent), transparent 28%),
		var(--swp-sidebar);
	box-shadow: 12px 0 38px rgba(2, 17, 23, 0.12);
	transition: width 180ms ease, transform 220ms ease;
}

.swp-portal-page .sw-brand {
	position: relative;
	min-height: 54px;
	padding: 0 8px 19px;
	border-color: rgba(255, 255, 255, 0.1);
}

.swp-portal-page .sw-brand.swp-brand-decorated > span,
.swp-portal-page .sw-brand.swp-brand-decorated > strong,
.swp-portal-page .sw-login-brand.swp-brand-decorated > span,
.swp-portal-page .sw-login-brand.swp-brand-decorated > strong {
	display: none;
}

.swp-global-logo {
	display: block;
	width: 190px;
	max-height: 43px;
	object-fit: contain;
	object-position: left center;
}

.swp-collapse {
	position: absolute;
	right: -31px;
	top: 5px;
	width: 27px;
	height: 34px;
	display: grid;
	place-items: center;
	padding: 0;
	border: 1px solid #dce5e7;
	border-left: 0;
	border-radius: 0 9px 9px 0;
	background: #fff;
	color: #61757d;
	box-shadow: 7px 0 18px rgba(18, 45, 55, 0.08);
	cursor: pointer;
}

.swp-collapse span {
	font-size: 23px;
	line-height: 1;
	transition: transform 180ms ease;
}

.swp-portal-page .sw-org-label {
	margin: 19px 10px 8px;
	color: rgba(255, 255, 255, 0.48);
	font-size: 10px;
}

.swp-portal-page .sw-org-select-wrap {
	min-height: 56px;
	padding: 9px;
	border-color: rgba(255, 255, 255, 0.13);
	background: rgba(255, 255, 255, 0.065);
	backdrop-filter: blur(10px);
}

.swp-portal-page .sw-org-mark {
	width: 36px;
	height: 36px;
	background: linear-gradient(135deg, var(--swp-primary), color-mix(in srgb, var(--swp-primary) 62%, var(--swp-accent)));
	box-shadow: 0 8px 19px color-mix(in srgb, var(--swp-primary) 28%, transparent);
}

.swp-portal-page .sw-org-mark.swp-has-icon {
	background-color: #fff;
	background-position: center;
	background-size: cover;
	box-shadow: 0 8px 19px rgba(0, 0, 0, 0.22);
}

.swp-portal-page .sw-org-select-wrap select {
	font-size: 13px;
}

.swp-org-identity {
	min-height: 75px;
	display: flex;
	align-items: center;
	gap: 11px;
	margin-top: 10px;
	padding: 12px;
	border: 1px solid rgba(255, 255, 255, 0.09);
	border-radius: 13px;
	background: rgba(255, 255, 255, 0.035);
}

.swp-org-identity__logo {
	width: 52px;
	height: 40px;
	object-fit: contain;
}

.swp-org-identity > div {
	min-width: 0;
}

.swp-org-identity small,
.swp-org-identity strong {
	display: block;
}

.swp-org-identity small {
	margin-bottom: 4px;
	color: rgba(255, 255, 255, 0.43);
	font-size: 8px;
	font-weight: 800;
	letter-spacing: 0.9px;
}

.swp-org-identity strong {
	overflow: hidden;
	color: #fff;
	font-size: 11px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.swp-portal-page .sw-nav {
	gap: 4px;
	margin-top: 14px;
	overflow-y: auto;
	scrollbar-width: thin;
}

.swp-portal-page .sw-nav button {
	min-height: 44px;
	padding: 0 13px;
	border-radius: 11px;
	color: rgba(232, 245, 248, 0.63);
	font-size: 12px;
	font-weight: 650;
	transition: color 150ms ease, background 150ms ease, transform 150ms ease;
}

.swp-portal-page .sw-nav button:hover {
	transform: translateX(2px);
	background: rgba(255, 255, 255, 0.06);
}

.swp-portal-page .sw-nav button.active,
.swp-portal-page .sw-nav button[aria-current="page"] {
	background: linear-gradient(90deg, color-mix(in srgb, var(--swp-primary) 32%, transparent), color-mix(in srgb, var(--swp-primary) 7%, transparent));
	box-shadow: inset 3px 0 0 var(--swp-accent);
}

.swp-portal-page .sw-nav button > span {
	color: rgba(222, 243, 246, 0.55);
}

.swp-portal-page .sw-nav em {
	background: var(--swp-primary);
}

.swp-portal-page .sw-nav small {
	padding: 3px 5px;
	border-radius: 5px;
	background: rgba(255, 255, 255, 0.05);
	color: rgba(255, 255, 255, 0.36);
}

.swp-portal-page .sw-version {
	border-color: color-mix(in srgb, var(--swp-primary) 34%, transparent);
	background: linear-gradient(135deg, color-mix(in srgb, var(--swp-primary) 22%, transparent), rgba(255, 255, 255, 0.015));
}

.swp-portal-page .sw-version small {
	color: color-mix(in srgb, var(--swp-accent) 80%, white);
}

/* Header and main canvas */
.swp-portal-page .sw-main {
	min-height: 100vh;
	margin-left: var(--swp-sidebar-width);
	transition: margin-left 180ms ease;
}

.swp-portal-page .sw-topbar {
	height: 74px;
	padding: 0 38px;
	border-color: rgba(18, 45, 55, 0.09);
	background: rgba(255, 255, 255, 0.89);
	box-shadow: 0 5px 22px rgba(25, 53, 63, 0.035);
	backdrop-filter: blur(16px);
}

.swp-portal-page .sw-search {
	height: 42px;
	border-color: #dce5e7;
	border-radius: 12px;
	background: #f7f9fa;
}

.swp-portal-page .sw-search:focus-within {
	border-color: color-mix(in srgb, var(--swp-primary) 60%, #dce5e7);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--swp-primary) 10%, transparent);
}

.swp-top-notify {
	position: relative;
	width: 38px;
	height: 38px;
	display: grid;
	place-items: center;
	padding: 0;
	border: 1px solid transparent;
	border-radius: 11px;
	background: transparent;
	color: #8a9aa0;
	cursor: pointer;
}

.swp-top-notify:hover {
	border-color: #dfe7e9;
	background: #f8fafb;
}

.swp-top-notify > span {
	font-size: 13px;
}

.swp-top-notify > em {
	position: absolute;
	top: -3px;
	right: -3px;
	min-width: 18px;
	height: 18px;
	display: grid;
	place-items: center;
	padding: 0 4px;
	border: 2px solid #fff;
	border-radius: 9px;
	background: #a9b5b9;
	color: #fff;
	font-size: 8px;
	font-style: normal;
	font-weight: 800;
}

.swp-top-notify.has-alerts > em {
	background: var(--swp-primary);
}

.swp-portal-page .sw-content {
	max-width: 1560px;
	padding: 32px 38px 56px;
}

/* Organisation-aware welcome hero */
.swp-portal-page .sw-welcome {
	position: relative;
	overflow: hidden;
	min-height: 190px;
	align-items: center;
	margin-bottom: 20px;
	padding: 32px 34px;
	border: 1px solid color-mix(in srgb, var(--swp-primary) 22%, #dfe7e9);
	border-radius: 22px;
	background-image:
		linear-gradient(105deg, color-mix(in srgb, var(--swp-sidebar) 92%, black), color-mix(in srgb, var(--swp-sidebar) 68%, transparent)),
		var(--swp-hero-image);
	background-position: center;
	background-size: cover;
	box-shadow: var(--swp-shadow-md);
}

.swp-portal-page .sw-welcome::after {
	content: "";
	position: absolute;
	right: -70px;
	bottom: -95px;
	width: 260px;
	height: 260px;
	border: 1px solid color-mix(in srgb, var(--swp-accent) 38%, transparent);
	border-radius: 50%;
	box-shadow: 0 0 0 32px color-mix(in srgb, var(--swp-primary) 8%, transparent), 0 0 0 65px color-mix(in srgb, var(--swp-accent) 5%, transparent);
	pointer-events: none;
}

.swp-portal-page .sw-welcome > * {
	position: relative;
	z-index: 1;
}

.swp-portal-page .sw-welcome .sw-kicker {
	color: color-mix(in srgb, var(--swp-accent) 78%, white) !important;
}

.swp-portal-page .sw-welcome h1 {
	color: #fff !important;
	font-size: clamp(28px, 3vw, 42px) !important;
	letter-spacing: -1.35px;
}

.swp-portal-page .sw-welcome > div > p:last-child,
.swp-portal-page .sw-welcome #sw-welcome-copy {
	max-width: 690px;
	color: rgba(255, 255, 255, 0.72);
}

.swp-welcome-note {
	margin-top: 6px !important;
	color: rgba(255, 255, 255, 0.92) !important;
	font-weight: 650;
}

.swp-portal-page .sw-welcome .sw-secondary {
	border-color: rgba(255, 255, 255, 0.24);
	background: rgba(255, 255, 255, 0.1);
	color: #fff;
	backdrop-filter: blur(8px);
}

.swp-portal-page .sw-welcome .sw-secondary:hover {
	border-color: rgba(255, 255, 255, 0.48);
	background: rgba(255, 255, 255, 0.16);
}

.swp-portal-page .sw-primary {
	background: linear-gradient(135deg, var(--swp-primary), color-mix(in srgb, var(--swp-primary) 64%, var(--swp-accent)));
	box-shadow: 0 10px 24px color-mix(in srgb, var(--swp-primary) 25%, transparent);
}

.swp-portal-page .sw-primary:hover {
	filter: brightness(1.04);
	transform: translateY(-1px);
}

/* Cards and operational modules */
.swp-portal-page .sw-metrics {
	gap: 14px;
	margin-bottom: 18px;
}

.swp-portal-page .sw-metrics button,
.swp-portal-page .sw-panel {
	border-color: rgba(31, 62, 73, 0.095);
	border-radius: 17px;
	box-shadow: var(--swp-shadow-sm);
}

.swp-portal-page .sw-metrics button {
	min-height: 138px;
	padding: 20px;
	background: rgba(255, 255, 255, 0.94);
}

.swp-portal-page .sw-metrics button:hover {
	border-color: color-mix(in srgb, var(--swp-primary) 36%, #dfe7e9);
	box-shadow: var(--swp-shadow-md);
}

.swp-portal-page .sw-metrics button > span {
	width: 36px;
	height: 36px;
	border-radius: 11px;
	background: color-mix(in srgb, var(--swp-primary) 11%, white);
	color: var(--swp-primary);
}

.swp-portal-page .sw-metrics strong {
	font-size: 30px;
}

.swp-portal-page .sw-grid {
	gap: 18px;
}

.swp-portal-page .sw-panel {
	background: rgba(255, 255, 255, 0.95);
}

.swp-portal-page .sw-panel > header {
	padding: 21px 22px 18px;
}

.swp-portal-page .sw-panel header h2,
.swp-portal-page .sw-workflow h2 {
	font-size: 17px !important;
}

.swp-portal-page .sw-kicker {
	color: var(--swp-primary) !important;
}

.swp-portal-page .sw-task-row {
	min-height: 64px;
	padding-inline: 22px;
}

.swp-portal-page .sw-task-row:not(.sw-task-head):hover {
	background: color-mix(in srgb, var(--swp-primary) 3.5%, white);
}

.swp-portal-page .sw-priority {
	background: color-mix(in srgb, var(--swp-primary) 10%, white);
	color: color-mix(in srgb, var(--swp-primary) 84%, black);
}

.swp-portal-page .sw-quick button,
.swp-portal-page .sw-quick a {
	min-height: 76px;
	border-radius: 12px;
}

.swp-portal-page .sw-quick button:hover,
.swp-portal-page .sw-quick a:hover {
	border-color: color-mix(in srgb, var(--swp-primary) 38%, #dfe7e9);
	background: color-mix(in srgb, var(--swp-primary) 4%, white);
}

.swp-portal-page .sw-workflow {
	border-radius: 17px;
}

.swp-portal-page .sw-workflow button {
	border: 1px solid transparent;
}

.swp-portal-page .sw-workflow button:hover {
	border-color: color-mix(in srgb, var(--swp-primary) 24%, #e7edef);
	background: color-mix(in srgb, var(--swp-primary) 5%, white);
}

.swp-portal-page .sw-project-cards article {
	border-radius: 14px;
}

.swp-portal-page .sw-stage,
.swp-portal-page .sw-source-badge {
	background: color-mix(in srgb, var(--swp-primary) 10%, white) !important;
	color: color-mix(in srgb, var(--swp-primary) 86%, black) !important;
}

.swp-portal-page .sw-activity-item > span {
	background: var(--swp-primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--swp-primary) 12%, white);
}

.swp-portal-page .sw-event-list article > time,
.swp-portal-page .sw-member-list article > span,
.swp-portal-page .sw-notification-list article > span {
	background: color-mix(in srgb, var(--swp-primary) 10%, white);
	color: var(--swp-primary);
}

.swp-portal-page .sw-loading span {
	border-top-color: var(--swp-primary);
}

.swp-portal-page .sw-notice-error {
	border-radius: 13px;
}

/* Forms and modal safety */
.swp-portal-page .sw-modal {
	background: rgba(3, 14, 20, 0.72);
	backdrop-filter: blur(7px);
}

.swp-portal-page .sw-modal-card {
	border: 1px solid rgba(255, 255, 255, 0.15);
	border-radius: 20px;
	box-shadow: 0 28px 95px rgba(0, 0, 0, 0.38);
}

.swp-portal-page .sw-modal input,
.swp-portal-page .sw-modal select,
.swp-portal-page .sw-modal textarea {
	min-height: 42px;
	border-color: #dce5e7 !important;
	border-radius: 10px !important;
}

.swp-portal-page .sw-modal textarea {
	min-height: 94px;
}

.swp-portal-page .sw-modal input:focus,
.swp-portal-page .sw-modal select:focus,
.swp-portal-page .sw-modal textarea:focus {
	border-color: var(--swp-primary) !important;
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--swp-primary) 10%, transparent) !important;
}

/* Branded login */
.swp-portal-page .sw-login-shell {
	position: relative;
	overflow: hidden;
	padding: 40px 24px;
	background-image:
		linear-gradient(110deg, rgba(4, 20, 27, 0.95), rgba(4, 20, 27, 0.7)),
		var(--swp-login-image);
	background-position: center;
	background-size: cover;
}

.swp-portal-page .sw-login-shell::before,
.swp-portal-page .sw-login-shell::after {
	content: "";
	position: absolute;
	border: 1px solid rgba(49, 172, 217, 0.19);
	border-radius: 50%;
	pointer-events: none;
}

.swp-portal-page .sw-login-shell::before {
	left: -180px;
	top: -190px;
	width: 480px;
	height: 480px;
	box-shadow: 0 0 0 55px rgba(10, 152, 172, 0.05), 0 0 0 110px rgba(49, 172, 217, 0.025);
}

.swp-portal-page .sw-login-shell::after {
	right: -120px;
	bottom: -170px;
	width: 390px;
	height: 390px;
}

.swp-portal-page .sw-login-card {
	position: relative;
	z-index: 1;
	width: min(470px, 100%);
	padding: 42px;
	border: 1px solid rgba(255, 255, 255, 0.72);
	border-radius: 24px;
	box-shadow: 0 32px 110px rgba(0, 0, 0, 0.42);
}

.swp-portal-page .sw-login-brand {
	margin-bottom: 36px;
}

.swp-login-logo {
	width: min(255px, 75%);
	max-height: 60px;
	object-fit: contain;
	object-position: left center;
}

.swp-portal-page .sw-login-card h1 {
	font-size: 34px;
	letter-spacing: -1px;
}

.swp-portal-page .sw-login-card input[type="text"],
.swp-portal-page .sw-login-card input[type="password"] {
	min-height: 48px;
	border-radius: 11px;
}

.swp-portal-page .sw-login-card input[type="submit"] {
	min-height: 48px;
	border-radius: 11px;
	background: linear-gradient(135deg, var(--swp-primary), var(--swp-accent));
	box-shadow: 0 12px 28px rgba(10, 152, 172, 0.24);
}

/* Collapsed desktop navigation */
body.swp-sidebar-collapsed {
	--swp-sidebar-width: var(--swp-collapsed-width);
}

body.swp-sidebar-collapsed .swp-global-logo,
body.swp-sidebar-collapsed .sw-org-label,
body.swp-sidebar-collapsed .swp-org-identity,
body.swp-sidebar-collapsed .sw-sidebar-bottom,
body.swp-sidebar-collapsed .sw-nav button > em,
body.swp-sidebar-collapsed .sw-nav button > small,
body.swp-sidebar-collapsed .sw-org-select-wrap select {
	display: none;
}

body.swp-sidebar-collapsed .sw-brand {
	min-height: 45px;
}

body.swp-sidebar-collapsed .swp-collapse span {
	transform: rotate(180deg);
}

body.swp-sidebar-collapsed .sw-org-select-wrap {
	justify-content: center;
	padding: 8px;
}

body.swp-sidebar-collapsed .sw-nav button {
	justify-content: center;
	gap: 0;
	overflow: hidden;
	padding: 0;
	font-size: 0;
}

body.swp-sidebar-collapsed .sw-nav button > span {
	width: auto;
	font-size: 17px;
}

/* Responsive layouts */
@media (max-width: 1180px) {
	.swp-portal-page .sw-content {
		padding-inline: 26px;
	}

	.swp-portal-page .sw-welcome {
		padding: 28px;
	}
}

@media (max-width: 760px) {
	body.swp-sidebar-collapsed {
		--swp-sidebar-width: 286px;
	}

	.swp-portal-page .sw-sidebar {
		width: min(310px, 88vw);
	}

	.swp-collapse {
		display: none;
	}

	.swp-portal-page .sw-main {
		margin-left: 0;
	}

	.swp-portal-page .sw-topbar {
		height: 66px;
		padding-inline: 16px;
	}

	.swp-portal-page .sw-search {
		width: 100%;
	}

	.swp-top-notify {
		flex: 0 0 38px;
	}

	.swp-portal-page .sw-content {
		padding: 20px 15px 42px;
	}

	.swp-portal-page .sw-welcome {
		min-height: 210px;
		align-items: flex-start;
		padding: 24px;
	}

	.swp-portal-page .sw-welcome-actions {
		width: 100%;
	}

	.swp-portal-page .sw-task-table {
		overflow: visible;
		padding: 10px;
		border-top: 1px solid #edf1f2;
	}

	.swp-portal-page .sw-task-head {
		display: none;
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) {
		min-width: 0;
		min-height: 0;
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 12px;
		margin-bottom: 10px;
		padding: 16px;
		border: 1px solid #e4ebed;
		border-radius: 13px;
		background: #fff;
		box-shadow: 0 6px 18px rgba(18, 45, 55, 0.05);
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) > span {
		min-width: 0;
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) > span:first-child {
		grid-column: 1 / -1;
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) > span:not(:first-child)::before {
		display: block;
		margin-bottom: 4px;
		color: #8b9aa0;
		font-size: 9px;
		font-weight: 800;
		letter-spacing: 0.7px;
		text-transform: uppercase;
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) > span:nth-child(2)::before {
		content: "Assigned to";
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) > span:nth-child(3)::before {
		content: "Priority";
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) > span:nth-child(4)::before {
		content: "Due";
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) > span:nth-child(5)::before {
		content: "Status";
	}

	.swp-portal-page .sw-modal {
		align-items: end;
		padding: 0;
	}

	.swp-portal-page .sw-modal-card {
		width: 100%;
		max-height: 92vh;
		border-radius: 20px 20px 0 0;
	}
}

@media (max-width: 460px) {
	.swp-portal-page .sw-topbar .sw-help,
	.swp-portal-page .sw-top-avatar {
		display: none;
	}

	.swp-portal-page .sw-welcome {
		min-height: 250px;
		flex-direction: column;
	}

	.swp-portal-page .sw-welcome h1 {
		font-size: 29px !important;
	}

	.swp-portal-page .sw-metrics {
		grid-template-columns: 1fr;
	}

	.swp-portal-page .sw-login-card {
		padding: 28px 24px;
		border-radius: 18px;
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) {
		grid-template-columns: 1fr;
	}

	.swp-portal-page .sw-task-row:not(.sw-task-head) > span:first-child {
		grid-column: auto;
	}
}

@media (prefers-reduced-motion: reduce) {
	.swp-portal-page *,
	.swp-portal-page *::before,
	.swp-portal-page *::after {
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
	}
}
