/* SIAPIYA_SPA_UI_AUDIT_V3156
   Konsistensi visual, responsivitas, aksesibilitas, dan state UI untuk seluruh modul SPA. */

.siapiya-spa-module {
  --si-surface: #ffffff;
  --si-surface-muted: #f7f8fb;
  --si-border: rgba(15, 23, 42, .11);
  --si-text: #172033;
  --si-muted: #64748b;
  --si-primary: var(--bs-primary, #0066cc);
  --si-radius-lg: 20px;
  --si-radius-md: 14px;
  --si-shadow: 0 12px 32px rgba(15, 23, 42, .055);
  width: 100%;
  min-width: 0;
  max-width: 100%;
  color: var(--si-text);
  background: transparent !important;
  overflow-x: clip;
  padding-bottom: max(8px, env(safe-area-inset-bottom));
}

.siapiya-spa-module,
.siapiya-spa-module * {
  box-sizing: border-box;
}

.siapiya-spa-module .shell {
  width: 100%;
  max-width: none !important;
  min-width: 0;
  margin: 0 !important;
  padding: 0 !important;
}

/* Header halaman yang konsisten */
.siapiya-spa-module .spa-module-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  min-width: 0;
  margin: 0 0 18px;
  padding: 2px 2px 16px;
  border-bottom: 1px solid var(--si-border);
}

.siapiya-spa-module .spa-module-heading > * {
  min-width: 0;
}

.siapiya-spa-module .spa-module-heading h4 {
  margin: 0 0 5px !important;
  color: var(--si-text);
  font-size: clamp(1.1rem, 1rem + .35vw, 1.4rem);
  font-weight: 800;
  line-height: 1.25;
  letter-spacing: -.025em;
  overflow-wrap: anywhere;
}

.siapiya-spa-module .spa-module-heading p {
  max-width: 780px;
  color: var(--si-muted) !important;
  font-size: .9rem;
  line-height: 1.5;
  overflow-wrap: anywhere;
}

.siapiya-spa-module .spa-module-heading .badge {
  flex: 0 1 auto;
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
  text-align: left;
  padding: .52rem .72rem;
  color: var(--si-text) !important;
  background: var(--si-surface-muted) !important;
  border-color: var(--si-border) !important;
}

/* Panel dan kartu */
.siapiya-spa-module :is(.panel, .cardx, .journal-card, .followup-card, .objective, .plan, .card) {
  min-width: 0;
  max-width: 100%;
  color: var(--si-text);
  background: var(--si-surface) !important;
  border: 1px solid var(--si-border) !important;
  border-radius: var(--si-radius-lg) !important;
  box-shadow: var(--si-shadow) !important;
}

.siapiya-spa-module :is(.panel, .cardx, .journal-card, .followup-card, .objective, .plan) {
  padding: 17px;
}

.siapiya-spa-module .card-body {
  min-width: 0;
}

.siapiya-spa-module :is(.section, .panel, .card, .journal-card, .followup-card, .objective, .plan) + :is(.section, .panel, .card, .journal-card, .followup-card, .objective, .plan) {
  margin-top: 14px;
}

.siapiya-spa-module :is(.section h2, .card h2, .panel h2, .followup-toolbar h5) {
  color: var(--si-text);
  overflow-wrap: anywhere;
}

/* Filter dan formulir */
.siapiya-spa-module :is(.filter-grid, .filters) {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 185px), 1fr)) !important;
  align-items: end !important;
  gap: 12px !important;
  min-width: 0;
}

.siapiya-spa-module :is(.filter-grid, .filters) > * {
  min-width: 0 !important;
  max-width: 100% !important;
  margin: 0 !important;
}

.siapiya-spa-module :is(.filter-grid, .filters) label,
.siapiya-spa-module .form-label {
  display: grid;
  gap: 6px;
  color: var(--si-text);
  font-size: .86rem;
  font-weight: 700;
}

.siapiya-spa-module :is(.filter-grid, .filters) label > small {
  color: var(--si-muted) !important;
  font-size: .76rem;
  font-weight: 700;
  line-height: 1.3;
}

.siapiya-spa-module :is(.form-control, .form-select) {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  border-color: var(--si-border);
  border-radius: 12px;
  background-color: var(--si-surface);
}

.siapiya-spa-module :is(.form-control, .form-select):focus {
  border-color: rgba(var(--bs-primary-rgb), .62);
  box-shadow: 0 0 0 .22rem rgba(var(--bs-primary-rgb), .13);
}

.siapiya-spa-module .btn {
  min-width: 0;
  min-height: 42px;
  border-radius: 12px;
  font-weight: 700;
  white-space: normal;
}

.siapiya-spa-module .btn-sm {
  min-height: 34px;
  border-radius: 10px;
}

.siapiya-spa-module :is(.journal-actions, .actions, .modal-footer, .followup-toolbar, .section-head) {
  min-width: 0;
}

/* Ringkasan statistik */
.siapiya-spa-module :is(.summary-grid, .metrics) {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 145px), 1fr)) !important;
  gap: 11px !important;
  min-width: 0;
  margin: 14px 0 !important;
}

.siapiya-spa-module .metric {
  min-width: 0;
  min-height: 92px;
  padding: 14px !important;
  color: var(--si-text);
  background: var(--si-surface) !important;
  border: 1px solid var(--si-border) !important;
  border-radius: 16px !important;
  box-shadow: none !important;
  overflow: hidden;
}

.siapiya-spa-module .metric small,
.siapiya-spa-module .muted,
.siapiya-spa-module .muted-small,
.siapiya-spa-module .text-muted {
  color: var(--si-muted) !important;
}

.siapiya-spa-module .metric strong,
.siapiya-spa-module .metric .fs-3 {
  color: var(--si-text);
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}

/* Tab/pilihan tampilan */
.siapiya-spa-module :is(.view-tabs, .tabs) {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
  margin: 14px 0;
}

.siapiya-spa-module :is(.view-tab, .tabbtn) {
  min-height: 40px;
  padding: 8px 13px;
  color: var(--si-text);
  background: var(--si-surface) !important;
  border: 1px solid var(--si-border) !important;
  border-radius: 999px !important;
  font-weight: 750;
}

.siapiya-spa-module :is(.view-tab, .tabbtn).active {
  color: #fff !important;
  background: var(--si-primary) !important;
  border-color: var(--si-primary) !important;
  box-shadow: 0 5px 14px rgba(var(--bs-primary-rgb), .18);
}

/* Tabel: tidak mendorong halaman melebar */
.siapiya-spa-module :is(.table-wrap, .table-responsive, .siapiya-audit-table-wrap) {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  border-radius: 13px;
}

.siapiya-spa-module .table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 0;
  color: var(--si-text);
}

.siapiya-spa-module .table > :not(caption) > * > * {
  padding: .72rem .68rem;
  border-bottom-color: var(--si-border);
  vertical-align: middle;
  overflow-wrap: anywhere;
}

.siapiya-spa-module .table thead th {
  color: var(--si-muted);
  background: var(--si-surface-muted);
  font-size: .76rem;
  font-weight: 800;
  white-space: nowrap;
}

.siapiya-spa-module .table tbody tr:last-child > * {
  border-bottom: 0;
}

.siapiya-spa-module code,
.siapiya-spa-module pre,
.siapiya-spa-module .font-monospace,
.siapiya-spa-module .secret-box {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.siapiya-spa-module pre {
  white-space: pre-wrap;
}

/* Empty/loading/error state */
.siapiya-spa-module .empty,
.siapiya-spa-module [data-siapiya-empty="1"] {
  display: grid;
  place-items: center;
  min-height: 150px;
  padding: 28px 18px !important;
  color: var(--si-muted);
  background: var(--si-surface-muted) !important;
  border: 1px dashed var(--si-border) !important;
  border-radius: 16px !important;
  text-align: center;
  line-height: 1.55;
  box-shadow: none !important;
}

.siapiya-spa-module .empty::before,
.siapiya-spa-module [data-siapiya-empty="1"]::before {
  content: "\F431";
  display: block;
  margin-bottom: 8px;
  color: var(--si-muted);
  font-family: "bootstrap-icons";
  font-size: 1.55rem;
  line-height: 1;
  opacity: .72;
}

.siapiya-spa-module [id="loading"] {
  min-height: 190px;
}

.siapiya-spa-module.loading,
.siapiya-spa-module[aria-busy="true"] {
  cursor: progress;
}

.siapiya-spa-module.loading::after,
.siapiya-spa-module[aria-busy="true"]::after {
  content: "";
  position: fixed;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* Modal */
.siapiya-spa-module .modal-dialog {
  width: auto;
  max-width: min(var(--bs-modal-width, 900px), calc(100vw - 24px));
  margin: 12px auto;
}

.siapiya-spa-module .modal-content {
  max-height: calc(100dvh - 24px);
  color: var(--si-text);
  background: var(--si-surface);
  border: 1px solid var(--si-border) !important;
  border-radius: 20px !important;
  box-shadow: 0 24px 70px rgba(15, 23, 42, .2);
  overflow: hidden;
}

.siapiya-spa-module .modal-header,
.siapiya-spa-module .modal-footer {
  border-color: var(--si-border);
}

.siapiya-spa-module .modal-title {
  overflow-wrap: anywhere;
}

.siapiya-spa-module .modal-body {
  min-width: 0;
  overflow-x: hidden;
}

/* Grid modul */
.siapiya-spa-module :is(.journal-grid, .objective-grid, .grid) > * {
  min-width: 0;
}

.siapiya-spa-module .journal-head,
.siapiya-spa-module .followup-head,
.siapiya-spa-module .objective-head,
.siapiya-spa-module .plan-head {
  min-width: 0;
}

.siapiya-spa-module :is(.journal-head, .followup-head, .objective-head, .plan-head) > * {
  min-width: 0;
}

/* Fokus keyboard */
.siapiya-spa-module :is(button, [href], input, select, textarea):focus-visible {
  outline: 3px solid rgba(var(--bs-primary-rgb), .25);
  outline-offset: 2px;
}

/* Integrasi API tidak boleh mengambil tinggi satu viewport sendiri */
#siapiyaIntegrationApiSpa {
  min-height: 0 !important;
}

#siapiyaIntegrationApiSpa .card-body > .d-flex,
#siapiyaLeadershipSpa .section-head,
#siapiyaLeadershipSpa .section > .d-flex {
  min-width: 0;
  flex-wrap: wrap;
}

/* Dark mode */
[data-bs-theme="dark"] .siapiya-spa-module {
  --si-surface: #1c1c1e;
  --si-surface-muted: #242428;
  --si-border: rgba(255, 255, 255, .13);
  --si-text: #f2f2f7;
  --si-muted: #aeb6c5;
  --si-shadow: 0 12px 32px rgba(0, 0, 0, .17);
  color: var(--si-text);
}

[data-bs-theme="dark"] .siapiya-spa-module :is(.form-control, .form-select) {
  color: var(--si-text);
  background-color: #242428;
  border-color: var(--si-border);
}

[data-bs-theme="dark"] .siapiya-spa-module :is(.form-control, .form-select)::placeholder {
  color: #8e8e93;
}

[data-bs-theme="dark"] .siapiya-spa-module .table {
  --bs-table-color: var(--si-text);
  --bs-table-bg: transparent;
  --bs-table-border-color: var(--si-border);
}

[data-bs-theme="dark"] .siapiya-spa-module .btn-close {
  filter: invert(1) grayscale(100%) brightness(180%);
}

/* Tablet dan HP */
@media (max-width: 767.98px) {
  .siapiya-spa-module .spa-module-heading {
    flex-direction: column;
    gap: 10px;
    margin-bottom: 14px;
    padding-bottom: 13px;
  }

  .siapiya-spa-module .spa-module-heading > :last-child {
    width: 100%;
    justify-content: flex-start !important;
  }

  .siapiya-spa-module :is(.filter-grid, .filters) {
    grid-template-columns: 1fr !important;
  }

  .siapiya-spa-module :is(.filter-grid, .filters) .wide {
    grid-column: auto !important;
  }

  .siapiya-spa-module :is(.filter-grid, .filters) > .btn {
    width: 100%;
  }

  .siapiya-spa-module :is(.summary-grid, .metrics) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 9px !important;
  }

  .siapiya-spa-module .metric {
    min-height: 84px;
    padding: 12px !important;
  }

  .siapiya-spa-module :is(.panel, .cardx, .journal-card, .followup-card, .objective, .plan) {
    padding: 14px;
    border-radius: 17px !important;
  }

  .siapiya-spa-module .card-body {
    padding: 16px !important;
  }

  .siapiya-spa-module :is(.view-tabs, .tabs) {
    flex-wrap: nowrap;
    padding-bottom: 3px;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .siapiya-spa-module :is(.view-tabs, .tabs)::-webkit-scrollbar {
    display: none;
  }

  .siapiya-spa-module :is(.view-tab, .tabbtn) {
    flex: 0 0 auto;
    white-space: nowrap;
  }

  .siapiya-spa-module .modal-dialog {
    max-width: calc(100vw - 12px);
    margin: 6px auto;
  }

  .siapiya-spa-module .modal-content {
    max-height: calc(100dvh - 12px);
    border-radius: 17px !important;
  }

  .siapiya-spa-module .modal-footer {
    gap: 8px;
  }

  .siapiya-spa-module .modal-footer > .btn {
    flex: 1 1 150px;
    margin: 0 !important;
  }

  .siapiya-spa-module .table {
    font-size: .84rem;
  }

  .siapiya-spa-module .table > :not(caption) > * > * {
    padding: .65rem .55rem;
  }
}

@media (max-width: 420px) {
  .siapiya-spa-module :is(.summary-grid, .metrics) {
    grid-template-columns: 1fr 1fr !important;
  }

  .siapiya-spa-module .metric strong,
  .siapiya-spa-module .metric .fs-3 {
    font-size: 1.3rem !important;
  }

  .siapiya-spa-module .journal-actions,
  .siapiya-spa-module .actions {
    display: grid !important;
    grid-template-columns: 1fr;
  }

  .siapiya-spa-module :is(.journal-actions, .actions) .btn {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .siapiya-spa-module *,
  .siapiya-spa-module *::before,
  .siapiya-spa-module *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}
