/*
 * App-only form control sizing (do not edit mtn-ui-kit / Cicosy style.css).
 *
 * Problem: accounting pages load compact Cicosy rules (~25–27px) that crush
 * inputs below the kit .input target (44px). This restores kit-scale controls
 * and loosens rigid filter column widths.
 *
 * Uses documented design tokens with safe fallbacks when mtn-theme.css is absent.
 */

:root {
  /* Between old Cicosy ~27px and kit 44px — readable without dominating toolbars */
  --accounting-control-min-height: 34px;
  --accounting-control-padding-y: 6px;
  --accounting-control-padding-x: 12px;
  --accounting-control-radius: calc(var(--border-radius, 10px) - 2px);
  --accounting-focus-ring: 0 0 0 3px rgba(0, 82, 204, 0.14);
}

/* -------------------------------------------------------------------------- */
/* Height + padding: beat compact Cicosy / Bootstrap overrides                  */
/* -------------------------------------------------------------------------- */

.form-control,
.form-select,
.cicosy-form-control,
.cicosy-form-select,
.cicosy-dropdown-form-control,
.cicosy-invoice-control,
.cicosy-ledger-control,
.cicosy-modal .form-control,
.cicosy-modal .form-select,
.cicosy-data-table-search input,
.input {
  height: auto !important;
  min-height: var(--accounting-control-min-height) !important;
  padding-top: var(--accounting-control-padding-y) !important;
  padding-bottom: var(--accounting-control-padding-y) !important;
  padding-left: var(--accounting-control-padding-x) !important;
  padding-right: var(--accounting-control-padding-x) !important;
  font-size: var(--font-size-body, 16px) !important;
  line-height: 1.4 !important;
  color: var(--color-text, #212529) !important;
  background-color: var(--color-surface, #fff) !important;
  border: 1px solid var(--color-border, #dee2e6) !important;
  border-radius: var(--accounting-control-radius) !important;
  box-sizing: border-box !important;
}

textarea.form-control,
textarea.cicosy-form-control,
textarea.input {
  min-height: calc(var(--accounting-control-min-height) * 2) !important;
  height: auto !important;
}

/* Select/date keep room for trailing icons without crushing text */
.cicosy-invoice-control-select,
.cicosy-ledger-control-select,
select.cicosy-invoice-control,
select.cicosy-form-select,
select.form-select,
select.input {
  padding-right: 2rem !important;
}

.cicosy-invoice-control-date,
.cicosy-ledger-control-date,
input[type="date"].cicosy-invoice-control,
input[type="date"].cicosy-form-control,
input[type="date"].form-control,
input[type="date"].input {
  padding-left: 2rem !important;
  padding-right: 2rem !important;
}

/* Align toolbar action buttons with taller fields */
.cicosy-invoice-toolbar-actions .cicosy-invoice-btn,
.cicosy-ledger-toolbar-actions .cicosy-ledger-btn {
  height: auto !important;
  min-height: var(--accounting-control-min-height) !important;
}

/* -------------------------------------------------------------------------- */
/* Focus / validation — kit tokens                                            */
/* -------------------------------------------------------------------------- */

.form-control:focus,
.form-select:focus,
.cicosy-form-control:focus,
.cicosy-form-select:focus,
.cicosy-invoice-control:focus,
.cicosy-invoice-control-select:focus,
.cicosy-invoice-control-date:focus,
.cicosy-ledger-control:focus,
.input:focus {
  border-color: var(--color-primary, #0052cc) !important;
  box-shadow: var(--accounting-focus-ring) !important;
  outline: 0 !important;
}

.input-error,
.form-control.input-error,
.cicosy-form-control.input-error,
.is-invalid.form-control,
.is-invalid.cicosy-form-control,
.is-invalid.form-select {
  border-color: var(--color-danger, #dc3545) !important;
}

.field-error-msg {
  display: block;
  margin-top: var(--spacing-xs, 4px);
  font-size: var(--font-size-small, 14px);
  color: var(--color-danger, #dc3545);
}

/* Do not stretch checkboxes with full-width input rules */
input[type="checkbox"].input,
input[type="radio"].input,
.cicosy-form-choice input[type="checkbox"],
.cicosy-form-choice input[type="radio"] {
  width: auto !important;
  min-height: auto !important;
  height: auto !important;
  padding: 0 !important;
  border: initial !important;
  box-shadow: none !important;
}

/* -------------------------------------------------------------------------- */
/* Filter layout — drop rigid narrow nth-of-type flex slots                     */
/* -------------------------------------------------------------------------- */

.cicosy-invoice-filter-fields > .cicosy-invoice-field,
.cicosy-invoice-filter-fields > .cicosy-invoice-field:nth-of-type(n) {
  flex: 1 1 12rem !important;
  min-width: min(100%, 12rem) !important;
  max-width: 100% !important;
}

.cicosy-invoice-field--search,
.cicosy-invoice-field:has([data-cicosy-invoice-search]) {
  flex: 1 1 16rem !important;
  min-width: min(100%, 16rem) !important;
}

/* Entry / CRUD toolbars: full-width-friendly fields (not list-filter chrome) */
.cicosy-invoice-toolbar--entry {
  grid-template-columns: minmax(0, 1fr) !important;
}

.cicosy-invoice-toolbar--entry .cicosy-invoice-filter-fields {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)) !important;
  gap: var(--spacing-md, 16px) !important;
  width: 100%;
}

.cicosy-invoice-toolbar--entry .cicosy-invoice-toolbar-actions {
  justify-content: flex-start;
  margin-top: var(--spacing-sm, 8px);
}

@media (max-width: 767.98px) {
  .form-control,
  .form-select,
  .cicosy-form-control,
  .cicosy-form-select,
  .cicosy-invoice-control,
  .cicosy-ledger-control,
  .input {
    min-height: var(--accounting-control-min-height) !important;
  }

  .cicosy-invoice-filter-fields > .cicosy-invoice-field,
  .cicosy-invoice-filter-fields > .cicosy-invoice-field:nth-of-type(n) {
    flex: 1 1 100% !important;
    min-width: 0 !important;
  }
}

/* Long feedback messages (e.g. save errors) must wrap inside the card instead of overflowing it. */
.cicosy-invoice-developer-slot {
  overflow-wrap: anywhere;
}

.cicosy-invoice-developer-slot > * {
  min-width: 0;
  max-width: 100%;
}
