@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap");

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* Ingest Studio — slate-tinted shadcn/ui (тёмная по умолчанию, светлая: data-theme="light") */
:root {
    color-scheme: dark;
    --radius: 0.65rem;
    --font-stack: "Inter", ui-sans-serif, system-ui, "Segoe UI", Roboto, sans-serif;
    --font-mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
    --primary-color: hsl(217, 91%, 60%);
    --primary-hover: hsl(217, 91%, 68%);
    --primary-foreground: hsl(0, 0%, 100%);
    --secondary-color: hsl(215, 16%, 60%);
    --success-color: hsl(142, 60%, 45%);
    --danger-color: hsl(0, 75%, 55%);
    --warning-color: hsl(38, 90%, 50%);
    --bg-color: hsl(222, 24%, 7%);
    --card-bg: hsl(222, 22%, 10%);
    --text-primary: hsl(213, 31%, 92%);
    --text-secondary: hsl(215, 16%, 60%);
    --border-color: hsl(222, 18%, 18%);
    --shadow: 0 1px 2px hsl(222, 24%, 4% / 0.4);
    --shadow-lg: 0 12px 40px hsl(222, 24%, 4% / 0.55);
    --bg-secondary: hsl(222, 18%, 16%);
    --info-bg: hsl(222, 18%, 14%);
    --error-bg: hsl(0, 75%, 55% / 0.12);
    --success-bg: hsl(142, 60%, 45% / 0.12);
    --btn-secondary-bg: transparent;
    --btn-secondary-fg: hsl(213, 31%, 92%);
    --btn-secondary-border: hsl(222, 18%, 18%);
    --gh-canvas-default: hsl(222, 24%, 7%);
    --gh-canvas-subtle: hsl(222, 24%, 7%);
    --gh-canvas-inset: hsl(222, 18%, 14%);
    --gh-border-default: hsl(222, 18%, 18%);
    --gh-border-muted: hsl(222, 18%, 16%);
    --gh-fg-default: hsl(213, 31%, 92%);
    --gh-fg-muted: hsl(215, 16%, 60%);
    --gh-accent-fg: hsl(217, 91%, 60%);
    --gh-code-bg: hsl(222, 18%, 14%);
    --gh-danger-fg: hsl(0, 75%, 55%);
    --gh-success-muted: hsl(142, 60%, 45% / 0.15);
    --gh-success-emphasis: hsl(142, 60%, 45%);
    --badge-get-bg: hsl(142, 60%, 45% / 0.15);
    --badge-get-fg: hsl(142, 60%, 45%);
    --badge-get-border: hsl(142, 60%, 45% / 0.35);
    --badge-post-bg: hsl(217, 91%, 60% / 0.15);
    --badge-post-fg: hsl(217, 91%, 60%);
    --badge-post-border: hsl(217, 91%, 60% / 0.35);
    --inline-code-bg: hsl(222, 18%, 16%);
    --focus-ring: hsl(217, 91%, 60% / 0.35);
}

:root[data-theme="light"] {
    color-scheme: light;
    --primary-color: hsl(217, 91%, 60%);
    --primary-hover: hsl(217, 91%, 52%);
    --primary-foreground: hsl(210, 40%, 98%);
    --secondary-color: hsl(215.4, 16.3%, 46.9%);
    --success-color: hsl(142, 71%, 45%);
    --danger-color: hsl(0, 84.2%, 60.2%);
    --warning-color: hsl(38, 92%, 50%);
    --bg-color: hsl(0, 0%, 100%);
    --card-bg: hsl(0, 0%, 100%);
    --text-primary: hsl(222.2, 84%, 4.9%);
    --text-secondary: hsl(215.4, 16.3%, 46.9%);
    --border-color: hsl(214.3, 31.8%, 91.4%);
    --shadow: 0 1px 2px hsl(222.2, 84%, 4.9% / 0.06);
    --shadow-lg: 0 12px 40px hsl(222.2, 84%, 4.9% / 0.1);
    --bg-secondary: hsl(210, 40%, 96.1%);
    --info-bg: hsl(210, 40%, 96.1%);
    --error-bg: hsl(0, 84.2%, 60.2% / 0.1);
    --success-bg: hsl(142, 71%, 45% / 0.12);
    --btn-secondary-bg: transparent;
    --btn-secondary-fg: hsl(222.2, 47.4%, 11.2%);
    --btn-secondary-border: hsl(214.3, 31.8%, 91.4%);
    --gh-canvas-default: hsl(0, 0%, 100%);
    --gh-canvas-subtle: hsl(210, 40%, 98%);
    --gh-canvas-inset: hsl(210, 40%, 96.1%);
    --gh-border-default: hsl(214.3, 31.8%, 91.4%);
    --gh-border-muted: hsl(210, 40%, 96.1%);
    --gh-fg-default: hsl(222.2, 84%, 4.9%);
    --gh-fg-muted: hsl(215.4, 16.3%, 46.9%);
    --gh-accent-fg: hsl(217, 91%, 60%);
    --gh-code-bg: hsl(210, 40%, 96.1%);
    --gh-danger-fg: hsl(0, 84.2%, 60.2%);
    --gh-success-muted: hsl(142, 71%, 45% / 0.15);
    --gh-success-emphasis: hsl(142, 71%, 45%);
    --badge-get-bg: hsl(142, 71%, 45% / 0.12);
    --badge-get-fg: hsl(142, 71%, 38%);
    --badge-get-border: hsl(142, 71%, 45% / 0.35);
    --badge-post-bg: hsl(217, 91%, 60% / 0.12);
    --badge-post-fg: hsl(217, 91%, 48%);
    --badge-post-border: hsl(217, 91%, 60% / 0.35);
    --inline-code-bg: hsl(210, 40%, 96.1%);
    --focus-ring: hsl(217, 91%, 60% / 0.28);
}

body {
    font-family: var(--font-stack);
    background: var(--bg-color);
    color: var(--text-primary);
    line-height: 1.6;
    font-feature-settings: "rlig" 1, "calt" 1;
    -webkit-font-smoothing: antialiased;
}

::selection {
    background: hsl(217, 91%, 60% / 0.35);
}

.container {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.login-card {
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: calc(var(--radius) + 4px);
    box-shadow: var(--shadow-lg);
    padding: 2rem 1.75rem 1.75rem;
    width: 100%;
    max-width: 24rem;
    animation: vsContentIn 0.4s ease-out both;
}

.login-card .login-icon {
    width: 3rem;
    height: 3rem;
    margin: 0 auto 0.75rem;
    border-radius: calc(var(--radius) + 2px);
    background: hsl(217, 91%, 60% / 0.15);
    display: grid;
    place-items: center;
}

.login-card .login-icon img {
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 6px;
    object-fit: contain;
}

body.app-layout {
    margin: 0;
    overflow-x: hidden;
}

.section-header .page-heading {
    font-size: 1.5rem;
}

.admin-page-title.page-heading {
    margin-bottom: 0.25rem;
}

.theme-bar-login {
    position: fixed;
    top: 16px;
    right: 16px;
    z-index: 100;
}

.logo {
    text-align: center;
    margin-bottom: 1.25rem;
}

.logo h1 {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 0.25rem;
}

.app-brand-title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin: 0;
}

.app-brand-favicon {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    border-radius: 6px;
    object-fit: contain;
}

.logo p {
    color: var(--text-secondary);
    font-size: 0.875rem;
}

.form-group {
    margin-bottom: 20px;
}

.form-group label {
    display: block;
    margin-bottom: 8px;
    font-weight: 500;
    color: var(--text-primary);
}

.form-group input {
    width: 100%;
    padding: 0.5rem 0.75rem;
    height: 2.25rem;
    border: 1px solid var(--border-color);
    border-radius: var(--radius);
    font-size: 0.875rem;
    transition: border-color 0.15s, box-shadow 0.15s;
    background: var(--bg-color);
    color: var(--text-primary);
}

.form-group input:focus {
    outline: none;
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px var(--focus-ring);
}

.form-label-block {
    display: block;
    margin-bottom: 8px;
    font-weight: 500;
    color: var(--text-primary);
}

.file-picker {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius);
    background: var(--bg-color);
}
.file-picker-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.file-picker-btn {
    margin: 0;
    cursor: pointer;
    flex-shrink: 0;
}
.file-picker-name {
    flex: 1;
    min-width: 0;
    font-size: 0.875rem;
    color: var(--text-secondary);
    word-break: break-all;
}
.file-picker-name--selected {
    color: var(--text-primary);
}

.btn {
    padding: 0.5rem 1rem;
    border: none;
    border-radius: var(--radius);
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
    width: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    position: relative;
    z-index: 1;
}

.btn-primary {
    background: var(--primary-color);
    color: var(--primary-foreground);
    box-shadow: 0 1px 2px hsl(222, 24%, 4% / 0.2);
}

.btn-primary:hover {
    background: var(--primary-hover);
}

.btn-secondary {
    background: var(--btn-secondary-bg);
    color: var(--btn-secondary-fg);
    border: 1px solid var(--btn-secondary-border);
    text-decoration: none;
}

.btn-secondary:hover {
    background: var(--bg-secondary);
    color: var(--text-primary);
    text-decoration: none;
}

.btn-small {
    padding: 6px 12px;
    font-size: 14px;
    width: auto;
}

.btn-danger {
    background: var(--danger-color);
    color: white;
}

.btn-danger:hover {
    background: #dc2626;
}

.error-message {
    background: var(--error-bg);
    color: var(--danger-color);
    padding: 12px;
    border-radius: 8px;
    margin-bottom: 20px;
    font-size: 14px;
}

.success-message {
    background: var(--success-bg);
    color: var(--success-color);
    padding: 12px;
    border-radius: 8px;
    margin-bottom: 20px;
    font-size: 14px;
}

/* App shell — как Ingest Studio: слева сайдбар, справа контент */
.app-shell {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    min-height: 100vh;
    width: 100%;
    background: var(--bg-color);
}

.app-sidebar {
    width: 16rem;
    flex: 0 0 16rem;
    min-height: 100vh;
    height: 100vh;
    position: sticky;
    top: 0;
    border-right: 1px solid var(--border-color);
    background: var(--card-bg);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.sidebar-brand {
    padding: 1rem 1.25rem;
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

.sidebar-brand-icon {
    width: 2rem;
    height: 2rem;
    border-radius: var(--radius);
    background: hsl(217, 91%, 60% / 0.15);
    display: grid;
    place-items: center;
    flex-shrink: 0;
    font-size: 1.125rem;
    line-height: 1;
}

.sidebar-brand-icon img {
    width: 1.125rem;
    height: 1.125rem;
    border-radius: 6px;
    object-fit: contain;
    display: block;
}

.sidebar-brand-text {
    min-width: 0;
}

.sidebar-brand-title {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--text-primary);
    line-height: 1.25;
}

.sidebar-brand-sub {
    font-size: 0.75rem;
    color: var(--text-secondary);
}

.sidebar-sep {
    border: none;
    border-top: 1px solid var(--border-color);
    margin: 0;
}

.sidebar-nav {
    flex: 1 1 auto;
    min-height: 0;
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    overflow-y: auto;
}

.sidebar-footer {
    flex-shrink: 0;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    border-top: 1px solid var(--border-color);
}

.sidebar-user {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-width: 0;
}

.sidebar-user-account {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    min-width: 0;
}

.sidebar-user-account-icon {
    flex-shrink: 0;
    display: inline-flex;
    width: 0.875rem;
    height: 0.875rem;
    color: var(--text-secondary);
}

.sidebar-user-account-icon svg {
    width: 0.875rem;
    height: 0.875rem;
}

.sidebar-user-label {
    flex-shrink: 0;
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-secondary);
    white-space: nowrap;
}

.sidebar-user .user-info {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--text-primary);
    font-size: 0.8125rem;
    font-weight: 500;
    line-height: 1.35;
}

.sidebar-footer-actions {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.sidebar-footer-actions .btn {
    flex: 1;
    min-width: 0;
}

.app-content {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    background: var(--bg-color);
}

.dashboard-main {
    flex: 1;
    width: 100%;
    max-width: 87.5rem;
    margin: 0 auto;
    padding: 1.5rem 2rem 2.5rem;
    box-sizing: border-box;
    transition: max-width 0.2s ease, padding 0.2s ease;
}

html.layout-wide .dashboard-main,
html.layout-wide .admin-container,
html.layout-wide .docs-article {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
}

html.layout-wide .docs-article {
    transition: max-width 0.2s ease, padding 0.2s ease;
}

.tabs {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    margin-bottom: 0;
    border-bottom: none;
}

.tab-btn {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    width: 100%;
    padding: 0.5rem 0.75rem;
    background: none;
    border: none;
    border-radius: var(--radius);
    cursor: pointer;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--text-secondary);
    text-align: left;
    transition: background 0.15s, color 0.15s;
}

.nav-icon {
    flex: 0 0 1rem;
    width: 1rem;
    height: 1rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: inherit;
}

.nav-icon svg,
.icon-sm svg,
.page-heading-icon svg,
.sidebar-brand-icon svg,
.login-icon svg,
.btn svg.lucide {
    width: 1rem;
    height: 1rem;
    stroke: currentColor;
    flex-shrink: 0;
}

.page-heading-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    font-size: 0;
}

.page-heading-icon svg {
    width: 1.25rem;
    height: 1.25rem;
    color: var(--primary-color);
}

.sidebar-brand-icon svg {
    width: 1rem;
    height: 1rem;
    color: var(--primary-color);
}

.login-icon svg {
    width: 1.5rem;
    height: 1.5rem;
    color: var(--primary-color);
}

.btn svg.lucide {
    margin-right: 0.125rem;
}

.sidebar-balance-line {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
    font-family: var(--font-mono);
    font-size: 0.75rem;
    color: var(--text-secondary);
}

.sidebar-balance-line .balance-icon {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 0.875rem;
    height: 0.875rem;
}

.sidebar-balance-line .balance-icon svg {
    width: 0.875rem;
    height: 0.875rem;
    opacity: 0.75;
}

.sidebar-balance-line .balance-text {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nav-label {
    flex: 1;
    min-width: 0;
}

.sidebar-back-link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.8125rem;
    color: var(--text-secondary);
    text-decoration: none;
    transition: color 0.15s;
}

.sidebar-back-link:hover {
    color: var(--primary-color);
}

.page-heading {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0;
}

.tab-btn:hover {
    color: var(--text-primary);
    background: var(--bg-secondary);
}

.tabs .tab-btn-link {
    display: flex;
    text-decoration: none;
    box-sizing: border-box;
    color: var(--text-secondary);
}

.tabs .tab-btn-link:hover {
    color: var(--text-primary);
}

/* Только для админов (класс вешает dashboard.js после /api/web/user-info) */
.tabs #dashboardAdminTabBtn.dashboard-admin-tab:not(.dashboard-admin-tab--visible) {
    display: none !important;
    visibility: hidden !important;
    position: absolute !important;
    width: 0 !important;
    height: 0 !important;
    overflow: hidden !important;
    pointer-events: none !important;
}
.tabs #dashboardAdminTabBtn.dashboard-admin-tab.dashboard-admin-tab--visible {
    display: flex !important;
    visibility: visible !important;
    position: static !important;
    width: 100% !important;
    height: auto !important;
    overflow: visible !important;
    pointer-events: auto !important;
}

.tab-btn.active {
    color: var(--primary-color);
    background: hsl(217, 91%, 60% / 0.15);
    border-bottom: none;
}

.tab-content {
    display: none;
}

.tab-content.active {
    display: block;
}

.section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
    position: relative;
}

.section-header h2 {
    font-size: 24px;
    color: var(--text-primary);
}

.section-header .btn {
    flex-shrink: 0;
    white-space: nowrap;
}

.section-header-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.info-box {
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: calc(var(--radius) + 4px);
    padding: 1.25rem;
    margin-bottom: 1.5rem;
    box-shadow: var(--shadow);
}

.info-box p {
    margin-bottom: 8px;
}

.info-box p:last-child {
    margin-bottom: 0;
}

.api-keys-list,
.users-list {
    display: grid;
    gap: 16px;
}

.key-card,
.ip-card,
.user-card {
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: calc(var(--radius) + 4px);
    padding: 1.25rem;
    box-shadow: var(--shadow);
}

.key-card-header,
.ip-card-header,
.user-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.key-card-header h3,
.ip-card-header h3,
.user-card-header h3 {
    font-size: 18px;
    color: var(--text-primary);
}

.key-value {
    background: var(--bg-secondary);
    padding: 12px;
    border-radius: 6px;
    font-family: 'Courier New', monospace;
    font-size: 14px;
    word-break: break-all;
    margin-bottom: 12px;
    color: var(--text-primary);
}

.key-meta,
.ip-meta,
.user-meta {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 12px;
    margin-bottom: 12px;
    font-size: 14px;
    color: var(--text-secondary);
}

.key-actions,
.ip-actions,
.user-actions {
    display: flex;
    gap: 8px;
    margin-top: 12px;
}

.loading {
    text-align: center;
    padding: 40px;
    color: var(--text-secondary);
}

/* Плавное появление контента */
@keyframes vsContentIn {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes vsLoadingPulse {
    0%, 100% { opacity: 0.5; }
    50% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .tab-content.active,
    .app-content,
    .vs-reveal,
    .vs-surface-reveal,
    .loading {
        animation: none !important;
    }
    .is-fading-out,
    .is-busy,
    .modal.active .modal-content {
        transition: none !important;
    }
}

.app-content {
    animation: vsContentIn 0.35s ease-out both;
}

.tab-content.active {
    animation: vsContentIn 0.3s ease-out both;
}

.vs-reveal,
.vs-surface-reveal {
    animation: vsContentIn 0.3s ease-out both;
}

.profile-content.is-fading-out,
.api-content.is-fading-out,
.statistics-content.is-fading-out,
#parsingServicesWrap.is-fading-out,
#parsingJobsWrap.is-fading-out,
#parsingPreviewBox.is-fading-out,
#usersList.is-fading-out,
#userDetailsContent.is-fading-out,
#userStatsModalContent.is-fading-out,
#checkerResultHtml.is-fading-out {
    opacity: 0;
    transition: opacity 0.16s ease;
}

.profile-content.is-busy,
.api-content.is-busy,
.statistics-content.is-busy {
    opacity: 0.55;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

.loading {
    animation: vsLoadingPulse 1.4s ease-in-out infinite;
}

.checkers-sub-panel:not([hidden]) {
    animation: vsContentIn 0.28s ease-out both;
}

.parsing-view:not([hidden]) {
    animation: vsContentIn 0.28s ease-out both;
}

.modal.active {
    animation: vsModalBackdropIn 0.22s ease-out both;
}

.modal.active .modal-content {
    animation: vsContentIn 0.28s ease-out both;
}

@keyframes vsModalBackdropIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

.empty-state {
    text-align: center;
    padding: 60px 20px;
    color: var(--text-secondary);
}

.empty-state h3 {
    font-size: 20px;
    margin-bottom: 8px;
}

.text-secondary {
    color: var(--text-secondary);
    font-size: 14px;
}

.profile-section {
    margin-bottom: 32px;
}

.profile-section h3,
.section-title-with-icon {
    font-size: 20px;
    color: var(--text-primary);
    margin-bottom: 16px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--border-color);
}

.section-title-with-icon,
.modal-header h3 {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.section-title-with-icon svg,
.modal-header h3 svg {
    width: 1.125rem;
    height: 1.125rem;
    color: var(--primary-color);
    flex-shrink: 0;
}

.checker-result-section-head .section-title-with-icon {
    margin: 0;
    padding: 0;
    border: none;
}

.profile-content {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.info-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 0;
    border-bottom: 1px solid var(--border-color);
}

.info-row:last-child {
    border-bottom: none;
}

.info-label {
    font-weight: 500;
    color: var(--text-secondary);
}

.info-value {
    color: var(--text-primary);
    font-weight: 400;
}

/* Modal */
.modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    z-index: 1000;
    align-items: center;
    justify-content: center;
}

.modal.active {
    display: flex;
}

.modal.modal--layer-stats {
    z-index: 1100;
}

.modal.modal--layer-log-detail {
    z-index: 1200;
}

.modal-content {
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: calc(var(--radius) + 4px);
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: var(--shadow-lg);
}

.modal-content.modal-content--wide {
    max-width: 960px;
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px;
    border-bottom: 1px solid var(--border-color);
}

.modal-header h3 {
    font-size: 20px;
    color: var(--text-primary);
}

.modal-close {
    background: none;
    border: none;
    font-size: 28px;
    color: var(--text-secondary);
    cursor: pointer;
    line-height: 1;
    padding: 0;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.modal-close:hover {
    color: var(--text-primary);
}

.modal-content .form {
    padding: 20px;
}

.modal-actions {
    display: flex;
    gap: 12px;
    justify-content: flex-end;
    padding: 20px;
    border-top: 1px solid var(--border-color);
}

.modal-actions .btn {
    width: auto;
}

/* Статистика: период и пагинация журнала */
.stats-period-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 12px;
    margin-bottom: 12px;
}
.stats-period-label {
    font-size: 14px;
    color: var(--text-secondary);
}
.stats-period-date {
    padding: 6px 10px;
    border-radius: 6px;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
    color: var(--text-primary);
    font-family: var(--font-stack);
    font-size: 14px;
}
.stats-period-sep {
    color: var(--text-secondary);
    font-size: 14px;
}
.stats-period-hint {
    font-size: 13px;
    margin-bottom: 12px;
    max-width: 820px;
}
.request-log-pager {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 16px;
    margin-bottom: 14px;
}
.request-log-pager-meta {
    font-size: 14px;
    color: var(--text-secondary);
}

/* Журнал API-запросов (статистика) — таблица построчно */
.request-log-table-wrap {
    overflow-x: auto;
    border-radius: 8px;
    border: 1px solid var(--border-color);
}
.request-log-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}
.request-log-table thead th {
    text-align: left;
    padding: 10px 12px;
    border-bottom: 1px solid var(--border-color);
    color: var(--text-secondary);
    font-weight: 600;
    white-space: nowrap;
    background: var(--bg-secondary);
}
.request-log-table tbody td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--border-color);
    vertical-align: top;
    color: var(--text-primary);
}
.request-log-table tbody tr:last-child td {
    border-bottom: none;
}
.request-log-row {
    cursor: pointer;
    transition: background 0.12s ease;
}
.request-log-row:hover {
    background: var(--info-bg);
}
.request-log-echo {
    font-family: var(--font-mono);
    font-size: 13px;
    word-break: break-word;
    max-width: min(420px, 48vw);
}
.request-log-checker {
    white-space: nowrap;
    font-weight: 500;
}
.request-log-time {
    white-space: nowrap;
    color: var(--text-secondary);
    font-size: 13px;
}
.request-log-status {
    font-family: var(--font-mono);
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
}
.request-log-status--ok {
    color: var(--success-color, #3fb950);
}
.request-log-status--err {
    color: var(--danger-color, #f85149);
}

.request-log-grid {
    display: grid;
    grid-template-columns: repeat(10, minmax(0, 1fr));
    gap: 8px;
}
@media (max-width: 1200px) {
    .request-log-grid {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }
}
@media (max-width: 800px) {
    .request-log-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}
@media (max-width: 480px) {
    .request-log-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
.request-log-chip {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    min-width: 0;
    padding: 8px 6px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
    cursor: pointer;
    font-family: var(--font-stack);
    transition: background 0.15s, border-color 0.15s;
}
.request-log-chip:hover {
    background: var(--info-bg);
    border-color: var(--primary-color);
}
.request-log-chip--ok {
    border-color: rgba(63, 185, 80, 0.45);
}
.request-log-chip--err {
    border-color: rgba(248, 81, 73, 0.45);
}
.request-log-chip-id {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 600;
    color: var(--text-primary);
    word-break: break-all;
    text-align: center;
}
.request-log-chip-meta {
    font-size: 10px;
    color: var(--text-secondary);
    text-align: center;
    line-height: 1.2;
}
.request-log-detail-modal {
    max-width: min(920px, 96vw);
    width: 96%;
    max-height: 88vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.request-log-detail-pre {
    margin: 0;
    padding: 16px 20px 20px;
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 1.45;
    white-space: pre-wrap;
    word-break: break-word;
    overflow: auto;
    flex: 1;
    min-height: 0;
    max-height: calc(88vh - 80px);
    color: var(--text-primary);
    background: var(--gh-canvas-inset);
}

.key-display {
    padding: 20px;
}

.key-display p {
    margin-bottom: 16px;
}

.key-box {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 16px;
    margin-bottom: 16px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
}

.key-box code {
    flex: 1;
    font-family: 'Courier New', monospace;
    font-size: 14px;
    word-break: break-all;
    color: var(--text-primary);
}

@media (max-width: 768px) {
    .app-shell {
        flex-direction: column;
    }
    .app-sidebar {
        width: 100%;
        flex: 0 0 auto;
        height: auto;
        min-height: 0;
        position: relative;
        border-right: none;
        border-bottom: 1px solid var(--border-color);
    }
    .sidebar-nav {
        flex-direction: row;
        flex-wrap: wrap;
        padding: 0.5rem 0.75rem;
    }
    .tab-btn {
        width: auto;
    }
    .sidebar-footer {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
    }
    .sidebar-footer-actions {
        margin-left: auto;
    }
}

@media (max-width: 768px) {
    .login-card {
        padding: 1.5rem 1.25rem;
    }

    .dashboard-main,
    .admin-container {
        padding: 1rem;
    }

    .section-header {
        flex-direction: column;
        gap: 16px;
        align-items: flex-start;
    }

    .key-meta,
    .ip-meta {
        grid-template-columns: 1fr;
    }
}

/* Переключатель темы (GitHub-style) */
.theme-toggle,
.layout-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    border: 1px solid var(--border-color);
    border-radius: var(--radius);
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
    flex-shrink: 0;
}

.theme-toggle:hover,
.layout-toggle:hover {
    background: var(--bg-secondary);
    color: var(--text-primary);
}

.layout-toggle svg {
    width: 1rem;
    height: 1rem;
}

.sidebar-footer-actions .theme-toggle,
.sidebar-footer-actions .layout-toggle {
    flex: 0 0 auto;
}
.theme-toggle svg {
    display: block;
}

/* Админ */
.admin-container {
    flex: 1;
    max-width: 87.5rem;
    width: 100%;
    margin: 0 auto;
    padding: 1.5rem 2rem 2.5rem;
    box-sizing: border-box;
    transition: max-width 0.2s ease, padding 0.2s ease;
}
.admin-page-title {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 0.25rem;
}
.admin-header {
    margin-bottom: 1.5rem;
}
.admin-header-top {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    margin-bottom: 8px;
}
.admin-header-brand {
    flex: 1;
    min-width: 0;
}
.admin-header-product {
    justify-content: flex-start;
    margin: 0 0 6px;
    font-size: 15px;
    font-weight: 600;
    color: var(--primary-color);
}
.admin-header h1 {
    font-size: 28px;
    color: var(--text-primary);
    margin: 0;
}
.admin-header > p {
    color: var(--text-secondary);
    margin-bottom: 8px;
}
.admin-header .back-link {
    display: inline-block;
    margin-top: 12px;
    color: var(--primary-color);
    text-decoration: none;
    font-weight: 500;
}
.admin-header .back-link:hover {
    text-decoration: underline;
}

/* API docs — общие токены --gh-* из :root */
.docs-page {
    margin: 0;
    min-height: 100vh;
    background: var(--bg-color);
    color: var(--text-primary);
    font-family: var(--font-stack);
    font-size: 16px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}
.docs-page a {
    color: var(--gh-accent-fg);
    text-decoration: none;
}
.docs-page a:hover {
    text-decoration: underline;
}
.docs-shell {
    display: flex;
    min-height: 100vh;
}
.docs-sidebar-toggle {
    display: none;
    position: fixed;
    top: 12px;
    left: 12px;
    z-index: 100;
    width: 40px;
    height: 40px;
    border: 1px solid var(--gh-border-default);
    border-radius: 6px;
    background: var(--gh-canvas-default);
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    color: var(--gh-fg-muted);
    box-shadow: var(--shadow);
}
.docs-sidebar-toggle:hover {
    border-color: var(--gh-fg-muted);
    background: var(--gh-canvas-subtle);
}
.docs-sidebar-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(1, 4, 9, 0.65);
    z-index: 90;
}
:root[data-theme="light"] .docs-sidebar-backdrop {
    background: rgba(31, 35, 40, 0.5);
}
.docs-sidebar-backdrop.is-open {
    display: block;
}
.docs-sidebar {
    width: 16rem;
    flex-shrink: 0;
    background: var(--card-bg);
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 0;
    align-self: flex-start;
    height: 100vh;
    overflow: hidden;
}
.docs-sidebar-inner {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

.docs-sidebar .sidebar-brand {
    flex-shrink: 0;
}

.docs-sidebar-footer {
    flex-shrink: 0;
}

.docs-sidebar-footer .sidebar-footer-actions {
    width: 100%;
}

.sidebar-footer-actions .sidebar-panel-link {
    flex: 1;
    min-width: 0;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    color: var(--btn-secondary-fg);
    white-space: nowrap;
}

.sidebar-footer-actions .sidebar-panel-link:hover {
    text-decoration: none;
    color: var(--text-primary);
    background: var(--bg-secondary);
}

.sidebar-footer-actions .sidebar-panel-link svg {
    color: currentColor;
}

.docs-page .sidebar-footer-actions .sidebar-panel-link,
.docs-page .sidebar-footer-actions .sidebar-panel-link:hover {
    color: var(--btn-secondary-fg);
}

.docs-page .sidebar-footer-actions .sidebar-panel-link:hover {
    color: var(--text-primary);
}

.docs-search-wrap {
    flex-shrink: 0;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--border-color);
    background: var(--card-bg);
}
.docs-search {
    width: 100%;
    padding: 5px 12px;
    font-size: 14px;
    line-height: 20px;
    color: var(--gh-fg-default);
    border: 1px solid var(--gh-border-default);
    border-radius: 6px;
    background: var(--gh-canvas-default);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
}
:root[data-theme="light"] .docs-search {
    box-shadow: inset 0 1px 0 rgba(208, 215, 222, 0.2);
}
.docs-search::placeholder {
    color: var(--gh-fg-muted);
}
.docs-search:focus {
    outline: none;
    border-color: var(--gh-accent-fg);
    box-shadow: 0 0 0 3px var(--focus-ring);
}
.docs-sidebar-nav {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 8px 12px 16px;
    -webkit-overflow-scrolling: touch;
}
.docs-nav-title {
    font-size: 12px;
    font-weight: 600;
    color: var(--gh-fg-muted);
    padding: 8px 8px 6px;
}
.docs-sidebar-nav ul {
    list-style: none;
    margin: 0;
    padding: 0 0 12px;
}
.docs-sidebar-nav li {
    margin: 0;
}
.docs-sidebar-nav a {
    display: block;
    padding: 6px 8px;
    font-size: 14px;
    line-height: 1.45;
    color: var(--gh-fg-default);
    text-decoration: none;
    border-radius: 6px;
    border: 1px solid transparent;
}
.docs-sidebar-nav a:hover {
    background: hsl(217, 91%, 60% / 0.1);
    color: var(--primary-color);
    text-decoration: none;
}
.docs-nav-endpoints code {
    font-family: var(--font-mono);
    font-size: 12px;
    font-weight: 500;
    background: var(--inline-code-bg);
    padding: 2px 6px;
    border-radius: 6px;
    color: var(--gh-fg-default);
}
.docs-nav-hint {
    font-size: 11px;
    color: var(--gh-fg-muted);
    font-weight: 400;
}
.docs-main {
    flex: 1;
    min-width: 0;
    background: var(--gh-canvas-default);
}
.docs-article {
    max-width: 980px;
    margin: 0 auto;
    padding: 32px 40px 64px;
    box-sizing: border-box;
    transition: max-width 0.2s ease, padding 0.2s ease;
}
.docs-article-header {
    margin-bottom: 32px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--gh-border-muted);
}
.docs-article-header h1 {
    font-size: 32px;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--gh-fg-default);
    margin: 0 0 12px;
    line-height: 1.25;
    border: none;
}
.docs-lead {
    font-size: 16px;
    color: var(--gh-fg-muted);
    line-height: 1.6;
    max-width: 68ch;
}
.docs-lead a {
    font-weight: 500;
}
.docs-section {
    margin-bottom: 40px;
    scroll-margin-top: 16px;
}
.docs-section h2 {
    font-size: 24px;
    font-weight: 600;
    color: var(--gh-fg-default);
    margin: 0 0 16px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--gh-border-muted);
    line-height: 1.3;
}
.docs-section h3 {
    font-size: 20px;
    font-weight: 600;
    margin: 24px 0 12px;
    color: var(--gh-fg-default);
}
.docs-section > p,
.docs-intro p {
    line-height: 1.6;
    margin-bottom: 12px;
    color: var(--gh-fg-default);
}
.docs-phone-checks-intro {
    margin-top: 28px;
}
.docs-section ul {
    margin-bottom: 16px;
    padding-left: 2em;
    line-height: 1.6;
    color: var(--gh-fg-default);
}
.docs-section ol {
    margin-bottom: 16px;
    padding-left: 2em;
    line-height: 1.6;
}
.docs-page p code,
.docs-page li code,
.docs-page .docs-lead code,
.docs-page td code {
    font-family: var(--font-mono);
    font-size: 85%;
    padding: 0.2em 0.4em;
    margin: 0;
    white-space: break-spaces;
    background-color: var(--inline-code-bg);
    border-radius: 6px;
}
.docs-table-wrap {
    overflow-x: auto;
    margin: 16px 0;
    border: 1px solid var(--gh-border-default);
    border-radius: 6px;
}
.docs-table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 14px;
}

/* Единая сетка колонок во всех таблицах документации */
.docs-table th:nth-child(1),
.docs-table td:nth-child(1) {
    width: 28%;
}

.docs-table th:nth-child(2),
.docs-table td:nth-child(2) {
    width: 22%;
}

.docs-table th:nth-child(3),
.docs-table td:nth-child(3) {
    width: 50%;
}

.docs-table td,
.docs-table tbody th {
    padding: 8px 12px;
    text-align: left;
    border-bottom: 1px solid var(--gh-border-muted);
    vertical-align: top;
    word-wrap: break-word;
    overflow-wrap: anywhere;
}

.docs-table thead th {
    background: var(--gh-canvas-subtle);
    font-weight: 600;
    color: var(--gh-fg-default);
    font-size: 14px;
    text-align: left;
    padding: 8px 12px;
    border-bottom: 1px solid var(--gh-border-default);
}

.docs-table tbody th[scope="row"] {
    background: var(--gh-canvas-subtle);
    font-weight: 600;
    font-size: 14px;
    color: var(--gh-fg-default);
    vertical-align: top;
}
.docs-table tr:last-child td,
.docs-table tr:last-child th {
    border-bottom: none;
}
.docs-inline-code {
    background: var(--gh-code-bg);
    color: var(--gh-fg-default);
    padding: 12px 16px;
    border-radius: 6px;
    overflow-x: auto;
    border: 1px solid var(--gh-border-default);
    margin: 12px 0 16px;
    font-size: 13px;
    font-family: var(--font-mono);
    line-height: 1.45;
}
.docs-inline-code code {
    color: var(--gh-fg-default);
    background: none;
    padding: 0;
    font-size: inherit;
}
.docs-table code {
    font-size: 13px;
    background: var(--inline-code-bg);
    padding: 2px 6px;
    border-radius: 6px;
}
.api-meta {
    font-size: 14px;
    color: var(--gh-fg-muted);
    margin-bottom: 16px;
    line-height: 1.6;
}
.api-meta a {
    font-weight: 500;
}
.docs-spaced-label {
    margin-top: 20px;
}
.method-doc {
    background: var(--gh-canvas-default);
    border: 1px solid var(--gh-border-default);
    border-radius: 6px;
    padding: 16px;
    margin-bottom: 16px;
    overflow: hidden;
}
.method-doc h3 {
    font-size: 16px;
    font-weight: 600;
    margin: 0 0 12px;
    color: var(--gh-fg-default);
    line-height: 1.4;
}
.method-key {
    font-family: var(--font-mono);
    font-size: 12px;
    background: var(--gh-code-bg);
    padding: 8px 12px;
    border-radius: 6px;
    margin: 0 0 12px;
    border: 1px solid var(--gh-border-default);
    word-break: break-all;
    line-height: 1.5;
    color: var(--gh-fg-default);
}
.method-doc .label {
    font-weight: 600;
    color: var(--gh-fg-muted);
    font-size: 12px;
    margin-bottom: 6px;
}
.method-doc ol.method-doc-steps,
.method-doc ul {
    margin: 0 0 12px;
    padding-left: 1.35rem;
    font-size: 14px;
    color: var(--gh-fg-default);
    line-height: 1.55;
}
.method-doc ol.method-doc-steps li,
.method-doc ul li {
    margin-bottom: 6px;
}
.method-doc ol.method-doc-steps li:last-child,
.method-doc ul li:last-child {
    margin-bottom: 0;
}
.method-doc pre {
    margin: 0 0 12px;
    background: var(--gh-code-bg);
    color: var(--gh-fg-default);
    padding: 16px;
    border-radius: 6px;
    overflow-x: auto;
    border: 1px solid var(--gh-border-default);
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 1.45;
}
.method-doc pre:last-child {
    margin-bottom: 0;
}
.method-doc pre code {
    background: none;
    padding: 0;
    font-size: inherit;
    line-height: inherit;
    color: inherit;
    white-space: pre-wrap;
    word-break: break-word;
}
.method-get .badge {
    display: inline-block;
    padding: 0 8px;
    font-size: 12px;
    font-weight: 500;
    line-height: 18px;
    border-radius: 2em;
    margin-right: 6px;
    vertical-align: middle;
    border: 1px solid var(--badge-get-border);
    background: var(--badge-get-bg);
    color: var(--badge-get-fg);
}
.method-post .badge {
    display: inline-block;
    padding: 0 8px;
    font-size: 12px;
    font-weight: 500;
    line-height: 18px;
    border-radius: 2em;
    margin-right: 6px;
    vertical-align: middle;
    border: 1px solid var(--badge-post-border);
    background: var(--badge-post-bg);
    color: var(--badge-post-fg);
}
.note {
    font-size: 14px;
    color: var(--gh-fg-muted);
    margin-top: 8px;
    line-height: 1.6;
}
.code-variants {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 12px;
}
.code-variant {
    border: 1px solid var(--gh-border-default);
    border-radius: 6px;
    background: var(--gh-canvas-default);
    overflow: hidden;
}
.code-variant > summary {
    cursor: pointer;
    list-style: none;
    padding: 8px 12px;
    font-weight: 600;
    font-size: 12px;
    color: var(--gh-fg-default);
    user-select: none;
    background: var(--gh-canvas-subtle);
    border-bottom: 1px solid transparent;
}
.code-variant[open] > summary {
    border-bottom-color: var(--gh-border-default);
}
.code-variant > summary::-webkit-details-marker {
    display: none;
}
.code-variant > summary::before {
    content: "";
    display: inline-block;
    width: 0;
    height: 0;
    border-left: 5px solid var(--gh-fg-muted);
    border-top: 4px solid transparent;
    border-bottom: 4px solid transparent;
    margin-right: 8px;
    vertical-align: middle;
    transition: transform 0.12s ease;
}
.code-variant[open] > summary::before {
    transform: rotate(90deg);
}
.code-variant > summary:hover {
    background: var(--gh-canvas-inset);
}
.code-variant pre {
    margin: 0;
    border: none;
    border-radius: 0;
    background: var(--gh-code-bg);
    color: var(--gh-fg-default);
    border-top: 1px solid var(--gh-border-default);
}
.code-variant pre code {
    color: var(--gh-fg-default);
    font-family: var(--font-mono);
    font-size: 12px;
}
@media (max-width: 900px) {
    .docs-sidebar-toggle {
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .docs-sidebar {
        position: fixed;
        left: 0;
        top: 0;
        z-index: 95;
        transform: translateX(-100%);
        transition: transform 0.2s ease;
        box-shadow: var(--shadow-lg);
    }
    .docs-sidebar.is-open {
        transform: translateX(0);
    }
    .docs-main {
        padding-top: 56px;
    }
    .docs-article {
        padding: 20px 16px 48px;
    }
    .docs-article-header h1 {
        font-size: 24px;
    }
}

/* Дашборд — вкладка «Чекеры» */
.checkers-lead {
    color: var(--text-secondary);
    font-size: 14px;
    line-height: 1.5;
    margin-bottom: 20px;
    max-width: 720px;
}
.checkers-form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px 16px;
    margin-bottom: 8px;
    align-items: start;
}

.checkers-form-grid .form-group {
    margin-bottom: 0;
}

.checkers-form-grid .form-group label {
    line-height: 1.35;
    margin-bottom: 6px;
}

.checkers-form-grid .form-group label .label-optional {
    font-weight: 400;
    color: var(--text-secondary);
    font-size: 0.8125rem;
}
.checker-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 8px;
}
.checker-phone-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 8px;
}
/* Кнопки с ценой снизу — стиль обычных .btn, без серого блока */
.btn.btn-with-price {
    flex-direction: column;
    align-items: center;
    gap: 3px;
    text-align: center;
    line-height: 1.25;
}
.btn-with-price .btn-with-price-row {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.btn-with-price .checker-action-btn-price {
    font-size: 11px;
    font-weight: 400;
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}
.btn-secondary.btn-with-price .checker-action-btn-price {
    color: var(--text-secondary);
}
.btn-primary.btn-with-price .checker-action-btn-price {
    color: inherit;
    opacity: 0.9;
}
.checker-action-btn-price--individual {
    color: var(--accent) !important;
    opacity: 1;
}
.parsing-bot-row .btn-with-price {
    width: 100%;
}
.checker-result-section-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}
.checker-result-section-head h3 {
    margin: 0;
}
.checker-result-head-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}
.checker-result-panes {
    margin-top: 4px;
    min-height: 0;
}
/* Полноэкранный просмотр отчёта */
.checker-result-panel:fullscreen,
.checker-result-panel:-webkit-full-screen {
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    padding: 20px;
    margin: 0;
    width: 100%;
    height: 100%;
    max-height: 100%;
    overflow: hidden;
    background: var(--bg-color);
}
.checker-result-panel:fullscreen .checker-result-section-head,
.checker-result-panel:-webkit-full-screen .checker-result-section-head {
    flex-shrink: 0;
}
.checker-result-panel:fullscreen .checker-result-status,
.checker-result-panel:-webkit-full-screen .checker-result-status {
    flex-shrink: 0;
}
.checker-result-panel:fullscreen .checker-result-panes,
.checker-result-panel:-webkit-full-screen .checker-result-panes {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    margin-top: 12px;
}
.checker-result-panel:fullscreen .checker-result-pane,
.checker-result-panel:-webkit-full-screen .checker-result-pane {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    margin-top: 0;
}
.checker-result-panel:fullscreen .checker-result-pane[hidden],
.checker-result-panel:-webkit-full-screen .checker-result-pane[hidden] {
    display: none !important;
}
.checker-result-panel:fullscreen .checker-result-html,
.checker-result-panel:-webkit-full-screen .checker-result-html {
    max-height: none;
    flex: 1;
    min-height: 0;
    overflow: auto;
}
.checker-result-panel:fullscreen .checker-result-pane--json .checker-result,
.checker-result-panel:-webkit-full-screen .checker-result-pane--json .checker-result {
    max-height: none;
    flex: 1;
    min-height: 0;
    overflow: auto;
}
.checker-view-toggle {
    display: inline-flex;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    overflow: hidden;
    background: var(--bg-color);
}
.checker-view-btn {
    padding: 8px 14px;
    font-size: 13px;
    font-family: var(--font-stack);
    border: none;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}
.checker-view-btn:hover {
    color: var(--text-primary);
    background: var(--bg-secondary);
}
.checker-view-btn[aria-selected="true"] {
    background: var(--primary-color);
    color: #fff;
}
.checker-view-btn[aria-selected="true"]:hover {
    background: var(--primary-hover);
    color: #fff;
}
.checker-result-status {
    margin-bottom: 12px;
    min-height: 1.5em;
    font-size: 13px;
    font-family: var(--font-mono);
}
.checker-result-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    border: 1px solid var(--border-color);
}
.checker-result-status-badge--ok {
    color: var(--success-color);
    background: var(--success-bg);
    border-color: rgba(63, 185, 80, 0.35);
}
.checker-result-status-badge--err {
    color: var(--danger-color);
    background: var(--error-bg);
    border-color: rgba(248, 81, 73, 0.35);
}
.checker-result-pane {
    margin-top: 4px;
}
.checker-result-html {
    margin: 0;
    padding: 16px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    background: var(--card-bg);
    color: var(--text-primary);
    font-size: 14px;
    line-height: 1.5;
    max-height: min(520px, 60vh);
    overflow: auto;
}
.checker-result-placeholder,
.checker-result-muted {
    color: var(--text-secondary);
    font-size: 14px;
    margin: 0;
}
.checker-result-blocks {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
/* Верхний уровень ответа: адаптивные колонки (не жёстко 33% — иначе вложенные сетки сжимаются до букв) */
.checker-result-html > .checker-result-blocks {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
/* Тяжёлые секции (финансы и т.п.) — на всю ширину, иначе ломают сетку */
.checker-result-html > .checker-result-blocks > .checker-result-block--fullwidth {
    grid-column: 1 / -1;
}
/* Содержимое financial без внешней карточки — на всю ширину корневой сетки */
.checker-result-html > .checker-result-blocks > .checker-result-blocks--financial-inner {
    grid-column: 1 / -1;
}
/* ИНН / СНИЛС / паспорта внутри financial (не под .checker-result-block-body) */
.checker-result-blocks--financial-inner > .checker-result-blocks--docrow {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    width: 100%;
    grid-auto-flow: row;
    direction: ltr;
}
@media (max-width: 960px) {
    .checker-result-blocks--financial-inner > .checker-result-blocks--docrow {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* auto-fit уже схлопывает колонки на узких экранах; отдельные брейкпоинты не нужны */
/* Вложенные списки блоков — снова одна колонка */
.checker-result-block-body .checker-result-blocks {
    display: flex;
    flex-direction: column;
}
/* Массив вкладов (deposits): три карточки в ряд; порядок — строками слева направо */
.checker-result-block-body .checker-result-blocks.checker-result-blocks--grid3 {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    justify-items: stretch;
    width: 100%;
    grid-auto-flow: row;
    direction: ltr;
}
@media (max-width: 960px) {
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--grid3 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 560px) {
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--grid3 {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* Поля одной карточки в массиве (вклад, авто, контакт …): по 3 в ряд, слева направо */
.checker-result-blocks.checker-result-blocks--keys-grid3 {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    justify-items: stretch;
    width: 100%;
    grid-auto-flow: row;
    direction: ltr;
}
.checker-result-blocks--keys-grid3 > .checker-result-block {
    min-width: 0;
    width: 100%;
    box-sizing: border-box;
}
/* Авто: result → вложенный keys-grid3 попадал в 1-ю колонку внешней сетки (~1/9 ширины, текст по букве) */
.checker-result-blocks.checker-result-blocks--keys-grid3 > .checker-result-blocks.checker-result-blocks--keys-grid3,
.checker-result-blocks--keys-grid3 > .checker-result-blocks.checker-result-blocks--keys-grid3 {
    grid-column: 1 / -1;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}
.checker-result-block-body .checker-result-blocks.checker-result-blocks--keys-grid3 {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    justify-items: stretch;
    width: 100%;
    grid-auto-flow: row;
    direction: ltr;
}
.checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--keys-grid3 {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    justify-items: stretch;
    width: 100%;
    grid-auto-flow: row;
    direction: ltr;
}
@media (max-width: 960px) {
    .checker-result-blocks.checker-result-blocks--keys-grid3,
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--keys-grid3,
    .checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--keys-grid3 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 560px) {
    .checker-result-blocks.checker-result-blocks--keys-grid3,
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--keys-grid3,
    .checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--keys-grid3 {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* Одно поле (часто только «Телефон» / одно поле авто) — на всю ширину ячейки, без двух пустых колонок */
.checker-result-blocks.checker-result-blocks--keys-grid3 > .checker-result-block:only-child,
.checker-result-block-body .checker-result-blocks.checker-result-blocks--keys-grid3 > .checker-result-block:only-child,
.checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--keys-grid3 > .checker-result-block:only-child {
    grid-column: 1 / -1;
}
/* Ровно два поля — две колонки на всю ширину, без «дырки» справа */
.checker-result-blocks.checker-result-blocks--keys-grid3:has(> .checker-result-block:nth-child(2):last-child),
.checker-result-block-body .checker-result-blocks.checker-result-blocks--keys-grid3:has(> .checker-result-block:nth-child(2):last-child),
.checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--keys-grid3:has(> .checker-result-block:nth-child(2):last-child) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
/* Доходы: список записей — строго по 3 карточки в ряд (отдельный класс, без конфликта с другими сетками) */
.checker-result-blocks.checker-result-blocks--incomes-array {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
.checker-result-block-body .checker-result-blocks.checker-result-blocks--incomes-array {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
.checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--incomes-array {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
@media (max-width: 960px) {
    .checker-result-blocks.checker-result-blocks--incomes-array,
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--incomes-array,
    .checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--incomes-array {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 560px) {
    .checker-result-blocks.checker-result-blocks--incomes-array,
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--incomes-array,
    .checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--incomes-array {
        grid-template-columns: minmax(0, 1fr);
    }
}
.checker-result-blocks--incomes-array.checker-result-blocks--array > .checker-result-array-item + .checker-result-array-item {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}
/* Массив loans: по два в ряд */
.checker-result-block-body .checker-result-blocks.checker-result-blocks--grid2 {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
@media (max-width: 560px) {
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--grid2 {
        grid-template-columns: minmax(0, 1fr);
    }
}
.checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--grid2 {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
@media (max-width: 560px) {
    .checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--grid2 {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* Доходы: поля одной записи — по 3 в ряд */
.checker-result-blocks.checker-result-blocks--incomes-keys {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
.checker-result-block-body .checker-result-blocks.checker-result-blocks--incomes-keys {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
.checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--incomes-keys {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
@media (max-width: 960px) {
    .checker-result-blocks.checker-result-blocks--incomes-keys,
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--incomes-keys,
    .checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--incomes-keys {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 560px) {
    .checker-result-blocks.checker-result-blocks--incomes-keys,
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--incomes-keys,
    .checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--incomes-keys {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* Массив contacts: ровно 3 карточки в ряд, колонки делят ширину поровну — без дыр от auto-fit */
.checker-result-block-body .checker-result-blocks.checker-result-blocks--grid5,
.checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--grid5,
.checker-result-blocks.checker-result-blocks--array.checker-result-blocks--grid5 {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    justify-items: stretch;
    width: 100%;
    grid-auto-flow: row;
    direction: ltr;
}
@media (max-width: 720px) {
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--grid5,
    .checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--grid5,
    .checker-result-blocks.checker-result-blocks--array.checker-result-blocks--grid5 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 420px) {
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--grid5,
    .checker-result-blocks--financial-inner .checker-result-blocks.checker-result-blocks--grid5,
    .checker-result-blocks.checker-result-blocks--array.checker-result-blocks--grid5 {
        grid-template-columns: minmax(0, 1fr);
    }
}
.checker-result-blocks--grid5 .checker-result-block-title {
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    hyphens: none;
}
.checker-result-blocks--grid5 .checker-result-block-body {
    word-break: normal;
}
.checker-result-blocks--grid5 .checker-result-value {
    white-space: nowrap;
    overflow-x: auto;
    max-width: 100%;
    display: block;
}
/* Фамилия, имя, отчество, дата — одна строка, четыре колонки, капс */
.checker-result-block-body .checker-result-blocks.checker-result-blocks--fio4,
.checker-result-html > .checker-result-blocks > .checker-result-blocks--fio4 {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
.checker-result-html > .checker-result-blocks > .checker-result-blocks--fio4 {
    grid-column: 1 / -1;
}
.checker-result-blocks--fio4 .checker-result-block-title,
.checker-result-blocks--fio4 .checker-result-value,
.checker-result-blocks--fio4 .checker-result-muted {
    text-transform: uppercase;
}
@media (max-width: 960px) {
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--fio4,
    .checker-result-html > .checker-result-blocks > .checker-result-blocks--fio4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 560px) {
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--fio4,
    .checker-result-html > .checker-result-blocks > .checker-result-blocks--fio4 {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* ИНН, СНИЛС, паспорта — одна строка (три колонки) */
.checker-result-block-body .checker-result-blocks.checker-result-blocks--docrow,
.checker-result-html > .checker-result-blocks > .checker-result-blocks--docrow {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    align-items: start;
    grid-auto-flow: row;
    direction: ltr;
}
.checker-result-html > .checker-result-blocks > .checker-result-blocks--docrow {
    grid-column: 1 / -1;
}
@media (max-width: 960px) {
    .checker-result-block-body .checker-result-blocks.checker-result-blocks--docrow,
    .checker-result-html > .checker-result-blocks > .checker-result-blocks--docrow {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* Массивы (контакты, авто, вклады): без «висячих» узких карточек в широких ячейках */
.checker-result-blocks.checker-result-blocks--array.checker-result-blocks--grid2,
.checker-result-blocks.checker-result-blocks--array.checker-result-blocks--grid3,
.checker-result-blocks.checker-result-blocks--array.checker-result-blocks--grid5 {
    width: 100%;
    justify-items: stretch;
    align-items: stretch;
}
.checker-result-blocks.checker-result-blocks--array > .checker-result-array-item {
    justify-self: stretch;
    align-self: stretch;
    width: 100%;
    max-width: 100%;
}
.checker-result-blocks.checker-result-blocks--array > .checker-result-array-item > * {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}
.checker-result-blocks.checker-result-blocks--array > .checker-result-array-item > .checker-result-block {
    width: 100%;
    max-width: 100%;
}
.checker-result-blocks--array > .checker-result-array-item + .checker-result-array-item {
    margin-top: 4px;
    padding-top: 12px;
    border-top: 1px dashed var(--border-color);
}
.checker-result-html > .checker-result-blocks--array > .checker-result-array-item + .checker-result-array-item {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}
.checker-result-blocks--grid3.checker-result-blocks--array > .checker-result-array-item + .checker-result-array-item {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}
/* Одна машина / мало элементов: не оставлять карточку в узкой первой колонке сетки repeat(3, 1fr) */
.checker-result-blocks.checker-result-blocks--array.checker-result-blocks--grid3 > .checker-result-array-item:only-child {
    grid-column: 1 / -1;
}
.checker-result-blocks--grid5.checker-result-blocks--array > .checker-result-array-item + .checker-result-array-item {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}
.checker-result-blocks--grid2.checker-result-blocks--array > .checker-result-array-item + .checker-result-array-item {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}
.checker-result-array-item {
    min-width: 0;
    box-sizing: border-box;
}
.checker-result-block {
    border: 1px solid var(--border-color);
    border-radius: 8px;
    background: var(--bg-secondary);
    overflow: hidden;
}
.checker-result-block--nest {
    background: var(--card-bg);
}
.checker-result-block-title {
    padding: 8px 12px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--text-secondary);
    border-bottom: 1px solid var(--border-color);
    background: rgba(88, 166, 255, 0.06);
}
.checker-result-block-body {
    padding: 12px 14px;
    word-break: break-word;
}
.checker-result-block-body .checker-result-blocks {
    gap: 10px;
}
.checker-result-value {
    font-family: var(--font-mono);
    font-size: 13px;
    white-space: pre-wrap;
}
.checker-result-list {
    margin: 0;
    padding-left: 1.25rem;
}
.checker-result-list li {
    margin-bottom: 6px;
}
.checker-result {
    margin: 0;
    padding: 16px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
    color: var(--text-primary);
    font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
    font-size: 12px;
    line-height: 1.45;
    max-height: min(480px, 55vh);
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
}
.checker-result-pre {
    margin: 0;
}
.checker-run-btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

/* Чекеры: подвкладки Проверки / Парсинг */
.checkers-subtabs {
    display: flex;
    gap: 8px;
    margin: 0 0 20px;
    flex-wrap: wrap;
}
.checkers-subtab-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
    color: var(--text-secondary);
    font-size: 14px;
    cursor: pointer;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.checkers-subtab-btn:hover {
    color: var(--text-primary);
    border-color: var(--accent);
}
.checkers-subtab-btn.active {
    background: var(--accent-muted, rgba(99, 102, 241, 0.15));
    border-color: var(--accent);
    color: var(--text-primary);
}
.checkers-subpanel[hidden] {
    display: none !important;
}

.parsing-inner-nav {
    display: flex;
    gap: 6px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.parsing-inner-btn {
    padding: 8px 14px;
    border-radius: 6px;
    border: 1px solid var(--border-color);
    background: transparent;
    color: var(--text-secondary);
    font-size: 13px;
    cursor: pointer;
}
.parsing-inner-btn.active {
    background: var(--bg-secondary);
    color: var(--text-primary);
    border-color: var(--accent);
}
.parsing-view[hidden] {
    display: none !important;
}
/* Кнопки парсинга — две в ряд, как в Telegram-боте */
.parsing-bot-buttons {
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-width: 560px;
}
.parsing-bot-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}
.parsing-bot-row--single {
    grid-template-columns: 1fr;
}
.parsing-preview-box {
    margin: 12px 0;
    padding: 14px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
}
.parsing-preview-list {
    margin: 0;
    padding-left: 1.2rem;
    font-size: 14px;
}
.parsing-preview-list li {
    margin-bottom: 6px;
}
.parsing-history-grid {
    display: grid;
    grid-template-columns: minmax(150px, 1.6fr) minmax(72px, 1fr) minmax(56px, 0.65fr) minmax(88px, 0.9fr) minmax(96px, 0.85fr);
    width: 100%;
    font-size: 13px;
    border: 1px solid var(--border-color);
    border-radius: 8px;
    overflow-x: auto;
}
.ph-cell {
    padding: 10px 12px;
    border-bottom: 1px solid var(--border-color);
    color: var(--text-primary);
    word-break: break-word;
    min-width: 0;
}
.ph-cell--head {
    background: var(--bg-secondary);
    color: var(--text-secondary);
    font-weight: 600;
    white-space: nowrap;
}
.ph-col-rows,
.ph-col-cost {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
.ph-col-file {
    text-align: center;
}
.ph-col-file .btn {
    white-space: nowrap;
}
/* последняя строка данных — убрать нижнюю границу у 5 ячеек */
.parsing-history-grid > .ph-cell:not(.ph-cell--head):nth-last-child(-n+5) {
    border-bottom: none;
}
.parsing-pagination {
    margin-top: 12px;
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
}
.parsing-jobs-heading {
    margin: 16px 0 8px;
    font-size: 14px;
    color: var(--text-secondary);
}
.parsing-jobs-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.parsing-job-item {
    padding: 12px 14px;
    margin-bottom: 8px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
    font-size: 13px;
}
.parsing-job-actions {
    margin-top: 8px;
}
.parsing-file-status {
    font-size: 13px;
    color: var(--text-secondary);
}
.parsing-file-status--progress {
    color: var(--accent);
    font-weight: 500;
}
