/* Shared Bootstrap and plugin integration. Module styles retain their layout. */
/* Filled controls always use the theme's contrasting foreground, including icons. */
.btn-primary,.btn-secondary,.btn-outline-primary:hover,.btn-outline-primary:active,.btn-outline-primary.active {
 --vz-btn-active-color:var(--erp-on-primary);--vz-btn-hover-color:var(--erp-on-primary);--vz-btn-disabled-color:var(--erp-on-primary);
 color:var(--erp-on-primary)!important;
}
:is(.btn-primary,.btn-secondary,.btn-outline-primary:hover,.btn-outline-primary:active,.btn-outline-primary.active) :is(i,span) {color:inherit!important}
#erp-navigation.navbar-menu .navbar-nav > .nav-item > .menu-link:is(.active,.sidebar-selected-link,.sidebar-parent-open),
#erp-navigation.navbar-menu .navbar-nav > .nav-item > .menu-link:is(.active,.sidebar-selected-link,.sidebar-parent-open) :is(i,span),
#erp-navigation.navbar-menu .navbar-nav > .nav-item > .menu-link:is(.active,.sidebar-selected-link,.sidebar-parent-open)::after {color:var(--erp-on-primary)!important}
body { font-family:var(--erp-font); font-size:13px; color:var(--erp-text); background:var(--erp-canvas); }
:is(.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6) { font-family:var(--erp-font); color:var(--erp-text); font-weight:600; }
.page-title-box { padding:0 0 16px; margin:0; background:transparent; border:0; box-shadow:none; }
.page-title-box h4 { font-size:20px; text-transform:none; }
.card { --vz-card-bg:var(--erp-surface); border:1px solid var(--erp-border); border-radius:var(--erp-radius-card); box-shadow:var(--erp-shadow-card); margin-bottom:16px; }
.card-header,.card-footer { padding:12px 16px; background:var(--erp-surface); border-color:var(--erp-border); }
.card-header:first-child { border-radius:var(--erp-radius-card) var(--erp-radius-card) 0 0; }
.card-body { padding:16px; min-width:0; }
.card-title,.card-header h5 { font-size:14px; }
.btn { min-height:38px; border-radius:var(--erp-radius-control); padding:8px 12px; font-size:14px; font-weight:500; box-shadow:none; transition:background-color var(--erp-motion),border-color var(--erp-motion); }
.btn-sm { min-height:34px; font-size:13px; padding:6px 10px; }
.btn-primary { --vz-btn-bg:var(--erp-primary); --vz-btn-border-color:var(--erp-primary); --vz-btn-hover-bg:var(--erp-primary-hover); --vz-btn-hover-border-color:var(--erp-primary-hover); --vz-btn-active-bg:var(--erp-primary-hover); --vz-btn-active-border-color:var(--erp-primary-hover); --vz-btn-disabled-bg:var(--erp-primary); --vz-btn-disabled-border-color:var(--erp-primary); --vz-btn-color:var(--erp-on-primary); --vz-btn-hover-color:var(--erp-on-primary); }
.btn-outline-primary { --vz-btn-color:var(--erp-primary); --vz-btn-border-color:var(--erp-primary); --vz-btn-hover-bg:var(--erp-primary); --vz-btn-hover-border-color:var(--erp-primary); --vz-btn-active-bg:var(--erp-primary); --vz-btn-active-border-color:var(--erp-primary); }
.btn-outline-secondary { --vz-btn-color:var(--erp-text-secondary); --vz-btn-border-color:var(--erp-control-border); --vz-btn-hover-color:var(--erp-text); --vz-btn-hover-bg:var(--erp-surface-soft); --vz-btn-hover-border-color:var(--erp-text-secondary); --vz-btn-active-bg:var(--erp-surface-soft); --vz-btn-active-color:var(--erp-text); }
.btn-secondary { --vz-btn-bg:var(--erp-nav-active); --vz-btn-border-color:var(--erp-nav-active); --vz-btn-hover-bg:var(--erp-text); --vz-btn-hover-border-color:var(--erp-text); }
.btn-success { --vz-btn-bg:var(--erp-success); --vz-btn-border-color:var(--erp-success); --vz-btn-hover-bg:var(--erp-primary-hover); --vz-btn-hover-border-color:var(--erp-primary-hover); }
.btn-danger { --vz-btn-bg:var(--erp-danger); --vz-btn-border-color:var(--erp-danger); }
.btn-info { --vz-btn-bg:var(--erp-info); --vz-btn-border-color:var(--erp-info); }
.btn-outline-success { --vz-btn-color:var(--erp-success); --vz-btn-border-color:var(--erp-success); --vz-btn-hover-bg:var(--erp-success); --vz-btn-hover-border-color:var(--erp-success); }
.btn-outline-danger { --vz-btn-color:var(--erp-danger); --vz-btn-border-color:var(--erp-danger); --vz-btn-hover-bg:var(--erp-danger); --vz-btn-hover-border-color:var(--erp-danger); }
.btn-outline-info { --vz-btn-color:var(--erp-info); --vz-btn-border-color:var(--erp-info); --vz-btn-hover-bg:var(--erp-info); --vz-btn-hover-border-color:var(--erp-info); }
.btn-light,.btn-outline-dark { --vz-btn-color:var(--erp-text); --vz-btn-bg:var(--erp-surface); --vz-btn-border-color:var(--erp-control-border); --vz-btn-hover-bg:var(--erp-surface-soft); --vz-btn-hover-color:var(--erp-text); --vz-btn-hover-border-color:var(--erp-text-secondary); }
.form-label { font-size:13px; font-weight:500; color:var(--erp-text); margin-bottom:6px; }
.form-control,.form-select,.input-group-text { min-height:38px; padding:8px 12px; border:1px solid var(--erp-control-border); border-radius:var(--erp-radius-control); font-size:14px; color:var(--erp-text); box-shadow:none; }
.form-control,.form-select { background-color:var(--erp-surface); }
.input-group-text { background:var(--erp-surface-soft); }
.form-control::placeholder { color:var(--erp-text-muted); opacity:1; }
.form-control:focus,.form-select:focus { border-color:var(--erp-focus); box-shadow:var(--erp-focus-ring); background-color:var(--erp-surface); }
.form-control:disabled,.form-select:disabled { background:var(--erp-disabled); opacity:1; }
.form-control.is-invalid,.form-select.is-invalid { border-color:var(--erp-danger); box-shadow:none; }
.invalid-feedback { color:var(--erp-danger); font-size:13px; }
.form-check-input:checked { background-color:var(--erp-primary); border-color:var(--erp-primary); }
.form-check-input:focus { box-shadow:var(--erp-focus-ring); border-color:var(--erp-focus); }
.table { --vz-table-color:var(--erp-text); --vz-table-bg:var(--erp-surface); --vz-table-border-color:var(--erp-border); --vz-table-hover-bg:var(--erp-primary-soft); font-size:14px; font-variant-numeric:tabular-nums; }
.table > :not(caption) > * > * { padding:10px 12px; vertical-align:middle; }
.table thead th { color:var(--erp-text-secondary); background:var(--erp-surface-soft); font-weight:600; font-size:13px; }
.table-responsive { max-width:100%; overscroll-behavior-x:contain; scrollbar-width:thin; }
.pagination { flex-wrap:wrap; gap:4px; }
.page-link { border-radius:6px; color:var(--erp-primary); }
.active > .page-link { background:var(--erp-primary); border-color:var(--erp-primary); }
.nav-pills { gap:4px; }
.nav-pills .nav-link.active { background:var(--erp-primary); color:var(--erp-on-primary); }
.nav-tabs .nav-link { color:var(--erp-text-secondary); padding:10px 12px; }
.nav-tabs .nav-link.active { color:var(--erp-primary); border-bottom-color:var(--erp-primary); }
.badge { font-weight:500; line-height:1.35; }
.dropdown-menu { max-width:calc(100vw - 24px); border:1px solid var(--erp-border); border-radius:var(--erp-radius-card); box-shadow:var(--erp-shadow-overlay); background:var(--erp-surface); padding:6px; }
.dropdown-item { padding:9px 12px; white-space:normal; border-radius:6px; color:var(--erp-text); }
.dropdown-item:hover,.dropdown-item:focus { background:var(--erp-primary-soft); color:var(--erp-primary); }
.modal-content { border:1px solid var(--erp-border); border-radius:var(--erp-radius-dialog); background:var(--erp-surface); box-shadow:var(--erp-shadow-overlay); max-height:calc(100dvh - 32px); }
.modal-header,.modal-footer { padding:12px 16px; border-color:var(--erp-border); flex-shrink:0; }
.modal-title { font-size:18px; }
.modal-body { padding:16px; overflow-y:auto; }
.offcanvas { max-width:100vw; background:var(--erp-surface); }
.offcanvas-header { padding:16px; border-bottom:1px solid var(--erp-border); }
.offcanvas-body { padding:16px; }
.swal2-popup { font-family:var(--erp-font); border-radius:var(--erp-radius-dialog); color:var(--erp-text); background:var(--erp-surface); box-shadow:var(--erp-shadow-overlay); }
.swal2-title { font-size:22px; }
.swal2-styled.swal2-confirm { background:var(--erp-primary); border-radius:var(--erp-radius-control); }
.toastify { background:var(--erp-nav-active); color:var(--erp-on-primary); border-radius:var(--erp-radius-control); box-shadow:var(--erp-shadow-overlay); max-width:min(420px,calc(100vw - 32px)); }
.select2-container { max-width:100%; }
.select2-container--default .select2-selection--single,.select2-container--default .select2-selection--multiple { min-height:38px; height:auto; border:1px solid var(--erp-control-border); border-radius:var(--erp-radius-control); background:var(--erp-surface); }
.select2-container--default .select2-selection--single .select2-selection__rendered { line-height:36px; color:var(--erp-text); padding-left:12px; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height:36px; }
.select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default.select2-container--open .select2-selection--single { border-color:var(--erp-focus); box-shadow:var(--erp-focus-ring); }
.select2-dropdown { background:var(--erp-surface); border-color:var(--erp-control-border); color:var(--erp-text); }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background:var(--erp-primary); color:var(--erp-on-primary); }
.select2-container--default .select2-selection--multiple .select2-selection__choice { background:var(--erp-primary-soft); color:var(--erp-primary); border-color:var(--erp-border); }
.flatpickr-calendar { border:1px solid var(--erp-border); box-shadow:var(--erp-shadow-overlay); border-radius:var(--erp-radius-card); }
.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange { background:var(--erp-primary); border-color:var(--erp-primary); }
.ql-toolbar.ql-snow,.ql-container.ql-snow { border-color:var(--erp-control-border); font-family:var(--erp-font); }
.ql-toolbar.ql-snow { border-radius:8px 8px 0 0; background:var(--erp-surface-soft); }
.ql-container.ql-snow { border-radius:0 0 8px 8px; background:var(--erp-surface); font-size:14px; }
.erp-skip-link { position:fixed; top:-60px; left:12px; padding:12px; background:var(--erp-primary); color:var(--erp-on-primary); z-index:2000; }
.erp-skip-link:focus { top:8px; }
:where(a,button,input,select,textarea,[tabindex]):focus-visible { outline:2px solid var(--erp-focus); outline-offset:3px; }
#contentViewer { min-width:0; overflow-wrap:anywhere; }
#contentViewer > .row { --vz-gutter-x:20px; }
.erp-empty-state { padding:24px; text-align:center; color:var(--erp-text-secondary); }
@media (max-width:767.98px) {
 .btn,.form-control,.form-select,.input-group-text { min-height:44px; }
 .form-control,.form-select { font-size:16px; }
 .card-body,.card-header { padding:14px; }
 .page-title-box { flex-wrap:wrap; gap:12px; }
 .modal-dialog { margin:8px; }
 .modal-content { max-height:calc(100dvh - 16px); }
 .offcanvas.offcanvas-end { width:100% !important; /* Existing editors use inline percentage widths. */ }
 .nav-tabs { flex-wrap:wrap; }
 .select2-container--default .select2-selection--single { min-height:44px; }
 .select2-container--default .select2-selection--single .select2-selection__rendered { line-height:42px; }
}
@media (prefers-reduced-motion:reduce) {
 *,*::before,*::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; scroll-behavior:auto !important; }
}
@media print {
 .navbar-menu,#page-topbar,.vertical-overlay,.erp-skip-link,.erp-dashboard-toolbar__actions { display:none !important; }
 .main-content { margin:0 !important; }
 .page-content { padding:0 !important; }
 body { background:white; color:black; }
 .card { box-shadow:none; break-inside:avoid; }
 .table-responsive { overflow:visible; }
}

/* Module headings and icon tiles share a compact, readable hierarchy. */
#contentViewer .erp-module-heading { font-size:20px !important; line-height:1.35; letter-spacing:-.25px; color:var(--erp-heading) !important; margin:0 !important; font-weight:600; }
.erp-icon-tile { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; flex-shrink:0; border-radius:8px; font-size:18px; background:var(--erp-primary-soft); color:var(--erp-primary); }
.erp-icon-tile.is-purple { background:var(--erp-purple-soft); color:var(--erp-purple); }
.erp-icon-tile.is-orange { background:var(--erp-orange-soft); color:var(--erp-orange); }
.erp-icon-tile.is-sky { background:var(--erp-info-soft); color:var(--erp-info); }
.erp-icon-tile.is-rose { background:var(--erp-rose-soft); color:var(--erp-rose); }
/* Legacy outline-light actions now sit on neutral module surfaces. */
#contentViewer .btn-outline-light { --vz-btn-color:var(--erp-text-secondary); --vz-btn-border-color:var(--erp-control-border); --vz-btn-hover-color:var(--erp-primary); --vz-btn-hover-bg:var(--erp-primary-soft); --vz-btn-hover-border-color:var(--erp-primary); --vz-btn-active-color:var(--erp-primary); --vz-btn-active-bg:var(--erp-primary-soft); --vz-btn-active-border-color:var(--erp-primary); }
