/* 60-forms.css — inputs, and the two tb-marketplace helpers on the submit form. */

.ts-form input[type="text"],.ts-form input[type="email"],.ts-form input[type="number"],
.ts-form input[type="password"],.ts-form input[type="url"],.ts-form input[type="tel"],
.ts-form input[type="search"],.ts-form textarea,.ts-form select,.ts-input-icon input{
  font-family:var(--tb-sans);
  border-radius:var(--tb-r-ctrl);
  border-color:var(--tb-border);
  color:var(--tb-body);
  background:var(--tb-surface);
}
.ts-form ::placeholder{color:var(--tb-soft);opacity:1;}
.ts-form-group > label{
  font-family:var(--tb-sans);font-size:12.5px;font-weight:500;color:var(--tb-muted);
}

/* Errors sit under the field they belong to, with a border on the field itself —
   colour is never the only signal. */
.ts-form-group.tb-error input,
.ts-form-group.tb-error textarea{border-color:var(--tb-bad);}
.tb-field-error{font-size:12.5px;color:var(--tb-bad-ink);margin-top:6px;}

/* The AI writer and photo check inject their own <style> from JS, so those live
   in the plugin and read these same tokens. Only layout hooks here. */
.tb-ai-bar{margin:10px 0 4px;}
.tb-pc{margin:12px 0;}
