
.activate-page .btn-primary,
.activate-page .btn-outline {
	display: inline-block;
	padding: .6rem 1.4rem;
	border-radius: 8px;
	font-size: .95rem;
	font-weight: 600;
	cursor: pointer;
	border: 1px solid transparent;
	white-space: nowrap;
}

.activate-page .btn-primary {
	background: #f26522;
	color: #fff;
}

.activate-page .btn-primary:hover:not(:disabled) {
	background: #d9551a;
}

.activate-page .btn-outline {
	background: transparent;
	color: #555;
	border-color: #ccc;
}

.activate-page .btn-outline:hover:not(:disabled) {
	background: #f5f5f5;
}

.activate-page .btn-quiet {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	background: transparent;
	border: none;
	padding: .35rem .5rem;
	margin-left: -.5rem;      
	border-radius: 6px;
	font-size: .875rem;
	font-weight: 600;
	color: #3d6e99;
	white-space: nowrap;
	cursor: pointer;
}

.activate-page .btn-quiet:hover:not(:disabled) {
	background: #eef4f8;
}

.activate-page .btn-quiet:disabled {
	opacity: .45;
	cursor: default;
}

.activate-page .btn-act {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	padding: 0;
	background: transparent;
	border: none;
	border-radius: 8px;
	color: #6c757d;
	cursor: pointer;
}

.activate-page .btn-act svg {
	display: block;
	width: 16px;
	height: 16px;
	fill: currentColor;
}

.activate-page .btn-act:hover:not(:disabled) {
	background: #f2f2f2;
	color: #222;
}

.activate-page .btn-act-danger:hover:not(:disabled) {
	background: #fdf1f0;
	color: #c0392b;
}

.activate-page .btn-act:disabled {
	opacity: .4;
	cursor: default;
}

.activate-page .frow-body-block {
	padding-top: calc(.5rem + 1px);
}

.activate-page .sub-field {
	margin-top: .75rem;
	padding-left: 1.5rem;
	border-left: 2px solid #eee;
}

.activate-page .sub-field-label {
	display: block;
	font-size: .8rem;
	color: #6c757d;
	margin-bottom: .3rem;
}

.activate-page .cost-dialog {
	max-width: 24rem;
}

.activate-page .cost-table {
	margin-bottom: 1.25rem;
}

.activate-page .cost-row {
	display: flex;
	justify-content: space-between;
	gap: 1.5rem;
	padding: .4rem 0;
	font-size: .9rem;
	color: #555;
}

.activate-page .cost-value {
	font-variant-numeric: tabular-nums;
	color: #222;
}

.activate-page .cost-total {
	margin-top: .4rem;
	padding-top: .65rem;
	border-top: 1px solid #e6e6e6;
	font-weight: 700;
	color: #222;
}

.activate-page .cost-message {
	margin: 0 0 1.25rem;
	font-size: .9rem;
	color: #6c757d;
}

.activate-page .contact-fields {
	display: flex;
	flex-direction: column;
	gap: .5rem;
	margin-top: .5rem;
}

.activate-page .kb-renew-row {
	display: flex;                /* 整行：Access ID 左、Expires+renew 右 */
	align-items: center;
	gap: .35rem;
}
.activate-page .kb-expiry {
	margin-left: auto;           /* Expires + renew 推到行尾右对齐 */
	display: inline-flex;
	align-items: center;
	gap: .35rem;
}
.activate-page .kb-renew-row .btn-act {
	width: 24px;
	height: 24px;
}
.activate-page .kb-renew-row .btn-act svg {
	width: 14px;
	height: 14px;
}

.activate-page .kb-note:empty {
	display: none;
}

.activate-page .btn-x {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	padding: 0;
	background: transparent;
	border: none;
	color: #c0392b;
	opacity: .8;
	cursor: pointer;
}

.activate-page .btn-x svg {
	display: block;
	width: 18px;
	height: 18px;
	fill: currentColor;
}

.activate-page .btn-x:hover:not(:disabled) {
	opacity: 1;
}

.activate-page .btn-x:disabled {
	opacity: .45;
	cursor: default;
}

.activate-page .kb-actions {
	display: flex;
	align-items: center;
	gap: .5rem;
}

.activate-page .btn-primary:disabled,
.activate-page .btn-outline:disabled {
	opacity: .55;
	cursor: default;
}

.activate-page .btn-block {
	display: block;
	width: 100%;
}

.activate-page .btn-sm {
	padding: .4rem 1rem;
	font-size: .875rem;
}

.activate-page .btn-link {
	display: block;
	width: 100%;
	margin-top: 1rem;
	padding: .5rem;
	background: none;
	border: none;
	color: #f26522;
	font-size: .9rem;
	cursor: pointer;
}

.activate-page .btn-link:hover {
	text-decoration: underline;
}

.activate-page .btn-link-quiet {
	color: #6c757d;
	margin-top: .75rem;
	font-size: .85rem;
}

.activate-page .auth-alt {
	margin-top: 1.35rem;
	padding-top: 1.35rem;
	border-top: 1px solid #f0f0f0;
	text-align: center;
	font-size: .875rem;
	color: #6c757d;
}

.activate-page .btn-link-inline {
	padding: 0;
	border: none;
	background: none;
	color: #f26522;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
}

.activate-page .btn-link-inline:hover {
	text-decoration: underline;
}

.activate-page .legal-note {
	margin: 1.1rem auto 0;
	max-width: 26rem;
	font-size: .75rem;
	line-height: 1.5;
	color: #9aa0a6;
	text-align: center;
	text-wrap: pretty;
}

.activate-page #footer-legal {
	margin-bottom: 1.5rem;
}

.activate-page #footer-legal {
	margin-top: 2.5rem;
	margin-bottom: 1.5rem;
}

.activate-page .legal-note a {
	color: #9aa0a6;
	text-decoration: underline;
}

.activate-page .legal-note a:hover {
	color: #f26522;
}

.activate-page button:focus-visible,
.activate-page a:focus-visible {
	outline: 2px solid #f26522;
	outline-offset: 2px;
	border-radius: 6px;
}

.activate-page .account-title-form {
	margin-bottom: 1.5rem;
}

.activate-page .notice {
	margin: 1rem 0 0;
	padding: .7rem .9rem;
	border-radius: 8px;
	font-size: .9rem;
}

.activate-page .notice.is-error {
	background: #fdecea;
	color: #b3261e;
}

.activate-page .notice.is-success {
	background: #e8f5e9;
	color: #1b5e20;
}

.activate-page .state-note {
	color: #6c757d;
	font-size: .95rem;
	text-align: center;
}

.activate-page .account-card {
	max-width: 400px;
	margin: 2rem auto;
	padding: 2rem;
	background: #fff;
	border: 1px solid #e6e6e6;
	border-radius: 12px;
	box-shadow: 0 2px 16px rgba(0, 0, 0, .05);
}

.activate-page .account-title {
	font-size: 1.5rem;
	margin-bottom: .35rem;
}

.activate-page .account-subtitle {
	color: #6c757d;
	font-size: .95rem;
	margin-bottom: 1.5rem;
}

.activate-page .account-label {
	display: block;
	font-size: .85rem;
	font-weight: 600;
	color: #444;
	margin-bottom: .35rem;
}

.activate-page .account-input {
	width: 100%;
	padding: .6rem .75rem;
	margin-bottom: 1rem;
	border: 1px solid #ccc;
	border-radius: 8px;
	font-size: 1rem;
}

.activate-page .account-input:focus,
.activate-page .code-seg:focus {
	outline: none;
	border-color: #f26522;
	box-shadow: 0 0 0 3px rgba(242, 101, 34, .15);
}

.activate-page .account-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-bottom: 1rem;
	margin-bottom: 1.5rem;
	border-bottom: 1px solid #e6e6e6;
}

.activate-page .account-bar-id {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.activate-page .account-bar-actions {
	display: flex;
	align-items: center;
	gap: .25rem;
	flex-shrink: 0;
}

.activate-page #delete-account-btn {
	color: #c0392b;
}

.activate-page #delete-account-btn:hover:not(:disabled) {
	background: #fdf1f0;
}

.activate-page .btn-danger-solid {
	background: #c0392b;
}

.activate-page .btn-danger-solid:hover:not(:disabled) {
	background: #a93226;
}

.activate-page .account-bar-email {
	font-weight: 600;
	font-size: 1rem;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.activate-page .account-bar-role {
	font-size: .82rem;
	color: #6c757d;
}



.activate-page .role-delete {
	padding: 0;
	border: none;
	background: none;
	font: inherit;
	font-size: .82rem;
	color: #6c757d;
	cursor: pointer;
}

.activate-page .role-delete:hover {
	color: #c0392b;
	text-decoration: underline;
}

.activate-page .panel-heading {
	font-size: 1.15rem;
	font-weight: 600;
	margin: 2rem 0 1rem;
}

.activate-page .panel-heading:first-child {
	margin-top: 0;
}

.activate-page .panel {
	margin-top: 2rem;
	padding: 1.5rem;
	background: #fafafa;
	border: 1px solid #ececec;
	border-radius: 12px;
}

.activate-page .kb-badge {
	font-size: .68rem;
	font-weight: 600;
	padding: .12rem .5rem;
	border-radius: 999px;
	background: #fdecea;
	color: #b3261e;
	white-space: nowrap;
}

.activate-page .kb-badge-widget {
	font-size: .62rem;
	padding: .1rem .45rem;
	background: #e8f0fe;
	color: #2f6bd6;
}

.activate-page .admin-summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	flex-wrap: wrap;
	padding: 1.1rem 1.35rem;
	background: #fafafa;
	border: 1px solid #ececec;
	border-radius: 12px;
}

.activate-page .admin-permits {
	display: flex;
	align-items: baseline;
	gap: .6rem;
}

.activate-page .admin-permits-label {
	font-size: .82rem;
	color: #6c757d;
	text-transform: uppercase;
	letter-spacing: .04em;
}

.activate-page .admin-permits-value {
	font-size: 1.5rem;
	font-weight: 700;
}

.activate-page .license-inline {
	display: flex;
	align-items: center;
	gap: .5rem;
	flex-wrap: wrap;
}

.activate-page .code-seg-sm {
	width: 3.9rem;
	padding: .35rem .25rem;
	font-size: .85rem;
}

.activate-page .md-list-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;   
	padding: .4rem .5rem;
	border-top: 1px solid #f0f0f0;
	background: #fcfcfc;
}

.activate-page .btn-icon {
	width: 1.9rem;
	height: 1.9rem;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 1px solid transparent;
	border-radius: 6px;
	background: transparent;
	color: #666;
	font-size: 1.25rem;
	line-height: 1;
	cursor: pointer;
	flex-shrink: 0;
}

.activate-page .btn-icon:hover:not(:disabled) {
	background: #f1f1f1;
	color: #f26522;
}

.activate-page .btn-icon:disabled {
	opacity: .35;
	cursor: default;
}

.activate-page .detail-fields {
	display: grid;
	grid-template-columns: max-content minmax(0, 1fr);
	gap: .65rem 1.5rem;
}

.activate-page .detail-key {
	font-size: .82rem;
	color: #6c757d;
}

.activate-page .detail-val {
	font-size: .9rem;
	color: #333;
	word-break: break-word;
}

.activate-page .dialog {
	max-width: 460px;
	width: calc(100% - 2rem);
	padding: 1.75rem;
	border: 1px solid #e6e6e6;
	border-radius: 14px;
	box-shadow: 0 12px 40px rgba(0, 0, 0, .16);
}

.activate-page .dialog::backdrop {
	background: rgba(0, 0, 0, .35);
}

.activate-page .adding-dialog { max-width: 24rem; }
.activate-page .adding-dialog .job-progress { margin-bottom: .25rem; }

.activate-page .widget-fields { margin-top: .5rem; }
.activate-page .widget-confirm-dialog { max-width: 30rem; }
.activate-page .widget-confirm-list { margin: .5rem 0 1rem; padding-left: 1.2rem; line-height: 1.5; }
.activate-page .widget-confirm-list li { margin: .35rem 0; color: #333; }
.activate-page .embed-dialog { max-width: 34rem; }
.activate-page .embed-code {
	background: #f4f5f7;
	border: 1px solid #e6e6e6;
	border-radius: 8px;
	padding: .75rem;
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: .85rem;
	white-space: pre-wrap;
	word-break: break-all;
	margin: .5rem 0 1rem;
}

.activate-page .dialog .code-inputs {
	margin-bottom: 0;
}

.activate-page .dialog-actions {
	display: flex;
	justify-content: flex-end;
	gap: .6rem;
	margin-top: 1.5rem;
}

.activate-page .master-detail {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	gap: 1.5rem;
	align-items: start;
}

.activate-page .md-list {
	border: 1px solid #e6e6e6;
	border-radius: 12px;
	overflow: hidden;
	background: #fff;
}

.activate-page .md-item {
	display: block;
	width: 100%;
	padding: .85rem 1rem;
	text-align: left;
	background: none;
	border: none;
	border-bottom: 1px solid #f0f0f0;
	border-left: 3px solid transparent;
	cursor: pointer;
	font: inherit;
}

.activate-page .md-item:last-child {
	border-bottom: none;
}

.activate-page .md-item:hover {
	background: #fafafa;
}

.activate-page .md-item.is-selected {
	background: #eef5fb;
	border-left-color: #2b6cb0;
}

.activate-page .md-item-name {
	font-weight: 600;
	font-size: .92rem;
	display: flex;
	align-items: center;
	gap: .4rem;
}

.activate-page .md-detail {
	min-height: 240px;
	padding: 1.5rem 1.75rem;
	border: 1px solid #e6e6e6;
	border-radius: 12px;
	background: #fff;
}

.activate-page .md-search-btn { font-size: 1.05rem; opacity: .75; }

.activate-page .kb-search-dialog { max-width: 30rem; width: 92vw; }
.activate-page .kb-search-dialog .account-input:disabled {
	background: #f4f5f7;
	color: #9aa0a6;
	cursor: not-allowed;
}

.activate-page .kb-search-results {
	margin-top: .75rem;
	max-height: 55vh;
	overflow-y: auto;
}

.activate-page .kb-search-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
	width: 100%;
	padding: .7rem .25rem;
	background: none;
	border: none;
	border-bottom: 1px solid #f2f2f2;
	text-align: left;
	font: inherit;
	cursor: pointer;
}
.activate-page .kb-search-row:hover { background: #fafafa; }
.activate-page .kb-search-name { font-weight: 600; font-size: .92rem; color: #222; }
.activate-page .kb-search-sub { font-size: .8rem; color: #6c757d; margin-top: .1rem; }
.activate-page .kb-search-tag {
	flex-shrink: 0;
	font-size: .72rem;
	padding: .2rem .5rem;
	border-radius: 999px;
	background: #eef4f8;
	color: #3d6e99;
	white-space: nowrap;
}
/* 需要 key 的用裸 🔑 图标（无药丸底色、略大） */
.activate-page .kb-search-tag-key,
.activate-page .kbx-dialog .kb-search-tag-key {
	background: transparent;
	padding: 0;
	font-size: 1.05rem;
}

.activate-page .kb-chat-detail {
	display: flex;
	flex-direction: column;
	padding: 0;
	height: 32rem;
}

.activate-page .chat-head {
	padding: 1rem 1.25rem;
	border-bottom: 1px solid #f0f0f0;
	flex-shrink: 0;
}
.activate-page .chat-head-title {
	font-size: 1.05rem;
	font-weight: 700;
	color: #2c3e50;
	display: flex;
	align-items: center;
	gap: .5rem;
}
.activate-page .chat-head-meta {
	font-size: .82rem;
	color: #6c757d;
	margin-top: .2rem;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.activate-page .chat-window {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	min-height: 0;   
}

.activate-page .chat-log {
	flex: 1 1 auto;
	overflow-y: auto;
	padding: 1rem 1.25rem;
	display: flex;
	flex-direction: column;
	gap: .6rem;
}

.activate-page .chat-empty {
	margin: auto;
	color: #9aa0a6;
	font-size: .9rem;
}

.activate-page .chat-bubble {
	max-width: 80%;
	padding: .6rem .85rem;
	border-radius: 14px;
	font-size: .92rem;
	line-height: 1.45;
	white-space: pre-wrap;      
	word-break: break-word;
}
.activate-page .chat-user {
	align-self: flex-end;
	background: #2b6cb0;        
	color: #fff;
	border-bottom-right-radius: 4px;
}
.activate-page .chat-assistant {
	align-self: flex-start;
	background: #f4f5f7;
	color: #1f2933;
	border: 1px solid #e8eaed;
	border-bottom-left-radius: 4px;
	white-space: normal;   
}
.activate-page .chat-assistant > *:first-child { margin-top: 0; }
.activate-page .chat-assistant > *:last-child { margin-bottom: 0; }
.activate-page .chat-assistant p { margin: 0 0 .5rem; }
.activate-page .chat-assistant ul,
.activate-page .chat-assistant ol { margin: .3rem 0 .55rem; padding-left: 1.3rem; }
.activate-page .chat-assistant li { margin: .15rem 0; }
.activate-page .chat-assistant h4 { font-size: .96rem; font-weight: 700; margin: .5rem 0 .35rem; }
.activate-page .chat-assistant h5 { font-size: .92rem; font-weight: 700; margin: .45rem 0 .3rem; }
.activate-page .chat-assistant a { color: #2b6cb0; text-decoration: underline; word-break: break-all; }
.activate-page .chat-assistant strong { font-weight: 700; }
.activate-page .chat-assistant code {
	background: rgba(43, 108, 176, .1);
	padding: .1em .35em;
	border-radius: 4px;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: .86em;
}
.activate-page .chat-assistant pre {
	background: #1f2933;
	color: #e8eaed;
	padding: .6rem .7rem;
	border-radius: 8px;
	overflow-x: auto;
	margin: .45rem 0;
}
.activate-page .chat-assistant pre code {
	background: none;
	padding: 0;
	color: inherit;
	font-size: .82rem;
	white-space: pre;
}
.activate-page .chat-assistant blockquote {
	margin: .4rem 0;
	padding: .1rem 0 .1rem .7rem;
	border-left: 3px solid #cbd5e0;
	color: #52606d;
}
.activate-page .chat-error { background: #fdecea; color: #b3261e; }
.activate-page .chat-thinking { color: #9aa0a6; letter-spacing: .15em; }

.activate-page .chat-sources {
	align-self: flex-start;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .4rem;
	margin: -.15rem 0 .1rem;
	max-width: 80%;
}
.activate-page .chat-sources-label { font-size: .78rem; color: #6c757d; }
.activate-page .chat-source-chip {
	display: inline-flex;
	align-items: center;
	gap: .25rem;
	font-size: .78rem;
	color: #2b6cb0;
	background: rgba(43, 108, 176, .1);
	border: 1px solid rgba(43, 108, 176, .2);
	border-radius: 8px;
	padding: .12rem .5rem;
	cursor: pointer;
}
.activate-page .chat-source-chip:hover { background: rgba(43, 108, 176, .18); }
.activate-page .source-dialog { max-width: 560px; }
.activate-page .source-dialog .source-body {
	max-width: none;
	max-height: 60vh;
	overflow-y: auto;
	margin: .25rem 0 .75rem;
}
.activate-page .source-dialog .source-uri {
	font-size: .78rem;
	color: #6c757d;
	word-break: break-all;
	margin: 0 0 .75rem;
}
.activate-page .pw-hint { margin: -.35rem 0 .85rem; font-size: .82rem; color: #6c757d; }

.activate-page .chat-input-bar {
	display: flex;
	align-items: flex-end;
	gap: .5rem;
	padding: .75rem 1rem;
	border-top: 1px solid #f0f0f0;
	flex-shrink: 0;
}
.activate-page .chat-input {
	flex: 1 1 auto;
	resize: none;
	border: 1px solid #ccc;
	border-radius: 10px;
	padding: .55rem .75rem;
	font: inherit;
	font-size: .92rem;
	line-height: 1.375;
	max-height: 5rem;           
	overflow-y: auto;
}
.activate-page .chat-input:focus {
	outline: none;
	border-color: #47b0df;
	box-shadow: 0 0 0 3px rgba(71, 176, 223, .25);
}
.activate-page .chat-send { flex-shrink: 0; background: #2b6cb0; }
.activate-page .chat-send:hover:not(:disabled) { background: #255d99; }

.activate-page .md-detail-col { min-width: 0; }

.activate-page .app-tip {
	margin: .9rem 0 0;
	text-align: center;
	font-size: .85rem;
	color: #6c757d;
}
.activate-page .app-tip a {
	color: #2b6cb0;
	font-weight: 600;
	text-decoration: none;
}
.activate-page .app-tip a:hover { text-decoration: underline; }

.activate-page .md-empty {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 200px;
	color: #6c757d;
	font-size: .95rem;
}

.activate-page .detail-head {
	display: flex;
	flex-direction: column;         /* 上排(标题+图标) / 下排(Access ID+Expires) 各自满宽 */
	gap: .3rem;
	padding-bottom: 1.1rem;
	margin-bottom: 1.25rem;
	border-bottom: 1px solid #f0f0f0;
}
.activate-page .detail-head-main {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 1.5rem;
	flex-wrap: wrap;
}

.activate-page .detail-idbox {
	flex: 1 1 auto;   /* 撑满 → idRow 满宽、Expires 落行尾；编辑/删除图标推到最右 */
	min-width: 0;
}

.activate-page .detail-title {
	font-size: 1.2rem;
	font-weight: 600;
	display: flex;
	align-items: center;
	gap: .5rem;
}

.activate-page .kb-meta {
	font-size: .82rem;
	color: #6c757d;
	margin-top: .3rem;
}

.activate-page .kb-actions {
	display: flex;
	gap: .5rem;
	flex-wrap: wrap;
	flex-shrink: 0;
}

@media (max-width: 860px) {
	.activate-page .master-detail {
		grid-template-columns: 1fr;
	}
}

.activate-page .kb-panel {
	margin-top: 1.15rem;
	padding-top: 1rem;
	border-top: 1px solid #e2e6ea;
}

/* 紧跟标题栏的第一个面板不再画顶部分隔线——标题栏本身已有 border-bottom，否则会出现双线 */
.activate-page .detail-head + .kb-panel {
	border-top: none;
	margin-top: 0;
	padding-top: 0;
}

.activate-page .kb-panel-title {
	font-size: .82rem;
	font-weight: 600;
	color: #444;
	text-transform: uppercase;
	letter-spacing: .04em;
	margin-bottom: .45rem;
}
/* Create Access Code 标题行：标题左、每码费用右对齐 */
.activate-page .kb-panel-title-row { display: flex; align-items: baseline; gap: 1rem; }
.activate-page .kb-panel-title-row .panel-title-cost {
	margin-left: auto;
	font-weight: 400;
	text-transform: none;
	letter-spacing: 0;
	font-size: .8rem;
	color: var(--kbx-text-muted);
}

.activate-page .field-row {
	display: flex;
	gap: .5rem;
	align-items: flex-end;
	flex-wrap: wrap;
	margin-bottom: .55rem;
}

.activate-page .field {
	display: flex;
	flex-direction: column;
	gap: .25rem;
}

.activate-page .field-label {
	font-size: .75rem;
	color: #6c757d;
}

.activate-page .field-input {
	width: 6.5rem;
	padding: .45rem .6rem;
	border: 1px solid #ccc;
	border-radius: 8px;
	font-size: .9rem;
}

.activate-page .field-input:focus {
	outline: none;
	border-color: #f26522;
	box-shadow: 0 0 0 3px rgba(242, 101, 34, .15);
}

.activate-page .batch-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
	padding: .55rem 0;
	border-bottom: 1px solid #f2f2f2;
	font-size: .875rem;
}

/* 长列表滚动视图：约 10 行；不足则按实际高度显示，超出则内部滚动。
   带边框，明确这是一个可滚动的区域（避免误以为是完整列表）。 */
.activate-page .kb-scroll-list {
	max-height: 28rem;
	overflow-y: auto;
	margin-top: .5rem;
	padding: 0 12px;
	border: 1px solid var(--kbx-border-strong);
	border-radius: 10px;
}

.activate-page .batch-row:last-child {
	border-bottom: none;
}

.activate-page .batch-info {
	color: #555;
}

.activate-page .file-name {
	flex: 1 1 auto;             /* 撑开文件名，把大小/日期 + 减号推到行尾（大小/日期右对齐紧贴减号前）*/
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}

.activate-page .file-meta {
	color: #6c757d;
	font-size: .8rem;
	white-space: nowrap;
	flex-shrink: 0;
}

.activate-page .kb-note {
	font-size: .85rem;
	color: #6c757d;
	padding: .2rem 0;
}

/* 批次状态：与 Generate 按钮同一行，底部对齐并上抬到按钮文字高度 */
.activate-page .batch-status {
	padding: 0 0 .5rem;
	margin-left: auto;   /* 推到发码行末右对齐（None generated yet. / Loading… 等）*/
	white-space: nowrap;
}

.activate-page .is-error-text {
	color: #c0392b;
}

.activate-page .create-form {
	margin-top: .5rem;
}

.activate-page .form-row {
	display: flex;
	gap: 1rem;
	align-items: flex-start;
	margin-bottom: .85rem;
}

.activate-page .frow-label {
	flex: 0 0 9rem;
	
	padding-top: calc(.5rem + 1px);
	line-height: 1.4;
	font-size: .875rem;
	color: #444;
}

.activate-page .frow-body {
	flex: 1 1 auto;
	min-width: 0;
}

.activate-page .form-row-full .frow-body {
	width: 100%;
}

/* 底部费用账单：顶部横线 + 靠右汇总总额；余额不足变红 */
.activate-page .feat-bill {
	display: flex;
	justify-content: flex-end;
	align-items: baseline;
	gap: .6rem;
	margin-top: 1rem;
	padding-top: .85rem;
	border-top: 1px solid var(--kbx-border-strong);
}
.activate-page .feat-bill-label { font-size: .85rem; color: var(--kbx-text-muted); }
.activate-page .feat-bill-value { font-size: 1.05rem; font-weight: 700; color: var(--kbx-text); font-variant-numeric: tabular-nums; }
.activate-page .feat-bill.is-short .feat-bill-label,
.activate-page .feat-bill.is-short .feat-bill-value { color: var(--kbx-danger); }

/* 功能行末尾右对齐的 permits 费用标识（与右侧说明首行对齐） */
.activate-page .frow-cost {
	flex: 0 0 auto;
	align-self: flex-start;
	margin-left: .5rem;
	padding-top: 1px;
	font-size: .8rem;
	line-height: 1.4;
	color: var(--kbx-text-muted);
	white-space: nowrap;
	text-align: right;
}

.activate-page .form-input {
	width: 100%;
	padding: .5rem .7rem;
	border: 1px solid #ccc;
	border-radius: 8px;
	font-size: .9rem;
	font-family: inherit;
	background: #fff;
	color: #222;
}

.activate-page .form-input:focus {
	outline: none;
	border-color: #f26522;
	box-shadow: 0 0 0 3px rgba(242, 101, 34, .15);
}

.activate-page .form-input:disabled {
	background: #f7f7f7;
	color: #888;
}

.activate-page .form-textarea {
	resize: vertical;
	line-height: 1.45;
}

.activate-page .frow-static {
	padding: .5rem 0;
	font-size: .9rem;
	font-weight: 600;
	color: #222;
}

.activate-page .form-hint {
	font-size: .78rem;
	color: #6c757d;
	margin-top: .25rem;
}

.activate-page .add-row {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: .25rem .75rem;
	margin-top: .1rem;
}

.activate-page .add-row .form-hint {
	margin-top: 0;
}

.activate-page .frow-check {
	display: flex;
	align-items: flex-start;
	gap: .5rem;
	font-size: .875rem;
	color: #444;
	cursor: pointer;
}

.activate-page .frow-check input {
	margin-top: .2rem;
	flex-shrink: 0;
}

.activate-page .files-foot {
	border-top: 1px solid #f2f2f2;
	padding-top: .35rem;
	margin-bottom: .25rem;
}

.activate-page .batch-row.is-pending .file-name::after {
	content: " · pending";
	color: #9aa0a6;
	font-size: .8rem;
}

.activate-page .batch-row.is-removing .file-name,
.activate-page .batch-row.is-removing .file-meta {
	text-decoration: line-through;
	opacity: .5;
}

.activate-page .cover-preview {
	width: 44px;
	height: 44px;
	object-fit: cover;
	border-radius: 8px;
	border: 1px solid #e6e6e6;
	flex-shrink: 0;
}

.activate-page .job-progress {
	height: 6px;
	background: #eee;
	border-radius: 999px;
	overflow: hidden;
	margin: .25rem 0 .75rem;
}

.activate-page .job-progress-bar {
	height: 100%;
	width: 0;
	
	background: #47b0df;
	border-radius: 999px;
	transition: width .2s ease;
}

.activate-page .job-progress.is-indeterminate .job-progress-bar {
	width: 40% !important;
	transition: none;
	animation: activate-progress-slide 1.4s ease-in-out infinite;
}

@keyframes activate-progress-slide {
	0%   { margin-left: -40%; }
	100% { margin-left: 100%; }
}

@media (prefers-reduced-motion: reduce) {
	.activate-page .job-progress.is-indeterminate .job-progress-bar {
		animation: none;
		width: 100% !important;
		opacity: .5;
	}
}

.activate-page .list-row {
	display: flex;
	align-items: center;
	gap: .5rem;
	margin-bottom: .5rem;
}

@media (max-width: 640px) {
	.activate-page .form-row {
		flex-direction: column;
		gap: .25rem;
	}

	.activate-page .frow-label {
		flex: none;
		padding-top: 0;
	}

	.activate-page .frow-cost {
		align-self: stretch;   /* 窄屏堆叠时靠右占整行，不孤零零贴左 */
		margin-left: 0;
		padding-top: .1rem;
	}
}

.activate-page .code-inputs {
	display: flex;
	align-items: center;
	gap: .4rem;
}

.activate-page .code-seg {
	width: 4.25rem;
	padding: .4rem .25rem;
	border: 1px solid #ccc;
	border-radius: 6px;
	font-size: .9rem;
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	letter-spacing: .04em;
	text-align: center;
	text-transform: uppercase;
	background: #fff;
}

.activate-page .code-seg::placeholder {
	color: #ccc;
	letter-spacing: .06em;
}

.activate-page .code-dash {
	color: #bbb;
	flex: 0 0 auto;
}

@media (max-width: 520px) {
	.activate-page .code-seg {
		width: 100%;
		min-width: 0;
	}

	.activate-page .code-inputs {
		flex: 1 1 100%;
	}

}

/* ==========================================================================
   用户侧控制台重设计（.kbx）——完全模仿 ChatGPT/Claude web 聊天界面。
   全屏固定层，覆盖顶部 header/account-bar；仅作用于 #user-view，admin 视图不受影响。
   明暗跟随电脑设置（prefers-color-scheme），无手动开关。
   ========================================================================== */
.activate-page {
	--kbx-font: ui-sans-serif, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, "Apple Color Emoji", sans-serif;
	--kbx-bg-side:#f9f9f9; --kbx-bg-main:#ffffff; --kbx-bg-hover:#ececec; --kbx-bg-active:#e3e3e3;
	--kbx-text:#0d0d0d; --kbx-text-muted:#8f8f8f; --kbx-text-faint:#b4b4b4;
	--kbx-border:#e5e5e5; --kbx-border-strong:#d9d9d9;
	--kbx-accent:#0b57d0; --kbx-user-bubble:#e8eef7; --kbx-user-text:#0d0d0d;
	--kbx-menu-bg:#ffffff; --kbx-menu-shadow:0 12px 34px rgba(0,0,0,.16), 0 2px 8px rgba(0,0,0,.08);
	--kbx-danger:#c0362c;
	--kbx-composer-bg:#ffffff; --kbx-composer-border:#d9d9d9;
}
@media (prefers-color-scheme: dark) {
	.activate-page {
		--kbx-bg-side:#171717; --kbx-bg-main:#212121; --kbx-bg-hover:#2a2a2a; --kbx-bg-active:#303030;
		--kbx-text:#ececec; --kbx-text-muted:#9a9a9a; --kbx-text-faint:#6f6f6f;
		--kbx-border:#2f2f2f; --kbx-border-strong:#3a3a3a;
		--kbx-accent:#4d8bf0; --kbx-user-bubble:#303030; --kbx-user-text:#ececec;
		--kbx-menu-bg:#2b2b2b; --kbx-menu-shadow:0 12px 34px rgba(0,0,0,.5), 0 2px 8px rgba(0,0,0,.4);
		--kbx-danger:#f0776b; --kbx-composer-bg:#2f2f2f; --kbx-composer-border:#3a3a3a;
	}
}

.activate-page .kbx:not([hidden]) {
	position: fixed;
	inset: 0;
	z-index: 40;
	display: flex;
	color-scheme: light dark;
	background: var(--kbx-bg-main);
	color: var(--kbx-text);
	font-family: var(--kbx-font);
	font-size: 14px;
	-webkit-font-smoothing: antialiased;
	overflow: hidden;
}
.activate-page .kbx * { box-sizing: border-box; }
.activate-page .kbx button { font-family: inherit; color: inherit; cursor: pointer; border: 0; background: none; }
.activate-page .kbx svg { display: block; }

/* ---- Sidebar ---- */
.activate-page .kbx-side {
	width: 264px;
	flex: 0 0 264px;
	background: var(--kbx-bg-side);
	border-right: 1px solid var(--kbx-border);
	display: flex;
	flex-direction: column;
	min-height: 0;
}
.activate-page .kbx-brand {
	display: flex;
	align-items: flex-end;
	gap: 10px;
	min-width: 0;
	padding: 14px 14px 4px;
	text-decoration: none;
}
.activate-page .kbx-logo { height: 30px; width: auto; display: block; flex: 0 0 auto; }
.activate-page .kbx-slogan { font-size: 12px; line-height: 1; color: var(--kbx-text-muted); padding-bottom: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.activate-page .kbx-collapse-row { display: flex; justify-content: flex-end; padding: 0 8px 2px; }
.activate-page .kbx-collapse { flex: 0 0 auto; }

/* 侧边栏折叠（ChatGPT 风格）：折叠后隐藏侧栏，主区占满；左上角显示展开按钮 */
.activate-page .kbx .kbx-expand {
	display: none;
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 6;
	background: var(--kbx-bg-main);
}
.activate-page .kbx.is-collapsed .kbx-side { display: none; }
.activate-page .kbx.is-collapsed .kbx-expand { display: grid; }
.activate-page .kbx.is-collapsed .chat-head { padding-left: 58px; }

.activate-page .kbx-side-scroll { flex: 0 1 auto; overflow-y: auto; padding: 10px 8px; min-height: 0; }
.activate-page .kbx-sec-head {
	display: flex; align-items: center; justify-content: space-between;
	padding: 6px 8px 4px; margin-top: 4px;
}
.activate-page .kbx-sec-title { font-size: 12px; font-weight: 600; color: var(--kbx-text-muted); }
.activate-page .kbx-sec-actions { display: flex; align-items: center; gap: 2px; }
.activate-page .kbx-icon-btn {
	width: 28px; height: 28px; border-radius: 7px;
	display: grid; place-items: center; color: var(--kbx-text-muted);
}
.activate-page .kbx-icon-btn:hover { background: var(--kbx-bg-hover); color: var(--kbx-text); }
.activate-page .kbx-icon-btn svg { width: 17px; height: 17px; }

/* KB 列表项（沿用 activate.js 生成的 .md-item / .md-item-name，作用域内重设样式） */
.activate-page .kbx .kbx-list { display: flex; flex-direction: column; gap: 1px; margin-top: 2px; }
.activate-page .kbx-list-foot { flex: 0 0 auto; display: flex; justify-content: flex-start; padding: 2px 10px 6px; }
.activate-page .kbx .md-item {
	display: flex; align-items: center; width: 100%; text-align: left;
	padding: 8px 9px; border: 0; border-radius: 8px; background: none;
	font-size: 14px; color: var(--kbx-text); line-height: 1.2; cursor: pointer;
}
.activate-page .kbx .md-item-name {
	flex: 1 1 auto; min-width: 0;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
	display: inline-flex; align-items: center; gap: 6px;
}
.activate-page .kbx .md-item-name > span:first-child {
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
}
.activate-page .kbx .kbx-star { flex: 0 0 auto; margin-left: 8px; font-size: 13px; line-height: 1; }
.activate-page .kbx .md-item:hover { background: var(--kbx-bg-hover); }
.activate-page .kbx .md-item.is-selected { background: var(--kbx-bg-active); font-weight: 500; }
.activate-page .kbx .md-item .kb-badge {
	flex: 0 0 auto; font-size: .62rem; padding: .1rem .4rem;
}

/* ---- Account (bottom-left, opens upward) ---- */
.activate-page .kbx-account { margin-top: auto; flex: 0 0 auto; padding: 8px; border-top: 1px solid var(--kbx-border); position: relative; }
.activate-page .kbx-account-chip {
	display: flex; align-items: center; gap: 9px; width: 100%;
	padding: 8px; border-radius: 9px;
}
.activate-page .kbx-account-chip:hover { background: var(--kbx-bg-hover); }
.activate-page .kbx-avatar {
	width: 28px; height: 28px; flex: 0 0 auto; border-radius: 50%;
	background: var(--kbx-accent); color: #fff; display: grid; place-items: center;
	font-size: 12px; font-weight: 600; text-transform: uppercase;
}
.activate-page .kbx-account-name {
	font-size: 13px; color: var(--kbx-text); min-width: 0;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.activate-page .kbx-menu {
	position: absolute; left: 8px; right: 8px; bottom: calc(100% - 2px);
	background: var(--kbx-menu-bg); border: 1px solid var(--kbx-border-strong);
	border-radius: 12px; box-shadow: var(--kbx-menu-shadow); padding: 6px; z-index: 20;
}
.activate-page .kbx-menu[hidden] { display: none; }
.activate-page .kbx-menu-email { font-size: 11px; color: var(--kbx-text-faint); padding: 2px 10px 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.activate-page .kbx-menu-item {
	display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
	padding: 9px 10px; border-radius: 8px; font-size: 14px; color: var(--kbx-text);
}
.activate-page .kbx-menu-item:hover { background: var(--kbx-bg-hover); }
.activate-page .kbx-menu-item.danger { color: var(--kbx-danger); }
.activate-page .kbx-menu-item .kbx-mi-ico { width: 17px; height: 17px; flex: 0 0 auto; opacity: .85; }

/* ---- Main / chat ---- */
.activate-page .kbx-main {
	position: relative;
	flex: 1 1 auto; display: flex; flex-direction: column;
	min-width: 0; min-height: 0; background: var(--kbx-bg-main);
}
.activate-page .kbx-detail { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.activate-page .kbx .md-empty { margin: auto; color: var(--kbx-text-muted); font-size: .95rem; padding: 2rem; text-align: center; }
.activate-page .kbx-tip {
	margin: 0; padding: 8px 16px 12px; text-align: center;
	font-size: 11px; color: var(--kbx-text-faint); background: var(--kbx-bg-main);
}
.activate-page .kbx-tip a { color: var(--kbx-text-muted); }

/* chat detail 充满主列（覆盖旧的固定高度卡片样式） */
.activate-page .kbx .kb-chat-detail { flex: 1 1 auto; height: auto; min-height: 0; padding: 0; }

.activate-page .kbx .chat-head {
	padding: 16px 24px 14px; border-bottom: 1px solid var(--kbx-border); flex-shrink: 0;
}
.activate-page .kbx .chat-head-title {
	font-size: 16px; font-weight: 600; color: var(--kbx-text);
	display: flex; align-items: center; gap: 8px;
}
.activate-page .kbx .chat-head-title .kbx-star { font-size: 15px; }
.activate-page .kbx .chat-head-meta {
	font-size: 12.5px; color: var(--kbx-text-muted); margin-top: 5px;
	overflow: visible; white-space: normal; text-overflow: clip;
}
.activate-page .kbx .chat-head-disclaimer { font-size: 12px; color: var(--kbx-text-faint); margin-top: 3px; }

/* 对话内容占满面板宽度，自动换行适应屏幕（去掉窄栏居中） */
.activate-page .kbx .chat-window { flex: 1 1 auto; min-height: 0; }
.activate-page .kbx .chat-log {
	flex: 1 1 auto; overflow-y: auto; padding: 22px 48px;
	display: flex; flex-direction: column; gap: 22px; background: var(--kbx-bg-main);
}
.activate-page .kbx .chat-empty { margin: auto; color: var(--kbx-text-muted); font-size: 14px; }

.activate-page .kbx .chat-bubble {
	max-width: 100%; border: 0; border-radius: 0; padding: 0;
	font-size: 15px; line-height: 1.6;
}
/* 用户气泡：右侧圆角浅底 */
.activate-page .kbx .chat-user {
	align-self: flex-end; max-width: 78%;
	background: var(--kbx-user-bubble); color: var(--kbx-user-text);
	padding: 10px 15px; border-radius: 20px; border: 0;
	white-space: pre-wrap; word-break: break-word;
}
/* 助手回复：左侧纯文本、无气泡、占满宽度 */
.activate-page .kbx .chat-assistant {
	align-self: stretch; width: 100%; max-width: 100%;
	background: transparent; border: 0; color: var(--kbx-text);
	padding: 0; line-height: 1.7;
}
.activate-page .kbx .chat-assistant a { color: var(--kbx-accent); }
.activate-page .kbx .chat-assistant strong { font-weight: 600; }
.activate-page .kbx .chat-assistant code { background: var(--kbx-bg-hover); color: var(--kbx-text); }
.activate-page .kbx .chat-assistant blockquote { border-left-color: var(--kbx-border-strong); color: var(--kbx-text-muted); }
.activate-page .kbx .chat-thinking {
	display: flex;
	align-items: center;
	gap: 9px;
	color: var(--kbx-text-muted);
	letter-spacing: normal;
}
.activate-page .kbx .chat-spinner {
	width: 16px;
	height: 16px;
	flex: 0 0 auto;
	border-radius: 50%;
	border: 2px solid var(--kbx-border-strong);
	border-top-color: var(--kbx-accent);
	animation: kbx-spin .7s linear infinite;
}
.activate-page .kbx .chat-thinking-label { font-size: 14px; }
@keyframes kbx-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
	.activate-page .kbx .chat-spinner { animation-duration: 1.6s; }
}
.activate-page .kbx .chat-error {
	align-self: flex-start; background: transparent;
	color: var(--kbx-danger); border: 0; padding: 0;
}

/* Sources：每轮回答之后 */
.activate-page .kbx .chat-sources {
	align-self: stretch; max-width: 100%;
	display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 12px 0 0;
}
.activate-page .kbx .chat-sources-label { font-size: 12px; color: var(--kbx-text-muted); margin-right: 2px; }
.activate-page .kbx .chat-source-chip {
	font-size: 12px; color: var(--kbx-accent);
	border: 1px solid var(--kbx-border-strong); border-radius: 20px;
	padding: 3px 10px; background: transparent;
}
.activate-page .kbx .chat-source-chip:hover { background: var(--kbx-bg-hover); }

/* Composer（圆角输入条 + 语音 + 发送） */
.activate-page .kbx .chat-input-bar {
	display: flex; align-items: flex-end; gap: 6px;
	margin: 12px 48px 20px; padding: 7px 8px;
	background: var(--kbx-composer-bg); border: 1px solid var(--kbx-composer-border);
	border-top: 1px solid var(--kbx-composer-border);
	border-radius: 26px; box-shadow: 0 1px 2px rgba(0,0,0,.04); flex-shrink: 0;
}
.activate-page .kbx .chat-input {
	flex: 1 1 auto; border: 0; outline: 0; background: transparent; color: var(--kbx-text);
	font: inherit; font-size: 15px; line-height: 1.4; resize: none;
	max-height: 160px; padding: 7px 4px; box-shadow: none;
}
.activate-page .kbx .chat-input:focus { border: 0; outline: 0; box-shadow: none; }
.activate-page .kbx .chat-input::placeholder { color: var(--kbx-text-faint); }
.activate-page .kbx .chat-mic {
	width: 34px; height: 34px; flex: 0 0 auto; border-radius: 50%;
	display: grid; place-items: center; color: var(--kbx-text-muted); background: none;
	touch-action: none; user-select: none; -webkit-user-select: none;
}
.activate-page .kbx .chat-mic:hover { background: var(--kbx-bg-hover); color: var(--kbx-text); }
.activate-page .kbx .chat-mic svg { width: 19px; height: 19px; }
.activate-page .kbx .chat-mic.is-listening { color: #fff; background: var(--kbx-danger); }
.activate-page .kbx .chat-send {
	width: 34px; height: 34px; flex: 0 0 auto; padding: 0; border-radius: 50%;
	display: grid; place-items: center; background: var(--kbx-text); color: var(--kbx-bg-main);
}
.activate-page .kbx .chat-send:hover:not(:disabled) { background: var(--kbx-text); opacity: .85; }
.activate-page .kbx .chat-send:disabled { opacity: .4; cursor: default; }
.activate-page .kbx .chat-send svg { width: 19px; height: 19px; }

/* 移动端：侧栏收窄，内容内边距减小（名称仍完整显示） */
@media (max-width: 640px) {
	.activate-page .kbx-side { width: 200px; flex-basis: 200px; }
	.activate-page .kbx-slogan { display: none; }
	.activate-page .kbx .chat-log { padding: 18px 16px; }
	.activate-page .kbx .chat-input-bar { margin: 10px 16px 16px; }
	.activate-page .kbx .chat-head { padding: 14px 16px 12px; }
	.activate-page .kbx .chat-user { max-width: 88%; }
}

/* 弹窗风格与控制台一致：主题化（跟随明暗）、更紧凑；仅作用于加了 kbx-dialog 的对话框 */
.activate-page .kbx-dialog {
	max-width: 420px;
	width: calc(100% - 2rem);
	padding: 1.4rem 1.5rem;
	color-scheme: light dark;
	border: 1px solid var(--kbx-border-strong);
	border-radius: 16px;
	background: var(--kbx-menu-bg);
	color: var(--kbx-text);
	font-family: var(--kbx-font);
	box-shadow: var(--kbx-menu-shadow);
}
.activate-page .kbx-dialog::backdrop { background: rgba(0, 0, 0, .5); }
.activate-page .kbx-dialog.source-dialog { max-width: 560px; }
.activate-page .kbx-dialog .account-title { font-size: 1.15rem; font-weight: 600; color: var(--kbx-text); margin-bottom: .3rem; }
.activate-page .kbx-dialog .account-subtitle { color: var(--kbx-text-muted); font-size: .9rem; line-height: 1.5; margin-bottom: 1.1rem; }
.activate-page .kbx-dialog .account-label { color: var(--kbx-text); }
.activate-page .kbx-dialog .account-input {
	margin-bottom: .5rem; padding: .6rem .75rem; font-size: .95rem;
	background: var(--kbx-composer-bg); color: var(--kbx-text);
	border: 1px solid var(--kbx-border-strong); border-radius: 10px;
}
.activate-page .kbx-dialog .account-input::placeholder { color: var(--kbx-text-faint); }
.activate-page .kbx-dialog .account-input:focus {
	outline: none; border-color: var(--kbx-accent); box-shadow: 0 0 0 3px rgba(77, 139, 240, .28);
}
.activate-page .kbx-dialog .code-seg {
	background: var(--kbx-composer-bg); color: var(--kbx-text);
	border: 1px solid var(--kbx-border-strong); border-radius: 8px;
}
.activate-page .kbx-dialog .code-seg::placeholder { color: var(--kbx-text-faint); }
.activate-page .kbx-dialog .code-seg:focus {
	outline: none; border-color: var(--kbx-accent); box-shadow: 0 0 0 3px rgba(77, 139, 240, .28);
}
.activate-page .kbx-dialog .code-dash { color: var(--kbx-text-faint); }
.activate-page .kbx-dialog .dialog-actions { margin-top: 1.25rem; gap: .5rem; }
.activate-page .kbx-dialog .btn-primary {
	background: var(--kbx-text); color: var(--kbx-bg-main);
	border: 0; border-radius: 10px; padding: .5rem 1.15rem; font-size: .9rem; font-weight: 600;
}
.activate-page .kbx-dialog .btn-primary:hover:not(:disabled) { background: var(--kbx-text); opacity: .85; }
.activate-page .kbx-dialog .btn-danger-solid { background: var(--kbx-danger); color: #fff; }
.activate-page .kbx-dialog .btn-danger-solid:hover:not(:disabled) { background: var(--kbx-danger); opacity: .88; }
.activate-page .kbx-dialog .btn-quiet {
	color: var(--kbx-text-muted); border-radius: 10px; padding: .5rem .9rem; margin-left: 0; font-weight: 500;
}
.activate-page .kbx-dialog .btn-quiet:hover:not(:disabled) { background: var(--kbx-bg-hover); color: var(--kbx-text); }
.activate-page .kbx-dialog .kb-search-results { border-top: 1px solid var(--kbx-border); }
.activate-page .kbx-dialog .kb-search-row { border-bottom: 1px solid var(--kbx-border); }
.activate-page .kbx-dialog .kb-search-row:hover { background: var(--kbx-bg-hover); }
.activate-page .kbx-dialog .kb-search-name { color: var(--kbx-text); }
.activate-page .kbx-dialog .kb-search-sub { color: var(--kbx-text-muted); }
.activate-page .kbx-dialog .kb-search-tag { background: var(--kbx-bg-hover); color: var(--kbx-text-muted); }
.activate-page .kbx-dialog .md-empty { color: var(--kbx-text-muted); }

/* Admin 侧栏底部：Permits 余额行（邮箱上方一行）+ 菜单里的角色副标题 */
.activate-page .kbx-permits {
	display: flex; align-items: baseline; gap: 8px;
	padding: 6px 12px 2px;
}
.activate-page .kbx-permits-label { color: var(--kbx-text-muted); text-transform: uppercase; letter-spacing: .05em; font-size: 10.5px; }
.activate-page .kbx-permits-value { color: var(--kbx-text); font-weight: 600; font-size: 13px; }
.activate-page .kbx-menu-sub { font-size: 11px; color: var(--kbx-text-faint); padding: 0 10px 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.activate-page .kbx-menu-sub:empty { display: none; }
.activate-page .kbx-menu-name { font-size: 13px; font-weight: 600; color: var(--kbx-text); padding: 4px 10px 1px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Admin 主面板：可滚动、带内边距；表单限制宽度便于阅读 */
.activate-page #admin-detail {
	display: block;
	overflow-y: auto;
	padding: 24px 32px 44px;
}
.activate-page #admin-detail .create-form { max-width: 900px; }
/* detail-head 不再限宽——与下方面板同宽，编辑/删除图标才落在行尾（不再显示在中间）*/

/* 可折叠分类分组（New/Edit KB 表单） */
.activate-page #admin-detail .form-group {
	border: 1px solid var(--kbx-border);
	border-radius: 12px;
	margin: 0 0 14px;
	background: var(--kbx-bg-main);
	overflow: hidden;
}
.activate-page #admin-detail .form-group-head {
	list-style: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 13px 16px;
	font-size: 15px;
	font-weight: 600;
	color: var(--kbx-text);
	user-select: none;
}
.activate-page #admin-detail .form-group-head::-webkit-details-marker { display: none; }
.activate-page #admin-detail .form-group-head::marker { content: ""; }
.activate-page #admin-detail .form-group-head:hover { background: var(--kbx-bg-hover); }
.activate-page #admin-detail .form-group-chevron {
	flex: 0 0 auto;
	color: var(--kbx-text-muted);
	display: grid; place-items: center;
	transition: transform .18s ease;
}
.activate-page #admin-detail .form-group-chevron svg { width: 18px; height: 18px; display: block; }
.activate-page #admin-detail .form-group[open] > .form-group-head { border-bottom: 1px solid var(--kbx-border); }
.activate-page #admin-detail .form-group[open] > .form-group-head .form-group-chevron { transform: rotate(180deg); }
.activate-page #admin-detail .form-group-body { padding: 10px 16px 16px; }
.activate-page #admin-detail .form-group-body > .form-row:first-child { margin-top: 0; }

/* Admin 表单按钮：抵消 .kbx button 基础重置，恢复按钮样式（中性风格，与控制台一致） */
.activate-page #admin-detail .btn-primary:not(.btn-danger-solid) {
	background: var(--kbx-text); color: var(--kbx-bg-main); border: 0; border-radius: 10px; cursor: pointer;
}
.activate-page #admin-detail .btn-primary:not(.btn-danger-solid):hover:not(:disabled) { background: var(--kbx-text); opacity: .85; }
.activate-page #admin-detail .btn-danger-solid { background: var(--kbx-danger); color: #fff; border: 0; cursor: pointer; }
.activate-page #admin-detail .btn-danger-solid:hover:not(:disabled) { background: var(--kbx-danger); opacity: .88; }
.activate-page #admin-detail .btn-quiet { background: transparent; color: var(--kbx-text-muted); border: 0; cursor: pointer; }
.activate-page #admin-detail .btn-quiet:hover:not(:disabled) { background: var(--kbx-bg-hover); color: var(--kbx-text); }
.activate-page #admin-detail .btn-outline { background: transparent; color: var(--kbx-text); border: 1px solid var(--kbx-border-strong); cursor: pointer; }
.activate-page #admin-detail .btn-outline:hover:not(:disabled) { background: var(--kbx-bg-hover); }
.activate-page #admin-detail .btn-icon {
	background: var(--kbx-bg-main); color: var(--kbx-text-muted); border: 1px solid var(--kbx-border-strong); cursor: pointer;
}
.activate-page #admin-detail .btn-icon:hover { background: var(--kbx-bg-hover); color: var(--kbx-text); }

/* ==========================================================================
   Admin 深浅色主题化：详情/表单/弹窗内容的硬编码亮色 → --kbx-* 变量，跟随系统。
   仅作用于 #admin-detail 与 .kbx-dialog；登录/注册页（亮色专用）不受影响。
   ========================================================================== */
.activate-page #admin-detail .detail-head { border-bottom-color: var(--kbx-border); }
.activate-page #admin-detail .detail-title { color: var(--kbx-text); }
.activate-page #admin-detail .kb-meta { color: var(--kbx-text-muted); }
.activate-page #admin-detail .kb-panel { border-top-color: var(--kbx-border); }
.activate-page #admin-detail .kb-panel-title { color: var(--kbx-text-muted); }

.activate-page #admin-detail .frow-label,
.activate-page #admin-detail .field-label,
.activate-page #admin-detail .sub-field-label { color: var(--kbx-text-muted); }
.activate-page #admin-detail .frow-static { color: var(--kbx-text); }
.activate-page #admin-detail .frow-check { color: var(--kbx-text); }
.activate-page #admin-detail .frow-check input { accent-color: var(--kbx-accent); }
.activate-page #admin-detail .sub-field { border-left-color: var(--kbx-border); }

.activate-page #admin-detail .form-input,
.activate-page #admin-detail .field-input,
.activate-page #admin-detail .code-seg {
	background: var(--kbx-composer-bg);
	border-color: var(--kbx-border-strong);
	color: var(--kbx-text);
}
.activate-page #admin-detail .form-input::placeholder,
.activate-page #admin-detail .field-input::placeholder,
.activate-page #admin-detail .code-seg::placeholder { color: var(--kbx-text-faint); }
.activate-page #admin-detail .form-input:focus,
.activate-page #admin-detail .field-input:focus,
.activate-page #admin-detail .code-seg:focus {
	border-color: var(--kbx-accent);
	box-shadow: 0 0 0 3px rgba(77, 139, 240, .28);
}
.activate-page #admin-detail .form-input:disabled {
	background: var(--kbx-bg-hover);
	color: var(--kbx-text-faint);
}
.activate-page #admin-detail .code-dash { color: var(--kbx-text-faint); }

.activate-page #admin-detail .form-hint,
.activate-page #admin-detail .kb-note,
.activate-page #admin-detail .md-empty { color: var(--kbx-text-muted); }
.activate-page #admin-detail .is-error-text { color: var(--kbx-danger); }

.activate-page #admin-detail .batch-row { border-bottom-color: var(--kbx-border); }
.activate-page #admin-detail .batch-info { color: var(--kbx-text); }
.activate-page #admin-detail .file-meta { color: var(--kbx-text-muted); }
.activate-page #admin-detail .files-foot { border-top-color: var(--kbx-border); }
.activate-page #admin-detail .md-list-foot { background: var(--kbx-bg-main); border-top-color: var(--kbx-border); }
.activate-page #admin-detail .batch-row.is-pending .file-name::after { color: var(--kbx-text-faint); }

.activate-page #admin-detail .cover-preview { border-color: var(--kbx-border); }
.activate-page #admin-detail .job-progress { background: var(--kbx-bg-hover); }
.activate-page #admin-detail .job-progress-bar { background: var(--kbx-accent); }
.activate-page #admin-detail .embed-code {
	background: var(--kbx-bg-hover);
	border-color: var(--kbx-border-strong);
	color: var(--kbx-text);
}
.activate-page #admin-detail .kb-badge {
	background: rgba(192, 54, 44, .16);
	color: var(--kbx-danger);
}

/* ---- 弹窗内容（cost / advanced&embedding 确认 / embed / adding / source） ---- */
.activate-page .kbx-dialog .cost-row { color: var(--kbx-text-muted); }
.activate-page .kbx-dialog .cost-value,
.activate-page .kbx-dialog .cost-total { color: var(--kbx-text); }
.activate-page .kbx-dialog .cost-total { border-top-color: var(--kbx-border); }
.activate-page .kbx-dialog .cost-message { color: var(--kbx-text-muted); }
.activate-page .kbx-dialog .widget-confirm-list,
.activate-page .kbx-dialog .widget-confirm-list li { color: var(--kbx-text); }
.activate-page .kbx-dialog .embed-code {
	background: var(--kbx-bg-hover);
	border-color: var(--kbx-border-strong);
	color: var(--kbx-text);
}
.activate-page .kbx-dialog .job-progress { background: var(--kbx-bg-hover); }
.activate-page .kbx-dialog .job-progress-bar { background: var(--kbx-accent); }
.activate-page .kbx-dialog .sub-field { border-left-color: var(--kbx-border); }
.activate-page .kbx-dialog .sub-field-label,
.activate-page .kbx-dialog .form-hint,
.activate-page .kbx-dialog .kb-note,
.activate-page .kbx-dialog .source-uri { color: var(--kbx-text-muted); }
.activate-page .kbx-dialog .is-error-text { color: var(--kbx-danger); }
.activate-page .kbx-dialog .frow-check input,
.activate-page .kbx-dialog .code-seg { accent-color: var(--kbx-accent); }

/* notice（错误/成功）在 admin 与弹窗内主题化（登录页 .notice 不受影响） */
.activate-page #admin-detail .notice.is-error,
.activate-page .kbx-dialog .notice.is-error {
	background: rgba(192, 54, 44, .14);
	color: var(--kbx-danger);
}
.activate-page #admin-detail .notice.is-success,
.activate-page .kbx-dialog .notice.is-success {
	background: rgba(76, 175, 80, .15);
	color: #57b45d;
}
.activate-page .kbx-dialog .notice.is-info {
	background: var(--kbx-bg-hover);
	color: var(--kbx-text-muted);
}

/* Add permits 弹窗：Buy permits / License key 切换 + 订单摘要 */
.activate-page .kbx-dialog .seg-toggle {
	display: flex; gap: .25rem;
	padding: .25rem;
	margin: 0 0 1.1rem;
	background: var(--kbx-bg-hover);
	border: 1px solid var(--kbx-border);
	border-radius: 10px;
}
.activate-page .kbx-dialog .seg-toggle-btn {
	flex: 1 1 0;
	padding: .45rem .5rem;
	border: 1px solid transparent;
	border-radius: 7px;
	background: transparent;
	color: var(--kbx-text-muted);
	font-size: .88rem; font-weight: 600;
	cursor: pointer;
	transition: background .12s, color .12s;
}
.activate-page .kbx-dialog .seg-toggle-btn:hover { color: var(--kbx-text); }
.activate-page .kbx-dialog .seg-toggle-btn:disabled { opacity: .4; cursor: not-allowed; }
.activate-page .kbx-dialog .seg-toggle-btn:disabled:hover { color: var(--kbx-text-muted); }
.activate-page .kbx-dialog .seg-toggle-btn.is-active {
	background: var(--kbx-bg-main);
	border-color: var(--kbx-border-strong);
	color: var(--kbx-text);
	box-shadow: 0 1px 2px rgba(0, 0, 0, .12);
}

/* 订单摘要（Stripe 风格：价格 / 税 / 总计） */
.activate-page .kbx-dialog .buy-review {
	margin: .2rem 0 .6rem;
	padding: .85rem 1rem;
	border: 1px solid var(--kbx-border-strong);
	border-radius: 12px;
	background: var(--kbx-bg-hover);
}
.activate-page .kbx-dialog .buy-review-row {
	display: flex; justify-content: space-between; gap: 1rem;
	font-size: .9rem; color: var(--kbx-text-muted); padding: .22rem 0;
}
.activate-page .kbx-dialog .buy-review-row span:last-child {
	color: var(--kbx-text); font-variant-numeric: tabular-nums;
}
.activate-page .kbx-dialog .buy-review-total {
	margin-top: .5rem; padding-top: .55rem;
	border-top: 1px solid var(--kbx-border);
	font-size: 1rem; font-weight: 700;
}
.activate-page .kbx-dialog .buy-review-total span { color: var(--kbx-text); }
.activate-page .kbx-dialog .buy-fineprint {
	margin: .55rem 0 0; font-size: .76rem; color: var(--kbx-text-faint);
}
.activate-page .kbx-dialog .buy-hint {
	margin: -.4rem 0 .2rem; font-size: .78rem; color: var(--kbx-text-faint);
}
