/* APITEST domain layouts only. Vendor CSS and KTUI components remain unchanged. */
[hidden] { display: none !important; }
.kt-select-display, .kt-select-placeholder, .kt-select-option, .kt-select-option-text,
.kt-select-search input, .kt-select-search-empty { font-size: 12px; line-height: 1.5; }
.is-auth-checking .apitest-shell { display: none; }
.apitest-shell { min-height: 100vh; }
.apitest-loading-skeleton { display: grid; gap: 14px; padding: 20px; }
.apitest-loading-skeleton > .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
.apitest-skeleton-block { display: grid; gap: 8px; }
.apitest-skeleton-line { height: 14px; width: 100%; }
.apitest-skeleton-short { width: 60%; height: 10px; }
.apitest-skeleton-cards { grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); }
.apitest-skeleton-cards .apitest-skeleton-block { padding: 16px; border: 1px solid var(--border); border-radius: var(--radius); min-height: 120px; align-content: start; }
.apitest-data-loading > :not(.apitest-loading-skeleton) { display: none; }
.apitest-data-failed > :not(.apitest-load-error) { display: none; }
@media (prefers-reduced-motion: reduce) { .apitest-loading-skeleton .kt-skeleton { animation: none; } }
.apitest-nav-separator { border-top: 1px solid var(--border); margin: 10px; flex-shrink: 0; }
[data-kt-datatable] .kt-card-footer,
[data-kt-datatable] .kt-card-footer .kt-btn,
[data-kt-datatable] [data-kt-datatable-pagination] button,
[data-kt-datatable] .kt-card-footer .kt-select { font-size: 12px; font-weight: 400; }
.apitest-sidebar .kt-menu-item.active > .apitest-nav-link > .kt-menu-title { font-weight: 700; }
.apitest-sidebar-brand { display: flex; align-items: center; gap: 10px; color: var(--foreground); font-size: 23px; font-weight: 600; }
.apitest-brand-icon { display: block; width: 32px; height: 32px; object-fit: contain; flex-shrink: 0; }
.apitest-header { display: flex; align-items: center; justify-content: space-between; padding: 0 30px; }
.apitest-header [aria-label="账户菜单"], #logoutBtn { font-size: 12px; }
#logoutBtn .ki-filled, #themeToggle .ki-filled { font-size: 14px; }
.apitest-header [aria-label="账户菜单"] > .ki-down { font-size: 12px; }
.apitest-main { padding: 30px 0; min-height: calc(100vh - var(--header-height)); }
.apitest-page-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 30px; }
.apitest-page-actions { display: flex; align-items: center; gap: 10px; }
.apitest-form-grid { display: grid; grid-template-columns: repeat(12,minmax(0,1fr)); }
.apitest-list-toolbar { display: flex; justify-content: flex-end; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.apitest-table-frame { background: transparent; }
.apitest-table-frame > .grid > .kt-scrollable-x-auto,
.apitest-table-frame > .kt-scrollable-x-auto { overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: var(--background); box-shadow: var(--box-shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.04)); }
.apitest-table-frame .kt-card-footer { border: 0; box-shadow: none; background: transparent; padding-inline: 0; }
.apitest-gateway-filters > .kt-input { width: 220px; }
.apitest-gateway-filters > .apitest-status-filter { width: 120px; }
.apitest-gateway-filters { margin-inline-start: auto; justify-content: flex-end; }
#gatewayDataTable .kt-table { min-width: 720px; }
#gatewayDataTable .kt-table th { padding: 10px 16px; font-size: 11px; font-weight: 500; color: var(--muted-foreground); }
#gatewayDataTable .kt-table td { padding: 14px 16px; font-size: 12px; vertical-align: middle; }
#gatewayDataTable .kt-table td:first-child { min-width: 180px; }
#gatewayDataTable .kt-table td:first-child > span { font-size: 13px; font-weight: 600; }
#gatewayDataTable .kt-table .text-xs, #gatewayDataTable .kt-table .kt-badge, #gatewayDataTable .kt-table .kt-btn { font-size: 11px; }
#gatewayDataTable .apitest-gateway-base { color: var(--muted-foreground); overflow-wrap: anywhere; }
#gatewayDataTable .kt-table th[data-kt-datatable-column="status"], #gatewayDataTable .kt-table td:nth-child(4) { text-align: center; }
#gatewayDataTable .kt-table th[data-kt-datatable-column="status"] .kt-table-col { justify-content: center; }
#gatewayDataTable .apitest-gateway-key { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-variant-numeric: tabular-nums; color: var(--muted-foreground); }
.apitest-model-filters { margin-inline-start: auto; justify-content: flex-end; }
.apitest-admin-filters { margin-inline-start: auto; justify-content: flex-end; }
.apitest-admin-filters > #adminKeyword { width: 230px; }
.apitest-admin-filters > #adminOwner { width: 90px; flex: 0 0 90px; }
.apitest-admin-filters > #adminStatus, .apitest-admin-filters > [data-kt-select-wrapper], #adminTypeWrap { width: 110px; flex: 0 0 110px; }
#adminTypeWrap > .kt-select, #adminTypeWrap > [data-kt-select-wrapper] { width: 100%; }
.apitest-admin-filters > input[type="datetime-local"] { width: 175px; flex: 0 0 175px; }
.apitest-admin-table { font-size: 12px; }
.apitest-admin-table th { font-size: 11px; font-weight: 500; color: var(--muted-foreground); }
.apitest-admin-table td { vertical-align: middle; }
.apitest-admin-queue-table { table-layout: fixed; }
.apitest-admin-queue-table th:nth-child(1) { width: 80px; }
.apitest-admin-queue-table th:nth-child(2) { width: 90px; }
.apitest-admin-queue-table th:nth-child(3) { width: 190px; }
.apitest-admin-queue-table th:nth-child(4) { width: 90px; }
.apitest-admin-queue-table th:nth-child(5), .apitest-admin-queue-table th:nth-child(6) { width: 150px; }
.apitest-admin-queue-table th:nth-child(7) { width: 260px; }
.apitest-admin-queue-table th:nth-child(8) { width: 120px; }
.apitest-admin-queue-table td:nth-child(1), .apitest-admin-queue-table td:nth-child(2), .apitest-admin-queue-table td:nth-child(4), .apitest-admin-queue-table td:nth-child(5), .apitest-admin-queue-table td:nth-child(6) { white-space: nowrap; }
.apitest-admin-queue-table td:nth-child(3) { overflow-wrap: anywhere; }
.apitest-admin-reason { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; overflow-wrap: anywhere; line-height: 1.5; }
#adminPage .kt-menu-item.active > .apitest-nav-link { background: var(--accent); border-radius: var(--radius); color: var(--primary); }
#adminPage .kt-menu-item.active .kt-menu-title { color: var(--primary); font-weight: 700; }
#adminDialog .kt-modal-body { font-size: 12px; }
.apitest-model-filters > .kt-input { width: 185px; }
.apitest-model-filters > .apitest-site-filter { width: 140px; }
.apitest-model-filters > .apitest-capability-filter { width: 100px; }
.apitest-result-filters { margin-inline-start: auto; justify-content: flex-end; }
.apitest-result-filters > .kt-select, .apitest-result-filters > [data-kt-select-wrapper] { width: 120px; flex: 0 0 120px; }
.apitest-result-filters > #resultModelFilter, .apitest-result-filters > [data-kt-select-wrapper]:has([aria-label="日志模型"]) { width: 170px; flex-basis: 170px; }
.apitest-result-shell { overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: var(--background); box-shadow: var(--box-shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.04)); }
.apitest-result-toolbar { margin-bottom: 0; padding: 14px 16px; border-bottom: 1px solid var(--border); background: var(--background); }
.apitest-result-frame > .grid > .kt-scrollable-x-auto { border: 0; border-radius: 0; box-shadow: none; }
.apitest-result-frame .kt-card-footer { border-top: 1px solid var(--border); background: var(--background); padding-inline: 16px; }
#resultDataTable table { min-width: 860px; }
#resultDataTable td:first-child { min-width: 170px; }
#resultDataTable .kt-table th, #resultDataTable .kt-table td { font-size: 12px; }
#resultDataTable .kt-table .text-xs, #resultDataTable .kt-table .kt-badge, #resultDataTable .kt-table .kt-btn { font-size: 11px; }
.apitest-model-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
.apitest-model-card { min-width: 0; }
.apitest-model-trend { display: block; width: 100%; height: auto; }
.apitest-history-point { cursor: pointer; outline: none; }
.apitest-history-point:focus > circle:last-child { stroke: var(--foreground); stroke-width: 3; }
.apitest-history-range, .apitest-history-metric { flex: 1 1 140px; min-width: 0; }
.apitest-history-time { flex: 2 1 240px; min-width: 0; }
.apitest-model-card .kt-card-content { flex-grow: 1; padding: 14px; }
.apitest-model-card .kt-card-header, .apitest-model-card .kt-card-footer { padding: 10px 14px; }
.apitest-model-card .kt-card-header { min-height: 44px; }
.apitest-model-card .apitest-model-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)) minmax(0, 1.6fr); gap: 6px; align-items: stretch; }
.apitest-model-actions > .kt-btn { width: 100%; min-width: 0; justify-content: center; padding-inline: 4px; }
.apitest-model-actions > .retest-model-btn { grid-column: 1 / 3; }
.apitest-model-actions > .add-compare-btn { grid-column: 3; grid-row: 1 / 3; height: auto; min-height: 70px; white-space: normal; }
.apitest-model-card .kt-card-title { font-size: 14px; line-height: 1.4; }
.apitest-model-card .text-sm { font-size: 12px; line-height: 1.5; }
.apitest-model-card .text-xs, .apitest-model-card .kt-badge, .apitest-model-card .kt-btn { font-size: 11px; }
.apitest-model-name { overflow-wrap: anywhere; }
.apitest-model-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 12px; }
.apitest-model-stat { min-width: 0; }
.apitest-model-stat span { display: block; color: var(--kt-muted-foreground, #6b7280); font-size: 11px; line-height: 1.35; }
.apitest-model-stat strong { display: block; margin-top: 4px; color: var(--kt-foreground, #111827); font-size: 12px; font-weight: 500; line-height: 1.35; overflow-wrap: anywhere; }
.apitest-model-info { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 8px; }
.apitest-model-info dd { overflow-wrap: anywhere; }
@media (min-width: 768px) { .apitest-model-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) {
    .apitest-model-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .apitest-model-info { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 479px) { .apitest-model-info { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.apitest-field-full { grid-column: span 12; }
.apitest-field-half { grid-column: span 6; }
.apitest-field-third { grid-column: span 4; }
.apitest-field-quarter { grid-column: span 3; }
.apitest-field-sixth { grid-column: span 2; }
.apitest-field-search { grid-column: span 5; }
.apitest-field-two-thirds { grid-column: span 8; }
.apitest-form-grid .kt-form-label { margin-bottom: 5px; }
.apitest-form-grid .kt-textarea { min-height: 84px; }
.apitest-panel.hidden { display: none; }
.apitest-empty { padding: 28px; border: 1px dashed var(--border); border-radius: var(--radius); color: var(--muted-foreground); font-size: 13px; }
.apitest-compare-table { width: 100%; table-layout: fixed; font-size: 12px; }
.apitest-compare-table th, .apitest-compare-table td { padding: 10px 16px; vertical-align: middle; overflow-wrap: anywhere; }
.apitest-compare-table .apitest-compare-label { width: 144px; color: var(--muted-foreground); font-weight: 500; }
.apitest-compare-table td.is-best { background: var(--accent); color: var(--primary); font-weight: 600; }
.apitest-compare-table .apitest-compare-row > th { color: var(--muted-foreground); font-size: 12px; font-weight: 500; }
.apitest-compare-table .apitest-compare-row > td { font-size: 12px; font-variant-numeric: tabular-nums; }
.apitest-compare-table .apitest-compare-score > td { font-size: 18px; font-weight: 600; padding-block: 14px; }
.apitest-compare-table .apitest-compare-section > th { padding: 8px 16px; background: var(--muted); font-size: 11px; font-weight: 600; color: var(--muted-foreground); }
.apitest-compare-head { display: grid; gap: 6px; padding-block: 4px; }
.apitest-compare-head strong { font-size: 13px; font-weight: 600; }
.apitest-compare-head span { color: var(--muted-foreground); font-size: 11px; }
.apitest-compare-head .kt-btn { font-size: 11px; }
.apitest-compare-filters { margin-inline-start: auto; justify-content: flex-end; }
.apitest-compare-header { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }
.apitest-compare-scenario-bar { grid-column: 2; display: flex; justify-content: center; min-width: 0; }
.apitest-compare-header .apitest-compare-filters { grid-column: 3; }
@media (max-width: 767px) {
    .apitest-compare-header { grid-template-columns: minmax(0, 1fr); }
    .apitest-compare-scenario-bar, .apitest-compare-header .apitest-compare-filters { grid-column: 1; }
}
.apitest-compare-scenarios { max-width: 100%; overflow-x: auto; }
.apitest-compare-scenarios .kt-btn { flex-shrink: 0; font-size: 14px; }
.apitest-compare-scenarios .kt-btn.active { background-color: var(--primary); color: var(--primary-foreground); font-weight: 600; }
.apitest-metric-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(150px,1fr)); gap: 12px; }
.apitest-metric, .apitest-note { padding: 15px; border: 1px solid var(--border); border-radius: var(--radius); }
.apitest-metric span { display: block; color: var(--muted-foreground); font-size: 12px; margin-bottom: 8px; }
.apitest-metric strong { font-size: 14px; font-weight: 600; overflow-wrap: anywhere; }
.apitest-note { font-size: 13px; }
.apitest-note strong { display: block; margin-bottom: 8px; }
.apitest-json { max-height: 360px; overflow: auto; padding: 15px; background: var(--muted); font-size: 11px; border-radius: var(--radius); }
.apitest-check-grid { display: flex; flex-wrap: wrap; gap: 16px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius); }
/* Compact application dialogs; vendor modal behavior and styling stay intact. */
.kt-modal .kt-modal-header, .kt-modal .kt-modal-footer { padding: 14px 20px; gap: 8px; }
.kt-modal .kt-modal-body { padding: 20px; font-size: 12px; line-height: 1.6; }
.kt-modal .kt-modal-title { font-size: 14px; font-weight: 600; }
.kt-modal .kt-modal-body h4 { font-size: 14px; font-weight: 600; overflow-wrap: anywhere; }
.kt-modal .kt-modal-body h5 { font-size: 12px; font-weight: 600; margin-bottom: 10px; }
.kt-modal .kt-form-label { font-size: 11px; color: var(--muted-foreground); margin-bottom: 5px; }
.kt-modal .kt-input, .kt-modal .kt-textarea, .kt-modal .kt-btn, .kt-modal .kt-alert, .kt-modal .kt-badge { font-size: 12px; }
.kt-modal .kt-label, .kt-dropdown-menu .kt-dropdown-menu-link { font-size: 12px; }
.kt-modal .ki-filled, .kt-dropdown-menu .kt-dropdown-menu-link .ki-filled { font-size: 14px; }
.kt-modal .apitest-form-grid { gap: 12px; }
.kt-modal .apitest-metric-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr)); gap: 10px; }
.kt-modal .apitest-metric, .kt-modal .apitest-note { padding: 12px; }
.kt-modal .apitest-metric span { font-size: 11px; margin-bottom: 5px; }
.kt-modal .apitest-metric strong { font-size: 13px; font-variant-numeric: tabular-nums; }
.kt-modal .apitest-note { font-size: 12px; overflow-wrap: anywhere; }
.kt-modal .apitest-note strong { margin-bottom: 6px; }
#taskDetailBody .apitest-metric strong, #taskDetailBody .kt-table td strong { font-weight: 400; }
#taskDetailBody h5, #taskDetailBody .apitest-note strong, #taskDetailBody summary { font-weight: 500; }
.kt-modal .apitest-check-grid { padding: 12px; gap: 10px 16px; }
.kt-modal .apitest-json { padding: 12px; line-height: 1.6; }
.kt-modal .kt-table th, .kt-modal .kt-table td { padding: 8px 12px; font-size: 12px; vertical-align: middle; }
.kt-modal .kt-table th { color: var(--muted-foreground); font-size: 11px; font-weight: 500; }
.kt-modal .mt-6 { margin-top: 18px; }
.kt-modal .mb-5 { margin-bottom: 14px; }
.kt-modal .my-5 { margin-block: 16px; }
.apitest-model-detail-toolbar { flex-wrap: wrap; gap: 12px; }
.apitest-model-detail-toolbar > div:first-child { min-width: 0; flex: 1 1 240px; overflow-wrap: anywhere; }
@media (max-width: 479px) {
    .kt-modal .kt-modal-header, .kt-modal .kt-modal-footer, .kt-modal .kt-modal-body { padding: 14px; }
    .kt-modal .kt-modal-footer { flex-wrap: wrap; }
}
.apitest-login { position: relative; isolation: isolate; min-height: 100vh; min-height: 100svh; display: grid; align-items: center; padding: 64px 40px; background: #fff; }
.apitest-login-background { position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; background: radial-gradient(ellipse at 20% 30%, #edf3ff, transparent 65%); }
.apitest-login-layout { width: 100%; max-width: 1120px; margin: auto; display: grid; grid-template-columns: minmax(0, 1fr) 380px; column-gap: 100px; row-gap: 24px; align-items: start; }
.apitest-login-brand { grid-column: 1 / -1; justify-self: start; display: inline-flex; align-items: center; gap: 12px; color: var(--foreground); font-size: 28px; font-weight: 700; margin-bottom: 0; }
.apitest-login-intro { padding-top: 40px; }
.apitest-login-eyebrow { font-size: 12px; color: #5264bf; letter-spacing: .12em; margin-bottom: 18px; }
.apitest-login-intro h1 { font-size: clamp(32px, 4vw, 52px); line-height: 1.25; letter-spacing: -.035em; font-weight: 600; color: #17213b; }
.apitest-login-summary { max-width: 440px; font-size: 14px; line-height: 1.9; color: #526077; margin-top: 24px; }
.apitest-login-features { display: grid; gap: 22px; margin-top: 36px; padding: 0; list-style: none; }
.apitest-login-features li { display: flex; align-items: flex-start; gap: 14px; }
.apitest-login-features i { font-size: 20px; color: #536dfe; margin-top: 2px; }
.apitest-login-features h2 { font-size: 13px; font-weight: 600; color: #17213b; margin-bottom: 4px; }
.apitest-login-features p { font-size: 12px; color: #526077; line-height: 1.6; }
.apitest-login-card { width: 100%; background: rgba(255,255,255,.96); box-shadow: 0 18px 60px rgb(31 47 98 / .09); }
.apitest-login-card #loginForm { min-height: 460px; justify-content: flex-start; gap: 28px; }
.apitest-login-card .kt-input-lg, .apitest-login-card #loginBtn { height: 48px; flex-shrink: 0; font-size: 16px; }
.apitest-login-card .kt-input-lg > input { font-size: 16px; min-width: 0; }
@media (max-width: 700px) { .apitest-login-intro { padding-top: 0; } .apitest-login-card #loginForm { min-height: 420px; gap: 24px; } .apitest-login-layout .apitest-login-brand { margin-bottom: 0; } }
body:has(#registerForm) > main { min-height: 100vh; min-height: 100svh; padding: 32px 20px; display: flex; align-items: center; justify-content: center; }
body:has(#registerForm) > main > section { width: 100%; max-width: 480px; border-radius: 8px; }
#registerForm .kt-form-label, #accountPage .kt-form-label, #adminActionForm .kt-form-label { display: flex; flex-direction: column; align-items: stretch; gap: 8px; min-width: 0; }
#registerForm .kt-input, #accountPage .kt-input { width: 100%; min-width: 0; }
.apitest-account-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start; }
.apitest-account-grid .kt-card-content { padding: 24px; }
.apitest-account-grid .kt-form-label { font-size: 12px; }
.apitest-account-grid .kt-input { font-size: 13px; }
.apitest-account-meta { display: grid; grid-template-columns: 100px minmax(0, 1fr); gap: 8px 16px; padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid var(--border); font-size: 12px; overflow-wrap: anywhere; }
.apitest-account-meta > :nth-child(odd) { color: var(--muted-foreground); }
.apitest-account-meta strong { font-weight: 500; }
.apitest-account-footer { justify-content: flex-end; gap: 8px; padding: 16px 0 0; margin-top: 0; }
@media (max-width: 900px) { .apitest-account-grid { grid-template-columns: minmax(0, 1fr); } }
#adminTitle, #adminFilters { margin-bottom: 0; }
#adminDataTable .kt-table { min-width: 860px; }
#adminDataTable .kt-table th { padding: 10px 16px; }
#adminDataTable .kt-table td { padding: 14px 16px; }
#adminDataTable[aria-busy="true"] .kt-scrollable-x-auto { display: none; }
#adminDialog .kt-modal-content { width: min(640px, calc(100vw - 32px)); }
#adminDialogBody { max-height: calc(100svh - 160px); overflow-y: auto; }
@media (max-width: 600px) {
    .apitest-admin-filters > #adminKeyword, .apitest-admin-filters > #adminOwner, .apitest-admin-filters > #adminStatus, .apitest-admin-filters > [data-kt-select-wrapper], .apitest-admin-filters #adminTypeWrap, .apitest-admin-filters > input[type="datetime-local"] { width: 100%; flex-basis: 100%; }
    #accountPage > header { flex-wrap: wrap; }
}
@media (max-width: 900px) { .apitest-login-layout { gap: 40px; grid-template-columns: minmax(0, 1fr) 340px; } }
@media (max-width: 700px) { .apitest-login { padding: 32px 20px; } .apitest-login-layout { grid-template-columns: minmax(0, 1fr); gap: 32px; max-width: 440px; } .apitest-login-brand { margin-bottom: 32px; } .apitest-login-features { display: none; } .apitest-login-card .kt-card-content { padding: 28px; } }
@media (min-width: 1024px) {
    .demo1.kt-sidebar-collapse .apitest-sidebar:not(:hover) .apitest-nav-link > .kt-menu-title, .demo1.kt-sidebar-collapse .apitest-sidebar:not(:hover) #compareCount { display: none; }
}
@media (max-width: 1023px) {
    .apitest-sidebar .kt-sidebar-header { min-height: 72px; padding-inline: 22px; }
    .apitest-sidebar #sidebar_toggle { display: none; }
    .apitest-header { padding: 0 20px; }
    .apitest-main { padding: 24px 0; }
    .apitest-page-header { flex-wrap: wrap; align-items: flex-start; }
    .apitest-field-half, .apitest-field-third, .apitest-field-quarter, .apitest-field-sixth, .apitest-field-search, .apitest-field-two-thirds { grid-column: span 12; }
}
