text: /*
  Language: CSS
  Category: common, css
  */
  
  function(hljs) {
    var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';
    var RULE = {
      begin: /[A-Z\_\.\-]+\s*:/, returnBegin: true, end: ';', endsWithParent: true,
      contains: [
        {
          className: 'attribute',
          begin: /\S/, end: ':', excludeEnd: true,
          starts: {
            endsWithParent: true, excludeEnd: true,
            contains: [
              {
                begin: /[\w-]+\(/, returnBegin: true,
                contains: [
                  {
                    className: 'built_in',
                    begin: /[\w-]+/
                  },
                  {
                    begin: /\(/, end: /\)/,
                    contains: [
                      hljs.APOS_STRING_MODE,
                      hljs.QUOTE_STRING_MODE
                    ]
                  }
                ]
              },
              hljs.CSS_NUMBER_MODE,
              hljs.QUOTE_STRING_MODE,
              hljs.APOS_STRING_MODE,
              hljs.C_BLOCK_COMMENT_MODE,
              {
                className: 'number', begin: '#[0-9A-Fa-f]+'
              },
              {
                className: 'meta', begin: '!important'
              }
            ]
          }
        }
      ]
    };
  
    return {
      case_insensitive: true,
      illegal: /[=\/|'\$]/,
      contains: [
        hljs.C_BLOCK_COMMENT_MODE,
        {
          className: 'selector-id', begin: /#[A-Za-z0-9_-]+/
        },
        {
          className: 'selector-class', begin: /\.[A-Za-z0-9_-]+/
        },
        {
          className: 'selector-attr',
          begin: /\[/, end: /\]/,
          illegal: '$'
        },
        {
          className: 'selector-pseudo',
          begin: /:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/
        },
        {
          begin: '@(font-face|page)',
          lexemes: '[a-z-]+',
          keywords: 'font-face page'
        },
        {
          begin: '@', end: '[{;]', // at_rule eating first "{" is a good thing
                                   // because it doesn’t let it to be parsed as
                                   // a rule set but instead drops parser into
                                   // the default mode which is how it should be.
          illegal: /:/, // break on Less variables @var: ...
          contains: [
            {
              className: 'keyword',
              begin: /\w+/
            },
            {
              begin: /\s/, endsWithParent: true, excludeEnd: true,
              relevance: 0,
              contains: [
                hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE,
                hljs.CSS_NUMBER_MODE
              ]
            }
          ]
        },
        {
          className: 'selector-tag', begin: IDENT_RE,
          relevance: 0
        },
        {
          begin: '{', end: '}',
          illegal: /\S/,
          contains: [
            hljs.C_BLOCK_COMMENT_MODE,
            RULE,
          ]
        }
      ]
    };
  }
  