CodeMirror.defineMode("css",function(g){return CodeMirror.getMode(g,"text/css")});
CodeMirror.defineMode("css-base",function(g,f){function e(c,d){k=d;return c}function l(c,d){var b=c.next();if(a[b]){var n=a[b](c,d);if(!1!==n)return n}if("@"==b)return c.eatWhile(/[\w\\\-]/),e("def",c.current());if("="==b)e(null,"compare");else if("~"!=b&&"|"!=b||!c.eat("=")){if('"'==b||"'"==b)return d.tokenize=m(b),d.tokenize(c,d);if("#"==b)return c.eatWhile(/[\w\\\-]/),e("atom","hash");if("!"==b)return c.match(/^\s*\w*/),e("keyword","important");if(/\d/.test(b))return c.eatWhile(/[\w.%]/),e("number",
"unit");if("-"===b){if(/\d/.test(c.peek()))return c.eatWhile(/[\w.%]/),e("number","unit");if(c.match(/^[^-]+-/))return e("meta","meta")}else{if(/[,+>*\/]/.test(b))return e(null,"select-op");if("."==b&&c.match(/^-?[_a-z][_a-z0-9-]*/i))return e("qualifier","qualifier");if(":"==b)return e("operator",b);if(/[;{}\[\]\(\)]/.test(b))return e(null,b);"u"==b&&c.match("rl(")?(c.backUp(1),d.tokenize=p):c.eatWhile(/[\w\\\-]/);return e("property","variable")}}else return e(null,"compare")}function m(c,d){return function(b,
n){for(var a=!1,h;null!=(h=b.next())&&(h!=c||a);)a=!a&&"\\"==h;a||(d&&b.backUp(1),n.tokenize=l);return e("string","string")}}function p(c,d){c.next();c.match(/\s*[\"\']/,!1)?d.tokenize=l:d.tokenize=m(")",!0);return e(null,"(")}var q=g.indentUnit,a=f.hooks||{},h=f.atMediaTypes||{},u=f.atMediaFeatures||{},r=f.propertyKeywords||{},s=f.colorKeywords||{},t=f.valueKeywords||{},v=!!f.allowNested,k=null;return{startState:function(c){return{tokenize:l,baseIndent:c||0,stack:[]}},token:function(c,d){d.tokenize=
d.tokenize||l;if(d.tokenize==l&&c.eatSpace())return null;var b=d.tokenize(c,d);b&&"string"!=typeof b&&(b=e(b[0],b[1]));var a=d.stack[d.stack.length-1];if("variable"==b)return"variable-definition"==k&&d.stack.push("propertyValue"),"variable-2";"property"==b?"propertyValue"==a?b=t[c.current()]?"string-2":s[c.current()]?"keyword":"variable-2":"rule"==a?r[c.current()]||(b+=" error"):"block"==a?b=r[c.current()]?"property":s[c.current()]?"keyword":t[c.current()]?"string-2":"tag":a&&"@media{"!=a?"@media"==
a?b=h[c.current()]?"attribute":/^(only|not)$/i.test(c.current())?"keyword":"and"==c.current().toLowerCase()?"error":u[c.current()]?"error":"attribute error":"@mediaType"==a?h[c.current()]?b="attribute":"and"==c.current().toLowerCase()?b="operator":(/^(only|not)$/i.test(c.current())||c.current(),b="error"):"@mediaType("==a?r[c.current()]||(b=h[c.current()]?"error":"and"==c.current().toLowerCase()?"operator":/^(only|not)$/i.test(c.current())?"error":b+" error"):b="error":b="tag":"atom"==b?a&&"@media{"!=
a&&"block"!=a?"propertyValue"==a?/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(c.current())||(b+=" error"):b="error":b="builtin":"@media"==a&&"{"==k&&(b="error");"{"==k?"@media"==a||"@mediaType"==a?(d.stack.pop(),d.stack[d.stack.length-1]="@media{"):d.stack.push(v?"block":"rule"):"}"==k?("interpolation"==d.stack[d.stack.length-1]&&(b="operator"),d.stack.pop(),"propertyValue"==a&&d.stack.pop()):"interpolation"==k?d.stack.push("interpolation"):"@media"==k?d.stack.push("@media"):"@media"==a&&/\b(keyword|attribute)\b/.test(b)?
d.stack.push("@mediaType"):"@mediaType"==a&&","==c.current()?d.stack.pop():"@mediaType"==a&&"("==k?d.stack.push("@mediaType("):"@mediaType("==a&&")"==k?d.stack.pop():"rule"!=a&&"block"!=a||":"!=k?"propertyValue"==a&&";"==k&&d.stack.pop():d.stack.push("propertyValue");return b},indent:function(a,d){var b=a.stack.length;/^\}/.test(d)&&(b-="propertyValue"==a.stack[a.stack.length-1]?2:1);return a.baseIndent+b*q},electricChars:"}"}});
(function(){function g(a){for(var h={},e=0;e<a.length;++e)h[a[e]]=!0;return h}function f(a,e){for(var f=!1,g;null!=(g=a.next());){if(f&&"/"==g){e.tokenize=null;break}f="*"==g}return["comment","comment"]}var e=g("all aural braille handheld print projection screen tty tv embossed".split(" ")),l=g("width min-width max-width height min-height max-height device-width min-device-width max-device-width device-height min-device-height max-device-height aspect-ratio min-aspect-ratio max-aspect-ratio device-aspect-ratio min-device-aspect-ratio max-device-aspect-ratio color min-color max-color color-index min-color-index max-color-index monochrome min-monochrome max-monochrome resolution min-resolution max-resolution scan grid".split(" ")),
m=g("align-content align-items align-self alignment-adjust alignment-baseline anchor-point animation animation-delay animation-direction animation-duration animation-iteration-count animation-name animation-play-state animation-timing-function appearance azimuth backface-visibility background background-attachment background-clip background-color background-image background-origin background-position background-repeat background-size baseline-shift binding bleed bookmark-label bookmark-level bookmark-state bookmark-target border border-bottom border-bottom-color border-bottom-left-radius border-bottom-right-radius border-bottom-style border-bottom-width border-collapse border-color border-image border-image-outset border-image-repeat border-image-slice border-image-source border-image-width border-left border-left-color border-left-style border-left-width border-radius border-right border-right-color border-right-style border-right-width border-spacing border-style border-top border-top-color border-top-left-radius border-top-right-radius border-top-style border-top-width border-width bottom box-decoration-break box-shadow box-sizing break-after break-before break-inside caption-side clear clip color color-profile column-count column-fill column-gap column-rule column-rule-color column-rule-style column-rule-width column-span column-width columns content counter-increment counter-reset crop cue cue-after cue-before cursor direction display dominant-baseline drop-initial-after-adjust drop-initial-after-align drop-initial-before-adjust drop-initial-before-align drop-initial-size drop-initial-value elevation empty-cells fit fit-position flex flex-basis flex-direction flex-flow flex-grow flex-shrink flex-wrap float float-offset font font-feature-settings font-family font-kerning font-language-override font-size font-size-adjust font-stretch font-style font-synthesis font-variant font-variant-alternates font-variant-caps font-variant-east-asian font-variant-ligatures font-variant-numeric font-variant-position font-weight grid-cell grid-column grid-column-align grid-column-sizing grid-column-span grid-columns grid-flow grid-row grid-row-align grid-row-sizing grid-row-span grid-rows grid-template hanging-punctuation height hyphens icon image-orientation image-rendering image-resolution inline-box-align justify-content left letter-spacing line-break line-height line-stacking line-stacking-ruby line-stacking-shift line-stacking-strategy list-style list-style-image list-style-position list-style-type margin margin-bottom margin-left margin-right margin-top marker-offset marks marquee-direction marquee-loop marquee-play-count marquee-speed marquee-style max-height max-width min-height min-width move-to nav-down nav-index nav-left nav-right nav-up opacity order orphans outline outline-color outline-offset outline-style outline-width overflow overflow-style overflow-wrap overflow-x overflow-y padding padding-bottom padding-left padding-right padding-top page page-break-after page-break-before page-break-inside page-policy pause pause-after pause-before perspective perspective-origin pitch pitch-range play-during position presentation-level punctuation-trim quotes rendering-intent resize rest rest-after rest-before richness right rotation rotation-point ruby-align ruby-overhang ruby-position ruby-span size speak speak-as speak-header speak-numeral speak-punctuation speech-rate stress string-set tab-size table-layout target target-name target-new target-position text-align text-align-last text-decoration text-decoration-color text-decoration-line text-decoration-skip text-decoration-style text-emphasis text-emphasis-color text-emphasis-position text-emphasis-style text-height text-indent text-justify text-outline text-shadow text-space-collapse text-transform text-underline-position text-wrap top transform transform-origin transform-style transition transition-delay transition-duration transition-property transition-timing-function unicode-bidi vertical-align visibility voice-balance voice-duration voice-family voice-pitch voice-range voice-rate voice-stress voice-volume volume white-space widows width word-break word-spacing word-wrap z-index".split(" ")),
p=g("black silver gray white maroon red purple fuchsia green lime olive yellow navy blue teal aqua".split(" ")),q=g("above absolute activeborder activecaption afar after-white-space ahead alias all all-scroll alternate always amharic amharic-abegede antialiased appworkspace arabic-indic armenian asterisks auto avoid background backwards baseline below bidi-override binary bengali blink block block-axis bold bolder border border-box both bottom break-all break-word button button-bevel buttonface buttonhighlight buttonshadow buttontext cambodian capitalize caps-lock-indicator caption captiontext caret cell center checkbox circle cjk-earthly-branch cjk-heavenly-stem cjk-ideographic clear clip close-quote col-resize collapse compact condensed contain content content-box context-menu continuous copy cover crop cross crosshair currentcolor cursive dashed decimal decimal-leading-zero default default-button destination-atop destination-in destination-out destination-over devanagari disc discard document dot-dash dot-dot-dash dotted double down e-resize ease ease-in ease-in-out ease-out element ellipsis embed end ethiopic ethiopic-abegede ethiopic-abegede-am-et ethiopic-abegede-gez ethiopic-abegede-ti-er ethiopic-abegede-ti-et ethiopic-halehame-aa-er ethiopic-halehame-aa-et ethiopic-halehame-am-et ethiopic-halehame-gez ethiopic-halehame-om-et ethiopic-halehame-sid-et ethiopic-halehame-so-et ethiopic-halehame-ti-er ethiopic-halehame-ti-et ethiopic-halehame-tig ew-resize expanded extra-condensed extra-expanded fantasy fast fill fixed flat footnotes forwards from geometricPrecision georgian graytext groove gujarati gurmukhi hand hangul hangul-consonant hebrew help hidden hide higher highlight highlighttext hiragana hiragana-iroha horizontal hsl hsla icon ignore inactiveborder inactivecaption inactivecaptiontext infinite infobackground infotext inherit initial inline inline-axis inline-block inline-table inset inside intrinsic invert italic justify kannada katakana katakana-iroha khmer landscape lao large larger left level lighter line-through linear lines list-item listbox listitem local logical loud lower lower-alpha lower-armenian lower-greek lower-hexadecimal lower-latin lower-norwegian lower-roman lowercase ltr malayalam match media-controls-background media-current-time-display media-fullscreen-button media-mute-button media-play-button media-return-to-realtime-button media-rewind-button media-seek-back-button media-seek-forward-button media-slider media-sliderthumb media-time-remaining-display media-volume-slider media-volume-slider-container media-volume-sliderthumb medium menu menulist menulist-button menulist-text menulist-textfield menutext message-box middle min-intrinsic mix mongolian monospace move multiple myanmar n-resize narrower ne-resize nesw-resize no-close-quote no-drop no-open-quote no-repeat none normal not-allowed nowrap ns-resize nw-resize nwse-resize oblique octal open-quote optimizeLegibility optimizeSpeed oriya oromo outset outside overlay overline padding padding-box painted paused persian plus-darker plus-lighter pointer portrait pre pre-line pre-wrap preserve-3d progress push-button radio read-only read-write read-write-plaintext-only relative repeat repeat-x repeat-y reset reverse rgb rgba ridge right round row-resize rtl run-in running s-resize sans-serif scroll scrollbar se-resize searchfield searchfield-cancel-button searchfield-decoration searchfield-results-button searchfield-results-decoration semi-condensed semi-expanded separate serif show sidama single skip-white-space slide slider-horizontal slider-vertical sliderthumb-horizontal sliderthumb-vertical slow small small-caps small-caption smaller solid somali source-atop source-in source-out source-over space square square-button start static status-bar stretch stroke sub subpixel-antialiased super sw-resize table table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group telugu text text-bottom text-top textarea textfield thai thick thin threeddarkshadow threedface threedhighlight threedlightshadow threedshadow tibetan tigre tigrinya-er tigrinya-er-abegede tigrinya-et tigrinya-et-abegede to top transparent ultra-condensed ultra-expanded underline up upper-alpha upper-armenian upper-greek upper-hexadecimal upper-latin upper-norwegian upper-roman uppercase urdu url vertical vertical-text visible visibleFill visiblePainted visibleStroke visual w-resize wait wave white wider window windowframe windowtext x-large x-small xor xx-large xx-small".split(" "));
CodeMirror.defineMIME("text/css",{atMediaTypes:e,atMediaFeatures:l,propertyKeywords:m,colorKeywords:p,valueKeywords:q,hooks:{"<":function(a,e){function f(a,e){for(var h=0,g;null!=(g=a.next());){if(2<=h&&">"==g){e.tokenize=null;break}h="-"==g?h+1:0}return["comment","comment"]}if(a.eat("!"))return e.tokenize=f,f(a,e)},"/":function(a,e){return a.eat("*")?(e.tokenize=f,f(a,e)):!1}},name:"css-base"});CodeMirror.defineMIME("text/x-scss",{atMediaTypes:e,atMediaFeatures:l,propertyKeywords:m,colorKeywords:p,
valueKeywords:q,allowNested:!0,hooks:{$:function(a){a.match(/^[\w-]+/);return":"==a.peek()?["variable","variable-definition"]:["variable","variable"]},"/":function(a,e){return a.eat("/")?(a.skipToEnd(),["comment","comment"]):a.eat("*")?(e.tokenize=f,f(a,e)):["operator","operator"]},"#":function(a){if(a.eat("{"))return["operator","interpolation"];a.eatWhile(/[\w\\\-]/);return["atom","hash"]}},name:"css-base"})})();
