/* ===== 1. Variables ===== */
:root{
  --primary:#2563eb;--secondary:#64748b;--success:#22c55e;--danger:#f73209;--warning:#f59e0b;--info:#0ea5e9;
  --primary-light:#dbeafe;--success-light:#dcfce7;--danger-light:#fee2e2;--warning-light:#fef3c7;--info-light:#e0f2fe;
  --body-bg:#f1f5f9;--sidebar-bg:#0f172a;--sidebar-text:#94a3b8;--card-bg:#fff;--border-color:#e2e8f0;
  --text-primary:#0f172a;--text-secondary:#64748b;--muted:#94a3b8;
  --sidebar-w:230px;--sidebar-w-sm:72px;--header-h:64px;--radius:3px;--control-h:40px;--control-h-sm:32px;
  --bs-primary:#2563eb;--bs-primary-rgb:37,99,235;--bs-body-font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
}
/* ===== 2. Base ===== */
body{background:var(--body-bg);color:var(--text-secondary);font-size:.875rem;font-family:var(--bs-body-font-family)}
h1,h2,h3,h4,h5,h6{color:var(--text-primary);font-weight:600}
a{color:var(--primary);text-decoration:none}
*{scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}
.admin-sidebar *{scrollbar-color:#1e293b transparent}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
/* ===== 3. Layout ===== */
.admin-content-wrap{margin-left:var(--sidebar-w);transition:margin .25s ease;min-height:100vh}
.sidebar-collapsed .admin-content-wrap{margin-left:var(--sidebar-w-sm)}
.admin-content{padding:1.5rem}
@media(max-width:991.98px){.admin-content-wrap,.sidebar-collapsed .admin-content-wrap{margin-left:0}.admin-content{padding:1rem}}
/* ===== 4. Sidebar ===== */
.admin-sidebar{width:var(--sidebar-w);background:var(--sidebar-bg)!important;color:var(--sidebar-text);transition:width .25s ease;border:0}
@media(min-width:992px){.admin-sidebar{position:fixed;top:0;bottom:0;left:0;z-index:1030}.sidebar-collapsed .admin-sidebar{width:var(--sidebar-w-sm)}}
.admin-sidebar-header{height:var(--header-h);display:flex;align-items:center;gap:.65rem;padding:0 1.25rem;color:#fff;font-weight:700;font-size:1.05rem;border-bottom:1px solid rgba(148,163,184,.12);flex-shrink:0}
.logo-mark{width:32px;height:32px;border-radius:8px;background:var(--primary);display:grid;place-items:center;flex-shrink:0}
.admin-sidebar-menu{flex:1;overflow-y:auto;padding:.75rem}
.menu-title{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#64748b;padding:1rem .75rem .4rem}
.admin-sidebar .nav-link{display:flex;align-items:center;gap:.7rem;color:var(--sidebar-text);padding:.55rem .75rem;border-radius:8px;font-size:.85rem;transition:background .15s,color .15s}
.admin-sidebar .nav-link i.bi:first-child{font-size:1.05rem;width:20px;text-align:center}
.admin-sidebar .nav-link:hover{background:rgba(37,99,235,.12);color:#fff}
.admin-sidebar .nav-link.active{background:var(--primary);color:#fff}
.admin-sidebar .nav-link.parent-active{color:#fff}
.admin-sidebar .chevron{margin-left:auto;font-size:.7rem;transition:transform .2s}
.admin-sidebar .nav-link[aria-expanded=true] .chevron{transform:rotate(90deg)}
.nav-count{margin-left:auto;background:var(--danger);color:#fff;font-size:.68rem;border-radius:20px;padding:.05rem .45rem}
.admin-sidebar-footer{padding:.75rem 1.25rem;border-top:1px solid rgba(148,163,184,.12);font-size:.75rem}
@media(min-width:992px){
.sidebar-collapsed .admin-sidebar .label,.sidebar-collapsed .admin-sidebar .chevron,.sidebar-collapsed .admin-sidebar .nav-count,.sidebar-collapsed .admin-sidebar .menu-title,.sidebar-collapsed .admin-sidebar .collapse,.sidebar-collapsed .admin-sidebar-footer{display:none}
.sidebar-collapsed .admin-sidebar .nav-link{justify-content:center}}
/* ===== 5. Header ===== */
.admin-header{position:sticky;top:0;z-index:1020;height:var(--header-h);background:#fff;border-bottom:1px solid var(--border-color);display:flex;align-items:center;gap:1rem;padding:0 1.5rem}
.icon-btn{width:38px;height:38px;border-radius:8px;border:0;background:transparent;color:var(--text-secondary);display:grid;place-items:center;position:relative}
.icon-btn:hover{background:var(--body-bg);color:var(--text-primary)}
.icon-btn .dot{position:absolute;top:8px;right:9px;width:8px;height:8px;border-radius:50%;background:var(--danger);border:2px solid #fff}
.header-search{max-width:340px}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--primary-light);color:var(--primary);display:grid;place-items:center;font-weight:600;font-size:.8rem}
/* ===== 6. Cards ===== */
.custom-card,.card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius);box-shadow:0 1px 2px rgba(15,23,42,.04)}
.card-header{background:transparent;border-bottom:1px solid var(--border-color);padding:1rem 1.25rem;font-weight:600;color:var(--text-primary);display:flex;align-items:center;justify-content:space-between}
.card-body{padding:1.25rem}
.page-header{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;margin-bottom:1.5rem}
.page-header h1{font-size:1.25rem;margin:0}
.breadcrumb{font-size:.8rem;margin:0}
.stat-card{padding:1.1rem 1.25rem;display:flex;gap:1rem;align-items:flex-start;height:100%}
.stat-icon{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;font-size:1.15rem;flex-shrink:0}
.stat-value{font-size:1.4rem;font-weight:700;color:var(--text-primary);line-height:1.2}
.stat-label{font-size:.8rem}
.trend{font-size:.75rem;font-weight:600}.trend.up{color:#15803d}.trend.down{color:#b91c1c}
.bg-primary-soft{background:var(--primary-light);color:var(--primary)}.bg-success-soft{background:var(--success-light);color:#15803d}
.bg-warning-soft{background:var(--warning-light);color:#b45309}.bg-danger-soft{background:var(--danger-light);color:#b91c1c}.bg-info-soft{background:var(--info-light);color:#0369a1}
/* ===== 7. Buttons ===== */
.btn{--bs-btn-border-radius:8px;--bs-btn-font-size:.85rem;--bs-btn-padding-y:.5rem;--bs-btn-padding-x:.95rem;font-weight:500;transition:all .15s}
.btn-primary{--bs-btn-bg:#2563eb;--bs-btn-border-color:#2563eb;--bs-btn-hover-bg:#1d4ed8;--bs-btn-hover-border-color:#1d4ed8;--bs-btn-active-bg:#1e40af;--bs-btn-active-border-color:#1e40af;--bs-btn-focus-shadow-rgb:37,99,235}
.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#22c55e;--bs-btn-border-color:#22c55e;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#16a34a;--bs-btn-hover-border-color:#16a34a;--bs-btn-focus-shadow-rgb:34,197,94}
.btn-danger{--bs-btn-bg:#f73209;--bs-btn-border-color:#f73209;--bs-btn-hover-bg:#d92a06;--bs-btn-hover-border-color:#d92a06;--bs-btn-focus-shadow-rgb:247,50,9}
.btn-warning{--bs-btn-color:#fff;--bs-btn-bg:#f59e0b;--bs-btn-border-color:#f59e0b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#d97706;--bs-btn-hover-border-color:#d97706}
.btn-info{--bs-btn-color:#fff;--bs-btn-bg:#0ea5e9;--bs-btn-border-color:#0ea5e9;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0284c7;--bs-btn-hover-border-color:#0284c7}
.btn-secondary{--bs-btn-bg:#64748b;--bs-btn-border-color:#64748b;--bs-btn-hover-bg:#475569;--bs-btn-hover-border-color:#475569}
.btn-outline-primary{--bs-btn-color:#2563eb;--bs-btn-border-color:#2563eb;--bs-btn-hover-bg:#2563eb;--bs-btn-hover-border-color:#2563eb}
.btn-outline-secondary{--bs-btn-color:#64748b;--bs-btn-border-color:#e2e8f0;--bs-btn-hover-bg:#f1f5f9;--bs-btn-hover-color:#0f172a;--bs-btn-hover-border-color:#cbd5e1}
.btn-loading{pointer-events:none;opacity:.8}
/* ===== 8. Forms ===== */
.form-control,.form-select{height:42px;border:1px solid var(--border-color);border-radius:8px;font-size:.875rem;color:var(--text-primary)}
.form-control:focus,.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.form-check-input:checked{background-color:var(--primary);border-color:var(--primary)}
/* ===== 9. Tables ===== */
.table{--bs-table-bg:transparent;margin:0;font-size:.84rem}
.table thead th{background:#f8fafc;color:var(--text-secondary);font-weight:600;font-size:.75rem;border-bottom:1px solid var(--border-color);padding:.7rem 1.25rem;white-space:nowrap}
.table td{padding:.7rem 1.25rem;vertical-align:middle;border-color:var(--border-color)}
.table-hover>tbody>tr:hover>*{--bs-table-hover-bg:#f8fafc}
/* ===== 10. Badges ===== */
.status-badge,.badge{font-weight:500;font-size:.72rem;border-radius:6px;padding:.3em .6em}
.badge-success{background:var(--success-light);color:#15803d}.badge-danger{background:var(--danger-light);color:#b91c1c}
.badge-warning{background:var(--warning-light);color:#b45309}.badge-primary{background:var(--primary-light);color:#1d4ed8}
.badge-info{background:var(--info-light);color:#0369a1}.badge-secondary{background:#f1f5f9;color:#475569}
/* ===== 11. Dropdowns / Modals ===== */
.dropdown-menu{border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.1);padding:.4rem;font-size:.84rem}
.dropdown-item{border-radius:6px;padding:.45rem .7rem;color:var(--text-secondary)}
.dropdown-item:hover{background:var(--body-bg);color:var(--text-primary)}
.dropdown-item.text-danger:hover{background:var(--danger-light)}
.modal-content{border:1px solid var(--border-color);border-radius:14px;box-shadow:0 20px 50px rgba(15,23,42,.18)}
.modal-header,.modal-footer{border-color:var(--border-color);padding:1rem 1.25rem}.modal-body{padding:1.25rem}
.modal-title{font-size:1rem}
.confirm-icon{width:52px;height:52px;border-radius:50%;background:var(--danger-light);color:var(--danger);display:grid;place-items:center;font-size:1.5rem;margin:0 auto 1rem}
/* ===== 12. Toasts ===== */
.custom-toast.toastify{padding:.85rem 1rem .85rem .9rem;border-radius:10px;box-shadow:0 10px 30px rgba(15,23,42,.2);font-size:.85rem;display:flex;align-items:center;gap:.7rem;min-width:280px;max-width:calc(100vw - 2rem);overflow:hidden}
.custom-toast .t-title{font-weight:600;display:block}.custom-toast .t-icon{font-size:1.2rem}
.custom-toast .t-close{margin-left:auto;background:none;border:0;color:inherit;opacity:.8;font-size:1.1rem;line-height:1}
.custom-toast .t-bar{position:absolute;left:0;bottom:0;height:3px;background:rgba(255,255,255,.55);animation:tbar 4s linear forwards}
@keyframes tbar{from{width:100%}to{width:0}}
/* ===== 13. Plugins & utilities ===== */
.avatar-sm{width:28px;height:28px;font-size:.7rem}
.activity{border-left:2px solid var(--border-color);padding-left:1rem;margin-left:.35rem}
.activity li{position:relative;margin-bottom:1rem;list-style:none}
.activity li:before{content:"";position:absolute;left:-1.37rem;top:.35rem;width:9px;height:9px;border-radius:50%;background:var(--primary);border:2px solid #fff;box-shadow:0 0 0 1px var(--border-color)}
.empty-state{text-align:center;padding:2.5rem 1rem}
.empty-state i{font-size:2.2rem;color:var(--muted)}
.dt-table .page-link{border-radius:6px;margin:0 2px;color:var(--text-secondary)}
.page-item.active .page-link{background:var(--primary);border-color:var(--primary);color:#fff}
/* ===== 14. Responsive ===== */
@media(max-width:575.98px){.admin-header{padding:0 .75rem}.stat-value{font-size:1.2rem}.table td,.table thead th{padding:.6rem .8rem}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ===== 15. Select2 ===== */
.select2-container--bootstrap-5 .select2-selection{min-height:42px;border:1px solid var(--border-color);border-radius:8px;font-size:.875rem;color:var(--text-primary)}
.select2-container--bootstrap-5.select2-container--focus .select2-selection,.select2-container--bootstrap-5.select2-container--open .select2-selection{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice{background:var(--primary-light);color:#1d4ed8;border:0;border-radius:6px;font-size:.78rem}
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice__remove{color:#1d4ed8}
.select2-container--bootstrap-5 .select2-dropdown{border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.1);overflow:hidden}
.select2-container--bootstrap-5 .select2-results__option--highlighted{background:var(--primary)!important;color:#fff!important}
.select2-container--bootstrap-5 .select2-results__option--selected{background:var(--primary-light);color:#1d4ed8}
.select2-container--bootstrap-5.select2-container--disabled .select2-selection{background:#f8fafc}
/* ===== 16. Choices.js ===== */
.choices{margin:0}.choices__inner{min-height:42px;border:1px solid var(--border-color);border-radius:8px;background:#fff;font-size:.875rem;padding:5px 8px}
.choices.is-focused .choices__inner,.choices.is-open .choices__inner{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.choices__list--multiple .choices__item{background:var(--primary);border:0;border-radius:6px;font-size:.75rem}
.choices__list--dropdown{border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.1);z-index:1050}
.choices__list--dropdown .choices__item--selectable.is-highlighted{background:var(--primary-light);color:#1d4ed8}
.choices.is-disabled .choices__inner{background:#f8fafc}
/* ===== 17. Flatpickr ===== */
.flatpickr-calendar{border-radius:12px;box-shadow:0 8px 24px rgba(15,23,42,.12);border:1px solid var(--border-color);font-family:inherit}
.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange{background:var(--primary);border-color:var(--primary)}
.flatpickr-day.inRange{background:var(--primary-light);border-color:var(--primary-light);box-shadow:-5px 0 0 var(--primary-light),5px 0 0 var(--primary-light)}
.flatpickr-day.today{border-color:var(--primary)}.flatpickr-day:hover{background:var(--body-bg)}
.flatpickr-months .flatpickr-month,.flatpickr-weekdays,span.flatpickr-weekday{color:var(--text-primary);fill:var(--text-primary);background:#fff}
/* ===== 18. DataTables ===== */
.dt-wrap{padding:0}.dt-top,.dt-bottom{padding:.9rem 1.25rem;display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between}
.dt-top{border-bottom:1px solid var(--border-color)}.dt-bottom{border-top:1px solid var(--border-color)}
div.dataTables_wrapper .dataTables_length select{width:auto;display:inline-block;height:36px;margin:0 .4rem}
div.dataTables_wrapper .dataTables_filter input{height:36px;width:230px;max-width:100%;margin-left:.5rem}
div.dataTables_wrapper .dataTables_info{padding:0;font-size:.8rem}div.dataTables_wrapper .dataTables_paginate{padding:0}
table.dataTable{width:100%!important;border-collapse:collapse!important}
table.dataTable thead th{cursor:pointer}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after{color:var(--primary)}
table.dataTable tbody tr.selected>*{background:var(--primary-light)!important;color:inherit}
.dt-empty td{text-align:center;padding:2rem}
.bulk-bar{display:none;align-items:center;gap:.6rem;background:var(--primary-light);color:#1d4ed8;padding:.55rem 1.25rem;font-weight:500}
.bulk-bar.show{display:flex}
/* focus demo */
.focus-demo:focus{border-color:var(--primary)}

/* ===== 19. Polish: toast, table, pagination ===== */
.custom-toast.toastify{min-width:300px;max-width:min(380px,calc(100vw - 2rem));padding:.8rem 1rem;border-radius:10px}
.custom-toast .t-node{display:flex;align-items:flex-start;gap:.7rem;width:100%;line-height:1.35}
.custom-toast .t-icon{font-size:1.15rem;line-height:1.2;flex-shrink:0}
.custom-toast .t-title{font-size:.85rem;font-weight:600}
.custom-toast .t-msg{display:block;font-size:.8rem;opacity:.95}
.custom-toast .t-node>div{flex:1;min-width:0}
.custom-toast .t-close{margin-left:.5rem;font-size:1.2rem;line-height:1;flex-shrink:0;cursor:pointer}
.custom-toast .t-close:hover{opacity:1}
table.dataTable{margin:0!important;border-bottom:0!important}
table.dataTable thead th,table.dataTable tbody td{padding:.6rem 1.25rem;font-size:.82rem}
table.dataTable thead th{padding-right:1.75rem;border-bottom:1px solid var(--border-color)!important}
table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after{right:.6rem;font-size:.7rem;opacity:.25}
table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1;color:var(--primary)}
table.dataTable tbody tr:last-child td{border-bottom:0}
.table-card .table-responsive{border-radius:0}
.dt-bottom{padding:.75rem 1.25rem;font-size:.8rem}
div.dataTables_wrapper .dataTables_length{font-size:.8rem;margin:0}
div.dataTables_wrapper .dataTables_length select{height:34px;font-size:.8rem;padding:.25rem 1.75rem .25rem .6rem;border-radius:8px}
.pagination{gap:2px;margin:0}
.pagination .page-link{border:0;border-radius:6px!important;padding:.35rem .7rem;font-size:.8rem;color:var(--text-secondary);background:transparent;min-width:32px;text-align:center}
.pagination .page-link:hover{background:var(--body-bg);color:var(--text-primary)}
.pagination .page-item.active .page-link{background:var(--primary);color:#fff}
.pagination .page-item.disabled .page-link{background:transparent;color:var(--muted);opacity:.6}
.avatar-sm{flex-shrink:0}

/* ===== 20. Modal: tinted body with white cards ===== */
.modal-content{overflow:hidden}
.modal-header{background:var(--primary-light);border-bottom:0;padding:1rem 1.5rem}
.modal-header .modal-title{color:var(--text-primary);font-weight:600}
.modal-body{background:var(--body-bg);padding:1.5rem}
.modal-footer{background:var(--body-bg);border-top:0;padding:.25rem 1.5rem 1.5rem}
.modal-card{background:#fff;border:1px solid var(--border-color);border-radius:10px;box-shadow:0 1px 2px rgba(15,23,42,.05);padding:1rem 1.1rem}
.modal-card .form-label{color:var(--text-primary);font-weight:500;margin-bottom:.4rem}
.modal-confirm .modal-body,.modal-confirm .modal-footer{background:#fff}

/* ===== 21. Unified radius (3px) and control height (40px / 32px small) ===== */
:root{--bs-border-radius:3px;--bs-border-radius-sm:3px;--bs-border-radius-lg:3px;--bs-border-radius-xl:3px}
.card,.custom-card,.modal-content,.modal-card,.dropdown-menu,.flatpickr-calendar,.custom-toast.toastify,
.select2-container--bootstrap-5 .select2-dropdown,.choices__list--dropdown{border-radius:3px!important}
.dropdown-item,.badge,.status-badge,.badge-primary,.badge-success,.badge-danger,.badge-warning,.badge-info,.badge-secondary,
.icon-btn,.admin-sidebar .nav-link,.pagination .page-link,.stat-icon,.logo-mark{border-radius:3px!important}
.form-control,.form-select,.input-group-text,.btn{border-radius:3px}
.form-check-input:not([type=radio]):not(.form-switch .form-check-input){border-radius:3px}

/* Buttons share the control height */
.btn{--bs-btn-padding-y:0;--bs-btn-border-radius:3px;height:var(--control-h);display:inline-flex;align-items:center;justify-content:center;gap:.4rem;line-height:1}
.btn-sm{height:var(--control-h-sm);--bs-btn-padding-x:.75rem;--bs-btn-font-size:.8rem}
.btn.p-1,.btn-close{height:auto}.dropdown-toggle::after{margin-left:.2rem}

/* Native inputs and selects */
.form-control,.form-select{height:var(--control-h);min-height:var(--control-h);padding-top:0;padding-bottom:0;line-height:calc(var(--control-h) - 2px)}
.form-control-sm,.form-select-sm{height:var(--control-h-sm);min-height:var(--control-h-sm);line-height:calc(var(--control-h-sm) - 2px);font-size:.8rem}
textarea.form-control{height:auto;min-height:calc(var(--control-h) * 2);padding:.6rem .75rem;line-height:1.5}
input[type=file].form-control{padding:0 .75rem 0 0;line-height:calc(var(--control-h) - 2px)}
input[type=file].form-control::file-selector-button{height:calc(var(--control-h) - 2px);margin:0 .75rem 0 0;border:0;border-right:1px solid var(--border-color);background:#f8fafc;padding:0 .9rem}
.input-group>.form-control,.input-group>.form-select,.input-group>.btn,.input-group-text{height:var(--control-h)}
.input-group-text{background:#f8fafc;border-color:var(--border-color);color:var(--text-secondary);padding:0 .75rem}

/* Select2 */
.select2-container--bootstrap-5 .select2-selection--single{height:var(--control-h)!important;min-height:var(--control-h)!important;padding:0 2.25rem 0 .75rem!important;display:flex;align-items:center;border-radius:3px!important}
.select2-container--bootstrap-5 .select2-selection--single .select2-selection__rendered{padding:0!important;line-height:1.2!important}
.select2-container--bootstrap-5 .select2-selection--single .select2-selection__clear{position:absolute;right:2rem;top:50%;transform:translateY(-50%);margin:0}
.select2-container--bootstrap-5 .select2-selection--multiple{min-height:var(--control-h)!important;height:auto!important;padding:.2rem .5rem!important;border-radius:3px!important}
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered{display:flex!important;flex-wrap:wrap;align-items:center;gap:4px;margin:0!important;padding:0!important}
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice{display:inline-flex;align-items:center;height:26px;margin:0!important;padding:0 .5rem!important;border-radius:3px!important}
.select2-container--bootstrap-5 .select2-selection--multiple .select2-search--inline{margin:0}
.select2-container--bootstrap-5 .select2-selection--multiple .select2-search__field{height:26px!important;margin:0!important;line-height:26px;padding:0}
.select2-container--bootstrap-5 .select2-search--dropdown .select2-search__field{height:var(--control-h-sm);border-radius:3px}
.select2-container--bootstrap-5 .select2-results__option{padding:.45rem .75rem;font-size:.85rem}

/* Choices.js */
.choices{margin-bottom:0}
.choices__inner{min-height:var(--control-h);border-radius:3px;padding:.2rem .5rem;display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.choices[data-type*=select-one] .choices__inner{height:var(--control-h);padding:0 .75rem}
.choices[data-type*=select-one]:after{right:.9rem;margin-top:-2px}
.choices__list--single{padding:0;width:auto;flex:1}
.choices__list--multiple{display:flex;flex-wrap:wrap;gap:4px}
.choices__list--multiple .choices__item{margin:0;height:26px;display:inline-flex;align-items:center;padding:0 .5rem;border-radius:3px}
.choices__inner .choices__input{margin:0;padding:0;min-height:26px;background:transparent;font-size:.875rem}
.choices[data-type*=select-one] .choices__input{padding:.5rem .75rem;height:var(--control-h-sm);margin:0}
.choices__list--dropdown .choices__item{padding:.45rem .75rem;font-size:.85rem}

/* Flatpickr, DataTables, headers */
.flatpickr-input.form-control[readonly]{background:#fff}
div.dataTables_wrapper .dataTables_length select{height:var(--control-h-sm);min-height:var(--control-h-sm);line-height:1;padding:0 1.75rem 0 .6rem;border-radius:3px}
.header-search .form-control,.header-search .input-group-text{height:var(--control-h)}
.icon-btn{width:var(--control-h);height:var(--control-h)}

/* ===== 22. Auth (login) ===== */
.auth-wrap{min-height:100vh;display:flex;background:#fff}
.auth-hero{flex:1.1;position:relative;overflow:hidden;background:var(--sidebar-bg);color:#cbd5e1;padding:3rem;display:none;flex-direction:column;justify-content:space-between}
@media(min-width:992px){.auth-hero{display:flex}}
.auth-hero:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(148,163,184,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.08) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse at 30% 40%,#000 20%,transparent 75%)}
.auth-hero:after{content:"";position:absolute;width:520px;height:520px;right:-160px;top:-140px;background:radial-gradient(circle,rgba(37,99,235,.45),transparent 65%)}
.auth-hero>*{position:relative;z-index:1}
.auth-hero h2{color:#fff;font-size:2rem;line-height:1.25;max-width:460px;font-weight:700}
.auth-hero h2 span{color:#60a5fa}
.term{background:rgba(15,23,42,.85);border:1px solid rgba(148,163,184,.2);border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;max-width:460px;box-shadow:0 20px 40px rgba(0,0,0,.35)}
.term-bar{display:flex;gap:6px;align-items:center;padding:.6rem .85rem;border-bottom:1px solid rgba(148,163,184,.15);color:#64748b}
.term-bar i{width:9px;height:9px;border-radius:50%;background:#334155;display:inline-block}
.term-body{padding:.9rem 1rem;line-height:1.9}.term .ok{color:#22c55e}.term .cmd{color:#60a5fa}.term .mut{color:#64748b}
.term .cur{display:inline-block;width:7px;height:14px;background:#60a5fa;vertical-align:middle;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.hero-stats{display:flex;gap:2rem}.hero-stats strong{display:block;color:#fff;font-size:1.25rem}.hero-stats small{color:#64748b}
.auth-form-side{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem;background:var(--body-bg)}
.auth-card{width:100%;max-width:420px;background:#fff;border:1px solid var(--border-color);border-radius:3px;box-shadow:0 1px 2px rgba(15,23,42,.04),0 12px 32px rgba(15,23,42,.06);padding:2rem}
.auth-card h1{font-size:1.4rem;margin-bottom:.25rem}
.divider-text{display:flex;align-items:center;gap:.75rem;color:var(--muted);font-size:.75rem;margin:1.25rem 0}
.divider-text:before,.divider-text:after{content:"";flex:1;height:1px;background:var(--border-color)}
.secure-note{display:flex;gap:.5rem;align-items:center;justify-content:center;font-size:.75rem;color:var(--muted);margin-top:1.25rem}

/* ===== 23. Error pages ===== */
.error-page{min-height:100vh;display:grid;place-items:center;padding:2rem;position:relative;overflow:hidden;background:var(--body-bg)}
.error-page:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(100,116,139,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(100,116,139,.09) 1px,transparent 1px);background-size:40px 40px;mask-image:radial-gradient(circle at 50% 45%,#000 10%,transparent 70%)}
.error-box{position:relative;text-align:center;max-width:520px;width:100%}
.error-num{font-size:clamp(5rem,18vw,9rem);font-weight:800;line-height:1;letter-spacing:-.04em;color:transparent;-webkit-text-stroke:2px var(--accent);position:relative;display:inline-block}
.error-icon{width:60px;height:60px;border-radius:3px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-size:1.7rem;margin:0 auto 1.25rem}
.error-box h1{font-size:1.5rem;margin:.75rem 0 .5rem}
.error-box p{max-width:420px;margin:0 auto 1.75rem}
.error-code-tag{display:inline-block;font-family:ui-monospace,Menlo,monospace;font-size:.72rem;background:var(--accent-soft);color:var(--accent);padding:.2rem .6rem;border-radius:3px;margin-bottom:.5rem}

/* ===== 24. Sidebar submenu: stable size while Bootstrap collapses ===== */
/* Styles target nested .nav (not .collapse), so nothing changes when .collapse becomes .collapsing */
.admin-sidebar .nav-link{white-space:nowrap}
.admin-sidebar .nav .nav{margin:0 0 0 1.1rem;padding:.2rem 0 .2rem .6rem;border-left:1px solid rgba(148,163,184,.18)}
.admin-sidebar .nav .nav .nav-link{font-size:.85rem;padding:.55rem .75rem}
.admin-sidebar .collapsing{transition-duration:.25s}

/* ===== 25. Sidebar: chevron icon must not inherit the leading-icon style ===== */
/* Level-2 toggles (e.g. Renewals) have text first, so their chevron became :first-child and got the big 1.05rem leading-icon size */
.admin-sidebar .nav-link>i.bi:first-child:not(.chevron){font-size:1.05rem;width:20px;text-align:center}
.admin-sidebar .nav-link>i.chevron.bi{margin-left:auto;width:auto;font-size:.7rem;line-height:1;flex-shrink:0;transition:transform .2s ease}
.admin-sidebar .nav-link[aria-expanded=true]>i.chevron{transform:rotate(90deg)}
.admin-sidebar .nav .nav .nav-link{line-height:1.4;min-height:36px}
.admin-sidebar .collapse,.admin-sidebar .collapsing{overflow:hidden}

/* ===== 26. Sidebar: no width shift when the scrollbar appears ===== */
.admin-sidebar-menu{overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;padding-right:.35rem;scrollbar-width:thin;scrollbar-color:#1e293b transparent}
.admin-sidebar-menu::-webkit-scrollbar{width:6px}
.admin-sidebar-menu::-webkit-scrollbar-track{background:transparent}
.admin-sidebar-menu::-webkit-scrollbar-thumb{background:#1e293b;border-radius:3px}
.admin-sidebar-menu:hover::-webkit-scrollbar-thumb{background:#334155}
@media(min-width:992px){.sidebar-collapsed .admin-sidebar-menu{scrollbar-gutter:auto;padding-right:.75rem;overflow-x:hidden}}

/* ===== 27. Blurred backdrop + SweetAlert2 theme ===== */
.modal-backdrop{--bs-backdrop-bg:#0f172a;--bs-backdrop-opacity:.45}
.modal-backdrop.show{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.swal2-popup.swal-pop{width:24rem;max-width:calc(100vw - 2rem);border-radius:3px;padding:1.75rem 1.5rem 1.5rem;font-family:var(--bs-body-font-family);box-shadow:0 20px 50px rgba(15,23,42,.25)}
.swal-pop .swal2-title{font-size:1.15rem;font-weight:600;color:var(--text-primary);padding:0}
.swal-pop .swal2-html-container{font-size:.875rem;color:var(--text-secondary);margin:.5rem 0 0}
.swal-pop .swal2-actions{gap:.5rem;margin-top:1.5rem;width:100%}
.swal-pop .swal2-actions .btn{flex:1}
.swal2-icon.swal-del-icon{width:56px;height:56px;margin:0 auto 1rem;border:0;border-radius:50%;background:var(--danger-light);color:var(--danger)}
.swal-del-icon .swal2-icon-content{font-size:1.6rem}
.swal-pop .btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}

/* ===== 28. Blur on every Bootstrap backdrop (modal + offcanvas); icon variants ===== */
.modal-backdrop,.offcanvas-backdrop{--bs-backdrop-bg:#0f172a;--bs-backdrop-opacity:.5}
.modal-backdrop.show,.offcanvas-backdrop.show{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
.swal2-icon.swal-icon-primary{background:var(--primary-light);color:var(--primary)}
.swal2-icon.swal-icon-warning{background:var(--warning-light);color:#b45309}
.swal2-icon.swal-icon-success{background:var(--success-light);color:#15803d}
.swal2-icon.swal-icon-danger{background:var(--danger-light);color:var(--danger)}

/* ===== 29. SweetAlert inputs, info variant, code blocks ===== */
.swal2-icon.swal-icon-info{background:var(--info-light);color:#0369a1}
.swal-pop .swal2-input,.swal-pop .swal2-select,.swal-pop .swal2-textarea{width:100%;margin:.5rem 0 0;box-sizing:border-box;font-size:.875rem;border:1px solid var(--border-color);border-radius:3px;box-shadow:none;color:var(--text-primary)}
.swal-pop .swal2-input,.swal-pop .swal2-select{height:var(--control-h);padding:0 .75rem}
.swal-pop .swal2-textarea{min-height:90px;padding:.6rem .75rem}
.swal-pop .swal2-input:focus,.swal-pop .swal2-select:focus,.swal-pop .swal2-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.swal-pop .swal2-input-label{justify-content:flex-start;margin:1rem 0 0;font-size:.8rem;font-weight:500;color:var(--text-primary)}
.swal-pop .swal2-validation-message{background:var(--danger-light);color:#b91c1c;font-size:.8rem;margin:.75rem 0 0;border-radius:3px}
.swal-pop .swal2-timer-progress-bar{background:var(--primary)}
.swal-pop .swal2-loader{border-color:var(--primary) transparent var(--primary) transparent}
.code-block{background:var(--sidebar-bg);color:#e2e8f0;border-radius:3px;padding:.75rem .9rem;font:.75rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:auto;max-height:150px;margin:0;white-space:pre}

/* ===== 30. Input group: one focus ring around the whole group ===== */
.input-group{border-radius:3px;transition:box-shadow .15s}
.input-group:focus-within{box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.input-group:focus-within>.form-control,.input-group:focus-within>.form-select,.input-group:focus-within>.input-group-text,.input-group:focus-within>.btn{border-color:var(--primary)}
.input-group>.form-control:focus,.input-group>.form-select:focus{box-shadow:none;border-color:var(--primary)}
.input-group:focus-within:has(.is-invalid){box-shadow:0 0 0 3px rgba(247,50,9,.15)}
.input-group:focus-within:has(.is-invalid)>*{border-color:var(--danger)}
.input-group:focus-within:has(.is-valid){box-shadow:0 0 0 3px rgba(34,197,94,.18)}
.input-group:focus-within:has(.is-valid)>*{border-color:var(--success)}

/* ===== 31. Sidebar: open / active dropdown states ===== */
/* open parent (menu expanded) */
.admin-sidebar .nav-link[aria-expanded=true]{color:#fff;background:rgba(148,163,184,.1)}
/* parent that contains the active page: blue accent bar + tinted icon */
.admin-sidebar .nav-link.parent-active{color:#fff;background:rgba(37,99,235,.14);box-shadow:inset 3px 0 0 var(--primary)}
.admin-sidebar .nav-link.parent-active>i.bi:first-child{color:#60a5fa}
.admin-sidebar .nav-link.parent-active>i.chevron{color:#fff}
/* active child / grandchild: tinted row + accent bar on the guide line */
.admin-sidebar .nav .nav .nav-link{position:relative}
.admin-sidebar .nav .nav .nav-link.active{background:rgba(37,99,235,.2);color:#fff;font-weight:500}
.admin-sidebar .nav .nav .nav-link.active:before{content:"";position:absolute;left:calc(-.6rem - 1px);top:6px;bottom:6px;width:2px;border-radius:2px;background:var(--primary)}
.admin-sidebar .nav .nav .nav-link.parent-active{box-shadow:none;background:transparent;color:#fff}
.admin-sidebar .nav .nav .nav-link.parent-active>i.chevron{color:#60a5fa}
@media(min-width:992px){.sidebar-collapsed .admin-sidebar .nav-link.parent-active{background:rgba(37,99,235,.2);box-shadow:none}}

/* ===== 32. Login v2 ===== */
.auth-hero{background:radial-gradient(120% 90% at 0% 0%,#15233f 0%,#0f172a 55%,#0b1222 100%);padding:2.5rem 3rem}
.auth-hero>.orb{position:absolute;z-index:0;border-radius:50%;filter:blur(70px);animation:drift 14s ease-in-out infinite alternate}
.orb.o1{width:340px;height:340px;background:#2563eb;left:-100px;bottom:-80px;opacity:.5}
.orb.o2{width:240px;height:240px;background:#0ea5e9;right:6%;top:34%;opacity:.28;animation-delay:-6s}
@keyframes drift{to{transform:translate(40px,-30px) scale(1.15)}}
.pill{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .8rem;border:1px solid rgba(148,163,184,.25);border-radius:999px;font-size:.75rem;color:#cbd5e1;background:rgba(15,23,42,.55);backdrop-filter:blur(6px);margin-bottom:1.25rem}
.pill .live{width:7px;height:7px;border-radius:50%;background:#22c55e;animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.6)}70%,100%{box-shadow:0 0 0 8px rgba(34,197,94,0)}}
.auth-hero h2{font-size:2.4rem;letter-spacing:-.02em;margin-bottom:1.5rem}
.grad-text{background:linear-gradient(90deg,#60a5fa,#38bdf8);-webkit-background-clip:text;background-clip:text;color:transparent}
.feat{list-style:none;padding:0;margin:0 0 2rem;display:grid;gap:.75rem;font-size:.9rem}
.feat li{display:flex;gap:.75rem;align-items:center;color:#cbd5e1}
.feat i{width:28px;height:28px;border-radius:3px;background:rgba(37,99,235,.2);color:#60a5fa;display:grid;place-items:center;flex-shrink:0}
.term-wrap{position:relative;max-width:460px}
.term-body>div{opacity:0;transform:translateY(4px);animation:ln .4s forwards}
.term-body>div:nth-child(1){animation-delay:.3s}.term-body>div:nth-child(2){animation-delay:.9s}.term-body>div:nth-child(3){animation-delay:1.4s}.term-body>div:nth-child(4){animation-delay:1.9s}.term-body>div:nth-child(5){animation-delay:2.4s}
@keyframes ln{to{opacity:1;transform:none}}
.float-card{position:absolute;right:-22px;top:-26px;background:rgba(15,23,42,.92);border:1px solid rgba(148,163,184,.25);border-radius:6px;padding:.6rem .9rem;color:#fff;box-shadow:0 12px 30px rgba(0,0,0,.4);animation:bob 5s ease-in-out infinite}
.float-card small{display:block;color:#94a3b8;font-size:.7rem}.float-card strong{font-size:1.1rem}.float-card strong i{color:#22c55e;font-size:.8rem}
@keyframes bob{50%{transform:translateY(-8px)}}
.auth-form-side{flex-direction:column;background-color:var(--body-bg);background-image:radial-gradient(#cbd5e1 1px,transparent 1px);background-size:22px 22px}
.auth-card{border-top:3px solid var(--primary);padding:2.25rem 2rem}
.auth-card .brand-mark{width:44px;height:44px;border-radius:6px;background:var(--primary-light);color:var(--primary);display:grid;place-items:center;font-size:1.3rem;margin-bottom:1.25rem}
.auth-meta{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;justify-content:center;align-items:center;margin-top:1.25rem;font-size:.75rem;color:var(--muted)}
.auth-meta .live{width:7px;height:7px;border-radius:50%;background:var(--success);display:inline-block;margin-right:.35rem;animation:pulse 2s infinite}
.auth-meta a{color:var(--muted)}.auth-meta a:hover{color:var(--primary)}

/* ===== 33. Input group validation: border on every part, not only the input ===== */
.input-group:has(.is-invalid)>.input-group-text,.input-group:has(.is-invalid)>.btn,.input-group:has(.is-invalid)>.form-control,.input-group:has(.is-invalid)>.form-select{border-color:var(--danger)}
.input-group:has(.is-invalid)>.input-group-text{background:var(--danger-light);color:var(--danger)}
.input-group:has(.is-valid)>.input-group-text,.input-group:has(.is-valid)>.btn,.input-group:has(.is-valid)>.form-control,.input-group:has(.is-valid)>.form-select{border-color:var(--success)}
.input-group:has(.is-valid)>.input-group-text{background:var(--success-light);color:#15803d}
.input-group:has(.is-invalid)>.btn:hover,.input-group:has(.is-invalid)>.btn:focus{border-color:var(--danger);background:var(--danger-light);color:var(--danger)}
.input-group>.invalid-feedback,.input-group>.valid-feedback{width:100%}

/* ===== 34. Sidebar: ONE active style (solid primary) for every level ===== */
.admin-sidebar .nav-link.active,
.admin-sidebar .nav-link.parent-active,
.admin-sidebar .nav .nav .nav-link.active,
.admin-sidebar .nav .nav .nav-link.parent-active{background:var(--primary);color:#fff;box-shadow:none;font-weight:inherit}
.admin-sidebar .nav-link.active:hover,.admin-sidebar .nav-link.parent-active:hover{background:#1d4ed8}
.admin-sidebar .nav .nav .nav-link.active:before{content:none}
.admin-sidebar .nav-link.parent-active>i.bi:first-child,.admin-sidebar .nav-link.parent-active>i.chevron{color:#fff}
/* open parent that does not contain the active page: same soft tint as hover */
.admin-sidebar .nav-link[aria-expanded=true]:not(.parent-active):not(.active){background:rgba(37,99,235,.12);color:#fff}
@media(min-width:992px){.sidebar-collapsed .admin-sidebar .nav-link.parent-active{background:var(--primary);box-shadow:none}}

/* ===== 35. Input group: focus / valid / invalid on every part (works on group or child) ===== */
.input-group:focus-within,.input-group.is-focus{box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.input-group:focus-within>*:not(.invalid-feedback):not(.valid-feedback){border-color:var(--primary)}
.input-group.is-invalid>*:not(.invalid-feedback):not(.valid-feedback),.was-validated .input-group:has(:invalid)>*:not(.invalid-feedback):not(.valid-feedback){border-color:var(--danger)}
.input-group.is-invalid>.input-group-text,.was-validated .input-group:has(:invalid)>.input-group-text{background:var(--danger-light);color:var(--danger)}
.input-group.is-valid>*:not(.invalid-feedback):not(.valid-feedback),.was-validated .input-group:has(:valid:not(:placeholder-shown))>*:not(.invalid-feedback):not(.valid-feedback){border-color:var(--success)}
.input-group.is-valid>.input-group-text{background:var(--success-light);color:#15803d}
.input-group:focus-within:is(.is-invalid,:has(.is-invalid)){box-shadow:0 0 0 3px rgba(247,50,9,.15)}
.input-group:focus-within:is(.is-invalid,:has(.is-invalid))>*:not(.invalid-feedback){border-color:var(--danger)}
.input-group:focus-within:is(.is-valid,:has(.is-valid)){box-shadow:0 0 0 3px rgba(34,197,94,.18)}
.input-group:focus-within:is(.is-valid,:has(.is-valid))>*:not(.valid-feedback){border-color:var(--success)}
.input-group>.form-control.is-invalid,.input-group>.form-control.is-valid{background-position:right .75rem center}

/* ===== 36. Validation: theme colours everywhere, ring never wraps the message ===== */
:root{--bs-danger:#f73209;--bs-danger-rgb:247,50,9;--bs-success:#22c55e;--bs-success-rgb:34,197,94;
  --bs-form-invalid-color:#f73209;--bs-form-invalid-border-color:#f73209;--bs-form-valid-color:#15803d;--bs-form-valid-border-color:#22c55e}
.invalid-feedback,.valid-feedback{margin-top:.35rem;font-size:.78rem}
/* feedback placed AFTER the input group (recommended): <div class="input-group">...</div><div class="invalid-feedback">...</div> */
.input-group:has(.is-invalid)+.invalid-feedback,.input-group.is-invalid+.invalid-feedback,.was-validated .input-group:has(:invalid)+.invalid-feedback{display:block}
.input-group:has(.is-valid)+.valid-feedback,.input-group.is-valid+.valid-feedback{display:block}
/* single controls */
.form-control.is-invalid,.form-select.is-invalid,.was-validated .form-control:invalid{border-color:var(--danger)}
.form-control.is-invalid:focus,.form-select.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--danger);box-shadow:0 0 0 3px rgba(247,50,9,.15)}
.form-control.is-valid:focus,.form-select.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--success);box-shadow:0 0 0 3px rgba(34,197,94,.18)}
.form-control.is-invalid,.was-validated .form-control:invalid{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23f73209'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23f73209' stroke='none'/%3e%3c/svg%3e")}
.form-check-input.is-invalid{border-color:var(--danger)}.form-check-input.is-invalid:checked{background-color:var(--danger)}
.form-check-input.is-invalid~.form-check-label{color:var(--danger)}
/* Select2 and Choices.js */
.is-invalid+.select2-container--bootstrap-5 .select2-selection{border-color:var(--danger)!important}
.is-invalid+.select2-container--bootstrap-5.select2-container--focus .select2-selection,.is-invalid+.select2-container--bootstrap-5.select2-container--open .select2-selection{box-shadow:0 0 0 3px rgba(247,50,9,.15)!important}
.is-valid+.select2-container--bootstrap-5 .select2-selection{border-color:var(--success)!important}
.is-invalid~.invalid-feedback,.is-invalid+.select2-container~.invalid-feedback{display:block}
.choices:has(.is-invalid) .choices__inner{border-color:var(--danger)}
.choices:has(.is-invalid).is-focused .choices__inner,.choices:has(.is-invalid).is-open .choices__inner{box-shadow:0 0 0 3px rgba(247,50,9,.15)}
.choices:has(.is-valid) .choices__inner{border-color:var(--success)}

/* ===== 37. Sidebar: open parent = tinted block, active leaf = solid, open parents bold ===== */
/* whole open top-level group (parent row + its children) sits on one tinted block */
.admin-sidebar-menu>.nav>.nav-item:has(>.nav-link[aria-expanded=true]){background:rgba(37,99,235,.16);border-radius:3px;padding-bottom:.3rem;margin-bottom:.15rem}
/* open parent rows and parents that contain the active page: no own fill, white and bold */
.admin-sidebar .admin-sidebar-menu .nav .nav-link.parent-active,
.admin-sidebar .admin-sidebar-menu .nav .nav-link[aria-expanded=true]:not(.active),
.admin-sidebar .admin-sidebar-menu .nav .nav .nav-link.parent-active{background:transparent;color:#fff;font-weight:600;box-shadow:none}
.admin-sidebar .admin-sidebar-menu .nav .nav-link.parent-active:hover,
.admin-sidebar .admin-sidebar-menu .nav .nav-link[aria-expanded=true]:not(.active):hover{background:rgba(255,255,255,.05)}
.admin-sidebar .admin-sidebar-menu .nav .nav-link.parent-active>i.bi:first-child,.admin-sidebar .admin-sidebar-menu .nav .nav-link[aria-expanded=true]>i.bi:first-child{color:#fff}
/* children: subtle hover on the tinted block; active leaf stays solid blue */
.admin-sidebar .nav .nav .nav-link:not(.active):not(.parent-active):hover{background:rgba(255,255,255,.06);color:#fff}
.admin-sidebar .nav .nav{margin-right:.35rem;border-left-color:rgba(148,163,184,.14)}
.admin-sidebar .nav .nav .nav-link.active{background:var(--primary);color:#fff;font-weight:500}
/* collapsed (icons only): no block, active parent shows as solid icon tile */
@media(min-width:992px){
.sidebar-collapsed .admin-sidebar-menu>.nav>.nav-item:has(>.nav-link[aria-expanded=true]){background:none;padding-bottom:0;margin-bottom:0}
.sidebar-collapsed .admin-sidebar .admin-sidebar-menu .nav .nav-link.parent-active{background:var(--primary)}}

/* ===== 38. Theme variants: buttons + badges (generated from the colour palette) ===== */
:root{--bs-secondary:#64748b;--bs-secondary-rgb:100,116,139;--bs-warning:#f59e0b;--bs-warning-rgb:245,158,11;--bs-info:#0ea5e9;--bs-info-rgb:14,165,233;--bs-dark:#0f172a;--bs-dark-rgb:15,23,42;--bs-light:#f8fafc;--bs-light-rgb:248,250,252;
--bs-primary-bg-subtle:#dbeafe;--bs-secondary-bg-subtle:#f1f5f9;--bs-success-bg-subtle:#dcfce7;--bs-info-bg-subtle:#e0f2fe;--bs-warning-bg-subtle:#fef3c7;--bs-danger-bg-subtle:#fee2e2;--bs-dark-bg-subtle:#e2e8f0;--bs-light-bg-subtle:#f8fafc;
--bs-primary-text-emphasis:#1d4ed8;--bs-secondary-text-emphasis:#475569;--bs-success-text-emphasis:#15803d;--bs-info-text-emphasis:#0369a1;--bs-warning-text-emphasis:#b45309;--bs-danger-text-emphasis:#b91c1c;--bs-dark-text-emphasis:#0f172a;
--bs-primary-border-subtle:#bfdbfe;--bs-secondary-border-subtle:#cbd5e1;--bs-success-border-subtle:#bbf7d0;--bs-info-border-subtle:#bae6fd;--bs-warning-border-subtle:#fde68a;--bs-danger-border-subtle:#fecaca;--bs-dark-border-subtle:#cbd5e1}
.btn-light{--bs-btn-color:#0f172a;--bs-btn-bg:#f1f5f9;--bs-btn-border-color:#f1f5f9;--bs-btn-hover-color:#0f172a;--bs-btn-hover-bg:#e2e8f0;--bs-btn-hover-border-color:#e2e8f0;--bs-btn-active-bg:#cbd5e1;--bs-btn-active-border-color:#cbd5e1}
.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#0f172a;--bs-btn-border-color:#0f172a;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#1e293b;--bs-btn-hover-border-color:#1e293b;--bs-btn-active-bg:#334155;--bs-btn-active-border-color:#334155}
.btn-xs{height:26px;--bs-btn-padding-x:.6rem;--bs-btn-font-size:.72rem}.btn-lg{height:48px;--bs-btn-padding-x:1.4rem;--bs-btn-font-size:1rem}
.btn.rounded-pill{border-radius:50rem}.badge.rounded-pill{border-radius:50rem!important}
.btn-icon{width:var(--control-h);padding:0}.btn-icon.btn-sm{width:var(--control-h-sm)}
.btn-label{padding-left:0;overflow:hidden;position:relative}.btn-label .label-icon{align-self:stretch;display:flex;align-items:center;justify-content:center;width:38px;margin-right:.35rem;background:rgba(255,255,255,.18);font-size:1rem}
[class*=btn-soft-].btn-label .label-icon,[class*=btn-outline-].btn-label .label-icon{background:rgba(15,23,42,.06)}
.badge{display:inline-flex;align-items:center;gap:.3rem;line-height:1.4;vertical-align:middle}
.btn-outline-primary{--bs-btn-color:#2563eb;--bs-btn-border-color:#2563eb;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#2563eb;--bs-btn-hover-border-color:#2563eb;--bs-btn-active-color:#fff;--bs-btn-active-bg:#1d4ed8;--bs-btn-active-border-color:#1d4ed8;--bs-btn-disabled-color:#2563eb;--bs-btn-disabled-border-color:#2563eb}
.btn-soft-primary{--bs-btn-color:#1d4ed8;--bs-btn-bg:#dbeafe;--bs-btn-border-color:#dbeafe;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#2563eb;--bs-btn-hover-border-color:#2563eb;--bs-btn-active-color:#fff;--bs-btn-active-bg:#1d4ed8;--bs-btn-active-border-color:#1d4ed8;--bs-btn-disabled-color:#1d4ed8;--bs-btn-disabled-bg:#dbeafe}
.btn-ghost-primary{--bs-btn-color:#1d4ed8;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#1d4ed8;--bs-btn-hover-bg:#dbeafe;--bs-btn-hover-border-color:#dbeafe;--bs-btn-active-color:#1d4ed8;--bs-btn-active-bg:#dbeafe;--bs-btn-active-border-color:#dbeafe}
.btn-gradient-primary{--bs-btn-color:#fff;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:#fff;--bs-btn-active-bg:transparent;background-image:linear-gradient(135deg,#2563eb,#60a5fa)}.btn-gradient-primary:hover{filter:brightness(1.07)}
.badge-solid-primary{background:#2563eb;color:#fff}
.badge-primary{background:#dbeafe;color:#1d4ed8}
.badge-outline-primary{background:transparent;color:#1d4ed8;box-shadow:inset 0 0 0 1px #2563eb}
.badge-border-primary{background:#dbeafe;color:#1d4ed8;border-left:3px solid #2563eb}
.badge-label-primary{background:#2563eb;color:#fff;padding:.3em .7em .3em 1.2em;position:relative;clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%)}.badge-label-primary:before{content:'';position:absolute;left:.65rem;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:currentColor}
.badge-gradient-primary{background-image:linear-gradient(135deg,#2563eb,#60a5fa);color:#fff}
.btn-outline-secondary{--bs-btn-color:#64748b;--bs-btn-border-color:#64748b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#64748b;--bs-btn-hover-border-color:#64748b;--bs-btn-active-color:#fff;--bs-btn-active-bg:#475569;--bs-btn-active-border-color:#475569;--bs-btn-disabled-color:#64748b;--bs-btn-disabled-border-color:#64748b}
.btn-soft-secondary{--bs-btn-color:#475569;--bs-btn-bg:#f1f5f9;--bs-btn-border-color:#f1f5f9;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#64748b;--bs-btn-hover-border-color:#64748b;--bs-btn-active-color:#fff;--bs-btn-active-bg:#475569;--bs-btn-active-border-color:#475569;--bs-btn-disabled-color:#475569;--bs-btn-disabled-bg:#f1f5f9}
.btn-ghost-secondary{--bs-btn-color:#475569;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#475569;--bs-btn-hover-bg:#f1f5f9;--bs-btn-hover-border-color:#f1f5f9;--bs-btn-active-color:#475569;--bs-btn-active-bg:#f1f5f9;--bs-btn-active-border-color:#f1f5f9}
.btn-gradient-secondary{--bs-btn-color:#fff;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:#fff;--bs-btn-active-bg:transparent;background-image:linear-gradient(135deg,#64748b,#94a3b8)}.btn-gradient-secondary:hover{filter:brightness(1.07)}
.badge-solid-secondary{background:#64748b;color:#fff}
.badge-secondary{background:#f1f5f9;color:#475569}
.badge-outline-secondary{background:transparent;color:#475569;box-shadow:inset 0 0 0 1px #64748b}
.badge-border-secondary{background:#f1f5f9;color:#475569;border-left:3px solid #64748b}
.badge-label-secondary{background:#64748b;color:#fff;padding:.3em .7em .3em 1.2em;position:relative;clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%)}.badge-label-secondary:before{content:'';position:absolute;left:.65rem;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:currentColor}
.badge-gradient-secondary{background-image:linear-gradient(135deg,#64748b,#94a3b8);color:#fff}
.btn-outline-success{--bs-btn-color:#22c55e;--bs-btn-border-color:#22c55e;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#22c55e;--bs-btn-hover-border-color:#22c55e;--bs-btn-active-color:#fff;--bs-btn-active-bg:#16a34a;--bs-btn-active-border-color:#16a34a;--bs-btn-disabled-color:#22c55e;--bs-btn-disabled-border-color:#22c55e}
.btn-soft-success{--bs-btn-color:#15803d;--bs-btn-bg:#dcfce7;--bs-btn-border-color:#dcfce7;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#22c55e;--bs-btn-hover-border-color:#22c55e;--bs-btn-active-color:#fff;--bs-btn-active-bg:#16a34a;--bs-btn-active-border-color:#16a34a;--bs-btn-disabled-color:#15803d;--bs-btn-disabled-bg:#dcfce7}
.btn-ghost-success{--bs-btn-color:#15803d;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#15803d;--bs-btn-hover-bg:#dcfce7;--bs-btn-hover-border-color:#dcfce7;--bs-btn-active-color:#15803d;--bs-btn-active-bg:#dcfce7;--bs-btn-active-border-color:#dcfce7}
.btn-gradient-success{--bs-btn-color:#fff;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:#fff;--bs-btn-active-bg:transparent;background-image:linear-gradient(135deg,#22c55e,#4ade80)}.btn-gradient-success:hover{filter:brightness(1.07)}
.badge-solid-success{background:#22c55e;color:#fff}
.badge-success{background:#dcfce7;color:#15803d}
.badge-outline-success{background:transparent;color:#15803d;box-shadow:inset 0 0 0 1px #22c55e}
.badge-border-success{background:#dcfce7;color:#15803d;border-left:3px solid #22c55e}
.badge-label-success{background:#22c55e;color:#fff;padding:.3em .7em .3em 1.2em;position:relative;clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%)}.badge-label-success:before{content:'';position:absolute;left:.65rem;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:currentColor}
.badge-gradient-success{background-image:linear-gradient(135deg,#22c55e,#4ade80);color:#fff}
.btn-outline-info{--bs-btn-color:#0ea5e9;--bs-btn-border-color:#0ea5e9;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0ea5e9;--bs-btn-hover-border-color:#0ea5e9;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0284c7;--bs-btn-active-border-color:#0284c7;--bs-btn-disabled-color:#0ea5e9;--bs-btn-disabled-border-color:#0ea5e9}
.btn-soft-info{--bs-btn-color:#0369a1;--bs-btn-bg:#e0f2fe;--bs-btn-border-color:#e0f2fe;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0ea5e9;--bs-btn-hover-border-color:#0ea5e9;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0284c7;--bs-btn-active-border-color:#0284c7;--bs-btn-disabled-color:#0369a1;--bs-btn-disabled-bg:#e0f2fe}
.btn-ghost-info{--bs-btn-color:#0369a1;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#0369a1;--bs-btn-hover-bg:#e0f2fe;--bs-btn-hover-border-color:#e0f2fe;--bs-btn-active-color:#0369a1;--bs-btn-active-bg:#e0f2fe;--bs-btn-active-border-color:#e0f2fe}
.btn-gradient-info{--bs-btn-color:#fff;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:#fff;--bs-btn-active-bg:transparent;background-image:linear-gradient(135deg,#0ea5e9,#38bdf8)}.btn-gradient-info:hover{filter:brightness(1.07)}
.badge-solid-info{background:#0ea5e9;color:#fff}
.badge-info{background:#e0f2fe;color:#0369a1}
.badge-outline-info{background:transparent;color:#0369a1;box-shadow:inset 0 0 0 1px #0ea5e9}
.badge-border-info{background:#e0f2fe;color:#0369a1;border-left:3px solid #0ea5e9}
.badge-label-info{background:#0ea5e9;color:#fff;padding:.3em .7em .3em 1.2em;position:relative;clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%)}.badge-label-info:before{content:'';position:absolute;left:.65rem;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:currentColor}
.badge-gradient-info{background-image:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}
.btn-outline-warning{--bs-btn-color:#f59e0b;--bs-btn-border-color:#f59e0b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#f59e0b;--bs-btn-hover-border-color:#f59e0b;--bs-btn-active-color:#fff;--bs-btn-active-bg:#d97706;--bs-btn-active-border-color:#d97706;--bs-btn-disabled-color:#f59e0b;--bs-btn-disabled-border-color:#f59e0b}
.btn-soft-warning{--bs-btn-color:#b45309;--bs-btn-bg:#fef3c7;--bs-btn-border-color:#fef3c7;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#f59e0b;--bs-btn-hover-border-color:#f59e0b;--bs-btn-active-color:#fff;--bs-btn-active-bg:#d97706;--bs-btn-active-border-color:#d97706;--bs-btn-disabled-color:#b45309;--bs-btn-disabled-bg:#fef3c7}
.btn-ghost-warning{--bs-btn-color:#b45309;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#b45309;--bs-btn-hover-bg:#fef3c7;--bs-btn-hover-border-color:#fef3c7;--bs-btn-active-color:#b45309;--bs-btn-active-bg:#fef3c7;--bs-btn-active-border-color:#fef3c7}
.btn-gradient-warning{--bs-btn-color:#fff;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:#fff;--bs-btn-active-bg:transparent;background-image:linear-gradient(135deg,#f59e0b,#fbbf24)}.btn-gradient-warning:hover{filter:brightness(1.07)}
.badge-solid-warning{background:#f59e0b;color:#fff}
.badge-warning{background:#fef3c7;color:#b45309}
.badge-outline-warning{background:transparent;color:#b45309;box-shadow:inset 0 0 0 1px #f59e0b}
.badge-border-warning{background:#fef3c7;color:#b45309;border-left:3px solid #f59e0b}
.badge-label-warning{background:#f59e0b;color:#fff;padding:.3em .7em .3em 1.2em;position:relative;clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%)}.badge-label-warning:before{content:'';position:absolute;left:.65rem;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:currentColor}
.badge-gradient-warning{background-image:linear-gradient(135deg,#f59e0b,#fbbf24);color:#fff}
.btn-outline-danger{--bs-btn-color:#f73209;--bs-btn-border-color:#f73209;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#f73209;--bs-btn-hover-border-color:#f73209;--bs-btn-active-color:#fff;--bs-btn-active-bg:#d92a06;--bs-btn-active-border-color:#d92a06;--bs-btn-disabled-color:#f73209;--bs-btn-disabled-border-color:#f73209}
.btn-soft-danger{--bs-btn-color:#b91c1c;--bs-btn-bg:#fee2e2;--bs-btn-border-color:#fee2e2;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#f73209;--bs-btn-hover-border-color:#f73209;--bs-btn-active-color:#fff;--bs-btn-active-bg:#d92a06;--bs-btn-active-border-color:#d92a06;--bs-btn-disabled-color:#b91c1c;--bs-btn-disabled-bg:#fee2e2}
.btn-ghost-danger{--bs-btn-color:#b91c1c;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#b91c1c;--bs-btn-hover-bg:#fee2e2;--bs-btn-hover-border-color:#fee2e2;--bs-btn-active-color:#b91c1c;--bs-btn-active-bg:#fee2e2;--bs-btn-active-border-color:#fee2e2}
.btn-gradient-danger{--bs-btn-color:#fff;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:#fff;--bs-btn-active-bg:transparent;background-image:linear-gradient(135deg,#f73209,#fb7a5a)}.btn-gradient-danger:hover{filter:brightness(1.07)}
.badge-solid-danger{background:#f73209;color:#fff}
.badge-danger{background:#fee2e2;color:#b91c1c}
.badge-outline-danger{background:transparent;color:#b91c1c;box-shadow:inset 0 0 0 1px #f73209}
.badge-border-danger{background:#fee2e2;color:#b91c1c;border-left:3px solid #f73209}
.badge-label-danger{background:#f73209;color:#fff;padding:.3em .7em .3em 1.2em;position:relative;clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%)}.badge-label-danger:before{content:'';position:absolute;left:.65rem;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:currentColor}
.badge-gradient-danger{background-image:linear-gradient(135deg,#f73209,#fb7a5a);color:#fff}
.btn-outline-dark{--bs-btn-color:#0f172a;--bs-btn-border-color:#0f172a;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0f172a;--bs-btn-hover-border-color:#0f172a;--bs-btn-active-color:#fff;--bs-btn-active-bg:#1e293b;--bs-btn-active-border-color:#1e293b;--bs-btn-disabled-color:#0f172a;--bs-btn-disabled-border-color:#0f172a}
.btn-soft-dark{--bs-btn-color:#0f172a;--bs-btn-bg:#e2e8f0;--bs-btn-border-color:#e2e8f0;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0f172a;--bs-btn-hover-border-color:#0f172a;--bs-btn-active-color:#fff;--bs-btn-active-bg:#1e293b;--bs-btn-active-border-color:#1e293b;--bs-btn-disabled-color:#0f172a;--bs-btn-disabled-bg:#e2e8f0}
.btn-ghost-dark{--bs-btn-color:#0f172a;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#0f172a;--bs-btn-hover-bg:#e2e8f0;--bs-btn-hover-border-color:#e2e8f0;--bs-btn-active-color:#0f172a;--bs-btn-active-bg:#e2e8f0;--bs-btn-active-border-color:#e2e8f0}
.btn-gradient-dark{--bs-btn-color:#fff;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:#fff;--bs-btn-active-bg:transparent;background-image:linear-gradient(135deg,#0f172a,#475569)}.btn-gradient-dark:hover{filter:brightness(1.07)}
.badge-solid-dark{background:#0f172a;color:#fff}
.badge-dark{background:#e2e8f0;color:#0f172a}
.badge-outline-dark{background:transparent;color:#0f172a;box-shadow:inset 0 0 0 1px #0f172a}
.badge-border-dark{background:#e2e8f0;color:#0f172a;border-left:3px solid #0f172a}
.badge-label-dark{background:#0f172a;color:#fff;padding:.3em .7em .3em 1.2em;position:relative;clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%)}.badge-label-dark:before{content:'';position:absolute;left:.65rem;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:currentColor}
.badge-gradient-dark{background-image:linear-gradient(135deg,#0f172a,#475569);color:#fff}
.btn-outline-light{--bs-btn-color:#334155;--bs-btn-border-color:#e2e8f0;--bs-btn-hover-color:#0f172a;--bs-btn-hover-bg:#f1f5f9;--bs-btn-hover-border-color:#f1f5f9;--bs-btn-active-color:#0f172a;--bs-btn-active-bg:#e2e8f0;--bs-btn-active-border-color:#e2e8f0;--bs-btn-disabled-color:#f1f5f9;--bs-btn-disabled-border-color:#f1f5f9}
.btn-soft-light{--bs-btn-color:#334155;--bs-btn-bg:#f8fafc;--bs-btn-border-color:#f8fafc;--bs-btn-hover-color:#0f172a;--bs-btn-hover-bg:#f1f5f9;--bs-btn-hover-border-color:#f1f5f9;--bs-btn-active-color:#0f172a;--bs-btn-active-bg:#e2e8f0;--bs-btn-active-border-color:#e2e8f0;--bs-btn-disabled-color:#334155;--bs-btn-disabled-bg:#f8fafc}
.btn-ghost-light{--bs-btn-color:#334155;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#334155;--bs-btn-hover-bg:#f8fafc;--bs-btn-hover-border-color:#f8fafc;--bs-btn-active-color:#334155;--bs-btn-active-bg:#f8fafc;--bs-btn-active-border-color:#f8fafc}
.btn-gradient-light{--bs-btn-color:#0f172a;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:#0f172a;--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:#0f172a;--bs-btn-active-bg:transparent;background-image:linear-gradient(135deg,#f1f5f9,#ffffff)}.btn-gradient-light:hover{filter:brightness(1.07)}
.badge-solid-light{background:#f1f5f9;color:#0f172a}
.badge-light{background:#f8fafc;color:#334155}
.badge-outline-light{background:transparent;color:#334155;box-shadow:inset 0 0 0 1px #cbd5e1}
.badge-border-light{background:#f8fafc;color:#334155;border-left:3px solid #94a3b8}
.badge-label-light{background:#f1f5f9;color:#0f172a;padding:.3em .7em .3em 1.2em;position:relative;clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%)}.badge-label-light:before{content:'';position:absolute;left:.65rem;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:currentColor}
.badge-gradient-light{background-image:linear-gradient(135deg,#e2e8f0,#ffffff);color:#0f172a}

/* ===== 39. Field style + validation pattern: .form-group.has-error + small.text-danger ===== */
:root{--field-border:rgba(37,99,235,.25);--error-bg:#fff8f6;--ring:0 0 0 3px rgba(37,99,235,.13),0 1px 2px rgba(15,23,42,.04);--ring-error:0 0 0 3px rgba(247,50,9,.12)}
.form-group label{margin-bottom:.3rem}
/* single controls: 1.5px soft-blue border, blue ring on focus */
.form-control,.form-select{border:1.5px solid var(--field-border)}
.form-control:focus,.form-select:focus{border-color:var(--primary);background-color:#fff;box-shadow:var(--ring)}
.select2-container--bootstrap-5 .select2-selection,.choices__inner{border:1.5px solid var(--field-border)}
.select2-container--bootstrap-5.select2-container--focus .select2-selection,.select2-container--bootstrap-5.select2-container--open .select2-selection{border-color:var(--primary);box-shadow:var(--ring)}
.choices.is-focused .choices__inner,.choices.is-open .choices__inner{border-color:var(--primary);box-shadow:var(--ring)}
.select2-container--bootstrap-5 .select2-dropdown,.choices__list--dropdown{border:1.5px solid var(--field-border);box-shadow:0 2px 10px rgba(37,99,235,.2)}
.select2-container--bootstrap-5 .select2-results__option{border-bottom:1px solid #e0e7ff}
/* input group = ONE bordered box with thin dividers */
.input-group{border:1.5px solid var(--field-border);border-radius:3px;background:#fff;flex-wrap:nowrap;box-shadow:none}
.input-group>.form-control,.input-group>.form-select,.input-group>.input-group-text,.input-group>.btn{border:0!important;box-shadow:none!important;border-radius:0!important;height:calc(var(--control-h) - 3px)!important;min-height:0;line-height:calc(var(--control-h) - 3px)}
.input-group>.btn{display:inline-flex;line-height:1}
.input-group>:first-child{border-radius:2px 0 0 2px!important}.input-group>:last-child:not(.invalid-feedback):not(.valid-feedback){border-radius:0 2px 2px 0!important}
.input-group>.form-control{background-color:transparent}
.input-group>:not(:first-child):not(.dropdown-menu):not(.invalid-feedback):not(.valid-feedback){border-left:1px solid var(--field-border)!important}
.input-group:focus-within{border-color:var(--primary);background:#fff;box-shadow:var(--ring)}
.input-group:focus-within>:not(:first-child):not(.dropdown-menu):not(.invalid-feedback):not(.valid-feedback){border-left-color:var(--primary)!important}
/* error state: classic .has-error pattern and Bootstrap .is-invalid both work */
.has-error .form-control,.has-error .form-select,.has-error .select2-container--bootstrap-5 .select2-selection,.has-error .choices__inner,.has-error .input-group,
.input-group:has(.is-invalid),.input-group.is-invalid{border-color:var(--danger)!important;background:var(--error-bg)!important;box-shadow:var(--ring-error)!important}
.has-error .input-group .form-control,.has-error .input-group .form-select,.input-group:has(.is-invalid) .form-control{border:0!important;box-shadow:none!important;background:transparent!important}
.has-error .input-group>.input-group-text,.has-error .input-group>.btn,.input-group:has(.is-invalid)>.input-group-text{background:var(--error-bg)!important}
.has-error .input-group>:not(:first-child):not(.dropdown-menu):not(.invalid-feedback):not(.valid-feedback),.input-group:has(.is-invalid)>:not(:first-child):not(.invalid-feedback){border-left-color:var(--danger)!important}
.input-group:has(.is-valid){border-color:var(--success);box-shadow:0 0 0 3px rgba(34,197,94,.14)}
.input-group:has(.is-valid)>:not(:first-child):not(.valid-feedback){border-left-color:var(--success)!important}
/* message under the field, with icon */
small.text-danger:empty{display:none}
.has-error small.text-danger{display:flex;align-items:center;gap:.3rem;margin:.3rem 0 0;font-size:.75rem;font-weight:500;line-height:1.4;color:var(--danger)!important}
.has-error small.text-danger:empty{display:none}
.has-error small.text-danger::before{content:"";width:13px;height:13px;flex-shrink:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f73209' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' y1='8' x2='12' y2='12'/%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'/%3E%3C/svg%3E") center/contain no-repeat}
.has-error .form-control{background-image:none}

/* ===== 40. Error / valid colours: fixes (divider specificity, :has rules split for older browsers) ===== */
/* Bootstrap-style groups: .is-invalid / .is-valid on the group itself */
.input-group.is-invalid{border-color:var(--danger)!important;background:var(--error-bg)!important;box-shadow:var(--ring-error)!important}
.input-group.is-invalid>.input-group-text,.input-group.is-invalid>.btn{background:var(--error-bg)!important}
.input-group.is-invalid>:not(:first-child):not(.dropdown-menu):not(.invalid-feedback):not(.valid-feedback){border-left-color:var(--danger)!important}
.input-group.is-valid{border-color:var(--success);box-shadow:0 0 0 3px rgba(34,197,94,.14)}
.input-group.is-valid>:not(:first-child):not(.dropdown-menu):not(.invalid-feedback):not(.valid-feedback){border-left-color:var(--success)!important}
/* Groups whose child input has .is-invalid / .is-valid (separate rules, so one unsupported :has never drops the rest) */
.input-group:has(.is-invalid){border-color:var(--danger)!important;background:var(--error-bg)!important;box-shadow:var(--ring-error)!important}
.input-group:has(.is-invalid)>.input-group-text,.input-group:has(.is-invalid)>.btn{background:var(--error-bg)!important}
.input-group:has(.is-invalid)>:not(:first-child):not(.dropdown-menu):not(.invalid-feedback):not(.valid-feedback){border-left-color:var(--danger)!important}
.input-group:has(.is-valid){border-color:var(--success);box-shadow:0 0 0 3px rgba(34,197,94,.14)}
.input-group:has(.is-valid)>:not(:first-child):not(.dropdown-menu):not(.invalid-feedback):not(.valid-feedback){border-left-color:var(--success)!important}
/* error stays red while focused, for every control type */
.has-error .form-control:focus,.has-error .form-select:focus,.has-error .input-group:focus-within,.has-error .choices.is-focused .choices__inner,
.has-error .select2-container--bootstrap-5.select2-container--focus .select2-selection,.has-error .select2-container--bootstrap-5.select2-container--open .select2-selection{border-color:var(--danger)!important;box-shadow:var(--ring-error)!important}
.has-error .input-group:focus-within .form-control{box-shadow:none!important;border:0!important}

/* ===== 41. Sidebar: flush rows, bullets (dash / circle), tinted open block — matches the reference screenshots ===== */
.admin-sidebar-menu{padding:.5rem 0 1rem}
.admin-sidebar .menu-title{padding:1.1rem 1.1rem .4rem}
/* every row is edge-to-edge and square */
.admin-sidebar .nav-link{border-radius:0!important;padding:.65rem 1.1rem}
/* open top-level group: one tinted block, parent row a touch lighter */
.admin-sidebar-menu>.nav>.nav-item:has(>.nav-link[aria-expanded=true]){background:rgba(37,99,235,.18);border-radius:0;padding-bottom:0;margin-bottom:0}
.admin-sidebar .admin-sidebar-menu>.nav>.nav-item>.nav-link[aria-expanded=true]:not(.active):not(.x),
.admin-sidebar .admin-sidebar-menu>.nav>.nav-item>.nav-link.parent-active:not(.active){background:rgba(37,99,235,.12);color:#fff}
/* submenus: no indent line, no extra margin; bullets mark the level */
.admin-sidebar .nav .nav{margin:0;padding:.15rem 0 .4rem;border-left:0}
.admin-sidebar .nav .nav .nav-link{position:relative;padding:.5rem 1.1rem .5rem 2.1rem;font-size:.85rem}
.admin-sidebar .nav .nav .nav-link:before{content:"";position:absolute;left:1rem;top:50%;width:6px;height:1.5px;margin-top:-1px;background:currentColor;opacity:.75;border:0;border-radius:0}
.admin-sidebar .nav .nav .nav .nav-link:before{width:6px;height:6px;margin-top:-3px;background:transparent;border:1.5px solid currentColor;border-radius:50%;opacity:.75}
.admin-sidebar .nav .nav .nav-link.active:before{content:"";opacity:1}

/* ===== 42. Sidebar: hidden scrollbar (rows edge to edge) + collapsed-mode flyout menus ===== */
.admin-sidebar-menu{scrollbar-width:none;-ms-overflow-style:none;scrollbar-gutter:auto;padding-right:0}
.admin-sidebar-menu::-webkit-scrollbar{display:none;width:0;height:0}
.flyout-title{display:none}
@media(min-width:992px){
.sidebar-collapsed .admin-sidebar-menu{padding-right:0}
/* collapsed: only a parent that contains the current page is highlighted */
.sidebar-collapsed .admin-sidebar .admin-sidebar-menu>.nav>.nav-item>.nav-link[aria-expanded=true]:not(.active):not(.parent-active):not(.x){background:transparent}
.sidebar-collapsed .admin-sidebar .admin-sidebar-menu>.nav>.nav-item>.nav-link.parent-active:not(.active){background:var(--primary)}
.sidebar-collapsed .admin-sidebar .nav-item.flyout-host>.nav-link:not(.parent-active):not(.active){background:rgba(37,99,235,.2);color:#fff}
/* the flyout panel (position/size set by JS on hover) */
.sidebar-collapsed .admin-sidebar .collapse.flyout{display:block!important;position:fixed;z-index:1060;width:230px;height:auto!important;overflow:visible;padding:0;background:#1e293b;border:1px solid rgba(148,163,184,.2);border-left:0;border-radius:0 3px 3px 0;box-shadow:0 10px 28px rgba(2,6,23,.45)}
.sidebar-collapsed .admin-sidebar .flyout>.flyout-title{display:block;padding:.8rem 1.1rem;font-size:.85rem;font-weight:600;color:#fff;border-bottom:1px solid rgba(148,163,184,.15)}
.sidebar-collapsed .admin-sidebar .flyout .nav-link{justify-content:flex-start;white-space:nowrap}
.sidebar-collapsed .admin-sidebar .flyout .chevron{display:inline-block}
.sidebar-collapsed .admin-sidebar .flyout .nav-link[aria-expanded]>i.chevron{transform:none!important}
.sidebar-collapsed .admin-sidebar .flyout li.flyout-host>.nav-link:not(.active){background:rgba(255,255,255,.07);color:#fff}
}

/* ===== 43. Utilities: borders, radius scale, images/avatars, shadows (theme-coloured) ===== */
:root{--bs-border-color:#e2e8f0;--bs-box-shadow-sm:0 1px 2px rgba(15,23,42,.06);--bs-box-shadow:0 4px 12px rgba(15,23,42,.08);--bs-box-shadow-lg:0 14px 32px rgba(15,23,42,.14)}
/* border styles (combine with .border) */
.border-solid{border-style:solid!important}.border-dotted{border-style:dotted!important}.border-dashed{border-style:dashed!important}
.border-double{border-style:double!important}.border-groove{border-style:groove!important}.border-ridge{border-style:ridge!important}
.border-inset{border-style:inset!important}.border-outset{border-style:outset!important}
/* single-side dashed / dotted */
.border-top-dashed{border-top:var(--bs-border-width) dashed var(--bs-border-color)!important}.border-end-dashed{border-right:var(--bs-border-width) dashed var(--bs-border-color)!important}
.border-bottom-dashed{border-bottom:var(--bs-border-width) dashed var(--bs-border-color)!important}.border-start-dashed{border-left:var(--bs-border-width) dashed var(--bs-border-color)!important}
.border-top-dotted{border-top:var(--bs-border-width) dotted var(--bs-border-color)!important}.border-bottom-dotted{border-bottom:var(--bs-border-width) dotted var(--bs-border-color)!important}
/* theme border colours: soft form border + subtle tints */
.border-soft{border:1.5px solid var(--field-border,rgba(37,99,235,.25))!important}
.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}
.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}
/* radius scale */
.rounded-0{border-radius:0!important}.rounded-1{border-radius:2px!important}.rounded-2{border-radius:4px!important}
.rounded-3{border-radius:6px!important}.rounded-4{border-radius:10px!important}.rounded-5{border-radius:16px!important}
/* images and avatars */
.img-thumbnail{padding:.25rem;background:#fff;border:1px solid var(--border-color);border-radius:3px}
.img-cover{object-fit:cover}
.avatar{overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover}
.avatar-xs{width:24px;height:24px;font-size:.62rem}.avatar-md{width:44px;height:44px;font-size:.9rem}
.avatar-lg{width:56px;height:56px;font-size:1.05rem}.avatar-xl{width:72px;height:72px;font-size:1.3rem}
.avatar-group{display:flex}.avatar-group .avatar{margin-left:-10px;border:2px solid #fff}.avatar-group .avatar:first-child{margin-left:0}
.avatar-success{background:var(--success-light);color:#15803d}.avatar-warning{background:var(--warning-light);color:#b45309}.avatar-danger{background:var(--danger-light);color:#b91c1c}.avatar-info{background:var(--info-light);color:#0369a1}.avatar-dark{background:var(--sidebar-bg);color:#fff}
.avatar-status{position:relative}.avatar-status:after{content:"";position:absolute;right:0;bottom:0;width:28%;height:28%;min-width:8px;min-height:8px;border-radius:50%;background:var(--success);border:2px solid #fff}
/* shadows */
.shadow-primary{box-shadow:0 8px 20px rgba(37,99,235,.28)!important}.shadow-danger{box-shadow:0 8px 20px rgba(247,50,9,.25)!important}
/* demo helpers for the utilities page */
.util-item{text-align:center;font-size:.72rem}.util-item code{display:block;margin-top:.5rem;cursor:pointer;color:var(--danger);font-size:.72rem}
.util-box{width:72px;height:72px;background:#f8fafc;margin:0 auto}
.util-grid{display:flex;flex-wrap:wrap;gap:1.5rem 1.75rem}

/* ===== 44. Table borders: .table-bordered or .table.border, coloured by .border-primary / -secondary / ... ===== */
.table{--tbl-border:var(--border-color)}
/* every cell border follows the table's border colour (was fixed grey before, so colour classes had no effect) */
.table th,.table td,.table thead th{border-color:var(--tbl-border)}
.table.border>:not(caption)>*>*{border-width:var(--bs-border-width,1px)}
.table.border,.table-bordered{border-color:var(--tbl-border)}
.table-bordered>:not(caption)>*{border-color:var(--tbl-border)}
.table.border-primary{--tbl-border:rgba(var(--bs-primary-rgb),var(--bs-border-opacity,1))}
.table.border-secondary{--tbl-border:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity,1))}
.table.border-success{--tbl-border:rgba(var(--bs-success-rgb),var(--bs-border-opacity,1))}
.table.border-info{--tbl-border:rgba(var(--bs-info-rgb),var(--bs-border-opacity,1))}
.table.border-warning{--tbl-border:rgba(var(--bs-warning-rgb),var(--bs-border-opacity,1))}
.table.border-danger{--tbl-border:rgba(var(--bs-danger-rgb),var(--bs-border-opacity,1))}
.table.border-dark{--tbl-border:rgba(var(--bs-dark-rgb),var(--bs-border-opacity,1))}
.table.border-light{--tbl-border:rgba(var(--bs-light-rgb),var(--bs-border-opacity,1))}
.table.border-primary-subtle{--tbl-border:var(--bs-primary-border-subtle)}
.table.border-secondary-subtle{--tbl-border:var(--bs-secondary-border-subtle)}
.table.border-success-subtle{--tbl-border:var(--bs-success-border-subtle)}
.table.border-info-subtle{--tbl-border:var(--bs-info-border-subtle)}
.table.border-warning-subtle{--tbl-border:var(--bs-warning-border-subtle)}
.table.border-danger-subtle{--tbl-border:var(--bs-danger-border-subtle)}
.table.border-dark-subtle{--tbl-border:var(--bs-dark-border-subtle)}
.table.border-soft{--tbl-border:var(--field-border,rgba(37,99,235,.25))}
/* DataTables: keep the grid and outer border when the table is bordered */
table.dataTable thead th{border-bottom-color:var(--tbl-border)!important}
table.dataTable.border,table.dataTable.table-bordered{border-bottom:var(--bs-border-width,1px) solid var(--tbl-border)!important}
table.dataTable.border tbody tr:last-child td,table.dataTable.table-bordered tbody tr:last-child td{border-bottom:var(--bs-border-width,1px) solid var(--tbl-border)}
.table-bordered>:not(caption)>*>*{border-style:solid}

/* ===== 45. Toast polish ===== */
.custom-toast:hover .t-bar{animation-play-state:paused}
.custom-toast .t-icon{flex-shrink:0}
.custom-toast.toastify{cursor:default}

/* ===== 46. Repeater (assets/js/repeater.js) ===== */
.rp-item{position:relative;padding:1rem 1rem .25rem;border:1px solid var(--border-color);border-radius:3px;background:#fff;margin-bottom:.75rem;transition:opacity .18s,transform .18s,box-shadow .15s,border-color .15s}
.rp-item:hover{box-shadow:0 2px 8px rgba(15,23,42,.06)}
.rp-in{animation:rpIn .22s ease}@keyframes rpIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.rp-out{opacity:0;transform:translateY(-6px)}
.rp-dragging{opacity:.45;border:1px dashed var(--primary)}
.rp-handle{cursor:grab;color:var(--muted);display:inline-flex;align-items:center;padding:.45rem .25rem;user-select:none}.rp-handle:active{cursor:grabbing}.rp-handle:hover{color:var(--primary)}
.rp-index{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 .3rem;border-radius:3px;background:var(--primary-light);color:var(--primary);font-size:.72rem;font-weight:600}
.rp-actions{padding-top:1.65rem}.rp-actions-sm{padding-top:0}
.rp-nested{background:#f8fafc;border:1px dashed var(--border-color);border-radius:3px;padding:.75rem;margin:.25rem 0 .75rem}
.rp-nested .rp-item{margin-bottom:.5rem;padding:.75rem .75rem .5rem}
.rp-empty{text-align:center;padding:1.25rem;border:1px dashed var(--border-color);border-radius:3px;color:var(--muted);margin-bottom:.75rem}
[data-repeater-create].rp-at-max{opacity:.55}
.rp-total{font-weight:600;color:var(--text-primary)}

/* ===== 47. Search box: icon inside the field (.search-box > input.form-control + i.search-icon) ===== */
.search-box{position:relative;width:100%}
.search-box .form-group{margin:0}
.search-box .form-control{padding-left:2.5rem}
.search-box .form-control-sm{padding-left:2.1rem}
.search-box .search-icon{position:absolute;left:.95rem;top:calc(var(--control-h)/2);transform:translateY(-50%);color:var(--muted);font-size:1rem;line-height:1;pointer-events:none;transition:color .15s}
.search-box:has(.form-control-sm) .search-icon{left:.75rem;top:calc(var(--control-h-sm)/2);font-size:.85rem}
.search-box:focus-within .search-icon{color:var(--primary)}
.search-box:has(.has-error) .search-icon{color:var(--danger)}
.search-box input[type=search]::-webkit-search-cancel-button{cursor:pointer}

/* ===== 48. Compact tables: .table-sm (and .table-xs). Works with plain tables and DataTables ===== */
.table.table-sm th,.table.table-sm td,.table.table-sm thead th{padding:.35rem .75rem;font-size:.78rem;line-height:1.35}
.table.table-sm thead th{font-size:.7rem;padding-top:.45rem;padding-bottom:.45rem}
table.dataTable.table-sm thead th{padding-right:1.5rem}
.table.table-sm .avatar-sm{width:22px;height:22px;font-size:.6rem}
.table.table-sm .badge{font-size:.68rem;padding:.2em .5em}
.table.table-sm .icon-btn,.table.table-sm .btn-icon{width:26px;height:26px}
.table.table-sm .btn:not(.btn-icon){height:26px;font-size:.72rem;--bs-btn-padding-x:.6rem}
.table.table-sm .form-check-input{margin-top:0}
.table.table-xs th,.table.table-xs td,.table.table-xs thead th{padding:.2rem .5rem;font-size:.72rem;line-height:1.3}
.table.table-xs thead th{font-size:.66rem}
.table.table-xs .avatar-sm{width:18px;height:18px;font-size:.55rem}
.table.table-xs .badge{font-size:.64rem;padding:.15em .4em}
.table.table-xs .icon-btn,.table.table-xs .btn-icon{width:22px;height:22px}
.table.table-xs .btn:not(.btn-icon){height:22px;font-size:.68rem;--bs-btn-padding-x:.5rem}

/* ===== 49. Sidebar max width follows --sidebar-w (230px): long labels truncate instead of overflowing ===== */
.admin-sidebar{max-width:var(--sidebar-w)}
.admin-sidebar .nav-link{min-width:0}
.admin-sidebar .nav-link .label{min-width:0;overflow:hidden;text-overflow:ellipsis}
.admin-sidebar .nav .nav .nav-link{overflow:hidden;text-overflow:ellipsis}

/* ===== 50. Lists (list-group) in the theme palette ===== */
:root{--bs-light-text-emphasis:#94a3b8}
.list-group{--bs-list-group-border-color:var(--border-color);--bs-list-group-border-radius:3px;--bs-list-group-item-padding-y:.65rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-color:var(--text-secondary);--bs-list-group-action-color:var(--text-secondary);--bs-list-group-action-hover-color:var(--text-primary);--bs-list-group-action-hover-bg:#f8fafc;--bs-list-group-action-active-bg:var(--primary-light);--bs-list-group-active-bg:var(--primary);--bs-list-group-active-border-color:var(--primary);--bs-list-group-disabled-color:var(--muted);font-size:.84rem}
.list-group-item{transition:background .15s,color .15s}
.list-group-item.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:500}
.list-group-item.active .avatar{background:rgba(255,255,255,.2);color:#fff}.list-group-item.active .text-muted,.list-group-item.active small{color:rgba(255,255,255,.75)!important}
.list-group-item>i.bi:first-child{color:var(--muted)}.list-group-item.active>i.bi:first-child{color:#fff}
.list-group-item .form-check{margin:0;min-height:0}
.list-group-numbered>.list-group-item::before{color:var(--text-secondary)}
.list-group-item h6{font-size:.88rem}
.list-group-fill-primary{background:#2563eb;color:#fff;border-color:#2563eb}
.list-group-item-action.list-group-fill-primary:hover{filter:brightness(.95);color:#fff}
.list-group-fill-secondary{background:#64748b;color:#fff;border-color:#64748b}
.list-group-item-action.list-group-fill-secondary:hover{filter:brightness(.95);color:#fff}
.list-group-fill-success{background:#22c55e;color:#fff;border-color:#22c55e}
.list-group-item-action.list-group-fill-success:hover{filter:brightness(.95);color:#fff}
.list-group-fill-info{background:#0ea5e9;color:#fff;border-color:#0ea5e9}
.list-group-item-action.list-group-fill-info:hover{filter:brightness(.95);color:#fff}
.list-group-fill-warning{background:#f59e0b;color:#fff;border-color:#f59e0b}
.list-group-item-action.list-group-fill-warning:hover{filter:brightness(.95);color:#fff}
.list-group-fill-danger{background:#f73209;color:#fff;border-color:#f73209}
.list-group-item-action.list-group-fill-danger:hover{filter:brightness(.95);color:#fff}
.list-group-fill-light{background:#f1f5f9;color:#0f172a;border-color:#e2e8f0}
.list-group-item-action.list-group-fill-light:hover{filter:brightness(.95);color:#0f172a}
.list-group-fill-dark{background:#0f172a;color:#fff;border-color:#0f172a}
.list-group-item-action.list-group-fill-dark:hover{filter:brightness(.95);color:#fff}

/* ===== 51. Modal blur fix, DataTables footer spacing, .table-md, tabs, profile ===== */
/* Blur: Bootstrap fades the backdrop with opacity:.5, and opacity also fades the blur itself (ghosted sharp page).
   Keep opacity at 1 and put the tint in an rgba background instead. */
.modal-backdrop,.offcanvas-backdrop{--bs-backdrop-opacity:1;--bs-backdrop-bg:rgba(15,23,42,.45);background-color:rgba(15,23,42,.45)}
.modal-backdrop.show,.offcanvas-backdrop.show{opacity:1;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
/* DataTables footer: space between the table and "Showing x of y" + pagination */
.dt-bottom{margin-top:.75rem;border-top:0;padding:.5rem 1.25rem .75rem}
div.dataTables_wrapper div.dataTables_info{padding:.9rem 0 .25rem;margin:0}
div.dataTables_wrapper div.dataTables_paginate{margin:.75rem 0 .25rem;padding:0}
div.dataTables_wrapper .dt-bottom div.dataTables_info{padding:0}
div.dataTables_wrapper .dt-bottom div.dataTables_paginate{margin:0}
/* .table-md: between the default and .table-sm */
.table.table-md th,.table.table-md td,.table.table-md thead th{padding:.5rem 1rem;font-size:.82rem;line-height:1.4}
.table.table-md thead th{font-size:.72rem;padding-top:.55rem;padding-bottom:.55rem}
.table.table-md .avatar-sm{width:26px;height:26px;font-size:.65rem}
.table.table-md .icon-btn,.table.table-md .btn-icon{width:30px;height:30px}
.table.table-md .btn:not(.btn-icon){height:30px;font-size:.78rem}
/* tabs and pills */
.nav-tabs{border-bottom:1px solid var(--border-color);gap:.25rem;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.nav-tabs::-webkit-scrollbar{display:none}
.nav-tabs .nav-link{display:flex;align-items:center;gap:.4rem;white-space:nowrap;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--text-secondary);padding:.7rem 1rem;margin-bottom:-1px;font-weight:500;font-size:.85rem}
.nav-tabs .nav-link:hover{color:var(--text-primary);border-bottom-color:var(--border-color)}
.nav-tabs .nav-link.active{color:var(--primary);border-bottom-color:var(--primary);background:transparent}
.nav-pills .nav-link{border-radius:3px;color:var(--text-secondary);font-weight:500;font-size:.85rem}
.nav-pills .nav-link.active{background:var(--primary);color:#fff}
/* profile */
.profile-cover{height:120px;background:linear-gradient(135deg,#0f172a 0%,#1e3a8a 55%,#2563eb 100%);border-radius:3px 3px 0 0}
.profile-avatar{position:relative;width:96px;height:96px;margin-top:-48px;flex-shrink:0}
.profile-avatar .avatar{width:96px;height:96px;font-size:1.9rem;border:4px solid #fff}
.avatar-edit{position:absolute;right:-2px;bottom:2px;width:30px;height:30px;border-radius:50%;border:2px solid #fff;background:var(--primary);color:#fff;display:grid;place-items:center;cursor:pointer;font-size:.8rem}
.avatar-edit:hover{background:#1d4ed8}
.pw-meter{height:4px;background:var(--border-color);border-radius:2px;overflow:hidden}
.pw-meter>span{display:block;height:100%;width:0;border-radius:2px;transition:width .2s,background .2s}
.pw-rules{list-style:none;padding:0;margin:.5rem 0 0;font-size:.75rem}
.pw-rules li{color:var(--muted)}.pw-rules li.ok{color:#15803d}
.pw-rules li:before{content:"\25CB  "}.pw-rules li.ok:before{content:"\2713  "}
.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--success);margin-right:.35rem}

/* ===== 52. Velzon-style page title (.page-title-box) so Blade pages get the same spacing as .page-header ===== */
.page-title-box{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;margin-bottom:1.5rem}
.page-title-box h4{font-size:1.25rem;font-weight:600;margin:0;color:var(--text-primary)}
.page-title-right{display:flex;align-items:center;gap:.5rem}
form{
    position: relative;
}
.card-preloader {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ffffff3b;
  z-index: 9999;
}
.card-status {
  width: 40px;
  height: 40px;
  position: absolute;
  left: 50%;
  top: 50%;
  -webkit-transform: translate(-50%, -50%) !important;
  transform: translate(-50%, -50%) !important;
}
.custom-loader {
  -webkit-animation: spin 2s linear infinite;
  animation: spin 2s linear infinite;
}
@-webkit-keyframes spin {
  to {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@keyframes spin {
  to {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
.card-overlay {
  position: relative;
  overflow: hidden;
}
.card-overlay:before {
  content: "";
  background-color:#fff;
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
}
.card-overlay :is(.card-header, .card-footer) {
  border-color: rgba(255, 255, 255, 0.15) !important;
}
.card-toolbar-menu {
  line-height: 0.8;
}
.card-toolbar-menu a {
  font-size: 17px;
}
.card-toolbar-menu .minimize-card .plus {
  display: none;
}
.card-toolbar-menu .minimize-card .minus {
  display: block;
}
.card-toolbar-menu .minimize-card.collapsed .plus {
  display: block;
}
.card-toolbar-menu .minimize-card.collapsed .minus {
  display: none;
}
/* sidebar brand: full white logo, the icon only when collapsed */
.admin-sidebar-header .brand-logo{max-height:34px;max-width:170px;object-fit:contain}
.admin-sidebar-header .brand-icon{display:none;width:32px;height:32px;object-fit:contain}
@media(min-width:992px){.sidebar-collapsed .admin-sidebar-header .brand-icon{display:block}}

/* the hidden attribute wins over display utilities (.d-flex etc.) */
[hidden] { display: none !important; }

/* ===== form widgets (assets/js/form-widgets.js): Choices + Flatpickr look like the other fields and open above everything ===== */
.choices{position:relative}
.choices.is-open{z-index:1062}
.modal .choices.is-open{z-index:1075}
.choices__list--dropdown,.choices__list[aria-expanded]{z-index:1063}
.choices[data-type*=select-one] .choices__inner{padding:6px 34px 6px 12px;min-height:40px;display:flex;align-items:center}
.choices[data-type*=select-one] .choices__list--single{padding:0}
.choices[data-type*=select-one]::after{right:14px;border-color:#64748b transparent transparent}
.choices[data-type*=select-one].is-open::after{border-color:transparent transparent #64748b}
.choices__list--dropdown .choices__list{max-height:280px}
.choices__list--dropdown .choices__item{font-size:.875rem;padding:8px 12px}
.choices__input--cloned{font-size:.85rem}
.choices.is-invalid .choices__inner,.is-invalid+.choices__inner{border-color:#dc3545}
.form-select-sm+.choices .choices__inner,.choices:has(.form-select-sm) .choices__inner{min-height:32px;padding-top:3px;padding-bottom:3px;font-size:.8rem}
.input-group>.choices{flex:1 1 auto;width:1%;min-width:0}
.input-group>.choices .choices__inner{border-radius:0}
.input-group>.choices:first-child .choices__inner{border-top-left-radius:8px;border-bottom-left-radius:8px}
.input-group>.choices:last-child .choices__inner{border-top-right-radius:8px;border-bottom-right-radius:8px}
.fw-date{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px!important;background-color:#fff!important}
.flatpickr-calendar{z-index:1080!important;border-radius:10px;box-shadow:0 10px 30px rgba(15,23,42,.15)}
.flatpickr-day.selected,.flatpickr-day.selected:hover{background:var(--primary,#2563eb);border-color:var(--primary,#2563eb)}
.flatpickr-day.today{border-color:var(--primary,#2563eb)}

/* Choices: options use the full width (the library keeps 100px on the right for a "Press to select" hint we don't show),
   and a list may be wider than a narrow field so short options never break letter by letter */
.choices__list--dropdown .choices__item--selectable,.choices__list[aria-expanded] .choices__item--selectable{padding-right:12px!important}
.choices__list--dropdown .choices__item--selectable::after,.choices__list[aria-expanded] .choices__item--selectable::after{display:none!important}
.choices__list--dropdown,.choices__list[aria-expanded]{min-width:100%;width:max-content;max-width:min(460px,92vw);word-break:normal;overflow-wrap:anywhere}
.choices__list--dropdown .choices__item{white-space:normal;line-height:1.35}
.choices__list--single .choices__item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
