/*
 * OneHealth Admin UI Redesign v4
 * 목적: 데이터 관리/운영 관리 화면을 일반 조회 화면 CSS와 분리하고,
 *       관리자 작업 흐름 기준으로 읽기 쉬운 카드/폼/테이블 레이아웃을 제공한다.
 * 정책: 관리 화면은 무리하게 한 화면에 압축하지 않는다. 페이지 스크롤은 허용하고,
 *       테이블/목록처럼 데이터가 많은 영역만 카드 내부 스크롤을 사용한다.
 */
:root {
    --admin-bg: #edf5ff;
    --admin-panel: #ffffff;
    --admin-panel-soft: #f7fbff;
    --admin-border: #cfe1f6;
    --admin-border-soft: #e3eefb;
    --admin-text: #061f48;
    --admin-muted: #55708f;
    --admin-primary: #0b3c80;
    --admin-primary-2: #1453a1;
    --admin-success: #12804a;
    --admin-warning: #a16207;
    --admin-danger: #dc2626;
    --admin-radius: 16px;
    --admin-gap: .72rem;
    --admin-card-pad: .82rem;
    --admin-field-h: 34px;
}

html:has(.oh-admin-redesign),
body:has(.oh-admin-redesign) {
    overflow: auto !important;
    background: var(--admin-bg) !important;
}

.ke-content:has(.oh-admin-redesign) {
    display: block !important;
    height: auto !important;
    min-height: calc(100vh - 64px) !important;
    overflow: visible !important;
    padding: .82rem 1rem 1.2rem !important;
    background: var(--admin-bg) !important;
}

.oh-admin-redesign,
.oh-admin-redesign * {
    box-sizing: border-box !important;
}

.oh-admin-redesign {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: var(--admin-gap) !important;
    overflow: visible !important;
    color: var(--admin-text) !important;
}

/* -------------------------------------------------------------------------
   기본 카드 / 헤더
   ------------------------------------------------------------------------- */
.oh-admin-redesign .oh-page-header,
.oh-admin-redesign .page-heading-row {
    width: 100% !important;
    min-height: 64px !important;
    margin: 0 !important;
    padding: .78rem .92rem !important;
    border: 1px solid var(--admin-border) !important;
    border-radius: var(--admin-radius) !important;
    background: linear-gradient(180deg, #f9fcff 0%, #f0f7ff 100%) !important;
    box-shadow: 0 10px 22px rgba(15, 48, 96, .055) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: .9rem !important;
    overflow: visible !important;
}

.oh-admin-redesign .oh-page-header > div:first-child,
.oh-admin-redesign .page-heading-row > div:first-child {
    min-width: 0 !important;
}

.oh-admin-redesign h1,
.oh-admin-redesign .page-heading-row h1 {
    margin: 0 0 .14rem !important;
    color: #06235a !important;
    font-size: 1.36rem !important;
    line-height: 1.1 !important;
    font-weight: 950 !important;
    letter-spacing: -0.045em !important;
}

.oh-admin-redesign .oh-subtitle,
.oh-admin-redesign .page-lead {
    margin: 0 !important;
    color: #496584 !important;
    font-size: .86rem !important;
    line-height: 1.25 !important;
    font-weight: 760 !important;
}

.oh-admin-redesign .oh-card,
.oh-admin-redesign .panel,
.oh-admin-redesign .summary-card,
.oh-admin-redesign .runbook-banner,
.oh-admin-redesign .runbook-note,
.oh-admin-redesign .runbook-phase-card,
.oh-admin-redesign .runbook-step-body,
.oh-admin-redesign .config-summary-card,
.oh-admin-redesign .config-section,
.oh-admin-redesign .oh-stat-card,
.oh-admin-redesign .oh-kpi,
.oh-admin-redesign .oh-status-card,
.oh-admin-redesign .audit-kpi {
    min-width: 0 !important;
    min-height: 0 !important;
    width: auto !important;
    height: auto !important;
    max-height: none !important;
    margin: 0 !important;
    padding: var(--admin-card-pad) !important;
    border: 1px solid var(--admin-border) !important;
    border-radius: var(--admin-radius) !important;
    background: var(--admin-panel) !important;
    box-shadow: 0 10px 22px rgba(15, 48, 96, .045) !important;
    overflow: visible !important;
    clip-path: none !important;
    contain: none !important;
}

.oh-admin-redesign .oh-card h2,
.oh-admin-redesign .oh-card h3,
.oh-admin-redesign .oh-card h4,
.oh-admin-redesign .panel h2,
.oh-admin-redesign .panel h3,
.oh-admin-redesign .panel-header h2,
.oh-admin-redesign .panel-header h3,
.oh-admin-redesign .runbook-step-title h4 {
    margin: 0 0 .44rem !important;
    color: #08275d !important;
    font-size: 1.02rem !important;
    line-height: 1.16 !important;
    font-weight: 950 !important;
}

.oh-admin-redesign p {
    margin: 0 0 .52rem !important;
}

.oh-admin-redesign p:last-child {
    margin-bottom: 0 !important;
}

.oh-admin-redesign .oh-muted,
.oh-admin-redesign .oh-small,
.oh-admin-redesign small,
.oh-admin-redesign .page-lead,
.oh-admin-redesign .panel-header p {
    color: var(--admin-muted) !important;
    font-size: .8rem !important;
    line-height: 1.35 !important;
    font-weight: 720 !important;
}

.oh-admin-redesign .oh-message,
.oh-admin-redesign .alert,
.oh-admin-redesign .config-message {
    flex: 0 0 auto !important;
    margin: 0 !important;
    padding: .58rem .75rem !important;
    border: 1px solid #d8e7f8 !important;
    border-radius: 13px !important;
    background: #f8fbff !important;
    color: #234463 !important;
    font-size: .86rem !important;
    font-weight: 750 !important;
}

.oh-admin-redesign .oh-error,
.oh-admin-redesign .alert-error { background: #fff3f3 !important; border-color: #ffc9c9 !important; color: #991b1b !important; }
.oh-admin-redesign .oh-success { background: #effaf2 !important; border-color: #c4eecf !important; color: #0f6a3c !important; }

/* -------------------------------------------------------------------------
   Grid system
   ------------------------------------------------------------------------- */
.oh-admin-redesign .oh-grid,
.oh-admin-redesign .admin-grid,
.oh-admin-redesign .config-grid,
.oh-admin-redesign .config-main-grid,
.oh-admin-redesign .runbook-grid,
.oh-admin-redesign .summary-grid {
    width: 100% !important;
    min-width: 0 !important;
    display: grid !important;
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
    gap: var(--admin-gap) !important;
    align-items: start !important;
    margin: 0 !important;
}

.oh-admin-redesign .oh-grid > .oh-card,
.oh-admin-redesign .oh-grid > article,
.oh-admin-redesign .oh-grid > section {
    grid-column: span 12 !important;
}

.oh-admin-redesign .oh-card-half { grid-column: span 6 !important; }
.oh-admin-redesign .oh-card-third { grid-column: span 4 !important; }
.oh-admin-redesign .oh-card-full { grid-column: 1 / -1 !important; }
.oh-admin-redesign .oh-mb,
.oh-admin-redesign .mb-3 { margin-bottom: 0 !important; }
.oh-admin-redesign .oh-mt,
.oh-admin-redesign .mt-3 { margin-top: 0 !important; }

.oh-admin-redesign .oh-actions,
.oh-admin-redesign .page-actions,
.oh-admin-redesign .oa-actions-wrap,
.oh-admin-redesign .oh-card-header,
.oh-admin-redesign .oh-card-header-line,
.oh-admin-redesign .oa-card-title-row,
.oh-admin-redesign .oh-section-title-row,
.oh-admin-redesign .panel-header {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: .45rem !important;
    flex-wrap: wrap !important;
}

.oh-admin-redesign .oh-actions,
.oh-admin-redesign .page-actions,
.oh-admin-redesign .oa-actions-wrap {
    justify-content: flex-end !important;
}

/* -------------------------------------------------------------------------
   Forms / buttons / checkboxes
   ------------------------------------------------------------------------- */
.oh-admin-redesign .oh-form-grid,
.oh-admin-redesign .audit-filter-grid {
    width: 100% !important;
    display: grid !important;
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
    gap: .52rem .62rem !important;
    align-items: end !important;
    margin: 0 !important;
}

.oh-admin-redesign .oh-field { grid-column: span 4 !important; min-width: 0 !important; }
.oh-admin-redesign .oh-field-wide { grid-column: span 8 !important; min-width: 0 !important; }
.oh-admin-redesign .oh-field-full { grid-column: 1 / -1 !important; min-width: 0 !important; }

.oh-admin-redesign label,
.oh-admin-redesign .oh-field label,
.oh-admin-redesign .oa-inline-filter label {
    display: block !important;
    margin: 0 0 .22rem !important;
    color: #12315f !important;
    font-size: .78rem !important;
    line-height: 1.08 !important;
    font-weight: 950 !important;
}

.oh-admin-redesign input:not([type="checkbox"]):not([type="radio"]),
.oh-admin-redesign select,
.oh-admin-redesign textarea,
.oh-admin-redesign .form-control,
.oh-admin-redesign .oa-table-input {
    width: 100% !important;
    min-width: 0 !important;
    min-height: var(--admin-field-h) !important;
    height: var(--admin-field-h) !important;
    padding: .34rem .62rem !important;
    border: 1px solid #94c9ff !important;
    border-radius: 10px !important;
    background: #fff !important;
    color: var(--admin-text) !important;
    font-size: .86rem !important;
    font-weight: 650 !important;
    outline: none !important;
}

.oh-admin-redesign textarea {
    height: 82px !important;
    min-height: 82px !important;
    max-height: 220px !important;
    resize: vertical !important;
}

.oh-admin-redesign input:not([type="checkbox"]):not([type="radio"]):focus,
.oh-admin-redesign select:focus,
.oh-admin-redesign textarea:focus {
    border-color: #46a6ff !important;
    box-shadow: 0 0 0 3px rgba(70, 166, 255, .16) !important;
}

.oh-admin-redesign input[type="file"] {
    border: 0 !important;
    border-radius: 0 !important;
    padding: .25rem 0 !important;
    height: auto !important;
    min-height: 30px !important;
    background: transparent !important;
}

.oh-admin-redesign input[type="checkbox"],
.oh-admin-redesign input[type="radio"] {
    appearance: auto !important;
    -webkit-appearance: auto !important;
    width: 18px !important;
    min-width: 18px !important;
    max-width: 18px !important;
    height: 18px !important;
    min-height: 18px !important;
    max-height: 18px !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 4px !important;
    flex: 0 0 auto !important;
    display: inline-block !important;
    vertical-align: middle !important;
}

.oh-admin-redesign .oh-check,
.oh-admin-redesign .oh-check-grid label,
.oh-admin-redesign .runbook-checks label,
.oh-admin-redesign .oa-check-row {
    min-width: 0 !important;
    display: flex !important;
    align-items: center !important;
    gap: .55rem !important;
    padding: .55rem .65rem !important;
    border: 1px solid #d9e7f8 !important;
    border-radius: 12px !important;
    background: #f8fbff !important;
    color: #18345b !important;
    font-size: .83rem !important;
    font-weight: 800 !important;
}

.oh-admin-redesign .oh-check {
    grid-column: span 6 !important;
    margin: 0 !important;
}

.oh-admin-redesign button,
.oh-admin-redesign .btn,
.oh-admin-redesign .primary-button,
.oh-admin-redesign .secondary-button,
.oh-admin-redesign a.btn {
    min-height: 32px !important;
    padding: .36rem .68rem !important;
    border-radius: 10px !important;
    font-size: .82rem !important;
    font-weight: 900 !important;
    line-height: 1.1 !important;
    white-space: nowrap !important;
}

.oh-admin-redesign .btn-sm,
.oh-admin-redesign button.btn-sm {
    min-height: 28px !important;
    padding: .24rem .48rem !important;
    font-size: .75rem !important;
}

/* -------------------------------------------------------------------------
   Tables
   ------------------------------------------------------------------------- */
.oh-admin-redesign .oh-table-wrap,
.oh-admin-redesign .data-table-wrapper,
.oh-admin-redesign .oa-dataset-picker,
.oh-admin-redesign .oh-scroll-region,
.oh-admin-redesign .action-list,
.oh-admin-redesign .config-section-list {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    max-height: none !important;
    overflow: auto !important;
    border: 1px solid #d8e7f8 !important;
    border-radius: 13px !important;
    background: #fff !important;
    scrollbar-gutter: stable !important;
}

.oh-admin-redesign .oh-table-wrap::-webkit-scrollbar,
.oh-admin-redesign .data-table-wrapper::-webkit-scrollbar,
.oh-admin-redesign .oa-dataset-picker::-webkit-scrollbar,
.oh-admin-redesign .oh-scroll-region::-webkit-scrollbar,
.oh-admin-redesign .action-list::-webkit-scrollbar,
.oh-admin-redesign .config-section-list::-webkit-scrollbar {
    width: 9px !important;
    height: 9px !important;
}
.oh-admin-redesign .oh-table-wrap::-webkit-scrollbar-track,
.oh-admin-redesign .data-table-wrapper::-webkit-scrollbar-track,
.oh-admin-redesign .oa-dataset-picker::-webkit-scrollbar-track,
.oh-admin-redesign .oh-scroll-region::-webkit-scrollbar-track,
.oh-admin-redesign .action-list::-webkit-scrollbar-track,
.oh-admin-redesign .config-section-list::-webkit-scrollbar-track {
    background: #e8f1fd !important;
    border-radius: 999px !important;
}
.oh-admin-redesign .oh-table-wrap::-webkit-scrollbar-thumb,
.oh-admin-redesign .data-table-wrapper::-webkit-scrollbar-thumb,
.oh-admin-redesign .oa-dataset-picker::-webkit-scrollbar-thumb,
.oh-admin-redesign .oh-scroll-region::-webkit-scrollbar-thumb,
.oh-admin-redesign .action-list::-webkit-scrollbar-thumb,
.oh-admin-redesign .config-section-list::-webkit-scrollbar-thumb {
    background: #8aa0bc !important;
    border: 2px solid #e8f1fd !important;
    border-radius: 999px !important;
}

.oh-admin-redesign .oh-table,
.oh-admin-redesign .data-table {
    width: 100% !important;
    min-width: 760px !important;
    border-collapse: collapse !important;
    margin: 0 !important;
}

.oh-admin-redesign .oh-table thead th,
.oh-admin-redesign .data-table thead th {
    position: sticky !important;
    top: 0 !important;
    z-index: 2 !important;
    background: #e8f2ff !important;
    color: #06235a !important;
    font-size: .78rem !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
}

.oh-admin-redesign .oh-table th,
.oh-admin-redesign .oh-table td,
.oh-admin-redesign .data-table th,
.oh-admin-redesign .data-table td {
    padding: .43rem .52rem !important;
    border-bottom: 1px solid #e5edf7 !important;
    font-size: .82rem !important;
    line-height: 1.25 !important;
    vertical-align: middle !important;
}

.oh-admin-redesign .oh-table td,
.oh-admin-redesign .data-table td {
    white-space: nowrap !important;
}

.oh-admin-redesign .oh-table tr:hover td,
.oh-admin-redesign .data-table tr:hover td {
    background: #f6fbff !important;
}

.oh-admin-redesign .oh-empty {
    text-align: center !important;
    color: #6b7e95 !important;
    padding: 1rem !important;
}

.oh-admin-redesign .oh-text-wide,
.oh-admin-redesign td:has(.oh-muted) {
    min-width: 240px !important;
    max-width: 640px !important;
    white-space: normal !important;
}

.oh-admin-redesign code,
.oh-admin-redesign pre,
.oh-admin-redesign .oh-code {
    max-width: 100% !important;
    max-height: 320px !important;
    overflow: auto !important;
    white-space: pre-wrap !important;
    word-break: break-word !important;
}

/* -------------------------------------------------------------------------
   Badges / KPI
   ------------------------------------------------------------------------- */
.oh-admin-redesign .oh-badge,
.oh-admin-redesign .status-badge,
.oh-admin-redesign .config-status-badge {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 23px !important;
    padding: .16rem .48rem !important;
    border-radius: 999px !important;
    font-size: .72rem !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
    background: #edf6ff !important;
    color: #063c7f !important;
    border: 1px solid #c8e4ff !important;
}
.oh-admin-redesign .oh-badge-good,
.oh-admin-redesign .oh-badge-success,
.oh-admin-redesign .status-badge.ok,
.oh-admin-redesign .status-badge.info { background: #eafaf0 !important; border-color: #bce7c8 !important; color: var(--admin-success) !important; }
.oh-admin-redesign .oh-badge-warn,
.oh-admin-redesign .oh-badge-warning,
.oh-admin-redesign .status-badge.warning { background: #fff8e7 !important; border-color: #f5d790 !important; color: var(--admin-warning) !important; }
.oh-admin-redesign .oh-badge-danger,
.oh-admin-redesign .status-badge.critical,
.oh-admin-redesign .status-badge.error { background: #fff0f0 !important; border-color: #ffc7c7 !important; color: var(--admin-danger) !important; }
.oh-admin-redesign .oh-badge-muted { background: #eef3f8 !important; border-color: #d5e1ee !important; color: #52677f !important; }

.oh-admin-redesign .oh-admin-kpi-grid,
.oh-admin-redesign .oh-kpi-grid,
.oh-admin-redesign .oh-stat-grid,
.oh-admin-redesign .oh-status-grid,
.oh-admin-redesign .audit-summary-grid,
.oh-admin-redesign .oa-summary-grid,
.oh-admin-redesign .config-summary-grid,
.oh-admin-redesign .summary-grid.oh-admin-kpi-grid {
    width: 100% !important;
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)) !important;
    gap: var(--admin-gap) !important;
    margin: 0 !important;
    align-items: stretch !important;
}

.oh-admin-redesign .oh-stat-card,
.oh-admin-redesign .summary-card,
.oh-admin-redesign .audit-kpi,
.oh-admin-redesign .oh-status-card,
.oh-admin-redesign .config-summary-card,
.oh-admin-redesign .oh-kpi,
.oh-admin-redesign .oa-summary-card .oh-kpi {
    min-height: 62px !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto !important;
    grid-template-rows: auto auto !important;
    gap: .16rem .55rem !important;
    align-items: center !important;
    text-decoration: none !important;
}

.oh-admin-redesign .oh-stat-card span,
.oh-admin-redesign .summary-card span,
.oh-admin-redesign .audit-kpi span,
.oh-admin-redesign .oh-status-card span,
.oh-admin-redesign .config-summary-card span,
.oh-admin-redesign .oh-kpi span {
    grid-column: 1 / 2 !important;
    grid-row: 1 !important;
    min-width: 0 !important;
    color: #35577b !important;
    font-size: .77rem !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.oh-admin-redesign .oh-stat-card strong,
.oh-admin-redesign .summary-card strong,
.oh-admin-redesign .audit-kpi strong,
.oh-admin-redesign .oh-status-card strong,
.oh-admin-redesign .config-summary-card strong,
.oh-admin-redesign .oh-kpi strong {
    grid-column: 2 / 3 !important;
    grid-row: 1 !important;
    min-width: max-content !important;
    text-align: right !important;
    color: #061f48 !important;
    font-size: 1.22rem !important;
    line-height: 1 !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
}

.oh-admin-redesign .oh-stat-card small,
.oh-admin-redesign .summary-card small,
.oh-admin-redesign .audit-kpi small,
.oh-admin-redesign .oh-status-card small,
.oh-admin-redesign .config-summary-card small,
.oh-admin-redesign .oh-kpi small {
    grid-column: 1 / 3 !important;
    grid-row: 2 !important;
    color: #536e8e !important;
    font-size: .74rem !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

/* -------------------------------------------------------------------------
   페이지별 재설계
   ------------------------------------------------------------------------- */
/* 데이터 관리 */
.oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type {
    grid-template-columns: minmax(520px, 1.05fr) minmax(420px, .95fr) !important;
}
.oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type > .oh-card { grid-column: auto !important; }
.oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:first-child .oh-field { grid-column: 1 / -1 !important; }
.oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:first-child .oh-field-full:nth-of-type(2) { grid-column: span 8 !important; }
.oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:first-child .oh-field-full.oh-actions { grid-column: span 4 !important; }
.oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:nth-child(2) .oh-field:nth-child(1),
.oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:nth-child(2) .oh-field:nth-child(2) { grid-column: span 6 !important; }
.oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:nth-child(2) .oh-field-full:nth-child(3) { grid-column: span 9 !important; }
.oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:nth-child(2) .oh-field-full.oh-actions { grid-column: span 3 !important; }
.oh-admin-redesign.oh-admin-page-data-management .oh-table-wrap { max-height: 38vh !important; min-height: 200px !important; }

/* 데이터 품질 점검 */
.oh-admin-redesign.oh-admin-page-data-quality .oh-admin-kpi-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
.oh-admin-redesign.oh-admin-page-data-quality > section.oh-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}
.oh-admin-redesign.oh-admin-page-data-quality > section.oh-grid > .oh-card {
    grid-column: auto !important;
    min-height: 180px !important;
    display: flex !important;
    flex-direction: column !important;
}
.oh-admin-redesign.oh-admin-page-data-quality .oh-quality-issue-grid {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)) !important;
    gap: .55rem !important;
}
.oh-admin-redesign.oh-admin-page-data-quality .oh-quality-issue {
    min-height: 74px !important;
    padding: .68rem !important;
    border: 1px solid #d6e6f8 !important;
    border-radius: 14px !important;
    background: #f8fbff !important;
    display: grid !important;
    grid-template-columns: auto minmax(0, 1fr) auto !important;
    gap: .25rem .45rem !important;
    text-align: left !important;
    color: inherit !important;
    text-decoration: none !important;
}
.oh-admin-redesign.oh-admin-page-data-quality .oh-quality-issue small { grid-column: 1 / -1 !important; }
.oh-admin-redesign.oh-admin-page-data-quality .oh-tabs {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: .35rem !important;
    align-items: center !important;
}
.oh-admin-redesign.oh-admin-page-data-quality .oh-tabs button { min-height: 30px !important; }
.oh-admin-redesign.oh-admin-page-data-quality .oh-table { min-width: 520px !important; }
.oh-admin-redesign.oh-admin-page-data-quality .oh-table-wrap { max-height: 34vh !important; }
.oh-admin-redesign.oh-admin-page-data-quality > section.oh-card:last-of-type .oh-table-wrap,
.oh-admin-redesign.oh-admin-page-data-quality > section.oh-card:nth-last-of-type(-n+4) .oh-table-wrap { max-height: 38vh !important; }

/* 접근 테스트 */
.oh-admin-redesign.oh-admin-page-access-check > .oh-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
.oh-admin-redesign.oh-admin-page-access-check > .oh-grid > .oh-card { grid-column: auto !important; }
.oh-admin-redesign.oh-admin-page-access-check .oh-card:first-child .oh-form-grid { grid-template-columns: minmax(220px, .9fr) minmax(260px, 1fr) auto !important; }
.oh-admin-redesign.oh-admin-page-access-check .oh-card:nth-child(2) .oh-form-grid { grid-template-columns: minmax(280px, 1fr) auto !important; }
.oh-admin-redesign.oh-admin-page-access-check .oh-card .oh-field-full { grid-column: auto !important; }

/* API 이용 신청 */
.oh-admin-redesign.oh-admin-page-openapi-requests .oa-summary-card { display: block !important; }
.oh-admin-redesign.oh-admin-page-openapi-requests .oa-summary-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
.oh-admin-redesign.oh-admin-page-openapi-requests > .oh-grid { grid-template-columns: minmax(0, 1.12fr) minmax(420px, .88fr) !important; }
.oh-admin-redesign.oh-admin-page-openapi-requests > .oh-grid > .oh-card:nth-child(1),
.oh-admin-redesign.oh-admin-page-openapi-requests > .oh-grid > .oh-card:nth-child(2) { grid-column: auto !important; }
.oh-admin-redesign.oh-admin-page-openapi-requests > .oh-grid > .oh-card:nth-child(3) { grid-column: 1 / -1 !important; }
.oh-admin-redesign.oh-admin-page-openapi-requests .oa-dataset-picker { max-height: 180px !important; padding: .4rem !important; }
.oh-admin-redesign.oh-admin-page-openapi-requests .oh-table-wrap { max-height: 260px !important; }

/* 시스템 관리 공통 */
.oh-admin-redesign.oh-admin-page-users > .oh-grid { grid-template-columns: minmax(0, 1.25fr) minmax(390px, .75fr) !important; }
.oh-admin-redesign.oh-admin-page-users > .oh-grid > .oh-card { grid-column: auto !important; }
.oh-admin-redesign.oh-admin-page-users .oh-table-wrap { max-height: 38vh !important; }

.oh-admin-redesign.oh-admin-page-organizations > .oh-grid,
.oh-admin-redesign.oh-admin-page-api-clients > .oh-grid,
.oh-admin-redesign.oh-admin-page-agency-links > .oh-grid {
    grid-template-columns: minmax(520px, .95fr) minmax(0, 1.05fr) !important;
}
.oh-admin-redesign.oh-admin-page-organizations > .oh-grid > .oh-card,
.oh-admin-redesign.oh-admin-page-api-clients > .oh-grid > .oh-card,
.oh-admin-redesign.oh-admin-page-agency-links > .oh-grid > .oh-card { grid-column: auto !important; }
.oh-admin-redesign.oh-admin-page-agency-links .oa-summary-card,
.oh-admin-redesign.oh-admin-page-api-clients .oa-summary-card { display: block !important; }
.oh-admin-redesign.oh-admin-page-agency-links .oa-summary-grid,
.oh-admin-redesign.oh-admin-page-api-clients .oa-summary-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
.oh-admin-redesign.oh-admin-page-agency-links .oa-dataset-picker { max-height: 180px !important; }
.oh-admin-redesign.oh-admin-page-agency-links textarea { min-height: 90px !important; height: 90px !important; }
.oh-admin-redesign.oh-admin-page-agency-links .oa-ip-test { display: grid !important; grid-template-columns: minmax(0, 1fr) auto !important; gap: .4rem !important; margin-top: .45rem !important; }
.oh-admin-redesign.oh-admin-page-agency-links .oh-table-wrap,
.oh-admin-redesign.oh-admin-page-api-clients .oh-table-wrap { max-height: 36vh !important; }

.oh-admin-redesign.oh-admin-page-datasets > .oh-grid { grid-template-columns: repeat(12, minmax(0, 1fr)) !important; }
.oh-admin-redesign.oh-admin-page-datasets > .oh-grid > .oh-card:nth-child(1) { grid-column: span 8 !important; }
.oh-admin-redesign.oh-admin-page-datasets > .oh-grid > .oh-card:nth-child(2) { grid-column: span 4 !important; }
.oh-admin-redesign.oh-admin-page-datasets > .oh-grid > .oh-card:nth-child(3) { grid-column: span 12 !important; }
.oh-admin-redesign.oh-admin-page-datasets > .oh-grid > .oh-card:nth-child(4) { grid-column: span 9 !important; }
.oh-admin-redesign.oh-admin-page-datasets > .oh-grid > .oh-card:nth-child(5) { grid-column: span 3 !important; }
.oh-admin-redesign.oh-admin-page-datasets > .oh-grid > .oh-card:nth-child(n+6) { grid-column: span 12 !important; }
.oh-admin-redesign.oh-admin-page-datasets .oh-table-wrap { max-height: 34vh !important; }

.oh-admin-redesign.oh-admin-page-data-linkage .oh-admin-kpi-grid,
.oh-admin-redesign.oh-admin-page-dataset-linkage .oh-admin-kpi-grid,
.oh-admin-redesign.oh-admin-page-link-hint-diagnostics .oh-admin-kpi-grid,
.oh-admin-redesign.oh-admin-page-analysis-file-integrity .oh-admin-kpi-grid,
.oh-admin-redesign.oh-admin-page-operational-review .oh-admin-kpi-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
.oh-admin-redesign.oh-admin-page-data-linkage > section.oh-grid,
.oh-admin-redesign.oh-admin-page-dataset-linkage > section.oh-grid,
.oh-admin-redesign.oh-admin-page-taxonomy-aliases > section.oh-grid {
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
}
.oh-admin-redesign.oh-admin-page-data-linkage > section.oh-grid > .oh-card-half,
.oh-admin-redesign.oh-admin-page-dataset-linkage > section.oh-grid > .oh-card-half,
.oh-admin-redesign.oh-admin-page-taxonomy-aliases > section.oh-grid > .oh-card-half { grid-column: span 6 !important; }
.oh-admin-redesign.oh-admin-page-data-linkage .oh-table-wrap,
.oh-admin-redesign.oh-admin-page-dataset-linkage .oh-table-wrap,
.oh-admin-redesign.oh-admin-page-taxonomy-aliases .oh-table-wrap,
.oh-admin-redesign.oh-admin-page-link-hint-diagnostics .oh-table-wrap,
.oh-admin-redesign.oh-admin-page-analysis-file-integrity .oh-table-wrap { max-height: 36vh !important; }

.oh-admin-redesign.oh-admin-page-data-record-maintenance .oh-card .oh-field-wide { grid-column: span 8 !important; }
.oh-admin-redesign.oh-admin-page-data-record-maintenance .oh-card .oh-field { grid-column: span 4 !important; }
.oh-admin-redesign.oh-admin-page-data-record-maintenance .oh-card:first-of-type .oh-actions,
.oh-admin-redesign.oh-admin-page-data-record-maintenance .oh-card:nth-of-type(2) .oh-actions { justify-content: flex-end !important; }

.oh-admin-redesign.oh-admin-page-dashboard .oh-grid:first-of-type,
.oh-admin-redesign.oh-admin-page-dashboard .oh-admin-kpi-grid,
.oh-admin-redesign.oh-admin-page-dashboard .summary-grid {
    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
}
.oh-admin-redesign.oh-admin-page-dashboard .oh-grid:first-of-type > .oh-stat-card,
.oh-admin-redesign.oh-admin-page-dashboard .oh-grid:first-of-type > article,
.oh-admin-redesign.oh-admin-page-dashboard .oh-grid:first-of-type > div { grid-column: auto !important; }
.oh-admin-redesign.oh-admin-page-dashboard .oh-status-grid,
.oh-admin-redesign.oh-admin-page-operational-workboard .oh-status-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
.oh-admin-redesign.oh-admin-page-dashboard .oh-grid:not(:first-of-type) { grid-template-columns: repeat(12, minmax(0, 1fr)) !important; }
.oh-admin-redesign.oh-admin-page-dashboard .oh-grid:not(:first-of-type) > .oh-card-half { grid-column: span 6 !important; }
.oh-admin-redesign.oh-admin-page-dashboard .oh-table-wrap { max-height: 38vh !important; }

/* 운영 문서/점검 페이지 */
.oh-admin-redesign .admin-page,
.oh-admin-redesign .ops-config-page {
    width: 100% !important;
    min-width: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: var(--admin-gap) !important;
    overflow: visible !important;
}
.oh-admin-redesign.oh-admin-page-ops-checklist .oh-grid:first-of-type,
.oh-admin-redesign.oh-admin-page-ops-checklist .oh-grid:nth-of-type(2) {
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
}
.oh-admin-redesign.oh-admin-page-ops-checklist .oh-card-half { grid-column: span 6 !important; }
.oh-admin-redesign.oh-admin-page-ops-checklist .oh-card-third { grid-column: span 4 !important; }
.oh-admin-redesign.oh-admin-page-ops-checklist .oh-step-list,
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-timeline {
    display: grid !important;
    gap: .6rem !important;
    margin: 0 !important;
}
.oh-admin-redesign.oh-admin-page-ops-checklist .oh-step-list { padding-left: 1.05rem !important; }
.oh-admin-redesign.oh-admin-page-ops-checklist .oh-step-list li,
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-step-body,
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-phase-card,
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-step-detail div,
.oh-admin-redesign.oh-admin-page-ops-checklist .oh-check-grid label,
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-checks label {
    border: 1px solid #dce8f6 !important;
    border-radius: 13px !important;
    background: #f8fbff !important;
}
.oh-admin-redesign.oh-admin-page-ops-checklist .oh-check-grid,
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-checks {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: .55rem !important;
}
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-banner {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(240px, .3fr) !important;
    gap: .75rem !important;
}
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-grid {
    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
}
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-step {
    display: grid !important;
    grid-template-columns: 2.7rem minmax(0, 1fr) !important;
    gap: .7rem !important;
}
.oh-admin-redesign.oh-admin-page-ops-runbook .runbook-step-detail {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: .55rem !important;
}
.oh-admin-redesign.oh-admin-page-operational-config-check .config-summary-grid,
.oh-admin-redesign.oh-admin-page-operational-workboard .summary-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}
.oh-admin-redesign.oh-admin-page-operational-workboard .panel .data-table-wrapper,
.oh-admin-redesign.oh-admin-page-operational-review .oh-table-wrap { max-height: 36vh !important; }
.oh-admin-redesign.oh-admin-page-operational-config-check .config-main-grid { grid-template-columns: minmax(0, 1fr) !important; }
.oh-admin-redesign.oh-admin-page-operational-config-check .config-section-list { max-height: none !important; }
.oh-admin-redesign.oh-admin-page-upload-operation-report .oh-table-wrap { max-height: 36vh !important; }

/* 스크롤 색상 */
.oh-admin-redesign,
.oh-admin-redesign .oh-table-wrap,
.oh-admin-redesign .data-table-wrapper,
.oh-admin-redesign .oa-dataset-picker,
.oh-admin-redesign .oh-scroll-region,
.oh-admin-redesign .action-list,
.oh-admin-redesign .config-section-list {
    scrollbar-width: thin !important;
    scrollbar-color: #8aa0bc #e8f1fd !important;
}

@media (max-width: 1500px) {
    .oh-admin-redesign.oh-admin-page-data-quality .oh-admin-kpi-grid,
    .oh-admin-redesign.oh-admin-page-data-quality > section.oh-grid,
    .oh-admin-redesign.oh-admin-page-data-linkage .oh-admin-kpi-grid,
    .oh-admin-redesign.oh-admin-page-dataset-linkage .oh-admin-kpi-grid,
    .oh-admin-redesign.oh-admin-page-link-hint-diagnostics .oh-admin-kpi-grid,
    .oh-admin-redesign.oh-admin-page-analysis-file-integrity .oh-admin-kpi-grid,
    .oh-admin-redesign.oh-admin-page-operational-review .oh-admin-kpi-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
    .oh-admin-redesign.oh-admin-page-dashboard .oh-grid:first-of-type,
    .oh-admin-redesign.oh-admin-page-dashboard .oh-admin-kpi-grid,
    .oh-admin-redesign.oh-admin-page-dashboard .summary-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    }
}

@media (max-width: 1180px) {
    .ke-content:has(.oh-admin-redesign) { padding: .65rem !important; }
    .oh-admin-redesign .oh-page-header,
    .oh-admin-redesign .page-heading-row {
        display: block !important;
    }
    .oh-admin-redesign .oh-actions,
    .oh-admin-redesign .page-actions {
        margin-top: .55rem !important;
        justify-content: flex-start !important;
    }
    .oh-admin-redesign .oh-grid,
    .oh-admin-redesign .admin-grid,
    .oh-admin-redesign .config-grid,
    .oh-admin-redesign .config-main-grid,
    .oh-admin-redesign .runbook-grid,
    .oh-admin-redesign .summary-grid,
    .oh-admin-redesign .oh-admin-kpi-grid,
    .oh-admin-redesign .oh-kpi-grid,
    .oh-admin-redesign .oh-stat-grid,
    .oh-admin-redesign .oh-status-grid,
    .oh-admin-redesign .audit-summary-grid,
    .oh-admin-redesign .oa-summary-grid,
    .oh-admin-redesign .config-summary-grid,
    .oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type,
    .oh-admin-redesign.oh-admin-page-access-check > .oh-grid,
    .oh-admin-redesign.oh-admin-page-openapi-requests > .oh-grid,
    .oh-admin-redesign.oh-admin-page-users > .oh-grid,
    .oh-admin-redesign.oh-admin-page-organizations > .oh-grid,
    .oh-admin-redesign.oh-admin-page-api-clients > .oh-grid,
    .oh-admin-redesign.oh-admin-page-agency-links > .oh-grid,
    .oh-admin-redesign.oh-admin-page-ops-runbook .runbook-banner {
        grid-template-columns: 1fr !important;
    }
    .oh-admin-redesign .oh-grid > .oh-card,
    .oh-admin-redesign .oh-grid > article,
    .oh-admin-redesign .oh-grid > section,
    .oh-admin-redesign .oh-card-half,
    .oh-admin-redesign .oh-card-third,
    .oh-admin-redesign .oh-field,
    .oh-admin-redesign .oh-field-wide,
    .oh-admin-redesign .oh-field-full,
    .oh-admin-redesign .oh-check,
    .oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:first-child .oh-field-full:nth-of-type(2),
    .oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:first-child .oh-field-full.oh-actions,
    .oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:nth-child(2) .oh-field-full:nth-child(3),
    .oh-admin-redesign.oh-admin-page-data-management > section.oh-grid:first-of-type .oh-card:nth-child(2) .oh-field-full.oh-actions,
    .oh-admin-redesign.oh-admin-page-datasets > .oh-grid > .oh-card,
    .oh-admin-redesign.oh-admin-page-data-linkage > section.oh-grid > .oh-card-half,
    .oh-admin-redesign.oh-admin-page-dataset-linkage > section.oh-grid > .oh-card-half,
    .oh-admin-redesign.oh-admin-page-taxonomy-aliases > section.oh-grid > .oh-card-half {
        grid-column: 1 / -1 !important;
    }
    .oh-admin-redesign .oh-form-grid,
    .oh-admin-redesign .audit-filter-grid,
    .oh-admin-redesign.oh-admin-page-access-check .oh-card:first-child .oh-form-grid,
    .oh-admin-redesign.oh-admin-page-access-check .oh-card:nth-child(2) .oh-form-grid,
    .oh-admin-redesign.oh-admin-page-ops-checklist .oh-check-grid,
    .oh-admin-redesign.oh-admin-page-ops-runbook .runbook-checks,
    .oh-admin-redesign.oh-admin-page-ops-runbook .runbook-step-detail {
        grid-template-columns: 1fr !important;
    }
}

/* Specificity guard: app.css/global card rules must not force half/third cards to full width. */
.oh-admin-redesign .oh-grid > .oh-card.oh-card-half,
.oh-admin-redesign .oh-grid > article.oh-card-half,
.oh-admin-redesign .oh-grid > section.oh-card-half { grid-column: span 6 !important; }
.oh-admin-redesign .oh-grid > .oh-card.oh-card-third,
.oh-admin-redesign .oh-grid > article.oh-card-third,
.oh-admin-redesign .oh-grid > section.oh-card-third { grid-column: span 4 !important; }
.oh-admin-redesign .oh-grid > .oh-card.oh-card-full,
.oh-admin-redesign .oh-grid > article.oh-card-full,
.oh-admin-redesign .oh-grid > section.oh-card-full { grid-column: 1 / -1 !important; }

@media (max-width: 1180px) {
    .oh-admin-redesign .oh-grid > .oh-card.oh-card-half,
    .oh-admin-redesign .oh-grid > article.oh-card-half,
    .oh-admin-redesign .oh-grid > section.oh-card-half,
    .oh-admin-redesign .oh-grid > .oh-card.oh-card-third,
    .oh-admin-redesign .oh-grid > article.oh-card-third,
    .oh-admin-redesign .oh-grid > section.oh-card-third { grid-column: 1 / -1 !important; }
}
