<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">

<!--

    Kate CSS syntax highlighting definition


    Changelog:

    - Version 2.02, by Rafał Miłecki:
        - Added CSS 3 properties "border-*-image" and "border-*-radius".
        - Added CSS values "clip", "ellipsis" and "ellipsis-word".
        - Added CSS 3 properties "overflow-x", "overflow-y", "text-overflow", "box-shadow" and "outline-offset".
        - Added CSS 3 color values: "rgba", "hsl" and "hsla".
        - Added Gecko CSS properties: "-moz-border-*-colors".
        - Added background size properties: "background-size" and prefixes: "-o-", "-webkit-" and "-khtml-".

    - Version 2.01, by Mathieu Bonnet:
        - Added CSS 3 property "border-radius".
        - Added Gecko CSS properties "-moz-border-radius" and "-moz-box-flex".
        - Added Gecko CSS value "-moz-box".
        - Added Trident CSS functional notation "expression".
        - Extended the id and class syntax specifications, as per CSS 2.1 grammar.

-->

<language name="CSS" version="2.02" kateversion="2.4" section="Markup" extensions="*.css" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">

  <highlighting>
    <list name="properties">
      <!-- CSS2 -->
      <item> azimuth </item>
      <item> background </item>
      <item> background-attachment </item>
      <item> background-color </item>
      <item> background-image </item>
      <item> background-position </item>
      <item> background-repeat </item>
      <item> border </item>
      <item> border-bottom </item>
      <item> border-bottom-color </item>
      <item> border-bottom-style </item>
      <item> border-bottom-width </item>
      <item> border-collapse </item>
      <item> border-color </item>
      <item> border-left </item>
      <item> border-left-color </item>
      <item> border-left-style </item>
      <item> border-left-width </item>
      <item> border-right </item>
      <item> border-right-color </item>
      <item> border-right-style </item>
      <item> border-right-width </item>
      <item> border-spacing </item>
      <item> border-style </item>
      <item> border-top </item>
      <item> border-top-color </item>
      <item> border-top-style </item>
      <item> border-top-width </item>
      <item> border-width </item>
      <item> bottom </item>
      <item> caption-side </item>
      <item> clear </item>
      <item> clip </item>
      <item> color </item>
      <item> content </item>
      <item> counter-increment </item>
      <item> counter-reset </item>
      <item> cue </item>
      <item> cue-after </item>
      <item> cue-before </item>
      <item> cursor </item>
      <item> direction </item>
      <item> display </item>
      <item> elevation </item>
      <item> empty-cells </item>
      <item> float </item>
      <item> font </item>
      <item> font-family </item>
      <item> font-size </item>
      <item> font-size-adjust </item>
      <item> font-stretch </item>
      <item> font-style </item>
      <item> font-variant </item>
      <item> font-weight </item>
      <item> height </item>
      <item> left </item>
      <item> letter-spacing </item>
      <item> line-height </item>
      <item> list-style </item>
      <item> list-style-image </item>
      <item> list-style-keyword </item>
      <item> list-style-position </item>
      <item> list-style-type  </item>
      <item> margin </item>
      <item> margin-bottom </item>
      <item> margin-left </item>
      <item> margin-right </item>
      <item> margin-top </item>
      <item> marker-offset </item>
      <item> max-height </item>
      <item> max-width </item>
      <item> min-height </item>
      <item> min-width </item>
      <item> orphans </item>
      <item> outline </item>
      <item> outline-color </item>
      <item> outline-style </item>
      <item> outline-width </item>
      <item> overflow </item>
      <item> padding </item>
      <item> padding-bottom </item>
      <item> padding-left </item>
      <item> padding-right </item>
      <item> padding-top </item>
      <item> page </item>
      <item> page-break-after </item>
      <item> page-break-before </item>
      <item> page-break-inside </item>
      <item> pause </item>
      <item> pause-after </item>
      <item> pause-before </item>
      <item> pitch </item>
      <item> pitch-range </item>
      <item> play-during </item>
      <item> position </item>
      <item> quotes </item>
      <item> richness </item>
      <item> right </item>
      <item> size </item>
      <item> speak </item>
      <item> speak-header </item>
      <item> speak-numeral </item>
      <item> speak-punctuation </item>
      <item> speech-rate </item>
      <item> stress </item>
      <item> table-layout </item>
      <item> text-align </item>
      <item> text-decoration </item>
      <item> text-decoration-color </item>
      <item> text-indent </item>
      <item> text-shadow </item>
      <item> text-transform </item>
      <item> top </item>
      <item> unicode-bidi </item>
      <item> vertical-align </item>
      <item> visibility </item>
      <item> voice-family </item>
      <item> volume </item>
      <item> white-space </item>
      <item> widows </item>
      <item> width </item>
      <item> word-spacing </item>
      <item> z-index </item>

      <!-- CSS3 -->
      <item> border-bottom-image </item>
      <item> border-bottom-left-image </item>
      <item> border-bottom-left-radius </item>
      <item> border-bottom-right-image </item>
      <item> border-bottom-right-radius </item>
      <item> border-corner-image </item>
      <item> border-image </item>
      <item> border-left-image </item>
      <item> border-radius </item>
      <item> border-right-image </item>
      <item> border-top-image </item>
      <item> border-top-left-image </item>
      <item> border-top-left-radius </item>
      <item> border-top-right-image </item>
      <item> border-top-right-radius </item>
      <item> box-shadow </item>
      <item> box-sizing </item>
      <item> opacity </item>
      <item> outline-offset </item>
      <item> overflow-x </item>
      <item> overflow-y </item>
      <item> text-overflow </item>
      <item> text-shadow </item>

      <!-- Gecko rendering engine CSS property extensions -->
      <item> -moz-border-bottom-colors </item>
      <item> -moz-border-left-colors </item>
      <item> -moz-border-radius </item>
      <item> -moz-border-right-colors </item>
      <item> -moz-border-top-colors </item>
      <item> -moz-box-flex </item>

      <!-- Opera rendering engine CSS property extensions -->
      <item> -o-background-size </item>
      <item> -o-text-overflow </item>

      <!-- konq specific -->
      <item> -khtml-background-size </item>
      <item> konq_bgpos_x </item>
      <item> konq_bgpos_y </item>

      <!-- Webkit rendering engine CSS property extensions -->
      <item> -webkit-background-size </item>

      <!-- font properties in @font-face -->
      <item> font-family </item>
      <item> font-size </item>
      <item> font-stretch </item>
      <item> font-style </item>
      <item> font-variant </item>
      <item> font-weight </item>
      <item> unicode-range </item>
      <item> units-per-em </item>
      <item> src </item>
      <item> panose-1 </item>
      <item> stemv </item>
      <item> stemh </item>
      <item> slope </item>
      <item> cap-height </item>
      <item> x-height </item>
      <item> ascent </item>
      <item> descent </item>
      <item> widths </item>
      <item> bbox </item>
      <item> definition-src </item>
      <item> baseline </item>
      <item> centerline </item>
      <item> mathline </item>
      <item> topline </item>
    </list>

    <list name="types">
      <item> inherit </item>
      <item> none </item>
      <item> hidden </item>
      <item> dotted </item>
      <item> dashed </item>
      <item> solid </item>
      <item> double </item>
      <item> groove </item>
      <item> ridge </item>
      <item> inset </item>
      <item> outset </item>
      <item> xx-small </item>
      <item> x-small </item>
      <item> small </item>
      <item> medium </item>
      <item> large </item>
      <item> x-large </item>
      <item> xx-large </item>
      <item> smaller </item>
      <item> larger </item>
      <item> italic </item>
      <item> oblique </item>
      <item> small-caps </item>
      <item> normal </item>
      <item> bold </item>
      <item> bolder </item>
      <item> lighter </item>
      <item> light </item>
      <item> 100 </item>
      <item> 200 </item>
      <item> 300 </item>
      <item> 400 </item>
      <item> 500 </item>
      <item> 600 </item>
      <item> 700 </item>
      <item> 800 </item>
      <item> 900 </item>
      <item> transparent </item>
      <item> repeat </item>
      <item> repeat-x </item>
      <item> repeat-y </item>
      <item> no-repeat </item>
      <item> baseline </item>
      <item> sub </item>
      <item> super </item>
      <item> top </item>
      <item> text-top </item>
      <item> middle </item>
      <item> bottom </item>
      <item> text-bottom </item>
      <item> left </item>
      <item> right </item>
      <item> center </item>
      <item> justify </item>
      <item> konq-center </item>
      <item> disc </item>
      <item> circle </item>
      <item> square </item>
      <item> box </item>
      <item> decimal </item>
      <item> decimal-leading-zero </item>
      <item> lower-roman </item>
      <item> upper-roman </item>
      <item> lower-greek </item>
      <item> lower-alpha </item>
      <item> lower-latin </item>
      <item> upper-alpha </item>
      <item> upper-latin </item>
      <item> hebrew </item>
      <item> armenian </item>
      <item> georgian </item>
      <item> cjk-ideographic </item>
      <item> hiragana </item>
      <item> katakana </item>
      <item> hiragana-iroha </item>
      <item> katakana-iroha </item>
      <item> inline </item>
      <item> inline-block </item>
      <item> block </item>
      <item> list-item </item>
      <item> run-in </item>
      <item> compact </item>
      <item> marker </item>
      <item> table </item>
      <item> inline-table </item>
      <item> table-row-group </item>
      <item> table-header-group </item>
      <item> table-footer-group </item>
      <item> table-row </item>
      <item> table-column-group </item>
      <item> table-column </item>
      <item> table-cell </item>
      <item> table-caption </item>
      <item> auto </item>
      <item> crosshair </item>
      <item> default </item>
      <item> pointer </item>
      <item> move </item>
      <item> e-resize </item>
      <item> ne-resize </item>
      <item> nw-resize </item>
      <item> n-resize </item>
      <item> se-resize </item>
      <item> sw-resize </item>
      <item> s-resize </item>
      <item> w-resize </item>
      <item> text </item>
      <item> wait </item>
      <item> help </item>
      <item> above </item>
      <item> absolute </item>
      <item> always </item>
      <item> avoid </item>
      <item> below </item>
      <item> bidi-override </item>
      <item> blink </item>
      <item> both </item>
      <item> capitalize </item>
      <item> caption </item>
      <item> clip </item>
      <item> close-quote </item>
      <item> collapse </item>
      <item> condensed </item>
      <item> crop </item>
      <item> cross </item>
      <item> ellipsis </item>
      <item> ellipsis-word </item>
      <item> embed </item>
      <item> expanded </item>
      <item> extra-condensed </item>
      <item> extra-expanded </item>
      <item> fixed </item>
      <item> hand </item>
      <item> hide </item>
      <item> higher </item>
      <item> icon </item>
      <item> inside </item>
      <item> invert </item>
      <item> landscape </item>
      <item> level </item>
      <item> line-through </item>
      <item> loud </item>
      <item> lower </item>
      <item> lowercase </item>
      <item> ltr </item>
      <item> menu </item>
      <item> message-box </item>
      <item> mix </item>
      <item> narrower </item>
      <item> no-close-quote </item>
      <item> no-open-quote </item>
      <item> nowrap </item>
      <item> open-quote </item>
      <item> outside </item>
      <item> overline </item>
      <item> portrait </item>
      <item> pre </item>
      <item> pre-line </item>
      <item> pre-wrap </item>
      <item> relative </item>
      <item> rtl </item>
      <item> scroll </item>
      <item> semi-condensed </item>
      <item> semi-expanded </item>
      <item> separate </item>
      <item> show </item>
      <item> small-caption </item>
      <item> static </item>
      <item> static-position </item>
      <item> status-bar </item>
      <item> thick </item>
      <item> thin </item>
      <item> ultra-condensed </item>
      <item> ultra-expanded </item>
      <item> underline </item>
      <item> uppercase </item>
      <item> visible </item>
      <item> wider </item>
      <item> break </item>
      <item> serif </item>
      <item> sans-serif </item>
      <item> cursive </item>
      <item> fantasy </item>
      <item> monospace </item>
      <item> border-box </item>
      <item> content-box </item>
      
      <!-- Gecko rendering engine CSS value extensions -->
      <item> -moz-box </item>      
      
    </list>


    <list name="colors">
      <item> aqua </item>
      <item> black </item>
      <item> blue </item>
      <item> fuchsia </item>
      <item> gray </item>
      <item> green </item>
      <item> lime </item>
      <item> maroon </item>
      <item> navy </item>
      <item> olive </item>
      <item> purple </item>
      <item> red </item>
      <item> silver </item>
      <item> teal </item>
      <item> white </item>
      <item> yellow </item>
      <item> ActiveBorder  </item>
      <item> ActiveCaption  </item>
      <item> AppWorkspace  </item>
      <item> Background  </item>
      <item> ButtonFace  </item>
      <item> ButtonHighlight  </item>
      <item> ButtonShadow  </item>
      <item> ButtonText  </item>
      <item> CaptionText  </item>
      <item> GrayText  </item>
      <item> Highlight  </item>
      <item> HighlightText  </item>
      <item> InactiveBorder  </item>
      <item> InactiveCaption  </item>
      <item> InactiveCaptionText  </item>
      <item> InfoBackground  </item>
      <item> InfoText  </item>
      <item> Menu  </item>
      <item> MenuText  </item>
      <item> Scrollbar  </item>
      <item> ThreeDDarkShadow  </item>
      <item> ThreeDFace  </item>
      <item> ThreeDHighlight  </item>
      <item> ThreeDLightShadow  </item>
      <item> ThreeDShadow  </item>
      <item> Window  </item>
      <item> WindowFrame  </item>
      <item> WindowText  </item>
    </list>

    <list name="paren">
      <item> url </item>
      <item> attr </item>
      <item> rect </item>
      <item> rgb </item>
      <item> rgba </item>
      <item> hsl </item>
      <item> hsla </item>
      <item> counter </item>
      <item> counters </item>

      <!-- in @font-face -->
      <item> local </item>
      <item> format </item>
      
      <!-- Trident (a.k.a., MSHTML) rendering engine functional notation extensions -->
      <item> expression </item>
      
    </list>

    <list name="mediatypes">
      <item> all </item>
      <item> aural </item>
      <item> braille </item>
      <item> embossed </item>
      <item> handheld </item>
      <item> print </item>
      <item> projection </item>
      <item> screen </item>
      <item> tty </item>
      <item> tv </item>
    </list>

    <list name="pseudoclasses">
      <item> hover </item>
      <item> link </item>
      <item> visited </item>
      <item> active </item>
      <item> focus </item>
      <item> first-child </item>
      <item> last-child </item>
      <item> only-child </item>
      <item> first-of-type </item>
      <item> last-of-type </item>
      <item> only-of-type </item>
      <item> first-letter </item>
      <item> first-line </item>
      <item> before </item>
      <item> after </item>
      <item> selection </item>
      <item> root </item>
      <item> empty </item>
      <item> target </item>
      <item> enabled </item>
      <item> disabled </item>
      <item> checked </item>
      <item> indeterminate </item>
      <item> nth-child </item>
      <item> nth-last-child </item>
      <item> nth-of-type </item>
      <item> nth-last-of-type </item>
      <item> not </item>
    </list>

    <contexts>
      <context attribute="Normal Text" lineEndContext="#stay" name="Base">
        <LineContinue/>
        <DetectSpaces/>
	<IncludeRules context="FindRuleSets" />
      </context>

      <!-- to be included -->
      <!-- finds rules and detects nesting -->
      <context attribute="Normal Text" lineEndContext="#stay" name="FindRuleSets">
        <RegExpr attribute="Media" context="Media" String="@media\b" />
	<RegExpr attribute="At Rule" context="Import" String="@import\b" />
	<RegExpr attribute="At Rule" context="#stay" String="@(font-face|charset)\b" />
        <DetectChar attribute="Property" context="RuleSet" char="{" beginRegion="ruleset" />
        <!--parse selectors-->
	<DetectChar attribute="Selector Attr" context="SelAttr" char="[" />
	<RegExpr attribute="Selector Id" context="#stay" String="#([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
	<RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
	<RegExpr attribute="Selector Pseudo" context="#stay" String=":lang\([\w_-]+\)" />
	<DetectChar attribute="Selector Pseudo" context="SelPseudo" char=":" />
	<IncludeRules context="FindStrings" />
	<IncludeRules context="FindComments" />
      </context>

      <!-- finds arguments to properties -->
      <context attribute="Normal Text" lineEndContext="#stay" name="FindValues">
	<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+(em|ex|px|in|cm|mm|pt|pc|deg|rad|grad|ms|s|Hz|kHz)\b" />
	<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+[%]?" />
	<RegExpr attribute="Normal Text" context="#stay" String="[\w\-]+" />
      </context>

      <!-- finds strings -->
      <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
	<DetectChar attribute="String" context="StringDQ" char="&quot;" />
	<DetectChar attribute="String" context="StringSQ" char="'" />
      </context>

      <!-- finds comments -->
      <context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
        <RegExpr attribute="Region Marker" context="#stay" String="/\*BEGIN.*\*/" beginRegion="UserDefined" />
        <RegExpr attribute="Region Marker" context="#stay" String="/\*END.*\*/" endRegion="UserDefined" />
        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
      </context>

      <!-- other contexts -->
      <context attribute="Normal Text" lineEndContext="#stay" name="Media">
        <DetectChar attribute="Media" context="Media2" char="{" beginRegion="media" />
	<keyword attribute="Media" context="#stay" String="mediatypes" />
	<DetectChar attribute="Media" context="#stay" char="," />
	<IncludeRules context="FindComments" />
	<RegExpr attribute="Error" context="#stay" String="\S+" />
      </context>

      <context attribute="Normal Text" lineEndContext="#stay" name="Media2">
        <DetectChar attribute="Media" context="#pop#pop" char="}" endRegion="media" />
	<IncludeRules context="FindRuleSets" />
      </context>

      <context attribute="Selector Attr" lineEndContext="#stay" name="SelAttr">
	<DetectChar attribute="Selector Attr" context="#pop" char="]" />
	<IncludeRules context="FindStrings" />
      </context>

      <context attribute="Selector Pseudo" lineEndContext="#pop" name="SelPseudo"
      		fallthrough="true" fallthroughContext="#pop">
	<keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses" />
      </context>

      <context attribute="Normal Text" lineEndContext="#stay" name="Import">
      	<DetectChar attribute="At Rule" context="#pop" char=";" />
	<keyword attribute="Media" context="#stay" String="mediatypes" />
	<IncludeRules context="FindValues" />
	<IncludeRules context="FindStrings" />
	<IncludeRules context="FindComments" />
      </context>

      <context attribute="Comment" lineEndContext="#stay" name="Comment">
	<DetectSpaces/>
        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment" />
        <IncludeRules context="##Alerts" />
	<DetectIdentifier/>
      </context>

      <context attribute="Normal Text" lineEndContext="#stay" name="RuleSet">
        <DetectChar attribute="Property" context="#pop" char="}" endRegion="ruleset" />
        <keyword attribute="Property" context="Rule" String="properties" />
	<RegExpr attribute="Unknown Property" context="Rule" String="-?[A-Za-z_-]+(?=\s*:)" />
	<IncludeRules context="FindComments" />
	<RegExpr attribute="Error" context="#stay" String="\S" />
      </context>

      <context attribute="Normal Text" lineEndContext="#stay" name="Rule">
      	<DetectChar attribute="Property" context="Rule2" char=":" />
	<RegExpr attribute="Error" context="#stay" String="\S" />
      </context>

      <context attribute="Normal Text" lineEndContext="#stay" name="Rule2">
      	<DetectChar attribute="Property" context="#pop#pop" char=";" />
	<DetectChar attribute="Property" context="#pop#pop#pop" char="}" endRegion="ruleset" />
        <!-- parse property values -->
	<keyword attribute="Value" context="#stay" String="types" />
	<keyword attribute="Value" context="#stay" String="colors" />
	<RegExpr attribute="Value" context="#stay" String="#([0-9A-Fa-f]{3}){1,4}\b" />
	<keyword attribute="Value" context="PropParen" String="paren" />
	<RegExpr attribute="Important" context="#stay" String="!important\b" />
	<IncludeRules context="FindValues" />
	<IncludeRules context="FindStrings" />
	<IncludeRules context="FindComments" />
      </context>

      <context attribute="Normal Text" lineEndContext="#stay" name="PropParen">
        <DetectChar attribute="Value" context="PropParen2" char="(" />
	<IncludeRules context="FindComments" />
	<RegExpr attribute="Error" context="#stay" String="\S" />
      </context>

      <context attribute="Normal Text" lineEndContext="#stay" name="PropParen2">
        <DetectChar attribute="Value" context="#pop#pop" char=")" />
	<IncludeRules context="FindValues" />
	<IncludeRules context="FindStrings" />
	<IncludeRules context="FindComments" />
      </context>

      <!-- string contexts -->
      <context attribute="String" lineEndContext="#stay" name="StringDQ">
        <DetectChar attribute="String" context="#pop" char="&quot;" />
        <IncludeRules context="InsideString" />
      </context>

      <context attribute="String" lineEndContext="#stay" name="StringSQ">
        <DetectChar attribute="String" context="#pop" char="'" />
        <IncludeRules context="InsideString" />
      </context>

      <context attribute="String" lineEndContext="#stay" name="InsideString">
        <RegExpr attribute="String" context="#stay" String="\\[&quot;']" />
	<DetectIdentifier/>
      </context>

    </contexts>
    <itemDatas>
      <itemData name="Normal Text" defStyleNum="dsNormal"/>
      <itemData name="Property"  defStyleNum="dsKeyword"/>
      <itemData name="Unknown Property"  defStyleNum="dsKeyword" italic="1"/>
      <itemData name="Media"  defStyleNum="dsDecVal" bold="1"/>
      <itemData name="At Rule"  defStyleNum="dsDecVal" />
      <itemData name="String"  defStyleNum="dsString" />
      <itemData name="Value"  defStyleNum="dsDataType" />
      <itemData name="Important" defStyleNum="dsKeyword" />
      <itemData name="Selector Attr" defStyleNum="dsChar" />
      <itemData name="Selector Id"  defStyleNum="dsFloat" bold="1"/>
      <itemData name="Selector Class"  defStyleNum="dsFloat" />
      <itemData name="Selector Pseudo"  defStyleNum="dsDecVal" />
      <itemData name="Comment" defStyleNum="dsComment" />
      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
      <itemData name="Alert" defStyleNum="dsAlert"/>
      <itemData name="Error" defStyleNum="dsError"/>
    </itemDatas>
  </highlighting>
  <general>
    <keywords casesensitive="0" weakDeliminator="-%"/>
    <comments>
      <comment name="multiLine" start="/*" end="*/" />
    </comments>
  </general>
</language>
