docs: public void tagCssAction(CmsObject cms, HttpServletRequest req) throws CmsException, IOException {
  
          String includeType = TYPE_CSS;
  
          CmsJspStandardContextBean standardContext = getStandardContext(cms, req);
          CmsContainerPageBean containerPage = standardContext.getPage();
  
          Set<String> cssIncludes = new LinkedHashSet<String>();
          Map<String, String> inlineCss = new LinkedHashMap<String, String>();
          // add defaults
          if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(m_defaults)) {
              String[] defaults = m_defaults.split("\\|");
              for (int i = 0; i < defaults.length; i++) {
                  cssIncludes.add(defaults[i].trim());
              }
          }
  
          collectHeadIncludesForContainerElement(
              cms,
              req,
              standardContext,
              containerPage,
              includeType,
              cssIncludes,
              inlineCss);
          if (standardContext.getDetailContentId() != null) {
              try {
                  CmsResource detailContent = cms.readResource(
                      standardContext.getDetailContentId(),
                      CmsResourceFilter.ignoreExpirationOffline(cms));
                  CmsFormatterConfiguration config = OpenCms.getADEManager().lookupConfiguration(
                      cms,
                      cms.getRequestContext().getRootUri()).getFormatters(cms, detailContent);
                  boolean requiresAllIncludes = true;
                  if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getDetailtype())
                      && CmsStringUtil.isNotEmptyOrWhitespaceOnly(getDetailwidth())) {
                      try {
                          int width = Integer.parseInt(getDetailwidth());
                          I_CmsFormatterBean formatter = config.getDetailFormatter(getDetailtype(), width);
                          cssIncludes.addAll(formatter.getCssHeadIncludes());
                          if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(formatter.getInlineCss())) {
                              inlineCss.put(formatter.getId(), formatter.getInlineCss());
                          }
                          requiresAllIncludes = false;
                      } catch (NumberFormatException ne) {
                          // nothing to do, we will include CSS for all detail containers
                      }
                  }
                  if (requiresAllIncludes) {
                      for (I_CmsFormatterBean formatter : config.getDetailFormatters()) {
                          cssIncludes.addAll(getHeadIncludes(formatter, includeType));
                          String inlineIncludeData = getInlineData(formatter, includeType);
                          if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(inlineIncludeData)) {
                              inlineCss.put(formatter.getId(), inlineIncludeData);
                          }
                      }
                  }
              } catch (CmsException e) {
                  LOG.error(
                      Messages.get().getBundle().key(
                          Messages.ERR_READING_REQUIRED_RESOURCE_1,
                          standardContext.getDetailContentId()),
                      e);
              }
          }
          for (String cssUri : cssIncludes) {
              pageContext.getOut().print(
                  "\n<link rel=\"stylesheet\" href=\""
                      + CmsJspTagLink.linkTagAction(cssUri.trim(), req)
                      + generateReqParams()
                      + "\" type=\"text/css\" ");
              if (shouldCloseTags()) {
                  pageContext.getOut().print("/>");
              } else {
                  pageContext.getOut().print(">");
              }
          }
          if (cms.getRequestContext().getCurrentProject().isOnlineProject()) {
              if (!inlineCss.isEmpty()) {
                  StringBuffer inline = new StringBuffer("\n<style type=\"text/css\">\n");
                  for (Entry<String, String> cssEntry : inlineCss.entrySet()) {
                      inline.append(cssEntry.getValue()).append("\n\n");
                  }
                  inline.append("\n</style>\n");
                  pageContext.getOut().print(inline.toString());
              }
          } else {
              StringBuffer inline = new StringBuffer();
              for (Entry<String, String> cssEntry : inlineCss.entrySet()) {
                  inline.append("\n<style type=\"text/css\" rel=\"" + cssEntry.getKey() + "\">\n");
                  inline.append(cssEntry.getValue()).append("\n\n");
                  inline.append("\n</style>\n");
              }
              pageContext.getOut().print(inline.toString());
          }
      }