/* TWT Trade CRM, Public UI (Base layer)
   Objectivo: estrutura e layout consistentes, visual controlado por CSS vars (theme layer).
   Nota: evita cores fixas e backgrounds fixos, para não competir com theme.css e layouts por marca/campanha.
*/

.twt-tcrm{
  box-sizing: border-box;

  /* Tokens com fallback */
  --twt-primary: #2563eb;
  --twt-primary-hover: #1d4ed8;
  --twt-bg: #f6f7f7;
  --twt-surface: #ffffff;
  --twt-surface-2: #f9fafb;

  --twt-text: #111827;
  --twt-muted: rgba(17,24,39,0.70);

  --twt-border: rgba(0,0,0,0.10);
  --twt-border-soft: rgba(0,0,0,0.08);

  --twt-font: system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  --twt-font-size: 16px;
  --twt-h2: 22px;
  --twt-h3: 18px;

  --twt-radius: 14px;
  --twt-card-padding: 16px;
  --twt-gap: 12px;
  --twt-btn-font-size: 15px;

  font-family: var(--twt-font, inherit);
  font-size: var(--twt-font-size, 16px);
  color: var(--twt-text, #111827);
}

.twt-tcrm *,
.twt-tcrm *::before,
.twt-tcrm *::after{
  box-sizing: border-box;
}

.twt-tcrm a{
  color: var(--twt-primary, #2563eb);
}

.twt-tcrm-muted{
  font-size: 14px;
  color: var(--twt-muted, rgba(17,24,39,0.70));
}

/* =========================
   FORMULÁRIOS
   ========================= */

.twt-tcrm-form-wrap{
  width: 100%;
  max-width: 860px;
  margin: 0 auto;
  padding: 12px;
}

@media (min-width: 720px){
  .twt-tcrm-form-wrap{ padding: 18px; }
}

.twt-tcrm-form{
  width: 100%;
}

.twt-tcrm-section{
  background: var(--twt-surface, #fff);
  border: 1px solid var(--twt-border, rgba(0,0,0,0.10));
  border-radius: var(--twt-radius, 14px);
  padding: var(--twt-card-padding, 16px);
  margin-bottom: 14px;
  box-shadow: 0 1px 0 rgba(0,0,0,0.04);
}

.twt-tcrm-section-title{
  margin: 0 0 12px 0;
  font-size: var(--twt-h3, 18px);
  line-height: 1.2;
  letter-spacing: -0.01em;
}

.twt-tcrm-grid{
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--twt-gap, 12px);
}

.twt-tcrm-cols-2{
  grid-template-columns: 1fr;
}

@media (min-width: 720px){
  .twt-tcrm-cols-2{
    grid-template-columns: 1fr 1fr;
  }
}

.twt-tcrm-field label{
  display: block;
  margin-bottom: 6px;
  font-size: 14px;
  color: var(--twt-text, #111827);
}

.twt-tcrm-req{
  color: #c0392b;
  font-weight: 800;
}

.twt-tcrm-help{
  margin: 0 0 8px 0;
  font-size: 13px;
  line-height: 1.3;
  color: var(--twt-muted, rgba(17,24,39,0.70));
}

/* Inputs comuns */
.twt-tcrm-field input[type="text"],
.twt-tcrm-field input[type="number"],
.twt-tcrm-field input[type="email"],
.twt-tcrm-field input[type="date"],
.twt-tcrm-field input[type="time"],
.twt-tcrm-field textarea,
.twt-tcrm-field select{
  width: 100%;
  border: 1px solid var(--twt-border, rgba(0,0,0,0.18));
  border-radius: calc(var(--twt-radius, 14px) - 4px);
  padding: 11px 12px;
  font-size: 16px;
  line-height: 1.2;
  background: var(--twt-surface, #fff);
  outline: none;
  transition: border-color 160ms ease, box-shadow 160ms ease;
  color: var(--twt-text, #111827);
}

.twt-tcrm-field textarea{
  resize: vertical;
  min-height: 96px;
}

.twt-tcrm-field input:focus,
.twt-tcrm-field textarea:focus,
.twt-tcrm-field select:focus{
  border-color: color-mix(in srgb, var(--twt-primary, #2563eb) 65%, var(--twt-border, rgba(0,0,0,0.10)));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--twt-primary, #2563eb) 18%, transparent);
}

.twt-tcrm-field select{
  cursor: pointer;
}

/* =========================
   FIELDSET (RADIO/CHECKBOX)
   ========================= */

.twt-tcrm-fieldset{
  margin: 0;
  padding: 0;
  border: 0;
}

.twt-tcrm-fieldset > legend{
  padding: 0;
  margin: 0 0 6px 0;
  font-size: 14px;
  color: var(--twt-text, #111827);
}

/* Checkbox simples (Sim) */
.twt-tcrm-checkwrap{
  display: flex;
  align-items: center;
}

.twt-tcrm-check{
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  user-select: none;
}

.twt-tcrm-check input[type="checkbox"]{
  width: 18px;
  height: 18px;
}

/* Radios */
.twt-tcrm-radio{
  display: grid;
  gap: 8px;
}

.twt-tcrm-radio-item{
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  user-select: none;
}

.twt-tcrm-radio-item input[type="radio"]{
  width: 18px;
  height: 18px;
}

/* =========================
   UPLOADS
   ========================= */

.twt-tcrm-field input[type="file"]{
  width: 100%;
  border: 1px dashed color-mix(in srgb, var(--twt-border, rgba(0,0,0,0.18)) 70%, #000);
  border-radius: calc(var(--twt-radius, 14px) - 4px);
  padding: 10px 12px;
  background: color-mix(in srgb, var(--twt-bg, #f6f7f7) 55%, transparent);
  cursor: pointer;
  color: var(--twt-text, #111827);
}

.twt-tcrm-upload-hint{
  margin-top: 8px;
  font-size: 13px;
  color: var(--twt-muted, rgba(17,24,39,0.70));
}

.twt-tcrm-upload-note{
  margin-top: 6px;
  font-size: 12px;
  color: var(--twt-muted, rgba(17,24,39,0.70));
}

/* =========================
   AÇÕES
   ========================= */

.twt-tcrm-actions{
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  padding: 8px 2px 0 2px;
}

.twt-tcrm-btn{
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;

  border-radius: calc(var(--twt-radius, 14px) - 4px);
  padding: 12px 16px;
  border: 1px solid var(--twt-border, rgba(0,0,0,0.10));

  font-size: var(--twt-btn-font-size, 15px);
  font-weight: 800;
  cursor: pointer;

  background: var(--twt-primary, #111);
  color: #fff;

  transition: transform 120ms ease, opacity 120ms ease, filter 120ms ease, background 120ms ease;
}

.twt-tcrm-btn:hover{
  background: var(--twt-primary-hover, var(--twt-primary, #111));
}
.twt-tcrm-btn:active{ transform: translateY(1px); }

.twt-tcrm-btn-secondary{
  background: transparent;
  color: var(--twt-primary, #2563eb);
}

/* =========================
   NOTICES
   ========================= */

.twt-tcrm-notice{
  border-radius: calc(var(--twt-radius, 14px) - 4px);
  padding: 10px 12px;
  margin: 0 0 12px 0;
  font-size: 14px;
  border: 1px solid var(--twt-border, rgba(0,0,0,0.10));
  background: color-mix(in srgb, var(--twt-bg, #f6f7f7) 65%, transparent);
}

.twt-tcrm-success{
  background: rgba(46, 204, 113, 0.14);
  border-color: rgba(46, 204, 113, 0.35);
}

.twt-tcrm-error{
  background: rgba(231, 76, 60, 0.12);
  border-color: rgba(231, 76, 60, 0.35);
}

/* =========================
   LISTA DE FORMULÁRIOS
   ========================= */

.twt-tcrm-assigned-forms ul{
  list-style: none;
  padding: 0;
  margin: 0;
}

.twt-tcrm-assigned-forms li{
  padding: 12px 0;
  border-bottom: 1px solid var(--twt-border-soft, rgba(0,0,0,0.08));
}

.twt-tcrm-assigned-forms li:last-child{ border-bottom: 0; }

.twt-tcrm-meta{
  margin-top: 4px;
  font-size: 13px;
  color: var(--twt-muted, rgba(17,24,39,0.70));
}

.twt-tcrm-code{
  margin-top: 8px;
  font-size: 13px;
  color: var(--twt-text, #111827);
}

.twt-tcrm-code code{
  padding: 2px 6px;
  border-radius: 8px;
  background: color-mix(in srgb, var(--twt-bg, #f6f7f7) 65%, transparent);
}

/* =========================
   DASHBOARDS
   ========================= */

.twt-tcrm-dashboard{
  max-width: 1200px;
  margin: 0 auto;
  padding: 12px;
}

.twt-tcrm-dashboard h2{
  margin: 0 0 14px 0;
  font-size: var(--twt-h2, 22px);
  line-height: 1.2;
}

.twt-tcrm-kpis{
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin-bottom: 16px;
}

@media (min-width: 720px){
  .twt-tcrm-kpis{
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

.twt-tcrm-kpi{
  border: 1px solid var(--twt-border, rgba(0,0,0,0.10));
  border-radius: var(--twt-radius, 14px);
  padding: 14px;
  background: var(--twt-surface, #fff);
  min-width: 0;
}

.twt-tcrm-kpi-label{
  font-size: 12px;
  color: var(--twt-muted, rgba(17,24,39,0.70));
  margin-bottom: 6px;
}

.twt-tcrm-kpi-value{
  font-size: 20px;
  font-weight: 900;
  color: var(--twt-text, #111827);
}

/* Cards */
.twt-tcrm-grid-cards{
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
  align-items: start;
}

@media (min-width: 920px){
  .twt-tcrm-grid-cards{
    grid-template-columns: 2fr 1fr;
  }
}

.twt-tcrm-grid-cards > *{ min-width: 0; }

.twt-tcrm-card{
  background: var(--twt-surface, #fff);
  border: 1px solid var(--twt-border, rgba(0,0,0,0.10));
  border-radius: var(--twt-radius, 14px);
  padding: var(--twt-card-padding, 16px);
  min-width: 0;
}

.twt-tcrm-card h3{
  margin-top: 0;
  margin-bottom: 10px;
  font-size: 16px;
  color: var(--twt-text, #111827);
}

/* =========================
   TABELAS
   ========================= */

/* Wrapper universal, resolve o scroll horizontal em qualquer shortcode e dashboard */
.twt-tcrm-table-wrap{
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;

  border: 1px solid var(--twt-border, rgba(0,0,0,0.10));
  border-radius: calc(var(--twt-radius, 14px) - 2px);
  background: var(--twt-surface, #fff);
}

.twt-tcrm-table{
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

/* Por defeito, assume que tabelas podem ser largas */
.twt-tcrm-table{ min-width: 900px; }

.twt-tcrm-table th,
.twt-tcrm-table td{
  text-align: left;
  padding: 10px 10px;
  border-bottom: 1px solid var(--twt-border-soft, rgba(0,0,0,0.08));
  vertical-align: top;
  white-space: nowrap;
  color: var(--twt-text, #111827);
}

.twt-tcrm-table thead th{
  background: var(--twt-surface-2, #f9fafb);
  border-bottom: 1px solid var(--twt-border, rgba(0,0,0,0.10));
  font-weight: 800;
  font-size: 13px;
}

/* Mobile tweaks */
@media (max-width: 980px){
  .twt-tcrm-table{ min-width: 760px; }
}

@media (max-width: 520px){
  .twt-tcrm-table th,
  .twt-tcrm-table td{
    padding: 9px 10px;
    font-size: 13px;
  }
  .twt-tcrm-table{ min-width: 720px; }
}

/* =========================
   INSIGHTS
   ========================= */

.twt-tcrm-insights{
  list-style: none;
  padding: 0;
  margin: 0;
}

.twt-tcrm-insight{
  padding: 10px 0;
  border-bottom: 1px solid var(--twt-border-soft, rgba(0,0,0,0.08));
  font-size: 14px;
}

.twt-tcrm-insight:last-child{ border-bottom: 0; }

.twt-tcrm-insight strong{
  display: block;
  margin-bottom: 4px;
  color: var(--twt-text, #111827);
}

/* =========================
   UTILITÁRIOS
   ========================= */

.twt-tcrm-hint{
  margin-top: 10px;
  font-size: 13px;
  color: var(--twt-muted, rgba(17,24,39,0.70));
}

.twt-tcrm-inline{
  display: flex;
  align-items: center;
  gap: 10px;
}

.twt-tcrm-unit{
  white-space: nowrap;
  font-size: 14px;
  color: var(--twt-muted, rgba(17,24,39,0.70));
}
