/* ==========================================================================
   ACRM UI: work-focused theme for the logged-in app
   Loaded last, after Bootstrap 3, AdminLTE and Grocery CRUD (flexigrid).
   ========================================================================== */

:root {
  --font: "IBM Plex Sans Arabic", "Segoe UI", Tahoma, "Noto Sans Arabic", sans-serif;

  --bg:            #f5f6f8;
  --surface:       #ffffff;
  --surface-2:     #f9fafb;
  --surface-3:     #f1f3f5;
  --border:        #e2e5e9;
  --border-strong: #cdd2d8;

  --text:   #1b2230;
  --text-2: #4a5363;
  --muted:  #6b7380;

  --accent:       #1f4b99;
  --accent-hover: #183c7c;
  --accent-soft:  #eaf0fa;
  --accent-ring:  rgba(31, 75, 153, .22);

  --danger:      #b42318;
  --danger-soft: #fdecea;
  --success:     #0b7a4b;
  --success-soft:#e7f5ee;
  --warn-soft:   #fff6e0;

  --sidebar-w: 248px;
  --sidebar-w-collapsed: 60px;
  --radius: 6px;
  --radius-sm: 4px;
  --row-h: 38px;
  --shadow-pop: 0 6px 24px rgba(16, 24, 40, .12), 0 1px 3px rgba(16, 24, 40, .08);
}

/* ---------- Base ---------- */
html, body { height: 100%; }
body.app {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font);
  font-size: 14px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
body.app h1, body.app h2, body.app h3, body.app h4,
body.app .box-title, body.app input, body.app select, body.app textarea, body.app button,
body.app .btn, body.app .flexigrid, body.app .chosen-container, body.app .ui-widget {
  font-family: var(--font) !important;
}
body.app a { color: var(--accent); }
body.app a:hover, body.app a:focus { color: var(--accent-hover); }
body.app kbd {
  display: inline-block;
  min-width: 20px;
  padding: 1px 5px;
  font: 500 11px/16px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  color: var(--text-2);
  background: var(--surface);
  border: 1px solid var(--border-strong);
  border-bottom-width: 2px;
  border-radius: var(--radius-sm);
  box-shadow: none;
  text-align: center;
}
body.app :focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.clear { clear: both; }

/* ---------- Shell ---------- */
.app-sidebar {
  position: fixed;
  top: 0; bottom: 0; right: 0;
  z-index: 1030;
  width: var(--sidebar-w);
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border-left: 1px solid var(--border);
  transition: width .15s ease, transform .2s ease;
}
.app-main {
  margin-right: var(--sidebar-w);
  min-height: 100vh;
  transition: margin .15s ease;
}
.app-content {
  padding: 20px 28px 48px;
  max-width: 1600px;
}
.app-mobilebar { display: none; }
.sb-backdrop { display: none; }

/* Brand */
.sb-brand {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 56px;
  padding: 0 12px 0 8px;
  border-bottom: 1px solid var(--border);
  flex: none;
}
.sb-brand-link {
  display: flex; align-items: center; gap: 10px;
  min-width: 0; flex: 1;
  color: var(--text) !important;
  text-decoration: none !important;
  font-weight: 600;
  font-size: 15px;
}
.sb-mark {
  flex: none;
  display: grid; place-items: center;
  width: 30px; height: 30px;
  border-radius: var(--radius);
  background: var(--accent);
  color: #fff;
  font-size: 14px;
}
.sb-brand-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-collapse {
  flex: none;
  width: 28px; height: 28px;
  border: 0; border-radius: var(--radius-sm);
  background: transparent;
  color: var(--muted);
}
.sb-collapse:hover { background: var(--surface-3); color: var(--text); }

/* Nav */
.sb-nav { flex: 1; overflow-y: auto; padding: 8px 8px 16px; }
.sb-nav ul { list-style: none; margin: 0; padding: 0; }
.sb-label {
  margin: 16px 10px 4px;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
  white-space: nowrap;
}
body.app .sb-nav a {
  display: flex; align-items: center; gap: 10px;
  height: 34px;
  padding: 0 10px;
  border-radius: var(--radius);
  color: var(--text-2);
  text-decoration: none;
  font-size: 13.5px;
  white-space: nowrap;
}
.sb-nav a i { color: var(--muted); font-size: 14px; flex: none; }
.sb-nav a span { overflow: hidden; text-overflow: ellipsis; }
body.app .sb-nav a:hover { background: var(--surface-3); color: var(--text); }
body.app .sb-nav a.is-active {
  background: var(--accent-soft);
  color: var(--accent);
  font-weight: 600;
}
.sb-nav a.is-active i { color: var(--accent); }

/* User */
.sb-footer { flex: none; border-top: 1px solid var(--border); padding: 8px; position: relative; }
.sb-user {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 8px;
  border-radius: var(--radius);
  color: var(--text) !important;
  text-decoration: none !important;
}
.sb-user:hover { background: var(--surface-3); }
.sb-avatar {
  flex: none;
  display: grid; place-items: center;
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--surface-3);
  border: 1px solid var(--border);
  font-weight: 600; font-size: 13px;
  color: var(--text-2);
}
.sb-user-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13.5px; }
.sb-user-caret { color: var(--muted); }
.sb-footer .dropdown-menu { right: 8px; left: 8px; bottom: calc(100% - 2px); min-width: 0; }

/* Collapsed sidebar */
.sb-collapsed .app-sidebar { width: var(--sidebar-w-collapsed); }
.sb-collapsed .app-main { margin-right: var(--sidebar-w-collapsed); }
.sb-collapsed .sb-brand-name,
.sb-collapsed .sb-nav a span,
.sb-collapsed .sb-user-name,
.sb-collapsed .sb-user-caret { display: none; }
.sb-collapsed .sb-label { height: 1px; margin: 10px 8px; overflow: hidden; color: transparent; background: var(--border); }
.sb-collapsed .sb-nav a { justify-content: center; padding: 0; }
.sb-collapsed .sb-brand { flex-direction: column; justify-content: center; height: auto; padding: 10px 0; }
.sb-collapsed .sb-collapse i { transform: scaleX(-1); }
.sb-collapsed .sb-user { justify-content: center; }
.sb-collapsed .sb-footer .dropdown-menu { right: 8px; left: auto; min-width: 220px; }

/* ---------- Page header ---------- */
.page-head {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 16px;
  margin: 0 0 16px;
}
body.app .page-title,
body.app .app-content > h1,
body.app .report-content h1 {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
  color: var(--text);
  letter-spacing: 0;
}
.page-sub { margin-top: 2px; color: var(--muted); font-size: 13px; }

/* Record tabs (customer / event subpages) */
.record-head {
  display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  margin: -4px 0 16px;
  border-bottom: 1px solid var(--border);
}
.record-title { padding-bottom: 10px; font-size: 15px; font-weight: 600; color: var(--text-2); }
.record-tabs { list-style: none; display: flex; flex-wrap: wrap; gap: 2px; margin: 0; padding: 0; }
.record-tabs a {
  display: block;
  padding: 8px 14px;
  margin-bottom: -1px;
  border-bottom: 2px solid transparent;
  color: var(--text-2);
  text-decoration: none !important;
  font-size: 13.5px;
}
.record-tabs a:hover { color: var(--text); border-bottom-color: var(--border-strong); }
.record-tabs li.active a { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }

/* ---------- Buttons & inputs (Bootstrap overrides) ---------- */
body.app .btn {
  height: 34px;
  padding: 0 14px;
  border-radius: var(--radius);
  font-size: 13.5px;
  font-weight: 500;
  line-height: 32px;
  box-shadow: none;
  text-shadow: none;
  background-image: none;
}
body.app .btn-default, body.app .flexigrid .btn {
  background: var(--surface);
  border: 1px solid var(--border-strong);
  color: var(--text);
}
body.app .btn-default:hover, body.app .flexigrid .btn:hover { background: var(--surface-3); border-color: var(--border-strong); color: var(--text); }
body.app .btn-primary, body.app .btn-info, body.app .btn-success {
  background: var(--accent);
  border: 1px solid var(--accent);
  color: #fff;
}
body.app .btn-primary:hover, body.app .btn-primary:focus,
body.app .btn-info:hover, body.app .btn-success:hover { background: var(--accent-hover); border-color: var(--accent-hover); color: #fff; }
body.app .btn-danger { background: var(--danger); border-color: var(--danger); }
.btn-icon {
  display: inline-grid; place-items: center;
  width: 32px; height: 32px;
  border: 0; border-radius: var(--radius);
  background: transparent;
  color: var(--text-2);
}
.btn-icon:hover { background: var(--surface-3); color: var(--text); }

body.app .form-control,
body.app .flexigrid input[type=text],
body.app .flexigrid input[type=password],
body.app .flexigrid input[type=email],
body.app .flexigrid input[type=number],
body.app .flexigrid select,
body.app .flexigrid textarea {
  height: 34px !important;
  padding: 5px 10px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  font-size: 14px;
  box-shadow: none;
  transition: border-color .1s, box-shadow .1s;
}
body.app textarea.form-control,
body.app .flexigrid textarea { height: auto !important; min-height: 84px; padding: 8px 10px; }
body.app .form-control:hover,
body.app .flexigrid input:hover, body.app .flexigrid select:hover, body.app .flexigrid textarea:hover { border-color: #b4bbc4; }
body.app .form-control:focus,
body.app .flexigrid input:focus,
body.app .flexigrid select:focus,
body.app .flexigrid textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-ring);
  outline: 0;
}
body.app label { font-weight: 500; color: var(--text-2); font-size: 13px; margin-bottom: 4px; }
body.app .alert { border-radius: var(--radius); border: 1px solid transparent; box-shadow: none; }
body.app .alert-danger { background: var(--danger-soft); border-color: #f5c2bd; color: var(--danger); }
body.app .alert-success { background: var(--success-soft); border-color: #b4e0c9; color: var(--success); }

/* Bootstrap dropdowns */
body.app .dropdown-menu {
  padding: 4px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-pop);
  font-size: 13.5px;
}
body.app .dropdown-menu > li > a { padding: 7px 10px; border-radius: var(--radius-sm); color: var(--text); }
body.app .dropdown-menu > li > a:hover { background: var(--surface-3); color: var(--text); }
body.app .dropdown-menu > li > a i { color: var(--muted); }
body.app .dropdown-menu kbd { float: left; }
body.app .dropdown-menu .divider { margin: 4px 0; background: var(--border); }

/* ---------- Panels (dashboard + AdminLTE .box used by reports) ---------- */
.panel, body.app .box {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: none;
  margin-bottom: 16px;
}
body.app .box { border-top: 1px solid var(--border); }
body.app .box.box-primary { border-top-color: var(--border); }
.panel-head, body.app .box-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
}
body.app .box-header.with-border { border-bottom: 1px solid var(--border); }
.panel-title, body.app .box-header .box-title {
  margin: 0;
  font-size: 14px !important;
  font-weight: 600;
  color: var(--text);
}
.panel-title i { color: var(--muted); margin-left: 4px; }
body.app .box-body { padding: 16px; }
body.app .box-header .box-title { float: none; display: block; text-align: right; flex: 1; }
body.app .report-content > div > h1 { margin-bottom: 16px; }
body.app .report-content { margin: 0; }
body.app .report-content > [class*=col-] { padding-left: 0; padding-right: 0; }
body.app .box-footer {
  padding: 12px 16px;
  background: var(--surface-2);
  border-top: 1px solid var(--border);
  border-radius: 0 0 var(--radius) var(--radius);
}
body.app .box-body .form-group { margin-bottom: 14px; }
body.app .box-body::after, body.app .box-footer::after { content: ""; display: table; clear: both; }

/* Reports: let the filter form use the full width instead of half */
body.app .report-content .pull-right-container.col-md-6 { width: 100%; }
body.app .report-content table.table { background: var(--surface); }
body.app .table { font-size: 13.5px; }
body.app .table > thead > tr > th {
  background: var(--surface-2);
  border-bottom: 1px solid var(--border);
  color: var(--text-2);
  font-weight: 600;
  font-size: 12.5px;
}
body.app .table > tbody > tr > td, body.app .table > thead > tr > th { padding: 8px 12px; border-top-color: var(--border); }
body.app .table-striped > tbody > tr:nth-of-type(odd) { background: var(--surface-2); }
body.app .table-hover > tbody > tr:hover { background: var(--accent-soft); }

/* ---------- Dashboard ---------- */
.dash {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  align-items: start;
}
.dash .panel { margin: 0; }
.dash-lookup { grid-column: 1 / -1; }
.lookup-form { display: flex; align-items: flex-end; gap: 12px; padding: 16px; flex-wrap: wrap; }
.lookup-form .field { display: flex; flex-direction: column; width: 180px; }
.lookup-form .field-grow { flex: 1; min-width: 220px; }
.lookup-form label { margin-bottom: 4px; }
.action-list { list-style: none; margin: 0; padding: 4px; }
body.app .action-list a {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 12px;
  border-radius: var(--radius-sm);
  color: var(--text);
  text-decoration: none !important;
}
.action-list a i { color: var(--muted); }
.action-list a span { flex: 1; }
body.app .action-list a:hover { background: var(--surface-3); color: var(--text); }
.action-list a:hover i { color: var(--accent); }

/* ==========================================================================
   Grocery CRUD — flexigrid theme
   ========================================================================== */
body.app .flexigrid {
  font-size: 13.5px;
  background: transparent;
  border: 0;
  overflow: visible;
}
body.app .flexigrid div.mDiv { display: none; }
body.app .flexigrid a { color: var(--accent); }
body.app .flexigrid div.btnseparator { display: none; }

/* --- List page: re-order into toolbar / search / table / pager --- */
body.app .flexigrid:not(.crud-form) {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
body.app .flexigrid:not(.crud-form) > #main-table-box,
body.app .flexigrid:not(.crud-form) form.filtering_form { display: contents; }
body.app .flexigrid:not(.crud-form) > .hidden-operations { display: none; }

body.app .flexigrid div.tDiv {
  order: 2;
  margin-inline-start: auto; /* toolbar buttons sit on the far (left) side */
  display: flex; align-items: center; gap: 6px;
  padding: 10px 12px;
  background: none;
  border: 0;
  overflow: visible;
}
body.app .flexigrid div.tDiv > .clear { display: none; }
body.app .flexigrid div.tDiv2,
body.app .flexigrid div.tDiv3 { display: flex; gap: 6px; float: none !important; padding: 0 !important; }
body.app .flexigrid .tDiv a { text-decoration: none; }
body.app .flexigrid div.fbutton,
body.app .flexigrid div.fbutton div,
body.app .flexigrid div.fbutton span { float: none !important; }
body.app .flexigrid div.fbutton {
  display: block;
  height: 32px;
  padding: 0 12px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  background: var(--surface);
  cursor: pointer;
}
body.app .flexigrid div.fbutton:hover { background: var(--surface-3); border-color: var(--border-strong); }
body.app .flexigrid div.fbutton div { padding: 0; border: 0; background: none; }
body.app .flexigrid div.fbutton span {
  display: inline-flex; align-items: center; gap: 6px;
  height: 30px;
  padding: 0 !important;
  background: none !important;
  color: var(--text);
  font-size: 13px;
  font-weight: 500;
}
body.app .flexigrid div.fbutton span::before {
  font: normal normal normal 13px/1 FontAwesome;
  color: var(--muted);
}
body.app .flexigrid div.fbutton span.add::before { content: "\f067"; color: #fff; }
body.app .flexigrid div.fbutton span.export::before { content: "\f1c3"; }
body.app .flexigrid div.fbutton span.print::before { content: "\f02f"; }
/* Primary action: Add */
body.app .flexigrid .add-anchor div.fbutton { background: var(--accent); border-color: var(--accent); }
body.app .flexigrid .add-anchor div.fbutton:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
body.app .flexigrid .add-anchor div.fbutton span { color: #fff; }
body.app .flexigrid .add-anchor div.fbutton span::after {
  content: "N";
  margin-inline-start: 6px;
  padding: 0 5px;
  border-radius: 3px;
  background: rgba(255,255,255,.18);
  font: 500 10.5px/16px ui-monospace, Menlo, Consolas, monospace;
}

/* Search row */
body.app .flexigrid div.sDiv {
  order: 1;
  display: flex !important;
  align-items: center;
  gap: 8px;
  padding: 10px 0 10px 12px;
  background: none;
  border: 0;
  color: var(--muted);
  font-size: 13px;
  white-space: nowrap;
}
body.app .flexigrid div.sDiv:first-of-type { padding-right: 12px; }
body.app .flexigrid div.sDiv + div.sDiv { padding-right: 12px; border-right: 1px solid var(--border); margin: 10px 0; padding-top: 0; padding-bottom: 0; }
body.app .flexigrid div.sDiv2 {
  float: none !important;
  clear: none !important;
  width: auto !important;
  display: flex; align-items: center; gap: 6px;
  padding: 0; border: 0;
}
body.app .flexigrid div.sDiv2 input.search_text { width: 240px; }
body.app .flexigrid div.sDiv2 input[name=exact_search_text] { width: 170px; }
body.app .flexigrid div.sDiv2 select { width: auto; min-width: 110px; padding-left: 24px; }
body.app .flexigrid input.crud_search,
body.app .flexigrid input.search_clear {
  height: 34px;
  padding: 0 12px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  font-size: 13px;
  cursor: pointer;
}
body.app .flexigrid input.crud_search { background: var(--surface-3); }
body.app .flexigrid input.crud_search:hover,
body.app .flexigrid input.search_clear:hover { background: var(--surface-3); border-color: #b4bbc4; }
body.app .flexigrid .search-div-clear-button { float: none !important; }
body.app .flexigrid input.search_clear { border-color: transparent; background: transparent; color: var(--muted); }

/* Table */
body.app .flexigrid > #main-table-box > .ajax_list,
body.app .flexigrid div.ajax_list {
  order: 3;
  width: 100%;
  min-width: 0;
  border-top: 1px solid var(--border);
  overflow-x: auto;
}
body.app .flexigrid div.bDiv {
  background: var(--surface);
  border: 0;
  overflow: visible;
  min-height: 0;
  height: auto !important;
}
body.app .flexigrid div.bDiv table,
body.app .flexigrid table#flex1 { width: 100%; border-collapse: collapse; margin: 0; }
body.app .flexigrid tr.hDiv th,
body.app .flexigrid div.hDiv th {
  height: 36px;
  padding: 0 !important;
  background: var(--surface-2) !important;
  border: 0 !important;
  border-bottom: 1px solid var(--border) !important;
  position: sticky; top: 0; z-index: 1;
}
body.app .flexigrid tr.hDiv th div,
body.app .flexigrid div.hDiv th div {
  padding: 0 12px !important;
  height: 36px; line-height: 36px;
  color: var(--text-2);
  font-size: 12.5px;
  font-weight: 600;
  text-align: right !important;
  white-space: nowrap;
  background: none !important;
}
body.app .flexigrid th div.field-sorting { cursor: pointer; }
body.app .flexigrid th div.field-sorting:hover { color: var(--text); }
body.app .flexigrid th div.field-sorting::after {
  content: "\f0dc";
  font: normal normal normal 11px/1 FontAwesome;
  margin-right: 6px;
  color: var(--border-strong);
}
body.app .flexigrid th div.field-sorting.asc::after { content: "\f0de"; color: var(--accent); }
body.app .flexigrid th div.field-sorting.desc::after { content: "\f0dd"; color: var(--accent); }
body.app .flexigrid div.bDiv td {
  padding: 0 !important;
  border: 0 !important;
  border-bottom: 1px solid var(--border) !important;
  background: transparent !important;
  vertical-align: middle;
}
body.app .flexigrid div.bDiv td div {
  padding: 8px 12px !important;
  min-height: var(--row-h);
  color: var(--text);
  text-align: right !important;
  line-height: 1.5;
}
body.app .flexigrid div.bDiv tr.erow td { background: transparent !important; }
body.app .flexigrid div.bDiv tr:hover td { background: var(--accent-soft) !important; }
body.app .flexigrid div.bDiv tr:last-child td { border-bottom: 0 !important; }
body.app .flexigrid tr td.sorted, body.app .flexigrid tr.erow td.sorted { background: transparent !important; }

/* Row actions: icon buttons, revealed strongly on hover */
body.app .flexigrid div.bDiv td div.tools {
  display: flex; align-items: center; justify-content: flex-end; gap: 2px;
  padding: 4px 8px !important;
  min-height: 0;
  white-space: nowrap;
}
body.app .flexigrid div.tools > a,
body.app .flexigrid div.tools > .clear { float: none !important; }
body.app .flexigrid div.tools > .clear { display: none; }
body.app .flexigrid div.tools a {
  display: inline-grid; place-items: center;
  min-width: 28px; height: 28px;
  padding: 0 6px;
  border-radius: var(--radius-sm);
  color: var(--muted);
  text-decoration: none;
  opacity: .75;
}
body.app .flexigrid div.bDiv tr:hover div.tools a { opacity: 1; }
body.app .flexigrid div.tools a:hover { background: var(--surface); color: var(--accent); box-shadow: inset 0 0 0 1px var(--border); }
body.app .flexigrid div.tools a.delete-row:hover { color: var(--danger); }
body.app .flexigrid .edit-icon,
body.app .flexigrid .delete-icon,
body.app .flexigrid .read-icon {
  float: none !important;
  display: inline-block;
  width: auto; height: auto;
  margin: 0;
  background: none !important;
}
body.app .flexigrid .edit-icon::before,
body.app .flexigrid .delete-icon::before,
body.app .flexigrid .read-icon::before { font: normal normal normal 14px/1 FontAwesome; }
body.app .flexigrid .read-icon::before   { content: "\f06e"; }
body.app .flexigrid .edit-icon::before   { content: "\f040"; }
body.app .flexigrid .delete-icon::before { content: "\f1f8"; }
/* Custom text action links (e.g. "events", "relations" per customer) */

/* Empty state */
body.app .flexigrid .ajax_list:not(:has(.bDiv)) { padding: 28px 16px; text-align: center; color: var(--muted); }
body.app .flexigrid .ajax_list:not(:has(.bDiv)) br { display: none; }

/* Pager */
body.app .flexigrid div.pDiv {
  order: 4;
  width: 100%;
  min-width: 0;
  padding: 8px 12px;
  background: var(--surface-2);
  border: 0;
  border-top: 1px solid var(--border);
  border-radius: 0 0 var(--radius) var(--radius);
  color: var(--muted);
  font-size: 13px;
}
body.app .flexigrid div.pDiv > div[style] { display: none; }
body.app .flexigrid div.pDiv2 {
  float: none !important;
  display: flex; align-items: center; flex-wrap: wrap; gap: 4px 12px;
  margin: 0; height: auto;
}
body.app .flexigrid div.pGroup { float: none !important; display: flex; align-items: center; gap: 2px; padding: 0; margin: 0; }
body.app .flexigrid div.pGroup:last-child { margin-inline-start: auto; }
body.app .flexigrid .pcontrol { display: inline-flex; align-items: center; gap: 6px; }
body.app .flexigrid div.pDiv input.crud_page { width: 52px; height: 30px !important; text-align: center; padding: 0 4px; }
body.app .flexigrid div.pDiv select.per_page { height: 30px !important; width: auto; padding: 0 8px 0 24px; }
body.app .flexigrid div.pDiv div.pButton {
  float: none !important;
  background: none !important;
  display: grid; place-items: center;
  width: 30px; height: 30px;
  margin: 0; padding: 0;
  border: 0; border-radius: var(--radius-sm);
  cursor: pointer;
}
body.app .flexigrid div.pDiv div.pButton:hover { background: var(--surface-3); border: 0; }
body.app .flexigrid div.pDiv div.pButton span {
  float: none !important;
  width: auto; height: auto;
  background: none !important;
  color: var(--text-2);
}
body.app .flexigrid div.pDiv div.pButton span::before { font: normal normal normal 15px/1 FontAwesome; }
body.app .flexigrid .pFirst span::before  { content: "\f101"; }
body.app .flexigrid .pPrev span::before   { content: "\f105"; }
body.app .flexigrid .pNext span::before   { content: "\f104"; }
body.app .flexigrid .pLast span::before   { content: "\f100"; }
body.app .flexigrid .pReload span::before { content: "\f021"; font-size: 13px !important; }
body.app .flexigrid .pReload.loading span::before { display: inline-block; animation: acrm-spin .8s linear infinite; }
body.app .flexigrid .pReload.loading { background: none !important; }
@keyframes acrm-spin { to { transform: rotate(360deg); } }

/* Status messages */
body.app .report-div {
  margin: 0 0 12px;
  border-radius: var(--radius);
  font-size: 13.5px;
}
body.app .report-div p { margin: 0; padding: 10px 14px; }
body.app .report-div.success { background: var(--success-soft); border: 1px solid #b4e0c9; color: var(--success); }
body.app .report-div.error   { background: var(--danger-soft); border: 1px solid #f5c2bd; color: var(--danger); }
body.app .report-div.success p, body.app .report-div.error p { color: inherit; background: none; border: 0; }
body.app .flexigrid:not(.crud-form) ~ .report-div,
body.app #list-report-error, body.app #list-report-success { width: 100%; }

/* --- Add / Edit / Read form --- */
body.app .flexigrid.crud-form {
  max-width: 980px;
  margin: 0 0 0 auto !important;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
body.app .flexigrid.crud-form div.mDiv {
  display: block;
  height: auto;
  padding: 12px 20px;
  background: none;
  border: 0;
  border-bottom: 1px solid var(--border);
}
body.app .flexigrid.crud-form div.mDiv .ftitle {
  float: none; height: auto; padding: 0;
  font-size: 15px; font-weight: 600; color: var(--text);
  background: none;
}
body.app .flexigrid.crud-form div.mDiv .ptogtitle { display: none; }
body.app .flexigrid.crud-form .ftitle-right { float: none; }
body.app .flexigrid div.form-div {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 24px;
  padding: 20px;
  background: none;
  border: 0;
}
body.app .flexigrid div.form-field-box {
  display: flex; flex-direction: column; gap: 4px;
  padding: 0 !important;
  margin: 0;
  background: none !important;
  border: 0 !important;
  min-width: 0;
}
body.app .flexigrid div.form-field-box > .clear { display: none; }
/* Long / multi-line fields span both columns */
body.app .flexigrid div.form-field-box:has(textarea),
body.app .flexigrid div.form-field-box:has(.chosen-container-multi),
body.app .flexigrid div.form-field-box:has(.qq-upload-button),
body.app .flexigrid div.form-field-box:has(table),
body.app .flexigrid div.form-div > .report-div { grid-column: 1 / -1; }
body.app .flexigrid .form-display-as-box {
  float: none !important;
  width: auto !important;
  padding: 0 !important;
  font-size: 13px;
  font-weight: 500;
  color: var(--text-2);
  text-align: right;
}
body.app .flexigrid .form-display-as-box .required { color: var(--danger); margin: 0 2px; }
body.app .flexigrid .form-input-box {
  float: none !important;
  width: 100% !important;
  padding: 0 !important;
  color: var(--text);
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px;
  font-size: 12.5px;
}
body.app .flexigrid .form-input-box > input.form-control,
body.app .flexigrid .form-input-box > input[type=text],
body.app .flexigrid .form-input-box > input[type=password],
body.app .flexigrid .form-input-box > textarea { width: 100% !important; flex: 1 1 100%; }
body.app .flexigrid .form-input-box > input.datepicker-input,
body.app .flexigrid .form-input-box > input.datetime-input { flex: 0 1 180px; width: 180px !important; }
body.app .flexigrid .form-input-box .readonly_label { font-size: 14px; padding: 6px 0; display: block; }
body.app .flexigrid .crud-form .form-input-box,
body.app .flexigrid div.form-div .form-input-box { color: var(--muted); }
body.app .flexigrid div.form-div .form-input-box input,
body.app .flexigrid div.form-div .form-input-box select,
body.app .flexigrid div.form-div .form-input-box textarea,
body.app .flexigrid div.form-div .form-input-box .readonly_label { color: var(--text); }

/* Form footer */
body.app .flexigrid.crud-form div.pDiv {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 20px;
  background: var(--surface-2);
  border: 0;
  border-top: 1px solid var(--border);
  border-radius: 0 0 var(--radius) var(--radius);
}
body.app .flexigrid.crud-form div.pDiv > .clear { display: none; }
body.app .flexigrid div.form-button-box { float: none !important; margin: 0 !important; }
body.app .flexigrid div.form-button-box .btn { height: 34px; line-height: 32px; padding: 0 16px; }
/* "Save and close" is the primary action; "Save and add another" / "Save changes" is secondary. */
body.app .flexigrid #save-and-go-back-button { background: var(--accent); border-color: var(--accent); color: #fff; }
body.app .flexigrid #save-and-go-back-button:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
body.app .flexigrid #form-button-save { background: var(--surface); border-color: var(--accent); color: var(--accent); }
body.app .flexigrid #form-button-save:hover { background: var(--accent-soft); }
/* Forms without a back button (unset_back_to_list): save is the only action. */
body.app .flexigrid .pDiv:not(:has(#save-and-go-back-button)) #form-button-save { background: var(--accent); color: #fff; }
body.app .flexigrid label.gc-keep-values {
  display: inline-flex; align-items: center; gap: 6px;
  margin: 0 6px !important; font-weight: 400; font-size: 12.5px; color: var(--text-2); cursor: pointer; white-space: nowrap;
}
body.app .flexigrid label.gc-keep-values input { margin: 0; }
body.app .flexigrid .gc-added-count {
  padding: 2px 10px; border-radius: 999px;
  background: var(--success-soft); color: var(--success); font-size: 12.5px; white-space: nowrap;
}
body.app .flexigrid .gc-added-count[hidden] { display: none; }
body.app .flexigrid #cancel-button { border-color: transparent; background: transparent; color: var(--text-2); }
body.app .flexigrid #cancel-button:hover { background: var(--surface-3); }
body.app .flexigrid .small-loading { color: var(--muted); font-size: 13px; background-position: right center !important; padding-right: 22px !important; }
.form-kbd-hint .combo { direction: ltr; unicode-bidi: isolate; display: inline-block; margin: 0 2px 0 10px; }
.form-kbd-hint { margin-inline-start: auto; color: var(--muted); font-size: 12px; white-space: nowrap; }

/* Chosen selects */
body.app .chosen-container { width: 100% !important; font-size: 14px; }
body.app .chosen-container-single .chosen-single {
  height: 34px; line-height: 32px;
  padding: 0 10px 0 0;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  background: var(--surface) !important;
  box-shadow: none;
  color: var(--text);
}
body.app .chosen-container-single .chosen-default { color: var(--muted); }
body.app .chosen-container-single .chosen-single div { width: 24px; }
body.app .chosen-container-single .chosen-single div b { display: none !important; }
body.app .chosen-container-single .chosen-single div { display: grid !important; place-items: center; background: none !important; border: 0 !important; }
body.app .chosen-container-single .chosen-single div::after { content: "\f107"; font: normal normal normal 14px/1 FontAwesome; color: var(--muted); }
body.app .chosen-container-single .chosen-single abbr { top: 10px; }
body.app .chosen-container-active .chosen-single,
body.app .chosen-container-active .chosen-choices {
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 3px var(--accent-ring) !important;
}
body.app .chosen-container .chosen-drop {
  border: 1px solid var(--border);
  border-radius: 0 0 var(--radius) var(--radius);
  box-shadow: var(--shadow-pop);
}
body.app .chosen-container .chosen-results li.highlighted { background: var(--accent) !important; background-image: none !important; }
body.app .chosen-container-multi .chosen-choices {
  min-height: 34px;
  padding: 2px 4px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  background: var(--surface) !important;
  box-shadow: none;
}
body.app .chosen-container-multi .chosen-choices li.search-choice {
  margin: 3px 0 3px 4px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface-3) !important;
  box-shadow: none;
  color: var(--text);
}

/* jQuery UI datepicker + clear buttons */
body.app .datepicker-input-clear.ui-button {
  height: 34px; padding: 0 10px;
  border: 1px solid var(--border-strong) !important;
  border-radius: var(--radius) !important;
  background: var(--surface) !important;
  color: var(--text-2) !important;
  font-size: 12.5px;
}
body.app .datepicker-input-clear .ui-button-text { padding: 0; line-height: 32px; }
body.app .ui-datepicker {
  padding: 8px;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius) !important;
  background: var(--surface) !important;
  box-shadow: var(--shadow-pop);
  font-size: 13px;
}
body.app .ui-datepicker .ui-widget-header { background: none !important; border: 0 !important; color: var(--text); font-weight: 600; }
body.app .ui-datepicker .ui-state-default { border: 0 !important; background: none !important; color: var(--text) !important; text-align: center; border-radius: var(--radius-sm); }
body.app .ui-datepicker .ui-state-hover { background: var(--surface-3) !important; }
body.app .ui-datepicker .ui-state-highlight { box-shadow: inset 0 0 0 1px var(--accent); }
body.app .ui-datepicker .ui-state-active { background: var(--accent) !important; color: #fff !important; }

/* ---------- Keyboard shortcut overlay ---------- */
.kbd-help {
  position: fixed; inset: 0; z-index: 2000;
  display: grid; place-items: center;
  background: rgba(17, 24, 39, .32);
}
.kbd-help[hidden] { display: none; }
.kbd-help-panel {
  width: min(440px, calc(100vw - 32px));
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: var(--shadow-pop);
}
.kbd-help-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px 10px 16px; border-bottom: 1px solid var(--border); }
.kbd-help dl { display: grid; grid-template-columns: max-content 1fr; gap: 10px 16px; margin: 0; padding: 16px; font-size: 13.5px; }
.kbd-help dt kbd { direction: ltr; }
.kbd-help dt { font-weight: 400; color: var(--muted); white-space: nowrap; }
.kbd-help dd { margin: 0; color: var(--text); }

/* ---------- Dialogs (add / edit / bulk add over the list) ---------- */
body.app .ui-widget-overlay { background: rgba(16, 24, 40, .42) !important; opacity: 1 !important; }
body.app .ui-dialog.acrm-dialog {
  padding: 0;
  background: var(--surface);
  border: 0;
  border-radius: 10px;
  box-shadow: 0 20px 48px rgba(16, 24, 40, .22), 0 2px 6px rgba(16, 24, 40, .08);
  overflow: hidden;
  direction: rtl;
}
body.app .acrm-dialog .ui-dialog-titlebar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px 12px 12px;
  background: none; border: 0; border-bottom: 1px solid var(--border); border-radius: 0;
  color: var(--text);
}
body.app .acrm-dialog .ui-dialog-title { float: none; margin: 0; font-size: 15px; font-weight: 600; width: auto; }
body.app .acrm-dialog .ui-dialog-titlebar-close {
  position: static; margin: 0; width: 30px; height: 30px; padding: 0;
  display: grid; place-items: center;
  background: none; border: 0; border-radius: var(--radius-sm); color: var(--muted);
}
body.app .acrm-dialog .ui-dialog-titlebar-close:hover { background: var(--surface-3); color: var(--text); }
body.app .acrm-dialog .ui-dialog-titlebar-close .ui-icon,
body.app .acrm-dialog .ui-dialog-titlebar-close .ui-button-text { display: none; }
body.app .acrm-dialog .ui-dialog-titlebar-close::before { content: "\f00d"; font: normal normal normal 15px/1 FontAwesome; }
body.app .acrm-dialog .ui-dialog-content { padding: 0; background: var(--surface); }
body.app .acrm-dialog .flexigrid.crud-form { max-width: none; margin: 0 !important; border: 0; border-radius: 0; }
body.app .acrm-dialog .flexigrid.crud-form div.mDiv { display: none; }
body.app .acrm-dialog .flexigrid.crud-form div.pDiv {
  position: sticky; bottom: 0; z-index: 2;
  flex-wrap: wrap;
  border-radius: 0;
}
body.app .acrm-dialog .flexigrid div.form-div { padding: 16px 20px; }
body.app .acrm-dialog .report-div { margin: 0; }
body.app .acrm-dialog .field_error,
body.app .flexigrid .chosen-container.field_error .chosen-single { border-color: var(--danger) !important; box-shadow: 0 0 0 3px var(--danger-soft) !important; }

/* ---------- List toolbar: bulk add + selection ---------- */
body.app .flexigrid div.fbutton span.bulk-add::before { content: "\f0ce"; }
body.app .flexigrid .bulk-add-anchor div.fbutton span::after {
  content: "B";
  margin-inline-start: 6px; padding: 0 5px; border-radius: 3px;
  background: var(--surface-3); color: var(--muted);
  font: 500 10.5px/16px ui-monospace, Menlo, Consolas, monospace;
}
body.app .flexigrid div.tDiv4 { display: flex; align-items: center; gap: 8px; float: none; }
body.app .flexigrid div.tDiv4[hidden] { display: none; }
body.app .flexigrid .gc-selected-count { color: var(--text-2); font-size: 13px; white-space: nowrap; }
body.app .flexigrid div.fbutton span.delete-selected { color: var(--danger); }
body.app .flexigrid div.fbutton span.delete-selected::before { content: "\f1f8"; color: var(--danger); }
body.app .flexigrid .delete-selected-anchor div.fbutton { border-color: #f5c2bd; }
body.app .flexigrid .delete-selected-anchor div.fbutton:hover { background: var(--danger-soft); }
body.app .flexigrid th.gc-select-col,
body.app .flexigrid td.gc-select-col { width: 40px; cursor: pointer; }
body.app .flexigrid th.gc-select-col div,
body.app .flexigrid div.bDiv td.gc-select-col div { padding: 0 12px !important; display: flex; align-items: center; min-height: var(--row-h); }
body.app .flexigrid .gc-select-col input { margin: 0; width: 15px; height: 15px; cursor: pointer; }
body.app .flexigrid div.bDiv tr.is-selected td { background: var(--accent-soft) !important; }
body.app .flexigrid div.bDiv tbody tr { cursor: default; }
body.app .flexigrid div.tools a:not(.edit_button):not(.read_button):not(.delete-row) { font-size: 12.5px; color: var(--text-2); }

/* ---------- Bulk add grid ---------- */
body.app .gc-bulk { display: flex; flex-direction: column; min-height: 0; }
body.app .gc-bulk-help, body.app .gc-bulk-warn { margin: 0; padding: 10px 16px; font-size: 12.5px; color: var(--text-2); background: var(--surface-2); border-bottom: 1px solid var(--border); }
body.app .gc-bulk-help .fa { color: var(--accent); margin-inline-end: 4px; }
body.app .gc-bulk-warn { background: var(--warn-soft); color: #7a5300; }
body.app .gc-bulk-scroll { overflow: auto; max-height: calc(100vh - 260px); }
body.app .gc-bulk-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 13px; }
body.app .gc-bulk-table th {
  position: sticky; top: 0; z-index: 1;
  padding: 0; background: var(--surface-2);
  border-bottom: 1px solid var(--border);
  font-weight: 600; color: var(--text-2); font-size: 12.5px; white-space: nowrap; text-align: right;
}
body.app .gc-bulk-th { display: flex; align-items: center; justify-content: space-between; gap: 4px; padding: 8px 10px; min-width: 140px; }
body.app .gc-bulk-th .required { color: var(--danger); margin: 0 2px; }
body.app .gc-bulk-fill {
  width: 22px; height: 22px; padding: 0; border: 0; border-radius: var(--radius-sm);
  background: none; color: var(--muted); opacity: .6;
}
body.app .gc-bulk-table th:hover .gc-bulk-fill { opacity: 1; }
body.app .gc-bulk-fill:hover { background: var(--surface-3); color: var(--accent); }
body.app .gc-bulk-table td { padding: 0; border-bottom: 1px solid var(--border); border-inline-start: 1px solid var(--border); vertical-align: middle; }
body.app .gc-bulk-table td:first-child { border-inline-start: 0; }
body.app .gc-bulk-num { width: 36px; min-width: 36px; text-align: center !important; color: var(--muted); font-variant-numeric: tabular-nums; font-size: 12px; }
body.app .gc-bulk-table th.gc-bulk-num { padding: 8px 0; }
body.app input.gc-bulk-cell {
  display: block; width: 100%; min-width: 140px; height: 34px;
  padding: 0 10px; margin: 0;
  border: 0; border-radius: 0; background: transparent; box-shadow: none;
  font-size: 13.5px; color: var(--text);
}
body.app input.gc-bulk-cell:focus { outline: 2px solid var(--accent); outline-offset: -2px; background: var(--surface); }
body.app input.gc-bulk-cell.field_error { background: var(--danger-soft); }
body.app input.gc-bulk-cell:disabled { color: var(--muted); background: transparent; }
body.app input.gc-bulk-select::-webkit-calendar-picker-indicator { opacity: .5; }
body.app .gc-bulk-status-col, body.app td.gc-bulk-status { min-width: 120px; max-width: 260px; }
body.app td.gc-bulk-status { padding: 0 10px; font-size: 12px; color: var(--muted); line-height: 1.35; }
body.app tr.is-saved td { background: var(--success-soft); }
body.app tr.is-saved td.gc-bulk-status { color: var(--success); }
body.app tr.is-error td.gc-bulk-status { color: var(--danger); }
body.app td.gc-bulk-x, body.app th.gc-bulk-x { width: 32px; text-align: center; }
body.app .gc-bulk-remove { width: 26px; height: 26px; padding: 0; border: 0; border-radius: var(--radius-sm); background: none; color: var(--muted); opacity: 0; }
body.app tr:hover .gc-bulk-remove, body.app .gc-bulk-remove:focus { opacity: 1; }
body.app .gc-bulk-remove:hover { background: var(--danger-soft); color: var(--danger); }
body.app .gc-bulk-foot {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  padding: 12px 16px; background: var(--surface-2); border-top: 1px solid var(--border);
}
body.app .gc-bulk-foot .btn { height: 34px; line-height: 32px; padding: 0 14px; }
body.app .gc-bulk-foot .gc-bulk-save { background: var(--accent); border-color: var(--accent); color: #fff; }
body.app .gc-bulk-foot .gc-bulk-save:hover { background: var(--accent-hover); }
body.app .gc-bulk-foot .gc-bulk-close { border-color: transparent; background: transparent; color: var(--text-2); }
body.app .gc-bulk-summary { font-size: 13px; color: var(--muted); }
body.app .gc-bulk-summary.ok { color: var(--success); }
body.app .gc-bulk-summary.bad { color: var(--danger); }

/* ---------- Responsive ---------- */
@media (max-width: 991px) {
  .app-sidebar { transform: translateX(100%); width: var(--sidebar-w) !important; box-shadow: var(--shadow-pop); }
  .app-main, .sb-collapsed .app-main { margin-right: 0; }
  .sb-open .app-sidebar { transform: none; }
  .sb-open .sb-backdrop { display: block; position: fixed; inset: 0; z-index: 1029; background: rgba(17,24,39,.32); }
  .sb-collapse { display: none; }
  .sb-collapsed .sb-brand-name, .sb-collapsed .sb-nav a span,
  .sb-collapsed .sb-user-name, .sb-collapsed .sb-user-caret { display: initial; }
  .app-mobilebar {
    display: flex; align-items: center; gap: 8px;
    position: sticky; top: 0; z-index: 1000;
    height: 52px; padding: 0 12px;
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    font-weight: 600;
  }
  .app-content { padding: 16px; }
  .dash { grid-template-columns: 1fr; }
  body.app .flexigrid div.form-div { grid-template-columns: 1fr; }
  body.app .flexigrid div.tDiv { margin-inline-start: 0; width: 100%; }
  body.app .flexigrid div.sDiv { width: 100%; flex-wrap: wrap; }
  body.app .flexigrid div.sDiv2 { flex-wrap: wrap; }
  body.app .flexigrid div.sDiv2 input.search_text { width: 100%; flex: 1; min-width: 160px; }
  body.app .acrm-dialog .form-kbd-hint, body.app .gc-bulk-foot .form-kbd-hint { display: none; }
}

/* ---------- Auth (login, password reset) ---------- */
body.app.auth { display: grid; place-items: center; min-height: 100vh; padding: 24px 16px; }
body.app.auth > .container { width: 100%; max-width: 400px; padding: 0; }
body.app.auth > .container > .col-md-12 { padding: 0; float: none; }
body.app.auth .row { margin: 0 !important; }
body.app.auth .row > [class*=col-] { width: 100%; margin: 0; padding: 0; float: none; }
body.app.auth .auth-brand { display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 20px; font-size: 16px; font-weight: 600; }
body.app.auth form {
  padding: 28px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
}
body.app.auth fieldset h2, body.app.auth form h2 { margin: 0 0 4px; font-size: 18px; font-weight: 600; }
body.app.auth hr.colorgraph { margin: 16px 0; border: 0; border-top: 1px solid var(--border); }
body.app.auth .form-group { margin-bottom: 12px; }
body.app.auth .form-control.input-lg { height: 40px !important; font-size: 14px; border-radius: var(--radius); }
body.app.auth .checkbox { margin: 4px 0 0; display: flex; align-items: center; gap: 8px; }
body.app.auth .checkbox input { position: static; margin: 0 !important; }
body.app.auth .checkbox label { padding: 0 !important; margin: 0; min-height: 0; }
body.app.auth .btn-lg { height: 40px; line-height: 38px; font-size: 14px; }
body.app.auth .row > [class*=col-]:empty { display: none; }
body.app.auth .row > [class*=col-] + [class*=col-] { margin-top: 8px; }
body.app.auth .table { margin: 0; }
body.app.auth .table td { border: 0; padding: 4px 0; }

/* ---------- Print ---------- */
@media print {
  .app-sidebar, .app-mobilebar, .sb-backdrop, .kbd-help,
  body.app .flexigrid div.tDiv, body.app .flexigrid div.sDiv, body.app .flexigrid div.pDiv, body.app .flexigrid div.tools { display: none !important; }
  .app-main { margin: 0 !important; }
  .app-content { padding: 0; }
  body.app { background: #fff; }
}
