[
  {
    "path": ".editorconfig",
    "content": "# This file is for unifying the coding style for different editors and IDEs\n# editorconfig.org\n\nroot = true\n\n[*]\nend_of_line = lf\ncharset = utf-8\ninsert_final_newline = true\ntrim_trailing_whitespace = true\nindent_style = space\nindent_size = 2\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "# Github actions workflow name\nname: CI\n\n# Triggers the workflow on push or pull request events\non:\n  push:\n    branches: [main, master]\n    tags: ['**']\n  pull_request:\n    branches:\n      - main\n\njobs:\n  node_tests:\n    name: 'Test nib on ${{matrix.os}} with node${{matrix.node}}'\n    strategy:\n      matrix:\n        os: [ubuntu-latest]\n        # Latest four Nodejs LTS version\n        node: [12, 14, 16, 18]\n    runs-on: ${{ matrix.os }}\n    steps:\n     # Pull repo to test machine\n     - uses: actions/checkout@v2\n     # Configures the node version used on GitHub-hosted runners\n     - uses: actions/setup-node@v2\n       with:\n         # The Node.js version to configure\n         node-version: ${{ matrix.node }}\n     # Caching dependencies to speed up workflows    \n     - name: Get npm cache directory\n       id: npm-cache-dir\n       run: |\n          echo \"::set-output name=dir::$(npm config get cache)\"\n     - uses: actions/cache@v2\n       id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true'\n       with:\n         path: ${{ steps.npm-cache-dir.outputs.dir }}\n         key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}\n         restore-keys: |\n           ${{ runner.os }}-node-\n     - name: Install npm dependencies\n       run: npm install\n     - name: Print put node & npm version\n       # Output useful info for debugging.\n       run: node --version && npm --version \n     - name: Run Test\n       run: npm test\n"
  },
  {
    "path": ".gitignore",
    "content": ".idea\n*.css\n!test/cases/*.css\n.DS_Store\nnode_modules\n*.swp\n"
  },
  {
    "path": ".mocharc.json",
    "content": "{\n  \"require\": \"chai\",\n  \"reporter\": \"spec\",\n  \"diff\": true,\n  \"color\": true,\n  \"exit\": true,\n  \"extension\": [\".js\"],\n  \"file\": [\"test/runner.js\"]\n}\n"
  },
  {
    "path": ".npmignore",
    "content": "node_modules\ntest\n.github\nCHANGELOG.md\n.mocharc.json\n.editorconfig\n.npmignore\n.gitignore\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n\n## 1.2.0 - 2022-05-17\n- chore: use github actions as test infra [#350](https://github.com/stylus/nib/pull/350) [@iChenLei](https://github.com/iChenLei)\n- feat: make stylus as peerDependencies [#350](https://github.com/stylus/nib/pull/350) [@iChenLei](https://github.com/iChenLei)\n- feat: use official column-fill property [#344](https://github.com/stylus/nib/pull/344) [@Sija](https://github.com/stylus/nib/pull/344)\n- fix: remove vendor prefix for background-size [#338](https://github.com/stylus/nib/pull/338) [@specious](https://github.com/stylus/nib/pull/338)\n- fix: mute nodejs v14+ warnings [#348](https://github.com/stylus/nib/pull/348) [@AlynxZhou](https://github.com/AlynxZhou)\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2022 iChenLei <chenleicoder@foxmail.com>\nCopyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Nib [![npm](https://img.shields.io/npm/v/nib)](https://www.npmjs.com/package/nib) [![npm](https://img.shields.io/npm/dm/nib.svg?sanitize=true)](https://www.npmjs.com/package/nib)  [![build status](https://github.com/stylus/nib/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/stylus/nib/actions?query=branch%3Amain)\n\n  Stylus mixins, utilities, components, and gradient image generation. Don't forget to check out the [documentation](http://stylus.github.io/nib).\n\n## Installation\n\n```bash\n$ npm install nib\n```\n\n If the image generation features of Nib are desired, such as generating the linear gradient images, install [node-canvas](http://github.com/learnboost/node-canvas):\n\n```bash\n$ npm install canvas\n```\n\n## JavaScript API\n\n Below is an example of how to utilize nib and stylus with the connect framework (or express).\n\n```javascript\nvar connect = require('connect')\n  , stylus = require('stylus')\n  , nib = require('nib');\n\nvar server = connect();\n\nfunction compile(str, path) {\n  return stylus(str)\n\t.set('filename', path)\n\t.set('compress', true)\n\t.use(nib());\n}\n\nserver.use(stylus.middleware({\n\tsrc: __dirname\n  , compile: compile\n}));\n```\n\n## Stylus API\n\n  To gain access to everything nib has to offer, simply add:\n\n  ```css\n  @import 'nib'\n  ```\n\n  Or you may also pick and choose based on the directory structure in `./lib`, for example:\n\n  ```css\n  @import 'nib/gradients'\n  @import 'nib/overflow'\n  @import 'nib/normalize'\n  ```\n\n_To be continued..._\n\n## More Information\n\n  - Introduction [screencast](http://www.screenr.com/M6a)\n\n## Testing\n\n You will first need to install the dependencies:\n\n ```bash\n    $ npm install -d\n ```\n\n Run the automated test cases:\n\n ```bash\n    $ npm test\n ```\n\n For visual testing run the test server:\n\n ```bash\n    $ npm run-script test-server\n ```\n\n Then visit `localhost:3000` in your browser.\n\n## Contributors\n\nI would love more contributors. And if you have helped out, you are awesome! I want to give a huge thanks to these people:\n\n  - [TJ Holowaychuk](https://github.com/tj) (Original Creator)\n  - [Sean Lang](https://github.com/notslang) (Previous Maintainer)\n  - [iChenLei](https://github.com/iChenLei) (Current Maintainer)\n  - [Isaac Johnston](https://github.com/superstructor)\n  - [Everyone Else](https://github.com/tj/nib/contributors)\n"
  },
  {
    "path": "docs/README.md",
    "content": "# Mixins\n## Gradient\nNib's gradient support is by far the largest feature it provides. Not only is the syntax extremely similar to what you would normally write, it's more forgiving, expands to vendor equivalents, and can even produce a PNG for older browsers with [node-canvas](http://github.com/learnboost/node-canvas).\n\n```stylus\nbody\n  background linear-gradient(top, white, black)\n```\n\n```css\nbody {\n  background: -webkit-linear-gradient(top, #fff, #000);\n  background: -moz-linear-gradient(top, #fff, #000);\n  background: -o-linear-gradient(top, #fff, #000);\n  background: -ms-linear-gradient(top, #fff, #000);\n  background: linear-gradient(to bottom, #fff, #000);\n}\n```\n\n![](http://f.cl.ly/items/1q25061X2Q2U0p472L02/Screenshot.png)\n\nAny number of color stops may be provided:\n\n```stylus\nbody\n  background linear-gradient(bottom left, white, red, blue, black)\n```\n\n![](http://f.cl.ly/items/2I0k3D0A2y0n3i443g2W/Screenshot.png)\n\nUnits may be placed before or after the color:\n\n```stylus\nbody\n  background linear-gradient(left, 80% red, #000)\n  background linear-gradient(top, #eee, 90% white, 10% black)\n```\n\n![](http://f.cl.ly/items/2B1U3m0t2T1B420I3C3I/Screenshot.png)\n![](http://f.cl.ly/items/1T1P1x0n1X3k132o3V0F/Screenshot.png)\n\n## Position\n\nThe position mixins `absolute`, `fixed`, and `relative` provide a shorthand variant to what is otherwise three CSS properties. The syntax is as follows:\n\n```\nfixed|absolute|relative: top|bottom [n] left|right [n]\n```\n\nThe following example will default to (0,0):\n\n```stylus\n#back-to-top\n  fixed bottom right\n```\n\n```css\n#back-to-top {\n  position: fixed;\n  bottom: 0;\n  right: 0;\n}\n```\n\nYou may also specify the units:\n\n```stylus\n#back-to-top\n  fixed bottom 10px right 5px\n```\n\n```css\n#back-to-top {\n  position: fixed;\n  bottom: 10px;\n  right: 5px;\n}\n```\n\n## Clearfix\nClearfixing causes containers to expand to contain floated contents. A simple example is shown [here](http://learnlayout.com/clearfix.html).\n\nThe clearfix mixin takes no arguments and expands to a form that provides extremely robust browser support.\n\n```stylus\n.clearfix\n  clearfix()\n```\n\n```css\n.clearfix {\n  zoom: 1;\n}\n.clearfix:before,\n.clearfix:after {\n  content: \"\";\n  display: table;\n}\n.clearfix:after {\n  clear: both;\n}\n```\n\n## Border Radius\nNib's `border-radius` supports both the regular syntax as well as augmenting it to make the value more expressive.\n\n```stylus\nbutton\n  border-radius 1px 2px / 3px 4px\n\n  button\n    border-radius 5px\n\n  button\n    border-radius bottom 10px\n```\n\n```css\nbutton {\n  border-radius: 1px 2px/3px 4px;\n}\nbutton {\n  border-radius: 5px;\n}\nbutton {\n  border-top-left-radius: 10px;\n  border-bottom-right-radius: 10px;\n}\n```\n\n## Responsive Images\nThe `image` mixin allows you to define a `background-image` for both the normal image, and a doubled image for devices with a higher pixel ratio such as retina displays. This works by using a @media query to serve an \"@2x\" version of the file.\n\n```stylus\n#logo\n  image '/images/branding/logo.main.png'\n\n#logo\n  image '/images/branding/logo.main.png' 50px 100px\n```\n\n```css\n#logo {\n  background-image: url(\"/images/branding/logo.main.png\");\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  #logo {\n    background-image: url(\"/images/branding/logo.main@2x.png\");\n    background-size: auto auto;\n  }\n}\n#logo {\n  background-image: url(\"/images/branding/logo.main.png\");\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  #logo {\n    background-image: url(\"/images/branding/logo.main@2x.png\");\n    background-size: 50px 100px;\n  }\n}\n```\n\n## Ellipsis\nThe `overflow` property is augmented with a \"ellipsis\" value, expanding to what you see below.\n\n```stylus\nbutton\n  overflow ellipsis\n```\n\n```css\nbutton {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n```\n\n## Reset\nNib comes bundled with [Eric Meyer's style reset](eric-meyer) and [Nicolas Gallagher's _Normalize_](normalize) support and, you can choose to apply the global or any specifics that you wish. To view the definitions view [`reset.styl`](https://github.com/tj/nib/blob/master/lib/nib/reset.styl).\n\n[eric-meyer]: http://meyerweb.com/eric/tools/css/reset/\n[normalize]: https://github.com/necolas/normalize.css\n\n> CSS Reset\n\n- `global-reset()`\n- `nested-reset()`\n- `reset-font()`\n- `reset-box-model()`\n- `reset-body()`\n- `reset-table()`\n- `reset-table-cell()`\n- `reset-html5()`\n\n> Normalize\n\n- `normalize-html5()`\n- `normalize-base()`\n- `normalize-links()`\n- `normalize-text()`\n- `normalize-embed()`\n- `normalize-groups()`\n- `normalize-forms()`\n- `normalize-tables()`\n- `normalize-css()`\n\n[Read more][normalize-about] about Normalize or see the original CSS [here][normalize-css].\n\n[normalize-about]: http://nicolasgallagher.com/about-normalize-css/\n[normalize-css]: https://github.com/necolas/normalize.css/blob/master/normalize.css\n\n## Border\nThis shorthand lets you create a border by just specifying a color, with defaults for width and style.\n\n```stylus\n.foo\n  border red\n```\n\n```css\n.foo {\n  border: 1px solid red;\n}\n```\n\n## Shadow Stroke\nCreates a text outline using text-shadow.\n\n```stylus\n.foo\n  shadow-stroke(red)\n```\n\n```css\n.foo {\n  text-shadow: -1px -1px 0 red, 1px -1px 0 red, -1px 1px 0 red, 1px 1px 0 red;\n}\n```\n\n## Size\nThis shorthand lets you set width and height in one go.\n\n```stylus\n.foo\n  size 5em 10em\n```\n\n```css\n.foo {\n  width: 5em;\n  height: 10em;\n}\n```\n\n## Transparent Mixins\nThese mixins expand vendor prefixes but do not modify the behavior of the property.\n\nFor example:\n\n```stylus\n*\n  box-sizing border-box\n```\n\n```css\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n```\n\nHere is the full list of properties for which Nib provides transparent mixins:\n\n- box-shadow\n- radial-gradient\n- user-select\n- column-count\n- column-gap\n- column-rule\n- column-rule-color\n- column-rule-width\n- column-rule-style\n- column-width\n- transform\n- border-image\n- transition\n- transition-property\n- transition-duration\n- transition-timing-function\n- transition-delay\n- backface-visibility\n- opacity\n- box-sizing\n- box-orient\n- box-flex\n- box-flex-group\n- box-align\n- box-pack\n- box-direction\n- animation\n- animation-name\n- animation-duration\n- animation-delay\n- animation-direction\n- animation-iteration-count\n- animation-timing-function\n- animation-play-state\n- animation-fill-mode\n- hyphens\n- appearance\n\n# Aliases\nThese aliases are provided purely for convenience.\n\nofficial    | aliases\n----------- | ----------\nnowrap      | no-wrap  \nwhite-space | whitespace\n"
  },
  {
    "path": "iconic/demo.html",
    "content": "<html>\n<head>\n<link rel=\"stylesheet\" href=\"iconic.css\" type=\"text/css\" media=\"screen\" title=\"no title\" charset=\"utf-8\">\n\n<style>\n\tbody {\n\t\tfont-size:21px;\n\t}\n</style>\n</head>\n<body>\n<ul>\n<li><a name='home' class='iconic home'></a> Home</li>\n<li><a name='at' class='iconic at'></a> At Symbol</li>\n<li><a name='quote' class='iconic quote'></a> Quote</li>\n<li><a name='quote-alt' class='iconic quote-alt'></a> Quote (alternate)</li>\n<li><a name='arrow-up' class='iconic arrow-up'></a> Arrow Up</li>\n<li><a name='arrow-right' class='iconic arrow-right'></a> Arrow Right</li>\n<li><a name='arrow-bottom' class='iconic arrow-bottom'></a> Arrow Bottom</li>\n<li><a name='arrow-left' class='iconic arrow-left'></a> Arrow Left</li>\n<li><a name='arrow-up-alt' class='iconic arrow-up-alt'></a> Arrow Up (alternate)</li>\n<li><a name='arrow-right-alt' class='iconic arrow-right-alt'></a> Arrow Right (alternate)</li>\n<li><a name='arrow-bottom-alt' class='iconic arrow-bottom-alt'></a> Arrow Bottom (alternate)</li>\n<li><a name='arrow-left-alt' class='iconic arrow-left-alt'></a> Arrow Left (alternate)</li>\n<li><a name='move' class='iconic move'></a> Move</li>\n<li><a name='move-vertical' class='iconic move-vertical'></a> Move Vertical</li>\n<li><a name='move-horizontal' class='iconic move-horizontal'></a> Move Horizontal</li>\n<li><a name='move-alt' class='iconic move-alt'></a> Move (alternate)</li>\n<li><a name='move-vertical-alt' class='iconic move-vertical-alt'></a> Move Vertical (alternate)</li>\n<li><a name='move-horizontal-alt' class='iconic move-horizontal-alt'></a> Move Horizontal (alternate)</li>\n<li><a name='cursor' class='iconic cursor'></a> Cursor</li>\n<li><a name='plus' class='iconic plus'></a> Plus</li>\n<li><a name='plus-alt' class='iconic plus-alt'></a> Plus (alternate)</li>\n<li><a name='minus' class='iconic minus'></a> Minus</li>\n<li><a name='minus-alt' class='iconic minus-alt'></a> Minus (alternate)</li>\n<li><a name='new-window' class='iconic new-window'></a> New Window</li>\n<li><a name='dial' class='iconic dial'></a> Dial</li>\n<li><a name='lightbulb' class='iconic lightbulb'></a> Lightbulb</li>\n<li><a name='link' class='iconic link'></a> Link</li>\n<li><a name='image' class='iconic image'></a> Image</li>\n<li><a name='article' class='iconic article'></a> Article</li>\n<li><a name='read-more' class='iconic read-more'></a> Read More</li>\n<li><a name='headphones' class='iconic headphones'></a> Headphones</li>\n<li><a name='equalizer' class='iconic equalizer'></a> Equalizer</li>\n<li><a name='fullscreen' class='iconic fullscreen'></a> Fullscreen</li>\n<li><a name='exit-fullscreen' class='iconic exit-fullscreen'></a> Exit Fullscreen</li>\n<li><a name='spin' class='iconic spin'></a> Spin</li>\n<li><a name='spin-alt' class='iconic spin-alt'></a> Spin (alternate)</li>\n<li><a name='moon' class='iconic moon'></a> Moon</li>\n<li><a name='sun' class='iconic sun'></a> Sun</li>\n<li><a name='map-pin' class='iconic map-pin'></a> Map Pin</li>\n<li><a name='pin' class='iconic pin'></a> Pin</li>\n<li><a name='eyedropper' class='iconic eyedropper'></a> Eyedropper</li>\n<li><a name='denied' class='iconic denied'></a> Denied</li>\n<li><a name='calendar' class='iconic calendar'></a> Calendar</li>\n<li><a name='calendar-alt' class='iconic calendar-alt'></a> Calendar (alternate)</li>\n<li><a name='bolt' class='iconic bolt'></a> Bolt</li>\n<li><a name='clock' class='iconic clock'></a> Clock</li>\n<li><a name='document' class='iconic document'></a> Document</li>\n<li><a name='book' class='iconic book'></a> Book</li>\n<li><a name='book-alt' class='iconic book-alt'></a> Book (alternate)</li>\n<li><a name='magnifying-glass' class='iconic magnifying-glass'></a> Magnifying Glass</li>\n<li><a name='tag' class='iconic tag'></a> Tag</li>\n<li><a name='heart' class='iconic heart'></a> Heart</li>\n<li><a name='info' class='iconic info'></a> Info</li>\n<li><a name='chat' class='iconic chat'></a> Chat</li>\n<li><a name='chat-alt' class='iconic chat-alt'></a> Chat (alternate)</li>\n<li><a name='key' class='iconic key'></a> Key</li>\n<li><a name='unlocked' class='iconic unlocked'></a> Unlocked</li>\n<li><a name='locked' class='iconic locked'></a> Locked</li>\n<li><a name='mail' class='iconic mail'></a> Mail</li>\n<li><a name='mail' class='iconic mail-alt'></a> Mail (alternate)</li>\n<li><a name='phone' class='iconic phone'></a> Phone</li>\n<li><a name='box' class='iconic box'></a> Box</li>\n<li><a name='pencil' class='iconic pencil'></a> Pencil</li>\n<li><a name='pencil-alt' class='iconic pencil-alt'></a> Pencil (alternate)</li>\n<li><a name='comment' class='iconic comment'></a> Comment</li>\n<li><a name='comment' class='iconic comment-alt'></a> Comment (alternate)</li>\n<li><a name='rss' class='iconic rss'></a> RSS</li>\n<li><a name='star' class='iconic star'></a> Star</li>\n<li><a name='trash' class='iconic trash'></a> Trash</li>\n<li><a name='user' class='iconic user'></a> User</li>\n<li><a name='volume' class='iconic volume'></a> Volume</li>\n<li><a name='mute' class='iconic mute'></a> Mute</li>\n<li><a name='cog' class='iconic cog'></a> Cog</li>\n<li><a name='cog-alt' class='iconic cog-alt'></a> Cog (alternate)</li>\n<li><a name='x' class='iconic x'></a> X</li>\n<li><a name='x' class='iconic x-alt'></a> X (alternate)</li>\n<li><a name='check' class='iconic check'></a> Check</li>\n<li><a name='check-alt' class='iconic check-alt'></a> Check (alternate)</li>\n<li><a name='beaker' class='iconic beaker'></a> Beaker</li>\n<li><a name='beaker-alt' class='iconic beaker-alt'></a> Beaker (alternate)</li>\n</ul>\n</body>\n</html>\n"
  },
  {
    "path": "index.styl",
    "content": "@import 'lib/nib/'\n"
  },
  {
    "path": "lib/nib/border-radius.styl",
    "content": "/*\n * Helper for border-radius().\n */\n\n-apply-border-radius(pos, importance)\n  if length(pos) == 3\n    // border-radius: <top | bottom> <left | right> <n>\n    y = pos[0]\n    x = pos[1]\n    // We don't use vendor for boder-radius anymore\n    // vendor('border-radius-%s%s' % pos, pos[2], only: webkit official)\n    {'border-%s-%s-radius' % pos}: pos[2] importance\n  else if pos[0] in (top bottom)\n    // border-radius: <top | bottom> <n>\n    -apply-border-radius(pos[0] left pos[1], importance)\n    -apply-border-radius(pos[0] right pos[1], importance)\n  else if pos[0] in (left right)\n    // border-radius: <left | right> <n>\n    unshift(pos, top);\n    -apply-border-radius(pos, importance)\n    pos[0] = bottom\n    -apply-border-radius(pos, importance)\n\n/*\n * border-radius supporting augmented behavior.\n *\n * Examples:\n *\n *    border-radius: 2px 5px\n *    border-radius: top 5px bottom 10px\n *    border-radius: left 5px\n *    border-radius: top left 5px\n *    border-radius: top left 10px bottom right 5px\n *    border-radius: top left 10px, bottom right 5px\n *\n */\n\nborder-radius()\n  pos = ()\n  augmented = false\n  importance = arguments[length(arguments) - 1] == !important ? !important : unquote('')\n\n  for args in arguments\n    for arg in args\n      if arg is a 'ident'\n        append(pos, arg)\n        augmented = true\n      else\n        append(pos, arg)\n        if augmented\n          -apply-border-radius(pos, importance)\n          pos = ()\n  border-radius pos unless augmented\n"
  },
  {
    "path": "lib/nib/border.styl",
    "content": "/*\n * border: <color>\n * border: ...\n */\n\nborder(color, args...)\n  if color is a 'color'\n    border: 1px solid color args\n  else\n    border: arguments\n"
  },
  {
    "path": "lib/nib/clearfix.styl",
    "content": "/*\n * The Magnificent Micro Clearfix\n *\n * Useful for clearing floats without structural markup.\n * Prevents margin-collapsing on child elements in most cases.\n *\n * Known issues:\n *\n * 1. For IE 6/7 when applied to an element that contains only left-floated\n *    children the bottom margin on child elements will be collapsed.\n *\n * 2. For Firefox versions prior to 3.5 when applied to the first child element\n *    of body, and the element does not have non-zero padding, extra space will\n *    appear between the body and the first child.\n *\n * See http://nicolasgallagher.com/micro-clearfix-hack/\n * and http://j.mp/bestclearfix\n *\n */\n\nclearfix()\n  &:before\n  &:after\n    content: \"\"\n    display: table\n  &:after\n    clear: both\n  zoom: 1 if support-for-ie\n"
  },
  {
    "path": "lib/nib/color-image.styl",
    "content": "color-image(color)\n  error('node-canvas is required for color-image()') unless has-canvas\n  colorImage = create-color-image(color)\n  'url(%s)' % color-data-uri(colorImage)\n"
  },
  {
    "path": "lib/nib/config.styl",
    "content": "/*\n * Support for ie defaulting to true.\n */\n\nsupport-for-ie ?= true\n\n/*\n * Default vendor prefixes.\n */\n\nvendor-prefixes ?= webkit moz o ms official\n"
  },
  {
    "path": "lib/nib/flex.styl",
    "content": "/*\n * Vendor \"display: flex\" support with fallback to obsolete versions.\n */\n\nflex-version ?= box flex\n\n//\n// 1. Display values\n//    - http://www.w3.org/TR/css3-flexbox/#flex-containers\n//\ndisplay(type, args...)\n  if flex == type || inline-flex == type\n    if box in flex-version\n      if flex == type\n        display: -ms-flexbox args\n        display: vendor-value(box args, only: moz webkit)\n      else\n        display: -ms-inline-flexbox args\n        display: vendor-value(inline-box args, only: moz webkit)\n    if flex in flex-version\n      display: vendor-value(arguments, only: webkit official) // overwrites old webkit\n  else\n    display: arguments\n\n/*\n * New syntax for browsers like Google Chrome.\n * Plus a translation to the old syntax, if possible.\n */\n\n\n//\n// 5. Ordering and Orientation\n//    - http://www.w3.org/TR/css3-flexbox/#ordering-and-orientation\n//\n-flex-obsolete-direction(direction)\n  if box in flex-version\n    if row-reverse == direction || column-reverse == direction\n      vendor('box-direction', reverse, ignore: ms official)\n\n    if row == direction || row-reverse == direction\n      vendor('box-orient', horizontal, ignore: ms official)\n    else if column == direction || column-reverse == direction\n      vendor('box-orient', vertical, ignore: ms official)\n\n-flex-obsolete-wrap(value)\n  if box in flex-version\n    // WARN: wrap-reverse does not have a box equivalent. This will render in different manners\n    //    on box vs. flex values.\n    if 'wrap' == value || wrap-reverse == value\n      vendor('box-lines', multiple, ignore: ms official)\n    else if nowrap == value\n      vendor('box-lines', single, ignore: ms official)\n\nflex-direction(direction)\n  // obsolete\n  -flex-obsolete-direction(direction)\n\n  // new\n  if flex in flex-version\n    vendor('flex-direction', arguments, only: webkit ms official)\n\nflex-wrap(value)\n  // obsolete\n  -flex-obsolete-wrap(value)\n\n  if flex in flex-version\n    vendor('flex-wrap', arguments, only: webkit ms official)\n\nflex-flow()\n  // obsolete\n  -flex-obsolete-direction(arguments[0])\n  -flex-obsolete-direction(arguments[1])\n  -flex-obsolete-wrap(arguments[0])\n  -flex-obsolete-wrap(arguments[1])\n\n  // new\n  if flex in flex-version\n    vendor('flex-flow', arguments, only: webkit ms official)\n\n\norder()\n  // obsolete\n  if box in flex-version\n    vendor('box-ordinal-group', arguments, ignore: ms official)\n\n  // new\n  if flex in flex-version\n    vendor('flex-order', arguments, only: ms)\n    vendor('order', arguments, only: webkit official)\n\n\n//\n// 7. Flexibility\n//    - http://www.w3.org/TR/css3-flexbox/#flexibility\n//\nflex-grow(growth)\n  // obsolete\n  if box in flex-version\n    vendor('box-flex', growth)\n\n  // new\n  if flex in flex-version\n    vendor('flex-grow', arguments, only: webkit official)\n\nflex-basis()\n  if flex in flex-version\n    vendor('flex-basis', arguments, only: webkit official)\n\nflex-shrink()\n  if flex in flex-version\n    vendor('flex-shrink', arguments, only: webkit official)\n\nflex(growth)\n\n  // obsolete\n  if box in flex-version\n    shrink = 1\n\n    if none == growth || initial == growth\n      // Well known values\n      shrink = 0 if none == growth\n      growth = 0\n    else if is-width(growth) == true\n      // Basis is defined as the first parameter\n      growth = arguments[1] || 0\n      shrink = arguments[2] if 3 <= length(arguments)\n    else if arguments[1] && is-width(arguments[1]) == false\n      // Growth is first and shrink is second\n      shrink = arguments[1]\n\n    // Since we can't make the distinction between growing and shrinking in the box model, take\n    // the one that provides the most flexibility.\n    vendor('box-flex', max(growth, shrink), ignore: ms)\n\n  // new\n  if flex in flex-version\n    vendor('flex', arguments, only: webkit ms official)\n\n\n// converts the justification alignment\n-convert-justify(align)\n  if flex-start == align\n    return start\n  else if flex-end == align\n    return end\n  else if space-around == align\n    return distribute\n  else if space-between == align\n    return justify\n  else\n    return align\n\n//\n// 8. Alignment\n//    - http://www.w3.org/TR/css3-flexbox/#alignment\n//\njustify-content(align)\n  // obsolete\n  if box in flex-version\n    vendor('box-pack', -convert-justify(align), ignore: ms official)\n\n  // new\n  if flex in flex-version\n    vendor('flex-pack', -convert-justify(align), only: ms)\n    vendor('justify-content', align, only: webkit official)\n\nalign-content(align)\n  // WARN: Obsolete spec does not allow for adjustment here\n  if flex in flex-version\n    vendor('flex-line-pack', -convert-justify(align), only: ms)\n    vendor('align-content', align, only: webkit official)\n\n// converts alignment from 'flex' to normal value\n-convert-alignment(align)\n  if flex-start == align\n    return start\n  else if flex-end == align\n    return end\n  else\n    return align\n\nalign-items(align)\n  // obsolete\n  if box in flex-version\n    vendor('box-align', -convert-alignment(align), ignore: ms official)\n\n  // new\n  if flex in flex-version\n    vendor('flex-align', -convert-alignment(align), only: ms)\n    vendor('align-items', arguments, only: webkit official)\n\nalign-self(align)\n  // WARN: Obsolete spec does not allow for overriding alignment on individual items.\n  if flex in flex-version\n    vendor('align-self', align, only: webkit official)\n    vendor('flex-item-align', -convert-alignment(align), only: ms)\n"
  },
  {
    "path": "lib/nib/gradients.styl",
    "content": "@import 'config'\n\n/*\n * Implicit color stop position.\n */\n\npos-in-stops(i, stops)\n  len = length(stops)\n  if len - 1 == i\n    100%\n  else if i\n    unit(i / len * 100, '%')\n  else\n    0\n\n/*\n * Normalize color stops:\n *\n *   - (color pos) -> (pos color)\n *   - (color) -> (implied-pos color)\n *\n */\n\nnormalize-stops(stops)\n  stops = clone(stops)\n  for stop, i in stops\n    if length(stop) == 1\n      color = stop[0]\n      stop[0] = pos-in-stops(i, stops)\n      stop[1] = color\n    else if typeof(stop[1]) == 'unit'\n      pos = stop[1]\n      stop[1] = stop[0]\n      stop[0] = pos\n  stops\n\n/*\n * Join color stops with the given translation function.\n */\n\njoin-stops(stops, translate)\n  str = ''\n  len = length(stops)\n  for stop, i in stops\n    str += ', ' if i\n    pos = stop[0]\n    color = stop[1]\n    str += translate(color, pos)\n  unquote(str)\n\n/*\n * Standard color stop.\n */\n\nstd-stop(color, pos)\n  '%s %s' % (color pos)\n\n/*\n * Create a linear gradient with the given start position\n * and variable number of color stops.\n *\n * Examples:\n *\n *    background: linear-gradient(top, red, green, blue)\n *    background: linear-gradient(bottom, red, green 50%, blue)\n *    background: linear-gradient(bottom, red, 50% green, blue)\n *    background: linear-gradient(bottom, red, 50% green, 90% white, blue)\n *\n */\n\nlinear-gradient(start, stops...)\n  error('color stops required') unless length(stops)\n\n  unquote('linear-gradient(' + join(', ',arguments) + ')')\n\n/*\n * Create a linear gradient image with the given start position\n * and variable number of color stops.\n */\n\nlinear-gradient-image(start, stops...)\n  error('node-canvas is required for linear-gradient-image()') unless has-canvas\n  stops = stops[0] if length(stops) == 1\n  error('gradient image size required') unless start[0] is a 'unit'\n  size = start[0]\n  start = start[1] or 'top'\n  grad = create-gradient-image(size, start)\n  stops = normalize-stops(stops)\n  add-color-stop(grad, stop[0], stop[1]) for stop in stops\n  'url(%s)' % gradient-data-uri(grad)\n"
  },
  {
    "path": "lib/nib/iconic.styl",
    "content": "iconic-stroke(path)\n  @font-face\n    font-family: 'IconicStroke'\n    src: url(path + '/iconic_stroke.eot')\n    src: local('☺'), url(path + '/iconic_stroke.ttf') format('truetype'), url(path + '/iconic_stroke.svg#iconic') format('svg')\n    font-weight: normal\n    font-style: normal\n"
  },
  {
    "path": "lib/nib/image.styl",
    "content": "/*\n * Define background-image as `path` with optional width and height, adding an\n * @2x variant.\n *\n * affected by github.com/LearnBoost/stylus/issues/1050 and\n * github.com/LearnBoost/stylus/issues/1038 ... refactor when those are closed\n */\n\nimage(path, w = auto, h = auto, min_pixel_ratio = 1.5)\n  background-image: url(path)\n\n  s = 'all and (-webkit-min-device-pixel-ratio:' + min_pixel_ratio + '),'\n  s = s + '(min--moz-device-pixel-ratio:' + min_pixel_ratio + '),'\n  s = s + '(-o-min-device-pixel-ratio:' + min_pixel_ratio + '/1),'\n  s = s + '(min-device-pixel-ratio:' + min_pixel_ratio + '),'\n  s = s + '(min-resolution:' + unit(min_pixel_ratio*92, dpi) + '),'\n  s = s + '(min-resolution:' + unit(min_pixel_ratio, dppx) + ')'\n\n  @media s\n    ext = extname(path)\n    path = pathjoin(dirname(path), basename(path, ext) + '@2x' + ext)\n    background-image: url(path)\n    if w in (cover contain) and h == auto\n        h = null\n    background-size: w h\n"
  },
  {
    "path": "lib/nib/index.styl",
    "content": "@import 'border'\n@import 'border-radius'\n@import 'clearfix'\n@import 'color-image'\n@import 'flex'\n@import 'gradients'\n@import 'iconic'\n@import 'image'\n@import 'normalize'\n@import 'overflow'\n@import 'positions'\n@import 'reset'\n@import 'text'\n@import 'vendor'\n@import 'size'\n"
  },
  {
    "path": "lib/nib/normalize/base.styl",
    "content": "// Based in Nicolas Gallagher's git.io/normalize\nnormalize-base()\n  html // Prevent iOS text size adjust after orientation change.\n    font-family sans-serif\n    -ms-text-size-adjust 100%\n    -webkit-text-size-adjust 100%\n  body\n    margin 0\n"
  },
  {
    "path": "lib/nib/normalize/embed.styl",
    "content": "// Based in Nicolas Gallagher's git.io/normalize\nnormalize-embed()\n  img // No border when inside `a` in IE 8~10.\n    border 0\n\n  svg:not(:root) // Overflow should be hidden in IE 9~11.\n    overflow hidden\n"
  },
  {
    "path": "lib/nib/normalize/forms.styl",
    "content": "// Based in Nicolas Gallagher's git.io/normalize\nnormalize-forms()\n  // Known limitation: Chrome and Safari on OS X allow very limited\n  // styling of `select`, unless a `border` property is set.\n  button, input, optgroup, select, textarea\n    color  inherit // Correct color not being inherited.\n    font   inherit // Correct font properties not being inherited.\n    margin 0 // Fix margins in FF 4+, Safari, and Chrome.\n\n  button // Fix `overflow` set to `hidden` in IE 8/9/10/11.\n    overflow visible\n\n  button, select // Consistent text-transform across browsers.\n    text-transform none\n\n  // Fix WebKit bug in Android 4.0, inability to style clickable `input` in\n  // iOS and improve usability and consistency of cursor style.\n  button, html input[type='button'], input[type='reset'], input[type='submit']\n    cursor pointer\n    -webkit-appearance button\n\n  // Reset default cursor for disabled elements.\n  button[disabled], html input[disabled]\n    cursor default\n\n  // Remove inner padding and border in FF 4+.\n  button::-moz-focus-inner, input::-moz-focus-inner\n    border  0\n    padding 0\n\n  input // Reset line-height again FF 4+ UA stylsheet.\n    line-height normal\n\n  // Fix box sizing and excess padding in IE 8~10\n  input[type='checkbox'], input[type='radio']\n    box-sizing border-box\n    padding    0\n\n  // Fix the cursor style for Chrome's increment/decrement buttons.\n  input[type='number']::-webkit-inner-spin-button,\n  input[type='number']::-webkit-outer-spin-button\n    height auto\n\n  // Consistent appearance and box-sizing in Safari and Chrome.\n  input[type='search']\n    -webkit-appearance  textfield\n    -moz-box-sizing     content-box\n    -webkit-box-sizing  content-box\n    box-sizing          content-box\n\n  // No inner padding and search cancel button in Safari and Chrome on OS X.\n  input[type='search']::-webkit-search-cancel-button,\n  input[type='search']::-webkit-search-decoration\n    -webkit-appearance none\n\n  fieldset // Consistent border, margin, and padding.\n    border  1px solid #c0c0c0\n    margin  0 2px\n    padding 0.35em 0.625em 0.75em\n\n  legend // Hack to correct `color` not being inherited in IE 8/9/10/11.\n    border  0\n    padding 0\n\n  textarea // Remove default vertical scrollbar in IE 8~11.\n    overflow auto\n\n  optgroup // Don't inherit the `font-weight` applied above.\n    font-weight bold\n"
  },
  {
    "path": "lib/nib/normalize/groups.styl",
    "content": "// Based in Nicolas Gallagher's git.io/normalize\nnormalize-groups()\n  figure // Margin should exist in IE 8~9 / Safari.\n    margin 1em 40px\n\n  hr // Consistency between FF and others.\n    -moz-box-sizing content-box\n    box-sizing      content-box\n    height          0\n\n  pre // Contain overflow and wrap words.\n    overflow auto\n\n  // Hack to fix odd `em`-unit font size rendering in all browsers.\n  code, kbd, pre, samp\n    font-family monospace, monospace\n    font-size   1em\n"
  },
  {
    "path": "lib/nib/normalize/html5.styl",
    "content": "// Based in Nicolas Gallagher's git.io/normalize\nnormalize-html5()\n  // `block` display for HTML5 elements in IE 8~11 and FF.\n  article, details, section, summary,\n  aside, main, menu, nav, figcaption,\n  figure, footer, header, hgroup\n    display block\n\n  audio, canvas, progress, video\n    display inline-block // Set `inline-block` not defined in IE 8~9.\n    vertical-align  baseline // Fix v-align of `progress` in Chrome, FF, and O.\n\n  audio:not([controls])\n      display none // Prevent displaying `audio` without controls.\n      height  0 // Remove excess height in iOS 5 devices.\n\n  [hidden], // Address `[hidden]` styling not present in IE 8~10.\n  template  // Hide the `template` element in IE 8~11, Safari, and FF < 22.\n    display none\n"
  },
  {
    "path": "lib/nib/normalize/index.styl",
    "content": "// Based in Nicolas Gallagher's git.io/normalize\n@import './base'\n@import './html5'\n@import './links'\n@import './text'\n@import './embed'\n@import './groups'\n@import './forms'\n@import './tables'\n\nnormalize-css()\n  normalize-base()\n  normalize-html5()\n  normalize-links()\n  normalize-text()\n  normalize-embed()\n  normalize-groups()\n  normalize-forms()\n  normalize-tables()\n"
  },
  {
    "path": "lib/nib/normalize/links.styl",
    "content": "// Based in Nicolas Gallagher's git.io/normalize\nnormalize-links()\n  a // No gray bg color in active links in IE 10.\n    background-color transparent\n    &:active, &:hover\n      outline 0 // + readability when focused.\n"
  },
  {
    "path": "lib/nib/normalize/tables.styl",
    "content": "// Based in Nicolas Gallagher's git.io/normalize\nnormalize-tables()\n  table // Remove most spacing between table cells.\n    border-collapse collapse\n    border-spacing  0\n  td, th\n    padding 0\n"
  },
  {
    "path": "lib/nib/normalize/text.styl",
    "content": "// Based in Nicolas Gallagher's git.io/normalize\nnormalize-text()\n  abbr[title] // + style not present in IE 8~11, Safari, and Chrome.\n    border-bottom 1px dotted\n\n  dfn // + style not present in Safari and Chrome.\n    font-style italic\n\n  mark // + style not present in IE 8/9.\n    background #ff0; color #000\n\n  b, strong // Fix `font-weight: bolder` in FF 4+, Safari, and Chrome.\n    font-weight bold\n\n  h1 // `h1` inside `section` and `article` fix for FF 4+, Safari & Chrome.\n    font-size 2em\n    margin    0.67em 0\n\n  small // Consistent font-size across browsers.\n    font-size 80%\n\n  sub, sup // Prevent `sub` and `sup` affecting `line-height`.\n    font-size       75%\n    line-height     0\n    position        relative\n    vertical-align  baseline\n  sup\n    top -0.5em\n  sub\n    bottom  -0.25em\n"
  },
  {
    "path": "lib/nib/overflow.styl",
    "content": "/*\n * Overflow utility. Maps to regular overflow, and adds an ellipsis value.\n *\n * Synopsis:\n *\n *   overflow: <type>\n *\n * Examples:\n *\n *     overflow: auto\n *     overflow: hidden\n *     overflow: ellipsis\n *\n */\n\noverflow()\n  if arguments[0] == ellipsis\n    ellipsis()\n  else\n    overflow: arguments\n"
  },
  {
    "path": "lib/nib/positions.styl",
    "content": "// helper\n\n-pos(type, args)\n  i = 0\n  position: unquote(type)\n  for j in (1..4)\n    if length(args) > i\n      {args[i]}: args[i + 1] is a 'unit' ? args[i += 1] : 0\n    i += 1\n\n/*\n * Position utility.\n *\n * Synopsis:\n *\n *   fixed: <pos> [n] <pos> [n]\n *\n * Examples:\n *\n *     fixed: top left\n *     fixed: top 5px left\n *     fixed: top left 5px\n *     fixed: top 5px left 5px\n *\n */\n\nfixed()\n  -pos('fixed', arguments)\n\n/*\n * Position utility.\n *\n * Synopsis:\n *\n *   absolute: <pos> [n] <pos> [n]\n *\n * Examples:\n *\n *     absolute: top left\n *     absolute: top 5px left\n *     absolute: top left 5px\n *     absolute: top 5px left 5px\n *\n */\n\nabsolute()\n  -pos('absolute', arguments)\n\n/*\n * Position utility.\n *\n * Synopsis:\n *\n *   relative: <pos> [n] <pos> [n]\n *\n * Examples:\n *\n *     relative: top left\n *     relative: top 5px left\n *     relative: top left 5px\n *     relative: top 5px left 5px\n *\n */\n\nrelative()\n  -pos('relative', arguments)\n"
  },
  {
    "path": "lib/nib/reset.styl",
    "content": "// Based on [Eric Meyer's reset](http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/)\n\nglobal-reset()\n  html, body, div, span, applet, object, iframe,\n  h1, h2, h3, h4, h5, h6, p, blockquote, pre,\n  a, abbr, acronym, address, big, cite, code,\n  del, dfn, em, img, ins, kbd, q, s, samp,\n  small, strike, strong, sub, sup, tt, var,\n  dl, dt, dd, ol, ul, li,\n  fieldset, form, label, legend,\n  table, caption, tbody, tfoot, thead, tr, th, td\n    reset-box-model()\n    reset-font()\n  body\n    reset-body()\n  ol, ul\n    list-style: none\n  table\n    reset-table()\n  caption, th, td\n    reset-table-cell()\n  a img\n    border: none\n\nnested-reset()\n  div, span, object, iframe, h1, h2, h3, h4, h5, h6, p,\n  pre, a, abbr, acronym, address, code, del, dfn, em, img,\n  dl, dt, dd, ol, ul, li, fieldset, form, label,\n  legend, caption, tbody, tfoot, thead, tr\n    reset-box-model()\n    reset-font()\n  table\n    reset-table()\n  caption, th, td\n    reset-table-cell()\n  a img\n    border: none\n\nreset-box-model()\n  margin: 0\n  padding: 0\n  border: 0\n  outline: 0\n\nreset-font()\n  font-weight: inherit\n  font-style: inherit\n  font-family: inherit\n  font-size: 100%\n  vertical-align: baseline\n\nreset-body()\n  line-height: 1\n  color: black\n  background: white\n\nreset-table()\n  border-collapse: separate\n  border-spacing: 0\n  vertical-align: middle\n\nreset-table-cell()\n  text-align: left\n  font-weight: normal\n  vertical-align: middle\n\nreset-html5()\n  article, aside, canvas, details, figcaption,\n  figure, footer, header, hgroup, menu, nav,\n  section, summary, main\n    reset-box-model()\n    display: block\n  audio, canvas, video\n    display inline-block\n    *display inline\n    *zoom 1\n  audio:not([controls]),[hidden]\n    display none\n"
  },
  {
    "path": "lib/nib/size.styl",
    "content": "/*\n * Size utility.\n *\n * Synopsis:\n *\n *   size: <width> <height> | <width & height>\n *\n * Examples:\n *\n *     size: 100% 30px\n *       yields:\n *         width: 100%\n *         height: 30px\n *\n *     size: 5px\n *       yields:\n *         width: 5px\n *         height: 5px\n *\n */\n\nsize()\n  if length(arguments) == 1\n    width: arguments[0]\n    height: arguments[0]\n  else\n    width: arguments[0]\n    height: arguments[1]\n"
  },
  {
    "path": "lib/nib/text/aliases.styl",
    "content": "/*\n * Alias of \"nowrap\".\n */\n\nno-wrap = unquote('nowrap')\n\n/*\n * Alias of \"white-space\".\n */\n\nwhitespace()\n  white-space: arguments\n"
  },
  {
    "path": "lib/nib/text/ellipsis.styl",
    "content": "/*\n * Ellipsis with wrapping disabled by default.\n */\n\nellipsis(no-wrap = true)\n  if no-wrap\n    white-space: nowrap\n  overflow: hidden\n  text-overflow: ellipsis\n"
  },
  {
    "path": "lib/nib/text/hide-text.styl",
    "content": "/*\n * Hide text.\n */\n\nhide-text()\n  text-indent: 101%\n  white-space: nowrap\n  overflow: hidden\n"
  },
  {
    "path": "lib/nib/text/index.styl",
    "content": "@import './aliases'\n@import './ellipsis'\n@import './hide-text'\n@import './replace-text'\n@import './shadow-stroke'\n"
  },
  {
    "path": "lib/nib/text/replace-text.styl",
    "content": "/*\n * Replace text with an image.\n */\n\nreplace-text(image, x=50%, y=50%)\n  hide-text()\n  background-image image\n  background-repeat no-repeat\n  background-position x y\n"
  },
  {
    "path": "lib/nib/text/shadow-stroke.styl",
    "content": "shadow-stroke(n)\n  text-shadow: -1px -1px 0 n, 1px -1px 0 n, -1px 1px 0 n, 1px 1px 0 n\n"
  },
  {
    "path": "lib/nib/vendor.styl",
    "content": "use('../nodes/vendor-helpers.js')\n@import 'config'\n\n/*\n * Alias \"nowrap\" as \"no-wrap\".\n */\n\nno-wrap = unquote('nowrap')\n\n/*\n * Helper to find out if a given value is a width\n */\n\nis-width(val)\n  if auto == val\n    return true\n  else if val && 'unit' == type(val)\n    // Stylus does not short circuit so we need to perform this as a distinct\n    // operation to prevent errors\n    return '' != unit(val)\n  return false\n\n/*\n * Vendor support for the given prop / arguments, optionally specifying the\n * only prefixes to utilize, or those which should be ignored.\n */\n\nvendor(prop, args, only = null, ignore = null, vendor-property = true)\n  need_normalize = !vendor-property or prop in ('transition' 'transition-property' 'border-image' 'border-image-slice')\n  for prefix in vendor-prefixes\n    unless (only and !(prefix in only)) or (ignore and prefix in ignore)\n      if official == prefix\n        if need_normalize\n          {prop}: normalize(prop,('%s' % args))\n        else\n          {prop}: args\n      else\n        newprop = prop\n        newprop = '-' + prefix + '-' + prop if vendor-property\n\n        if need_normalize\n          {newprop}: normalize(prop,('%s' % args),prefix)\n        else\n          {newprop}: args\n/*\n * Vendorize the given value.\n */\n\nvendor-value(arg, only = null, ignore = null)\n  prop = current-property[0]\n  for prefix in vendor-prefixes\n    unless (only and !(prefix in only)) or (ignore and prefix in ignore) or official == prefix\n      add-property(prop, '-%s-%s' % (prefix arg))\n  arg\n\n/*\n * Vendor \"box-shadow\" support.\n */\n\nbox-shadow()\n  vendor('box-shadow', arguments, only: webkit official)\n\n/*\n * Vendor \"user-select\" support.\n */\n\nuser-select()\n  vendor('user-select', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"column-count\" support.\n */\n\ncolumn-count()\n  vendor('column-count', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-gap\" support.\n */\n\ncolumn-gap()\n  vendor('column-gap', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule\" support.\n */\n\ncolumn-rule()\n  vendor('column-rule', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule-color\" support.\n */\n\ncolumn-rule-color()\n  vendor('column-rule-color', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule-width\" support.\n */\n\ncolumn-rule-width()\n  vendor('column-rule-width', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-rule-style\" support.\n */\n\ncolumn-rule-style()\n  vendor('column-rule-style', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-width\" support.\n */\n\ncolumn-width()\n  vendor('column-width', arguments, only: webkit moz official)\n\n/*\n * Vendor \"column-span\" support.\n */\n\ncolumn-span()\n  vendor('column-span', arguments, only: webkit official)\n\n/*\n * Vendor \"column-fill\" support.\n */\n\ncolumn-fill()\n  vendor('column-fill', arguments, only: moz official)\n\n/*\n * Legacy syntax support for background-clip and background-origin\n */\n\nlegacy-bg-values(property, args)\n  legacy_args = ()\n  importance = unquote('')\n  for subargs in args\n    for arg in subargs\n      if arg in (border-box padding-box content-box)\n        arg = unquote('border')  if arg == border-box\n        arg = unquote('padding') if arg == padding-box\n        arg = unquote('content') if arg == content-box\n      if arg != '!important'\n        push(legacy_args,arg)\n      else\n        importance = !important\n  vendor(property, unquote(join(', ',legacy_args)) importance, only: moz webkit)\n\n/*\n * Vendor \"background-clip\" support.\n */\n\nbackground-clip()\n  if arguments[0] == text\n    vendor('background-clip', arguments, only: webkit)\n  else\n    legacy-bg-values('background-clip', arguments)\n    background-clip: arguments\n\n/*\n * Vendor \"background-origin\" support.\n */\n\nbackground-origin()\n  legacy-bg-values('background-origin', arguments)\n  background-origin: arguments\n\n/*\n * Vendor \"transform\" support.\n */\n\ntransform()\n  vendor('transform', arguments)\n\n/*\n * Vendor \"transform-origin\" support.\n */\ntransform-origin()\n    vendor('transform-origin', arguments)\n\n/*\n * Vendor \"transform-style\" support.\n */\n\ntransform-style()\n  vendor('transform-style', arguments)\n\n/*\n * Vendor \"border-image\" support.\n */\n\nborder-image()\n  vendor('border-image', arguments, only: webkit moz o official)\n\n/*\n * Vendor \"transition\" support.\n */\n\ntransition()\n  vendor('transition', arguments)\n\n/*\n * Vendor \"transition-property\" support.\n */\n\ntransition-property()\n  vendor('transition-property', arguments)\n\n/*\n * Vendor \"transition-duration\" support.\n */\n\ntransition-duration()\n  vendor('transition-duration', arguments)\n\n/*\n * Vendor \"transition-timing-function\" support.\n */\n\ntransition-timing-function()\n  vendor('transition-timing-function', arguments)\n\n/*\n * Vendor \"transition-delay\" support.\n */\n\ntransition-delay()\n  vendor('transition-delay', arguments)\n\n/*\n * Vendor \"backface-visibility\" support.\n */\n\nbackface-visibility()\n  vendor('backface-visibility', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"perspective\" support.\n */\n\nperspective()\n  if mixin\n    vendor('perspective', arguments, only: webkit moz ms official)\n  else\n    'perspective(%s)' % arguments\n\n/*\n * Vendor \"perspective-origin\" support.\n */\n\nperspective-origin()\n  vendor('perspective-origin', arguments, only: webkit moz ms official)\n\n/*\n * Opacity with conditional IE support.\n */\n\nopacity(n, args...)\n  opacity: n args\n  if support-for-ie\n    if n == inherit or n == initial\n      -ms-filter: n args\n      filter: n args\n    else\n      val = round(n * 100)\n      if val == 100\n        -ms-filter: none args\n        filter: none args\n      else\n        -ms-filter: '\"progid:DXImageTransform.Microsoft.Alpha(Opacity=%s)\"' % val args\n        filter: 'alpha(opacity=%s)' % val args\n\n/*\n * Vendor \"text-size-adjust\"\n */\n\ntext-size-adjust()\n  vendor('text-size-adjust', arguments)\n\n/*\n * Alias the \"white-space\" property.\n */\n\nwhitespace()\n  white-space: arguments\n\n/*\n * Vendor \"box-sizing\" support.\n */\n\nbox-sizing()\n  vendor('box-sizing', arguments, only: webkit moz official)\n\n/*\n * Vendor \"box-orient\" support.\n */\n\nbox-orient()\n  vendor('box-orient', arguments, only: webkit moz official)\n\n/*\n * Vendor \"box-flex-group\" support.\n */\n\nbox-flex-group()\n  vendor('box-flex-group', arguments, only: webkit moz official)\n\n/*\n * Vendor \"box-ordinal-group\" support.\n */\n\nbox-ordinal-group()\n  vendor('box-ordinal-group', arguments, only: webkit moz ms official)\n\n\n/*\n * Vendor \"box-align\" support.\n */\n\nbox-align()\n  vendor('box-align', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"box-pack\" support.\n */\n\nbox-pack()\n  vendor('box-pack', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"box-direction\" support.\n */\n\nbox-direction()\n  vendor('box-direction', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"animation\" support.\n */\n\nanimation()\n  vendor('animation', arguments)\n\n\n/*\n * Vendor \"animation-name\" support.\n */\n\nanimation-name()\n  vendor('animation-name', arguments)\n\n/*\n * Vendor \"animation-duration\" support.\n */\n\nanimation-duration()\n  vendor('animation-duration', arguments)\n\n/*\n * Vendor \"animation-delay\" support.\n */\n\nanimation-delay()\n  vendor('animation-delay', arguments)\n\n/*\n * Vendor \"animation-direction\" support.\n */\n\nanimation-direction()\n  vendor('animation-direction', arguments)\n\n/*\n * Vendor \"animation-iteration-count\" support.\n */\n\nanimation-iteration-count()\n  vendor('animation-iteration-count', arguments)\n\n/*\n * Vendor \"animation-timing-function\" support.\n */\n\nanimation-timing-function()\n  vendor('animation-timing-function', arguments)\n\n/*\n * Vendor \"animation-play-state\" support.\n */\n\nanimation-play-state()\n  vendor('animation-play-state', arguments)\n\n/*\n * Vendor \"animation-fill-mode\" support.\n */\n\nanimation-fill-mode()\n  vendor('animation-fill-mode', arguments)\n\n/*\n * Vendor \"hyphens\" support.\n */\n\nhyphens()\n  vendor('hyphens', arguments, only: webkit moz ms official)\n\n/*\n * Vendor \"appearance\" support.\n */\n\nappearance()\n  vendor('appearance', arguments, only: webkit moz official)\n\n/*\n * Vendor \"tab-size\" support.\n */\n\ntab-size()\n  vendor('tab-size', arguments, only: moz o official)\n\n/*\n * Vendor \"overflow-scrolling\" support.\n */\n\noverflow-scrolling()\n  vendor('overflow-scrolling', arguments, only: webkit official)\n\n/*\n * Vendor \"text-overflow\" support, , -o- for opera 9.* - 10.*\n */\n\ntext-overflow()\n  vendor('text-overflow', arguments, only: official o)\n\n/*\n * Vendor \"text-size-adjust\" support.\n */\ntext-size-adjust()\n  vendor('text-size-adjust', arguments, only: official webkit ms)\n\n/*\n * Vendor \"font-smoothing\" support, webkit only.\n */\nfont-smoothing()\n  vendor('font-smoothing', arguments, only: webkit)\n\n\n/**\n * Vendor input-placeholder/placeholder support.\n *\n * Examples:\n *    // Default syntax\n *    body\n *      placeholder(color #333, font-weight normal)\n *\n *    // The comma is important\n *    .placeholder-red\n *      placeholder(color red,)\n *\n *    // We can pass a function\n *    green-placeholder()\n *      color green\n *    .placeholder-green\n *      placeholder(green-placeholder)\n *\n *    // We can pass a hash\n *    textarea\n *      placeholder((font-style italic) (font-weight bold) (padding '4px 10px'))\n */\nplaceholder()\n  for v in ':-webkit-input' '-moz' ':-moz' '-ms-input'\n    &:{v}-placeholder\n      for pair in arguments\n        if typeof(pair) == 'function'\n          pair()\n        else if pair is not null && pair[0] is not null\n          {pair[0]}: type(pair[1]) == 'string' ? s(pair[1]) : pair[1]\ninput-placeholder = placeholder\n\n/*\n * Vendor background support (gradients).\n */\n\nbackground()\n  if match('-gradient\\(', ''+arguments)\n    vendor('background', arguments, vendor-property: false)\n  else\n    background arguments\n\nbackground-image()\n  if match('-gradient\\(', ''+arguments)\n    vendor('background-image', arguments, vendor-property: false)\n  else\n    background-image arguments\n\ncursor()\n  if match('-gradient\\(', ''+arguments)\n    vendor('cursor', arguments, vendor-property: false)\n  else\n    cursor arguments\n\nlist-style()\n  if match('-gradient\\(', ''+arguments)\n    vendor('list-style', arguments, vendor-property: false)\n  else\n    list-style arguments\n\nlist-style-image()\n  if match('-gradient\\(', ''+arguments)\n    vendor('list-style-image', arguments, vendor-property: false)\n  else\n    list-style-image arguments\n"
  },
  {
    "path": "lib/nib.js",
    "content": "/*!\n * nib\n * Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar stylus = require('stylus'),\n    path = require('path'),\n    nodes = stylus.nodes,\n    utils = stylus.utils,\n    Canvas;\n\nexports = module.exports = plugin;\n\n// conditionally expose canvas-based APIs.\n\ntry {\n  Canvas = require('canvas');\n\n  var gradient = require('./nodes/gradient'),\n      colorImage = require('./nodes/color-image');\n} catch (err) {\n  // ignore\n}\n\n/**\n * Library version.\n */\n\nexports.version = require(path.join(__dirname, '../package.json')).version;\n\n/**\n * Stylus path.\n */\n\nexports.path = __dirname;\n\n/**\n * Return the plugin callback for stylus.\n *\n * @return {Function}\n * @api public\n */\n\nfunction plugin() {\n  return function(style){\n    style.include(__dirname);\n\n    if (Canvas) {\n      style.define('has-canvas', nodes.true);\n\n      // gradients\n      style.define('create-gradient-image', gradient.create);\n      style.define('gradient-data-uri', gradient.dataURL);\n      style.define('add-color-stop', gradient.addColorStop);\n\n      // color images\n      style.define('create-color-image', colorImage.create);\n      style.define('color-data-uri', colorImage.dataURL);\n    } else {\n      style.define('has-canvas', nodes.false);\n    }\n  };\n}\n"
  },
  {
    "path": "lib/nodes/color-image.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar stylus = require('stylus'),\n    Canvas = require('canvas'),\n    nodes = stylus.nodes,\n    utils = stylus.utils;\n\n/**\n * Expose `ColorImage`.\n */\n\nexports = module.exports = ColorImage;\n\n/**\n * Create a new `ColorImage` node with the given `color`.\n *\n * @param {Color} color node\n * @return {ColorImage}\n * @api public\n */\n\nexports.create = function(color){\n  utils.assertColor(color);\n  return new ColorImage(color);\n};\n\n/**\n * Return the data URI for `colorImage`.\n *\n * @param {ColorImage} colorImage\n * @return {String}\n * @api public\n */\n\nexports.dataURL = function(colorImage){\n  utils.assertType(colorImage, 'colorimage');\n  return new nodes.String(colorImage.toDataURL());\n};\n\n/**\n * Initialize a new `ColorImage` node with the given arguments.\n *\n * @param {Color} color node\n * @api private\n */\n\nfunction ColorImage(color) {\n  this.color = color;\n  this.canvas = new Canvas(1, 1);\n  this.ctx = this.canvas.getContext('2d');\n  this.ctx.fillStyle = color.toString();\n  this.ctx.fillRect(0, 0, 1, 1);\n}\n\n/**\n * Inherit from `nodes.Node.prototype`.\n */\n\nColorImage.prototype.__proto__ = nodes.Node.prototype;\n\n/**\n * Inspect the color.\n *\n * @return {String}\n * @api private\n */\n\nColorImage.prototype.toString = function(){\n  return 'ColorImage(' + this.color.toString() + ')';\n};\n\n/**\n * Return data URI string.\n *\n * @return {String}\n * @api private\n */\n\nColorImage.prototype.toDataURL = function(){\n  return this.canvas.toDataURL();\n};\n"
  },
  {
    "path": "lib/nodes/gradient.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar stylus = require('stylus'),\n    Canvas = require('canvas'),\n    nodes = stylus.nodes,\n    utils = stylus.utils;\n\n/**\n * Expose `Gradient`.\n */\n\nexports = module.exports = Gradient;\n\n/**\n * Create a new `Gradient` node with the given `size`\n * and `start` position.\n *\n * @param {Number} size\n * @param {String|Ident|Literal} start\n * @return {Gradient}\n * @api public\n */\n\nexports.create = function(size, start){\n  utils.assertType(size, 'unit', 'size');\n  utils.assertString(start, 'start');\n  return new Gradient(size.val, start.string);\n};\n\n/**\n * Add color stop to `grad`.\n *\n * @param {Gradient} grad\n * @param {Unit} pos\n * @param {HSLA|RGBA} color\n * @return {Null}\n * @api public\n */\n\nexports.addColorStop = function(grad, pos, color){\n  utils.assertType(grad, 'gradient', 'grad');\n  utils.assertType(pos, 'unit', 'pos');\n  utils.assertColor(color, 'color');\n  grad.addColorStop(pos.val / 100, color.rgba.toString());\n  return nodes.null;\n};\n\n/**\n * Return the data URI for `grad`.\n *\n * @param {Gradient} grad\n * @return {String}\n * @api public\n */\n\nexports.dataURL = function(grad){\n  utils.assertType(grad, 'gradient');\n  return new nodes.String(grad.toDataURL());\n};\n\n/**\n * Initialize a new `Gradient` node with the given `size`\n * and `start` position.\n *\n * @param {Number} size\n * @param {String} start\n * @api private\n */\n\nfunction Gradient(size, start) {\n  this.size = size;\n  this.canvas = new Canvas(1, 1);\n  this.setStartPosition(start);\n  this.ctx = this.canvas.getContext('2d');\n  this.grad = this.ctx.createLinearGradient(\n      this.from[0], this.from[1],\n      this.to[0], this.to[1]);\n}\n\n/**\n * Inspect the gradient.\n *\n * @return {String}\n * @api private\n */\n\nGradient.prototype.toString = function(){\n  return 'Gradient(' + this.size + 'px ' + this.stops.map(function(stop){\n    return stop[0] + ' ' + stop[1];\n  }).join(', ') + ')';\n};\n\n/**\n * Set `start` position.\n *\n * @param {String} start\n * @api private\n */\n\nGradient.prototype.setStartPosition = function(start){\n  var size = this.size,\n      canvas = this.canvas;\n\n  switch (start) {\n    case 'top':\n      canvas.height = size;\n      this.from = [canvas.width / 2, 0];\n      this.to = [canvas.width / 2, canvas.height];\n      break;\n    case 'bottom':\n      canvas.height = size;\n      this.from = [canvas.width / 2, canvas.height];\n      this.to = [canvas.width / 2, 0];\n      break;\n    case 'left':\n      canvas.width = size;\n      this.from = [0, 0];\n      this.to = [canvas.width, canvas.height];\n      break;\n    case 'right':\n      canvas.width = size;\n      this.from = [canvas.width, canvas.height];\n      this.to = [0, 0];\n      break;\n    default:\n      throw new Error('invalid start position \"' + start + '\"');\n  }\n};\n\n/**\n * Add color stop `pos` / `color`.\n *\n * @param {Number} pos\n * @param {String} color\n * @api private\n */\n\nGradient.prototype.addColorStop = function(pos, color){\n  this.grad.addColorStop(pos, color);\n};\n\n/**\n * Return data URI string.\n *\n * @return {String}\n * @api private\n */\n\nGradient.prototype.toDataURL = function(){\n  var canvas = this.canvas,\n      ctx = this.ctx;\n  ctx.fillStyle = this.grad;\n  ctx.fillRect(0, 0, canvas.width, canvas.height);\n  return canvas.toDataURL();\n};\n\n/**\n * Inherit from `nodes.Node.prototype`.\n */\n\nGradient.prototype.__proto__ = nodes.Node.prototype;\n"
  },
  {
    "path": "lib/nodes/vendor-helpers.js",
    "content": "var RE_GRADIENT_STOPS = /([\\(\\,]\\s*)(-?(?:\\d*\\.)?\\d+(?:%|px|em))(\\s+)((hsl|rgb)a?\\([^\\)]+\\)|#[^\\)\\,]+)/g,\n    RE_GRADIENT_VAL = /(\\(\\s*)(?:(-?(\\d*\\.)?\\d+)deg|((to )?(top|bottom|left|right)( (top|bottom|left|right))?))/g,\n    RE_GRADIENT_TYPE = /((repeating-)?(linear|radial)-gradient\\()/g,\n    RE_TRANSFORM = /\\b(transform)\\b/g,\n    RE_FILL_KEYWORD = /\\s*\\b(fill)\\b\\s*/g;\n\nvar DIRECTIONS = { top: 'bottom', bottom: 'top', left: 'right', right:'left' };\n\n/**\n * Expose `normalize`.\n */\n\nfunction normalize(property, value, prefix){\n  var result = value.toString(),\n      args;\n\n  /* Fixing the gradients */\n  if (~result.indexOf('gradient(')) {\n\n    /* Normalize color stops */\n    result = result.replace(RE_GRADIENT_STOPS,'$1$4$3$2');\n\n    /* Normalize legacy gradients */\n    result = result.replace(RE_GRADIENT_VAL, function(){\n        args = [].slice.call(arguments, 1);\n        return normalizeGradient(args, prefix);\n    });\n\n    /* Adding prefixes to the legacy gradients */\n    if (prefix) result = result.replace(RE_GRADIENT_TYPE, '-' + prefix + '-$1');\n  }\n\n  /* Adding prefixes to the `transform` values of legacy `transition` property */\n  if (prefix && (property == \"'transition'\" || property == \"'transition-property'\")) {\n    result = result.replace(RE_TRANSFORM, '-' + prefix + '-$1');\n  }\n\n  /* Removing `fill` keyword from the legacy `border-image` property */\n  if (prefix && (property == \"'border-image'\" || property == \"'border-image-slice'\")) {\n    result = result.replace(RE_FILL_KEYWORD, ' ');\n  }\n\n  return result;\n}\n\nfunction normalizeGradient(parts, prefix){\n  /* Fix the degrees to the legacy syntax */\n  var val = parts[0];\n\n  // when the gradients were unprefixed, the w3c changed the way that the\n  // angle direction is interpreted. see:\n  // http://blogs.msdn.com/b/ie/archive/2012/06/25/unprefixed-css3-gradients-in-ie10.aspx\n  if (parts[1]) val += (prefix ? parseFloat((Math.abs(450 - parts[1]) % 360).toFixed(3)) : parts[1]) + 'deg';\n\n  /* Fix the directions to the legacy syntax */\n  if (prefix && parts[4]) {\n    // `to top` to `bottom` etc.\n    if (parts[5]) val += DIRECTIONS[parts[5]];\n    if (parts[6]) val += ' ' + DIRECTIONS[parts[7]];\n  } else if (!prefix && !parts[4]) {\n    // `top` to `to bottom` etc.\n    if (parts[5]) val += 'to ' + DIRECTIONS[parts[5]];\n    if (parts[6]) val += ' ' + DIRECTIONS[parts[7]];\n  } else {\n    if (parts[3]) val += parts[3];\n  }\n\n  return val;\n}\n\nvar plugin = function(){\n  return function(style){\n    var nodes = this.nodes;\n    style.define('normalize', function(property, value, prefix) {\n      return new nodes.Ident(normalize(property, value, prefix));\n    });\n  };\n};\nmodule.exports = plugin;\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"nib\",\n  \"description\": \"Stylus mixins and utilities\",\n  \"version\": \"1.2.0\",\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/stylus/nib.git\"\n  },\n  \"peerDependencies\": {\n    \"stylus\": \"*\"\n  },\n  \"devDependencies\": {\n    \"chai\": \"^4.3.6\",\n    \"connect\": \"^3.7.0\",\n    \"mocha\": \"^10.0.0\",\n    \"pug\": \"^3.0.2\",\n    \"serve-static\": \"^1.15.0\",\n    \"stylus\": \"^0.57.0\"\n  },\n  \"author\": \"TJ Holowaychuk <tj@vision-media.ca>\",\n  \"maintainers\": [\n    {\n      \"name\": \"iChenLei\",\n      \"email\": \"chenleicoder@foxmail.com\"\n    }\n  ],\n  \"main\": \"lib/nib.js\",\n  \"engines\": {\n    \"node\": \"*\"\n  },\n  \"scripts\": {\n    \"test\": \"mocha\",\n    \"test-server\": \"node test/server.js\"\n  }\n}\n"
  },
  {
    "path": "test/cases/absolute.css",
    "content": "#login {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n}\n#login {\n  position: absolute;\n  top: 5px;\n  left: 10px;\n}\n#login {\n  position: absolute;\n  top: 5px;\n  right: 5px;\n  bottom: 5px;\n}\n#login {\n  position: absolute;\n  top: 0;\n}\n#login {\n  position: absolute;\n  top: 0;\n  right: 5px;\n  bottom: 0;\n  left: 10px;\n}\n"
  },
  {
    "path": "test/cases/absolute.styl",
    "content": "\n@import 'nib/positions'\n\n#login\n  absolute bottom right\n\n#login\n  absolute top 5px left 10px\n\n#login\n  absolute top 5px right 5px bottom 5px\n\n#login\n  absolute top\n\n#login\n  absolute top right 5px bottom left 10px\n"
  },
  {
    "path": "test/cases/border-radius.css",
    "content": "button {\n  border-radius: 1px 2px/3px 4px;\n}\nbutton {\n  border-top-left-radius: 10px;\n}\nbutton {\n  border-top-left-radius: 10px !important;\n}\nbutton {\n  border-bottom-right-radius: 5px;\n}\nbutton {\n  border-top-left-radius: 5px;\n  border-bottom-right-radius: 10px;\n}\nbutton {\n  border-bottom-left-radius: 10px;\n  border-bottom-right-radius: 10px;\n}\nbutton {\n  border-top-left-radius: 5px;\n  border-top-right-radius: 5px;\n  border-bottom-left-radius: 10px;\n  border-bottom-right-radius: 10px;\n}\nbutton {\n  border-top-left-radius: 5px;\n  border-bottom-right-radius: 10px;\n}\nbutton {\n  border-radius: 5px;\n}\n"
  },
  {
    "path": "test/cases/border-radius.styl",
    "content": "@import 'nib/border-radius'\n\nbutton\n  border-radius: 1px 2px / 3px 4px\n\nbutton\n  border-radius: top left 10px\n\nbutton\n  border-radius: top left 10px !important\n\nbutton\n  border-radius: bottom right 5px\n\nvendor-prefixes = webkit moz official\n\nbutton\n  border-radius: top left 5px bottom right 10px\n\nbutton\n  border-radius: bottom 10px\n\nbutton\n  border-radius: top 5px bottom 10px\n\nbutton\n  border-radius: top left 5px, bottom right 10px\n\nprepend(vendor-prefixes, ms, o)\n\nbutton\n  border-radius: 5px\n"
  },
  {
    "path": "test/cases/border.css",
    "content": ".foo {\n  border: none;\n  border: 1px solid #f00;\n  border: 1px solid #0f0 !important;\n  border: 1px solid #f00;\n}\n"
  },
  {
    "path": "test/cases/border.styl",
    "content": "@import 'nib/border'\n\n.foo\n  border: none\n  border: red\n  border: lime !important\n  border: 1px solid red\n"
  },
  {
    "path": "test/cases/clearfix.css",
    "content": "#clearfix {\n  zoom: 1;\n}\n#clearfix:before,\n#clearfix:after {\n  content: \"\";\n  display: table;\n}\n#clearfix:after {\n  clear: both;\n}\n"
  },
  {
    "path": "test/cases/clearfix.styl",
    "content": "@import 'nib/clearfix'\n\nsupport-for-ie = true\n\n#clearfix\n  clearfix()\n"
  },
  {
    "path": "test/cases/fixed.css",
    "content": "#login {\n  position: fixed;\n  bottom: 0;\n  right: 0;\n}\n#login {\n  position: fixed;\n  top: 5px;\n  left: 10px;\n}\n#login {\n  position: fixed;\n  bottom: 0;\n  left: 10px;\n}\n#login {\n  position: fixed;\n  bottom: 10px;\n  right: 0;\n}\n"
  },
  {
    "path": "test/cases/fixed.styl",
    "content": "@import 'nib/positions'\n\n#login\n  fixed: bottom right\n\n#login\n  fixed: top 5px left 10px\n\n#login\n  fixed: bottom left 10px\n\n#login\n  fixed: bottom 10px right\n"
  },
  {
    "path": "test/cases/flex.css",
    "content": "section {\n  display: -webkit-box;\n  display: -moz-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: box;\n  display: flex;\n  -webkit-box-orient: horizontal;\n  -moz-box-orient: horizontal;\n  -o-box-orient: horizontal;\n  -webkit-flex-direction: row;\n  -ms-flex-direction: row;\n  flex-direction: row;\n}\nsection div {\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  -o-box-flex: 1;\n  box-flex: 1;\n  -webkit-flex: 1 0;\n  -ms-flex: 1 0;\n  flex: 1 0;\n}\nsection {\n  display: -webkit-inline-box;\n  display: -moz-inline-box;\n  display: -webkit-inline-flex;\n  display: -ms-inline-flexbox;\n  display: inline-box;\n  display: inline-flex;\n}\nflex-flow {\n  -webkit-box-direction: reverse;\n  -moz-box-direction: reverse;\n  -o-box-direction: reverse;\n  -webkit-box-orient: horizontal;\n  -moz-box-orient: horizontal;\n  -o-box-orient: horizontal;\n  -webkit-flex-flow: row-reverse;\n  -ms-flex-flow: row-reverse;\n  flex-flow: row-reverse;\n  -webkit-box-orient: horizontal;\n  -moz-box-orient: horizontal;\n  -o-box-orient: horizontal;\n  -webkit-box-lines: multiple;\n  -moz-box-lines: multiple;\n  -o-box-lines: multiple;\n  -webkit-flex-flow: row wrap;\n  -ms-flex-flow: row wrap;\n  flex-flow: row wrap;\n  -webkit-box-direction: reverse;\n  -moz-box-direction: reverse;\n  -o-box-direction: reverse;\n  -webkit-box-orient: vertical;\n  -moz-box-orient: vertical;\n  -o-box-orient: vertical;\n  -webkit-box-lines: multiple;\n  -moz-box-lines: multiple;\n  -o-box-lines: multiple;\n  -webkit-flex-flow: wrap-reverse column-reverse;\n  -ms-flex-flow: wrap-reverse column-reverse;\n  flex-flow: wrap-reverse column-reverse;\n}\njustify-content {\n  -webkit-box-pack: start;\n  -moz-box-pack: start;\n  -o-box-pack: start;\n  -ms-flex-pack: start;\n  -webkit-justify-content: flex-start;\n  justify-content: flex-start;\n  -webkit-box-pack: end;\n  -moz-box-pack: end;\n  -o-box-pack: end;\n  -ms-flex-pack: end;\n  -webkit-justify-content: flex-end;\n  justify-content: flex-end;\n  -webkit-box-pack: center;\n  -moz-box-pack: center;\n  -o-box-pack: center;\n  -ms-flex-pack: center;\n  -webkit-justify-content: center;\n  justify-content: center;\n  -webkit-box-pack: justify;\n  -moz-box-pack: justify;\n  -o-box-pack: justify;\n  -ms-flex-pack: justify;\n  -webkit-justify-content: space-between;\n  justify-content: space-between;\n  -webkit-box-pack: distribute;\n  -moz-box-pack: distribute;\n  -o-box-pack: distribute;\n  -ms-flex-pack: distribute;\n  -webkit-justify-content: space-around;\n  justify-content: space-around;\n}\nalign-items {\n  -webkit-box-align: start;\n  -moz-box-align: start;\n  -o-box-align: start;\n  -ms-flex-align: start;\n  -webkit-align-items: flex-start;\n  align-items: flex-start;\n  -webkit-box-align: end;\n  -moz-box-align: end;\n  -o-box-align: end;\n  -ms-flex-align: end;\n  -webkit-align-items: flex-end;\n  align-items: flex-end;\n  -webkit-box-align: center;\n  -moz-box-align: center;\n  -o-box-align: center;\n  -ms-flex-align: center;\n  -webkit-align-items: center;\n  align-items: center;\n}\nalign-content {\n  -ms-flex-line-pack: start;\n  -webkit-align-content: flex-start;\n  align-content: flex-start;\n  -ms-flex-line-pack: end;\n  -webkit-align-content: flex-end;\n  align-content: flex-end;\n  -ms-flex-line-pack: center;\n  -webkit-align-content: center;\n  align-content: center;\n  -ms-flex-line-pack: justify;\n  -webkit-align-content: space-between;\n  align-content: space-between;\n  -ms-flex-line-pack: distribute;\n  -webkit-align-content: space-around;\n  align-content: space-around;\n}\nflex {\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  -o-box-flex: 1;\n  box-flex: 1;\n  -webkit-flex: 0 auto;\n  -ms-flex: 0 auto;\n  flex: 0 auto;\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  -o-box-flex: 1;\n  box-flex: 1;\n  -webkit-flex: auto 0;\n  -ms-flex: auto 0;\n  flex: auto 0;\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  -o-box-flex: 1;\n  box-flex: 1;\n  -webkit-flex: initial;\n  -ms-flex: initial;\n  flex: initial;\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  -o-box-flex: 1;\n  box-flex: 1;\n  -webkit-flex: auto;\n  -ms-flex: auto;\n  flex: auto;\n  -webkit-box-flex: 0;\n  -moz-box-flex: 0;\n  -o-box-flex: 0;\n  box-flex: 0;\n  -webkit-flex: none;\n  -ms-flex: none;\n  flex: none;\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  -o-box-flex: 1;\n  box-flex: 1;\n  -webkit-flex: 1;\n  -ms-flex: 1;\n  flex: 1;\n  -webkit-box-flex: 0;\n  -moz-box-flex: 0;\n  -o-box-flex: 0;\n  box-flex: 0;\n  -webkit-flex: 0px 0 0;\n  -ms-flex: 0px 0 0;\n  flex: 0px 0 0;\n  -webkit-box-flex: 2;\n  -moz-box-flex: 2;\n  -o-box-flex: 2;\n  box-flex: 2;\n  -webkit-flex: 1 2 0;\n  -ms-flex: 1 2 0;\n  flex: 1 2 0;\n}\norder {\n  -webkit-box-ordinal-group: 0;\n  -moz-box-ordinal-group: 0;\n  -o-box-ordinal-group: 0;\n  -ms-flex-order: 0;\n  -webkit-order: 0;\n  order: 0;\n}\nsection {\n  display: -webkit-box !important;\n  display: -moz-box !important;\n  display: -webkit-flex !important;\n  display: -ms-flexbox !important;\n  display: box !important;\n  display: flex !important;\n}\nsection {\n  display: -webkit-inline-box !important;\n  display: -moz-inline-box !important;\n  display: -webkit-inline-flex !important;\n  display: -ms-inline-flexbox !important;\n  display: inline-box !important;\n  display: inline-flex !important;\n}\nsection {\n  display: -webkit-box;\n  display: -moz-box;\n  display: -ms-flexbox;\n  display: box;\n  -webkit-box-orient: horizontal;\n  -moz-box-orient: horizontal;\n  -o-box-orient: horizontal;\n}\nsection div {\n  -webkit-box-flex: 1;\n  -moz-box-flex: 1;\n  -o-box-flex: 1;\n  box-flex: 1;\n}\nsection {\n  display: -webkit-inline-box;\n  display: -moz-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-box;\n}\nsection {\n  display: -webkit-box !important;\n  display: -moz-box !important;\n  display: -ms-flexbox !important;\n  display: box !important;\n}\nsection {\n  display: -webkit-inline-box !important;\n  display: -moz-inline-box !important;\n  display: -ms-inline-flexbox !important;\n  display: inline-box !important;\n}\nsection {\n  display: -webkit-flex;\n  display: flex;\n  -webkit-flex-direction: row;\n  -ms-flex-direction: row;\n  flex-direction: row;\n}\nsection div {\n  -webkit-flex: 1 0;\n  -ms-flex: 1 0;\n  flex: 1 0;\n}\nsection {\n  display: -webkit-inline-flex;\n  display: inline-flex;\n}\nsection {\n  display: -webkit-flex !important;\n  display: flex !important;\n}\nsection {\n  display: -webkit-inline-flex !important;\n  display: inline-flex !important;\n}\n"
  },
  {
    "path": "test/cases/flex.styl",
    "content": "@import 'nib/vendor'\n@import 'nib/flex'\n\nsection\n  display: flex\n  flex-direction: row\n\n  div\n    flex: 1 0\n\nsection\n  display: inline-flex\n\nflex-flow\n  flex-flow row-reverse\n  flex-flow row wrap\n  flex-flow wrap-reverse column-reverse\n\njustify-content\n  justify-content flex-start\n  justify-content flex-end\n  justify-content center\n  justify-content space-between\n  justify-content space-around\n\nalign-items\n  align-items flex-start\n  align-items flex-end\n  align-items center\n\nalign-content\n  align-content flex-start\n  align-content flex-end\n  align-content center\n  align-content space-between\n  align-content space-around\n\nflex\n  flex 0 auto\n  flex auto 0\n  flex initial\n  flex auto\n  flex none\n  flex 1\n  flex 0px 0 0\n  flex 1 2 0\n\norder\n  order 0\n\nsection\n  display: flex !important\n\nsection\n  display: inline-flex !important\n// Obsolete property conditional rendering\nflex-version = box\n\nsection\n  display: flex\n  flex-direction: row\n\n  div\n    flex: 1 0\n\nsection\n  display: inline-flex\n\nsection\n  display: flex !important\n\nsection\n  display: inline-flex !important\n\n// New property conditional rendering\nflex-version = flex\n\nsection\n  display: flex\n  flex-direction: row\n\n  div\n    flex: 1 0\n\nsection\n  display: inline-flex\n\nsection\n  display: flex !important\n\nsection\n  display: inline-flex !important\n"
  },
  {
    "path": "test/cases/image.css",
    "content": "#logo {\n  background-image: url(\"/images/branding/logo.main.png\");\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 1.5/1), (min-device-pixel-ratio: 1.5), (min-resolution: 138dpi), (min-resolution: 1.5dppx) {\n  #logo {\n    background-image: url(\"/images/branding/logo.main@2x.png\");\n    background-size: auto auto;\n  }\n}\n#logo {\n  background-image: url(\"/images/branding/logo.main.png\");\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 1.5/1), (min-device-pixel-ratio: 1.5), (min-resolution: 138dpi), (min-resolution: 1.5dppx) {\n  #logo {\n    background-image: url(\"/images/branding/logo.main@2x.png\");\n    background-size: 50px 100px;\n  }\n}\n#logo {\n  background-image: url(\"/images/branding/logo.main.png\");\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 1.5/1), (min-device-pixel-ratio: 1.5), (min-resolution: 138dpi), (min-resolution: 1.5dppx) {\n  #logo {\n    background-image: url(\"/images/branding/logo.main@2x.png\");\n    background-size: cover;\n  }\n}\n#logo {\n  background-image: url(\"/images/branding/logo.main.png\");\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 1.5/1), (min-device-pixel-ratio: 1.5), (min-resolution: 138dpi), (min-resolution: 1.5dppx) {\n  #logo {\n    background-image: url(\"/images/branding/logo.main@2x.png\");\n    background-size: contain;\n  }\n}\n"
  },
  {
    "path": "test/cases/image.styl",
    "content": "@import 'nib/image'\n\n#logo\n  image: '/images/branding/logo.main.png'\n\n#logo\n  image: '/images/branding/logo.main.png' 50px 100px\n\n#logo\n  image: '/images/branding/logo.main.png' cover\n\n#logo\n  image: '/images/branding/logo.main.png' contain\n"
  },
  {
    "path": "test/cases/importance.css",
    "content": ".test {\n  position: relative !important;\n  top: 0 !important;\n  right: 0 !important;\n  bottom: 0 !important;\n  left: 0 !important;\n  z-index: 0 !important;\n  float: left !important;\n  clear: left !important;\n  display: none !important;\n  visibility: hidden !important;\n  overflow: hidden !important;\n  overflow-x: scroll !important;\n  overflow-y: auto !important;\n  clip: auto !important;\n  -webkit-box-sizing: border-box !important;\n  -moz-box-sizing: border-box !important;\n  box-sizing: border-box !important;\n  margin: 0 !important;\n  margin-top: 0 !important;\n  margin-right: 0 !important;\n  margin-bottom: 0 !important;\n  margin-left: 0 !important;\n  padding: 0 !important;\n  padding-top: 0 !important;\n  padding-right: 0 !important;\n  padding-bottom: 0 !important;\n  padding-left: 0 !important;\n  width: 0 !important;\n  height: 0 !important;\n  min-width: 0 !important;\n  min-height: 0 !important;\n  max-height: 0 !important;\n  max-width: 0 !important;\n  outline: 0 !important;\n  border-collapse: collapse !important;\n  border-spacing: 0 !important;\n  border-color: #000 !important;\n  border-top-color: #000 !important;\n  border-right-color: #000 !important;\n  border-bottom-color: #000 !important;\n  border-left-color: #000 !important;\n  border-style: solid !important;\n  border-top-style: solid !important;\n  border-right-style: solid !important;\n  border-bottom-style: solid !important;\n  border-left-style: solid !important;\n  border-width: 0 !important;\n  border-top-width: 0 !important;\n  border-right-width: 0 !important;\n  border-bottom-width: 0 !important;\n  border-left-width: 0 !important;\n  border: 1px !important;\n  border-top: 1px !important;\n  border-right: 1px !important;\n  border-bottom: 1px !important;\n  border-left: 1px !important;\n  border-radius: 50% !important;\n  border-top-right-radius: 50% !important;\n  border-top-left-radius: 50% !important;\n  border-bottom-left-radius: 50% !important;\n  border-bottom-right-radius: 50% !important;\n  -webkit-border-image: none !important;\n  -moz-border-image: none !important;\n  -o-border-image: none !important;\n  border-image: none !important;\n  background-attachment: fixed !important;\n  background-color: #f00 !important;\n  background-image: none !important;\n  background-position-x: 0 !important;\n  background-position-y: 0 !important;\n  background-position: 0 !important;\n  background-repeat: no-repeat !important;\n  -webkit-background-clip: border !important;\n  -moz-background-clip: border !important;\n  background-clip: border-box !important;\n  -webkit-background-origin: padding !important;\n  -moz-background-origin: padding !important;\n  background-origin: padding-box !important;\n  background-size: 0 !important;\n  background: none !important;\n  -webkit-box-shadow: 0 1px 0 #000 !important;\n  box-shadow: 0 1px 0 #000 !important;\n  color: rgba(0,0,0,0.5) !important;\n  table-layout: fixed !important;\n  caption-side: top !important;\n  empty-cells: hide !important;\n  list-style-image: none !important;\n  list-style-position: inside !important;\n  list-style-type: disc !important;\n  list-style: none !important;\n  quotes: none !important;\n  content: \"lol\" !important;\n  counter-increment: none !important;\n  counter-reset: none !important;\n  vertical-align: middle !important;\n  text-align: center !important;\n  text-align-last: right !important;\n  text-decoration: none !important;\n  text-indent: 0 !important;\n  text-justify: auto !important;\n  text-outline: none !important;\n  text-transform: capitalize !important;\n  text-wrap: normal !important;\n  -o-text-overflow: ellipsis !important;\n  text-overflow: ellipsis !important;\n  text-shadow: 0 1px 0 0 #fff !important;\n  line-height: 1.5 !important;\n  white-space: nowrap !important;\n  word-spacing: normal !important;\n  word-wrap: normal !important;\n  word-break: normal !important;\n  -moz-tab-size: 4 !important;\n  -o-tab-size: 4 !important;\n  tab-size: 4 !important;\n  -webkit-hyphens: manual !important;\n  -moz-hyphens: manual !important;\n  -ms-hyphens: manual !important;\n  hyphens: manual !important;\n  letter-spacing: normal !important;\n  font-family: Monaco, monospace !important;\n  font-size: 21px !important;\n  font-style: italic !important;\n  font-variant: small-caps !important;\n  font-weight: bold !important;\n  font-size-adjust: none !important;\n  font-stretch: condensed !important;\n  font: normal 16px/1.25 Arial, sans-serif !important;\n  opacity: 0.5 !important;\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\" !important;\n  filter: alpha(opacity=50) !important;\n  opacity: 1 !important;\n  -ms-filter: none !important;\n  filter: none !important;\n  resize: both !important;\n  cursor: pointer !important;\n  unicode-bidi: normal !important;\n  direction: rtl !important;\n  break-before: auto !important;\n  break-after: auto !important;\n  break-inside: none !important;\n  orphans: 3 !important;\n  widows: 3 !important;\n  zoom: 1 !important;\n}\n"
  },
  {
    "path": "test/cases/importance.styl",
    "content": "@import 'nib'\n\n.test\n  position: relative !important\n  top: 0 !important\n  right: 0 !important\n  bottom: 0 !important\n  left: 0 !important\n  z-index: 0 !important\n\n  float: left !important\n  clear: left !important\n  display: none !important\n  visibility: hidden !important\n  overflow: hidden !important\n  overflow-x: scroll !important\n  overflow-y: auto !important\n  clip: auto !important\n  box-sizing: border-box !important\n\n  margin: 0 !important\n  margin-top: 0 !important\n  margin-right: 0 !important\n  margin-bottom: 0 !important\n  margin-left: 0 !important\n  padding: 0 !important\n  padding-top: 0 !important\n  padding-right: 0 !important\n  padding-bottom: 0 !important\n  padding-left: 0 !important\n\n  width: 0 !important\n  height: 0 !important\n  min-width: 0 !important\n  min-height: 0 !important\n  max-height: 0 !important\n  max-width: 0 !important\n\n  outline: 0 !important\n  border-collapse: collapse !important\n  border-spacing: 0 !important\n  border-color: #000 !important\n  border-top-color: #000 !important\n  border-right-color: #000 !important\n  border-bottom-color: #000 !important\n  border-left-color: #000 !important\n  border-style: solid !important\n  border-top-style: solid !important\n  border-right-style: solid !important\n  border-bottom-style: solid !important\n  border-left-style: solid !important\n  border-width: 0 !important\n  border-top-width: 0 !important\n  border-right-width: 0 !important\n  border-bottom-width: 0 !important\n  border-left-width: 0 !important\n  border: 1px !important\n  border-top: 1px !important\n  border-right: 1px !important\n  border-bottom: 1px !important\n  border-left: 1px !important\n  border-radius: 50% !important\n  border-top-right-radius: 50% !important\n  border-top-left-radius: 50% !important\n  border-bottom-left-radius: 50% !important\n  border-bottom-right-radius: 50% !important\n\n  border-image: none !important\n  background-attachment: fixed !important\n  background-color: red !important\n  background-image: none !important\n  background-position-x: 0 !important\n  background-position-y: 0 !important\n  background-position: 0 !important\n  background-repeat: no-repeat !important\n  background-clip: border-box !important\n  background-origin: padding-box !important\n  background-size: 0 !important\n  background: none !important\n  box-shadow: 0 1px 0 #000 !important\n  color: rgba(0,0,0,0.5) !important\n\n  table-layout: fixed !important\n  caption-side: top !important\n  empty-cells: hide !important\n  list-style-image: none !important\n  list-style-position: inside !important\n  list-style-type: disc !important\n  list-style: none !important\n  quotes: none !important\n  content: \"lol\" !important\n  counter-increment: none !important\n  counter-reset: none !important\n\n  vertical-align: middle !important\n  text-align: center !important\n  text-align-last: right !important\n  text-decoration: none !important\n  text-indent: 0 !important\n  text-justify: auto !important\n  text-outline: none !important\n  text-transform: capitalize !important\n  text-wrap: normal !important\n  text-overflow: ellipsis !important\n  text-shadow: 0 1px 0 0 #FFF !important\n  line-height: 1.5 !important\n  white-space: nowrap !important\n  word-spacing: normal !important\n  word-wrap: normal !important\n  word-break: normal !important\n  tab-size: 4 !important\n  hyphens: manual !important\n  letter-spacing: normal !important\n  font-family: Monaco, monospace !important\n  font-size: 21px !important\n  font-style: italic !important\n  font-variant: small-caps !important\n  font-weight: bold !important\n  font-size-adjust: none !important\n  font-stretch: condensed !important\n  font: normal 16px/1.25 Arial, sans-serif !important\n\n\n  opacity: 0.5 !important\n  opacity: 1 !important\n  resize: both !important\n  cursor: pointer !important\n\n  unicode-bidi: normal !important\n  direction: rtl !important\n\n  break-before: auto !important\n  break-after: auto !important\n  break-inside: none !important\n  orphans: 3 !important\n  widows: 3 !important\n\n  zoom: 1 !important\n"
  },
  {
    "path": "test/cases/linear-gradient.css",
    "content": "body {\n  background: -webkit-linear-gradient(#fff, #000);\n  background: -moz-linear-gradient(#fff, #000);\n  background: -o-linear-gradient(#fff, #000);\n  background: -ms-linear-gradient(#fff, #000);\n  background: linear-gradient(#fff, #000);\n}\nbody {\n  background: -webkit-linear-gradient(top, #fff, #000);\n  background: -moz-linear-gradient(top, #fff, #000);\n  background: -o-linear-gradient(top, #fff, #000);\n  background: -ms-linear-gradient(top, #fff, #000);\n  background: linear-gradient(to bottom, #fff, #000);\n}\nbody {\n  background: -webkit-linear-gradient(bottom, #fff, #000);\n  background: -moz-linear-gradient(bottom, #fff, #000);\n  background: -o-linear-gradient(bottom, #fff, #000);\n  background: -ms-linear-gradient(bottom, #fff, #000);\n  background: linear-gradient(to top, #fff, #000);\n}\nbody {\n  background: -webkit-linear-gradient(top left, #fff, #000);\n  background: -moz-linear-gradient(top left, #fff, #000);\n  background: -o-linear-gradient(top left, #fff, #000);\n  background: -ms-linear-gradient(top left, #fff, #000);\n  background: linear-gradient(to bottom right, #fff, #000);\n}\nbody {\n  background: -webkit-linear-gradient(45deg, #fff, #000);\n  background: -moz-linear-gradient(45deg, #fff, #000);\n  background: -o-linear-gradient(45deg, #fff, #000);\n  background: -ms-linear-gradient(45deg, #fff, #000);\n  background: linear-gradient(45deg, #fff, #000);\n}\nbody {\n  background: -webkit-linear-gradient(135deg, #fff, #000);\n  background: -moz-linear-gradient(135deg, #fff, #000);\n  background: -o-linear-gradient(135deg, #fff, #000);\n  background: -ms-linear-gradient(135deg, #fff, #000);\n  background: linear-gradient(-45deg, #fff, #000);\n}\nbody {\n  background: -webkit-linear-gradient(top left, #fff, #f00, #00f, #000);\n  background: -moz-linear-gradient(top left, #fff, #f00, #00f, #000);\n  background: -o-linear-gradient(top left, #fff, #f00, #00f, #000);\n  background: -ms-linear-gradient(top left, #fff, #f00, #00f, #000);\n  background: linear-gradient(to bottom right, #fff, #f00, #00f, #000);\n}\nbody {\n  background: -webkit-linear-gradient(bottom right, #fff, #000 80%);\n  background: -moz-linear-gradient(bottom right, #fff, #000 80%);\n  background: -o-linear-gradient(bottom right, #fff, #000 80%);\n  background: -ms-linear-gradient(bottom right, #fff, #000 80%);\n  background: linear-gradient(to top left, #fff, #000 80%);\n}\nbody {\n  background: -webkit-linear-gradient(right bottom, #fff, #000 80%);\n  background: -moz-linear-gradient(right bottom, #fff, #000 80%);\n  background: -o-linear-gradient(right bottom, #fff, #000 80%);\n  background: -ms-linear-gradient(right bottom, #fff, #000 80%);\n  background: linear-gradient(to left top, #fff, #000 80%);\n}\nbody {\n  background: -webkit-linear-gradient(right bottom, #fff 80%, #000);\n  background: -moz-linear-gradient(right bottom, #fff 80%, #000);\n  background: -o-linear-gradient(right bottom, #fff 80%, #000);\n  background: -ms-linear-gradient(right bottom, #fff 80%, #000);\n  background: linear-gradient(to left top, #fff 80%, #000);\n}\nbody {\n  background: -webkit-linear-gradient(right bottom, rgba(0,0,0,0.5) 80%, #000);\n  background: -moz-linear-gradient(right bottom, rgba(0,0,0,0.5) 80%, #000);\n  background: -o-linear-gradient(right bottom, rgba(0,0,0,0.5) 80%, #000);\n  background: -ms-linear-gradient(right bottom, rgba(0,0,0,0.5) 80%, #000);\n  background: linear-gradient(to left top, rgba(0,0,0,0.5) 80%, #000);\n}\nbody {\n  background: -webkit-linear-gradient(right bottom, hsla(0,0%,0%,0.5) 80.5%, #000);\n  background: -moz-linear-gradient(right bottom, hsla(0,0%,0%,0.5) 80.5%, #000);\n  background: -o-linear-gradient(right bottom, hsla(0,0%,0%,0.5) 80.5%, #000);\n  background: -ms-linear-gradient(right bottom, hsla(0,0%,0%,0.5) 80.5%, #000);\n  background: linear-gradient(to left top, hsla(0,0%,0%,0.5) 80.5%, #000);\n}\nbody {\n  background: -webkit-linear-gradient(right bottom, hsla(0,0%,0%,0.5) 80.5%, #000);\n  background: -moz-linear-gradient(right bottom, hsla(0,0%,0%,0.5) 80.5%, #000);\n  background: -o-linear-gradient(right bottom, hsla(0,0%,0%,0.5) 80.5%, #000);\n  background: -ms-linear-gradient(right bottom, hsla(0,0%,0%,0.5) 80.5%, #000);\n  background: linear-gradient(to left top, hsla(0,0%,0%,0.5) 80.5%, #000);\n}\nbody {\n  background: -webkit-linear-gradient(right bottom, #fff 20px, #000);\n  background: -moz-linear-gradient(right bottom, #fff 20px, #000);\n  background: -o-linear-gradient(right bottom, #fff 20px, #000);\n  background: -ms-linear-gradient(right bottom, #fff 20px, #000);\n  background: linear-gradient(to left top, #fff 20px, #000);\n}\nbody {\n  background: -webkit-linear-gradient(top, #fff, #000);\n  background: -moz-linear-gradient(top, #fff, #000);\n  background: -ms-linear-gradient(top, #fff, #000);\n  background: -o-linear-gradient(top, #fff, #000);\n  background: linear-gradient(to bottom, #fff, #000);\n}\nbody {\n  background: -webkit-linear-gradient(top, #fff, #000), #fff;\n  background: -moz-linear-gradient(top, #fff, #000), #fff;\n  background: -ms-linear-gradient(top, #fff, #000), #fff;\n  background: -o-linear-gradient(top, #fff, #000), #fff;\n  background: linear-gradient(to bottom, #fff, #000), #fff;\n}\nbody {\n  -webkit-border-image: -webkit-linear-gradient(top, #fff, #000) 20% stretch stretch;\n  -moz-border-image: -moz-linear-gradient(top, #fff, #000) 20% stretch stretch;\n  -o-border-image: -o-linear-gradient(top, #fff, #000) 20% stretch stretch;\n  border-image: linear-gradient(to bottom, #fff, #000) 20% stretch stretch;\n}\nbody {\n  -webkit-border-image: -webkit-linear-gradient(top, #fff, #000) 20% stretch stretch;\n  -moz-border-image: -moz-linear-gradient(top, #fff, #000) 20% stretch stretch;\n  -o-border-image: -o-linear-gradient(top, #fff, #000) 20% stretch stretch;\n  border-image: linear-gradient(to bottom, #fff, #000) 20% fill stretch stretch;\n}\nbody {\n  cursor: -webkit-linear-gradient(50deg, #f00, #0f0);\n  cursor: -moz-linear-gradient(50deg, #f00, #0f0);\n  cursor: -ms-linear-gradient(50deg, #f00, #0f0);\n  cursor: -o-linear-gradient(50deg, #f00, #0f0);\n  cursor: linear-gradient(40deg, #f00, #0f0);\n}\nbody {\n  list-style: -webkit-linear-gradient(50deg, #f00, #0f0);\n  list-style: -moz-linear-gradient(50deg, #f00, #0f0);\n  list-style: -ms-linear-gradient(50deg, #f00, #0f0);\n  list-style: -o-linear-gradient(50deg, #f00, #0f0);\n  list-style: linear-gradient(40deg, #f00, #0f0);\n}\nbody {\n  list-style-image: -webkit-linear-gradient(50deg, #f00, #0f0);\n  list-style-image: -moz-linear-gradient(50deg, #f00, #0f0);\n  list-style-image: -ms-linear-gradient(50deg, #f00, #0f0);\n  list-style-image: -o-linear-gradient(50deg, #f00, #0f0);\n  list-style-image: linear-gradient(40deg, #f00, #0f0);\n}\n"
  },
  {
    "path": "test/cases/linear-gradient.styl",
    "content": "@import 'nib/vendor'\n@import 'nib/gradients'\n\nbody\n  background: linear-gradient(white, black)\n\nbody\n  background: linear-gradient(top, white, black)\n\nbody\n  background: linear-gradient(to top, white, black)\n\nbody\n  background: linear-gradient(to bottom right, white, black)\n\nbody\n  background: linear-gradient(45deg, white, black)\n\nbody\n  background: linear-gradient(-45deg, white, black)\n\nbody\n  background: linear-gradient(top left, white, red, blue, black)\n\nbody\n  background: linear-gradient(bottom right, white, black 80%)\n\nbody\n  background: linear-gradient(right bottom, white, 80% black)\n\nbody\n  background: linear-gradient(right bottom, 80% white, black)\n\nbody\n  background: linear-gradient(right bottom, 80% rgba(#000,0.5), black)\n\nbody\n  background: linear-gradient(right bottom, 80.5% hsla(0,0,0,0.5), black)\n\nbody\n  background: linear-gradient(right bottom, 80.5% hsla(0,0%,0%,0.5), black)\n\nbody\n  background: linear-gradient(right bottom, 20px white, black)\n\nvendor-prefixes = webkit moz ms o official\n\nbody\n  background: linear-gradient(top, white, black)\n\nbody\n  background: linear-gradient(top, white, black), white\n\nbody\n  border-image: linear-gradient(top, #fff, #000) 20% stretch stretch;\n\nbody\n  border-image: linear-gradient(top, #fff, #000) 20% fill stretch stretch;\n\ngradient-var = linear-gradient(40deg, red, lime)\n\nbody\n  cursor: gradient-var\n\nbody\n  list-style: gradient-var\n\nbody\n  list-style-image: gradient-var\n"
  },
  {
    "path": "test/cases/multiple-gradients.css",
    "content": ".test1 {\n  background: -webkit-linear-gradient(bottom, #fff, #000), -webkit-linear-gradient(top, #000, #fff);\n  background: -moz-linear-gradient(bottom, #fff, #000), -moz-linear-gradient(top, #000, #fff);\n  background: -o-linear-gradient(bottom, #fff, #000), -o-linear-gradient(top, #000, #fff);\n  background: -ms-linear-gradient(bottom, #fff, #000), -ms-linear-gradient(top, #000, #fff);\n  background: linear-gradient(to top, #fff, #000), linear-gradient(to bottom, #000, #fff);\n}\n.test2 {\n  background: #fff -webkit-linear-gradient(bottom, #000, #fff) 0 0 no-repeat, -webkit-linear-gradient(top, #000, #fff) 10px bottom repeat-y;\n  background: #fff -moz-linear-gradient(bottom, #000, #fff) 0 0 no-repeat, -moz-linear-gradient(top, #000, #fff) 10px bottom repeat-y;\n  background: #fff -o-linear-gradient(bottom, #000, #fff) 0 0 no-repeat, -o-linear-gradient(top, #000, #fff) 10px bottom repeat-y;\n  background: #fff -ms-linear-gradient(bottom, #000, #fff) 0 0 no-repeat, -ms-linear-gradient(top, #000, #fff) 10px bottom repeat-y;\n  background: #fff linear-gradient(to top, #000, #fff) 0 0 no-repeat, linear-gradient(to bottom, #000, #fff) 10px bottom repeat-y;\n}\n.test3 {\n  background-image: -webkit-linear-gradient(bottom, #fff, #000), url(\"a.png\"), -webkit-linear-gradient(top, #000, #fff);\n  background-image: -moz-linear-gradient(bottom, #fff, #000), url(\"a.png\"), -moz-linear-gradient(top, #000, #fff);\n  background-image: -o-linear-gradient(bottom, #fff, #000), url(\"a.png\"), -o-linear-gradient(top, #000, #fff);\n  background-image: -ms-linear-gradient(bottom, #fff, #000), url(\"a.png\"), -ms-linear-gradient(top, #000, #fff);\n  background-image: linear-gradient(to top, #fff, #000), url(\"a.png\"), linear-gradient(to bottom, #000, #fff);\n}\n.test4 {\n  background: -webkit-linear-gradient(top, #000, #fff), -webkit-linear-gradient(bottom, #fff, #000);\n  background: -moz-linear-gradient(top, #000, #fff), -moz-linear-gradient(bottom, #fff, #000);\n  background: -o-linear-gradient(top, #000, #fff), -o-linear-gradient(bottom, #fff, #000);\n  background: -ms-linear-gradient(top, #000, #fff), -ms-linear-gradient(bottom, #fff, #000);\n  background: linear-gradient(to bottom, #000, #fff), linear-gradient(to top, #fff, #000);\n}\n"
  },
  {
    "path": "test/cases/multiple-gradients.styl",
    "content": "@import 'nib/vendor'\n@import 'nib/gradients'\n\n.test1\n  background: linear-gradient(to top, white, black),\n              linear-gradient(to bottom, black, white)\n\n.test2\n  background: #fff \\\n  \tlinear-gradient(to top, black, white) 0 0 no-repeat,\n    linear-gradient(to bottom, black, white) 10px bottom repeat-y\n\n.test3\n  background-image: linear-gradient(to top, white, black),\n              \t\turl(a.png),\n              \t\tlinear-gradient(to bottom, black, white)\n\ngradient1 = linear-gradient(to top, white, black)\ngradient2 = linear-gradient(to bottom, black, white)\n\n.test4\n  background: gradient2, gradient1\n"
  },
  {
    "path": "test/cases/normalize-reset.css",
    "content": "html {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\ndetails,\nsection,\nsummary,\naside,\nmain,\nmenu,\nnav,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\ndfn {\n  font-style: italic;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nb,\nstrong {\n  font-weight: bold;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type='button'],\ninput[type='reset'],\ninput[type='submit'] {\n  cursor: pointer;\n  -webkit-appearance: button;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type='checkbox'],\ninput[type='radio'] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type='number']::-webkit-inner-spin-button,\ninput[type='number']::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type='search'] {\n  -webkit-appearance: textfield;\n  -moz-box-sizing: content-box;\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ninput[type='search']::-webkit-search-cancel-button,\ninput[type='search']::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n"
  },
  {
    "path": "test/cases/normalize-reset.styl",
    "content": "@import 'nib/normalize'\nnormalize-css()\n"
  },
  {
    "path": "test/cases/radial-gradient.css",
    "content": "body {\n  background: -webkit-radial-gradient(50% 0, farthest-side, rgba(9,36,95,0.175), rgba(9,36,95,0));\n  background: -moz-radial-gradient(50% 0, farthest-side, rgba(9,36,95,0.175), rgba(9,36,95,0));\n  background: -o-radial-gradient(50% 0, farthest-side, rgba(9,36,95,0.175), rgba(9,36,95,0));\n  background: -ms-radial-gradient(50% 0, farthest-side, rgba(9,36,95,0.175), rgba(9,36,95,0));\n  background: radial-gradient(50% 0, farthest-side, rgba(9,36,95,0.175), rgba(9,36,95,0));\n}\n"
  },
  {
    "path": "test/cases/radial-gradient.styl",
    "content": "@import 'nib/vendor'\n@import 'nib/gradients'\n\nbody\n  background: radial-gradient(50% 0, farthest-side, rgba(9,36,95,0.175), rgba(9,36,95,0))\n"
  },
  {
    "path": "test/cases/relative.css",
    "content": "#login {\n  position: relative;\n  left: 10px;\n}\n"
  },
  {
    "path": "test/cases/shadow-stroke.css",
    "content": "button {\n  text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;\n}\nbutton {\n  text-shadow: -1px -1px 0 rgba(0,0,0,0.5), 1px -1px 0 rgba(0,0,0,0.5), -1px 1px 0 rgba(0,0,0,0.5), 1px 1px 0 rgba(0,0,0,0.5);\n}\nbutton {\n  text-shadow: -1px -1px 0 #f00, 1px -1px 0 #f00, -1px 1px 0 #f00, 1px 1px 0 #f00;\n}\n"
  },
  {
    "path": "test/cases/shadow-stroke.styl",
    "content": "@import 'nib/text/shadow-stroke'\n\nbutton\n  shadow-stroke(#000)\n\nbutton\n  shadow-stroke(rgba(0, 0, 0, 0.5))\n\nbutton\n  shadow-stroke(red)\n"
  },
  {
    "path": "test/cases/text.ellipsis.css",
    "content": "button {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\nbutton {\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\nbutton {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n"
  },
  {
    "path": "test/cases/text.ellipsis.styl",
    "content": "@import 'nib/text/ellipsis'\n@import 'nib/overflow'\n\nbutton\n  ellipsis()\n\nbutton\n  ellipsis(false)\n\nbutton\n  overflow: ellipsis\n"
  },
  {
    "path": "test/cases/vendor.css",
    "content": "button {\n  -webkit-box-shadow: 1px 1px 5px #eee;\n  box-shadow: 1px 1px 5px #eee;\n}\nbutton {\n  opacity: 0.5;\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\";\n  filter: alpha(opacity=50);\n}\nbutton {\n  opacity: 0.75;\n  white-space: nowrap;\n}\nbutton {\n  -webkit-animation-name: myAnimation;\n  -moz-animation-name: myAnimation;\n  animation-name: myAnimation;\n  -webkit-animation-delay: 1s;\n  -moz-animation-delay: 1s;\n  animation-delay: 1s;\n  -webkit-animation-duration: 10s;\n  -moz-animation-duration: 10s;\n  animation-duration: 10s;\n  -webkit-animation-iteration-count: infinite;\n  -moz-animation-iteration-count: infinite;\n  animation-iteration-count: infinite;\n  -webkit-animation-direction: alternate;\n  -moz-animation-direction: alternate;\n  animation-direction: alternate;\n  -webkit-animation-fill-mode: both;\n  -moz-animation-fill-mode: both;\n  animation-fill-mode: both;\n  -webkit-animation-play-state: running;\n  -moz-animation-play-state: running;\n  animation-play-state: running;\n  -webkit-animation-timing-function: ease;\n  -moz-animation-timing-function: ease;\n  animation-timing-function: ease;\n}\nbutton {\n  -webkit-animation: myAnimation 1s ease;\n  -moz-animation: myAnimation 1s ease;\n  animation: myAnimation 1s ease;\n}\nbutton {\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\nsection {\n  -webkit-column-count: 2;\n  -moz-column-count: 2;\n  column-count: 2;\n  -webkit-column-rule: 1px solid #bbb;\n  -moz-column-rule: 1px solid #bbb;\n  column-rule: 1px solid #bbb;\n  -webkit-column-gap: 2em;\n  -moz-column-gap: 2em;\n  column-gap: 2em;\n}\nsection {\n  -webkit-column-count: 2;\n  -moz-column-count: 2;\n  column-count: 2;\n  -webkit-column-rule-width: 1px;\n  -moz-column-rule-width: 1px;\n  column-rule-width: 1px;\n  -webkit-column-rule-style: solid;\n  -moz-column-rule-style: solid;\n  column-rule-style: solid;\n  -webkit-column-rule-color: #bbb;\n  -moz-column-rule-color: #bbb;\n  column-rule-color: #bbb;\n  -webkit-column-width: 200px;\n  -moz-column-width: 200px;\n  column-width: 200px;\n}\nsection {\n  -webkit-column-count: 2;\n  -moz-column-count: 2;\n  column-count: 2;\n  -webkit-column-rule-width: 1px;\n  -moz-column-rule-width: 1px;\n  column-rule-width: 1px;\n  -webkit-column-rule-style: solid;\n  -moz-column-rule-style: solid;\n  column-rule-style: solid;\n  -webkit-column-rule-color: #bbb;\n  -moz-column-rule-color: #bbb;\n  column-rule-color: #bbb;\n  -webkit-column-gap: 2em;\n  -moz-column-gap: 2em;\n  column-gap: 2em;\n}\nbutton {\n  -webkit-background-origin: border, padding;\n  -moz-background-origin: border, padding;\n  background-origin: border-box, padding-box;\n  -webkit-background-clip: border, padding;\n  -moz-background-clip: border, padding;\n  background-clip: border-box, padding-box;\n}\nbutton {\n  -o-transition: all 0.1s ease-in-out 1s;\n  -webkit-transition: all 0.1s ease-in-out 1s;\n  -moz-transition: all 0.1s ease-in-out 1s;\n  transition: all 0.1s ease-in-out 1s;\n  -webkit-backface-visibility: hidden;\n  -moz-backface-visibility: hidden;\n  backface-visibility: hidden;\n}\nbutton {\n  -o-transition-property: all;\n  -webkit-transition-property: all;\n  -moz-transition-property: all;\n  transition-property: all;\n  -o-transition-duration: 0.1s;\n  -webkit-transition-duration: 0.1s;\n  -moz-transition-duration: 0.1s;\n  transition-duration: 0.1s;\n  -o-transition-timing-function: ease-in-out;\n  -webkit-transition-timing-function: ease-in-out;\n  -moz-transition-timing-function: ease-in-out;\n  transition-timing-function: ease-in-out;\n  -o-transition-delay: 1s;\n  -webkit-transition-delay: 1s;\n  -moz-transition-delay: 1s;\n  transition-delay: 1s;\n}\nbutton {\n  -o-transform: rotateY(45deg);\n  -webkit-transform: rotateY(45deg);\n  -moz-transform: rotateY(45deg);\n  transform: rotateY(45deg);\n}\nbutton {\n  -o-transform: perspective(500px);\n  -webkit-transform: perspective(500px);\n  -moz-transform: perspective(500px);\n  transform: perspective(500px);\n}\nbutton {\n  -webkit-perspective: 500;\n  -moz-perspective: 500;\n  perspective: 500;\n}\nsection {\n  -o-border-image: url(\"image.png\") 20% stretch stretch;\n  -webkit-border-image: url(\"image.png\") 20% stretch stretch;\n  -moz-border-image: url(\"image.png\") 20% stretch stretch;\n  border-image: url(\"image.png\") 20% stretch stretch;\n}\nsection {\n  -o-border-image: url(\"image.png\") 20% stretch stretch;\n  -webkit-border-image: url(\"image.png\") 20% stretch stretch;\n  -moz-border-image: url(\"image.png\") 20% stretch stretch;\n  border-image: url(\"image.png\") 20% fill stretch stretch;\n}\np {\n  -webkit-hyphens: auto;\n  -moz-hyphens: auto;\n  hyphens: auto;\n}\nsection {\n  -webkit-overflow-scrolling: touch;\n  overflow-scrolling: touch;\n}\n"
  },
  {
    "path": "test/cases/vendor.inherit.css",
    "content": "button {\n  -webkit-box-shadow: inherit;\n  box-shadow: inherit;\n}\nbutton {\n  opacity: inherit;\n  -ms-filter: inherit;\n  filter: inherit;\n}\nbutton {\n  opacity: inherit;\n  white-space: inherit;\n}\nbutton {\n  -webkit-animation-name: inherit;\n  -moz-animation-name: inherit;\n  animation-name: inherit;\n  -webkit-animation-delay: inherit;\n  -moz-animation-delay: inherit;\n  animation-delay: inherit;\n  -webkit-animation-duration: inherit;\n  -moz-animation-duration: inherit;\n  animation-duration: inherit;\n  -webkit-animation-iteration-count: inherit;\n  -moz-animation-iteration-count: inherit;\n  animation-iteration-count: inherit;\n  -webkit-animation-direction: inherit;\n  -moz-animation-direction: inherit;\n  animation-direction: inherit;\n  -webkit-animation-fill-mode: inherit;\n  -moz-animation-fill-mode: inherit;\n  animation-fill-mode: inherit;\n  -webkit-animation-play-state: inherit;\n  -moz-animation-play-state: inherit;\n  animation-play-state: inherit;\n  -webkit-animation-timing-function: inherit;\n  -moz-animation-timing-function: inherit;\n  animation-timing-function: inherit;\n}\nbutton {\n  -webkit-animation: inherit;\n  -moz-animation: inherit;\n  animation: inherit;\n}\nbutton {\n  -webkit-appearance: inherit;\n  -moz-appearance: inherit;\n  appearance: inherit;\n}\nsection {\n  -webkit-column-count: inherit;\n  -moz-column-count: inherit;\n  column-count: inherit;\n  -webkit-column-rule: inherit;\n  -moz-column-rule: inherit;\n  column-rule: inherit;\n  -webkit-column-gap: inherit;\n  -moz-column-gap: inherit;\n  column-gap: inherit;\n}\nsection {\n  -webkit-column-count: inherit;\n  -moz-column-count: inherit;\n  column-count: inherit;\n  -webkit-column-rule-width: inherit;\n  -moz-column-rule-width: inherit;\n  column-rule-width: inherit;\n  -webkit-column-rule-style: inherit;\n  -moz-column-rule-style: inherit;\n  column-rule-style: inherit;\n  -webkit-column-rule-color: inherit;\n  -moz-column-rule-color: inherit;\n  column-rule-color: inherit;\n  -webkit-column-width: inherit;\n  -moz-column-width: inherit;\n  column-width: inherit;\n}\nsection {\n  -webkit-column-count: inherit;\n  -moz-column-count: inherit;\n  column-count: inherit;\n  -webkit-column-rule-width: inherit;\n  -moz-column-rule-width: inherit;\n  column-rule-width: inherit;\n  -webkit-column-rule-style: inherit;\n  -moz-column-rule-style: inherit;\n  column-rule-style: inherit;\n  -webkit-column-rule-color: inherit;\n  -moz-column-rule-color: inherit;\n  column-rule-color: inherit;\n  -webkit-column-gap: inherit;\n  -moz-column-gap: inherit;\n  column-gap: inherit;\n}\nbutton {\n  -webkit-background-origin: inherit;\n  -moz-background-origin: inherit;\n  background-origin: inherit;\n  -webkit-background-clip: inherit;\n  -moz-background-clip: inherit;\n  background-clip: inherit;\n}\nbutton {\n  -o-transition: inherit;\n  -webkit-transition: inherit;\n  -moz-transition: inherit;\n  transition: inherit;\n  -webkit-backface-visibility: inherit;\n  -moz-backface-visibility: inherit;\n  backface-visibility: inherit;\n}\nbutton {\n  -o-transition-property: inherit;\n  -webkit-transition-property: inherit;\n  -moz-transition-property: inherit;\n  transition-property: inherit;\n  -o-transition-duration: inherit;\n  -webkit-transition-duration: inherit;\n  -moz-transition-duration: inherit;\n  transition-duration: inherit;\n  -o-transition-timing-function: inherit;\n  -webkit-transition-timing-function: inherit;\n  -moz-transition-timing-function: inherit;\n  transition-timing-function: inherit;\n  -o-transition-delay: inherit;\n  -webkit-transition-delay: inherit;\n  -moz-transition-delay: inherit;\n  transition-delay: inherit;\n}\nbutton {\n  -o-transform: inherit;\n  -webkit-transform: inherit;\n  -moz-transform: inherit;\n  transform: inherit;\n}\nbutton {\n  -o-transform: inherit;\n  -webkit-transform: inherit;\n  -moz-transform: inherit;\n  transform: inherit;\n}\nbutton {\n  -webkit-perspective: inherit;\n  -moz-perspective: inherit;\n  perspective: inherit;\n}\nsection {\n  -o-border-image: inherit;\n  -webkit-border-image: inherit;\n  -moz-border-image: inherit;\n  border-image: inherit;\n}\nsection {\n  -o-border-image: inherit;\n  -webkit-border-image: inherit;\n  -moz-border-image: inherit;\n  border-image: inherit;\n}\np {\n  -webkit-hyphens: inherit;\n  -moz-hyphens: inherit;\n  hyphens: inherit;\n}\nsection {\n  -webkit-overflow-scrolling: inherit;\n  overflow-scrolling: inherit;\n}\n"
  },
  {
    "path": "test/cases/vendor.inherit.styl",
    "content": "@import 'nib/vendor'\n@import 'nib/gradients'\n\nvendor-prefixes = webkit moz official\n\nbutton\n  box-shadow: inherit\n\nbutton\n  opacity: inherit\n\nsupport-for-ie = false\n\nbutton\n  opacity: inherit\n  whitespace: inherit\n\nbutton\n  animation-name: inherit;\n  animation-delay: inherit;\n  animation-duration: inherit;\n  animation-iteration-count: inherit;\n  animation-direction: inherit;\n  animation-fill-mode: inherit;\n  animation-play-state: inherit;\n  animation-timing-function: inherit\n\nbutton\n  animation: inherit;\n\nbutton\n  appearance: inherit;\n\nsection\n  column-count: inherit;\n  column-rule: inherit;\n  column-gap: inherit;\n\nsection\n  column-count: inherit;\n  column-rule-width: inherit;\n  column-rule-style: inherit;\n  column-rule-color: inherit;\n  column-width: inherit;\n\nsection\n  column-count: inherit;\n  column-rule-width: inherit;\n  column-rule-style: inherit;\n  column-rule-color: inherit;\n  column-gap: inherit;\n\nprepend(vendor-prefixes, o)\n\nbutton\n  background-origin: inherit;\n  background-clip: inherit;\n\nbutton\n  transition: inherit\n  backface-visibility: inherit\n\nbutton\n  transition-property: inherit\n  transition-duration: inherit\n  transition-timing-function: inherit\n  transition-delay: inherit\n\nbutton\n  transform: inherit\n\nbutton\n  transform: inherit\n\nbutton\n  perspective: inherit\n\nsection\n  border-image: inherit\n\nsection\n  border-image: inherit;\n\np\n  hyphens: inherit\n\nsection\n  overflow-scrolling: inherit\n"
  },
  {
    "path": "test/cases/vendor.initial.css",
    "content": "button {\n  -webkit-box-shadow: initial;\n  box-shadow: initial;\n}\nbutton {\n  opacity: initial;\n  -ms-filter: initial;\n  filter: initial;\n}\nbutton {\n  opacity: initial;\n  white-space: initial;\n}\nbutton {\n  -webkit-animation-name: initial;\n  -moz-animation-name: initial;\n  animation-name: initial;\n  -webkit-animation-delay: initial;\n  -moz-animation-delay: initial;\n  animation-delay: initial;\n  -webkit-animation-duration: initial;\n  -moz-animation-duration: initial;\n  animation-duration: initial;\n  -webkit-animation-iteration-count: initial;\n  -moz-animation-iteration-count: initial;\n  animation-iteration-count: initial;\n  -webkit-animation-direction: initial;\n  -moz-animation-direction: initial;\n  animation-direction: initial;\n  -webkit-animation-fill-mode: initial;\n  -moz-animation-fill-mode: initial;\n  animation-fill-mode: initial;\n  -webkit-animation-play-state: initial;\n  -moz-animation-play-state: initial;\n  animation-play-state: initial;\n  -webkit-animation-timing-function: initial;\n  -moz-animation-timing-function: initial;\n  animation-timing-function: initial;\n}\nbutton {\n  -webkit-animation: initial;\n  -moz-animation: initial;\n  animation: initial;\n}\nbutton {\n  -webkit-appearance: initial;\n  -moz-appearance: initial;\n  appearance: initial;\n}\nsection {\n  -webkit-column-count: initial;\n  -moz-column-count: initial;\n  column-count: initial;\n  -webkit-column-rule: initial;\n  -moz-column-rule: initial;\n  column-rule: initial;\n  -webkit-column-gap: initial;\n  -moz-column-gap: initial;\n  column-gap: initial;\n}\nsection {\n  -webkit-column-count: initial;\n  -moz-column-count: initial;\n  column-count: initial;\n  -webkit-column-rule-width: initial;\n  -moz-column-rule-width: initial;\n  column-rule-width: initial;\n  -webkit-column-rule-style: initial;\n  -moz-column-rule-style: initial;\n  column-rule-style: initial;\n  -webkit-column-rule-color: initial;\n  -moz-column-rule-color: initial;\n  column-rule-color: initial;\n  -webkit-column-width: initial;\n  -moz-column-width: initial;\n  column-width: initial;\n}\nsection {\n  -webkit-column-count: initial;\n  -moz-column-count: initial;\n  column-count: initial;\n  -webkit-column-rule-width: initial;\n  -moz-column-rule-width: initial;\n  column-rule-width: initial;\n  -webkit-column-rule-style: initial;\n  -moz-column-rule-style: initial;\n  column-rule-style: initial;\n  -webkit-column-rule-color: initial;\n  -moz-column-rule-color: initial;\n  column-rule-color: initial;\n  -webkit-column-gap: initial;\n  -moz-column-gap: initial;\n  column-gap: initial;\n}\nbutton {\n  -webkit-background-origin: initial;\n  -moz-background-origin: initial;\n  background-origin: initial;\n  -webkit-background-clip: initial;\n  -moz-background-clip: initial;\n  background-clip: initial;\n}\nbutton {\n  -o-transition: initial;\n  -webkit-transition: initial;\n  -moz-transition: initial;\n  transition: initial;\n  -webkit-backface-visibility: initial;\n  -moz-backface-visibility: initial;\n  backface-visibility: initial;\n}\nbutton {\n  -o-transition-property: initial;\n  -webkit-transition-property: initial;\n  -moz-transition-property: initial;\n  transition-property: initial;\n  -o-transition-duration: initial;\n  -webkit-transition-duration: initial;\n  -moz-transition-duration: initial;\n  transition-duration: initial;\n  -o-transition-timing-function: initial;\n  -webkit-transition-timing-function: initial;\n  -moz-transition-timing-function: initial;\n  transition-timing-function: initial;\n  -o-transition-delay: initial;\n  -webkit-transition-delay: initial;\n  -moz-transition-delay: initial;\n  transition-delay: initial;\n}\nbutton {\n  -o-transform: initial;\n  -webkit-transform: initial;\n  -moz-transform: initial;\n  transform: initial;\n}\nbutton {\n  -o-transform: initial;\n  -webkit-transform: initial;\n  -moz-transform: initial;\n  transform: initial;\n}\nbutton {\n  -webkit-perspective: initial;\n  -moz-perspective: initial;\n  perspective: initial;\n}\nsection {\n  -o-border-image: initial;\n  -webkit-border-image: initial;\n  -moz-border-image: initial;\n  border-image: initial;\n}\nsection {\n  -o-border-image: initial;\n  -webkit-border-image: initial;\n  -moz-border-image: initial;\n  border-image: initial;\n}\np {\n  -webkit-hyphens: initial;\n  -moz-hyphens: initial;\n  hyphens: initial;\n}\nsection {\n  -webkit-overflow-scrolling: initial;\n  overflow-scrolling: initial;\n}\n"
  },
  {
    "path": "test/cases/vendor.initial.styl",
    "content": "@import 'nib/vendor'\n@import 'nib/gradients'\n\nvendor-prefixes = webkit moz official\n\nbutton\n  box-shadow: initial\n\nbutton\n  opacity: initial\n\nsupport-for-ie = false\n\nbutton\n  opacity: initial\n  whitespace: initial\n\nbutton\n  animation-name: initial;\n  animation-delay: initial;\n  animation-duration: initial;\n  animation-iteration-count: initial;\n  animation-direction: initial;\n  animation-fill-mode: initial;\n  animation-play-state: initial;\n  animation-timing-function: initial\n\nbutton\n  animation: initial;\n\nbutton\n  appearance: initial;\n\nsection\n  column-count: initial;\n  column-rule: initial;\n  column-gap: initial;\n\nsection\n  column-count: initial;\n  column-rule-width: initial;\n  column-rule-style: initial;\n  column-rule-color: initial;\n  column-width: initial;\n\nsection\n  column-count: initial;\n  column-rule-width: initial;\n  column-rule-style: initial;\n  column-rule-color: initial;\n  column-gap: initial;\n\nprepend(vendor-prefixes, o)\n\nbutton\n  background-origin: initial;\n  background-clip: initial;\n\nbutton\n  transition: initial\n  backface-visibility: initial\n\nbutton\n  transition-property: initial\n  transition-duration: initial\n  transition-timing-function: initial\n  transition-delay: initial\n\nbutton\n  transform: initial\n\nbutton\n  transform: initial\n\nbutton\n  perspective: initial\n\nsection\n  border-image: initial\n\nsection\n  border-image: initial;\n\np\n  hyphens: initial\n\nsection\n  overflow-scrolling: initial\n"
  },
  {
    "path": "test/cases/vendor.placeholder.css",
    "content": "body::-webkit-input-placeholder {\n  color: #333;\n  font-weight: normal;\n  font-family: Helvetica, arial, sans-serif;\n}\nbody:-moz-placeholder {\n  color: #333;\n  font-weight: normal;\n  font-family: Helvetica, arial, sans-serif;\n}\nbody::-moz-placeholder {\n  color: #333;\n  font-weight: normal;\n  font-family: Helvetica, arial, sans-serif;\n}\nbody:-ms-input-placeholder {\n  color: #333;\n  font-weight: normal;\n  font-family: Helvetica, arial, sans-serif;\n}\n.placeholder-red::-webkit-input-placeholder {\n  color: #f00;\n}\n.placeholder-red:-moz-placeholder {\n  color: #f00;\n}\n.placeholder-red::-moz-placeholder {\n  color: #f00;\n}\n.placeholder-red:-ms-input-placeholder {\n  color: #f00;\n}\n.placeholder-green::-webkit-input-placeholder {\n  color: #008000;\n}\n.placeholder-green:-moz-placeholder {\n  color: #008000;\n}\n.placeholder-green::-moz-placeholder {\n  color: #008000;\n}\n.placeholder-green:-ms-input-placeholder {\n  color: #008000;\n}\n.input-placeholder-gray::-webkit-input-placeholder {\n  color: #808080;\n}\n.input-placeholder-gray:-moz-placeholder {\n  color: #808080;\n}\n.input-placeholder-gray::-moz-placeholder {\n  color: #808080;\n}\n.input-placeholder-gray:-ms-input-placeholder {\n  color: #808080;\n}\ntextarea::-webkit-input-placeholder {\n  font-style: italic;\n  font-weight: bold;\n  padding: 4px 10px;\n}\ntextarea:-moz-placeholder {\n  font-style: italic;\n  font-weight: bold;\n  padding: 4px 10px;\n}\ntextarea::-moz-placeholder {\n  font-style: italic;\n  font-weight: bold;\n  padding: 4px 10px;\n}\ntextarea:-ms-input-placeholder {\n  font-style: italic;\n  font-weight: bold;\n  padding: 4px 10px;\n}\n"
  },
  {
    "path": "test/cases/vendor.placeholder.styl",
    "content": "@import 'nib/vendor'\n\n$placeholderFont = Helvetica, arial, sans-serif\n\nbody\n  placeholder(color #333, font-weight normal, font-family $placeholderFont)\n\n.placeholder-red\n  placeholder(color red,)\n\ngreen-placeholder()\n  color green\n.placeholder-green\n  placeholder(green-placeholder)\n\n.input-placeholder-gray\n  input-placeholder(color gray,)\n\ntextarea\n  placeholder((font-style italic) (font-weight bold) (padding '4px 10px'))\n"
  },
  {
    "path": "test/cases/vendor.styl",
    "content": "@import 'nib/vendor'\n@import 'nib/gradients'\n\nvendor-prefixes = webkit moz official\n\nbutton\n  box-shadow: 1px 1px 5px #eee\n\nbutton\n  opacity: 0.5\n\nsupport-for-ie = false\n\nbutton\n  opacity: 0.75\n  whitespace: no-wrap\n\nbutton\n  animation-name: myAnimation;\n  animation-delay: 1s;\n  animation-duration: 10s;\n  animation-iteration-count: infinite;\n  animation-direction: alternate;\n  animation-fill-mode: both;\n  animation-play-state: running;\n  animation-timing-function: ease\n\nbutton\n  animation: myAnimation 1s ease;\n\nbutton\n  appearance: none;\n\nsection\n  column-count: 2;\n  column-rule: 1px solid #bbb;\n  column-gap: 2em;\n\nsection\n  column-count: 2;\n  column-rule-width: 1px;\n  column-rule-style: solid;\n  column-rule-color: #bbb;\n  column-width: 200px;\n\nsection\n  column-count: 2;\n  column-rule-width: 1px;\n  column-rule-style: solid;\n  column-rule-color: #bbb;\n  column-gap: 2em;\n\nprepend(vendor-prefixes, o)\n\nbutton\n  background-origin: border-box, padding-box;\n  background-clip: border-box, padding-box;\n\nbutton\n  transition: all 0.1s ease-in-out 1s\n  backface-visibility: hidden\n\nbutton\n  transition-property: all\n  transition-duration: 0.1s\n  transition-timing-function: ease-in-out\n  transition-delay: 1s\n\nbutton\n  transform: rotateY(45deg)\n\nbutton\n  transform: perspective(500px)\n\nbutton\n  perspective: 500\n\nsection\n  border-image: url(\"image.png\") 20% stretch stretch;\n\nsection\n  border-image: url(\"image.png\") 20% fill stretch stretch;\n\np\n  hyphens: auto\n\nsection\n  overflow-scrolling: touch\n"
  },
  {
    "path": "test/cases/vendor.values.css",
    "content": "button {\n  -webkit-transition: -webkit-transform;\n  -moz-transition: -moz-transform;\n  -o-transition: -o-transform;\n  -ms-transition: -ms-transform;\n  transition: transform;\n}\nbutton {\n  -webkit-transition: -webkit-transform 0.3s 0.2s linear;\n  -moz-transition: -moz-transform 0.3s 0.2s linear;\n  -o-transition: -o-transform 0.3s 0.2s linear;\n  -ms-transition: -ms-transform 0.3s 0.2s linear;\n  transition: transform 0.3s 0.2s linear;\n}\nbutton {\n  -webkit-transition: -webkit-transform cubic-bezier(1, 1, 1);\n  -moz-transition: -moz-transform cubic-bezier(1, 1, 1);\n  -o-transition: -o-transform cubic-bezier(1, 1, 1);\n  -ms-transition: -ms-transform cubic-bezier(1, 1, 1);\n  transition: transform cubic-bezier(1, 1, 1);\n}\nbutton {\n  -webkit-transition: -webkit-transform 2s, width 0.3s linear, height;\n  -moz-transition: -moz-transform 2s, width 0.3s linear, height;\n  -o-transition: -o-transform 2s, width 0.3s linear, height;\n  -ms-transition: -ms-transform 2s, width 0.3s linear, height;\n  transition: transform 2s, width 0.3s linear, height;\n}\nbutton {\n  -webkit-transition: height, -webkit-transform 2s, width 0.3s linear;\n  -moz-transition: height, -moz-transform 2s, width 0.3s linear;\n  -o-transition: height, -o-transform 2s, width 0.3s linear;\n  -ms-transition: height, -ms-transform 2s, width 0.3s linear;\n  transition: height, transform 2s, width 0.3s linear;\n}\nbutton {\n  -webkit-transition: -webkit-transform 1s !important;\n  -moz-transition: -moz-transform 1s !important;\n  -o-transition: -o-transform 1s !important;\n  -ms-transition: -ms-transform 1s !important;\n  transition: transform 1s !important;\n}\nbutton {\n  -webkit-transition: -webkit-transform, height !important;\n  -moz-transition: -moz-transform, height !important;\n  -o-transition: -o-transform, height !important;\n  -ms-transition: -ms-transform, height !important;\n  transition: transform, height !important;\n}\nbutton {\n  -webkit-transition: -webkit-transform 1s, width 2s linear, cubic-bezier(1, 1, 1);\n  -moz-transition: -moz-transform 1s, width 2s linear, cubic-bezier(1, 1, 1);\n  -o-transition: -o-transform 1s, width 2s linear, cubic-bezier(1, 1, 1);\n  -ms-transition: -ms-transform 1s, width 2s linear, cubic-bezier(1, 1, 1);\n  transition: transform 1s, width 2s linear, cubic-bezier(1, 1, 1);\n}\n"
  },
  {
    "path": "test/cases/vendor.values.styl",
    "content": "@import 'nib/vendor'\n\nbutton\n  transition: transform\n\nbutton\n  transition: transform .3s .2s linear\n\nbutton\n  transition: transform cubic-bezier(1,1,1)\n\nbutton\n  transition: transform 2s, width .3s linear, height\n\nbutton\n  transition: height, transform 2s, width .3s linear\n\nbutton\n  transition: transform 1s !important\n\nbutton\n  transition: transform, height !important\n\nbutton\n  transition: transform 1s, width 2s linear, cubic-bezier(1,1,1)\n"
  },
  {
    "path": "test/clearfix.styl",
    "content": "@import 'nib/clearfix'\n\nsupport-for-ie = true\n\n#clearfix-left-only,\n#clearfix-left-right\n  clearfix()\n  background: blue\n  div\n    background: green\n    margin: 10px\n    width: 47%\n  div.left\n    float: left\n  div.right\n    float: right\n\n#clearfix-left-right\n  margin-top: 10px\n"
  },
  {
    "path": "test/color-images.styl",
    "content": "@import 'nib/color-image'\n\n#color-images\n  .rgba\n    background: color-image(rgba(blue, 0.3))\n\n  .rgb\n    background: color-image(rgb(200, 150, 150))\n\n  .hex\n    background: color-image(#fff)\n\n  .hexa\n    background: color-image(#ffffff80)\n\n  .hexa-short\n    background: color-image(#0005)\n"
  },
  {
    "path": "test/gradients.styl",
    "content": "\n@import 'nib/gradients'\n\n#gradients tr\n  height: 50px\n  color: white\n  td\n    padding: 0\n    width: 150px\n    &:first-child\n      border-right: 1px solid #fff\n\n#gradients\n  tr:nth-child(1)\n    td:first-child\n      background: linear-gradient(top, yellow, blue)\n    td:last-child\n      background: linear-gradient-image(50px, yellow, blue)\n  tr:nth-child(2)\n    td:first-child\n      background: linear-gradient(top, red, green, yellow, blue)\n    td:last-child\n      background: linear-gradient-image(50px, red, green, yellow, blue)\n  tr:nth-child(3)\n    td:first-child\n      background: linear-gradient(top, red, green 10%, 90% yellow, blue)\n    td:last-child\n      background: linear-gradient-image(50px, red, green 10%, 90% yellow, blue)\n  tr:nth-child(4)\n    td:first-child\n      background: linear-gradient(top, red 15, green 80%, white, 90% yellow, blue)\n    td:last-child\n      background: linear-gradient-image(50px, red 15, green 80%, white, 90% yellow, blue)\n  tr:nth-child(5)\n    td:first-child\n      background: linear-gradient(bottom, #fff, #000)\n    td:last-child\n      background: linear-gradient-image(50px bottom, #fff, #000)\n  tr:nth-child(6)\n    td:first-child\n      background: linear-gradient(left, #fff, #000)\n    td:last-child\n      background: linear-gradient-image(150px left, #fff, #000)\n  tr:nth-child(7)\n    td:first-child\n      background: linear-gradient(right, #008AB4, #E9FAFF, 2% #90E4FD, #1FCBFF, 80% #008AB4)\n    td:last-child\n      background: linear-gradient-image(150px right, #008AB4, #E9FAFF, 2% #90E4FD, #1FCBFF, 80% #008AB4)\n  tr:nth-child(8)\n    td:first-child\n      background: linear-gradient(top, red, 50% green, blue)\n    td:last-child\n      background: linear-gradient-image(50px top, red, 50% green, blue)\n  tr:nth-child(9)\n    td:first-child\n      background: linear-gradient(50px top, red, green, yellow, blue)\n"
  },
  {
    "path": "test/index.pug",
    "content": "html\n  head\n    title Nib\n    link(rel='stylesheet', href='/test.css')\n    link(rel='stylesheet', href='/gradients.css')\n    link(rel='stylesheet', href='/buttons.css')\n    link(rel='stylesheet', href='/clearfix.css')\n    link(rel='stylesheet', href='/color-images.css')\n    script(src='/jquery.min.js')\n    script.\n      $(function(){\n        $(':button, :submit, a.button').click(function(){\n          return false;\n        });\n      });\n  body\n    h2 Gradients\n    table#gradients\n      - var n = 9\n      tbody\n        - while (n--)\n          tr\n            td\n            td\n    h2 Color images\n    #color-images\n      .rgba rgba()\n      .hexa-short #0003\n      .hexa #ffffff80\n      .rgb rgb()\n      .hex #fff\n    h2 Clearfix\n    div#clearfix-left-only\n      div\n        | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut commodo\n        | turpis quis mauris tempus commodo a non tellus. Sed eu convallis\n        | mauris. Donec scelerisque lacus quis orci viverra tincidunt. Nunc sed\n        | risus lectus. Proin vulputate elit sed eros consectetur interdum.\n    div#clearfix-left-right\n      div.left\n        | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut commodo\n        | turpis quis mauris tempus commodo a non tellus. Sed eu convallis\n        | mauris. Donec scelerisque lacus quis orci viverra tincidunt. Nunc sed\n        | risus lectus. Proin vulputate elit sed eros consectetur interdum.\n      div.right\n        | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut commodo\n        | turpis quis mauris tempus commodo a non tellus. Sed eu convallis\n        | mauris. Donec scelerisque lacus quis orci viverra tincidunt. Nunc sed\n        | risus lectus. Proin vulputate elit sed eros consectetur interdum.\n"
  },
  {
    "path": "test/public/.gitignore",
    "content": ""
  },
  {
    "path": "test/runner.js",
    "content": "/**\n * Module dependencies.\n */\nvar stylus = require('stylus'),\n    nib = require('../'),\n    expect = require('chai').expect,\n    fs = require('fs');\n\n/**\n * Read test/cases directory and filter all `.styl` files, then remove\n * this extension for each file in the collection and prepare to test.\n */\nvar cases = fs.readdirSync('test/cases').filter(function(file){\n  return ~file.indexOf('.styl'); // bitwise flip to treat result as truthy.\n}).map(function(file){\n  return file.replace('.styl', '');\n});\n\n/*\n * For each `.styl` and `.css` pair in `test/cases`, compile stylus to css\n * and compare actual result to expected css.\n */\ndescribe('integration', function(){\n  cases.forEach(function(test){\n    var name = test.replace(/[-.]/g, ' ');\n    it(name, function(){\n      var path = 'test/cases/' + test + '.styl';\n      var styl = fs.readFileSync(path, 'utf8').replace(/\\r/g, '');\n      var css = fs.readFileSync('test/cases/' + test + '.css', 'utf8').replace(/\\r/g, '').trim();\n\n      var style = stylus(styl)\n        .use(nib())\n        .set('filename', path)\n        .define('url', stylus.url());\n\n      if (~test.indexOf('compress')) {\n        style.set('compress', true);\n      }\n\n      style.render(function(err, actual){\n        if (err) throw err;\n        expect(actual.trim()).equal(css);\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "test/server.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar stylus = require('stylus'),\n    serveStatic = require('serve-static'),\n    connect = require('connect'),\n    pug = require('pug'),\n    nib = require('../');\n\n/**\n * Server.\n */\n\nvar server = connect();\n\nfunction compile(str, path) {\n  return stylus(str)\n    .set('filename', path)\n    .use(nib());\n}\n\nserver.use(stylus.middleware({\n    src: __dirname\n  , dest: __dirname + '/public'\n  , force: true\n  , compile: compile\n}));\n\nserver.use(serveStatic(__dirname + '/public'));\n\nserver.use(function(req, res){\n  pug.renderFile(__dirname + '/index.pug', function(err, str){\n    res.setHeader('Content-Type', 'text/html; charset=utf-8');\n    res.end(str);\n  });\n});\n\nserver.listen(3000);\nconsole.log('Server listening on port 3000');\n"
  },
  {
    "path": "test/test.styl",
    "content": "@import 'nib/vendor'\n\ngray = #ebebeb\n\nbody\n  padding: 50px\n\nh1, h2, h3\n  font-family: helvetica, arial\n\ntable\n  border-collapse: collapse\n  td\n    padding: 3px 10px\n    border-left: 1px solid #eee\n    &:first-child\n      font: 12px helvetica, arial\n  tr:nth-child(4n)\n    border-bottom: 1px solid #eee\n    td\n      padding-bottom: 15px\n  tr:nth-child(4n+1)\n    td\n      padding-top: 15px\n\n#color-images\n  width: 400\n  height: 300\n  background: url(http://f.cl.ly/items/0W1R2J2L3g2C2L3p1l1e/Image%202011.08.26%2011:42:20%20AM.png) center\n  box-sizing: border-box\n  padding-top: 130px\n  text-align: center\n\n  div\n    display: inline-block\n    width: 50px\n    height: 50px\n    margin: 0 15px\n    box-sizing: border-box\n    padding-top: 18px\n    border: 1px solid #fff\n    font: 9px Lucida Grande\n    color: #666\n"
  }
]