/* =============================================================================
   _sp_utilities.css
   Classes utilitárias para formulários ECM — Bootstrap 3 carece de spacing
   e flex. Todas as classes usam prefixo sp- para evitar conflito com BS3.
   NÃO remove/altera classes dos formulários existentes — migração gradual.
   ============================================================================= */

/* ── Margin ─────────────────────────────────────────────────────────────── */

.sp-m-0 {
  margin: 0;
}
.sp-mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.sp-mx-0 {
  margin-left: 0;
  margin-right: 0;
}
.sp-mx-5 {
  margin-left: 5px;
  margin-right: 5px;
}
.sp-mx-10 {
  margin-left: 10px;
  margin-right: 10px;
}
.sp-mx-15 {
  margin-left: 15px;
  margin-right: 15px;
}
.sp-mx-20 {
  margin-left: 20px;
  margin-right: 20px;
}
.sp-mx-25 {
  margin-left: 25px;
  margin-right: 25px;
}
.sp-mx-30 {
  margin-left: 30px;
  margin-right: 30px;
}
.sp-mx-40 {
  margin-left: 40px;
  margin-right: 40px;
}
.sp-mx-50 {
  margin-left: 50px;
  margin-right: 50px;
}
.sp-my-0 {
  margin-top: 0;
  margin-bottom: 0;
}
.sp-my-5 {
  margin-top: 5px;
  margin-bottom: 5px;
}
.sp-my-10 {
  margin-top: 10px;
  margin-bottom: 10px;
}
.sp-my-15 {
  margin-top: 15px;
  margin-bottom: 15px;
}
.sp-my-20 {
  margin-top: 20px;
  margin-bottom: 20px;
}
.sp-my-25 {
  margin-top: 25px;
  margin-bottom: 25px;
}
.sp-my-30 {
  margin-top: 30px;
  margin-bottom: 30px;
}
.sp-my-40 {
  margin-top: 40px;
  margin-bottom: 40px;
}
.sp-my-50 {
  margin-top: 50px;
  margin-bottom: 50px;
}

.sp-mt-0 {
  margin-top: 0;
}
.sp-mt-5 {
  margin-top: 5px;
}
.sp-mt-10 {
  margin-top: 10px;
}
.sp-mt-15 {
  margin-top: 15px;
}
.sp-mt-20 {
  margin-top: 20px;
}
.sp-mt-25 {
  margin-top: 25px;
}
.sp-mt-30 {
  margin-top: 30px;
}
.sp-mt-40 {
  margin-top: 40px;
}
.sp-mt-50 {
  margin-top: 50px;
}

.sp-mb-0 {
  margin-bottom: 0;
}
.sp-mb-5 {
  margin-bottom: 5px;
}
.sp-mb-10 {
  margin-bottom: 10px;
}
.sp-mb-15 {
  margin-bottom: 15px;
}
.sp-mb-20 {
  margin-bottom: 20px;
}
.sp-mb-25 {
  margin-bottom: 25px;
}
.sp-mb-30 {
  margin-bottom: 30px;
}
.sp-mb-40 {
  margin-bottom: 40px;
}
.sp-mb-50 {
  margin-bottom: 50px;
}

.sp-ml-0 {
  margin-left: 0;
}
.sp-ml-5 {
  margin-left: 5px;
}
.sp-ml-10 {
  margin-left: 10px;
}
.sp-ml-15 {
  margin-left: 15px;
}
.sp-ml-20 {
  margin-left: 20px;
}

.sp-mr-0 {
  margin-right: 0;
}
.sp-mr-5 {
  margin-right: 5px;
}
.sp-mr-10 {
  margin-right: 10px;
}
.sp-mr-15 {
  margin-right: 15px;
}
.sp-mr-20 {
  margin-right: 20px;
}

/* ── Padding ─────────────────────────────────────────────────────────────── */

.sp-p-0 {
  padding: 0;
}
.sp-p-5 {
  padding: 5px;
}
.sp-p-10 {
  padding: 10px;
}
.sp-p-15 {
  padding: 15px;
}
.sp-p-20 {
  padding: 20px;
}
.sp-p-25 {
  padding: 25px;
}
.sp-p-30 {
  padding: 30px;
}

.sp-pt-0 {
  padding-top: 0;
}
.sp-pt-5 {
  padding-top: 5px;
}
.sp-pt-10 {
  padding-top: 10px;
}
.sp-pt-15 {
  padding-top: 15px;
}
.sp-pt-20 {
  padding-top: 20px;
}
.sp-pt-25 {
  padding-top: 25px;
}

.sp-pb-0 {
  padding-bottom: 0;
}
.sp-pb-5 {
  padding-bottom: 5px;
}
.sp-pb-10 {
  padding-bottom: 10px;
}
.sp-pb-15 {
  padding-bottom: 15px;
}
.sp-pb-20 {
  padding-bottom: 20px;
}
.sp-pb-25 {
  padding-bottom: 25px;
}

.sp-px-0 {
  padding-left: 0;
  padding-right: 0;
}
.sp-px-5 {
  padding-left: 5px;
  padding-right: 5px;
}
.sp-px-10 {
  padding-left: 10px;
  padding-right: 10px;
}
.sp-px-15 {
  padding-left: 15px;
  padding-right: 15px;
}
.sp-px-20 {
  padding-left: 20px;
  padding-right: 20px;
}
.sp-px-25 {
  padding-left: 25px;
  padding-right: 25px;
}
.sp-px-30 {
  padding-left: 30px;
  padding-right: 30px;
}
.sp-py-0 {
  padding-top: 0;
  padding-bottom: 0;
}
.sp-py-5 {
  padding-top: 5px;
  padding-bottom: 5px;
}
.sp-py-10 {
  padding-top: 10px;
  padding-bottom: 10px;
}
.sp-py-15 {
  padding-top: 15px;
  padding-bottom: 15px;
}
.sp-py-20 {
  padding-top: 20px;
  padding-bottom: 20px;
}
.sp-py-25 {
  padding-top: 25px;
  padding-bottom: 25px;
}
.sp-py-30 {
  padding-top: 30px;
  padding-bottom: 30px;
}

.sp-pl-0 {
  padding-left: 0;
}
.sp-pl-5 {
  padding-left: 5px;
}
.sp-pl-10 {
  padding-left: 10px;
}
.sp-pl-15 {
  padding-left: 15px;
}
.sp-pl-20 {
  padding-left: 20px;
}

.sp-pr-0 {
  padding-right: 0;
}
.sp-pr-5 {
  padding-right: 5px;
}
.sp-pr-10 {
  padding-right: 10px;
}
.sp-pr-15 {
  padding-right: 15px;
}
.sp-pr-20 {
  padding-right: 20px;
}

/* ── Display ─────────────────────────────────────────────────────────────── */

.sp-d-none {
  display: none;
}
.sp-d-block {
  display: block;
}
.sp-d-inline {
  display: inline;
}
.sp-d-inline-block {
  display: inline-block;
}
.sp-d-flex {
  display: flex;
}

/* ── Flexbox ─────────────────────────────────────────────────────────────── */

.sp-flex-row {
  flex-direction: row;
}
.sp-flex-column {
  flex-direction: column;
}
.sp-flex-wrap {
  flex-wrap: wrap;
}
.sp-flex-nowrap {
  flex-wrap: nowrap;
}
.sp-flex-1 {
  flex: 1;
}
.sp-flex-auto {
  flex: auto;
}

/* Justify-content */
.sp-justify-start {
  justify-content: flex-start;
}
.sp-justify-center {
  justify-content: center;
}
.sp-justify-end {
  justify-content: flex-end;
}
.sp-justify-between {
  justify-content: space-between;
}
.sp-justify-around {
  justify-content: space-around;
}

/* Align-items */
.sp-align-start {
  align-items: flex-start;
}
.sp-align-center {
  align-items: center;
}
.sp-align-end {
  align-items: flex-end;
}
.sp-align-stretch {
  align-items: stretch;
}

/* Atalhos flex compostos — os mais usados nos formulários */
.sp-flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}

.sp-flex-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.sp-flex-start {
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.sp-flex-col-center {
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* ── Gap ─────────────────────────────────────────────────────────────────── */

.sp-gap-2 {
  gap: 2px;
}
.sp-gap-5 {
  gap: 5px;
}
.sp-gap-10 {
  gap: 10px;
}
.sp-gap-15 {
  gap: 15px;
}
.sp-gap-20 {
  gap: 20px;
}

/* ── Largura e Altura ────────────────────────────────────────────────────── */

.sp-w-100 {
  width: 100%;
}
.sp-w-75 {
  width: 75%;
}
.sp-w-50 {
  width: 50%;
}
.sp-w-25 {
  width: 25%;
}
.sp-w-auto {
  width: auto;
}

.sp-h-100 {
  height: 100%;
}
.sp-h-auto {
  height: auto;
}

/* ── Texto ───────────────────────────────────────────────────────────────── */

.sp-text-left {
  text-align: left;
}
.sp-text-center {
  text-align: center;
}
.sp-text-right {
  text-align: right;
}
.sp-text-upper {
  text-transform: uppercase;
}
.sp-text-lower {
  text-transform: lowercase;
}
.sp-text-bold {
  font-weight: bold;
}
.sp-text-600 {
  font-weight: 600;
}
.sp-text-normal {
  font-weight: normal;
}

/* ── Cursor ──────────────────────────────────────────────────────────────── */

.sp-cursor-pointer {
  cursor: pointer;
}
.sp-cursor-default {
  cursor: default;
}
.sp-cursor-not-allowed {
  cursor: not-allowed;
}

/* ── Overflow ────────────────────────────────────────────────────────────── */

.sp-overflow-hidden {
  overflow: hidden;
}
.sp-overflow-auto {
  overflow: auto;
}
.sp-overflow-y-scroll {
  overflow-y: scroll;
}
.sp-overflow-x-hidden {
  overflow-x: hidden;
}

/* ── Border-radius ───────────────────────────────────────────────────────── */

.sp-rounded-sm {
  border-radius: 0.5rem;
}
.sp-rounded {
  border-radius: 1rem;
}
.sp-rounded-lg {
  border-radius: 1.5rem;
}
.sp-rounded-xl {
  border-radius: 2rem;
}
.sp-rounded-0 {
  border-radius: 0;
}

/* ── Formulários ─────────────────────────────────────────────────────────── */

/* Desabilita redimensionamento de textarea */
.sp-no-resize {
  resize: none;
}
.sp-no-padding {
  padding: 0;
}

/* iframe de visualização de PDF */
.sp-iframe-pdf {
  width: 100%;
  height: 600px;
  border: none;
  display: block;
}

/* ── Responsivo (Bootstrap 3 usa hidden-xs / visible-xs, não d-*-none) ───── */

@media (max-width: 767px) {
  .sp-d-xs-none {
    display: none;
  }
  .sp-d-xs-block {
    display: block;
  }
  .sp-d-xs-flex {
    display: flex;
  }
  .sp-flex-xs-col {
    flex-direction: column;
  }
  .sp-mt-xs-0 {
    margin-top: 0;
  }
  .sp-mt-xs-10 {
    margin-top: 10px;
  }
  .sp-mb-xs-10 {
    margin-bottom: 10px;
  }
  .sp-p-xs-0 {
    padding: 0;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .sp-d-sm-none {
    display: none;
  }
  .sp-d-sm-block {
    display: block;
  }
  .sp-d-sm-flex {
    display: flex;
  }
}

@media (min-width: 992px) {
  .sp-d-md-block {
    display: block;
  }
  .sp-d-md-flex {
    display: flex;
  }
  .sp-d-md-none {
    display: none;
  }
}
