
/* 布局尺寸与跨站点组件规则，品牌变量由 theme.css 提供 */
:root {
	--portal-header-height: 76px;
	--portal-footer-height: 50px;
	--portal-sidebar-width: 224px;
}

body {
	color: var(--bs-body-color);
	background: var(--bs-body-bg);
}

html,
body,
.manage-shell,
.manage-shell *,
.merchant-shell,
.merchant-shell * {
	scrollbar-width: thin;
	scrollbar-color: color-mix(in srgb, var(--bs-primary) 35%, var(--bs-secondary-color)) var(--portal-page-bg, var(--bs-tertiary-bg));
}

html::-webkit-scrollbar,
body::-webkit-scrollbar,
.manage-shell *::-webkit-scrollbar,
.merchant-shell *::-webkit-scrollbar {
	width: 10px;
	height: 10px;
}

html::-webkit-scrollbar-track,
body::-webkit-scrollbar-track,
.manage-shell *::-webkit-scrollbar-track,
.merchant-shell *::-webkit-scrollbar-track {
	background: var(--portal-page-bg, var(--bs-tertiary-bg));
}

html::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-thumb,
.manage-shell *::-webkit-scrollbar-thumb,
.merchant-shell *::-webkit-scrollbar-thumb {
	border: 3px solid var(--portal-page-bg, var(--bs-tertiary-bg));
	border-radius: 999px;
	background: color-mix(in srgb, var(--bs-primary) 35%, var(--bs-secondary-color));
}

html::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:hover,
.manage-shell *::-webkit-scrollbar-thumb:hover,
.merchant-shell *::-webkit-scrollbar-thumb:hover {
	background: var(--bs-primary);
}

.manage-sidebar,
.manage-sidebar *,
.merchant-sidebar,
.merchant-sidebar * {
	scrollbar-color: var(--portal-sidebar-muted) var(--portal-sidebar-bg);
}

.manage-sidebar::-webkit-scrollbar-track,
.manage-sidebar *::-webkit-scrollbar-track,
.merchant-sidebar::-webkit-scrollbar-track,
.merchant-sidebar *::-webkit-scrollbar-track {
	background: var(--portal-sidebar-bg);
}

.manage-sidebar::-webkit-scrollbar-thumb,
.manage-sidebar *::-webkit-scrollbar-thumb,
.merchant-sidebar::-webkit-scrollbar-thumb,
.merchant-sidebar *::-webkit-scrollbar-thumb {
	border-color: var(--portal-sidebar-bg);
	background: color-mix(in srgb, var(--portal-sidebar-muted) 72%, var(--portal-sidebar-bg));
}

.manage-sidebar::-webkit-scrollbar-thumb:hover,
.manage-sidebar *::-webkit-scrollbar-thumb:hover,
.merchant-sidebar::-webkit-scrollbar-thumb:hover,
.merchant-sidebar *::-webkit-scrollbar-thumb:hover {
	background: var(--portal-sidebar-muted);
}

.manage-shell {
	min-height: 100vh;
	min-height: 100dvh;
	background: var(--portal-page-bg);
}

.manage-sidebar {
	position: fixed;
	inset: 0 auto 0 0;
	z-index: 1030;
	display: flex;
	width: var(--portal-sidebar-width);
	flex-direction: column;
	padding: 0 14px;
	border-right: 1px solid var(--portal-sidebar-border);
	background: var(--portal-sidebar-bg);
	color: var(--portal-sidebar-color);
	transition: transform .2s ease, visibility .2s;
}

.manage-brand {
	display: flex;
	align-items: center;
	gap: 12px;
	min-height: 88px;
	padding: 16px 10px;
	border-bottom: 1px solid var(--portal-sidebar-border);
	color: inherit;
	text-decoration: none;
}

.manage-brand:hover {
	color: inherit;
}
.manage-brand-logo {
	display: grid;
	width: 56px;
	height: 56px;
	flex-shrink: 0;
	place-items: center;
	border-radius: var(--portal-brand-radius);
	background: var(--portal-brand-logo-bg, #fff);
	box-shadow: var(--portal-brand-logo-shadow, 0 4px 18px rgb(0 0 0 / 8%));
}
.manage-brand-logo img {
	width: var(--portal-brand-logo-size, 46px);
	height: var(--portal-brand-logo-size, 46px);
}
.manage-brand-text {
	display: flex;
	flex-direction: column;
	gap: 3px;
}
.manage-brand-text strong {
	font-size: 1.25rem;
	letter-spacing: -.04em;
}
.manage-brand-text small {
	color: var(--portal-sidebar-muted);
	font-size: .72rem;
	letter-spacing: .04em;
}
.manage-portal-label {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 18px 12px 8px;
	color: var(--portal-sidebar-muted);
	font-size: .68rem;
	font-weight: 600;
	letter-spacing: .08em;
}
.manage-portal-label::after {
	content: "";
	height: 1px;
	flex: 1;
	background: var(--portal-sidebar-border);
}
.manage-navigation {
	min-height: 0;
	flex: 1;
	margin-inline: -6px;
	overflow-y: auto;
	overflow-x: hidden;
	padding-bottom: 16px;
	scrollbar-width: thin;
}
.manage-navigation > .menu {
	padding-inline: 0;
}
.manage-navigation .menu,
.merchant-navigation .menu {
	--bb-menu-active-color: var(--portal-menu-active-color);
	--bb-menu-bar-bg: var(--portal-accent);
	--bb-menu-sub-bg: var(--portal-sidebar-bg);
	--bs-nav-link-color: var(--portal-sidebar-color);
	--bb-menu-item-hover-bg: var(--portal-menu-hover);
	--bb-menu-item-hover-color: var(--portal-sidebar-color);
	background: transparent;
}
.manage-navigation .menu .submenu .nav-link {
	min-height: 42px;
	margin: 3px 0;
	padding: 10px 12px;
	border-radius: var(--portal-menu-radius);
	color: var(--portal-sidebar-color);
	font-size: .84rem;
	transition: background-color .16s ease, color .16s ease;
}

.manage-navigation .menu .submenu .nav-link:hover {
	background: var(--portal-menu-hover);
	color: var(--portal-sidebar-color);
}
.manage-navigation .menu .submenu .nav-link.active,
.manage-navigation .menu .submenu .nav-link[aria-current="page"] {
	background: var(--portal-menu-active);
	box-shadow: inset 3px 0 0 var(--portal-accent);
	color: var(--portal-menu-active-color);
	font-weight: 650;
}
.manage-navigation .menu-icon {
	width: 1.35rem;
	color: inherit;
}
.manage-sidebar-footer {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 5px;
	margin-inline: -14px;
	padding: 24px 26px;
	background: var(--portal-sidebar-motif, var(--portal-motif));
	font-size: .8rem;
}
.manage-sidebar-footer small {
	color: var(--portal-sidebar-muted);
	font-size: .7rem;
}
.manage-brand-line {
	width: 36px;
	height: 3px;
	margin-bottom: 8px;
	background: var(--portal-brand-stripe);
	border-radius: 3px;
}
.manage-stage {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	min-height: 100dvh;
	margin-left: var(--portal-sidebar-width);
	min-width: 0;
}
.manage-header {
	position: sticky;
	top: 0;
	z-index: 1020;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: var(--portal-header-height);
	padding: 12px;
	border-bottom: 1px solid var(--bs-border-color);
	background: var(--portal-header-bg);
	backdrop-filter: blur(16px);
}
.manage-header-leading {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
}
.manage-header-clock,
.merchant-header-clock {
	position: absolute;
	top: 50%;
	left: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	transform: translate(-50%, -50%);
	pointer-events: none;
}
.account-time-clock {
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
	white-space: nowrap;
}
.account-time-clock .bb-flip-clock {
	margin: 0;
	width: max-content;
	overflow: visible;
	--bb-flip-clock-item-margin: 3px;
	--bb-flip-clock-list-margin-right: 8px;
}
.account-time-clock-display {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	line-height: 1;
	font-variant-numeric: tabular-nums;
}
.account-time-clock-card {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 48px;
	height: 34px;
	padding: 0 4px;
	border-radius: 4px;
	background-color: color-mix(in srgb, var(--bs-primary) 80%, white);
	color: #f8fafc;
	font-size: 24px;
	font-weight: 600;
	box-shadow: 0 2px 4px rgba(0, 0, 0, .18);
}
.account-time-clock-separator {
	color: var(--bs-primary);
	font-size: 24px;
	font-weight: 700;
}
.manage-heading {
	min-width: 0;
}
.manage-heading h1 {
	margin: 4px 0 0;
	font-size: 1.1rem;
	font-weight: 700;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.manage-breadcrumb {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: .7rem;
	color: var(--bs-secondary-color);
}
.manage-breadcrumb a {
	color: var(--bs-secondary-color);
	text-decoration: none;
}
.manage-breadcrumb a:hover {
	color: var(--bs-primary);
}
.manage-header-tools {
	position: relative;
	display: flex;
	align-items: center;
	gap: 12px;
	flex-shrink: 0;
}
.dropdown-logout {
	--bb-logout-text-color: var(--bs-body-color);
	--bb-logout-user-bg: var(--bs-primary);
	--bb-logout-menu-border-color: var(--bs-border-color);
	--bb-logout-avatar-width: 36px;
	--bb-logout-avatar-height: 36px;
	--bb-logout-user-avatar-width: 52px;
	--bb-logout-user-avatar-height: 52px;
	--bb-logout-user-avatar-border-radius: 50%;
}
.logout-avatar {
	border-radius: 50%;
}
:is(.manage-header-tools, .merchant-account) .dropdown-logout > .dropdown-toggle {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 46px;
	border: 1px solid var(--bs-border-color);
	border-radius: 12px;
	background: var(--bs-body-bg);
	transition: background-color .15s, border-color .15s;
}
:is(.manage-header-tools, .merchant-account) .dropdown-logout > .dropdown-toggle {
	gap: 9px;
	padding: 5px 12px 5px 5px;
}
:is(.manage-header-tools, .merchant-account) .dropdown-logout .logout-text {
	margin: 0;
	font-size: .8rem;
	font-weight: 600;
}
:is(.manage-header-tools, .merchant-account) .dropdown-logout > .dropdown-toggle::after {
	content: "";
	display: block;
	width: 6px;
	height: 6px;
	margin: -3px 0 0 4px;
	border: 0;
	border-right: 1.5px solid var(--bs-secondary-color);
	border-bottom: 1.5px solid var(--bs-secondary-color);
	transform: rotate(45deg);
}
:is(.manage-header-tools, .merchant-account) .dropdown-logout > .dropdown-toggle:hover,
:is(.manage-header-tools, .merchant-account) .dropdown-logout > .dropdown-toggle[aria-expanded="true"] {
	border-color: var(--bs-primary-border-subtle);
	background: var(--bs-primary-bg-subtle);
}
.manage-main {
	flex: 1;
	min-width: 0;
	padding: 12px;
}
/* 独立表格填满正文余下空间，工具栏和分页按实际高度参与布局 */
.manage-main:has(> .full-page-table) {
	display: flex;
	flex-direction: column;
}
.manage-main > .full-page-table {
	flex: 1;
}
.manage-main > .full-page-table > .table-shim {
	flex: 1;
}
/* Reconnector 模板由子组件动态渲染，必须使用全局规则而不是 CSS Isolation */
.reconnect-overlay {
	position: fixed;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.5rem;
	background: rgba(17, 32, 52, .42);
	backdrop-filter: blur(5px);
	-webkit-backdrop-filter: blur(5px);
}

.reconnect-card {
	width: min(100%, 27rem);
	padding: 2.25rem 2rem 1.75rem;
	border: 1px solid rgba(255, 255, 255, .8);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, .97);
	box-shadow: 0 1.5rem 4rem rgba(10, 35, 66, .24);
	color: #1f2937;
	text-align: center;
	animation: reconnect-card-in .24s ease-out;
}

.reconnect-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 4.5rem;
	height: 4.5rem;
	margin-bottom: 1.25rem;
	border-radius: 1.4rem;
	background: linear-gradient(145deg, #eaf4ff, #dcecff);
	box-shadow: 0 .75rem 1.75rem rgba(8, 125, 202, .16);
	color: #087dca;
	font-size: 1.8rem;
}

.reconnect-icon.is-loading i {
	display: inline-block;
	transform-origin: center;
	will-change: transform;
	animation: reconnect-spin 1.15s linear infinite;
}

.reconnect-icon.is-warning {
	background: linear-gradient(145deg, #fff7df, #ffedbd);
	box-shadow: 0 .75rem 1.75rem rgba(217, 146, 23, .15);
	color: #d58a0b;
}

.reconnect-icon.is-danger {
	background: linear-gradient(145deg, #fff0f0, #ffdddd);
	box-shadow: 0 .75rem 1.75rem rgba(211, 65, 65, .14);
	color: #d14343;
}

.reconnect-copy {
	margin-bottom: 1.4rem;
}

.reconnect-eyebrow {
	display: block;
	margin-bottom: .4rem;
	color: #087dca;
	font-size: .76rem;
	font-weight: 700;
	letter-spacing: .12em;
}

.reconnect-copy h2 {
	margin: 0 0 .65rem;
	color: #172033;
	font-size: 1.3rem;
	font-weight: 700;
	line-height: 1.35;
}

.reconnect-copy p {
	margin: 0;
	color: #667085;
	font-size: .9rem;
	line-height: 1.7;
}

.reconnect-progress {
	height: .3rem;
	margin: -.15rem 0 1.4rem;
	overflow: hidden;
	border-radius: 999px;
	background: #e8f0f7;
}

.reconnect-progress span {
	display: block;
	width: 42%;
	height: 100%;
	border-radius: inherit;
	background: linear-gradient(90deg, #36bffa, #087dca);
	animation: reconnect-progress 1.35s ease-in-out infinite;
}

.reconnect-actions {
	display: flex;
	justify-content: center;
	gap: .7rem;
}

.reconnect-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .45rem;
	min-height: 2.55rem;
	padding: .65rem 1.05rem;
	border: 1px solid transparent;
	border-radius: .65rem;
	font-size: .86rem;
	font-weight: 600;
	text-decoration: none;
	transition: transform .16s ease, background-color .16s ease, border-color .16s ease, box-shadow .16s ease;
}

.reconnect-button:hover {
	transform: translateY(-1px);
}

.reconnect-button.is-primary {
	background: #087dca;
	box-shadow: 0 .45rem 1rem rgba(8, 125, 202, .22);
	color: #fff;
}

.reconnect-button.is-primary:hover {
	background: #066dac;
	color: #fff;
}

.reconnect-button.is-secondary {
	border-color: #d9e2ec;
	background: #fff;
	color: #475467;
}

.reconnect-button.is-secondary:hover {
	border-color: #9ec8e5;
	background: #f4f9fd;
	color: #087dca;
}

.reconnect-button:focus-visible {
	outline: 3px solid rgba(8, 125, 202, .24);
	outline-offset: 2px;
}

@keyframes reconnect-spin {
	to { transform: rotate(360deg); }
}

@keyframes reconnect-progress {
	0% { transform: translateX(-120%); }
	50% { transform: translateX(95%); }
	100% { transform: translateX(250%); }
}

@keyframes reconnect-card-in {
	from { opacity: 0; transform: translateY(.75rem) scale(.98); }
	to { opacity: 1; transform: translateY(0) scale(1); }
}

@media (max-width: 575.98px) {
	.reconnect-overlay { padding: 1rem; }
	.reconnect-card { padding: 1.8rem 1.25rem 1.35rem; }
	.reconnect-actions { flex-direction: column; }
	.reconnect-button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
	.reconnect-card,
	.reconnect-progress span { animation: none; }
}
@media (max-width: 767.98px) {
	.manage-header-clock,
	.merchant-header-clock {
		display: none;
	}
}
.manage-main > .card,
.manage-main .table-container {
	border-color: var(--bs-border-color);
	box-shadow: var(--portal-card-shadow);
}
.manage-footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px 20px;
	min-height: var(--portal-footer-height);
	padding: 10px 12px;
	border-top: 1px solid var(--bs-border-color);
	background: var(--portal-header-bg);
	color: var(--bs-secondary-color);
	font-size: .72rem;
}
.manage-footer-brand,
.manage-footer-time,
.manage-footer-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
}
.manage-footer-brand img {
	width: 20px;
	height: 20px;
}
.manage-footer-time strong {
	color: var(--portal-accent-text);
	font-weight: 600;
	font-size: .92rem;
}
.manage-footer-time {
	font-size: .72rem;
}
.manage-footer-links a {
	color: var(--bs-secondary-color);
	text-decoration: none;
}
.manage-footer-links a:hover {
	color: var(--bs-primary);
}
.manage-navigation-toggle {
	display: none;
	width: 40px;
	height: 40px;
	flex-shrink: 0;
	border: 1px solid var(--bs-border-color);
	border-radius: 10px;
	background: var(--bs-body-bg);
	color: var(--bs-body-color);
}
.manage-navigation-backdrop {
	display: none;
}
.manage-skip-link {
	position: fixed;
	top: -100px;
	left: 16px;
	z-index: 1090;
	padding: 12px;
	background: var(--bs-body-bg);
}
.manage-skip-link:focus {
	top: 12px;
}
:where(.manage-shell, .merchant-shell) :focus-visible {
	outline: 2px solid var(--portal-accent);
	outline-offset: 3px;
}

@media (max-width: 1199.98px) {
	.manage-footer {
	justify-content: center;
}
}
@media (max-width: 991.98px) {
	.manage-sidebar {
	transform: translateX(-100%);
	visibility: hidden;
}
	.manage-stage {
	margin-left: 0;
}
	.manage-navigation-toggle {
	display: inline-grid;
	place-items: center;
}
	.manage-navigation-backdrop {
	position: fixed;
	inset: 0;
	z-index: 1025;
	display: block;
	border: 0;
	background: rgb(12 22 34 / 40%);
	opacity: 0;
	visibility: hidden;
	transition: opacity .2s, visibility .2s;
}
	.manage-shell.navigation-open .manage-sidebar {
	transform: translateX(0);
	visibility: visible;
}
	.manage-shell.navigation-open .manage-navigation-backdrop {
	opacity: 1;
	visibility: visible;
}
}
@media (max-width: 575.98px) {
	:root {
	--portal-header-height: 68px;
	--portal-footer-height: 100px;
}
	.manage-header {
	padding: 10px 8px;
	gap: 8px;
}
	.manage-header-tools {
	gap: 8px;
	}
	.manage-header-tools .logout-text {
	display: none;
}
	:is(.manage-header-tools, .merchant-account) .dropdown-logout > .dropdown-toggle {
	width: 46px;
	padding: 4px;
}
	:is(.manage-header-tools, .merchant-account) .dropdown-logout > .dropdown-toggle::after {
	display: none;
}
	.manage-heading h1 {
	font-size: .98rem;
}
	.manage-breadcrumb {
	max-width: 48vw;
	white-space: nowrap;
	overflow: hidden;
}
	.manage-breadcrumb span:not(:last-child) {
	display: none;
}
	.manage-breadcrumb a {
	display: none;
}
	.manage-main {
	padding: 8px;
}
	.manage-footer {
	flex-direction: column;
	gap: 8px;
}
}
@media (prefers-reduced-motion: reduce) {
	.manage-sidebar, .manage-navigation-backdrop, .manage-navigation .menu .submenu .nav-link {
	transition: none;
}
}

.form-inline .form-label {
	width: var(--bb-row-label-width) !important;
}



.channel-edit-tabs .tabs-body-content {
	width: 100%;
	min-width: 0;
}

.channel-edit-tabs .adapter-parameter-content {
	width: calc(100% + 32px);
	margin: -16px;
}

.channel-edit-tabs .adapter-type-panel,
.channel-edit-tabs .adapter-empty-state {
	width: 100%;
}

.channel-adapter-select .dropdown-menu {
	width: 100%;
	min-width: 100%;
	max-width: none;
}

.channel-edit-tabs {
	min-width: 0;
	max-width: 100%;
	overflow-x: hidden;
}

.full-page-table > .table-shim {
	min-height: calc(100vh - var(--portal-header-height) - var(--portal-footer-height) - 150px);
}

.portal-filter-card {
	border-radius: var(--bs-border-radius-lg);
}

.portal-filter-bar {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem .75rem;
	align-items: center;
}

.portal-filter-item {
	display: flex;
	align-items: center;
	gap: .5rem;
}

.portal-filter-item-wide {
	min-width: 24rem;
}

.portal-filter-item-wide-compact {
	min-width: 22rem;
	max-width: 22rem;
}

.portal-filter-label {
	flex: 0 0 auto;
	margin-bottom: 0;
	font-size: .875rem;
	font-weight: 600;
	color: var(--bs-secondary-color);
	white-space: nowrap;
}

.portal-filter-control {
	width: 13rem;
	margin-bottom: 0;
}

.portal-filter-control-wide {
	width: 14rem;
}

.portal-filter-control-extra-wide {
	width: 22rem;
}

.portal-filter-control-sm {
	width: 10rem;
}

.portal-filter-control-xs {
	width: 8rem;
}

.portal-filter-control-id {
	width: 11rem;
}

.portal-filter-control-range {
	width: 20rem;
}

.portal-filter-actions {
	display: flex;
	gap: .5rem;
	margin-left: auto;
}

.portal-table-fill > .table-shim {
	min-height: calc(100vh - var(--portal-header-height) - var(--portal-footer-height) - 180px);
}

.portal-table-fill-statistics > .table-shim {
	min-height: calc(100vh - var(--portal-header-height) - var(--portal-footer-height) - 310px);
}

.merchants-list-status-badge {
	font-size: .9rem;
	font-weight: 600;
}

.statistics-status-badge {
	font-size: .68rem;
	font-weight: 600;
}

.statistics-channel-metrics {
	display: flex;
	flex-direction: column;
	gap: .1rem;
	font-size: .72rem;
	font-weight: 600;
	line-height: 1.25;
	white-space: nowrap;
}

.statistics-channel-limit {
	display: flex;
	flex-direction: column;
	gap: .1rem;
	font-size: .72rem;
	font-weight: 600;
	line-height: 1.25;
	white-space: nowrap;
}

.statistics-success-value {
	font-size: .875rem;
	font-weight: 700;
}

.collection-orders-table .table td,
.collection-orders-table .table th {
	padding-top: .35rem;
	padding-bottom: .35rem;
	vertical-align: middle;
}

.collection-orders-compact-stack {
	gap: .2rem !important;
	line-height: 1.2;
}

.collection-orders-status-badge {
	font-size: .7rem;
	font-weight: 600;
	width: 80px;
}

.collection-orders-status-processing {
	background-color: #0078d4 !important;
	color: #fff !important;
}

.route-statistics-limit-progress {
	--route-statistics-limit-progress-color: rgba(0, 120, 212, .11);
	position: relative;
	isolation: isolate;
	overflow: hidden;
}

.route-statistics-limit-progress::before {
	position: absolute;
	z-index: -1;
	inset: 0 auto 0 0;
	width: var(--route-statistics-limit-progress, 0%);
	background: var(--route-statistics-limit-progress-color);
	box-shadow: inset -1px 0 rgba(0, 120, 212, .18);
	content: "";
	transition: width .3s ease;
}

.route-statistics-limit-progress-warning {
	--route-statistics-limit-progress-color: rgba(245, 158, 11, .14);
}

.route-statistics-limit-progress-warning::before {
	box-shadow: inset -1px 0 rgba(217, 119, 6, .22);
}

.route-statistics-limit-progress-danger {
	--route-statistics-limit-progress-color: rgba(220, 53, 69, .12);
}

.route-statistics-limit-progress-danger::before {
	box-shadow: inset -1px 0 rgba(220, 53, 69, .2);
}

.route-statistics-hourly-heatmap {
	margin-top: .45rem;
	padding: .12rem .3rem;
	border: 1px solid var(--bs-primary-border-subtle);
	border-radius: .3rem;
	background: #fff;
}

.route-statistics-hourly-bars {
	display: flex;
	align-items: stretch;
	gap: 1.5px;
	height: .45rem;
	width: 100%;
	overflow: visible;
}

.route-statistics-hourly-cell {
	position: relative;
	flex: 1 1 0;
	min-width: 0;
	height: 100%;
	border-radius: 1px;
	outline: none;
	cursor: default;
	transition: filter .15s ease, transform .15s ease;
}

.route-statistics-hourly-cell::after {
	content: attr(data-tooltip);
	position: absolute;
	left: 50%;
	bottom: calc(100% + .35rem);
	z-index: 20;
	padding: .08rem .3rem;
	border: 1px solid var(--bs-primary-border-subtle);
	border-radius: .35rem;
	background: var(--bs-body-bg);
	box-shadow: 0 .2rem .6rem rgba(var(--bs-body-color-rgb), .14);
	color: var(--bs-primary-text-emphasis);
	font-size: .55rem;
	font-weight: 600;
	line-height: 1.1;
	white-space: nowrap;
	pointer-events: none;
	opacity: 0;
	transform: translate(-50%, .2rem);
	transition: opacity .12s ease, transform .12s ease;
}

.route-statistics-hourly-cell:hover,
.route-statistics-hourly-cell:focus-visible {
	transform: scaleY(1.65);
	z-index: 10;
}

.route-statistics-hourly-cell:hover::after,
.route-statistics-hourly-cell:focus-visible::after {
	opacity: 1;
	transform: translate(-50%, 0);
}

.statistics-overview-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 1rem;
}

.statistics-overview-card {
	background: linear-gradient(135deg, rgba(255,255,255,.98) 0%, rgba(248,250,255,.96) 100%);
	border-radius: 1rem;
	padding: 1rem 1.1rem;
	border: 1px solid rgba(13, 110, 253, .08);
	min-height: 126px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: .35rem;
}

.statistics-overview-title {
	font-size: .9rem;
	font-weight: 600;
	color: var(--bs-secondary-color);
}

.statistics-overview-value {
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1.2;
}

.statistics-overview-subtitle {
	font-size: .85rem;
	color: var(--bs-secondary-color);
}

.label-wide .form-label {
	width: 300px !important;
}

@media (max-width: 992px) {
	.portal-filter-actions.portal-filter-actions-stretch {
		margin-left: 0;
		width: 100%;
	}

	.portal-filter-actions.portal-filter-actions-stretch > .btn {
		flex: 1 1 auto;
	}
}

@media (max-width: 991.98px) {
	.portal-filter-actions {
		margin-left: 0;
	}

	.portal-table-fill > .table-shim {
		min-height: calc(100vh - var(--portal-header-height) - var(--portal-footer-height) - 220px);
	}
}

@media (max-width: 575.98px) {
	.portal-filter-item,
	.portal-filter-item-wide,
	.portal-filter-item-wide-compact {
		width: 100%;
		min-width: 100%;
		max-width: 100%;
	}

	.portal-filter-control,
	.portal-filter-control-sm,
	.portal-filter-control-xs,
	.portal-filter-control-id,
	.portal-filter-control-range,
	.portal-filter-control-wide,
	.portal-filter-control-extra-wide {
		width: 100%;
	}

	.portal-filter-actions {
		width: 100%;
	}
}

/* 商户端公共布局 */
.merchant-shell {
	--merchant-sidebar-width: var(--portal-sidebar-width);
	--merchant-blue: var(--bs-primary);
	--merchant-blue-dark: var(--bs-primary-text-emphasis);
	--merchant-text: var(--bs-body-color);
	--merchant-muted: var(--bs-secondary-color);
	--merchant-border: var(--bs-border-color);
	min-height: 100vh;
	min-height: 100dvh;
	background: radial-gradient(circle at 86% 2%, rgba(var(--bs-primary-rgb), .06), transparent 25rem), var(--portal-canvas);
	color: var(--merchant-text);
}

.merchant-unbound-page {
	display: grid;
	min-height: 100vh;
	padding: 1.5rem;
	place-items: center;
	background: radial-gradient(circle at 82% 10%, rgba(var(--bs-primary-rgb), .08), transparent 28rem), var(--portal-canvas);
}

.merchant-unbound-card {
	width: min(480px, 100%);
	padding: clamp(2rem, 6vw, 3.5rem);
	border: 1px solid var(--bs-border-color);
	border-radius: 22px;
	background: rgba(255, 255, 255, .96);
	box-shadow: 0 22px 60px rgba(35, 67, 109, .12);
	color: var(--bs-body-color);
	text-align: center;
}

.merchant-unbound-icon {
	display: grid;
	width: 76px;
	height: 76px;
	margin: 0 auto 1.35rem;
	place-items: center;
	border-radius: 22px;
	background: var(--bs-primary-bg-subtle);
	box-shadow: inset 0 0 0 1px rgba(var(--bs-primary-rgb), .10);
	color: var(--bs-primary);
	font-size: 1.8rem;
}

.merchant-unbound-card h1 {
	margin-bottom: .75rem;
	font-size: clamp(1.45rem, 4vw, 1.9rem);
	font-weight: 750;
}

.merchant-unbound-card p {
	margin: 0 auto 1.5rem;
	color: var(--bs-secondary-color);
	line-height: 1.75;
}

.merchant-unbound-profile-link {
	display: inline-flex;
	min-height: 42px;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	padding: .65rem 1.15rem;
	border-radius: 11px;
	background: var(--bs-primary);
	box-shadow: 0 8px 20px rgba(var(--bs-primary-rgb), .22);
	color: #fff;
	font-weight: 650;
	text-decoration: none;
}

.merchant-unbound-profile-link:hover {
	background: var(--bs-link-hover-color);
	color: #fff;
}

.merchant-sidebar {
	position: fixed;
	inset: 0 auto 0 0;
	z-index: 1040;
	box-sizing: border-box;
	display: flex;
	width: var(--merchant-sidebar-width);
	padding-inline: .75rem;
	flex-direction: column;
	overflow: clip;
	background: var(--portal-sidebar-bg);
	box-shadow: 14px 0 40px rgba(24, 52, 91, .10);
	color: var(--portal-sidebar-color);
	transition: transform .24s ease;
}

.merchant-brand {
	display: flex;
	align-items: center;
	gap: .8rem;
	min-height: 88px;
	padding: 16px 10px;
	border-bottom: 1px solid var(--portal-sidebar-border);
	color: var(--portal-sidebar-color);
	text-decoration: none;
}

.merchant-brand:hover {
	color: var(--portal-sidebar-color);
}

.merchant-brand-logo {
	display: grid;
	width: 56px;
	height: 56px;
	flex: 0 0 auto;
	place-items: center;
	border-radius: var(--portal-brand-radius);
	background: var(--portal-brand-logo-bg, #fff);
	box-shadow: var(--portal-brand-logo-shadow, 0 4px 18px rgb(0 0 0 / 8%));
}

.merchant-brand-logo img {
	width: var(--portal-brand-logo-size, 46px);
	height: var(--portal-brand-logo-size, 46px);
}

.merchant-brand-text {
	display: flex;
	min-width: 0;
	flex-direction: column;
}

.merchant-brand-text strong {
	overflow: hidden;
	font-size: 1rem;
	font-weight: 750;
	letter-spacing: .02em;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.merchant-brand-text small {
	margin-top: .1rem;
	color: var(--portal-sidebar-muted);
	font-size: .68rem;
	letter-spacing: .13em;
	text-transform: uppercase;
}

.merchant-portal-badge {
	display: flex;
	align-items: center;
	gap: .6rem;
	margin: .85rem 0 .55rem;
	padding: .7rem .7rem;
	border: 1px solid var(--portal-sidebar-border);
	border-radius: 12px;
	background: var(--portal-menu-hover);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .06);
}

.merchant-portal-badge > span {
	display: grid;
	width: 30px;
	height: 30px;
	flex: 0 0 auto;
	place-items: center;
	border-radius: 9px;
	background: var(--bs-primary);
	box-shadow: 0 7px 18px rgba(2, 22, 56, .28);
}

.merchant-portal-badge div,
.merchant-sidebar-footer div:last-child {
	display: flex;
	flex-direction: column;
}

.merchant-portal-badge strong {
	font-size: .82rem;
	font-weight: 700;
}

.merchant-portal-badge small {
	margin-top: .15rem;
	color: var(--portal-sidebar-muted);
	font-size: .66rem;
}

.merchant-navigation {
	position: relative;
	z-index: 1;
	flex: 1 1 auto;
	min-height: 0;
	margin-inline: -4px;
	overflow-x: hidden;
	overflow-y: auto;
	padding: .35rem 0 1rem;
}

.merchant-navigation-title {
	padding: .35rem .55rem .5rem;
	color: var(--portal-sidebar-muted);
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .14em;
}

.merchant-navigation .menu {
	padding-inline: 0;
	background: transparent;
}

.merchant-navigation .menu .submenu .nav-link {
	min-height: 40px;
	margin: .12rem 0;
	padding: .55rem .65rem;
	border-radius: 11px;
	color: var(--portal-sidebar-color);
	font-size: .84rem;
	font-weight: 600;
	transition: color .16s ease, background-color .16s ease, transform .16s ease;
}

.merchant-navigation .menu .submenu .nav-link:hover {
	background: var(--portal-menu-hover);
	color: var(--portal-menu-active-color);
	transform: translateX(2px);
}

.merchant-navigation .menu .submenu .nav-link.active,
.merchant-navigation .menu .submenu .nav-link.is-active,
.merchant-navigation .menu .submenu .nav-link[aria-current="page"] {
	background: var(--portal-menu-active);
	box-shadow: 0 8px 22px rgba(0, 21, 56, .24), inset 0 1px 0 rgba(255, 255, 255, .18);
	color: var(--portal-menu-active-color);
}

.merchant-navigation .menu-icon {
	width: 1.4rem;
	color: var(--portal-sidebar-muted);
	font-size: .98rem;
}

.merchant-document-link {
	display: flex;
	min-height: 40px;
	align-items: center;
	gap: .5rem;
	margin: .12rem 0;
	padding: .55rem .65rem;
	border-radius: 11px;
	color: var(--portal-sidebar-color);
	font-size: .84rem;
	font-weight: 600;
	text-decoration: none;
	transition: color .16s ease, background-color .16s ease, transform .16s ease;
}

.merchant-document-link:hover,
.merchant-document-link:focus-visible {
	background: var(--portal-menu-hover);
	color: var(--portal-menu-active-color);
	transform: translateX(2px);
}

.merchant-document-link > :first-child {
	width: 1.4rem;
	color: var(--portal-sidebar-muted);
	font-size: .98rem;
}

.merchant-document-link-external {
	margin-left: auto;
	color: var(--portal-sidebar-muted);
	font-size: .68rem;
}

.merchant-navigation .menu .submenu .nav-link.active .menu-icon,
.merchant-navigation .menu .submenu .nav-link.is-active .menu-icon {
	color: var(--portal-menu-active-color);
}

.merchant-sidebar-footer {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	gap: .55rem;
	flex-shrink: 0;
	margin: .6rem -.75rem 0;
	padding: 24px;
	border-top: 1px solid var(--portal-sidebar-border);
	color: var(--portal-sidebar-color);
}

.merchant-security-icon {
	display: grid;
	width: 28px;
	height: 28px;
	flex: 0 0 auto;
	place-items: center;
	border-radius: 10px;
	background: rgba(70, 205, 149, .16);
	color: #62e3ac;
}

.merchant-sidebar-footer strong {
	font-size: .76rem;
}

.merchant-sidebar-footer small {
	margin-top: .08rem;
	color: var(--portal-sidebar-muted);
	font-size: .66rem;
}

.merchant-stage {
	display: flex;
	min-width: 0;
	min-height: 100vh;
	min-height: 100dvh;
	margin-left: var(--merchant-sidebar-width);
	flex-direction: column;
}

.merchant-header {
	position: sticky;
	top: 0;
	z-index: 1020;
	display: flex;
	min-height: var(--portal-header-height);
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
	flex-shrink: 0;
	padding: 12px;
	border-bottom: 1px solid var(--bs-border-color);
	background: var(--portal-header-bg);
	box-shadow: 0 7px 24px rgba(46, 69, 100, .045);
	backdrop-filter: blur(16px);
}

.merchant-header-leading {
	display: flex;
	min-width: 0;
	align-items: center;
	gap: .7rem;
}

.merchant-navigation-toggle {
	display: none;
	width: 42px;
	height: 42px;
	border: 1px solid var(--merchant-border);
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 6px 18px rgba(36, 67, 104, .08);
	color: var(--merchant-blue-dark);
}

.merchant-welcome {
	display: flex;
	min-width: 0;
	flex-direction: column;
}

.merchant-welcome span {
	color: var(--merchant-muted);
	font-size: .73rem;
}

.merchant-welcome strong {
	overflow: hidden;
	margin-top: .12rem;
	font-size: 1rem;
	font-weight: 720;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.merchant-account {
	flex: 0 0 auto;
}

.merchant-account .logout {
	border-radius: 14px;
}

.merchant-main {
	display: flex;
	width: 100%;
	flex: 1;
	min-width: 0;
	align-items: stretch;
	padding: 12px;
}

.merchant-content {
	width: 100%;
	min-width: 0;
	flex: 1;
	animation: merchant-content-enter .24s ease-out;
}

.merchant-content .table-container {
	border: 1px solid var(--bs-border-color);
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 10px 28px rgba(42, 68, 102, .055);
}

.merchant-footer {
	display: flex;
	flex-shrink: 0;
	flex-wrap: wrap;
	min-height: var(--portal-footer-height);
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 10px 12px;
	border-top: 1px solid var(--merchant-border);
	background: var(--portal-header-bg);
	color: var(--merchant-muted);
	font-size: .7rem;
}

.merchant-footer-brand,
.merchant-footer-time,
.merchant-footer-links {
	display: flex;
	align-items: center;
	gap: .65rem;
}

.merchant-footer-time {
	flex-wrap: wrap;
}

.merchant-footer-time strong {
	color: var(--portal-accent-text);
	font-weight: 650;
}

.merchant-footer-brand img {
	width: 18px;
	height: 18px;
}

.merchant-footer-links a {
	color: var(--bs-secondary-color);
	text-decoration: none;
}

.merchant-footer-links a:hover {
	color: var(--merchant-blue);
}

.merchant-footer-links span {
	width: 1px;
	height: .8rem;
	background: var(--bs-border-color);
}

.merchant-navigation-backdrop {
	display: none;
}

#blazor-error-ui {
	position: fixed;
	right: 1rem;
	bottom: 1rem;
	left: auto;
	z-index: 2000;
	display: none;
	max-width: min(420px, calc(100vw - 2rem));
	padding: .8rem 2.75rem .8rem 1rem;
	border: 1px solid #f0cf71;
	border-radius: 12px;
	background: #fff8dc;
	box-shadow: 0 12px 34px rgba(72, 56, 15, .18);
	color: #5f4c17;
}

#blazor-error-ui .reload {
	margin-left: .45rem;
}

#blazor-error-ui .dismiss {
	position: absolute;
	top: .65rem;
	right: .8rem;
	cursor: pointer;
}

@keyframes merchant-content-enter {
	from {
		opacity: 0;
		transform: translateY(5px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* 商户桌面表格按实际剩余高度滚动，筛选栏和分页不挤占页脚 */
@media (min-width: 992px) {
	.merchant-stage:has(> .merchant-main > .merchant-content > .full-page-table) {
		height: 100vh;
		height: 100dvh;
	}

	.merchant-main:has(> .merchant-content > .full-page-table) {
		min-height: 0;
	}

	.merchant-content:has(> .full-page-table) {
		display: flex;
		min-height: 0;
		flex-direction: column;
	}

	.merchant-content:has(> .full-page-table) > .card,
	.merchant-content > .full-page-table > .table-toolbar,
	.merchant-content > .full-page-table > .nav-pages {
		flex-shrink: 0;
	}

	.merchant-content > .full-page-table {
		flex: 1;
		min-height: 0;
	}

	.merchant-content > .full-page-table > .table-shim {
		flex: 1;
		min-height: 0;
		overflow: auto;
	}
}

@media (max-width: 1199.98px) {
	.merchant-footer {
		justify-content: center;
	}
}

@media (max-width: 991.98px) {
	.merchant-sidebar {
		transform: translateX(-102%);
		visibility: hidden;
	}

	.merchant-stage {
		margin-left: 0;
	}

	.merchant-navigation-toggle {
		display: inline-grid;
		place-items: center;
	}

	.merchant-navigation-backdrop {
		position: fixed;
		inset: 0;
		z-index: 1035;
		display: block;
		border: 0;
		background: rgba(10, 24, 48, .48);
		opacity: 0;
		pointer-events: none;
		transition: opacity .22s ease;
		backdrop-filter: blur(2px);
	}

	.navigation-open .merchant-sidebar {
		transform: translateX(0);
		visibility: visible;
	}

	.navigation-open .merchant-navigation-backdrop {
		opacity: 1;
		pointer-events: auto;
	}
}

@media (max-width: 575.98px) {
	.merchant-header {
		min-height: var(--portal-header-height);
		padding: 10px 8px;
	}

	.merchant-welcome span {
		display: none;
	}

	.merchant-welcome strong {
		max-width: 9rem;
		font-size: .9rem;
	}

	.merchant-account .logout-text {
		display: none;
	}

	.merchant-main {
		padding: 8px;
	}

	.merchant-content .full-page-table > .table-shim,
	.merchant-content .full-page-table > .table-card {
		min-height: clamp(320px, 48vh, 460px);
		height: auto;
	}

	.merchant-footer {
		flex-direction: column;
		justify-content: center;
		gap: .45rem;
		text-align: center;
	}

	.merchant-footer-time,
	.merchant-footer-links {
		flex-wrap: wrap;
		justify-content: center;
	}
}

@media (prefers-reduced-motion: reduce) {
	.merchant-sidebar,
	.merchant-navigation-backdrop,
	.merchant-navigation .menu .submenu .nav-link,
	.merchant-content {
		animation: none;
		transition: none;
	}
}


/* 登录页 */
/* 登录入口：运营深色展示区，商户浅色反向双栏 */
.manage-login-page {
	--login-ink: var(--bs-primary-text-emphasis);
	--login-dark: color-mix(in srgb, var(--bs-primary) 28%, #101d26);
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	min-height: 100dvh;
	padding: 0 clamp(24px, 5vw, 80px);
	background: var(--portal-canvas);
}
.manage-login-masthead, .manage-login-footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	width: min(100%, 1180px);
	margin-inline: auto;
}
.manage-login-masthead {
	min-height: 92px;
	padding-block: 16px;
}
.manage-login-brand {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
}
.manage-login-brand img {
	width: 50px;
	height: 50px;
	object-fit: contain;
	flex-shrink: 0;
}
.manage-login-brand > div {
	min-width: 0;
}
.manage-login-brand strong {
	display: block;
	font-size: 1.2rem;
	font-weight: 750;
	letter-spacing: -.03em;
}
.manage-login-brand span {
	display: block;
	font-size: .72rem;
	color: var(--bs-secondary-color);
	overflow-wrap: anywhere;
}
.manage-login-portal {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-shrink: 0;
	font-size: .8rem;
	font-weight: 600;
	color: var(--login-ink);
}
.manage-login-portal i {
	color: var(--bs-primary);
}
.manage-login-frame {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	width: min(100%, 1180px);
	margin: auto;
	border: 1px solid var(--bs-border-color);
	border-radius: 24px;
	background: var(--bs-body-bg);
	box-shadow: 0 24px 64px rgba(var(--bs-primary-rgb), .07);
	overflow: hidden;
}
.manage-login-visual {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	min-width: 0;
	padding: clamp(28px, 3.5vw, 52px);
	background: radial-gradient(ellipse at 70% 50%, rgba(var(--bs-primary-rgb), .45), transparent 70%), var(--login-dark);
	color: #fff;
	isolation: isolate;
}
.manage-login-visual::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: linear-gradient(rgb(255 255 255 / 4%) 1px, transparent 1px), linear-gradient(90deg, rgb(255 255 255 / 4%) 1px, transparent 1px);
	background-size: 48px 48px;
	pointer-events: none;
}
.manage-login-eyebrow {
	display: inline-block;
	border-left: 3px solid var(--portal-accent);
	padding-left: 12px;
	font-size: .68rem;
	font-weight: 650;
	letter-spacing: .2em;
}
.manage-login-visual h2 {
	color: inherit;
	margin: 24px 0 14px;
	font-size: clamp(1.7rem, 2.7vw, 2.5rem);
	font-weight: 650;
	line-height: 1.4;
	letter-spacing: -.025em;
	text-wrap: balance;
}
.manage-login-visual p {
	margin: 0;
	font-size: .85rem;
	line-height: 1.8;
	opacity: .7;
}
.manage-login-artwork {
	margin: 16px -20px;
}
.manage-login-artwork img {
	display: block;
	width: 100%;
	height: clamp(220px, 24vw, 330px);
	object-fit: contain;
}
.manage-login-visual-footer {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	padding-top: 18px;
	border-top: 1px solid rgb(255 255 255 / 16%);
	font-size: .7rem;
	letter-spacing: .04em;
	opacity: .7;
}
.manage-login-panel {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 0;
	padding: 32px clamp(24px, 3.5vw, 52px);
}
.manage-login-card {
	width: 100%;
	max-width: 420px;
	min-width: 0;
}
.manage-login-intro {
	margin-bottom: 22px;
}
.manage-login-form-heading {
	display: flex;
	align-items: center;
	gap: 12px;
}
.manage-login-form-heading h1 {
	margin: 0;
	color: var(--login-ink);
	font-size: clamp(1.35rem, 2vw, 1.7rem);
	font-weight: 750;
	line-height: 1.35;
}
.manage-login-identity-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	flex-shrink: 0;
	border-radius: 10px;
	color: var(--bs-primary);
	background: var(--bs-primary-bg-subtle);
}
.manage-login-intro p {
	margin: 8px 0 0;
	color: var(--bs-secondary-color);
	font-size: .8rem;
}
.manage-login-field {
	position: relative;
	min-width: 0;
	margin-bottom: 12px;
}
.manage-login-field .form-label {
	margin-bottom: 5px;
	font-size: .78rem;
}
.manage-login-field-icon {
	position: absolute;
	left: 13px;
	bottom: 12px;
	z-index: 3;
	color: var(--bs-secondary-color);
	font-size: .85rem;
	pointer-events: none;
}
.manage-login-field .form-control {
	min-width: 0;
	height: 42px;
	padding-left: 36px;
	padding-right: 12px;
	border: 1px solid var(--bs-border-color);
	border-radius: 8px;
	background: var(--portal-input-bg);
	font-size: .85rem;
}
.manage-login-field .form-control:focus {
	background: var(--bs-body-bg);
}
.manage-login-field .bb-password {
	position: relative;
}
.manage-login-field .bb-password .form-control {
	padding-right: 42px;
}
.manage-login-field .bb-password .btn {
	position: absolute;
	right: 4px;
	top: 50%;
	transform: translateY(-50%);
	border: 0;
	background: transparent;
	color: var(--bs-secondary-color);
	z-index: 3;
}
.manage-login-secondary-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: 18px;
	margin-bottom: 12px;
}
.manage-login-secondary-row .manage-login-field {
	margin: 0;
}
.manage-login-options {
	display: flex;
	align-items: center;
	min-height: 42px;
	font-size: .8rem;
	white-space: nowrap;
}
.manage-login-options .form-check {
	margin: 0;
}
.manage-login-captcha-row {
	display: grid;
	width: 100%;
	margin-bottom: 14px;
}
.manage-login-captcha-content {
	grid-area: 1 / 1;
	min-width: 0;
}
/* 验证成功后保留拼图占位，避免登录框和提交按钮跳动 */
.manage-login-captcha-row.is-verified .manage-login-captcha-content {
	visibility: hidden;
	pointer-events: none;
}
.manage-login-captcha-row > *, .manage-login-captcha-row img, .manage-login-captcha-row canvas {
	max-width: 100%;
	box-sizing: border-box;
}
.manage-login-verified {
	grid-area: 1 / 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	align-self: stretch;
	gap: 12px;
	width: 100%;
	min-width: 0;
	margin: 0;
	padding: 20px 16px;
	border: 1px solid var(--bs-border-color);
	border-radius: 10px;
	background: var(--bs-body-bg);
	text-align: center;
}
.manage-login-verified-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	flex-shrink: 0;
	margin-bottom: 2px;
	border: 1px solid var(--bs-primary-border-subtle);
	border-radius: 50%;
	background: var(--bs-primary-bg-subtle);
	color: var(--bs-primary);
	font-size: 1.15rem;
}
.manage-login-verified strong {
	color: var(--bs-body-color);
	font-size: .95rem;
	font-weight: 650;
	line-height: 1.4;
}
.manage-login-verified p {
	margin: 0;
	color: var(--bs-secondary-color);
	font-size: .75rem;
	line-height: 1.6;
	text-wrap: balance;
}
.manage-login-alert {
	font-size: .8rem;
}
.manage-login-submit {
	min-height: 44px;
	border-radius: 8px;
	font-size: .9rem;
	font-weight: 650;
	letter-spacing: .06em;
}
.manage-login-footer {
	min-height: 64px;
	padding-block: 16px;
	font-size: .7rem;
	color: var(--bs-secondary-color);
}
.manage-login-document-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 32px;
	color: var(--bs-primary);
	font-size: .8rem;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}
.manage-login-document-link:hover {
	color: var(--bs-primary-text-emphasis);
	text-decoration: underline;
	text-underline-offset: 4px;
}
.manage-login-page :focus-visible {
	outline: 2px solid var(--bs-primary);
	outline-offset: 3px;
}
.manage-login-merchant {
	background: var(--portal-login-bg);
}
.manage-login-merchant .manage-login-visual {
	grid-column: 2;
	grid-row: 1;
	margin: 14px;
	border-radius: 16px;
	background: radial-gradient(ellipse at 70% 60%, rgba(var(--bs-primary-rgb), .12), transparent 65%), var(--bs-primary-bg-subtle);
	color: var(--login-ink);
}
.manage-login-merchant .manage-login-visual::before {
	background: var(--portal-motif);
}
.manage-login-merchant .manage-login-panel {
	grid-column: 1;
	grid-row: 1;
}
.manage-login-merchant .manage-login-visual-footer {
	border-color: var(--bs-primary-border-subtle);
}
@media (max-width: 800px) {
	.manage-login-page {
		padding-inline: 12px;
	}
	.manage-login-frame {
		grid-template-columns: minmax(0, 1fr);
		max-width: 560px;
		border-radius: 18px;
	}
	.manage-login-card {
		max-width: none;
	}
	.manage-login-visual {
		display: none;
	}
	.manage-login-panel {
		padding: 24px 20px;
	}
	.manage-login-operations .manage-login-frame {
		border-top: 4px solid var(--login-dark);
	}
	.manage-login-merchant .manage-login-frame {
		border-top: 4px solid var(--bs-primary);
	}
	.manage-login-masthead {
		min-height: 76px;
	}
}
@media (max-width: 420px) {
	.manage-login-page {
		padding-inline: 8px;
	}
	.manage-login-masthead {
		gap: 8px;
	}
	.manage-login-brand {
		gap: 8px;
	}
	.manage-login-brand img {
		width: 32px;
		height: 32px;
	}
	.manage-login-brand strong {
		font-size: 1rem;
	}
	.manage-login-portal {
		font-size: .7rem;
		gap: 5px;
	}
	.manage-login-panel {
		padding: 20px 16px;
	}
	.manage-login-intro {
		margin-bottom: 18px;
	}
	.manage-login-secondary-row {
		gap: 12px;
	}
	.manage-login-footer {
		min-height: 48px;
	}
}

/* Bootstrap 组件使用主题变量覆盖编译时写入的默认颜色 */
.btn-primary {
	--bs-btn-color: var(--portal-primary-contrast);
	--bs-btn-bg: var(--bs-primary);
	--bs-btn-border-color: var(--bs-primary);
	--bs-btn-hover-color: var(--portal-primary-contrast);
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-primary), black 12%);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-primary), black 15%);
	--bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
	--bs-btn-active-color: var(--portal-primary-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-primary), black 18%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-primary), black 20%);
	--bs-btn-disabled-color: var(--portal-primary-contrast);
	--bs-btn-disabled-bg: var(--bs-primary);
	--bs-btn-disabled-border-color: var(--bs-primary);
}
.btn-outline-primary {
	--bs-btn-color: var(--bs-primary);
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--bs-primary);
	--bs-btn-hover-color: var(--portal-primary-contrast);
	--bs-btn-hover-bg: var(--bs-primary);
	--bs-btn-hover-border-color: var(--bs-primary);
	--bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
	--bs-btn-active-color: var(--portal-primary-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-primary), black 12%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-primary), black 15%);
	--bs-btn-disabled-color: var(--bs-primary);
	--bs-btn-disabled-bg: transparent;
	--bs-btn-disabled-border-color: var(--bs-primary);
}
.text-bg-primary {
	color: var(--portal-primary-contrast) !important;
}
.link-primary:hover, .link-primary:focus {
	color: color-mix(in srgb, var(--bs-primary), black 18%) !important;
	text-decoration-color: currentColor !important;
}
.table-primary {
	--bs-table-color: var(--bs-body-color);
	--bs-table-bg: var(--bs-primary-bg-subtle);
	--bs-table-border-color: var(--bs-primary-border-subtle);
	--bs-table-striped-bg: color-mix(in srgb, var(--bs-primary) 14%, white);
	--bs-table-striped-color: var(--bs-body-color);
	--bs-table-active-bg: color-mix(in srgb, var(--bs-primary) 22%, white);
	--bs-table-active-color: var(--bs-body-color);
	--bs-table-hover-bg: color-mix(in srgb, var(--bs-primary) 18%, white);
	--bs-table-hover-color: var(--bs-body-color);
}
.btn-secondary {
	--bs-btn-color: var(--portal-secondary-contrast);
	--bs-btn-bg: var(--bs-secondary);
	--bs-btn-border-color: var(--bs-secondary);
	--bs-btn-hover-color: var(--portal-secondary-contrast);
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-secondary), black 12%);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-secondary), black 15%);
	--bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
	--bs-btn-active-color: var(--portal-secondary-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-secondary), black 18%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-secondary), black 20%);
	--bs-btn-disabled-color: var(--portal-secondary-contrast);
	--bs-btn-disabled-bg: var(--bs-secondary);
	--bs-btn-disabled-border-color: var(--bs-secondary);
}
.btn-outline-secondary {
	--bs-btn-color: var(--bs-secondary);
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--bs-secondary);
	--bs-btn-hover-color: var(--portal-secondary-contrast);
	--bs-btn-hover-bg: var(--bs-secondary);
	--bs-btn-hover-border-color: var(--bs-secondary);
	--bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
	--bs-btn-active-color: var(--portal-secondary-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-secondary), black 12%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-secondary), black 15%);
	--bs-btn-disabled-color: var(--bs-secondary);
	--bs-btn-disabled-bg: transparent;
	--bs-btn-disabled-border-color: var(--bs-secondary);
}
.text-bg-secondary {
	color: var(--portal-secondary-contrast) !important;
}
.link-secondary:hover, .link-secondary:focus {
	color: color-mix(in srgb, var(--bs-secondary), black 18%) !important;
	text-decoration-color: currentColor !important;
}
.table-secondary {
	--bs-table-color: var(--bs-body-color);
	--bs-table-bg: var(--bs-secondary-bg-subtle);
	--bs-table-border-color: var(--bs-secondary-border-subtle);
	--bs-table-striped-bg: color-mix(in srgb, var(--bs-secondary) 14%, white);
	--bs-table-striped-color: var(--bs-body-color);
	--bs-table-active-bg: color-mix(in srgb, var(--bs-secondary) 22%, white);
	--bs-table-active-color: var(--bs-body-color);
	--bs-table-hover-bg: color-mix(in srgb, var(--bs-secondary) 18%, white);
	--bs-table-hover-color: var(--bs-body-color);
}
.btn-success {
	--bs-btn-color: var(--portal-success-contrast);
	--bs-btn-bg: var(--bs-success);
	--bs-btn-border-color: var(--bs-success);
	--bs-btn-hover-color: var(--portal-success-contrast);
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-success), black 12%);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-success), black 15%);
	--bs-btn-focus-shadow-rgb: var(--bs-success-rgb);
	--bs-btn-active-color: var(--portal-success-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-success), black 18%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-success), black 20%);
	--bs-btn-disabled-color: var(--portal-success-contrast);
	--bs-btn-disabled-bg: var(--bs-success);
	--bs-btn-disabled-border-color: var(--bs-success);
}
.btn-outline-success {
	--bs-btn-color: var(--bs-success);
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--bs-success);
	--bs-btn-hover-color: var(--portal-success-contrast);
	--bs-btn-hover-bg: var(--bs-success);
	--bs-btn-hover-border-color: var(--bs-success);
	--bs-btn-focus-shadow-rgb: var(--bs-success-rgb);
	--bs-btn-active-color: var(--portal-success-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-success), black 12%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-success), black 15%);
	--bs-btn-disabled-color: var(--bs-success);
	--bs-btn-disabled-bg: transparent;
	--bs-btn-disabled-border-color: var(--bs-success);
}
.text-bg-success {
	color: var(--portal-success-contrast) !important;
}
.link-success:hover, .link-success:focus {
	color: color-mix(in srgb, var(--bs-success), black 18%) !important;
	text-decoration-color: currentColor !important;
}
.table-success {
	--bs-table-color: var(--bs-body-color);
	--bs-table-bg: var(--bs-success-bg-subtle);
	--bs-table-border-color: var(--bs-success-border-subtle);
	--bs-table-striped-bg: color-mix(in srgb, var(--bs-success) 14%, white);
	--bs-table-striped-color: var(--bs-body-color);
	--bs-table-active-bg: color-mix(in srgb, var(--bs-success) 22%, white);
	--bs-table-active-color: var(--bs-body-color);
	--bs-table-hover-bg: color-mix(in srgb, var(--bs-success) 18%, white);
	--bs-table-hover-color: var(--bs-body-color);
}
.btn-danger {
	--bs-btn-color: var(--portal-danger-contrast);
	--bs-btn-bg: var(--bs-danger);
	--bs-btn-border-color: var(--bs-danger);
	--bs-btn-hover-color: var(--portal-danger-contrast);
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-danger), black 12%);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-danger), black 15%);
	--bs-btn-focus-shadow-rgb: var(--bs-danger-rgb);
	--bs-btn-active-color: var(--portal-danger-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-danger), black 18%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-danger), black 20%);
	--bs-btn-disabled-color: var(--portal-danger-contrast);
	--bs-btn-disabled-bg: var(--bs-danger);
	--bs-btn-disabled-border-color: var(--bs-danger);
}
.btn-outline-danger {
	--bs-btn-color: var(--bs-danger);
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--bs-danger);
	--bs-btn-hover-color: var(--portal-danger-contrast);
	--bs-btn-hover-bg: var(--bs-danger);
	--bs-btn-hover-border-color: var(--bs-danger);
	--bs-btn-focus-shadow-rgb: var(--bs-danger-rgb);
	--bs-btn-active-color: var(--portal-danger-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-danger), black 12%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-danger), black 15%);
	--bs-btn-disabled-color: var(--bs-danger);
	--bs-btn-disabled-bg: transparent;
	--bs-btn-disabled-border-color: var(--bs-danger);
}
.text-bg-danger {
	color: var(--portal-danger-contrast) !important;
}
.link-danger:hover, .link-danger:focus {
	color: color-mix(in srgb, var(--bs-danger), black 18%) !important;
	text-decoration-color: currentColor !important;
}
.table-danger {
	--bs-table-color: var(--bs-body-color);
	--bs-table-bg: var(--bs-danger-bg-subtle);
	--bs-table-border-color: var(--bs-danger-border-subtle);
	--bs-table-striped-bg: color-mix(in srgb, var(--bs-danger) 14%, white);
	--bs-table-striped-color: var(--bs-body-color);
	--bs-table-active-bg: color-mix(in srgb, var(--bs-danger) 22%, white);
	--bs-table-active-color: var(--bs-body-color);
	--bs-table-hover-bg: color-mix(in srgb, var(--bs-danger) 18%, white);
	--bs-table-hover-color: var(--bs-body-color);
}
.btn-warning {
	--bs-btn-color: var(--portal-warning-contrast);
	--bs-btn-bg: var(--bs-warning);
	--bs-btn-border-color: var(--bs-warning);
	--bs-btn-hover-color: var(--portal-warning-contrast);
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-warning), black 12%);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-warning), black 15%);
	--bs-btn-focus-shadow-rgb: var(--bs-warning-rgb);
	--bs-btn-active-color: var(--portal-warning-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-warning), black 18%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-warning), black 20%);
	--bs-btn-disabled-color: var(--portal-warning-contrast);
	--bs-btn-disabled-bg: var(--bs-warning);
	--bs-btn-disabled-border-color: var(--bs-warning);
}
.btn-outline-warning {
	--bs-btn-color: var(--bs-warning);
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--bs-warning);
	--bs-btn-hover-color: var(--portal-warning-contrast);
	--bs-btn-hover-bg: var(--bs-warning);
	--bs-btn-hover-border-color: var(--bs-warning);
	--bs-btn-focus-shadow-rgb: var(--bs-warning-rgb);
	--bs-btn-active-color: var(--portal-warning-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-warning), black 12%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-warning), black 15%);
	--bs-btn-disabled-color: var(--bs-warning);
	--bs-btn-disabled-bg: transparent;
	--bs-btn-disabled-border-color: var(--bs-warning);
}
.text-bg-warning {
	color: var(--portal-warning-contrast) !important;
}
.link-warning:hover, .link-warning:focus {
	color: color-mix(in srgb, var(--bs-warning), black 18%) !important;
	text-decoration-color: currentColor !important;
}
.table-warning {
	--bs-table-color: var(--bs-body-color);
	--bs-table-bg: var(--bs-warning-bg-subtle);
	--bs-table-border-color: var(--bs-warning-border-subtle);
	--bs-table-striped-bg: color-mix(in srgb, var(--bs-warning) 14%, white);
	--bs-table-striped-color: var(--bs-body-color);
	--bs-table-active-bg: color-mix(in srgb, var(--bs-warning) 22%, white);
	--bs-table-active-color: var(--bs-body-color);
	--bs-table-hover-bg: color-mix(in srgb, var(--bs-warning) 18%, white);
	--bs-table-hover-color: var(--bs-body-color);
}
.btn-info {
	--bs-btn-color: var(--portal-info-contrast);
	--bs-btn-bg: var(--bs-info);
	--bs-btn-border-color: var(--bs-info);
	--bs-btn-hover-color: var(--portal-info-contrast);
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-info), black 12%);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-info), black 15%);
	--bs-btn-focus-shadow-rgb: var(--bs-info-rgb);
	--bs-btn-active-color: var(--portal-info-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-info), black 18%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-info), black 20%);
	--bs-btn-disabled-color: var(--portal-info-contrast);
	--bs-btn-disabled-bg: var(--bs-info);
	--bs-btn-disabled-border-color: var(--bs-info);
}
.btn-outline-info {
	--bs-btn-color: var(--bs-info);
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--bs-info);
	--bs-btn-hover-color: var(--portal-info-contrast);
	--bs-btn-hover-bg: var(--bs-info);
	--bs-btn-hover-border-color: var(--bs-info);
	--bs-btn-focus-shadow-rgb: var(--bs-info-rgb);
	--bs-btn-active-color: var(--portal-info-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-info), black 12%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-info), black 15%);
	--bs-btn-disabled-color: var(--bs-info);
	--bs-btn-disabled-bg: transparent;
	--bs-btn-disabled-border-color: var(--bs-info);
}
.text-bg-info {
	color: var(--portal-info-contrast) !important;
}
.link-info:hover, .link-info:focus {
	color: color-mix(in srgb, var(--bs-info), black 18%) !important;
	text-decoration-color: currentColor !important;
}
.table-info {
	--bs-table-color: var(--bs-body-color);
	--bs-table-bg: var(--bs-info-bg-subtle);
	--bs-table-border-color: var(--bs-info-border-subtle);
	--bs-table-striped-bg: color-mix(in srgb, var(--bs-info) 14%, white);
	--bs-table-striped-color: var(--bs-body-color);
	--bs-table-active-bg: color-mix(in srgb, var(--bs-info) 22%, white);
	--bs-table-active-color: var(--bs-body-color);
	--bs-table-hover-bg: color-mix(in srgb, var(--bs-info) 18%, white);
	--bs-table-hover-color: var(--bs-body-color);
}
.btn-light {
	--bs-btn-color: var(--portal-light-contrast);
	--bs-btn-bg: var(--bs-light);
	--bs-btn-border-color: var(--bs-light);
	--bs-btn-hover-color: var(--portal-light-contrast);
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-light), black 12%);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-light), black 15%);
	--bs-btn-focus-shadow-rgb: var(--bs-light-rgb);
	--bs-btn-active-color: var(--portal-light-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-light), black 18%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-light), black 20%);
	--bs-btn-disabled-color: var(--portal-light-contrast);
	--bs-btn-disabled-bg: var(--bs-light);
	--bs-btn-disabled-border-color: var(--bs-light);
}
.btn-outline-light {
	--bs-btn-color: var(--bs-light);
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--bs-light);
	--bs-btn-hover-color: var(--portal-light-contrast);
	--bs-btn-hover-bg: var(--bs-light);
	--bs-btn-hover-border-color: var(--bs-light);
	--bs-btn-focus-shadow-rgb: var(--bs-light-rgb);
	--bs-btn-active-color: var(--portal-light-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-light), black 12%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-light), black 15%);
	--bs-btn-disabled-color: var(--bs-light);
	--bs-btn-disabled-bg: transparent;
	--bs-btn-disabled-border-color: var(--bs-light);
}
.text-bg-light {
	color: var(--portal-light-contrast) !important;
}
.link-light:hover, .link-light:focus {
	color: color-mix(in srgb, var(--bs-light), black 18%) !important;
	text-decoration-color: currentColor !important;
}
.table-light {
	--bs-table-color: var(--bs-body-color);
	--bs-table-bg: var(--bs-light-bg-subtle);
	--bs-table-border-color: var(--bs-light-border-subtle);
	--bs-table-striped-bg: color-mix(in srgb, var(--bs-light) 14%, white);
	--bs-table-striped-color: var(--bs-body-color);
	--bs-table-active-bg: color-mix(in srgb, var(--bs-light) 22%, white);
	--bs-table-active-color: var(--bs-body-color);
	--bs-table-hover-bg: color-mix(in srgb, var(--bs-light) 18%, white);
	--bs-table-hover-color: var(--bs-body-color);
}
.btn-dark {
	--bs-btn-color: var(--portal-dark-contrast);
	--bs-btn-bg: var(--bs-dark);
	--bs-btn-border-color: var(--bs-dark);
	--bs-btn-hover-color: var(--portal-dark-contrast);
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-dark), black 12%);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-dark), black 15%);
	--bs-btn-focus-shadow-rgb: var(--bs-dark-rgb);
	--bs-btn-active-color: var(--portal-dark-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-dark), black 18%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-dark), black 20%);
	--bs-btn-disabled-color: var(--portal-dark-contrast);
	--bs-btn-disabled-bg: var(--bs-dark);
	--bs-btn-disabled-border-color: var(--bs-dark);
}
.btn-outline-dark {
	--bs-btn-color: var(--bs-dark);
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--bs-dark);
	--bs-btn-hover-color: var(--portal-dark-contrast);
	--bs-btn-hover-bg: var(--bs-dark);
	--bs-btn-hover-border-color: var(--bs-dark);
	--bs-btn-focus-shadow-rgb: var(--bs-dark-rgb);
	--bs-btn-active-color: var(--portal-dark-contrast);
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-dark), black 12%);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-dark), black 15%);
	--bs-btn-disabled-color: var(--bs-dark);
	--bs-btn-disabled-bg: transparent;
	--bs-btn-disabled-border-color: var(--bs-dark);
}
.text-bg-dark {
	color: var(--portal-dark-contrast) !important;
}
.link-dark:hover, .link-dark:focus {
	color: color-mix(in srgb, var(--bs-dark), black 18%) !important;
	text-decoration-color: currentColor !important;
}
.table-dark {
	--bs-table-color: var(--bs-body-color);
	--bs-table-bg: var(--bs-dark-bg-subtle);
	--bs-table-border-color: var(--bs-dark-border-subtle);
	--bs-table-striped-bg: color-mix(in srgb, var(--bs-dark) 14%, white);
	--bs-table-striped-color: var(--bs-body-color);
	--bs-table-active-bg: color-mix(in srgb, var(--bs-dark) 22%, white);
	--bs-table-active-color: var(--bs-body-color);
	--bs-table-hover-bg: color-mix(in srgb, var(--bs-dark) 18%, white);
	--bs-table-hover-color: var(--bs-body-color);
}

.btn-link {
	--bs-btn-color: var(--bs-link-color);
	--bs-btn-hover-color: var(--bs-link-hover-color);
	--bs-btn-active-color: var(--bs-link-hover-color);
	--bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
	--bs-btn-disabled-color: var(--bs-secondary-color);
}
.form-control:focus, .form-select:focus, .form-check-input:focus {
	border-color: var(--bs-primary);
	box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color);
}
.form-check-input:checked, .form-check-input[type="checkbox"]:indeterminate {
	background-color: var(--bs-primary);
	border-color: var(--bs-primary);
}
.form-range::-webkit-slider-thumb {
	background: var(--bs-primary);
}
.form-range::-moz-range-thumb {
	background: var(--bs-primary);
}
.form-range:focus::-webkit-slider-thumb {
	box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color);
}
.form-range:focus::-moz-range-thumb {
	box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color);
}
.form-range:disabled::-webkit-slider-thumb {
	background: var(--bs-secondary-bg);
}
.form-range:disabled::-moz-range-thumb {
	background: var(--bs-secondary-bg);
}
.nav-pills {
	--bs-nav-pills-link-active-bg: var(--bs-primary);
	--bs-nav-pills-link-active-color: var(--portal-primary-contrast);
}
.dropdown-menu {
	--bs-dropdown-link-active-bg: var(--bs-primary);
	--bs-dropdown-link-active-color: var(--portal-primary-contrast);
	--bs-dropdown-link-hover-bg: var(--bs-primary-bg-subtle);
	--bs-dropdown-link-hover-color: var(--bs-primary-text-emphasis);
}
.pagination {
	--bs-pagination-active-bg: var(--bs-primary);
	--bs-pagination-active-border-color: var(--bs-primary);
	--bs-pagination-active-color: var(--portal-primary-contrast);
	--bs-pagination-focus-box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color);
}
.list-group {
	--bs-list-group-active-bg: var(--bs-primary);
	--bs-list-group-active-border-color: var(--bs-primary);
	--bs-list-group-active-color: var(--portal-primary-contrast);
}
.progress {
	--bs-progress-bar-bg: var(--bs-primary);
	--bs-progress-bar-color: var(--portal-primary-contrast);
}
.accordion {
	--bs-accordion-active-bg: var(--bs-primary-bg-subtle);
	--bs-accordion-active-color: var(--bs-primary-text-emphasis);
	--bs-accordion-btn-focus-box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color);
}
::selection {
	background: var(--bs-primary-bg-subtle);
	color: var(--bs-primary-text-emphasis);
}

.manage-account-action {
	display: block;
	width: 100%;
	padding: 0;
	margin-bottom: .5rem;
	border: 0;
	background: transparent;
	color: var(--bs-body-color);
	text-align: start;
}
.manage-account-action:hover {
	color: var(--bs-primary);
}
.manage-account-action i {
	margin-inline-end: .5rem;
}
.merchant-navigation .menu .submenu .nav-link:hover {
	color: var(--portal-sidebar-color);
}
.merchant-navigation .menu .submenu .nav-link.active,
.merchant-navigation .menu .submenu .nav-link[aria-current="page"] {
	color: var(--portal-menu-active-color);
}
.merchant-navigation .menu .submenu .nav-link.active .menu-icon {
	color: inherit;
}
.merchant-sidebar-footer {
	background: var(--portal-sidebar-motif, var(--portal-motif));
}
.merchant-portal-badge > span {
	color: var(--portal-primary-contrast);
}
.merchant-brand-text small {
	letter-spacing: .02em;
	text-transform: none;
}

/* 业务组件的选中状态也随站点主题变化 */
.tabs {
	--bb-tabs-item-active-color: var(--bs-primary);
	--bb-tabs-item-hover-color: var(--bs-primary);
	--bb-tabs-bar-bg: var(--bs-primary);
}
.table-container {
	--bb-table-header-icon-active-color: var(--bs-primary);
	--bb-table-header-hover-bg: var(--bs-primary-bg-subtle);
	--bb-table-header-icon-hover-color: var(--bs-primary);
	--bb-table-row-active-bg: var(--bs-primary-bg-subtle);
	--bb-table-row-hover-bg: var(--bs-tertiary-bg);
}
.table:not([class*="table-primary"]):not([class*="table-secondary"]):not([class*="table-success"]):not([class*="table-danger"]):not([class*="table-warning"]):not([class*="table-info"]):not([class*="table-light"]):not([class*="table-dark"]) {
	--bs-table-striped-bg: var(--bs-tertiary-bg);
	--bs-table-hover-bg: var(--bs-primary-bg-subtle);
}
.select {
	--bb-select-focus-shadow: 0 0 0 .2rem var(--bs-focus-ring-color);
}
.table-filter .card-header {
	background: var(--bs-secondary-bg);
	border-bottom-color: var(--bs-border-color);
}
.table-filter .card-arrow::after {
	border-bottom-color: var(--bs-secondary-bg);
}
.table-filter .card-arrow::before {
	border-bottom-color: var(--bs-border-color);
}

/* 商户首页的账户提示与运营入口 */
.merchant-account-notice {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 1.25rem 1.4rem;
	border: 1px solid var(--bs-border-color);
	border-left: 4px solid var(--portal-accent);
	border-radius: var(--portal-card-radius);
	background: var(--bs-body-bg);
	box-shadow: var(--portal-card-shadow);
}
.merchant-account-notice-icon {
	display: grid;
	place-items: center;
	flex: 0 0 3rem;
	height: 3rem;
	border-radius: 12px;
	background: color-mix(in srgb, var(--portal-accent) 12%, var(--bs-body-bg));
	color: var(--portal-accent-text);
	font-size: 1.25rem;
}
.merchant-account-notice h2 { margin: 0 0 .4rem; font-size: 1rem; font-weight: 700; color: var(--bs-body-color); }
.merchant-account-notice p { margin: 0; font-size: .875rem; line-height: 1.7; color: var(--bs-secondary-color); }
.merchant-index-operation-entry {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-top: 1rem;
	padding: 1.25rem 1.4rem;
	border: 1px solid color-mix(in srgb, var(--bs-primary) 22%, var(--bs-border-color));
	border-radius: var(--portal-card-radius);
	background: linear-gradient(115deg, var(--bs-primary), var(--bs-primary-text-emphasis));
	color: var(--portal-primary-contrast);
	box-shadow: var(--portal-card-shadow);
	text-decoration: none;
	transition: box-shadow .18s ease;
}
.merchant-index-operation-entry:hover { color: var(--portal-primary-contrast); box-shadow: 0 8px 24px color-mix(in srgb, var(--bs-primary) 18%, transparent); }
.merchant-index-operation-entry:focus-visible { outline: 3px solid var(--portal-accent); outline-offset: 3px; }
.merchant-index-operation-entry-icon {
	display: grid;
	place-items: center;
	flex: 0 0 3rem;
	height: 3rem;
	border: 1px solid color-mix(in srgb, var(--portal-primary-contrast) 24%, transparent);
	border-radius: 12px;
	background: color-mix(in srgb, var(--portal-primary-contrast) 12%, transparent);
	font-size: 1.25rem;
}
.merchant-index-operation-entry-content { display: flex; flex: 1; min-width: 0; flex-direction: column; gap: .35rem; }
.merchant-index-operation-entry-content strong { font-size: 1.05rem; }
.merchant-index-operation-entry-content small { font-size: .875rem; line-height: 1.6; color: color-mix(in srgb, var(--portal-primary-contrast) 85%, transparent); }
.merchant-index-operation-entry-action {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	gap: .6rem;
	padding: .7rem 1rem;
	border-radius: 9px;
	background: var(--portal-primary-contrast);
	color: var(--bs-primary-text-emphasis);
	font-size: .875rem;
	font-weight: 700;
}
@media (max-width: 767.98px) {
	.merchant-account-notice, .merchant-index-operation-entry { align-items: flex-start; padding: 1rem; gap: .8rem; }
	.merchant-index-operation-entry { flex-wrap: wrap; }
	.merchant-index-operation-entry-action { width: 100%; }
}

/* 运营桌面表格使用筛选栏之后的实际剩余空间 */
@media (min-width: 992px) {
	.manage-stage:has(> .manage-main > .full-page-table) {
		height: 100vh;
		height: 100dvh;
	}
	.manage-main:has(> .full-page-table),
	.manage-main > .full-page-table {
		min-height: 0;
	}
	.manage-stage:has(> .manage-main > .full-page-table) > .manage-header,
	.manage-stage:has(> .manage-main > .full-page-table) > .manage-footer,
	.manage-main:has(> .full-page-table) > .card,
	.manage-main > .full-page-table > .table-toolbar,
	.manage-main > .full-page-table > .nav-pages {
		flex-shrink: 0;
	}
	.manage-main > .full-page-table > .table-shim {
		min-height: 0;
		overflow: auto;
	}
}
