:root {
  --lv-field-height: 46px;
  --lv-field-radius: 11px;
  --lv-field-bg: #fbfcfd;
  --lv-field-bg-hover: #fff;
  --lv-field-border: #cfd5dc;
  --lv-field-border-hover: #aeb6c0;
  --lv-field-text: #1d2228;
  --lv-field-placeholder: #9098a2;
  --lv-field-focus: #b59a00;
  --lv-field-ring: rgba(254, 215, 0, .24);
  --lv-field-readonly: #f0f2f4;
  --lv-field-disabled: #e9ecef;
  --lv-field-error: #c93445;
  --lv-field-success: #16845b;
}

/* Estrutura e rótulos compartilhados */
.lv-app-admin label,
.lv-site label {
  color: #343a42;
  font-size: 12px;
  font-weight: 730;
  letter-spacing: -.005em;
}
.lv-app-admin label > small,
.lv-site label > small,
.lv-field-help {
  color: #7b848f;
  display: block;
  font-size: 10px;
  font-weight: 520;
  letter-spacing: 0;
  line-height: 1.45;
}
.lv-app-admin label:focus-within,
.lv-site label:focus-within { color: #665700; }
.lv-app-admin fieldset,
.lv-site fieldset { border-color: #d9dde2; }
.lv-app-admin legend,
.lv-site legend { color: #3b424a; font-size: 12px; font-weight: 800; }

/* Campo base: todas as telas usam o mesmo componente visual */
.lv-app-admin :is(input, select, textarea):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]):not([type="file"]):not([type="button"]):not([type="submit"]):not([type="reset"]),
.lv-site :is(input, select, textarea):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]):not([type="file"]):not([type="button"]):not([type="submit"]):not([type="reset"]) {
  appearance: none;
  background-color: var(--lv-field-bg);
  border: 1px solid var(--lv-field-border);
  border-radius: var(--lv-field-radius);
  box-shadow: inset 0 1px 2px rgba(16, 24, 40, .025), 0 1px 0 rgba(255, 255, 255, .7);
  color: var(--lv-field-text);
  font-family: inherit;
  font-size: 13px;
  font-weight: 530;
  height: var(--lv-field-height);
  line-height: 1.4;
  min-height: var(--lv-field-height);
  outline: 0;
  padding: 10px 13px;
  transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease, color .16s ease;
  width: 100%;
}
.lv-app-admin :is(input, select, textarea):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]):not([type="file"]):hover:not(:disabled):not([readonly]),
.lv-site :is(input, select, textarea):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]):not([type="file"]):hover:not(:disabled):not([readonly]) {
  background-color: var(--lv-field-bg-hover);
  border-color: var(--lv-field-border-hover);
}
.lv-app-admin :is(input, select, textarea):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]):not([type="file"]):focus,
.lv-site :is(input, select, textarea):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]):not([type="file"]):focus {
  background-color: #fff;
  border-color: var(--lv-field-focus);
  box-shadow: 0 0 0 3px var(--lv-field-ring), inset 0 1px 2px rgba(16, 24, 40, .02);
}
.lv-app-admin :is(input, textarea)::placeholder,
.lv-site :is(input, textarea)::placeholder { color: var(--lv-field-placeholder); opacity: 1; font-weight: 450; }
.lv-app-admin textarea:not([rows="1"]),
.lv-site textarea:not([rows="1"]) { height: auto; line-height: 1.6; min-height: 126px; resize: vertical; }

/* Select consistente e acessível */
.lv-app-admin select,
.lv-site select {
  background-image: linear-gradient(45deg, transparent 50%, #646d77 50%), linear-gradient(135deg, #646d77 50%, transparent 50%);
  background-position: calc(100% - 17px) 20px, calc(100% - 12px) 20px;
  background-repeat: no-repeat;
  background-size: 5px 5px, 5px 5px;
  cursor: pointer;
  padding-right: 36px !important;
}
.lv-app-admin select[multiple],
.lv-site select[multiple] { background-image: none; height: auto; min-height: 120px; padding-right: 13px !important; }
.lv-app-admin select.is-placeholder,
.lv-site select.is-placeholder { color: var(--lv-field-placeholder); font-weight: 450; }

/* Datas, números, dinheiro e busca */
.lv-app-admin :is(input[type="number"], .lv-money-input),
.lv-site :is(input[type="number"], .lv-money-input) { font-variant-numeric: tabular-nums; }
.lv-app-admin .lv-money-input,
.lv-site .lv-money-input { font-weight: 680; text-align: right; }
.lv-app-admin input[type="date"],
.lv-app-admin input[type="month"],
.lv-app-admin input[type="time"],
.lv-site input[type="date"],
.lv-site input[type="month"],
.lv-site input[type="time"] { color-scheme: light; font-variant-numeric: tabular-nums; }
.lv-app-admin input[type="date"]::-webkit-calendar-picker-indicator,
.lv-site input[type="date"]::-webkit-calendar-picker-indicator { cursor: pointer; opacity: .58; }
.lv-app-admin input[type="search"],
.lv-site input[type="search"] { padding-right: 34px; }
.lv-app-admin input[type="search"]::-webkit-search-cancel-button,
.lv-site input[type="search"]::-webkit-search-cancel-button { cursor: pointer; opacity: .55; }

/* Somente leitura, desabilitado e preenchimento automático */
.lv-app-admin :is(input, textarea)[readonly],
.lv-site :is(input, textarea)[readonly] {
  background: var(--lv-field-readonly);
  border-color: #d9dde1;
  box-shadow: none;
  color: #626b75;
  cursor: default;
}
.lv-app-admin :is(input, select, textarea):disabled,
.lv-site :is(input, select, textarea):disabled {
  background-color: var(--lv-field-disabled);
  border-color: #dfe3e7;
  box-shadow: none;
  color: #8b939d;
  cursor: not-allowed;
  opacity: .8;
}
.lv-app-admin input:-webkit-autofill,
.lv-site input:-webkit-autofill { -webkit-box-shadow: 0 0 0 1000px #fffbea inset; -webkit-text-fill-color: var(--lv-field-text); }

/* Checkboxes e radios */
.lv-app-admin :is(input[type="checkbox"], input[type="radio"]),
.lv-site :is(input[type="checkbox"], input[type="radio"]) {
  appearance: none;
  background: #fff;
  border: 1.5px solid #aeb6c0;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .07);
  cursor: pointer;
  display: inline-grid;
  flex: 0 0 18px;
  height: 18px;
  margin: 0;
  place-content: center;
  transition: background .14s, border-color .14s, box-shadow .14s;
  width: 18px;
}
.lv-app-admin input[type="checkbox"],
.lv-site input[type="checkbox"] { border-radius: 5px; }
.lv-app-admin input[type="radio"],
.lv-site input[type="radio"] { border-radius: 50%; }
.lv-app-admin :is(input[type="checkbox"], input[type="radio"])::before,
.lv-site :is(input[type="checkbox"], input[type="radio"])::before { content: ""; transform: scale(0); transition: transform .12s ease; }
.lv-app-admin input[type="checkbox"]::before,
.lv-site input[type="checkbox"]::before { border-bottom: 2px solid #15191d; border-right: 2px solid #15191d; height: 8px; transform: rotate(45deg) scale(0); width: 4px; }
.lv-app-admin input[type="radio"]::before,
.lv-site input[type="radio"]::before { background: #15191d; border-radius: 50%; height: 8px; width: 8px; }
.lv-app-admin :is(input[type="checkbox"], input[type="radio"]):checked,
.lv-site :is(input[type="checkbox"], input[type="radio"]):checked { background: var(--lv-yellow, #fed700); border-color: #c5a900; }
.lv-app-admin input[type="checkbox"]:checked::before,
.lv-site input[type="checkbox"]:checked::before { transform: rotate(45deg) scale(1); }
.lv-app-admin input[type="radio"]:checked::before,
.lv-site input[type="radio"]:checked::before { transform: scale(1); }
.lv-app-admin :is(input[type="checkbox"], input[type="radio"]):focus-visible,
.lv-site :is(input[type="checkbox"], input[type="radio"]):focus-visible { box-shadow: 0 0 0 3px var(--lv-field-ring); outline: 0; }
.lv-app-admin .lv-tag-picker input[type="checkbox"] {
  height: 1px;
  opacity: 0;
  pointer-events: none;
  position: absolute;
  width: 1px;
}

/* Checkbox padrão: azul e marca branca; switches mantêm seus estilos próprios. */
body:is(.lv-app-admin, .lv-site, .lv-app-front) input[type="checkbox"]:not([role="switch"]) {
  appearance: none;
  -webkit-appearance: none;
  box-sizing: border-box;
  display: inline-block;
  flex: 0 0 18px;
  width: 18px;
  height: 18px;
  min-width: 18px;
  min-height: 18px;
  margin: 0;
  padding: 0;
  vertical-align: middle;
  border: 1.5px solid #aeb6c0;
  border-radius: 3px;
  background: #fff center / 100% 100% no-repeat;
  box-shadow: none;
  cursor: pointer;
}
body:is(.lv-app-admin, .lv-site, .lv-app-front) input[type="checkbox"]:not([role="switch"])::before {
  content: none;
}
body:is(.lv-app-admin, .lv-site, .lv-app-front) input[type="checkbox"]:not([role="switch"]):checked,
body:is(.lv-app-admin, .lv-site, .lv-app-front) input[type="checkbox"]:not([role="switch"]):indeterminate {
  background-color:var(--lv-blue);
  border-color:var(--lv-blue);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m5.5 12 4.5 4.5 9-9' fill='none' stroke='white' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
body:is(.lv-app-admin, .lv-site, .lv-app-front) input[type="checkbox"]:not([role="switch"]):indeterminate {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12h12' stroke='white' stroke-width='2.8' stroke-linecap='round'/%3E%3C/svg%3E");
}
body:is(.lv-app-admin, .lv-site, .lv-app-front) input[type="checkbox"]:not([role="switch"]):focus-visible {
  outline: 2px solid var(--lv-blue);
  outline-offset: 3px;
  box-shadow: none;
}
body:is(.lv-app-admin, .lv-site, .lv-app-front) input[type="checkbox"]:not([role="switch"]):disabled {
  cursor: not-allowed;
  opacity: .5;
}
@media (forced-colors: active) {
  body:is(.lv-app-admin, .lv-site, .lv-app-front) input[type="checkbox"]:not([role="switch"]) {
    appearance: auto;
    background-image: none;
  }
}

/* Arquivos e cores */
.lv-app-admin input[type="file"],
.lv-site input[type="file"] { color: #5d6670; font: inherit; width: 100%; }
.lv-app-admin input[type="file"]::file-selector-button,
.lv-site input[type="file"]::file-selector-button { background: #fff; border: 1px solid var(--lv-field-border); border-radius: 9px; color: #30363d; cursor: pointer; font: inherit; font-size: 12px; font-weight: 750; margin-right: 10px; min-height: 38px; padding: 8px 13px; }
.lv-app-admin input[type="color"],
.lv-site input[type="color"] { background: #fff; border: 1px solid var(--lv-field-border); border-radius: var(--lv-field-radius); cursor: pointer; height: var(--lv-field-height); padding: 5px; width: 100%; }

/* Validação só aparece depois da interação do usuário ou envio */
.lv-app-admin :is(input, select, textarea):user-invalid,
.lv-app-admin :is(input, select, textarea)[aria-invalid="true"],
.lv-app-admin form.was-validated :is(input, select, textarea):invalid,
.lv-site :is(input, select, textarea):user-invalid,
.lv-site :is(input, select, textarea)[aria-invalid="true"],
.lv-site form.was-validated :is(input, select, textarea):invalid {
  border-color: var(--lv-field-error);
  box-shadow: 0 0 0 3px rgba(201, 52, 69, .11);
}
.lv-app-admin :is(input, select, textarea):user-valid:not(:placeholder-shown):not([type="search"]),
.lv-site :is(input, select, textarea):user-valid:not(:placeholder-shown):not([type="search"]) { border-color: #a8cbbd; }

/* Controles compostos seguem o mesmo componente */
.lv-app-admin .lv-inline-control { border-radius: var(--lv-field-radius); }
.lv-app-admin .lv-client-cep-control { display: grid; grid-template-columns: minmax(0, 1fr) 44px; min-width: 0; }
.lv-app-admin .lv-client-cep-control button { display: flex; align-items: center; justify-content: center; padding: 0; cursor: pointer; }
.lv-app-admin .lv-client-cep-control button:disabled { cursor: wait; opacity: .6; }
.lv-app-admin [data-client-cep-feedback] { font-size: 11px; line-height: 1.5; color: var(--lv-muted); }
.lv-app-admin [data-client-cep-feedback]:empty { display: none; }
.lv-app-admin .lv-inline-control input { border-radius: var(--lv-field-radius) 0 0 var(--lv-field-radius) !important; }
.lv-app-admin .lv-inline-control button {
  background: #f3f5f7;
  border: 1px solid var(--lv-field-border);
  border-left: 0;
  border-radius: 0 var(--lv-field-radius) var(--lv-field-radius) 0;
  color: #4d5660;
  min-height: var(--lv-field-height);
  transition: background .15s, border-color .15s, color .15s;
}
.lv-app-admin .lv-inline-control:focus-within { box-shadow: 0 0 0 3px var(--lv-field-ring); }
.lv-app-admin .lv-inline-control:focus-within input { box-shadow: none; }
.lv-app-admin .lv-inline-control:focus-within button { border-color: var(--lv-field-focus); }
.lv-app-admin .lv-inline-control button:hover { background: var(--lv-yellow); color: #17191c; }

/* O calendário personalizado também é visualmente um campo do tema */
.lv-app-admin .lv-conecta-date-picker .lv-calendar-toggle {
  background: var(--lv-field-bg);
  border: 1px solid var(--lv-field-border);
  border-radius: var(--lv-field-radius);
  box-shadow: inset 0 1px 2px rgba(16, 24, 40, .025), 0 1px 0 rgba(255, 255, 255, .7);
  color: var(--lv-field-text);
  font-size: 13px;
  font-weight: 530;
  min-height: var(--lv-field-height);
  padding: 0 13px;
}
.lv-app-admin .lv-conecta-date-picker .lv-calendar-toggle:hover {
  background: #fff;
  border-color: var(--lv-field-border-hover);
  color: var(--lv-field-text);
}
.lv-app-admin .lv-conecta-date-picker.aberto .lv-calendar-toggle {
  background: #fff;
  border-color: var(--lv-field-focus);
  box-shadow: 0 0 0 3px var(--lv-field-ring);
  color: var(--lv-field-text);
}
.lv-app-admin .lv-conecta-date-picker.lv-calendar-error .lv-calendar-toggle {
  border-color: var(--lv-field-error);
  box-shadow: 0 0 0 3px rgba(201, 52, 69, .11);
}

/* Componentes compactos continuam densos sem perder o tema */
.lv-app-admin :is(.lv-order-item, .lv-payment-row) :is(input, select):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]) {
  border-radius: 9px;
  font-size: 12px;
  height: 40px;
  min-height: 40px !important;
  padding: 8px 10px !important;
}
.lv-app-admin .lv-order-totals #lv-grand-total,
.lv-app-admin .lv-order-totals #lv-remaining-total {
  background: #191e24;
  border-color: #191e24;
  color: var(--lv-yellow);
}

@media (max-width: 640px) {
  :root { --lv-field-height: 48px; }
  .lv-app-admin .lv-money-input,
  .lv-site .lv-money-input { text-align: left; }
}
