:root {
    --app-layer-intake-footer: 20;
    --app-layer-sticky-table-toolbar: 30;
    --app-layer-table-row-dropdown: 40;
    --app-layer-sticky-table-filter: 60;
    --app-layer-page-header-dropdown: 70;
    --app-layer-topbar: 80;
    --app-layer-navigation-feedback: 85;
    --app-layer-sidebar-backdrop: 90;
    --app-layer-sidebar: 100;
    --app-layer-review-backdrop: 110;
    --app-layer-review-panel: 120;
    --app-layer-modal-backdrop: 130;
    --app-layer-modal-panel: 140;
    --app-layer-nested-modal-backdrop: 150;
    --app-layer-nested-modal-panel: 160;
    --app-layer-notifications: 170;
}

/* 框架导航到 1024px 才切换为桌面侧栏；正文所有浮层均不得穿透移动抽屉。 */
.fi-topbar-ctn { z-index: var(--app-layer-topbar); }
.fi-no { z-index: var(--app-layer-notifications); }

@media (width < 64rem) {
    .fi-sidebar-close-overlay { z-index: var(--app-layer-sidebar-backdrop); }
    .fi-sidebar { z-index: var(--app-layer-sidebar); }
    .fi-main-sidebar { max-inline-size: 100vw; }
}

/* 关闭按钮与品牌链接并排放在移动侧栏内，两者都能直接点击。 */
.fi-topbar .fi-topbar-close-sidebar-btn { display: none; }
.fi-sidebar-header-logo-ctn { min-inline-size: 0; }
.fi-sidebar-header .app-mobile-sidebar-close {
    flex: none;
    margin-inline-start: 0.5rem;
    min-inline-size: max(44px, var(--app-control-touch, 44px));
    min-block-size: max(44px, var(--app-control-touch, 44px));
}

/* 普通弹窗保持在抽屉之上，同时保留 Filament 后续嵌套弹窗的顺序。 */
.fi-modal > .fi-modal-close-overlay:not(.submission-handover-overlay):not(.submission-history-overlay) {
    z-index: var(--app-layer-modal-backdrop);
}
.fi-modal > .fi-modal-window-ctn:not(:has(> .submission-handover-drawer)):not(:has(> .submission-history-drawer)) {
    z-index: var(--app-layer-modal-panel);
}
.fi-modal > .fi-modal-close-overlay.submission-handover-overlay,
.fi-modal > .fi-modal-close-overlay.submission-history-overlay { z-index: var(--app-layer-review-backdrop); }
.fi-modal > .fi-modal-window-ctn:has(> .submission-handover-drawer),
.fi-modal > .fi-modal-window-ctn:has(> .submission-history-drawer) { z-index: var(--app-layer-review-panel); }
.fi-modal.fi-modal-open ~ .fi-modal.fi-modal-open > .fi-modal-close-overlay {
    z-index: var(--app-layer-nested-modal-backdrop);
}
.fi-modal.fi-modal-open ~ .fi-modal.fi-modal-open > .fi-modal-window-ctn {
    z-index: var(--app-layer-nested-modal-panel);
}

/* 详情分区吸顶后仍属于正文，移动侧栏始终在其上方。 */
.submission-batch-section-nav {
    position: sticky;
    z-index: var(--app-layer-sticky-table-toolbar);
}

.app-sticky-table .fi-ta-content-ctn {
    max-height: min(72vh, calc(100vh - 13.5rem));
    overflow: auto;
    scrollbar-gutter: stable;
}

.app-sticky-table .fi-ta-header-toolbar {
    position: relative;
    z-index: var(--app-layer-sticky-table-toolbar);
}

/* 常驻筛选展开时高于工具栏，关闭后恢复正文层级。 */
:is(.instrument-ledger-table, .instrument-catalog-table, .fi-resource-equipment-locations, .institution-inspection-originals-table) .fi-ta-filters-above-content-ctn { position: relative; }
:is(.instrument-ledger-table, .instrument-catalog-table, .fi-resource-equipment-locations, .institution-inspection-originals-table) .fi-ta-filters-above-content-ctn:focus-within { z-index: var(--app-layer-sticky-table-filter); }
@media (max-width: 1023px) {
    .instrument-ledger-table .fi-ta-filters-header .fi-link {
        min-width: var(--app-control-touch, 44px);
        min-height: var(--app-control-touch, 44px);
        justify-content: center;
    }
}

.app-sticky-table .fi-ta-filters-dropdown,
.app-sticky-table .fi-ta-filters-dropdown .fi-dropdown,
.app-sticky-table .fi-ta-filters-dropdown .fi-dropdown-panel {
    z-index: var(--app-layer-sticky-table-filter) !important;
}

/* 页头动作属于跨区浮层，必须高于表格工具栏与表格内筛选浮层。 */
.fi-header-actions-ctn .fi-dropdown-panel {
    z-index: var(--app-layer-page-header-dropdown) !important;
}

/* 证书行菜单的 fixed 定位仍保留祖先层叠上下文；展开时同时抬高操作单元格和面板。 */
.certificate-review-table .fi-ta-cell:has(.fi-dropdown-trigger[aria-expanded="true"]),
.certificate-review-table .fi-ta-actions .fi-dropdown-panel {
    z-index: var(--app-layer-table-row-dropdown) !important;
}

.certificate-review-table .fi-ta-actions .fi-dropdown-panel {
    max-width: calc(100vw - 1.5rem);
    max-height: calc(100dvh - 1.5rem);
    overflow-y: auto;
}

/* 极窄屏的行按钮靠左，bottom-end 会把菜单推到屏外；与手机筛选一致，固定在视口底部。 */
@media (max-width: 40rem) {
    .certificate-review-table .fi-ta-actions .fi-dropdown-panel {
        inset: auto 0.75rem 0.75rem !important;
        width: auto;
    }
}

.app-sticky-table .fi-ta-filters-dropdown .fi-dropdown-panel.fi-scrollable {
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}

/* 低位触发器在矮视口中会把浮层向下撑出屏幕，缩短面板以保留完整操作区。 */
@media (max-height: 48rem) {
    .app-sticky-table .fi-ta-filters-dropdown .fi-dropdown-panel.fi-scrollable:has(.fi-ta-filters-header):not(.app-responsive-panel) {
        max-height: min(28rem, calc(100dvh - 10rem)) !important;
    }
}

@media (max-width: 40rem) {
    .app-sticky-table .fi-ta-filters-dropdown .fi-dropdown-panel.fi-scrollable:has(.fi-ta-filters-header):not(.app-responsive-panel) {
        position: fixed !important;
        inset: auto 0.75rem 0.75rem !important;
        width: auto !important;
        max-width: calc(100vw - 1.5rem) !important;
        max-height: min(32rem, calc(100dvh - 1.5rem)) !important;
    }
}

.app-sticky-table .fi-ta-filters-dropdown .fi-ta-filters-header {
    position: sticky;
    top: -1.5rem;
    z-index: 2;
    margin: -1.5rem -1.5rem 0;
    border-bottom: 1px solid rgb(229 231 235);
    background: var(--app-surface-overlay, rgb(255 255 255));
    padding: 1rem 1.5rem 0.75rem;
}

.app-sticky-table .fi-ta-filters-dropdown .fi-ta-filters-actions-ctn {
    position: sticky;
    bottom: -1.5rem;
    z-index: 2;
    margin: 0 -1.5rem -1.5rem;
    border-top: 1px solid rgb(229 231 235);
    background: var(--app-surface-overlay, rgb(255 255 255));
    padding: 0.75rem 1.5rem 1rem;
}

.dark .app-sticky-table .fi-ta-filters-dropdown .fi-ta-filters-header,
.dark .app-sticky-table .fi-ta-filters-dropdown .fi-ta-filters-actions-ctn {
    border-color: rgb(55 65 81);
    background: var(--app-surface-overlay, rgb(34 37 41));
}

.app-sticky-table .fi-ta-table thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--app-surface-control, rgb(250 250 249));
    box-shadow:
        none;
}

.app-sticky-table .fi-ta-table thead th:first-child {
    z-index: 2;
}

.app-sticky-table .fi-ta-table-stacked-header-cell {
    position: static;
}

.dark .app-sticky-table .fi-ta-table thead th {
    background: var(--app-surface-control, rgb(39 42 46));
    box-shadow:
        none;
}

/*
 * 异常纠偏的状态动作必须在宽表横向滚动时保持可达；手机端仍沿用卡片下方动作区。
 */
@media (min-width: 768px) {
    .incident-governance-table .fi-ta-actions-header-cell,
    .incident-governance-table .fi-ta-cell:has(.fi-ta-actions) {
        position: sticky;
        inset-inline-end: 0;
        width: 12.5rem;
        min-width: 12.5rem;
        background: var(--app-surface-card);
        box-shadow: none;
    }

    .incident-governance-table .fi-ta-actions-header-cell {
        z-index: 5;
    }

    .incident-governance-table .fi-ta-cell:has(.fi-ta-actions) {
        z-index: 3;
    }

    .incident-governance-table .fi-ta-actions {
        flex-wrap: nowrap;
        justify-content: flex-start;
        gap: 0.5rem;
        white-space: nowrap;
    }

    .incident-governance-table .fi-ta-row:nth-child(even) .fi-ta-cell:has(.fi-ta-actions) {
        background: var(--app-surface-control);
    }

    .incident-governance-table .fi-ta-row:hover .fi-ta-cell:has(.fi-ta-actions) {
        background: var(--app-surface-control);
    }

    .dark .incident-governance-table .fi-ta-actions-header-cell,
    .dark .incident-governance-table .fi-ta-cell:has(.fi-ta-actions) {
        background: var(--app-surface-card);
        box-shadow: none;
    }

    .dark .incident-governance-table .fi-ta-row:nth-child(even) .fi-ta-cell:has(.fi-ta-actions) {
        background: rgb(24, 31, 45);
    }

    .dark .incident-governance-table .fi-ta-row:hover .fi-ta-cell:has(.fi-ta-actions) {
        background: var(--app-surface-card);
    }
}

/*
 * 报检列表只保留批次、仪表、证书、协同和下一步五个扫描焦点。
 * 固定两层文字节奏，完整构成通过列提示查看，避免规格与零值进度撑高整行。
 */
@media (min-width: 768px) {
    .calibration-request-queue-table .fi-ta-table {
        min-width: 83.5rem;
        table-layout: fixed;
    }

    .calibration-request-queue-table .fi-ta-header-cell,
    .calibration-request-queue-table .fi-ta-cell {
        padding-block: 0.55rem !important;
        padding-inline: 0.625rem !important;
    }

    .calibration-request-queue-table .fi-ta-header-cell-request-no,
    .calibration-request-queue-table .fi-ta-cell-request-no {
        width: 15.5rem;
    }

    .calibration-request-queue-table .fi-ta-header-cell-instrument-composition,
    .calibration-request-queue-table .fi-ta-cell-instrument-composition {
        width: 17rem;
    }

    .calibration-request-queue-table .fi-ta-header-cell-certificate-progress,
    .calibration-request-queue-table .fi-ta-cell-certificate-progress {
        width: 10rem;
        font-variant-numeric: tabular-nums;
    }

    .calibration-request-queue-table .fi-ta-header-cell-collaboration-progress,
    .calibration-request-queue-table .fi-ta-cell-collaboration-progress {
        width: 12rem;
        font-variant-numeric: tabular-nums;
    }

    .calibration-request-queue-table .fi-ta-header-cell-next-action,
    .calibration-request-queue-table .fi-ta-cell-next-action {
        width: 16rem;
    }

    .calibration-request-queue-table .fi-ta-cell-next-action .fi-badge,
    .calibration-request-queue-table .fi-ta-cell-next-action .fi-ta-text-description {
        max-width: 100%;
        overflow-wrap: anywhere;
        white-space: normal;
    }

    .calibration-request-queue-table .fi-ta-header-cell-status-label,
    .calibration-request-queue-table .fi-ta-cell-status-label {
        width: 6rem;
    }

    .calibration-request-queue-table .fi-ta-actions-header-cell,
    .calibration-request-queue-table .fi-ta-cell:has(.fi-ta-actions) {
        width: 12rem;
        min-width: 12rem;
    }

    .calibration-request-queue-table .fi-ta-cell:has(.fi-ta-actions) {
        white-space: nowrap;
    }

    .calibration-request-queue-table .fi-ta-actions {
        flex-wrap: nowrap;
        gap: 0.5rem;
    }

    .calibration-request-queue-table :is(
        .fi-ta-cell-request-no,
        .fi-ta-cell-instrument-composition,
        .fi-ta-cell-certificate-progress,
        .fi-ta-cell-collaboration-progress
    ) :is(.fi-ta-text-item, .fi-ta-text-description) {
        display: block;
        min-width: 0;
        overflow: hidden;
        line-height: 1.25rem;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .calibration-request-queue-table .fi-ta-cell-request-no .fi-ta-text-item {
        overflow-wrap: anywhere;
        text-overflow: clip;
        white-space: normal;
    }

    .calibration-request-queue-table :is(
        .fi-ta-cell-request-no,
        .fi-ta-cell-instrument-composition,
        .fi-ta-cell-certificate-progress,
        .fi-ta-cell-collaboration-progress
    ) .fi-ta-text-description {
        margin-top: 0.1rem;
        line-height: 1.1rem;
    }

    .calibration-request-queue-table :is(
        .fi-ta-cell-certificate-progress,
        .fi-ta-cell-collaboration-progress
    ) .fi-ta-text-item {
        font-weight: 750;
    }
}

/*
 * 送检批次在桌面保留可读列宽。空间不足时只滚动表格内容区，避免数量摘要和操作文字逐字竖排。
 */
@media (min-width: 768px) {
    .submission-next-step-table .fi-ta-table {
        min-width: 52rem;
        table-layout: auto;
    }

    .submission-next-step-table .fi-ta-header-cell-batch-no,
    .submission-next-step-table .fi-ta-cell-batch-no {
        width: 12rem;
        min-width: 12rem;
        white-space: nowrap;
    }

    .submission-next-step-table .fi-ta-header-cell-next-step,
    .submission-next-step-table .fi-ta-cell-next-step {
        min-width: 20rem;
    }

    .submission-next-step-table .fi-ta-cell-next-step .fi-ta-text-item,
    .submission-next-step-table .fi-ta-cell-next-step .fi-ta-text-description {
        overflow-wrap: break-word;
        word-break: normal;
    }

    .submission-next-step-table .fi-ta-cell:has(.fi-ta-actions) {
        width: 15rem;
        min-width: 15rem;
        white-space: normal;
    }

    .submission-next-step-table .fi-ta-cell:has(.fi-ta-actions) .fi-ta-actions {
        max-width: 15rem;
        flex-wrap: wrap;
        align-items: flex-start;
        justify-content: flex-start;
    }

    .submission-next-step-table .fi-ta-cell:has(.fi-ta-actions) .fi-link,
    .submission-next-step-table .fi-ta-cell:has(.fi-ta-actions) .fi-btn {
        white-space: nowrap;
    }
}

@media (min-width: 1280px) {
    .submission-next-step-table .fi-ta-table {
        min-width: 92rem;
    }

    .submission-next-step-table .fi-ta-header-cell-workshop-name,
    .submission-next-step-table .fi-ta-cell-workshop-name,
    .submission-next-step-table .fi-ta-header-cell-certificate-progress,
    .submission-next-step-table .fi-ta-cell-certificate-progress {
        min-width: 10rem;
    }

    .submission-next-step-table .fi-ta-header-cell-instrument-composition,
    .submission-next-step-table .fi-ta-cell-instrument-composition {
        min-width: 18rem;
    }
}

/*
 * 两步送检向导在手机上可能高于视口。将该弹窗从顶部开始排布，确保标题、关闭按钮和首个字段始终可达。
 */
@media (max-width: 639px) {
    .fi-modal-window-ctn:has(> .submission-guided-receive-modal) {
        grid-template-rows: 0 auto 1fr;
        align-content: start;
        overflow-y: auto;
    }
}

.submission-flow {
    min-width: 0;
    margin-top: 1rem;
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-radius: var(--app-radius-card);
    background: var(--app-surface-control);
    padding: 1rem;
}

.submission-flow__rail {
    position: relative;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.375rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.submission-flow__rail::before {
    position: absolute;
    inset-block-start: 0.5rem;
    inset-inline: 7%;
    height: 2px;
    background: rgb(226, 232, 240);
    content: '';
}

.submission-flow__stage {
    position: relative;
    z-index: 1;
    display: grid;
    justify-items: center;
    min-width: 0;
    text-align: center;
}

.submission-flow__dot {
    width: 1rem;
    height: 1rem;
    border: 3px solid rgb(248, 250, 252);
    border-radius: 999px;
    background: rgb(203, 213, 225);
    box-shadow: none;
}

.submission-flow__stage strong {
    margin-top: 0.45rem;
    color: var(--app-text-muted);
    font-size: var(--app-font-caption);
    font-weight: 750;
    line-height: 1rem;
}

.submission-flow__stage small {
    margin-top: 0.125rem;
    color: var(--app-text-subtle);
    font-size: var(--app-font-caption);
    line-height: 1rem;
}

.submission-flow__stage.is-complete .submission-flow__dot {
    background: rgb(22, 163, 74);
    box-shadow: none;
}

.submission-flow__stage.is-current .submission-flow__dot {
    background: rgb(234, 88, 12);
    box-shadow: none;
}

.submission-flow__stage.is-current strong {
    color: rgb(154, 52, 18);
}

.submission-flow__stage.is-stopped .submission-flow__dot {
    background: rgb(220, 38, 38);
    box-shadow: none;
}

.submission-flow__panels {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(13rem, 1fr);
    gap: 0.75rem;
    margin-top: 1rem;
}

.submission-flow__next,
.submission-flow__certificate {
    display: grid;
    min-width: 0;
    gap: 0.25rem;
    border-radius: var(--app-radius-card);
    padding: 0.75rem 0.875rem;
}

.submission-flow__next {
    border: 1px solid rgb(254, 215, 170);
    background: rgb(255, 247, 237);
}

.submission-flow__next.is-terminal {
    border-color: rgb(226, 232, 240);
    background: var(--app-surface-card);
}

.submission-flow__certificate {
    border: 1px solid rgb(191, 219, 254);
    background: rgb(239, 246, 255);
}

.submission-flow__next span,
.submission-flow__certificate span {
    color: var(--app-text-subtle);
    font-size: var(--app-font-caption);
    font-weight: 700;
    line-height: 1rem;
}

.submission-flow__next strong,
.submission-flow__certificate strong {
    color: var(--app-text-strong);
    font-size: var(--app-font-body);
    font-weight: 800;
    line-height: 1.35rem;
    overflow-wrap: anywhere;
}

.submission-flow__next small,
.submission-flow__certificate small {
    color: var(--app-text-muted);
    font-size: var(--app-font-caption);
    line-height: 1.1rem;
}

.submission-flow__next small.is-blocked {
    color: rgb(185, 28, 28);
    font-weight: 700;
}

.dark .submission-flow {
    border-color: rgba(255, 255, 255, 0.1);
    background: var(--app-surface-card);
}

.dark .submission-flow__rail::before {
    background: rgb(51, 65, 85);
}

.dark .submission-flow__dot {
    border-color: rgb(15, 23, 42);
    background: rgb(71, 85, 105);
    box-shadow: none;
}

.dark .submission-flow__stage strong,
.dark .submission-flow__stage small {
    color: var(--app-text-subtle);
}

.dark .submission-flow__stage.is-current strong {
    color: rgb(253, 186, 116);
}

.dark .submission-flow__next {
    border-color: rgba(249, 115, 22, 0.35);
    background: rgba(249, 115, 22, 0.1);
}

.dark .submission-flow__next.is-terminal,
.dark .submission-flow__certificate {
    border-color: rgba(96, 165, 250, 0.25);
    background: rgba(59, 130, 246, 0.08);
}

.dark .submission-flow__next strong,
.dark .submission-flow__certificate strong {
    color: var(--app-text-strong);
}

.dark .submission-flow__next span,
.dark .submission-flow__next small,
.dark .submission-flow__certificate span,
.dark .submission-flow__certificate small {
    color: var(--app-text-strong);
}

@media (min-width: 768px) {
    .calibration-task-queue-table :is(.fi-ta-header-cell-instrument-identity, .fi-ta-cell-instrument-identity) {
        min-width: 11rem;
    }
}

@media (min-width: 768px) and (max-width: 1279px) {
    .calibration-task-queue-table :is(.fi-ta-header-cell-source, .fi-ta-cell-source) {
        display: none !important;
    }

    .submission-next-step-table .fi-ta-header-cell-workshop-name,
    .submission-next-step-table .fi-ta-header-cell-instrument-composition,
    .submission-next-step-table .fi-ta-header-cell-certificate-progress {
        display: none !important;
    }
}

@media (max-width: 767px) {
    .fi-ta-header-toolbar .app-table-current-filter-export {
        min-width: var(--app-control-touch, 44px);
        min-height: var(--app-control-touch, 44px);
    }

    .fi-main {
        padding-inline: 0.75rem !important;
    }

    .fi-page-content {
        gap: 0.75rem !important;
    }

    .fi-header {
        border-radius: 0 !important;
        padding: 0.25rem 0 0 !important;
    }

    .fi-header-heading {
        font-size: var(--app-font-page-title) !important;
        line-height: 1.75rem !important;
    }

    .fi-header-actions-ctn {
        margin-top: 0.875rem;
        width: 100%;
    }

    .fi-header-actions-ctn .fi-ac {
        justify-content: flex-start;
    }

    .fi-topbar {
        min-height: 3.5rem !important;
        padding-inline: 0.75rem !important;
    }

    .fi-topbar .fi-global-search-field .fi-input-wrp-suffix {
        display: none !important;
    }

    .fi-ta-header-toolbar {
        align-items: stretch !important;
        gap: 0.75rem !important;
        padding: 0.875rem !important;
    }

    .fi-ta-header-toolbar .fi-ta-search-field {
        min-width: 0 !important;
        width: 100% !important;
    }

    .fi-ta-header-toolbar .fi-input-wrp {
        min-height: 2.875rem;
        border-radius: var(--app-radius-control);
    }

    .fi-ta-header-toolbar .fi-ac {
        flex-wrap: wrap;
        justify-content: flex-start;
    }

    /* 没有表格操作时不保留空行，避免搜索区在窄屏被挤到下一行。 */
    .fi-resource-equipment-locations .fi-ta-header-toolbar > .fi-ta-actions:not(:has(> *)),
    .ui-messages .fi-ta-header-toolbar > .fi-ta-actions:not(:has(> *)) {
        display: none;
    }

    .ui-messages .fi-ta-header-toolbar > :has(> .fi-ta-search-field) {
        flex: 1 1 100%;
        min-width: 0;
        gap: 0.75rem;
    }

    .ui-messages .fi-ta-header-toolbar .fi-ta-search-field {
        flex: 1 1 0;
    }

    .ui-messages .fi-ta-header-toolbar .fi-ta-filters-dropdown {
        flex-shrink: 0;
    }

    /* 筛选按钮取消原生负边距，与搜索框等高并保留完整触控区域。 */
    .ui-messages .fi-ta-header-toolbar .fi-ta-filters-dropdown > .fi-dropdown-trigger > .fi-icon-btn {
        width: 2.875rem;
        height: 2.875rem;
        margin: 0;
    }

    /* 沿用原生宽度上限并居中贴底；两列选项增加纵向空间，矮屏仅滚动面板。 */
    .ui-messages .fi-ta-filters-dropdown .fi-dropdown-panel.fi-scrollable:has(.fi-ta-filters-header):not(.app-responsive-panel) {
        position: fixed !important;
        inset: auto 0.75rem max(0.75rem, env(safe-area-inset-bottom)) !important;
        width: calc(100vw - 1.5rem) !important;
        max-width: calc(100vw - 1.5rem) !important;
        max-height: calc(100dvh - 5rem - env(safe-area-inset-bottom)) !important;
        margin-inline: auto;
    }

    .ui-messages .fi-ta-filters-dropdown .fi-ta-filters-header {
        top: 0;
        padding-block: 0.75rem;
    }

    .ui-messages .fi-ta-filters-dropdown .fi-ta-filters-actions-ctn {
        bottom: 0;
        padding-block: 0.75rem;
    }

    /* 消息筛选的短选项改为两列，窄屏无需横向滚动即可看到全部选项。 */
    .ui-messages .fi-ta-filters-dropdown .fi-fo-toggle-buttons[data-app-filter-variant='segmented'] {
        display: grid;
        grid-auto-flow: row;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.5rem;
        overflow: visible;
        box-shadow: none;
    }

    .ui-messages .fi-ta-filters-dropdown .fi-fo-toggle-buttons[data-app-filter-variant='segmented'] > .fi-btn {
        min-width: 0;
        min-height: var(--app-control-touch, 44px);
        margin: 0;
        border: 1px solid var(--app-surface-line);
        border-radius: var(--app-radius-control);
        padding: 0.5rem 0.625rem;
        box-shadow: none;
    }

    .ui-messages .fi-ta-filters-dropdown .fi-fo-toggle-buttons-input:not(:checked) + .fi-btn {
        background: var(--app-surface-control);
        color: var(--app-text-strong);
    }

    .ui-messages .fi-ta-filters-dropdown .fi-fo-toggle-buttons[data-app-filter-variant='segmented'] > .fi-fo-toggle-buttons-input:not(:checked) + .fi-btn:hover {
        background: var(--app-surface-card);
        color: var(--app-text-strong);
    }

    .ui-messages .fi-ta-filters-dropdown .fi-fo-toggle-buttons-input:checked + .fi-btn {
        border-color: var(--app-accent-strong);
    }

    .ui-messages .fi-ta-filters-dropdown .fi-fo-toggle-buttons-input:focus-visible + .fi-btn {
        outline: 2px solid var(--app-accent-strong);
        outline-offset: 2px;
    }

    .ui-messages .fi-ta-filters-dropdown .fi-fo-field-label:has(> .fi-checkbox-input) {
        align-items: center;
        width: 100%;
        min-height: var(--app-control-touch, 44px);
    }

    /* 整行 label 保留 44px 点击高度，勾选框只恢复正常视觉尺寸。 */
    .ui-messages .fi-ta-filters-dropdown .fi-checkbox-input {
        flex-shrink: 0;
        width: 1.25rem;
        height: 1.25rem;
        min-width: 1.25rem;
        min-height: 1.25rem;
        margin: 0;
        border: 1px solid var(--app-text-subtle);
        outline: none;
        outline-offset: 2px;
        background-origin: border-box;
        background-clip: border-box;
    }

    .ui-messages .fi-ta-filters-dropdown .fi-checkbox-input:focus-visible {
        outline: 2px solid var(--app-accent-strong);
    }

    .ui-messages .fi-ta-filters-header .fi-link {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: var(--app-control-touch, 44px);
        min-height: var(--app-control-touch, 44px);
    }

    .ui-messages .fi-ta-filters-header > div {
        display: flex;
        align-items: center;
    }

    .ui-messages .fi-ta-filters-header .fi-link-label {
        align-self: center;
    }

    .ui-messages .fi-ta-filters-actions-ctn .fi-btn {
        width: 100%;
        min-height: var(--app-control-touch, 44px);
    }

    /* 列设置沿用原生面板与动作，手机端固定在视口内，仅滚动列清单。 */
    .app-sticky-table .fi-ta-col-manager-dropdown .fi-dropdown-panel {
        position: fixed !important;
        inset: auto 0.75rem max(0.75rem, env(safe-area-inset-bottom)) !important;
        width: auto !important;
        max-width: calc(100vw - 1.5rem) !important;
        max-height: calc(100dvh - 5rem - env(safe-area-inset-bottom)) !important;
        overflow: hidden;
    }

    .app-sticky-table .fi-ta-col-manager-dropdown .fi-ta-col-manager {
        display: flex;
        flex-direction: column;
        max-height: inherit;
    }

    .app-sticky-table .fi-ta-col-manager-dropdown .fi-ta-col-manager-header,
    .app-sticky-table .fi-ta-col-manager-dropdown .fi-ta-col-manager-actions-ctn {
        flex-shrink: 0;
    }

    .app-sticky-table .fi-ta-col-manager-dropdown .fi-ta-col-manager-items {
        min-height: 0;
        overflow-y: auto;
        overscroll-behavior: contain;
    }

    .app-sticky-table .fi-ta-content-ctn {
        max-height: none;
        overflow: visible;
    }

    .app-sticky-table .fi-ta-header-toolbar {
        z-index: auto;
    }

    .app-sticky-table .fi-ta-filters-dropdown,
    .app-sticky-table .fi-ta-filters-dropdown .fi-dropdown,
    .app-sticky-table .fi-ta-filters-dropdown .fi-dropdown-panel {
        z-index: 20 !important;
    }

    .app-sticky-table .fi-ta-table thead th {
        position: static;
        box-shadow: none;
    }

    .app-mobile-card-table .fi-ta-table {
        border-collapse: separate;
        border-spacing: 0 0.5rem;
    }

    .app-mobile-card-table .fi-ta-row {
        background: transparent !important;
        box-shadow: none !important;
    }

    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:not(.app-mobile-summary-cell):not(.fi-ta-selection-cell):not(:has(.fi-ta-actions)) {
        display: none !important;
    }

    .app-mobile-card-table .app-mobile-summary-header,
    .app-mobile-card-table .app-mobile-summary-cell .fi-ta-cell-label {
        display: none !important;
    }

    .app-mobile-card-table .app-mobile-summary-cell {
        display: block !important;
        padding: 0 !important;
        border: 0 !important;
        background: transparent !important;
    }

    .app-mobile-card-table .app-mobile-summary-cell .fi-ta-cell-content,
    .app-mobile-card-table .app-mobile-summary-cell .fi-ta-col {
        display: block;
        width: 100%;
    }

    /* 整行就是一张卡片：信息与操作共用紧凑行框，保持 44px 触控范围。 */
    .app-mobile-card-table .fi-ta-row {
        position: relative;
        overflow: hidden;
        padding: 0.75rem 0.875rem 0.5rem;
        border: 1px solid var(--app-surface-line, rgb(229 229 229)) !important;
        border-radius: var(--app-radius-card, 12px) !important;
        background: var(--app-surface-card, rgb(255 255 255)) !important;
    }

    .app-mobile-card-table .fi-ta-selection-cell {
        position: absolute;
        z-index: 4;
        inset-block-start: 0.35rem;
        inset-inline-start: 0.35rem;
        display: flex !important;
        width: var(--app-control-touch);
        padding: 0 !important;
        border: 0 !important;
        background: transparent !important;
    }

    .app-mobile-card-table .fi-ta-row:has(.fi-ta-selection-cell) .app-mobile-card {
        padding-inline-start: 2.5rem;
    }

    .app-mobile-card-table .fi-ta-selection-indicator {
        position: sticky;
        z-index: 15;
        inset-block-end: 0.75rem;
        margin: 0.5rem 0.75rem;
        border: 1px solid rgb(254 215 170);
        border-radius: var(--app-radius-control);
        background: var(--app-tone-warning-bg);
        box-shadow: none;
    }

    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) {
        display: block;
        margin: 0.25rem 0 0;
        padding: 0 !important;
        border-top: 0 !important;
        background: transparent;
    }

    /* 动作紧随事项并按内容换行，不再为首个动作单独撑出整行。 */
    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-ta-actions {
        flex-wrap: wrap;
        justify-content: flex-start;
        gap: 0.5rem;
    }

    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-ta-actions > :first-child {
        flex: 0 1 auto;
        min-width: 0;
    }

    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-ta-actions > :first-child .fi-dropdown-trigger,
    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-ta-actions > :first-child:is(.fi-btn, .fi-link),
    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-ta-actions > :first-child .fi-dropdown-trigger > :is(.fi-btn, .fi-link) {
        width: auto;
        justify-content: center;
    }

    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-link,
    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-btn {
        min-height: var(--app-control-touch);
        border: 1px solid var(--app-surface-line, rgb(229 229 229));
        border-radius: var(--app-radius-control, 8px);
        padding: 0.375rem 0.75rem;
        background: var(--app-surface-card, rgb(255 255 255));
        color: var(--app-text-strong, rgb(28 25 23));
    }

    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-btn.fi-color-primary {
        border-color: transparent;
        background: var(--color-amber-400, #fbbf24);
        color: rgb(28 25 23);
    }

    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-btn.fi-color-primary .fi-icon {
        color: rgb(28 25 23);
    }

    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-icon-btn {
        width: var(--app-control-touch);
        height: var(--app-control-touch);
        border: 1px solid var(--app-surface-line, rgb(229 229 229));
        border-radius: var(--app-radius-control, 8px);
    }

    /* Filament 的链接文字默认按基线对齐；卡片操作撑高后需与图标一起垂直居中。 */
    .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-link > .fi-link-label {
        align-self: center;
    }

    .app-mobile-card {
        border: 0;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
        padding: 0;
    }

    .app-mobile-card__header {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 0.375rem 0.75rem;
    }

    .app-mobile-card__main {
        min-width: 0;
    }

    .app-mobile-card__eyebrow {
        margin: 0 0 0.25rem;
        color: var(--app-text-subtle);
        font-size: var(--app-font-caption);
        font-weight: 700;
        line-height: 1rem;
    }

    .app-mobile-card__title {
        margin: 0;
        color: var(--app-text-strong, rgb(28 25 23));
        font-size: var(--app-font-section);
        font-weight: 600;
        line-height: 1.45rem;
        overflow-wrap: anywhere;
    }

    .app-mobile-card__subtitle {
        margin: 0.25rem 0 0;
        color: var(--app-text-muted);
        font-size: var(--app-font-body);
        line-height: 1.25rem;
        overflow-wrap: anywhere;
    }

    .app-mobile-card__badge {
        flex: 0 0 auto;
        border-radius: var(--app-radius-badge, 6px);
        border: 1px solid rgba(15, 23, 42, 0.08);
        background: var(--app-surface-control);
        color: var(--app-text-muted);
        font-size: var(--app-font-caption);
        font-weight: 600;
        line-height: 1rem;
        padding: 0.25rem 0.5rem;
        white-space: normal;
        overflow-wrap: anywhere;
        max-width: 100%;
    }

    .app-mobile-card__header > .app-mobile-card__badge { max-width: 48%; }

    .app-mobile-card__status-row {
        display: flex;
        justify-content: flex-start;
        margin-top: 0.5rem;
    }

    .app-mobile-card__status-row--business-state {
        flex-wrap: wrap;
        gap: 0.375rem;
    }

    .app-mobile-card__status-row--business-state .app-mobile-card__badge {
        max-width: 100%;
        white-space: normal;
        overflow-wrap: anywhere;
    }

    .app-mobile-card__badge.is-success {
        border-color: rgb(187, 247, 208);
        background: rgb(240, 253, 244);
        color: rgb(22, 101, 52);
    }

    .app-mobile-card__badge.is-warning {
        border-color: var(--app-tone-warning-line, rgb(254 215 170));
        background: var(--app-tone-warning-bg, rgb(255 247 237));
        color: var(--app-tone-warning, rgb(194 65 12));
    }

    .app-mobile-card__badge.is-danger {
        border-color: rgb(254, 202, 202);
        background: rgb(254, 242, 242);
        color: rgb(153, 27, 27);
    }

    .app-mobile-card__badge.is-info {
        border-color: rgb(191, 219, 254);
        background: rgb(239, 246, 255);
        color: rgb(30, 64, 175);
    }

    .app-mobile-card__meta {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.375rem 0.75rem;
        margin-top: 0.5rem;
    }

    .app-mobile-card__meta-item {
        min-width: 0;
    }

    .app-mobile-card__meta-item--full {
        grid-column: 1 / -1;
    }

    .app-mobile-card__label {
        display: block;
        color: var(--app-text-subtle);
        font-size: var(--app-font-caption);
        font-weight: 700;
        line-height: 1rem;
    }

    .app-mobile-card__value {
        display: block;
        margin-top: 0.125rem;
        color: var(--app-text-strong);
        font-size: 0.925rem;
        font-weight: 650;
        line-height: 1.35rem;
        overflow-wrap: anywhere;
        white-space: normal;
    }

    .app-mobile-card__value.is-empty {
        color: var(--app-text-subtle);
        font-weight: 400;
    }

    .app-mobile-card__note {
        margin-top: 0.5rem;
        border-top: 1px solid rgba(15, 23, 42, 0.08);
        padding-top: 0.5rem;
        color: var(--app-text-muted);
        font-size: var(--app-font-secondary);
        line-height: 1.25rem;
        overflow-wrap: anywhere;
    }

    .app-mobile-card__progress {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        margin-top: 0.5rem;
    }

    .app-mobile-card__progress-track {
        flex: 1;
        height: 0.375rem;
        overflow: hidden;
        border-radius: 999px;
        background: rgb(226, 232, 240);
    }

    .app-mobile-card__progress-bar {
        display: block;
        height: 100%;
        border-radius: inherit;
        background: rgb(22, 163, 74);
    }

    .certificate-import-table .fi-ta-record .fi-ta-record-content-ctn {
        padding: 0.625rem 0.875rem;
        gap: 0.25rem;
    }

    .certificate-import-table .fi-ta-record .fi-ta-actions {
        gap: 0.5rem;
        flex-wrap: wrap;
    }

    .certificate-import-table .fi-ta-record .fi-ta-actions :is(.fi-link, .fi-btn, .fi-icon-btn) {
        display: inline-flex;
        align-items: center;
        min-width: var(--app-control-touch);
        min-height: var(--app-control-touch);
    }

    .app-mobile-card__title a,
    .app-mobile-card details a {
        display: inline-flex;
        align-items: center;
        min-width: var(--app-control-touch);
        min-height: var(--app-control-touch);
    }

    .app-mobile-card > details > summary {
        min-height: var(--app-control-touch);
        align-content: center;
        cursor: pointer;
        color: var(--app-text-muted);
        font-size: var(--app-font-secondary);
    }

    .app-mobile-card > details > summary:focus-visible {
        outline: 2px solid currentColor;
        outline-offset: 2px;
        border-radius: var(--app-radius-control);
    }

    .app-mobile-card__line {
        margin-top: 0.375rem;
        color: var(--app-text-muted);
        font-size: var(--app-font-body);
        line-height: 1.35rem;
        overflow-wrap: anywhere;
    }

    .app-mobile-card__line.is-danger { color: var(--app-tone-danger, #b91c1c); }
    .app-mobile-card__line.is-warning { color: var(--app-tone-warning, #c2410c); }

    .submission-flow.is-compact {
        margin-top: 0.5rem;
        padding: 0.5rem;
    }

    .submission-flow__rail {
        gap: 0.125rem;
    }

    .submission-flow__stage strong {
        font-size: var(--app-font-caption);
        letter-spacing: -0.02em;
    }

    .submission-flow.is-compact .submission-flow__stage small {
        display: none;
    }

    .submission-flow__panels {
        grid-template-columns: minmax(0, 1fr);
        margin-top: 0.875rem;
    }

    .submission-flow.is-compact .submission-flow__panels { margin-top: 0; gap: 0.5rem; }
    .submission-flow.is-compact .submission-flow__next,
    .submission-flow.is-compact .submission-flow__certificate { padding: 0.5rem 0.625rem; }

    /* 深色下只给次要按钮加浅底；主操作保持实心 Amber + 深色字，避免与卡片底色同化。 */
    .dark .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-link,
    .dark .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-btn:not(.fi-color-primary) {
        background: color-mix(in srgb, var(--app-surface-card) 6%, transparent);
    }

    .dark .app-mobile-card-table .fi-ta-row > .fi-ta-cell:has(.fi-ta-actions) .fi-btn.fi-color-primary {
        background: var(--color-amber-400, #fbbf24);
        color: rgb(28 25 23);
    }

    .dark .app-mobile-card__title,
    .dark .app-mobile-card__value {
        color: var(--app-text-strong);
    }

    .dark .app-mobile-card__subtitle,
    .dark .app-mobile-card__note,
    .dark .app-mobile-card__value.is-empty {
        color: var(--app-text-subtle);
    }

    .dark .app-mobile-card__eyebrow,
    .dark .app-mobile-card__label {
        color: var(--app-text-subtle);
    }
}

@media (min-width: 768px) {
    .app-mobile-card-table .app-mobile-summary-header,
    .app-mobile-card-table .app-mobile-summary-cell {
        display: none !important;
    }
}

/* 编号规则复用原生单元格；窄屏保留来源提示，状态只展示，编辑和设备链接分别命中。 */
@media (max-width: 639px) {
    .factory-number-rule-table .fi-ta-row:not(.fi-ta-group-header-row):not(.fi-collapsed) {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas: "name active" "code actions" "source count";
        align-items: center;
        column-gap: 0.75rem;
        padding: 0.25rem 1rem 0.5rem;
    }

    .factory-number-rule-table .fi-ta-row > .fi-ta-cell {
        width: auto;
        min-width: 0;
        padding: 0;
    }

    .factory-number-rule-table .fi-ta-cell .fi-ta-text {
        padding: 0;
    }

    .factory-number-rule-table .fi-ta-cell-label {
        display: none;
    }

    .factory-number-rule-table .fi-ta-cell-name { grid-area: name; }
    .factory-number-rule-table .fi-ta-cell-code { grid-area: code; }
    .factory-number-rule-table .fi-ta-cell-source-label { grid-area: source; }
    .factory-number-rule-table .fi-ta-cell-is-active { grid-area: active; justify-self: end; }
    .factory-number-rule-table .fi-ta-cell:has(.fi-ta-actions) { grid-area: actions; justify-self: end; }

    .factory-number-rule-table .fi-ta-cell-name .fi-ta-col {
        display: flex;
        align-items: center;
        min-height: 44px;
    }

    .factory-number-rule-table .fi-ta-cell-name .fi-ta-text-item {
        overflow-wrap: anywhere;
        font-weight: 600;
    }

    .factory-number-rule-table :is(.fi-ta-cell-instruments-count a, .fi-ta-actions .fi-link) {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 44px;
        min-height: 44px;
    }

    .factory-number-rule-table .fi-ta-cell-instruments-count {
        grid-area: count;
        display: flex;
        align-items: center;
        justify-self: end;
        gap: 0.25rem;
    }

    .factory-number-rule-table .fi-ta-cell-code .fi-ta-text-item {
        color: var(--app-text-subtle, rgb(107 114 128));
        font-size: var(--app-font-caption, 12px);
        line-height: 20px;
        overflow-wrap: anywhere;
    }

    .factory-number-rule-table .fi-ta-cell-source-label .fi-ta-text-item {
        font-size: var(--app-font-caption, 12px);
        line-height: 20px;
        overflow-wrap: anywhere;
    }
}

/* 连续证书复核：高频切换不加运动，桌面常驻与窄屏抽屉共用同一表单。 */
.crw { --crw-line: var(--app-surface-line, #e5e7eb); --crw-surface: var(--app-surface-card, #fff); --crw-muted: var(--app-text-subtle, #667085); --crw-text: var(--app-text-strong, #1f2937); color: var(--crw-text); scroll-margin-top: 64px; }
.dark .crw { --crw-line: var(--app-surface-line, #374151); --crw-surface: var(--app-surface-card, #18181b); --crw-muted: var(--app-text-subtle, #a1a1aa); --crw-text: var(--app-text-strong, #f4f4f5); }
.crw-heading, .crw-panel-heading, .crw-panel-footer { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.crw-heading { margin-bottom: 14px; }
.crw-heading h2 { font-size: 1.125rem; font-weight: 650; }
@media (min-width: 1024px) { .crw-heading h2 { display: none; } }
.crw-heading p, .crw-source { font-size: var(--app-font-secondary); color: var(--crw-muted); margin-top: 4px; }
.crw a { color: light-dark(#9a4c05, #fbbf24); text-decoration: underline; text-underline-offset: 3px; }
.crw-results { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 20px; padding: 12px 16px; border: 1px solid var(--crw-line); border-radius: var(--app-radius-card); font-size: var(--app-font-secondary); margin-bottom: 14px; }
.crw-results span { color: var(--crw-muted); }
.crw-results [data-status="conflict"] { color: light-dark(#b42318, #fda29b); }
.crw-feedback { padding: 10px 14px; background: light-dark(#fff9e8, #322515); border-radius: var(--app-radius-card); margin-bottom: 12px; font-size: .875rem; }
.crw-layout { display: grid; grid-template-columns: minmax(255px, .85fr) minmax(0, 1.5fr); gap: 20px; align-items: start; }
.crw-list { border: 1px solid var(--crw-line); border-radius: var(--app-radius-card); background: var(--crw-surface); overflow: hidden; }
.crw-list-item { display: flex; align-items: start; gap: 10px; padding: 15px 14px; width: 100%; text-align: left; border-bottom: 1px solid var(--crw-line); min-height: 72px; }
.crw-list-item:last-child { border-bottom: 0; }
.crw-list-item.is-current { background: light-dark(#fff7e5, #3b2b15); box-shadow: none; }
.crw-list-item > span:nth-child(2) { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.crw-list-item strong { display: block; font-size: .875rem; }
.crw-list-item small { display: block; color: var(--crw-muted); margin-top: 6px; font-size: var(--app-font-caption); line-height: 1.5; }
.crw-list-item em { font-size: var(--app-font-caption); font-style: normal; color: var(--crw-muted); white-space: nowrap; }
.crw-list-index { font-size: var(--app-font-caption); color: var(--crw-muted); min-width: 18px; font-variant-numeric: tabular-nums; }
.crw-panel { border: 1px solid var(--crw-line); border-radius: var(--app-radius-card); background: var(--crw-surface); min-width: 0; overflow: auto; max-height: calc(100dvh - 155px); position: sticky; top: 80px; }
.crw-panel-heading { padding: 14px 18px; position: sticky; top: 0; background: var(--crw-surface); border-bottom: 1px solid var(--crw-line); z-index: 2; }
.crw-panel-body { padding: 16px 18px 24px; }
.crw-panel .certificate-evidence { margin: 10px 0 18px; }
.crw-panel .certificate-evidence__body { min-height: 200px; }
.crw-panel .certificate-pdf-viewer { height: 420px; min-height: 250px; }
.crw-comparison { margin: 16px 0; font-size: var(--app-font-secondary); }
.crw-comparison summary { cursor: pointer; padding: 10px 0; font-weight: 600; }
.crw-panel-footer { padding: 14px 18px; border-top: 1px solid var(--crw-line); background: var(--crw-surface); position: sticky; bottom: 0; z-index: 2; }
.crw-panel-footer > button, .crw-mobile-close, .crw-dirty-confirm button, .crw-errors button { min-height: 44px; padding: 8px 12px; border: 1px solid var(--crw-line); border-radius: var(--app-radius-control); font-size: var(--app-font-secondary); }
.crw-mobile-close { display: none; }
.crw button:focus-visible, .crw a:focus-visible, .crw select:focus-visible { outline: 2px solid #d97706; outline-offset: 3px; }
.crw-empty { padding: 48px 24px; line-height: 1.8; }
.crw-empty h3 { font-size: 1rem; font-weight: 600; }
.crw-empty p { color: var(--crw-muted); margin: 10px 0 20px; }
.crw-needs-input, .crw-errors { padding: 14px; border: 1px solid light-dark(#fecdca, #912018); border-radius: var(--app-radius-control); background: light-dark(#fff4ed, #391c18); font-size: var(--app-font-body); line-height: 1.7; margin: 14px 0; }
.crw-errors ul { padding-left: 20px; list-style: disc; }
.crw-specialist { display: inline-block; margin-top: 16px; font-size: var(--app-font-secondary); }
.crw-match-choice { display: block; margin: 14px 0; font-size: .875rem; }
.crw-match-choice select { display: block; width: 100%; margin-top: 8px; padding: 10px; background: var(--crw-surface); color: var(--crw-text); border: 1px solid var(--crw-line); border-radius: var(--app-radius-control); }
.crw-dirty-confirm { padding: 16px; margin: 14px; border: 2px solid #d97706; border-radius: var(--app-radius-card); font-size: var(--app-font-body); }
.crw-dirty-confirm p { margin: 8px 0; }
.crw-dirty-confirm > div { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 1439px) {
    .crw-layout { grid-template-columns: minmax(0, 1fr); }
    .crw-backdrop { position: fixed; inset: 0; background: rgb(0 0 0 / .38); z-index: var(--app-layer-review-backdrop); }
    .crw-panel { position: fixed; inset: 0 0 0 auto; width: min(760px, 86vw); max-height: 100dvh; border-radius: 0; z-index: var(--app-layer-review-panel); }
    .crw-mobile-close { display: inline-flex; align-items: center; }
}
@media (max-width: 640px) {
    .crw-panel { width: 100%; border: 0; }
    .crw-heading { align-items: start; }
    .crw-heading a { flex-shrink: 0; font-size: var(--app-font-secondary); }
    .crw-results { gap: 8px 12px; }
    .crw-results strong { flex-basis: 100%; }
    .crw-panel-body { padding: 12px; }
    .crw-panel-footer { padding: 10px 12px max(10px, env(safe-area-inset-bottom)); flex-wrap: wrap; }
    .crw-list-item { padding: 12px; }
}
.mw-compact-summary { display: grid; grid-template-columns: repeat(4, minmax(100px, 1fr)) minmax(180px, 2fr); border: 1px solid light-dark(#e5e7eb, #374151); border-radius: var(--app-radius-card); background: light-dark(#fff, #18181b); }
.mw-compact-summary > button { text-align: left; padding: 18px 20px; border-right: 1px solid light-dark(#e5e7eb, #374151); }
.mw-compact-summary > button span { display: block; color: light-dark(#667085, #a1a1aa); font-size: var(--app-font-secondary); }
.mw-compact-summary > button strong { display: block; font-size: 1.6rem; margin-top: 6px; font-variant-numeric: tabular-nums; }
.mw-compact-summary small { font-size: var(--app-font-caption); font-weight: 400; color: light-dark(#667085, #a1a1aa); }
.mw-compact-summary__hint { padding: 18px 20px; display: flex; flex-direction: column; justify-content: center; gap: 6px; font-size: var(--app-font-secondary); }
.mw-compact-summary__hint span { color: light-dark(#667085, #a1a1aa); }
.mw-compact-summary__hint button { text-align: left; color: light-dark(#9a4c05, #fbbf24); }
.mw-secondary-overview > summary { padding: 10px 2px; cursor: pointer; font-size: var(--app-font-secondary); color: light-dark(#667085, #a1a1aa); }
.mw-secondary-overview[open] > summary { margin-bottom: 12px; }
.mw-reminders h2 { font-size: .875rem; font-weight: 650; margin-bottom: 12px; }
.mw-reminders.is-clear { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border: 1px solid light-dark(#e5e7eb, #374151); border-radius: var(--app-radius-card); background: light-dark(#f8fafc, #18181b); color: light-dark(#667085, #a1a1aa); font-size: var(--app-font-secondary); }
.mw-reminders.is-clear > svg { width: 18px; height: 18px; flex: none; }
.mw-reminders.is-clear > div { display: grid; gap: 2px; }
.mw-reminders.is-clear strong { color: light-dark(#344054, #e4e4e7); }
.mw-reminders__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.mw-reminders article { padding: 14px 16px; border: 1px solid light-dark(#e5e7eb, #374151); border-radius: var(--app-radius-card); background: light-dark(#fff, #18181b); font-size: var(--app-font-secondary); }
.mw-reminders article > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.mw-reminders b { font-weight: 600; color: light-dark(#9a4c05, #fbbf24); }
.mw-reminders nav { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 10px; }
.mw-reminders a { text-decoration: underline; text-underline-offset: 3px; }
.mw-compact-summary button:focus-visible { outline: 2px solid #d97706; outline-offset: -3px; }
.dark .crw, .dark .mw-page { color-scheme: dark; }
@media (max-width: 767px) {
    .mw-compact-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .mw-compact-summary > button { padding: 12px; }
    .mw-compact-summary > button strong { font-size: 1.3rem; }
    .mw-compact-summary__hint { grid-column: 1 / -1; border-top: 1px solid light-dark(#e5e7eb, #374151); padding: 12px; }
    .mw-reminders__grid { grid-template-columns: 1fr; }
}
.admin-operation-return { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 20px; margin-bottom: 12px; padding: 12px 16px; background: light-dark(#fff7e5, #3b2b15); border: 1px solid light-dark(#fed7aa, #92400e); border-radius: var(--app-radius-card); font-size: var(--app-font-secondary); }
.admin-operation-return strong { flex: 1 1 260px; }
.admin-operation-return a, .admin-operation-return button { text-decoration: underline; text-underline-offset: 3px; min-height: 36px; display: inline-flex; align-items: center; }
:root {
    --app-content-width-form: 1280px;
    --app-content-width-overview: 1536px;
}

.fi-main.app-content-width-1280 {
    max-width: var(--app-content-width-form);
}

.fi-main.app-content-width-1536 {
    max-width: var(--app-content-width-overview);
}

/* 送检默认视图让任务与主要动作留在内容区，扩展列仍允许表内滚动。 */
@media (min-width: 768px) {
    :is(.submission-next-step-table, .submission-return-table) .fi-ta-table { width: 100%; min-width: 0; }
    .submission-next-step-table :is(.fi-ta-cell, .fi-ta-header-cell) { min-width: 0; }
    .submission-next-step-table :is(.fi-ta-cell-batch-no, .fi-ta-header-cell-batch-no) { width: 12rem; min-width: 0; }
    .submission-next-step-table :is(.fi-ta-cell-next-step, .fi-ta-header-cell-next-step) { width: 25%; min-width: 0; }
    .submission-next-step-table :is(.fi-ta-cell-instrument-composition, .fi-ta-header-cell-instrument-composition) { min-width: 0; width: 24%; }
    .submission-next-step-table :is(.fi-ta-cell-certificate-progress, .fi-ta-header-cell-certificate-progress) { min-width: 0; width: 15%; }
    :is(.submission-next-step-table, .submission-return-table) .fi-ta-cell:has(.fi-ta-actions) { width: 12rem; min-width: 10rem; }
    :is(.submission-next-step-table, .submission-return-table) .fi-ta-actions { flex-wrap: wrap; gap: .5rem; }
    .submission-return-table .fi-ta-cell-instrument-composition { min-width: 10rem; }
    .submission-return-table .fi-ta-text-item { overflow-wrap: anywhere; }
}
.submission-list-next { display: grid; gap: .2rem; padding: .4rem .35rem; font-size: var(--app-font-secondary); }
.submission-list-next details { color: var(--app-text-subtle); }
.submission-list-next summary, .submission-detail-more > summary, .submission-instrument-group > summary { cursor: pointer; padding: .6rem 0; font-weight: 600; }
.submission-instrument-group { border-top: 1px solid #e5e7eb; padding: .5rem 0; }
.submission-detail-more { margin-top: .6rem; }
.submission-instrument-group summary:focus-visible, .submission-detail-more summary:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
.dark .submission-list-next details { color: var(--app-text-subtle); }
.dark .submission-instrument-group { border-color: #374151; }
.submission-timeline-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem; }
.submission-timeline-toolbar select { padding:.5rem; border:1px solid #d1d5db; border-radius:var(--app-radius-control); background:transparent; }
.submission-timeline-list { list-style:none; margin:1rem 0; padding:0 0 0 1rem; border-left:2px solid #d1d5db; }
.submission-timeline-list li { padding:0 0 1.25rem 1rem; overflow-wrap:anywhere; }
.submission-timeline-list p { margin:.25rem 0; color:var(--app-text-subtle); font-size:var(--app-font-secondary); }
.dark .submission-timeline-list p { color:var(--app-text-subtle); }

/* 详情自定义卡片沿用后台明暗主题，折叠摘要必须始终可见。 */
.dark .submission-batch-detail .submission-batch-card { background:var(--app-surface-card); border-color:#374151; color:var(--app-text-strong); }
.dark .submission-batch-detail :is(.submission-batch-title,.submission-batch-section-title,.submission-batch-field strong) { color:var(--app-text-strong); }
.dark .submission-batch-detail :is(.submission-batch-subtitle,.submission-batch-note,.submission-batch-muted,.submission-batch-field span,.submission-batch-table th,.submission-intake-event header) { color:var(--app-text-subtle); }
.dark .submission-batch-detail :is(.submission-intake-metric,.submission-batch-field,.submission-batch-table th,.submission-batch-table td) { border-color:#374151; }
.dark .submission-batch-detail .submission-intake-metric { background:var(--app-surface-card); }
.dark .submission-batch-detail .submission-intake-metric span { color:var(--app-text-subtle); }
.dark .submission-batch-detail .submission-intake-metric strong { color:var(--app-text-strong); }
.dark .submission-batch-detail .submission-detail-more > summary { color:var(--app-text-strong); }

.submission-next-step-table .app-mobile-card__badge { max-width:45%; white-space:normal; text-align:center; }

.submission-list-next__status { display:flex; align-items:center; flex-wrap:wrap; gap:.5rem; }
.submission-list-next details > summary { padding:.1rem 0; }

/* 连续复核：清单可收起，原件与字段独立滚动；高频切换不加动效。 */
.crw-layout { grid-template-columns:220px minmax(0,1fr); gap:16px; }
.crw-layout.is-list-collapsed { grid-template-columns:minmax(0,1fr); }
.crw-list { max-height:calc(100dvh - 220px); overflow:auto; }
.crw-panel { max-height:none; overflow:hidden; }
.crw-panel-body { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(280px,1fr); gap:16px; padding:12px; }
.crw-evidence-column,.crw-fields-column { min-width:0; max-height:calc(100dvh - 310px); overflow:auto; }
.crw-panel .certificate-pdf-viewer { height:calc(100dvh - 410px); min-height:300px; }
.crw-panel-footer { justify-content:flex-end; padding-bottom:max(12px,env(safe-area-inset-bottom)); }
.crw-heading button,.crw-mobile-tabs button { min-height:44px; padding:8px 12px; border:1px solid var(--crw-line); border-radius:var(--app-radius-control); }
.crw-mobile-tabs { display:none; }
@media (min-width:1024px) and (max-width:1439px) {
    .crw-panel { position:sticky; inset:auto; top:80px; width:100%; border-radius:var(--app-radius-card); z-index:auto; }
    .crw-mobile-close { display:none; }
}
@media (max-width:1023px) {
    .crw-layout { display:block; }
    .crw-panel { position:fixed; inset:0; width:100%; height:100dvh; max-height:100dvh; display:flex; flex-direction:column; border-radius:0; z-index:var(--app-layer-review-panel); }
    .crw-panel-heading,.crw-mobile-tabs,.crw-panel-footer { flex:none; }
    .crw-mobile-tabs { display:flex; gap:8px; padding:8px 12px; }
    .crw-mobile-tabs [aria-selected=true] { background:light-dark(#fff7e5,#3b2b15); border-color:#d97706; }
    .crw-panel-body { display:block; overflow:auto; flex:1; min-height:0; }
    .crw-evidence-column,.crw-fields-column { max-height:none; overflow:visible; }
    .crw-panel .certificate-pdf-viewer { height:calc(100dvh - 260px); min-height:250px; }
}


.intake-draft-controls { border:1px solid #d1d5db; border-radius:var(--app-radius-card); padding:12px; font-size:14px; }
.intake-draft-status,.intake-draft-row { display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.intake-draft-controls button,.intake-draft-controls a { min-height:44px; display:inline-flex; align-items:center; padding:6px 10px; color:light-dark(#92400e,#fbbf24); }
.intake-draft-controls button:disabled { opacity:.5; }
.intake-draft-controls summary { cursor:pointer; padding:8px 0; }
.intake-draft-leave { position:fixed; inset:0; background:#0008; z-index:var(--app-layer-review-panel); display:grid; place-items:center; padding:16px; }
.intake-draft-leave>div { background:light-dark(white,#111827); padding:24px; border-radius:var(--app-radius-card); max-width:480px; }


.crw { scroll-margin-top:100px; }

/* 桌面复核面板在首屏内收束，原件和字段独立滚动，动作始终可见。 */
@media (min-width:1024px) {
    .crw-panel { display:flex; flex-direction:column; height:calc(100dvh - 280px); min-height:440px; }
    .crw-panel-heading,.crw-panel-footer { flex:none; }
    .crw-panel-body { flex:1; min-height:0; overflow:hidden; }
    .crw-evidence-column,.crw-fields-column { min-height:0; max-height:none; height:100%; }
    .crw-evidence-column { display:flex; flex-direction:column; }
    .crw-panel .certificate-evidence { display:flex; flex-direction:column; flex:1; min-height:0; margin:8px 0 0; }
    .crw-panel .certificate-evidence__body { flex:1; min-height:0; }
    .crw-panel .certificate-pdf-viewer { height:100%; min-height:0; }
}

/* 投递历史单页最多20条，手机长文也在独立区域内滚动，不能撑成长背景。 */
.app-delivery-attempt-history .fi-ta-content-ctn {
    max-height: min(65dvh, 40rem);
    overflow: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}

/* 投递详情的旧HTML卡片同步使用深色背景与可读的辅助文字。 */
.dark .app-delivery-details .bg-gray-50 {
    background-color: var(--app-surface-card);
}
.dark .app-delivery-details .border-gray-200 {
    border-color: #374151;
}
.dark .app-delivery-details .text-gray-600,
.dark .app-delivery-details .text-gray-500 {
    color: var(--app-text-strong);
}

/* 回件页常用筛选在桌面原位显示，手机同一份表单进入抽屉。 */
.return-list-summary { padding: 14px 20px; border-bottom: 1px solid rgb(148 163 184 / .18); }
.return-list-summary p, .return-filter-footer span { font-size: 12px; color: var(--app-text-subtle); margin-top: 4px; }
.return-filter-heading { display: flex; gap: 12px; flex-wrap: wrap; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.return-filter-body { min-width: 0; }
.return-date-presets { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 0; }
.return-filter-footer { display: flex; align-items: center; gap: 12px; margin-top: 12px; }
.return-filter-mobile-trigger, .return-filter-close { display: none; }
.return-filter-backdrop { position: fixed; inset: 0; background: #0006; z-index: var(--app-layer-review-backdrop); }
.return-filter-done { margin-left: auto; }
.dark .return-list-summary p, .dark .return-filter-footer span { color: var(--app-text-subtle); }
@media (min-width: 768px) {
    .submission-return-table .fi-ta-filters-above-content-ctn { position: relative; }
    /* 只在操作筛选时抬高下拉区域，避免常驻层级拦截短操作弹窗。 */
    .submission-return-table .fi-ta-filters-above-content-ctn:focus-within { z-index: var(--app-layer-sticky-table-filter); }
}
@media (max-width: 767px) {
    .calibration-task-queue-table .calibration-task-mobile-date-item { grid-column: 1 / -1; }
    .calibration-task-queue-table .calibration-plan-mobile-date-hint {
        display: flex;
        flex-wrap: wrap;
        column-gap: 0.25rem;
        row-gap: 0.125rem;
        margin-top: 0.125rem;
        color: var(--app-text-subtle, rgb(107 114 128));
        font-size: var(--app-font-caption);
        font-weight: 600;
        line-height: 1rem;
    }
    .calibration-task-queue-table .calibration-task-mobile-date-segment { white-space: nowrap; }
    .submission-return-table .app-mobile-card__main { flex: 1; }
    .submission-return-table .return-receipt-status { flex: 0 0 auto; white-space: nowrap; }
    .submission-return-table .app-mobile-card__eyebrow,
    .submission-return-table .app-mobile-card__title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
    .return-filter-mobile-trigger, .return-filter-close { display: inline-flex; }
    .return-filter-close { min-height: 44px; align-items: center; padding: 0 12px; }
    .return-filter-drawer { position: fixed; inset: 0; z-index: var(--app-layer-review-panel); background: var(--app-surface-card); display: flex; flex-direction: column; padding: 16px; }
    .dark .return-filter-drawer { background: #18181b; }
    .return-filter-drawer .return-filter-heading { flex-shrink: 0; }
    .return-filter-drawer .return-filter-body { overflow-y: auto; flex: 1; padding: 2px; }
    .return-filter-drawer .return-filter-footer { flex-shrink: 0; flex-wrap: wrap; padding-bottom: env(safe-area-inset-bottom); }
    .return-filter-drawer .return-date-presets { order: 3; width: 100%; }
    .return-filter-drawer .return-date-presets button { min-height: 40px; }
    .return-list-summary { padding: 12px; }
}

/* 排检任务：时效短语单独着色，日期本身保持正文色；状态色不铺满整格。 */
.calibration-task-timeliness.is-danger { color: var(--app-tone-danger); font-weight: 600; }
.calibration-task-timeliness.is-warning { color: var(--app-tone-warning); font-weight: 600; }
.calibration-task-block-reason { display: block; margin-top: 0.25rem; color: var(--app-text-muted); font-size: var(--app-font-caption); font-weight: 400; line-height: 1.5; }

/* 行内已有同名主操作时，“下一步”不再重复同一句话；有阻塞原因时仍保留提示。 */
.calibration-task-queue-table .fi-ta-row:has([data-row-primary='start_request']) .fi-ta-cell[data-next-action='start_request']:not(:has(.fi-ta-text-description)) .fi-badge,
.calibration-task-queue-table .fi-ta-row:has([data-row-primary='coordination']) .fi-ta-cell[data-next-action]:not(:has(.fi-ta-text-description)) .fi-badge,
.calibration-task-queue-table .fi-ta-row:has([data-row-primary='start_request']) .calibration-task-next-action[data-next-action='start_request']:not(:has(.calibration-task-block-reason)),
.calibration-task-queue-table .fi-ta-row:has([data-row-primary='coordination']) .calibration-task-next-action[data-next-action]:not(:has(.calibration-task-block-reason)) {
    display: none;
}

@media (min-width: 768px) {
    .calibration-task-queue-table .fi-ta-table { table-layout: fixed; width: 100%; }
    .calibration-task-queue-table :is(.fi-ta-header-cell, .fi-ta-cell) { padding-block: 8px; }
    .calibration-task-queue-table thead th:first-child { width: 44px; }
    .calibration-task-queue-table .fi-ta-header-cell-instrument-identity { width: 26%; }
    .calibration-task-queue-table .fi-ta-header-cell-planned-date { width: 19%; }
    .calibration-task-queue-table .fi-ta-header-cell-coordination-status { width: 11%; }
    .calibration-task-queue-table .fi-ta-header-cell-status { width: 9%; }
    .calibration-task-queue-table .fi-ta-header-cell-next-action { width: auto; }
    .calibration-task-queue-table thead th:last-child { width: 196px; }

    /* 两行上限：主信息一行、补充一行；完整内容保留在 tooltip / 详情页。 */
    .calibration-task-queue-table .fi-ta-cell-instrument-identity .fi-ta-text-description {
        display: -webkit-box;
        overflow: hidden;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 1;
    }
    .calibration-task-queue-table .fi-ta-cell-next-action .fi-ta-text-description {
        display: -webkit-box;
        overflow: hidden;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
    }
    .calibration-task-queue-table :is(.fi-ta-cell-coordination-status, .fi-ta-cell-status, .fi-ta-cell-planned-date .fi-ta-text-item) * { white-space: nowrap; }
    .calibration-task-queue-table .fi-ta-text-description { color: var(--app-text-subtle); font-size: var(--app-font-caption); }
    .calibration-task-queue-table .fi-ta-cell-planned-date .fi-ta-text-item {
        color: var(--app-text-strong);
        font-variant-numeric: tabular-nums;
    }
    .calibration-task-queue-table .fi-ta-actions { flex-wrap: nowrap; justify-content: flex-start; gap: 8px; }
}

/* 送检低频条件在窄屏按需展开；实际 Filament 筛选、排序和 URL 状态保持原样。 */
.submission-secondary-controls { display: contents; }
.submission-secondary-controls > summary, .submission-mobile-condition { display: none; }
@media (max-width: 767px) {
    .submission-secondary-controls { display: block; padding: 6px 0; }
    .submission-secondary-controls > summary { display: list-item; cursor: pointer; font-size: var(--app-font-secondary); }
    .submission-mobile-condition { display: block; font-size: var(--app-font-caption); margin-top: 6px; }
    .submission-mobile-condition button { text-decoration: underline; margin-left: 8px; }
    .submission-next-step-table:not(:has(.submission-secondary-controls[open])) tr:has(.fi-ta-table-stacked-sorting) { display: none; }
}

.app-mobile-table-sorting,
.app-mobile-pagination-summary { display: none; }

@media (max-width: 767px) {
    /* 保留台账、校验记录和设备位置的列设置入口，手机上沿用上面的限高面板。 */
    .app-mobile-card-table:not(.instrument-ledger-table, .fi-resource-calibration-records *, .fi-resource-equipment-locations *) .fi-ta-col-manager-dropdown,
    .app-mobile-card-table .fi-ta-table-stacked-sorting,
    .app-mobile-card-table .fi-ta-table-stacked-header-row:not(:has(.fi-ta-page-checkbox)) { display: none; }
    .app-mobile-card-table .fi-ta-table-stacked-header-cell { padding-block: 4px; gap: 8px; }
    .app-mobile-card-table .fi-ta-table-stacked-header-cell::before {
        content: '本页全选';
        color: var(--app-text-muted);
        font-size: var(--app-font-secondary);
    }
    .app-mobile-card-table .fi-ta-header-toolbar > :last-child { flex: 1; flex-wrap: wrap; gap: 8px; }
    .app-mobile-card-table .fi-ta-header-toolbar .fi-ta-search-field { flex: 1 1 10rem; min-width: 0; width: auto; }
    .app-mobile-card-table .app-mobile-table-sorting { display: block; flex: 0 0 auto; }
    .app-mobile-table-sorting .fi-icon-btn { min-width: 44px; min-height: 44px; }
    .app-mobile-card-table .app-mobile-pagination-summary {
        display: block;
        padding: 12px 16px;
        color: var(--app-text-muted);
        font-size: var(--app-font-secondary);
        text-align: center;
    }
    .app-mobile-card-table tfoot:has(.app-mobile-pagination-summary),
    .app-mobile-card-table tfoot:has(.app-mobile-pagination-summary) > tr { display: block; }
    .app-mobile-card-table .fi-pagination .fi-pagination-records-per-page-select.fi-compact { display: none; }
    .app-mobile-card-table .fi-pagination .fi-pagination-records-per-page-select:not(.fi-compact) { display: inline-flex; }
    .app-mobile-card-table .fi-pagination :is(.fi-pagination-previous-btn, .fi-pagination-next-btn, .fi-input-wrp) { min-height: 44px; }
}

/* 计划只读抽屉沿用框架焦点管理；只覆盖本入口的位移动效。 */
.submission-appointment-items-drawer.fi-transition-enter,
.submission-appointment-items-drawer.fi-transition-leave {
    transition-property: translate, transform, opacity;
    transition-timing-function: cubic-bezier(0.32, 0.72, 0, 1);
    transition-duration: 240ms;
}
.submission-appointment-items-drawer.fi-transition-leave { transition-duration: 180ms; }
@media (prefers-reduced-motion: reduce) {
    .submission-appointment-items-drawer.fi-modal-window {
        translate: none !important;
        transform: none !important;
        transition-property: opacity;
        transition-duration: 120ms;
    }
}

/* 当前证书身份随核对面板保持可见，差异提示同时使用文字与边框。 */
.crw-current-identity { min-width: 0; display: grid; gap: .25rem; }
.crw-current-identity strong, .crw-current-identity span { overflow-wrap: anywhere; }
.crw-current-identity span { color: var(--crw-muted); font-size: var(--app-font-secondary); line-height: 1.5; }
.crw-difference-count { display: inline-block; margin-inline-start: .5rem; padding: .1rem .4rem; border: 1px solid currentColor; border-radius: .375rem; color: light-dark(#b42318, #fda29b); font-size: var(--app-font-secondary); }
.crw-panel-footer > button:first-child { margin-inline-end: auto; }

@media (max-width: 767px) {
    .crw-panel button { min-width: 44px; min-height: 44px; }
}

/*
 * 连续复核视觉层级：进度、清单、原件与对照区统一使用后台语义令牌。
 * 紧凑缩放档会压缩 rem，正文类文字统一改用 --app-font-*，避免对照区落到 10px 以下。
 */
.crw .crw-heading { align-items: flex-end; margin-bottom: 12px; }
.crw .crw-heading > div {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 6px 16px;
    min-width: min(100%, 420px);
}
.crw .crw-heading p,
.crw .crw-source { margin: 0; color: var(--app-text-muted); font-size: var(--app-font-secondary); font-variant-numeric: tabular-nums; }
.crw-progress {
    grid-column: 1;
    height: 6px;
    overflow: hidden;
    border-radius: 999px;
    background: var(--app-surface-control);
    box-shadow: none;
}
.crw-progress > span { display: block; height: 100%; border-radius: inherit; background: var(--app-focus-ring); }
.crw .crw-heading button {
    grid-column: 2;
    grid-row: 1 / span 2;
    min-height: 32px;
    padding: 0 12px;
    border: 1px solid var(--crw-line);
    border-radius: var(--app-radius-control);
    background: var(--crw-surface);
    font-size: var(--app-font-secondary);
    font-weight: 600;
}
.crw .crw-heading > a { color: var(--app-text-muted); font-size: var(--app-font-secondary); }
@media (max-width: 1023px) {
    .crw .crw-heading { align-items: center; }
    .crw .crw-heading > div { flex: 1; min-width: 0; }
    .crw .crw-heading > a { display: inline-flex; flex: none; align-items: center; min-height: var(--app-control-touch, 44px); }
    .crw .crw-heading button { min-height: var(--app-control-touch, 44px); }
}
.crw .crw-results {
    gap: 8px 16px;
    padding: 8px 16px;
    border-radius: var(--app-radius-control);
    background: var(--crw-surface);
    font-size: var(--app-font-caption);
}
.crw .crw-results strong { color: var(--app-text-muted); font-weight: 600; }
.crw .crw-list,
.crw .crw-panel { border-radius: var(--app-radius-card); }

/* 清单项：序号 | 证书信息，状态徽标落在信息下方，窄栏里编号不拆行。 */
.crw .crw-list-item {
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr);
    gap: 4px 8px;
    min-height: 0;
    padding: 12px;
}
.crw .crw-list-item > em { grid-column: 2; justify-self: start; }
.crw .crw-list-item strong {
    overflow: hidden;
    font-size: var(--app-font-body);
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.crw .crw-list-item :is(small, em),
.crw .crw-list-index { margin-top: 2px; font-size: var(--app-font-caption); }
.crw .crw-list-item em {
    padding: 1px 6px;
    border: 1px solid var(--crw-line);
    border-radius: var(--app-radius-badge);
    color: var(--app-text-muted);
    font-weight: 600;
}
@media (hover: hover) {
    .crw .crw-list-item:hover { background: var(--app-surface-hover); }
}
.crw .crw-list-item.is-current { background: var(--app-active-bg); box-shadow: none; }

.crw .crw-current-identity strong { font-size: var(--app-font-section); font-weight: 600; }
.crw .crw-current-identity span { font-size: var(--app-font-caption); }

/* 原件卡在工作区内只保留 1px 线框，不再用 Amber 左色条与投影。 */
.fi-body-has-navigation .crw .certificate-evidence {
    border: 1px solid var(--crw-line);
    border-radius: var(--app-radius-card);
    box-shadow: none;
}
.fi-body-has-navigation .crw .certificate-evidence__header { padding: 12px 16px; }
.fi-body-has-navigation .crw .certificate-evidence__eyebrow {
    color: var(--app-text-subtle);
    font-size: var(--app-font-caption);
    font-weight: 600;
    letter-spacing: 0;
}
.fi-body-has-navigation .crw .certificate-evidence__title { font-size: var(--app-font-section); font-weight: 600; }

/* 对照区作为第二栏的正式小节。 */
.crw .crw-comparison {
    margin: 0 0 16px;
    border: 1px solid var(--crw-line);
    border-radius: var(--app-radius-card);
    font-size: var(--app-font-secondary);
}
.crw .crw-comparison > summary {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    padding: 8px 16px;
    color: var(--crw-text);
    font-size: var(--app-font-section);
    font-weight: 600;
}
.crw .crw-comparison[open] > summary { border-bottom: 1px solid var(--crw-line); }
.crw .crw-difference-count {
    margin-inline-start: 0;
    padding: 1px 6px;
    border-color: var(--app-tone-warning-line);
    border-radius: var(--app-radius-badge);
    background: var(--app-tone-warning-bg);
    color: var(--app-tone-warning);
    font-size: var(--app-font-caption);
}
.crw .crw-needs-input {
    padding: 12px 16px;
    border-color: var(--app-tone-warning-line);
    border-radius: var(--app-radius-control);
    background: var(--app-tone-warning-bg);
    font-size: var(--app-font-secondary);
}
.crw .crw-needs-input strong { color: var(--app-tone-warning); font-size: var(--app-font-body); }
.crw .crw-needs-input p { margin-top: 4px; color: var(--crw-text); }
.crw .crw-needs-input a {
    display: inline-block;
    margin-top: 8px;
    color: var(--crw-text);
    font-size: var(--app-font-caption);
    font-weight: 600;
}
.crw .crw-specialist { font-size: var(--app-font-secondary); }
.crw .crw-panel-footer > button:not(.fi-btn) {
    min-height: 36px;
    padding: 0 16px;
    border-radius: var(--app-radius-control);
    background: var(--crw-surface);
    color: var(--crw-text);
    font-size: var(--app-font-body);
    font-weight: 600;
}
.crw :is(.certificate-candidate-details, .crw-comparison) :is(p, dt, dd, li, strong, span, td) { font-size: var(--app-font-secondary); }
.crw :is(.certificate-candidate-details, .crw-comparison) h3 { font-size: var(--app-font-body); font-weight: 600; }
.crw :is(.certificate-candidate-details, .crw-comparison) :is(th, .certificate-candidate-details__hint, .certificate-review-fact-card__index),
.crw :is(.certificate-pdf-viewer__label, .crw-results *) { font-size: var(--app-font-caption); }

@media (max-width: 1023px) {
    .crw .crw-heading button { min-height: 44px; }

    /* 原件 / 核对：整宽分段控件，每段 44px。 */
    .crw .crw-mobile-tabs {
        margin: 8px 12px;
        padding: 4px;
        gap: 4px;
        border-radius: var(--app-radius-control);
        background: var(--app-surface-control);
        box-shadow: none;
    }
    .crw .crw-mobile-tabs button {
        display: inline-flex;
        flex: 1;
        align-items: center;
        justify-content: center;
        gap: 6px;
        min-height: 44px;
        border: 0;
        border-radius: 6px;
        background: transparent;
        color: var(--app-text-muted);
        font-size: var(--app-font-body);
        font-weight: 600;
    }
    .crw .crw-mobile-tabs [aria-selected='true'] {
        border: 0;
        background: var(--crw-surface);
        color: var(--crw-text);
        box-shadow: none;
    }
    .crw .crw-mobile-tabs span {
        padding: 0 6px;
        border-radius: var(--app-radius-badge);
        background: var(--app-tone-warning-bg);
        color: var(--app-tone-warning);
        font-size: var(--app-font-caption);
    }
    .crw .crw-mobile-close {
        min-height: 44px;
        padding: 0 12px;
        border-radius: var(--app-radius-control);
    }
    .crw .crw-heading > a { display: inline-flex; align-items: center; min-height: 44px; }
    .crw .crw-panel-footer > * { flex: 1; min-height: 44px; }
}
