/* Base estructural compartida (layout, formulario, responsive). La identidad visual (variables --lp-*,
   fuentes) va en landing-form-<tema>.css; siempre se carga una hoja de tema después de esta.
   Origen del estilo TD: ver landing-form-td.css (PWXCT-197). */
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; overflow-x: hidden; background: var(--lp-bg); }
body { font-family: var(--lp-font); font-weight: var(--lp-body-weight); color: var(--lp-ink); line-height: 1.5; -webkit-font-smoothing: antialiased; }
.lp-header { background: #fff; border-bottom: 1px solid var(--lp-soft); }
.lp-header-in { max-width: 560px; margin: 0 auto; padding: 14px 16px; }
.lp-header img { display: block; height: 32px; width: auto; max-width: 60vw; }
.lp-wrap { max-width: 560px; margin: 0 auto; padding: 24px 16px 16px; }
.lp-hero { margin-bottom: 24px; }
.lp-wrap h1 { margin: 0 0 8px; font-size: clamp(26px, 7vw, 34px); font-weight: var(--lp-head-weight); color: var(--lp-head-ink); letter-spacing: -.02em; line-height: 1.1; text-wrap: balance; }
.lp-lead { margin: 0; font-weight: 300; color: var(--lp-muted); font-size: 16px; }
.lp-card { background: #fff; border: 1px solid var(--lp-line); border-radius: var(--lp-radius); padding: 20px; overflow-wrap: anywhere; }
.lp-field { margin-bottom: 16px; }
.lp-field label { display: block; margin-bottom: 6px; font-size: 14px; font-weight: 600; }
.lp-req { color: var(--lp-brand-ink); }
.lp-field input, .lp-field textarea { width: 100%; padding: 12px 14px; font: inherit; font-size: 16px; color: var(--lp-ink); background: #fff; border: 1px solid var(--lp-line); border-radius: var(--lp-radius-sm); }
.lp-field textarea { resize: vertical; }
.lp-field input:hover, .lp-field textarea:hover { border-color: var(--lp-muted); }
.lp-field input:focus-visible, .lp-field textarea:focus-visible { outline: 3px solid var(--lp-brand); outline-offset: 2px; border-color: var(--lp-brand); }
.lp-field input:user-invalid { border-color: var(--lp-brand-ink); }
.lp-btn { display: inline-flex; align-items: center; justify-content: center; width: 100%; min-height: 48px; padding: 14px 28px; font: inherit; font-size: 16px; font-weight: 600; color: #FFFEFE; background: var(--lp-brand); border: 1px solid transparent; border-radius: var(--lp-btn-radius); box-shadow: var(--lp-btn-shadow); cursor: pointer; transition: transform .15s ease, box-shadow .15s ease; }
.lp-btn:hover { background: var(--lp-brand-hover); transform: translateY(-1px); box-shadow: var(--lp-btn-shadow-hover); }
.lp-btn:active { transform: none; }
.lp-btn:focus-visible { outline: 3px solid var(--lp-brand); outline-offset: 3px; }
.lp-error { margin: 0 0 16px; padding: 12px 14px; font-size: 14px; font-weight: 500; color: var(--lp-brand-ink); background: var(--lp-error-bg); border-left: 4px solid var(--lp-brand); border-radius: var(--lp-radius-sm); }
.lp-state h1 { font-size: 24px; }
.lp-state p { margin: 0 0 12px; color: var(--lp-muted); }
.lp-state .lp-error { color: var(--lp-brand-ink); }
.lp-ok { margin: 0; padding: 8px 0; text-align: center; font-size: 20px; font-weight: 600; line-height: 1.35; }
.lp-ok::before { content: "\2713"; display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; margin: 0 auto 16px; font-size: 28px; color: #fff; background: var(--lp-brand); border-radius: 50%; }
.lp-ok-sub { margin: 0; padding: 0 0 8px; text-align: center; font-size: 16px; font-weight: 400; line-height: 1.4; color: var(--lp-muted); }
.lp-ok + .lp-ok-sub { margin-top: 4px; }
.lp-footer { max-width: 560px; margin: 0 auto; padding: 8px 16px 32px; text-align: center; font-size: 12px; color: var(--lp-muted); }
.lp-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
@media (min-width: 600px) {
  .lp-wrap { padding-top: 40px; }
  .lp-hero { margin-bottom: 28px; }
  .lp-card { padding: 32px; }
}
/* PWXCT-257: estados neutros (el aspecto vistoso vive en cada tema). */
.lp-btn:disabled { cursor: progress; opacity: .75; transform: none; }
.lp-state-icon { display: none; }
