:root{
  --slc-red:#b52631;
  --slc-red-dark:#891b24;
  --slc-gold:#f1cf86;
  --slc-cream:#fffaf0;
  --slc-ink:#243041;
  --slc-muted:#6b7280;
  --slc-bg:#f6f7f9;
}
body{background:var(--slc-bg);color:var(--slc-ink);font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
.navbar-brand img{width:46px;height:46px;object-fit:cover;border-radius:50%;background:#fff;border:2px solid rgba(255,255,255,.7)}
.brand-title{line-height:1.1;font-weight:800;letter-spacing:.1px}.brand-subtitle{font-size:.78rem;opacity:.82}
.bg-slc{background:linear-gradient(135deg,var(--slc-red-dark),var(--slc-red))}.text-slc{color:var(--slc-red)!important}.btn-slc{background:var(--slc-red);border-color:var(--slc-red);color:#fff}.btn-slc:hover{background:var(--slc-red-dark);border-color:var(--slc-red-dark);color:#fff}.btn-outline-slc{border-color:var(--slc-red);color:var(--slc-red)}.btn-outline-slc:hover{background:var(--slc-red);color:#fff}
.hero{background:linear-gradient(135deg,#fff,#fff7e6);border:1px solid #f1dfba}.hero-logo{width:108px;height:108px;object-fit:cover;border-radius:50%;box-shadow:0 10px 30px rgba(137,27,36,.15)}
.card{border:1px solid #e9e8e5;box-shadow:0 2px 12px rgba(31,41,55,.04)}.card-header{background:#fff;border-bottom-color:#eee}
.kpi-card{position:relative;overflow:hidden}.kpi-card:after{content:"";position:absolute;right:-18px;bottom:-24px;width:86px;height:86px;border-radius:50%;background:rgba(181,38,49,.06)}
.kpi-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--slc-muted);font-weight:700}.kpi-value{font-size:2rem;font-weight:800;color:var(--slc-red-dark);line-height:1.05}.kpi-foot{font-size:.82rem;color:var(--slc-muted);margin-top:.35rem}
.page-section{display:none}.page-section.active{display:block}.nav-page.active{font-weight:700;background:rgba(255,255,255,.16)!important;border-radius:.5rem}
.badge-soft-danger{background:#fbe6e8;color:#9c1f28}.badge-soft-warning{background:#fff2d6;color:#8a5a00}.badge-soft-success{background:#e7f6ec;color:#22643a}.badge-soft-info{background:#e8f2ff;color:#245a9a}.badge-soft-secondary{background:#eef0f3;color:#4b5563}
.check-item{border-left:4px solid #cfd4dc;background:#fff;border-radius:.6rem;padding:.85rem 1rem}.check-item.ok{border-left-color:#2e8b57}.check-item.warning{border-left-color:#d99817}.check-item.danger{border-left-color:#c9303e}.check-item.info{border-left-color:#4d7dbf}.check-title{font-weight:700}.check-detail{font-size:.9rem;color:var(--slc-muted)}
.progress{height:.62rem;background:#eceff3}.progress-bar.bg-slc{background:var(--slc-red)!important}
.file-drop{border:2px dashed #d6b9bc;border-radius:1rem;background:#fff9f1;padding:2rem;text-align:center;cursor:pointer;transition:.2s}.file-drop:hover,.file-drop.dragover{border-color:var(--slc-red);background:#fff4e0}.file-drop .display-6{color:var(--slc-red)}
.table thead th{font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:#687080;white-space:nowrap}.filename{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;word-break:break-all}.delta-pos{color:#177245;font-weight:700}.delta-neg{color:#b4232e;font-weight:700}.delta-zero{color:#6b7280}
.module-nav .list-group-item.active{background:var(--slc-red);border-color:var(--slc-red)}.module-nav .list-group-item{font-size:.92rem}
.chart-box{height:360px;position:relative}.mini-chart-box{height:260px;position:relative}
.auth-avatar{width:32px;height:32px;border-radius:50%;background:var(--slc-gold);color:var(--slc-red-dark);display:inline-flex;align-items:center;justify-content:center;font-weight:800}
.footer{color:#7a828e;font-size:.85rem}.sticky-toolbar{position:sticky;top:78px;z-index:10}
@media(max-width:991.98px){.sticky-toolbar{position:static}.hero-logo{width:82px;height:82px}.kpi-value{font-size:1.65rem}.chart-box{height:300px}}
.req-required{background:#f8d7da;color:#842029;border:1px solid #f1aeb5}
.req-conditional{background:#fff3cd;color:#664d03;border:1px solid #ffe69c}
.req-optional{background:#e9ecef;color:#495057;border:1px solid #d3d6d8}
.req-unknown{background:#e7f1ff;color:#084298;border:1px solid #b6d4fe}
.kpi-link{cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-color:#e5c8cb}
.kpi-link:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(137,27,36,.12)}
.kpi-link:focus-visible{outline:3px solid rgba(181,38,49,.25);outline-offset:2px}
.validation-table{min-width:1180px}.validation-table td{vertical-align:top}.validation-loc{white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem}.validation-value{max-width:230px;word-break:break-word}.validation-message{min-width:260px}.validation-identity{min-width:210px}
.validation-empty{padding:2.5rem 1rem;text-align:center;color:var(--slc-muted)}
.validation-filter-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .55rem;border-radius:999px;background:#f2f3f5;color:#59616c;font-size:.78rem}
.precheck-ok{color:#22643a;font-weight:700}.precheck-warn{color:#8a5a00;font-weight:700}.precheck-error{color:#9c1f28;font-weight:700}
.issue-clickable{cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.issue-clickable:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(36,48,65,.08);background:#fffdf8}
.issue-clickable:focus-visible{outline:3px solid rgba(181,38,49,.22);outline-offset:2px}
.issue-action-hint{font-size:.78rem;font-weight:700;color:var(--slc-red);margin-top:.45rem}.issue-action-hint.muted{color:#8a8f98;font-weight:600}
.issue-modal-header{background:linear-gradient(135deg,#fff,#fff8eb);border-bottom:1px solid #eee1c7}
.issue-detail-table{min-width:880px}.issue-detail-table td{vertical-align:top}.issue-detail-table code{font-size:.86em}.issue-person+.issue-person{margin-top:.35rem;padding-top:.35rem;border-top:1px dashed #e4e6e9}

/* V7 - bảng dữ liệu chi tiết trong menu Chi tiết CSDL */
.module-data-wrap{max-height:68vh;min-height:240px;border-top:1px solid #edf0f2}
.module-data-table{width:max-content;min-width:100%;font-size:.82rem}
.module-data-table thead th{position:sticky;top:0;z-index:3;background:#fff8ea;box-shadow:inset 0 -1px 0 #eadfc8;vertical-align:bottom;max-width:260px;white-space:normal}
.module-data-table td{min-width:130px;max-width:320px;white-space:normal;word-break:break-word;vertical-align:top}
.module-data-table .module-data-rowno{position:sticky;left:0;z-index:2;min-width:82px!important;width:82px!important;background:#fff;box-shadow:1px 0 0 #e6e8eb;white-space:nowrap}
.module-data-table thead .module-data-rowno{z-index:5;background:#fff1d7}
.module-data-field-name{font-weight:700;line-height:1.2;text-transform:none;letter-spacing:0;color:#4a4f57}
.module-data-req{font-size:.66rem;padding:.2rem .35rem}
.data-missing-required{background:#fff0f1!important;box-shadow:inset 0 0 0 1px #f1c1c5;color:#842029}
#moduleDataNotice .alert{margin-bottom:0!important}
@media(max-width:767.98px){.module-data-wrap{max-height:60vh}.module-data-table td{min-width:120px}}

/* Hotfix V7.1 - thu gọn / ẩn hiện menu aside Chi tiết CSDL */
.modules-layout{--module-sidebar-width:260px}
.modules-sidebar-close{line-height:1;padding:.2rem .55rem;font-size:1.1rem}
.modules-sidebar-col .card-header{background:#fff8ef}
.module-nav .list-group-item{padding:.8rem .95rem}
@media(min-width:992px){
  #page-modules .modules-layout{display:flex;flex-wrap:nowrap;align-items:flex-start}
  #page-modules .modules-sidebar-col{flex:0 0 var(--module-sidebar-width);max-width:var(--module-sidebar-width)}
  #page-modules .modules-content-col{flex:1 1 auto;max-width:calc(100% - var(--module-sidebar-width))}
}
#page-modules .modules-layout.sidebar-collapsed .modules-sidebar-col{display:none}
#page-modules .modules-layout.sidebar-collapsed .modules-content-col{flex:0 0 100%;max-width:100%}
@media(max-width:991.98px){
  #page-modules .modules-sidebar-col{display:block}
  #page-modules .modules-layout.sidebar-collapsed .modules-sidebar-col{display:none}
  #page-modules .modules-content-col{max-width:100%}
}
