body{font-family:system-ui,sans-serif;margin:0;background:#f5f6f8;color:#1f2937}.wrap{max-width:1100px;margin:auto;padding:30px}.card{background:#fff;padding:20px;border-radius:12px;margin-bottom:20px;box-shadow:0 3px 12px #0001}input,button,select,textarea{font:inherit;padding:10px;border-radius:8px;border:1px solid #d1d5db}button{background:#111827;color:#fff;border:0;cursor:pointer}.grid{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.nav{background:#111827;color:#fff;padding:24px}.nav a{display:block;color:#fff;text-decoration:none;padding:8px 0}.main{padding:28px}table{width:100%;border-collapse:collapse}th,td{padding:10px;border-bottom:1px solid #eee;text-align:left}.row{display:flex;gap:10px;align-items:center;justify-content:space-between}.error{color:#b91c1c}@media(max-width:800px){.grid{grid-template-columns:1fr}}

hr{border:0;border-top:1px solid #ffffff22;margin:18px 0}
.hidden{display:none}
.admin-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.form-grid label{display:grid;gap:6px}
.form-grid button{align-self:end}
textarea{min-height:90px}
@media(max-width:800px){.form-grid{grid-template-columns:1fr}}

.inline-editor{margin-top:18px;padding-top:18px;border-top:1px solid #eee}
.split{display:grid;grid-template-columns:260px 1fr;gap:24px}
.matrix input[type=radio]{width:auto}
small{color:#6b7280}
@media(max-width:800px){.split{grid-template-columns:1fr}}


.reference-manager {
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 12px;
  margin-top: 6px;
}

.reference-selected {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}

.reference-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #eef2f7;
  border-radius: 999px;
  padding: 6px 10px;
}

.reference-pill button {
  padding: 2px 7px;
  border-radius: 999px;
}

.reference-controls {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}

.reference-controls select {
  flex: 1 1 260px;
}

.inline-reference-create {
  margin-top: 12px;
  border-left: 4px solid #111827;
}

.dynamic-field {
  display: grid;
  gap: 6px;
}


.detail-property {
  display: grid;
  grid-template-columns: minmax(140px, 220px) 1fr;
  gap: 14px;
  align-items: start;
  padding: 8px 0;
}

.reference-detail-list {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.reference-detail-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: #eef2f7;
  color: #111827;
  border: 1px solid #dbe1e8;
  border-radius: 999px;
  padding: 7px 11px;
  cursor: pointer;
}

.reference-detail-link:hover {
  background: #e3e9f0;
}

@media (max-width: 700px) {
  .detail-property {
    grid-template-columns: 1fr;
    gap: 5px;
  }
}


.admin-section {
  margin-top: 18px;
}

.inline-editor {
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid #e5e7eb;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.form-grid label {
  display: grid;
  gap: 6px;
}

.split {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 24px;
}

.matrix input[type="radio"] {
  width: auto;
}

@media (max-width: 800px) {
  .form-grid,
  .split {
    grid-template-columns: 1fr;
  }
}


.full-width {
  grid-column: 1 / -1;
}

.calculation-results {
  display: grid;
  gap: 10px;
}

.calculation-result {
  display: grid;
  grid-template-columns: minmax(140px, 240px) 1fr;
  gap: 10px;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid #eef0f3;
}

.calculation-result:last-child {
  border-bottom: 0;
}

.calculation-value {
  font-size: 1.15rem;
}

.calculation-result small {
  grid-column: 2;
}

.calculation-filter {
  display: grid;
  grid-template-columns: 1.4fr .7fr 1.2fr 1.4fr 1.2fr auto;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
}

@media(max-width:900px) {
  .calculation-filter {
    grid-template-columns: 1fr;
  }

  .calculation-result {
    grid-template-columns: 1fr;
  }

  .calculation-result small {
    grid-column: 1;
  }
}


.nav-group {
  margin: 8px 0 14px;
}

.nav-group-title {
  width: 100%;
  display: flex;
  justify-content: space-between;
  background: transparent;
  padding: 7px 0;
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  opacity: .75;
}

.nav-group-links a {
  padding-left: 10px;
}

.file-property-manager {
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 10px;
}

.file-property-items {
  display: grid;
  gap: 8px;
  margin-bottom: 8px;
}

.file-property-item {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  padding: 8px;
  border: 1px solid #edf0f3;
  border-radius: 8px;
}

.file-property-item > div {
  display: grid;
}

.file-image-preview,
.detail-image-preview {
  width: 110px;
  height: 80px;
  object-fit: cover;
  border-radius: 7px;
  border: 1px solid #e5e7eb;
}

.detail-files {
  display: grid;
  gap: 10px;
}

.detail-file {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}

.richtext-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  padding: 6px;
  border: 1px solid #d1d5db;
  border-bottom: 0;
  border-radius: 8px 8px 0 0;
}

.richtext-toolbar button {
  padding: 5px 8px;
}

.richtext-editor {
  min-height: 180px;
  padding: 12px;
  border: 1px solid #d1d5db;
  border-radius: 0 0 8px 8px;
  background: #fff;
  overflow: auto;
}

.richtext-editor:focus {
  outline: 2px solid #c7d2fe;
}

.richtext-output {
  line-height: 1.6;
}

.richtext-output h2,
.richtext-output h3,
.richtext-output h4 {
  margin-top: .8em;
  margin-bottom: .35em;
}


.report-picker {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.pivot-scroll {
  overflow-x: auto;
}

.pivot-table {
  min-width: max-content;
  border-collapse: collapse;
}

.pivot-table th,
.pivot-table td {
  white-space: nowrap;
  text-align: right;
}

.pivot-table th:first-child {
  text-align: left;
  position: sticky;
  left: 0;
  z-index: 1;
  background: #fff;
}

.pivot-total {
  font-weight: 700;
}

.pivot-grand-total {
  font-weight: 800;
}


.relation-list {
  display: grid;
  gap: 8px;
  margin-bottom: 10px;
}

.relation-row {
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid #e5e7eb;
  border-radius: 9px;
  padding: 8px 10px;
  background: #fff;
}

.relation-row.is-draggable {
  cursor: default;
}

.relation-row.dragging {
  opacity: .45;
}

.relation-row.drag-over {
  outline: 2px dashed #9ca3af;
  outline-offset: 2px;
}

.drag-handle {
  user-select: none;
  font-size: 1.2rem;
  opacity: .6;
  cursor: grab;
}

.relation-info {
  min-width: 140px;
  flex: 1;
  display: grid;
}

.relation-info small {
  opacity: .65;
}

.relation-quantity {
  width: 105px;
  display: grid;
  gap: 3px;
  font-size: .8rem;
}

.relation-quantity input {
  width: 100%;
}

.relation-controls {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.relation-controls select {
  min-width: 180px;
}

.reference-detail-link small {
  margin-left: 8px;
  opacity: .65;
}

.relation-position {
  opacity: .6;
  margin-right: 4px;
}

.relation-detail-quantity {
  margin-left: 6px;
  font-weight: 700;
}

@media (max-width: 700px) {
  .relation-row {
    align-items: stretch;
    flex-direction: column;
  }

  .relation-quantity {
    width: 100%;
  }

  .relation-controls {
    display: grid;
  }
}


.object-admin-layout {
  display: grid;
  grid-template-columns: minmax(210px, 280px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}

.object-admin-sidebar {
  position: sticky;
  top: 12px;
  max-height: calc(100vh - 24px);
  overflow: auto;
}

.object-admin-sidebar > input {
  width: 100%;
  margin-bottom: 10px;
}

.object-admin-list {
  display: grid;
  gap: 5px;
}

.object-admin-list-item {
  display: grid;
  text-align: left;
  width: 100%;
  padding: 9px 10px;
  background: transparent;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
}

.object-admin-list-item small {
  opacity: .6;
}

.object-admin-list-item.active {
  border-width: 2px;
  font-weight: 700;
}

.object-admin-detail {
  min-width: 0;
}

.admin-new-object summary {
  cursor: pointer;
}

.admin-details-form {
  margin-top: 14px;
}

.admin-tabs button.active {
  font-weight: 800;
  text-decoration: underline;
}

.auto-name-info {
  display: grid;
  gap: 3px;
  padding: 10px;
  border: 1px dashed #d1d5db;
  border-radius: 8px;
}

.badge {
  display: inline-block;
  margin-top: 6px;
  padding: 3px 7px;
  border: 1px solid #e5e7eb;
  border-radius: 999px;
  font-size: .78rem;
}

@media (max-width: 850px) {
  .object-admin-layout {
    grid-template-columns: 1fr;
  }

  .object-admin-sidebar {
    position: static;
    max-height: 320px;
  }
}


.drag-handle { touch-action: none; }
.drag-handle:active { cursor: grabbing; }
.relation-row button { position: relative; z-index: 2; }


.option-group {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin-top: 6px;
}

.option-choice {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: auto;
  cursor: pointer;
}

.option-choice input {
  width: auto;
  margin: 0;
}

.checkbox-group,
.radio-group {
  padding: 8px 0;
}


.data-grid-toolbar,
.data-grid-bulk {
  display: grid;
  gap: 12px;
}

.data-grid-filter-row,
.data-grid-sort-row,
.data-grid-select-actions,
.data-grid-bulk {
  grid-template-columns: repeat(
    auto-fit,
    minmax(150px, max-content)
  );
  align-items: end;
}

.data-grid-filter-row,
.data-grid-sort-row,
.data-grid-select-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: end;
}

.data-grid-filter-row select,
.data-grid-filter-row input,
.data-grid-sort-row select,
.data-grid-bulk select,
.data-grid-bulk input {
  min-width: 150px;
}

.active-grid-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.filter-chip {
  border-radius: 999px;
  padding: 5px 9px;
}

.data-grid-count {
  padding: 8px 0;
}

.data-grid-bulk {
  position: sticky;
  top: 8px;
  z-index: 10;
  border-width: 2px;
}

.data-grid-card {
  padding: 0;
  overflow: hidden;
}

.data-grid-select-actions {
  padding: 10px;
  border-bottom: 1px solid #e5e7eb;
}

.table-scroll {
  overflow: auto;
}

.data-grid-table {
  min-width: 720px;
}

.grid-check-column {
  width: 42px;
  text-align: center;
}

.grid-check-column input {
  width: auto;
}

.sortable-grid-column {
  cursor: pointer;
  user-select: none;
}

.sortable-grid-column:hover {
  text-decoration: underline;
}

@media (max-width: 700px) {
  .data-grid-filter-row,
  .data-grid-sort-row,
  .data-grid-select-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .data-grid-filter-row select,
  .data-grid-filter-row input,
  .data-grid-sort-row select,
  .data-grid-bulk select,
  .data-grid-bulk input {
    width: 100%;
  }
}


.business-action-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.business-actions-card,
.collection-actions-card {
  display: grid;
  gap: 10px;
}

.handler-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.handler-list code {
  padding: 5px 8px;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
}


#homeBrand {
  color: inherit;
  text-decoration: none;
}

.home-header {
  margin-bottom: 20px;
}

.home-group {
  margin-bottom: 26px;
}

.home-group > h2 {
  margin-bottom: 10px;
}

.home-tiles {
  display: grid;
  grid-template-columns: repeat(
    auto-fit,
    minmax(210px, 1fr)
  );
  gap: 12px;
}

.home-tile {
  min-height: 130px;
  padding: 18px;
  text-align: left;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  white-space: normal;
}

.home-tile strong {
  font-size: 1.08rem;
}

.home-tile span {
  opacity: .8;
  font-weight: normal;
}

.home-tile small {
  margin-top: auto;
}


.module-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 12px;
  margin-top: 16px;
}

.module-card {
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 16px;
  display: grid;
  gap: 10px;
}

.module-card h3 {
  margin: 0;
}


/* Core v0.20.3 — ACL matrix filters + bulk edit */
.acl-filter-grid,
.acl-matrix-toolbar{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:12px;
  align-items:end;
  margin:14px 0;
}

.acl-filter-grid label,
.acl-matrix-toolbar label{
  display:grid;
  gap:5px;
}

.acl-bulk-bar{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:center;
  margin:14px 0;
  padding:12px;
  border:1px solid var(--border,#d8dde5);
  border-radius:10px;
}

.acl-select-all-label{
  display:flex !important;
  flex-direction:row !important;
  align-items:center;
  gap:7px !important;
}

.acl-matrix-toolbar{
  border-top:1px solid var(--border,#d8dde5);
  padding-top:14px;
}

#matrixTableHost{
  overflow:auto;
}

#aclRulesHost{
  overflow:auto;
}
