﻿html,body{background:#f7f9fb;color:#1f2937;font-family:Segoe UI,Arial,sans-serif}.app-shell{min-height:100vh}.sidebar{width:260px;background:#fff;border-right:1px solid #e5e7eb;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;z-index:1030}.brand{padding:20px;border-bottom:1px solid #eef0f2;font-weight:700;color:#0f5132}.menu a{display:block;padding:10px 18px;color:#374151;text-decoration:none;border-radius:8px;margin:2px 10px}.menu a:hover{background:#f0f7f4;color:#0f5132}.content{margin-left:260px;padding:24px}.topbar{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:12px 18px;margin-bottom:20px}.card-clean{background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 1px 2px rgba(0,0,0,.03)}.stat{padding:20px}.stat .num{font-size:30px;font-weight:700}.page-title{font-size:24px;font-weight:700;margin:0}.table{font-size:14px}.table thead th{white-space:nowrap;background:#f8fafc}.form-label{font-weight:600}.badge-soft{background:#e8f5ee;color:#11623c;padding:6px 9px;border-radius:20px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f5f8f7}.login-card{width:min(430px,92vw);background:#fff;border:1px solid #e4e8e6;border-radius:18px;padding:32px;box-shadow:0 12px 35px rgba(0,0,0,.06)}@media(max-width:991px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.show{transform:translateX(0)}.content{margin-left:0;padding:14px}.mobile-menu{display:inline-block!important}}.mobile-menu{display:none}.grid-scroll{overflow:auto}.action-bar{display:flex;gap:8px;flex-wrap:wrap}.section-title{font-size:16px;font-weight:700;margin-bottom:12px}.muted{color:#6b7280}.required:after{content:' *';color:#dc3545}


/* Searchable ComboBox - áp dụng tự động cho asp:DropDownList/form-select */
.searchable-select{position:relative;width:100%;min-width:0}.searchable-native-select{position:absolute!important;left:-99999px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}.searchable-select-input-wrap{position:relative}.searchable-select-input{padding-right:2.25rem;background-color:#fff;cursor:text}.searchable-select-input:disabled{background-color:#e9ecef;cursor:not-allowed}.searchable-select-arrow{position:absolute;right:.8rem;top:50%;transform:translateY(-50%);font-size:.8rem;color:#6b7280;pointer-events:none}.searchable-select-menu{display:none;position:absolute;z-index:1060;left:0;right:0;top:calc(100% + 4px);max-height:280px;overflow-y:auto;background:#fff;border:1px solid #ced4da;border-radius:.5rem;box-shadow:0 10px 24px rgba(0,0,0,.12);padding:.25rem 0}.searchable-select.open .searchable-select-menu{display:block}.searchable-select-option{padding:.55rem .75rem;cursor:pointer;line-height:1.35;word-break:break-word}.searchable-select-option:hover,.searchable-select-option.active{background:#eef7f2;color:#0f5132}.searchable-select-option.selected{font-weight:600}.searchable-select-option.disabled{opacity:.5;cursor:not-allowed;background:transparent}.searchable-select-empty{padding:.65rem .75rem;color:#6b7280;font-style:italic}.searchable-select.open .searchable-select-input{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}


/* ===== BÁO CÁO TỔNG QUAN ===== */
.stat-link{display:block;height:100%;color:inherit;text-decoration:none}.stat-link:hover{color:inherit}.stat-card{padding:18px;position:relative;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.stat-link:hover .stat-card{transform:translateY(-2px);box-shadow:0 8px 24px rgba(15,23,42,.08);border-color:#cbd5e1}.stat-label{font-size:13px;color:#64748b;font-weight:600;line-height:1.35;min-height:36px}.stat-value{font-size:30px;line-height:1.1;font-weight:750;color:#0f172a;margin-top:6px}.stat-money{font-size:20px;font-weight:750;color:#0f172a}.stat-hint{font-size:12px;color:#64748b;margin-top:12px}.stat-ok{border-left:4px solid #198754}.stat-danger{border-left:4px solid #dc3545}.stat-warning{border-left:4px solid #ffc107}.stat-info{border-left:4px solid #0dcaf0}.dashboard-panel{min-height:100%}.dashboard-panel .table td,.dashboard-panel .table th{vertical-align:middle}.report-number-link{display:inline-flex;align-items:center;justify-content:center;min-width:38px;padding:3px 9px;border-radius:999px;background:#eef7f2;color:#0f5132;font-weight:700;text-decoration:none}.report-number-link:hover{background:#dcefe5;color:#0b3d26}.report-count{font-size:14px;color:#64748b}.report-table th{position:sticky;top:0;z-index:2}.report-table td{max-width:360px}.report-table td:nth-child(3),.report-table td:nth-child(11){white-space:normal}.text-warning{color:#b58100!important}@media print{.sidebar,.topbar,.no-print{display:none!important}.content{margin-left:0!important;padding:0!important}.card-clean{box-shadow:none!important;border:0!important}.report-table{font-size:11px!important}.report-table th{position:static!important}.grid-scroll{overflow:visible!important}body{background:#fff!important}}

/* ===== THÔNG BÁO QUYỀN / LỖI THÂN THIỆN ===== */
.app-feedback-host{position:fixed;right:18px;top:18px;z-index:2147483000;width:min(520px,calc(100vw - 36px));display:flex;flex-direction:column;gap:12px;pointer-events:none}.app-feedback{pointer-events:auto;background:#fff;border:1px solid #e2e8f0;border-left:5px solid #dc3545;border-radius:12px;box-shadow:0 18px 48px rgba(15,23,42,.18);opacity:0;transform:translateY(-8px);transition:.18s ease;overflow:hidden}.app-feedback.show{opacity:1;transform:translateY(0)}.app-feedback-warning{border-left-color:#f59e0b}.app-feedback-success{border-left-color:#198754}.app-feedback-info{border-left-color:#0d6efd}.app-feedback-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:#f8fafc;border-bottom:1px solid #eef2f7}.app-feedback-body{padding:14px;line-height:1.55;white-space:normal}.app-feedback-close{border:0;background:transparent;font-size:24px;line-height:1;color:#64748b;cursor:pointer}.permission-locked{position:relative;opacity:.72!important;cursor:pointer!important}.permission-locked:after{content:' 🔒';font-size:.9em}.permission-locked:hover{opacity:1!important}

/* ===== UX MOBILE / GIAO DỊCH 2026-08-26 ===== */
.sidebar-backdrop{display:none}
.menu-group{margin:2px 8px;border-radius:10px}.menu-group>summary{list-style:none;cursor:pointer;padding:9px 10px;font-size:13px;font-weight:700;color:#64748b;display:flex;align-items:center;justify-content:space-between;user-select:none}.menu-group>summary::-webkit-details-marker{display:none}.menu-group>summary:after{content:'›';font-size:20px;line-height:1;transition:transform .15s}.menu-group[open]>summary:after{transform:rotate(90deg)}.menu-group>summary:hover{background:#f8fafc;color:#0f5132}.menu-group .menu-group-links a{margin-left:2px;margin-right:2px;padding:9px 10px}.menu a.active{background:#e8f5ee;color:#0f5132;font-weight:700}.menu-quick{padding:6px 8px}.menu-quick a{margin:2px 2px}.sidebar-close{display:none}.mobile-bottom-nav{display:none}.ux-floating-action{display:none}.ux-help-toggle{display:none}

@media(max-width:991.98px){
  body.ux-sidebar-open{overflow:hidden}.sidebar{width:min(86vw,320px);box-shadow:0 20px 50px rgba(15,23,42,.2)}.sidebar-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.42);z-index:1025}.sidebar-backdrop.show{display:block}.sidebar-close{display:inline-flex!important}.brand{padding:14px 12px;position:sticky;top:0;background:#fff;z-index:3}.content{padding:10px 10px 82px}.topbar{padding:8px 10px;margin-bottom:12px;border-radius:10px;position:sticky;top:6px;z-index:1015;box-shadow:0 4px 16px rgba(15,23,42,.06)}
  .mobile-bottom-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;z-index:1020;left:8px;right:8px;bottom:8px;height:58px;background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 12px 30px rgba(15,23,42,.18);overflow:hidden}.mobile-bottom-nav a,.mobile-bottom-nav button{border:0;background:#fff;color:#475569;text-decoration:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-size:11px;line-height:1.1;padding:4px}.mobile-bottom-nav .ux-nav-icon{font-size:18px;line-height:1}.mobile-bottom-nav a.active{color:#0f6b41;background:#f0f9f4}.mobile-bottom-nav button{width:100%}
}

@media(max-width:767.98px){
  .page-title,h1.page-title{font-size:1.28rem;margin-bottom:.7rem!important}.content h2{font-size:1.28rem}.content h5{font-size:1rem}.content>.d-flex.mb-3{margin-bottom:.7rem!important}.card-clean.p-4{padding:12px!important}.card-clean.p-3{padding:10px!important}.card-clean{border-radius:12px}.ux-transaction-page .row.g-3{--bs-gutter-y:.65rem;--bs-gutter-x:.65rem}.ux-transaction-page .row.g-2{--bs-gutter-y:.5rem;--bs-gutter-x:.55rem}.ux-transaction-page .form-label{font-size:.84rem;margin-bottom:.22rem}.ux-transaction-page .form-text,.ux-transaction-page .small.text-muted{font-size:.75rem;line-height:1.3}.ux-transaction-page .mb-4{margin-bottom:.8rem!important}.ux-transaction-page .mb-3{margin-bottom:.65rem!important}.ux-transaction-page .mt-4{margin-top:.8rem!important}.ux-transaction-page .mt-3{margin-top:.65rem!important}.ux-transaction-page .p-3{padding:.7rem!important}.ux-transaction-page .py-4{padding-top:.75rem!important;padding-bottom:.75rem!important}.ux-transaction-page textarea.form-control{min-height:62px}.ux-transaction-page .btn{min-height:42px}.ux-transaction-page .btn-sm{min-height:36px}.ux-transaction-page .alert{padding:.6rem .75rem;font-size:.8rem;margin-bottom:.65rem}.ux-transaction-page .badge{white-space:normal;text-align:left}

  /* GridView -> thẻ để không phải kéo ngang trên điện thoại. */
  .ux-transaction-page .table-responsive{overflow:visible}.ux-mobile-cards{display:block!important;width:100%!important;border:0!important;background:transparent!important}.ux-mobile-cards>tbody{display:block!important;width:100%}.ux-mobile-cards tr{display:block;width:100%}.ux-mobile-cards .ux-table-header-row{display:none!important}.ux-mobile-cards tr:not(.ux-table-header-row){background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin:0 0 9px;overflow:hidden;box-shadow:0 1px 2px rgba(15,23,42,.03)}.ux-mobile-cards td{display:grid!important;grid-template-columns:minmax(92px,34%) minmax(0,1fr);gap:8px;align-items:start;width:100%!important;max-width:none!important;min-width:0!important;white-space:normal!important;border:0!important;border-bottom:1px solid #eef2f7!important;padding:.5rem .65rem!important;text-align:left!important}.ux-mobile-cards td:last-child{border-bottom:0!important}.ux-mobile-cards td:before{content:attr(data-label);font-size:.73rem;line-height:1.25;font-weight:700;color:#64748b;white-space:normal}.ux-mobile-cards td[data-label=""]{grid-template-columns:1fr}.ux-mobile-cards td[data-label=""]:before{display:none}.ux-mobile-cards td .form-select,.ux-mobile-cards td .form-control{width:100%!important;min-width:0!important}.ux-mobile-cards td .template-box{min-width:0!important}.ux-mobile-cards td .d-flex{justify-content:flex-start!important}.ux-mobile-cards td .btn{margin-bottom:2px}.ux-mobile-cards .text-end{text-align:left!important}

  /* Nút Lưu/Xác nhận luôn gần ngón tay, chỉ hiện khi nút gốc đang ngoài màn hình. */
  .ux-floating-action{position:fixed;left:10px;right:10px;bottom:74px;z-index:1019;padding:7px;background:rgba(255,255,255,.96);border:1px solid #dbe4ea;border-radius:14px;box-shadow:0 10px 28px rgba(15,23,42,.2);transform:translateY(18px);opacity:0;pointer-events:none;transition:.15s ease}.ux-floating-action.show{display:block;transform:translateY(0);opacity:1;pointer-events:auto}.ux-floating-action-btn{width:100%;min-height:46px;font-weight:700}

  /* Nội dung hướng dẫn dài có thể thu gọn trên mobile. */
  .ux-mobile-help.collapsed{max-height:48px;overflow:hidden;position:relative}.ux-mobile-help.collapsed:after{content:'';position:absolute;left:0;right:0;bottom:0;height:24px;background:linear-gradient(transparent,#fff)}.alert.ux-mobile-help.collapsed:after{background:linear-gradient(transparent,var(--bs-alert-bg,#fff))}.ux-help-toggle{display:inline-block!important;margin:-2px 0 8px}

  .app-feedback-host{top:auto!important;bottom:76px;left:10px;right:10px;width:auto!important}.app-feedback{border-radius:12px}.app-feedback-head{padding:8px 10px}.app-feedback-body{padding:10px;font-size:.86rem}
}

@media(min-width:380px) and (max-width:767.98px){
  .ux-transaction-page .row.g-2>[class*="col-md-1"]:not(.d-grid),
  .ux-transaction-page .row.g-2>[class*="col-md-2"]:not(.d-grid),
  .ux-transaction-page .row.g-2>[class*="col-md-3"]:not(.d-grid),
  .ux-transaction-page .row.g-3>[class*="col-md-1"]:not(.d-grid),
  .ux-transaction-page .row.g-3>[class*="col-md-2"]:not(.d-grid),
  .ux-transaction-page .row.g-3>[class*="col-md-3"]:not(.d-grid){flex:0 0 auto;width:50%}
}
@media(max-width:767.98px){
  .ux-partner-shell .navbar{min-height:52px}.ux-partner-shell .navbar-brand{font-size:.95rem;max-width:75vw;white-space:normal;line-height:1.1}.ux-partner-shell .partner-quick-menu{display:none!important}.ux-partner-shell .container-fluid.py-4{padding-top:.75rem!important;padding-bottom:78px!important}.mobile-bottom-nav-partner{grid-template-columns:repeat(4,1fr)}
}
@media(max-width:767.98px){
  .ux-mobile-jumpbar{position:sticky;top:58px;z-index:1010;display:grid;grid-template-columns:1fr 1fr;gap:6px;background:rgba(247,249,251,.94);backdrop-filter:blur(6px);padding:4px 0 7px;margin:-2px 0 6px}.ux-mobile-jumpbar button{border:1px solid #dbe4ea;background:#fff;border-radius:10px;padding:7px 8px;font-size:.8rem;font-weight:700;color:#475569}.ux-mobile-jumpbar button:active{background:#eef7f2;color:#0f5132}
  .ux-inline-feedback{position:fixed;z-index:2147482500;left:10px;right:10px;bottom:142px;display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:12px;background:#fff;border:1px solid #dbe4ea;box-shadow:0 12px 34px rgba(15,23,42,.2);font-size:.86rem;line-height:1.35}.ux-inline-feedback.is-error{border-left:5px solid #dc3545}.ux-inline-feedback.is-success{border-left:5px solid #198754}.ux-inline-feedback.is-info{border-left:5px solid #0d6efd}.ux-inline-feedback-text{flex:1;min-width:0}.ux-inline-feedback button{border:0;background:transparent;font-size:22px;line-height:1;color:#64748b;padding:0 0 0 6px}
}
