/* ─── DealerDMS — Email template builder (templates.js) ───────────────────────
   The email builder reuses the two-pane page-builder look from website.css
   (.ws-workspace / .ws-chat / .ws-preview / .ws-ptab / .ws-panel / .ws-code-*
   / .ws-vrow / .ws-modal*). This file adds ONLY what's specific to email:
   the model picker, the subject/preheader header fields, and — the core ask —
   the INSERT-DYNAMIC-CONTENT palette (merge fields, ⚡ AI blocks, conditional /
   repeater snippets, CTA links). Reads app theme tokens so every theme applies.
   Scoped under `.portal` like the rest of the module CSS. */

/* ── model picker in the chat input row ─────────────────────────────────────── */
.tpl-model{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-muted)}
.tpl-model select{font-size:11.5px;padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text)}
.tpl-chat-help{font-size:11.5px;color:var(--text-muted);line-height:1.5;padding:0 16px 10px;border-bottom:1px solid var(--border);background:var(--surface)}
.tpl-chat-help b{color:var(--text)}

/* ── subject / preheader header fields (above the chat rail) ────────────────── */
.tpl-metarow{display:flex;flex-direction:column;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface)}
.tpl-metafld{display:flex;flex-direction:column;gap:3px}
.tpl-metafld span{font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}
.tpl-metafld input{border:1px solid var(--border);border-radius:7px;padding:7px 10px;font-size:13px;font-family:inherit;background:var(--surface);color:var(--text)}
.tpl-metafld input:focus{outline:none;border-color:var(--primary)}
.tpl-meta-dirty{color:var(--warn);font-weight:900;margin-left:4px}

/* ═══ THE INSERT-DYNAMIC-CONTENT PALETTE ═════════════════════════════════════
   Sits above the HTML code editor. Chips insert tokens/snippets at the cursor. */
.tpl-palette{border:1px solid var(--border);border-radius:10px;background:var(--surface-3);padding:10px 12px;margin-bottom:10px;flex-shrink:0;max-height:270px;overflow-y:auto}
.tpl-pal-lead{font-size:11.5px;color:var(--text-muted);line-height:1.5;margin:0 0 8px}
.tpl-pal-group{margin-bottom:10px}
.tpl-pal-group:last-child{margin-bottom:0}
.tpl-pal-h{display:flex;align-items:center;gap:8px;font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);margin:0 0 6px}
.tpl-pal-h .tpl-pal-add{margin-left:auto;font-size:11px;text-transform:none;letter-spacing:0;font-weight:700}
.tpl-chips{display:flex;flex-wrap:wrap;gap:6px}
.tpl-chip{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:4px 11px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;cursor:pointer;transition:.12s;line-height:1.5;white-space:nowrap}
.tpl-chip:hover{border-color:var(--primary);color:var(--primary);background:color-mix(in srgb,var(--primary) 8%,transparent)}
.tpl-chip small{font-family:inherit;color:var(--text-muted);margin-left:5px}
.tpl-chip:hover small{color:var(--primary)}
/* purple ⚡ dynamic-AI-block chips */
.tpl-chip.tpl-chip-block{border-color:color-mix(in srgb,#8b5cf6 45%,var(--border));color:#7c3aed;background:color-mix(in srgb,#8b5cf6 8%,var(--surface))}
.tpl-chip.tpl-chip-block:hover{border-color:#8b5cf6;background:color-mix(in srgb,#8b5cf6 16%,var(--surface));color:#6d28d9}
.tpl-pal-block-h{color:#7c3aed}
/* snippet chips (conditional/repeater) read as "starter code" */
.tpl-chip.tpl-chip-snip{font-family:inherit;font-weight:700}
.tpl-pal-legend{font-size:11px;color:var(--text-muted);line-height:1.55;margin:6px 0 0}
.tpl-pal-legend code{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:10.5px;color:var(--text)}
.tpl-pal-empty{font-size:11.5px;color:var(--text-muted);font-style:italic}

/* CTA link chips carry a small delete affordance */
.tpl-chip.tpl-chip-cta{padding-right:6px}
.tpl-chip .tpl-chip-del{border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-size:13px;line-height:1;padding:0 2px;margin-left:4px}
.tpl-chip .tpl-chip-del:hover{color:var(--danger)}

/* ── warn banner for leftover unknown {{tokens}} in the preview ─────────────── */
.tpl-warnbar{font-size:11.5px;color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,var(--surface));border-bottom:1px solid color-mix(in srgb,var(--warn) 32%,var(--border));padding:6px 12px;display:flex;align-items:center;gap:6px}
.tpl-warnbar code{background:color-mix(in srgb,var(--warn) 18%,var(--surface));border-radius:4px;padding:1px 5px;font-size:10.5px}
.tpl-warnbar.hidden{display:none}

/* ── modal form rows (block modal / CTA modal — reuse .ws-modal shell) ──────── */
.tpl-mfld{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.tpl-mfld > span{font-size:12px;font-weight:700;color:var(--text-muted)}
.tpl-mfld input,.tpl-mfld select,.tpl-mfld textarea{border:1px solid var(--border);border-radius:8px;padding:9px 11px;font-size:13.5px;font-family:inherit;background:var(--surface);color:var(--text)}
.tpl-mfld textarea{resize:vertical;min-height:96px}
.tpl-mfld input:focus,.tpl-mfld select:focus,.tpl-mfld textarea:focus{outline:none;border-color:var(--primary)}
.tpl-mfld .tpl-mfld-note{font-size:11.5px;color:var(--text-muted);font-weight:400;line-height:1.5}
.tpl-mrow{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:560px){.tpl-mrow{grid-template-columns:1fr}}
.tpl-modal-info{background:color-mix(in srgb,#8b5cf6 8%,var(--surface));border:1px solid color-mix(in srgb,#8b5cf6 32%,var(--border));border-radius:8px;padding:10px 12px;font-size:12px;color:var(--text);line-height:1.5;margin-bottom:14px}
.tpl-modal-info b{color:#7c3aed}
.tpl-modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}

/* list-view kind chip */
.tpl-kind{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border)}
