.gen{display:grid;grid-template-columns:280px 1fr;gap:20px;align-items:start}
@media(max-width:760px){.gen{grid-template-columns:1fr}}
fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin:0 0 12px}
legend{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:0 6px}
.opt{display:flex;flex-direction:column;gap:6px}
.opt label{display:flex;gap:8px;align-items:center;font-size:14px;cursor:pointer}
.preview{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px;min-height:220px;display:flex;align-items:center;justify-content:center}
.preview iframe{border:0;width:100%;max-width:520px;height:260px;background:transparent}
pre{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px;overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:13px;line-height:1.5;margin:0}
.copybar{display:flex;gap:8px;align-items:center;margin-top:10px}
button.cta{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:9px 16px;
  font:inherit;font-size:14px;cursor:pointer}
button.cta:hover{filter:brightness(1.08)}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}

/* Clases que sustituyen a los atributos `style=` del marcado. La CSP de
   producción es `style-src 'self'` sin 'unsafe-inline': un estilo en línea
   simplemente no se aplica, y la página saldría sin maquetar. */
.hero-compacta{padding-bottom:8px}
.titular{margin:0;font-size:clamp(24px,4vw,36px);letter-spacing:-.02em}
.entradilla{max-width:620px;margin:10px auto 0}
.h-copia{font-size:15px;margin:18px 0 8px}
.h-seccion{font-size:16px;margin:0 0 10px}

