Compare commits

...

120 Commits

Author SHA1 Message Date
Chris Eppstein
1dd2563484 Use the default compass images directory in the spriting tutorial 2011-09-16 15:20:42 -07:00
Chris Eppstein
37c58300c0 Merge pull request #540 from boriskaiser/stable
update PIE.htc to Version 1.0beta4
2011-09-16 15:19:22 -07:00
Eric Meyer
7fced9373e added detail to rhythm-border documentation. 2011-09-12 14:38:36 -06:00
Eric Meyer
92981fb5d3 Merge pull request #509 from ericam/stable
user-select mixin with docs and tests
2011-09-12 13:23:30 -07:00
Eric Meyer
f4d1a8255c changelog for user-select 2011-09-12 14:18:15 -06:00
Eric Meyer
aef3c5a07e Merge branch 'stable' of github.com:chriseppstein/compass into stable 2011-09-12 14:04:24 -06:00
Chris Eppstein
93811a66c4 Merge pull request #548 from brikou/patch-1
removed useless unit
2011-09-11 23:45:00 -07:00
Brikou CARRE
a8ff39a8e4 removed useless unit 2011-09-12 09:34:45 +03:00
Boris Kaiser
6dbce65e32 update PIE.htc to Version 1.0beta5 2011-09-11 09:23:39 +02:00
Boris Kaiser
2691312067 update PIE.htc to Version 1.0beta4 2011-08-19 13:27:00 +02:00
Eric Meyer
d0067d7122 user-select mixin with docs and tests 2011-08-08 23:04:24 -04:00
Scott Davis
cdf11d7002 Merge pull request #485 from adamnbowen/patch-1
trivial documentation change
2011-07-25 23:24:42 -07:00
Scott Davis
0de35e6d2b Merge pull request #479 from dbussink/stable
Use more lenient timing, fixes feature on Rubinius
2011-07-25 23:07:08 -07:00
Adam Bowen
84e3746325 "to the right" doesn't make sense with how the page is laid out
"listed below the display value" is a bit more relevant to the current documentation layout
2011-07-20 16:05:47 -07:00
Dirkjan Bussink
45db63c35e Use more lenient timing, fixes feature on Rubinius 2011-07-18 23:01:25 +02:00
Chris Eppstein
04800afc63 Version Bump. 2011-07-10 17:32:41 -07:00
Chris Eppstein
5b540f070d Update changelog for 0.11.5 2011-07-10 17:32:20 -07:00
Irina Dumitrascu
07819ccfbd Reset only the block HTML elements #339
- used elements-of-type(html5-block) in all the reset stylesheets
  (instead of duplicate tag enumerations)
- removed dialog
- canvas is inline, not block

Closes GH-339, GH-462.
2011-07-10 17:26:23 -07:00
Scott Davis
ff94ab79c9 Merge pull request #468 from ericam/stable
fix warning logic in vertical-rhythms module
2011-07-09 22:41:54 -07:00
Eric Meyer
a4b35e7515 fix warning logic in vertical-rhythms module 2011-07-09 14:17:30 -06:00
Dirkjan Bussink
42bb556329 Fix failing test when updating to latest SASS
This makes rake test green on Rubinius, 1.8.7 and 1.9.2.
Removed the Gemfile.lock in the previous version so everything
can be updated.

Closes GH-456.
2011-07-03 14:13:08 -07:00
Dirkjan Bussink
10168fe147 Gemfile.lock should not be part of a library / gem
http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
2011-07-03 14:12:10 -07:00
Chris Eppstein
0257a58eea Merge pull request #455 from twalpole/transition_typo
fix typo
2011-07-03 11:00:29 -07:00
Thomas Walpole
7a814581e7 fix typo 2011-07-03 10:48:43 -07:00
Chris Eppstein
539f206e51 Fix issue with parent directory references within the sass_path in the compass compiler.
Closes GH-409.
2011-07-03 10:45:33 -07:00
Chris Eppstein
432309d1a7 Version bump. 2011-07-03 00:32:59 -07:00
Chris Eppstein
27c8dfbee8 Update changelog 2011-07-03 00:32:12 -07:00
Chris Eppstein
b8b6af9d49 Return a non-zero exit code if there are any stylesheet compilation errors. Closes GH-432. 2011-07-03 00:18:58 -07:00
Chris Eppstein
23d3d341de Fix test failures. 2011-07-02 22:51:26 -07:00
Chris Eppstein
36f2e56f1c Better docs for the shadow mixins. Closes GH-433. 2011-07-02 22:08:00 -07:00
Matt Fawcett
b2b9d57505 Include the Compass logger to prevent "uninitialized constant Compass::Logger"
Closes GH-438.
2011-07-02 21:59:09 -07:00
Stafford Brooke
842e877bc0 Broken link fixed to what I think is the correct section of the SASS docs.
Closes GH-435.
2011-07-02 21:25:38 -07:00
Lorin Tackett
8d8d3eecbc grid-background vertical rhythm should be based off of $blueprint-font-size, rather than a static value.
Closes GH-429.
2011-07-02 21:21:35 -07:00
ltackett
d7115caad6 :focus should not use shorthand border property, since it only need to change the border-color
Closes GH-367.
2011-07-02 21:17:22 -07:00
Chris Eppstein
efb484778d update changelog 2011-07-02 21:09:04 -07:00
Costin Bereveanu
3b18b72d64 Fix absolute path detection on Windows.
Closes GH-451.
2011-07-02 21:07:49 -07:00
Chris Eppstein
b7e66a7658 Fix the mime type returned for svg images. Closes GH-442. 2011-07-02 20:57:24 -07:00
Chris Eppstein
ab270c1adb Fix edge case issue when there's no cache location. 2011-07-02 18:05:02 -07:00
Chris Eppstein
349e29f7ca Fix broken test. 2011-07-02 17:54:38 -07:00
German M. Bravo
8837b0a347 Transitions accepting multiple transitions separated by commas 2011-07-02 17:50:46 -07:00
Glenn McLelland
239e43b4e0 Added force-wrap mixin to prevent URLs and long lines of text from breaking layouts.
Closes GH-321
2011-07-02 17:42:37 -07:00
Chris Eppstein
87c79bcfb6 update the font-face example 2011-07-02 10:34:20 -07:00
Chris Eppstein
7ffe2c3a64 Update CHANGELOG 2011-07-01 22:20:42 -07:00
Chris Eppstein
89ad638a1d When the unit is in pixels, round down in the leader and up in the trailer. 2011-07-01 22:16:29 -07:00
Chris Eppstein
157c2e0518 Ensure there is a minimum of padding in each line when calculating how many lines are needed. 2011-07-01 22:16:29 -07:00
Chris Eppstein
6d2040b86a Support absolute font sizing in the vertical rhythm module 2011-07-01 22:16:29 -07:00
Chris Eppstein
94af47d1ca Update homepage 2011-06-30 18:04:40 -07:00
Chris Eppstein
b6fef2fae9 Merge pull request #447 from nimbupani/msfilter
Removing -ms-filter as it drives IE9+ crazy. plus existing filter works a
2011-06-28 23:06:26 -07:00
Divya Manian
ff61678572 Adding the generated css files from the msfilter change 2011-06-28 23:00:56 -07:00
Divya Manian
461a589a61 Removing -ms-filter as it drives IE9+ crazy. plus existing filter works anyway for IE9- 2011-06-28 22:19:39 -07:00
Chris Eppstein
6d2f7f41e5 In case you want to buy stuff. 2011-06-25 12:01:43 -07:00
Scott Davis
ec29ec4b33 Merge pull request #439 from travis-ci/pull-gemfile
Update Gemfile to use rake 0.8.7
2011-06-21 09:03:38 -07:00
Sven Fuchs
6170ab119f Update Gemfile to use rake 0.8.7
rake 0.9.x won't be compatible with Cucumber::Rake::Task::ForkedCucumberRunner which uses the RUBY constant, resulting in 'uninitialized constant Cucumber::Rake::Task::ForkedCucumberRunner::RUBY'
2011-06-21 16:51:49 +02:00
Chris Eppstein
852f033160 Handle pathnames being assigned to the working path of a command.
Closes GH-434.
2011-06-19 12:56:01 -07:00
Chris Eppstein
82d739f4dd Fix docs 2011-06-19 12:56:01 -07:00
Chris Eppstein
1d32683b5d Fix compass version in the docs. 2011-06-19 12:56:00 -07:00
Scott Davis
c8cb9f2e39 Merge pull request #430 from backspace/patch-1
Fixed typo
2011-06-13 19:31:28 -07:00
backspace
569abeedb2 Fixed typo 2011-06-13 19:20:08 -07:00
Scott Davis
84f7b7a5ef added docs for chunky_png_options config 2011-06-12 15:16:20 -04:00
Scott Davis
dc504ecd8e pass new config options to chunky_png canvas on image save 2011-06-12 13:37:20 -04:00
Scott Davis
db74d8bdb3 new config option to pass options along to chunky_png 2011-06-12 13:36:49 -04:00
Scott Davis
6712c65ce7 Merge branch 'stable' of github.com:chriseppstein/compass into stable 2011-06-12 02:56:27 -04:00
Scott Davis
6bb9904834 forgot to add features to the ci file 2011-06-12 02:55:36 -04:00
Chris Eppstein
2d81e0a506 Fix bug 2011-06-11 23:45:00 -07:00
Chris Eppstein
a6a80221ee update test for pie-clearfix 2011-06-11 23:35:29 -07:00
Chris Eppstein
6ca90dccc3 Update changelog for clearfix 2011-06-11 23:27:38 -07:00
Chris Eppstein
809394a1e9 make the micro-clearfix a replacement for pie-clearfix. Add a new legacy-pie-clearfix for users who still need the old clearfix. 2011-06-11 23:27:38 -07:00
Scott Davis
890236a8ad gemfile 2011-06-12 02:26:09 -04:00
Scott Davis
b352e8b140 test file for sprite command 2011-06-12 02:25:10 -04:00
Scott Davis
b9234e50d0 added test for sprite command and removed specs 2011-06-12 02:22:05 -04:00
Scott Davis
0f8cd61436 updated change log 2011-06-12 01:56:03 -04:00
Scott Davis
f0f231a041 Merge branch 'stable' of github.com:chriseppstein/compass into stable 2011-06-12 01:49:43 -04:00
Chris Eppstein
7d68162499 changelog updates. 2011-06-11 22:49:12 -07:00
Scott Davis
c4e3a83cda updated docs to reflect sprite hash change 2011-06-12 01:48:09 -04:00
Scott Davis
adac73a951 updated docs to reflect engine change 2011-06-12 01:47:38 -04:00
Scott Davis
41bd992a8d fixed :sprite_generated callback its now passing along the canvas 2011-06-12 01:42:38 -04:00
Scott Davis
1f17603aea Merge branch 'stable' of github.com:chriseppstein/compass into stable 2011-06-12 01:38:42 -04:00
Chris Eppstein
894e5d51a0 Merge commit 'cb6068c9a351cd43111e7a89f2c69c095a3eeec6' into stable
* commit 'cb6068c9a351cd43111e7a89f2c69c095a3eeec6':
  Adding Micro Clearfix which is new and uses less CSS than PIE Clearfix
2011-06-11 22:38:13 -07:00
Scott Davis
6b7f2c2419 updated tests 2011-06-12 01:37:44 -04:00
Scott Davis
cebe25a460 implimented engine in sprite_map 2011-06-12 01:37:21 -04:00
Scott Davis
80412b5c1d added engine to sprite_map 2011-06-12 01:35:50 -04:00
Scott Davis
b6cf4f5213 refactored engine to be a class and turned on best compression for chunky_png 2011-06-12 01:35:19 -04:00
Scott Davis
6f95c9d17a added canvas to engine 2011-06-12 01:34:33 -04:00
Chris Eppstein
fa165a3d84 bump chunky_png version dependency. 2011-06-11 22:28:56 -07:00
Chris Eppstein
39df74c55a Add a new command to clean up generated files 2011-06-11 22:28:38 -07:00
Chris Eppstein
2be7567bb2 Better error message when a sub command is missing. 2011-06-11 21:54:56 -07:00
Chris Eppstein
ab25ba0b40 Code cleanup 2011-06-11 21:54:32 -07:00
Chris Eppstein
c069babe76 log removal actions in the compiler output. 2011-06-11 21:54:12 -07:00
Scott Davis
7454e522a5 engine abstract 2011-06-12 00:52:36 -04:00
Scott Davis
3d4a57c3c1 engine test 2011-06-12 00:52:05 -04:00
Scott Davis
a6ea065eaa split sprite map class into modules for easy reading it was way to long 2011-06-12 00:16:11 -04:00
Scott Davis
21a5a2ae3d sprite module files 2011-06-12 00:15:23 -04:00
Chris Eppstein
437842caa1 Revert "Adding changelog entry"
This reverts commit d4422d108e.
2011-06-11 19:39:33 -07:00
Chris Eppstein
40e2f330e6 Merge remote-tracking branch 'pfeiffer/cache_busting' into stable
* pfeiffer/cache_busting:
  Removing unneeded 'unquote' from tests
  Adding note about path based asset cache busting in to documentation
  Adding changelog entry
  Fix comments for asset_cache_buster
  Make asset_cache_buster return a hash with path and query, while still maintaining support for cache busting via query string if a string is returned.
  Extend cache busting to allow for path manipulation
2011-06-11 17:37:55 -07:00
Chris Eppstein
5999c7ba6c Sass and compass both have :quiet options with different meanings. So we have to separate the options out. 2011-06-11 16:49:28 -07:00
Chris Eppstein
59a6d5706d Fix a bug in the importer string representation. 2011-06-11 13:47:59 -07:00
Chris Eppstein
b3ed3705c9 fix bug in test runner 2011-06-11 12:11:00 -07:00
Chris Eppstein
ecd1efdea4 Fix for a compass validator bug due to some internal compass changes. 2011-06-11 11:33:01 -07:00
Chris Eppstein
e4a22c4cbf Fix stable version 2011-06-11 11:06:43 -07:00
Chris Eppstein
47572acc50 Spelling. 2011-06-11 10:24:17 -07:00
Chris Eppstein
69cf947cab Prepare the next release version 2011-06-10 15:59:38 -07:00
Chris Eppstein
3473e7d63a Merge branch 'stable'
* stable:
  Version Bump & Prepare for v0.11.2
  Strong tags in the docs should be bold.
  typo: appliction
  Update test case for flexible box.
  Enable IE 10 support for flexible box with the -ms prefix.
2011-06-10 15:56:46 -07:00
Chris Eppstein
00195296b8 Merge pull request #405 from dpogue/patch-1
Enable IE 10 support for flexible box with the -ms prefix.
2011-06-10 15:43:41 -07:00
Chris Eppstein
b6bec9ad62 Merge pull request #424 from tashian/master
Just a one-line doc fix of the CSS3 background attribute
2011-06-10 15:42:48 -07:00
tashian
60680769ca Fix CSS3 background attribute 2011-06-10 11:31:30 -07:00
Chris Eppstein
e2966fa78d Version Bump & Prepare for v0.11.2 2011-06-10 09:39:39 -07:00
Chris Eppstein
15412a756c Strong tags in the docs should be bold. 2011-06-10 09:35:07 -07:00
Scott Davis
9dcbbee3af Merge pull request #423 from kuroir/master
Fixes Sprites
2011-06-10 05:34:54 -07:00
Mario Kuroir Ricalde
333240de35 Fixes sprites file names with sprockets, modifies tests accordingly to new structure. 2011-06-10 05:11:28 -05:00
Scott Davis
028f96131d Merge pull request #411 from bmaltzan/stable
typo: appliction
2011-06-01 09:03:12 -07:00
Brian Maltzan
10fb3814ca typo: appliction 2011-06-01 08:56:40 -07:00
Darryl Pogue
23fc8290c0 Update test case for flexible box. 2011-05-30 11:33:55 -07:00
Darryl Pogue
759692a618 Enable IE 10 support for flexible box with the -ms prefix. 2011-05-29 19:42:28 -07:00
David Oliver
cb6068c9a3 Adding Micro Clearfix which is new and uses less CSS than PIE Clearfix 2011-05-12 23:07:54 +02:00
Mattias Pfeiffer
223258c203 Removing unneeded 'unquote' from tests 2011-05-05 10:19:19 +02:00
Mattias Pfeiffer
6b3ca3901c Adding note about path based asset cache busting in to documentation 2011-05-05 10:14:21 +02:00
Mattias Pfeiffer
d4422d108e Adding changelog entry 2011-05-05 10:06:48 +02:00
Mattias Pfeiffer
8661c481cf Fix comments for asset_cache_buster 2011-05-04 11:43:22 +02:00
Mattias Pfeiffer
2f3b757b46 Make asset_cache_buster return a hash with path and query, while still maintaining support for cache busting via query string if a string is returned. 2011-05-04 11:37:58 +02:00
Nathaniel Bibler
21928907e4 Extend cache busting to allow for path manipulation 2011-05-04 11:02:15 +02:00
119 changed files with 1205 additions and 1534 deletions

1
.gitignore vendored
View File

@ -28,3 +28,4 @@ devbin
*.rbc *.rbc
vendor/ruby vendor/ruby
vendor vendor
Gemfile.lock

View File

@ -4,4 +4,4 @@ rvm:
- jruby - jruby
- rbx - rbx
- ree - ree
script: "bundle exec rake test" script: "bundle exec rake test features"

View File

@ -5,7 +5,7 @@ gemspec
gem "cucumber", "~> 0.9.2" gem "cucumber", "~> 0.9.2"
gem "rspec", "~>2.0.0" gem "rspec", "~>2.0.0"
gem "rails", "~>3.0.0.rc" gem "rails", "~>3.0.0.rc"
gem "compass-validator", "3.0.0" gem "compass-validator", "3.0.1"
gem "css_parser", "~> 1.0.1" gem "css_parser", "~> 1.0.1"
gem "sass", "~>3.1" gem "sass", "~>3.1"
gem "haml", "~> 3.1" gem "haml", "~> 3.1"
@ -21,6 +21,8 @@ gem 'mocha'
gem 'timecop' gem 'timecop'
gem 'diff-lcs', '~> 1.1.2' gem 'diff-lcs', '~> 1.1.2'
gem 'rake', '0.8.7'
group :mac do group :mac do
gem "rb-fsevent" gem "rb-fsevent"
end end

View File

@ -1,154 +0,0 @@
GIT
remote: git://github.com/johnbintz/fakefs.git
revision: 005ddaaeb2b2881391c31ac9846a55ce5a42c206
specs:
fakefs (0.3.1)
PATH
remote: .
specs:
compass (0.11.1.f248c22)
chunky_png (~> 1.1)
fssm (>= 0.2.7)
sass (~> 3.1)
GEM
remote: http://rubygems.org/
specs:
ZenTest (4.5.0)
abstract (1.0.0)
actionmailer (3.0.7)
actionpack (= 3.0.7)
mail (~> 2.2.15)
actionpack (3.0.7)
activemodel (= 3.0.7)
activesupport (= 3.0.7)
builder (~> 2.1.2)
erubis (~> 2.6.6)
i18n (~> 0.5.0)
rack (~> 1.2.1)
rack-mount (~> 0.6.14)
rack-test (~> 0.5.7)
tzinfo (~> 0.3.23)
activemodel (3.0.7)
activesupport (= 3.0.7)
builder (~> 2.1.2)
i18n (~> 0.5.0)
activerecord (3.0.7)
activemodel (= 3.0.7)
activesupport (= 3.0.7)
arel (~> 2.0.2)
tzinfo (~> 0.3.23)
activeresource (3.0.7)
activemodel (= 3.0.7)
activesupport (= 3.0.7)
activesupport (3.0.7)
addressable (2.2.5)
arel (2.0.9)
autotest (4.4.6)
ZenTest (>= 4.4.1)
autotest-fsevent (0.2.5)
sys-uname
builder (2.1.2)
chunky_png (1.2.0)
compass-validator (3.0.0)
css_parser (1.0.1)
cucumber (0.9.4)
builder (~> 2.1.2)
diff-lcs (~> 1.1.2)
gherkin (~> 2.2.9)
json (~> 1.4.6)
term-ansicolor (~> 1.0.5)
diff-lcs (1.1.2)
em-dir-watcher (0.9.4)
em-websocket (0.2.1)
addressable (>= 2.1.1)
eventmachine (>= 0.12.9)
erubis (2.6.6)
abstract (>= 1.0.0)
eventmachine (0.12.10)
fssm (0.2.7)
gherkin (2.2.9)
json (~> 1.4.6)
term-ansicolor (~> 1.0.5)
haml (3.1.1)
i18n (0.5.0)
json (1.4.6)
livereload (1.6)
em-dir-watcher (>= 0.1)
em-websocket (>= 0.1.2)
ruby-json (>= 1.1.2)
mail (2.2.17)
activesupport (>= 2.3.6)
i18n (>= 0.4.0)
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.16)
mocha (0.9.12)
polyglot (0.3.1)
rack (1.2.2)
rack-mount (0.6.14)
rack (>= 1.0.0)
rack-test (0.5.7)
rack (>= 1.0)
rails (3.0.7)
actionmailer (= 3.0.7)
actionpack (= 3.0.7)
activerecord (= 3.0.7)
activeresource (= 3.0.7)
activesupport (= 3.0.7)
bundler (~> 1.0)
railties (= 3.0.7)
railties (3.0.7)
actionpack (= 3.0.7)
activesupport (= 3.0.7)
rake (>= 0.8.7)
thor (~> 0.14.4)
rake (0.8.7)
rb-fsevent (0.4.0)
rcov (0.9.9)
rspec (2.0.1)
rspec-core (~> 2.0.1)
rspec-expectations (~> 2.0.1)
rspec-mocks (~> 2.0.1)
rspec-core (2.0.1)
rspec-expectations (2.0.1)
diff-lcs (>= 1.1.2)
rspec-mocks (2.0.1)
rspec-core (~> 2.0.1)
rspec-expectations (~> 2.0.1)
ruby-json (1.1.2)
ruby-prof (0.10.5)
rubyzip (0.9.4)
sass (3.1.1)
sys-uname (0.8.5)
term-ansicolor (1.0.5)
thor (0.14.6)
timecop (0.3.5)
treetop (1.4.9)
polyglot (>= 0.3.1)
tzinfo (0.3.26)
PLATFORMS
ruby
DEPENDENCIES
autotest
autotest-fsevent
compass!
compass-validator (= 3.0.0)
css_parser (~> 1.0.1)
cucumber (~> 0.9.2)
diff-lcs (~> 1.1.2)
fakefs!
haml (~> 3.1)
livereload
mocha
rails (~> 3.0.0.rc)
rb-fsevent
rcov
rspec (~> 2.0.0)
ruby-prof
rubyzip
sass (~> 3.1)
timecop

View File

@ -1,5 +1,5 @@
--- ---
:major: 0 :major: 0
:minor: 11 :minor: 11
:build: 1 :patch: 5
:name: Antares :name: Antares

View File

@ -16,7 +16,7 @@ Gem::Specification.new do |gemspec|
gemspec.summary = %q{A Real Stylesheet Framework} gemspec.summary = %q{A Real Stylesheet Framework}
gemspec.add_dependency 'sass', '~> 3.1' gemspec.add_dependency 'sass', '~> 3.1'
gemspec.add_dependency 'chunky_png', '~> 1.1' gemspec.add_dependency 'chunky_png', '~> 1.2'
gemspec.add_dependency 'fssm', '>= 0.2.7' gemspec.add_dependency 'fssm', '>= 0.2.7'
gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile)

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -14,16 +14,65 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/
The Documentation for the [latest preview release](http://beta.compass-style.org/) The Documentation for the [latest preview release](http://beta.compass-style.org/)
0.11.3 (PENDING) 0.11.6 (UNRELEASED)
------------------- -------------------
* Sprites will now by default remove any old versions of the sprite a new variable has been created to override this.
* Added `user-select` mixin to control the selection model and granularity of an element. It accepts one argument (`$select`) from the following options: `none` | `text` | `toggle` | `element` | `elements` | `all` | `inherit`.
0.11.5 (07/10/2011)
-------------------
* Updated the list of elements returned by the `elements-of-type()` helper.
It now understands `html5-block` and `html5-inline` and other types now
return html5 elements in them by default.
* Fix warning logic in vertical-rhythms module.
* Fix typo in the css3/transition module.
0.11.4 (07/03/2011)
-------------------
* Vertical rhythm now supports absolute units like pixels.
Set `$relative-font-sizing` to `false` to enable.
* Vertical rhythm now has a minimum padding that defaults to 2px.
This makes some edge cases look better.
* New mixin `force-wrap` prevents URLs and long lines of text from breaking layouts.
* Fix absolute path detection on windows.
* Fix the mime type returned for inline svg images.
* Allow multiple transitions in the CSS3 `transition` mixin.
* The Blueprint `:focus` styles no longer clobbers cascade-based overrides unnecessarily.
* The Blueprint grid-background vertical rhythm is now based off of $blueprint-font-size,
rather than a static value of 20px
0.11.3 (06/11/2011)
-------------------
**Note:** Due to some internal changes to compass you may have issue with your sass cache. Run `compass clean` to clear your cache.
* The `pie-clearfix` mixin has been updated. If you have to
support Firefox < 3.5, please update your stylesheets
to use `legacy-pie-clearfix` instead.
* Added a new command: `compass clean` which removes any generated
css files and clears the sass cache.
* Enable IE 10 support for flexible box with the -ms prefix.
* A small change to how generated sprites are named for better
rails 3.1 compatibility.
* Fixes for the compass --quiet mode.
* It is now possible to generate cache buster urls that manipulate
the path of the image instead of the query string. This makes
images work better with proxies, but will require some web server
configuration. [Docs](/help/tutorials/configuration-reference/#asset-cache-buster)
* Numerous small bug fixes to sprites.
* Sprite Engines are now classes see [Docs](/help/tutorials/extending) for more information
* Sprite classes have bee re-factored into modules for readability
* Sprites will no longer cause `undefined method 'find' for #<Compass::SpriteMap>` when adding or removing sprite files
0.11.2 (06/10/2011)
-------------------
* Sprites will now by default remove any old versions of the sprite. A new configuration
variable has been created to override this.
* Nested sprites are now supported using globs `@import 'nested/**/*.png';`. * Nested sprites are now supported using globs `@import 'nested/**/*.png';`.
* Fixed a bug that was causing sprite variable options to not get passed to the image classes. * Fixed a bug that was causing sprite variable options to not get passed to the image classes.
* Sass Colors will no longer cause an error if you use them as sprite names. * Sass Colors will no longer cause an error if you use them as sprite names.
0.11.2 (05/01/2011)
-------------------
* Added support for -ms gradients in background-image and background properties * Added support for -ms gradients in background-image and background properties
* Give a better error if Sass::Script::Functions.declare does not exist. * Give a better error if Sass::Script::Functions.declare does not exist.

View File

@ -40,7 +40,7 @@ layout: site
## Manual setup using the Blueprint Framework ## Manual setup using the Blueprint Framework
When starting a project from scrath: When starting a project from scratch:
compass create /path/to/project --using blueprint compass create /path/to/project --using blueprint

View File

@ -280,6 +280,13 @@ later on.
<td style="vertical-align:top;">Symbol </td> <td style="vertical-align:top;">Symbol </td>
<td style="vertical-align:top;">Defaults to <code>:chunky_png</code></td> <td style="vertical-align:top;">Defaults to <code>:chunky_png</code></td>
</tr> </tr>
<tr>
<td style="vertical-align:top;"><code>chunky_png_options</code></td>
<td style="vertical-align:top;">Hash </td>
<td style="vertical-align:top;">
Defaults to <code>{:compression => Zlib::BEST_COMPRESSION}</code>. See the chunky_png <a href='https://github.com/wvanbergen/chunky_png/wiki/Constraints' _target='blank'>wiki</a> for more information
</td>
</tr>
</table> </table>
<a name="configuration-functions"></a> <a name="configuration-functions"></a>
@ -307,10 +314,14 @@ the asset host configuration is ignored.
--- ---
<a name="asset-cache-buster"></a>
**`asset_cache_buster`** Pass this function a block of code that defines the **`asset_cache_buster`** Pass this function a block of code that defines the
cache buster strategy to be used. The block must return nil or a string that can cache buster strategy to be used. The block must return nil, a string or a hash.
be appended to a url as a query parameter. The returned string must not include If the returned value is a hash the values of :path and/or :query is used to generate
the starting `?`. The block will be passed the root-relative url of the asset. a cache busted path to the asset. If a string value is returned, it is added as a query string.
The returned values for query strings must not include the starting `?`.
The block will be passed the root-relative url of the asset.
If the block accepts two arguments, it will also be passed a path If the block accepts two arguments, it will also be passed a path
that points to the asset on disk — which may or may not exist. that points to the asset on disk — which may or may not exist.
@ -324,6 +335,18 @@ that points to the asset on disk — which may or may not exist.
end end
end end
Busting the cache via path:
asset_cache_buster do |path, real_path|
if File.exists?(real_path)
pathname = Pathname.new(path)
modified_time = File.mtime(real_path).strftime("%s")
new_path = "%s/%s-%s%s" % [pathname.dirname, pathname.basename(pathname.extname), modified_time, pathname.extname]
{:path => new_path, :query => nil}
end
end
To disable the asset cache buster: To disable the asset cache buster:
asset_cache_buster :none asset_cache_buster :none

View File

@ -14,11 +14,9 @@ The sprite engine is the work horse of sprite generation it's the interface for
### Requirements ### Requirements
A sprite engine requires only one method and that is `construct_sprite` which must return an object that responds to `save(filepath)` A sprite engine requires two methods `construct_sprite`, and `save(filename)`
Once inside this method you have access to `images` which is a collection of [Compass::SassExtensions::Sprites::Image](http://rdoc.info/github/chriseppstein/compass/dda7c9/Compass/SassExtensions/Sprites/Image) Once inside the class you have access to `images` which is a collection of [Compass::SassExtensions::Sprites::Image](http://rdoc.info/github/chriseppstein/compass/dda7c9/Compass/SassExtensions/Sprites/Image)
Since the Engine module extends base you also have access to all methods in [Compass::SassExtensions::Sprites::Base](http://rdoc.info/github/chriseppstein/compass/dda7c9/Compass/SassExtensions/Sprites/Base)
### Configuration ### Configuration
@ -26,7 +24,7 @@ To enable your sprite engine from the config file set
sprite_engine = :<engine name> sprite_engine = :<engine name>
The example below will load `Compass::SassExtension::Sprites::ChunkyPngEngine` The example below will load `Compass::SassExtension::Sprites::ChunkyPngEngine.new(width, height, images)`
sprite_engine = :chunky_png sprite_engine = :chunky_png
@ -35,11 +33,14 @@ The example below will load `Compass::SassExtension::Sprites::ChunkyPngEngine`
module Compass module Compass
module SassExtensions module SassExtensions
module Sprites module Sprites
module <engine name>Engine class ChunkyPngEngine < Compass::SassExtensions::Sprites::Engine
# Returns an object
def construct_sprite def construct_sprite
#must return a image object that responds to save(filename) #do something
end
def save(filename)
#save file
end end
end end

View File

@ -1,7 +1,7 @@
--- ---
title: Application Integration title: Application Integration
layout: tutorial layout: tutorial
crumb: Appliction Integration crumb: Application Integration
classnames: classnames:
- tutorial - tutorial
--- ---

View File

@ -15,10 +15,10 @@ of several convenient ways.
For this tutorial, let's imagine that in your project's image folder there are four icons: For this tutorial, let's imagine that in your project's image folder there are four icons:
* `public/images/icon/new.png` * `images/icon/new.png`
* `public/images/icon/edit.png` * `images/icon/edit.png`
* `public/images/icon/save.png` * `images/icon/save.png`
* `public/images/icon/delete.png` * `images/icon/delete.png`
Each is an icon that is 32px square. Each is an icon that is 32px square.
@ -34,7 +34,7 @@ And you'll get the following CSS output:
.icon-delete, .icon-delete,
.icon-edit, .icon-edit,
.icon-new, .icon-new,
.icon-save { background: url('/images/icon-34fe0604ab.png') no-repeat; } .icon-save { background: url('/images/icon-s34fe0604ab.png') no-repeat; }
.icon-delete { background-position: 0 0; } .icon-delete { background-position: 0 0; }
.icon-edit { background-position: 0 -32px; } .icon-edit { background-position: 0 -32px; }
@ -74,7 +74,7 @@ And your stylesheet will compile to:
.actions .new, .actions .new,
.actions .edit, .actions .edit,
.actions .save, .actions .save,
.actions .delete { background: url('/images/icon-34fe0604ab.png') no-repeat; } .actions .delete { background: url('/images/icon-s34fe0604ab.png') no-repeat; }
.actions .new { background-position: 0 -64px; } .actions .new { background-position: 0 -64px; }
.actions .edit { background-position: 0 -32px; } .actions .edit { background-position: 0 -32px; }
@ -89,7 +89,7 @@ magic, some people are scared by it, and others are curious about how the magic
you would like to avoid the magic, you can use compass to generate an import for you. On the you would like to avoid the magic, you can use compass to generate an import for you. On the
command line: command line:
compass sprite "public/images/icon/*.png" compass sprite "images/icon/*.png"
This will create file using your project's preferred syntax, or you can specify the This will create file using your project's preferred syntax, or you can specify the
output filename using the `-f` option and the syntax will be inferred from the extension. output filename using the `-f` option and the syntax will be inferred from the extension.
@ -122,7 +122,7 @@ Now in our sass file we add:
And your stylesheet will compile to: And your stylesheet will compile to:
.selectors-sprite, a { .selectors-sprite, a {
background: url('/selectors-edfef809e2.png') no-repeat; background: url('/selectors-sedfef809e2.png') no-repeat;
} }
a { a {
@ -141,7 +141,7 @@ And your stylesheet will compile to:
Alternatively you can use the `@include all-selectors-sprites;` after the import and get the following output: Alternatively you can use the `@include all-selectors-sprites;` after the import and get the following output:
.selectors-sprite, .selectors-ten-by-ten { .selectors-sprite, .selectors-ten-by-ten {
background: url('/selectors-edfef809e2.png') no-repeat; background: url('/selectors-sedfef809e2.png') no-repeat;
} }
.selectors-ten-by-ten { .selectors-ten-by-ten {

View File

@ -22,7 +22,7 @@ what changed to your stylesheets:
1. $ cd my_compass_project 1. $ cd my_compass_project
2. $ compass compile --force 2. $ compass compile --force
3. $ cp -r stylesheets stylesheets.backup 3. $ cp -r stylesheets stylesheets.backup
4. $ gem install compass --pre # you might need to type sudo first if you're on mac or linux. 4. $ gem install compass # you might need to type sudo first if you're on mac or linux.
5. $ compass compile --force 5. $ compass compile --force
6. Take note of any deprecation warnings printed in red during the compile. 6. Take note of any deprecation warnings printed in red during the compile.
7. If you have textmate and installed the `mate` command line tool:<br> 7. If you have textmate and installed the `mate` command line tool:<br>

View File

@ -69,3 +69,27 @@ layout: homepage
%img(src="/images/sites/busyconf.jpg") %img(src="/images/sites/busyconf.jpg")
%span.title BusyConf %span.title BusyConf
%span.url http://busyconf.com %span.url http://busyconf.com
%section.book
%h3 Save <em>37%</em> on the Book: (Currently In Beta)
%p
%a(href="http://www.manning.com/netherland/")
%img(src="http://www.manning.com/netherland/netherland_cover150.jpg" alt="Sass & Compass in Action")
Compliments of Manning.com is a standing 37% discount on
<a href="http://www.manning.com/netherland/">Sass and Compass in Action</a>.
Use promo code <code>sasscomp37</code> at manning.com on the MEAP, eBook and pBook of Sass and
Compass in Action. All pBook purchases include free eFormats (PDF, ePub, and Kindle)
as soon as available.
%section.gui
%h3 <em>Hate</em> the Command Line?
%a(href="http://compass.handlino.com/")
%img(src="/images/compass.app.png")
%p
Buy <a href="http://compass.handlino.com/">Compass.app</a>
for Windows and Mac for just $7.
%p.note
Note: Compass.app is a product of Handlino, Inc but
30% of all proceeds go to Compass's charity of choice: <a href="http://umdf.org/compass">UMDF.org</a>.

View File

@ -25,7 +25,7 @@ classnames:
Example (more examples are available by following the links below): Example (more examples are available by following the links below):
<pre><code class="source-code scss">.in-css3 { <pre><code class="source-code scss">.in-css3 {
background: image-url("foo.png"), background: url(foo.png),
linear-gradient(top left, #333, #0c0), linear-gradient(top left, #333, #0c0),
radial-gradient(#c00, #fff 100px); radial-gradient(#c00, #fff 100px);
} }

View File

@ -15,7 +15,7 @@ layout: core
:markdown :markdown
The compass helpers are functions that augment the [functions provided The compass helpers are functions that augment the [functions provided
by Sass](http://sass-lang.com/yardoc/Sass/Script/Functions.html). by Sass](http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html).
All Helpers: All Helpers:

View File

@ -21,7 +21,7 @@ documented_functions:
.details .details
%p %p
The following display values exist and will return The following display values exist and will return
the elements listed to the right. the elements listed below the display value.
%dl %dl
%dg.head %dg.head
%dt Display Value %dt Display Value

View File

@ -0,0 +1,15 @@
---
title: Wrapping Long Text and URLs
crumb: Force Wrap
framework: compass
stylesheet: compass/typography/text/_force-wrap.scss
layout: core
meta_description: Wrap URLs and long lines of text.
classnames:
- reference
- core
- typography
---
- render 'reference' do
%p
This mixin will wrap URLs and long lines of text to prevent text from breaking layouts.

View File

@ -79,4 +79,21 @@ ul#featured_sites {
.title { bottom: 1.7em; left: 0; z-index: 103; text-decoration: none; padding: 0 11px; color: #fff; } .title { bottom: 1.7em; left: 0; z-index: 103; text-decoration: none; padding: 0 11px; color: #fff; }
} }
} }
section.book, section.gui {
width: 48%;
float: left;
@extend .group;
h3 { margin-bottom: 1em; height: 2em; text-align: left; }
}
section.book {
margin-right: 2%;
img { float: left; margin-right: 1em; margin-bottom: 1em; }
}
section.gui {
text-align: center;
.note {
font-size: smaller;
}
}
html.light body#home { h1#logo { background-position: bottom;} } html.light body#home { h1#logo { background-position: bottom;} }

View File

@ -29,7 +29,8 @@
ul { list-style: none; margin-bottom: 1em;} ul { list-style: none; margin-bottom: 1em;}
h2 { line-height: 1.3em; margin-top: 0; padding-top: 3px;} h2 { line-height: 1.3em; margin-top: 0; padding-top: 3px;}
} }
em { font-style: italic; } em { font-style: italic; }
strong { font-weight: bold; }
#page > article { #page > article {
ul ul { padding-left: 1em; } ul ul { padding-left: 1em; }

View File

@ -130,7 +130,7 @@ end
def compass_version def compass_version
v = Compass.version v = Compass.version
"#{v[:major]}.#{v[:minor]}#{"."+v[:state] if v[:state]}.#{v[:build]}" "#{v[:major]}.#{v[:minor]}#{"."+v[:state] if v[:state]}.#{v[:build] || v[:patch]}"
end end
def long_compass_version def long_compass_version

View File

@ -63,6 +63,15 @@ Feature: Command Line
And I am told that I can place stylesheets in the sass subdirectory And I am told that I can place stylesheets in the sass subdirectory
And I am told how to compile my sass stylesheets And I am told how to compile my sass stylesheets
Scenario: Compiling a project with errors
Given I am using the existing project in test/fixtures/stylesheets/compass
And the project has a file named "sass/error.scss" containing:
"""
.broken {
"""
When I run: compass compile
Then the command exits with a non-zero error code
Scenario: Creating a bare project with a framework Scenario: Creating a bare project with a framework
When I create a project using: compass create bare_project --using blueprint --bare When I create a project using: compass create bare_project --using blueprint --bare
Then an error message is printed out: A bare project cannot be created when a framework is specified. Then an error message is printed out: A bare project cannot be created when a framework is specified.
@ -145,6 +154,7 @@ Feature: Command Line
Scenario: Basic help Scenario: Basic help
When I run: compass help When I run: compass help
Then I should see the following "primary" commands: Then I should see the following "primary" commands:
| clean |
| compile | | compile |
| create | | create |
| init | | init |
@ -179,12 +189,33 @@ Feature: Command Line
And I run: compass compile And I run: compass compile
And a css file tmp/layout.css is reported overwritten And a css file tmp/layout.css is reported overwritten
Scenario: Cleaning a project
Given I am using the existing project in test/fixtures/stylesheets/compass
When I run: compass compile
And I run: compass clean
Then the following files are reported removed:
| .sass-cache/ |
| tmp/border_radius.css |
| tmp/box.css |
| tmp/box_shadow.css |
| tmp/columns.css |
| tmp/fonts.css |
| images/flag-s03c3b29b35.png |
And the following files are removed:
| .sass-cache/ |
| tmp/border_radius.css |
| tmp/box.css |
| tmp/box_shadow.css |
| tmp/columns.css |
| tmp/fonts.css |
| images/flag-s03c3b29b35.png |
Scenario: Watching a project for changes Scenario: Watching a project for changes
Given ruby supports fork Given ruby supports fork
Given I am using the existing project in test/fixtures/stylesheets/compass Given I am using the existing project in test/fixtures/stylesheets/compass
When I run: compass compile When I run: compass compile
And I run in a separate process: compass watch And I run in a separate process: compass watch
And I wait 1 second And I wait 3 seconds
And I touch sass/layout.sass And I touch sass/layout.sass
And I wait 2 seconds And I wait 2 seconds
And I shutdown the other process And I shutdown the other process
@ -218,7 +249,6 @@ Feature: Command Line
| sass_dir | sass | | sass_dir | sass |
| css_dir | assets/css | | css_dir | assets/css |
@now
Scenario Outline: Print out a configuration value Scenario Outline: Print out a configuration value
Given I am using the existing project in test/fixtures/stylesheets/compass Given I am using the existing project in test/fixtures/stylesheets/compass
When I run: compass config -p <property> When I run: compass config -p <property>

View File

@ -53,6 +53,13 @@ Given /^I should clean up the directory: (\w+)$/ do |directory|
@cleanup_directories << directory @cleanup_directories << directory
end end
Given %r{^the project has a file named "([^"]*)" containing:$} do |arg1, string|
File.open(arg1, "w") do |f|
f << string
end
end
# When Actions are performed # When Actions are performed
When /^I create a project using: compass create ([^\s]+) ?(.+)?$/ do |dir, args| When /^I create a project using: compass create ([^\s]+) ?(.+)?$/ do |dir, args|
@cleanup_directories << dir @cleanup_directories << dir
@ -76,7 +83,7 @@ When /^I run in a separate process: compass ([^\s]+) ?(.+)?$/ do |command, args|
file.puts $stdout.string file.puts $stdout.string
end end
open('/tmp/last_error.compass_test.txt', 'w') do |file| open('/tmp/last_error.compass_test.txt', 'w') do |file|
file.puts @stderr.string file.puts $stderr.string
end end
exit! exit!
end end
@ -116,10 +123,30 @@ Then /^a directory ([^ ]+) is (not )?created$/ do |directory, negated|
File.directory?(directory).should == !negated File.directory?(directory).should == !negated
end end
Then /an? \w+ file ([^ ]+) is (not )?removed/ do |filename, negated|
File.exists?(filename).should == !!negated
end
Then /an? \w+ file ([^ ]+) is (not )?created/ do |filename, negated| Then /an? \w+ file ([^ ]+) is (not )?created/ do |filename, negated|
File.exists?(filename).should == !negated File.exists?(filename).should == !negated
end end
Then "the following files are reported removed:" do |table|
table.rows.each do |css_file|
Then %Q{a css file #{css_file.first} is reported removed}
end
end
Then "the following files are removed:" do |table|
table.rows.each do |css_file|
Then %Q{a css file #{css_file.first} is removed}
end
end
Then /an? \w+ file ([^ ]+) is reported removed/ do |filename|
@last_result.should =~ /remove.*#{Regexp.escape(filename)}/
end
Then /an? \w+ file ([^ ]+) is reported created/ do |filename| Then /an? \w+ file ([^ ]+) is reported created/ do |filename|
@last_result.should =~ /create.*#{Regexp.escape(filename)}/ @last_result.should =~ /create.*#{Regexp.escape(filename)}/
end end

View File

@ -1,5 +1,5 @@
@import "compass/layout/grid-background"; @import "compass/layout/grid-background";
@import "blueprint/grid"; @import "grid", "typography";
// Shows a background that can be used to check grid alignment. // Shows a background that can be used to check grid alignment.
// By default this is a pure css version that only works in browsers // By default this is a pure css version that only works in browsers
@ -14,7 +14,7 @@
$total : $blueprint-grid-columns, $total : $blueprint-grid-columns,
$column : $blueprint-grid-width, $column : $blueprint-grid-width,
$gutter : $blueprint-grid-margin, $gutter : $blueprint-grid-margin,
$baseline : 20px $baseline : $blueprint-font-size * 1.5
); );
} }
} }

View File

@ -59,7 +59,7 @@
background-color:#fff; background-color:#fff;
border: 1px solid $unfocused-border-color; border: 1px solid $unfocused-border-color;
&:focus { &:focus {
border: 1px solid $focus-border-color; border-color: $focus-border-color;
} }
} }
select { background-color:#fff; border-width:1px; border-style:solid; } select { background-color:#fff; border-width:1px; border-style:solid; }

View File

@ -17,7 +17,7 @@
form, label, legend, form, label, legend,
caption, tbody, tfoot, thead, tr { @include blueprint-basic-reset; } caption, tbody, tfoot, thead, tr { @include blueprint-basic-reset; }
#{headers(all)} { @include blueprint-basic-reset(bp-reset-element); } #{headers(all)} { @include blueprint-basic-reset(bp-reset-element); }
#{elements-of-type(html5)} { @include blueprint-reset-html5-element(bp-reset-element); } #{elements-of-type(html5-block)} { @include blueprint-reset-html5-element(bp-reset-element); }
blockquote, q { @include blueprint-reset-quotation(bp-reset-element); } blockquote, q { @include blueprint-reset-quotation(bp-reset-element); }
th, td, caption { @include blueprint-reset-table-cell(bp-reset-element); } th, td, caption { @include blueprint-reset-table-cell(bp-reset-element); }
table { @include blueprint-reset-table(bp-reset-element); } table { @include blueprint-reset-table(bp-reset-element); }

View File

@ -24,7 +24,10 @@ $default-box-shadow-spread : false !default;
// The default shadow inset: inset or false (for standard shadow). // The default shadow inset: inset or false (for standard shadow).
$default-box-shadow-inset : false !default; $default-box-shadow-inset : false !default;
// Provides cross-browser for Webkit, Gecko, and CSS3 box shadows when one or more box shadows are needed. // Provides cross-browser for Webkit, Gecko, and CSS3 box shadows when one or more box
// shadows are needed.
// Each shadow argument should adhere to the standard css3 syntax for the
// box-shadow property.
@mixin box-shadow( @mixin box-shadow(
$shadow-1 : default, $shadow-1 : default,
$shadow-2 : false, $shadow-2 : false,

View File

@ -3,7 +3,7 @@
// display:box; must be used for any of the other flexbox mixins to work properly // display:box; must be used for any of the other flexbox mixins to work properly
@mixin display-box { @mixin display-box {
@include experimental-value(display, box, @include experimental-value(display, box,
-moz, -webkit, not -o, not -ms, not -khtml, official -moz, -webkit, not -o, -ms, not -khtml, official
); );
} }
@ -16,7 +16,7 @@ $default-box-orient: horizontal !default;
) { ) {
$orientation : unquote($orientation); $orientation : unquote($orientation);
@include experimental(box-orient, $orientation, @include experimental(box-orient, $orientation,
-moz, -webkit, not -o, not -ms, not -khtml, official -moz, -webkit, not -o, -ms, not -khtml, official
); );
} }
@ -29,7 +29,7 @@ $default-box-align: stretch !default;
) { ) {
$alignment : unquote($alignment); $alignment : unquote($alignment);
@include experimental(box-align, $alignment, @include experimental(box-align, $alignment,
-moz, -webkit, not -o, not -ms, not -khtml, official -moz, -webkit, not -o, -ms, not -khtml, official
); );
} }
@ -43,7 +43,7 @@ $default-box-flex: 0 !default;
$flex: $default-box-flex $flex: $default-box-flex
) { ) {
@include experimental(box-flex, $flex, @include experimental(box-flex, $flex,
-moz, -webkit, not -o, not -ms, not -khtml, official -moz, -webkit, not -o, -ms, not -khtml, official
); );
} }
@ -55,7 +55,7 @@ $default-box-flex-group: 1 !default;
$group: $default-box-flex-group $group: $default-box-flex-group
) { ) {
@include experimental(box-flex-group, $group, @include experimental(box-flex-group, $group,
-moz, -webkit, not -o, not -ms, not -khtml, official -moz, -webkit, not -o, -ms, not -khtml, official
); );
} }
@ -67,7 +67,7 @@ $default-box-ordinal-group: 1 !default;
$group: $default-ordinal-flex-group $group: $default-ordinal-flex-group
) { ) {
@include experimental(box-ordinal-group, $group, @include experimental(box-ordinal-group, $group,
-moz, -webkit, not -o, not -ms, not -khtml, official -moz, -webkit, not -o, -ms, not -khtml, official
); );
} }
@ -80,7 +80,7 @@ $default-box-direction: normal !default;
) { ) {
$direction: unquote($direction); $direction: unquote($direction);
@include experimental(box-direction, $direction, @include experimental(box-direction, $direction,
-moz, -webkit, not -o, not -ms, not -khtml, official -moz, -webkit, not -o, -ms, not -khtml, official
); );
} }
@ -93,7 +93,7 @@ $default-box-lines: single !default;
) { ) {
$lines: unquote($lines); $lines: unquote($lines);
@include experimental(box-lines, $lines, @include experimental(box-lines, $lines,
-moz, -webkit, not -o, not -ms, not -khtml, official -moz, -webkit, not -o, -ms, not -khtml, official
); );
} }
@ -106,6 +106,6 @@ $default-box-pack: start !default;
) { ) {
$pack: unquote($pack); $pack: unquote($pack);
@include experimental(box-pack, $pack, @include experimental(box-pack, $pack,
-moz, -webkit, not -o, not -ms, not -khtml, official -moz, -webkit, not -o, -ms, not -khtml, official
); );
} }

View File

@ -15,7 +15,7 @@
// //
// Example: // Example:
// //
// +font-face("this name", font-files("this.woff", "woff", "this.otf", "opentype"), "this.eot") // @include font-face("this name", font-files("this.woff", woff, "this.otf", opentype), "this.eot")
@mixin font-face( @mixin font-face(
$name, $name,
$font-files, $font-files,

View File

@ -83,10 +83,7 @@
@mixin filter-gradient($start-color, $end-color, $orientation: vertical) { @mixin filter-gradient($start-color, $end-color, $orientation: vertical) {
@include has-layout; @include has-layout;
$gradient-type: if($orientation == vertical, 0, 1); $gradient-type: if($orientation == vertical, 0, 1);
@if $legacy-support-for-ie8 { @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 {
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(gradientType=#{$gradient-type}, startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}')";
}
@if $legacy-support-for-ie6 or $legacy-support-for-ie7 {
filter: progid:DXImageTransform.Microsoft.gradient(gradientType=#{$gradient-type}, startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}'); filter: progid:DXImageTransform.Microsoft.gradient(gradientType=#{$gradient-type}, startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}');
} }
} }

View File

@ -6,10 +6,7 @@
// A number between 0 and 1, where 0 is transparent and 1 is opaque. // A number between 0 and 1, where 0 is transparent and 1 is opaque.
@mixin opacity($opacity) { @mixin opacity($opacity) {
@if $legacy-support-for-ie8 { @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=#{round($opacity * 100)})";
}
@if $legacy-support-for-ie6 or $legacy-support-for-ie7 {
filter: unquote("progid:DXImageTransform.Microsoft.Alpha(Opacity=#{round($opacity * 100)})"); filter: unquote("progid:DXImageTransform.Microsoft.Alpha(Opacity=#{round($opacity * 100)})");
} }
opacity: $opacity; opacity: $opacity;

View File

@ -9,6 +9,8 @@ $default-text-shadow-v-offset: 0px !default;
$default-text-shadow-blur: 1px !default; $default-text-shadow-blur: 1px !default;
// Provides cross-browser text shadows when one or more shadows are needed. // Provides cross-browser text shadows when one or more shadows are needed.
// Each shadow argument should adhere to the standard css3 syntax for the
// text-shadow property.
@mixin text-shadow( @mixin text-shadow(
$shadow-1 : default, $shadow-1 : default,
$shadow-2 : false, $shadow-2 : false,

View File

@ -72,7 +72,7 @@ $default-transition-delay: false !default;
// Transition all-in-one shorthand // Transition all-in-one shorthand
@mixin transition( @mixin single-transition(
$properties: $default-transition-property, $properties: $default-transition-property,
$duration: $default-transition-duration, $duration: $default-transition-duration,
$function: $default-transition-function, $function: $default-transition-function,
@ -83,3 +83,37 @@ $default-transition-delay: false !default;
@if $function { @include transition-timing-function($function); } @if $function { @include transition-timing-function($function); }
@if $delay { @include transition-delay($delay); } @if $delay { @include transition-delay($delay); }
} }
@mixin transition(
$transition-1 : default,
$transition-2 : false,
$transition-3 : false,
$transition-4 : false,
$transition-5 : false,
$transition-6 : false,
$transition-7 : false,
$transition-8 : false,
$transition-9 : false,
$transition-10: false
) {
$legacy: (type-of($transition-1) == string and type-of(if($transition-2, $transition-2, 0)) == number and type-of(if($transition-3, $transition-3, '')) == string and type-of(if($transition-4, $transition-4, 0)) == number and ($transition-2 or $transition-3 or $transition-4));
@if $legacy {
@warn "Passing separate arguments for a single transition to transition is deprecated. " +
"Pass the values as a single space-separated list, or use the single-transition mixin.";
@include single-transition(
if($transition-1, $transition-1, $default-transition-property),
if($transition-2, $transition-2, $default-transition-duration),
if($transition-3, $transition-3, $default-transition-function),
if($transition-4, $transition-4, $default-transition-delay)
);
}
@else {
@if $transition-1 == default {
$transition-1 : -compass-space-list(compact($default-transition-property, $default-transition-duration, $default-transition-function, $default-transition-delay));
}
$transition : compact($transition-1, $transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10);
@include experimental(transition, $transition,
-moz, -webkit, -o, not -ms, not -khtml, official
);
}
}

View File

@ -0,0 +1,24 @@
@import "shared";
// User Interface ------------------------------------------------------------
// This file can be expanded to handle all the user interface properties as
// they become available in browsers:
// http://www.w3.org/TR/2000/WD-css3-userint-20000216
// User Select ---------------------------------------------------------------
// This property controls the selection model and granularity of an element.
//
// @param $select
// [ none | text | toggle | element | elements | all | inherit ]
@mixin user-select($select) {
$select: unquote($select);
// Mozilla needs prefix on both the -moz-property and the -moz-value
@include experimental(user-select, -moz-#{$select},
-moz, not -webkit, not -o, not -ms, not -khtml, not official
);
// others do not
@include experimental(user-select, $select,
not -moz, -webkit, not -o, not -ms, -khtml, official
);
}

View File

@ -105,7 +105,7 @@
// so they are rendered correctly in browsers that don't recognize them // so they are rendered correctly in browsers that don't recognize them
// and reset in browsers that have default styles for them. // and reset in browsers that have default styles for them.
@mixin reset-html5 { @mixin reset-html5 {
article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { #{elements-of-type(html5-block)} {
@include reset-box-model; @include reset-box-model;
display: block; } } display: block; } }

View File

@ -107,12 +107,11 @@
border: none; } border: none; }
// Unrecognized elements are displayed inline. // Unrecognized elements are displayed inline.
// This reset provides a basic reset for html5 elements // This reset provides a basic reset for block html5 elements
// so they are rendered correctly in browsers that don't recognize them // so they are rendered correctly in browsers that don't recognize them
// and reset in browsers that have default styles for them. // and reset in browsers that have default styles for them.
@mixin reset-html5 { @mixin reset-html5 {
article, aside, details, figcaption, figure, #{elements-of-type(html5-block)} {
footer, header, hgroup, menu, nav, section {
display: block; } } display: block; } }
// Resets the display of inline and block elements to their default display // Resets the display of inline and block elements to their default display

View File

@ -1,3 +1,4 @@
@import "text/ellipsis"; @import "text/ellipsis";
@import "text/nowrap"; @import "text/nowrap";
@import "text/replacement"; @import "text/replacement";
@import "text/force-wrap";

View File

@ -10,22 +10,47 @@ $default-rhythm-border-style: solid !default;
// The IE font ratio is a fact of life. Deal with it. // The IE font ratio is a fact of life. Deal with it.
$ie-font-ratio: 16px / 100%; $ie-font-ratio: 16px / 100%;
// Set to false if you want to use absolute pixes in sizing your typography.
$relative-font-sizing: true !default;
// Ensure there is at least this many pixels
// of vertical padding above and below the text.
$min-line-padding: 2px;
// $base-font-size but in your output unit of choice.
// Defaults to 1em when `$relative-font-sizing`
$font-unit: if($relative-font-sizing, 1em, $base-font-size) !default;
// The basic unit of font rhythm // The basic unit of font rhythm
$base-rhythm-unit: $base-line-height / $base-font-size * 1em; $base-rhythm-unit: $base-line-height / $base-font-size * $font-unit;
// The leader is the amount of whitespace in a line. // The leader is the amount of whitespace in a line.
// It might be useful in your calculations // It might be useful in your calculations
$base-leader: ($base-line-height - $base-font-size) * 1em / $base-font-size; $base-leader: ($base-line-height - $base-font-size) * $font-unit / $base-font-size;
// The half-leader is the amount of whitespace above and below a line. // The half-leader is the amount of whitespace above and below a line.
// It might be useful in your calculations // It might be useful in your calculations
$base-half-leader: $base-leader / 2; $base-half-leader: $base-leader / 2;
// True if a number has a relative unit
@function relative-unit($number) {
@return unit($number) == "%" or unit($number) == "em" or unit($number) == "rem"
}
// True if a number has an absolute unit
@function absolute-unit($number) {
@return not (relative-unit($number) or unitless($number));
}
@if $relative-font-sizing and not relative-unit($font-unit) {
@warn "$relative-font-sizing is true but $font-unit is set to #{$font-unit} which is not a relative unit.";
}
// Establishes a font baseline for the given font-size in pixels // Establishes a font baseline for the given font-size in pixels
@mixin establish-baseline($font-size: $base-font-size) { @mixin establish-baseline($font-size: $base-font-size) {
body { body {
font-size: $font-size / $ie-font-ratio; font-size: $font-size / $ie-font-ratio;
@include adjust-leading-to(1, $font-size); @include adjust-leading-to(1, if($relative-font-sizing, $font-size, $base-font-size));
} }
html>body { html>body {
font-size: $font-size; font-size: $font-size;
@ -42,13 +67,19 @@ $base-half-leader: $base-leader / 2;
// font size should use up. Does not have to be an integer, but it defaults // font size should use up. Does not have to be an integer, but it defaults
// to the smallest integer that is large enough to fit the font. // to the smallest integer that is large enough to fit the font.
// Use $from_size to adjust from a non-base font-size. // Use $from_size to adjust from a non-base font-size.
@mixin adjust-font-size-to($to-size, $lines: ceil($to-size / $base-line-height), $from-size: $base-font-size) { @mixin adjust-font-size-to($to-size, $lines: lines-for-font-size($to-size), $from-size: $base-font-size) {
font-size: 1em * $to-size / $from-size; @if not $relative-font-sizing and $from-size != $base-font-size {
@include adjust-leading-to($lines, $to-size); @warn "$relative-font-sizing is false but a relative font size was passed to adjust-font-size-to";
}
font-size: $font-unit * $to-size / $from-size;
@include adjust-leading-to($lines, if($relative-font-sizing, $to-size, $base-font-size));
} }
@mixin adjust-leading-to($lines, $font-size: $base-font-size) { @mixin adjust-leading-to($lines, $font-size: $base-font-size) {
line-height: 1em * $lines * $base-line-height / $font-size; @if not $relative-font-sizing and $font-size != $base-font-size {
@warn "$relative-font-sizing is false but a relative font size was passed to adjust-leading-to";
}
line-height: $font-unit * $lines * $base-line-height / $font-size;
} }
// Calculate rhythm units // Calculate rhythm units
@ -56,32 +87,55 @@ $base-half-leader: $base-leader / 2;
$lines: 1, $lines: 1,
$font-size: $base-font-size $font-size: $base-font-size
) { ) {
$rhythm: 1em * $lines * $base-line-height / $font-size; @if not $relative-font-sizing and $font-size != $base-font-size {
@warn "$relative-font-sizing is false but a relative font size was passed to the rhythm function";
}
$rhythm: $font-unit * $lines * $base-line-height / $font-size;
@return $rhythm; @return $rhythm;
} }
@function lines-for-font-size($font-size) {
$lines: ceil($font-size / $base-line-height);
@if $lines * $base-line-height - $font-size < $min-line-padding * 2 {
$lines: $lines + 1;
}
@return $lines;
}
// Apply leading whitespace // Apply leading whitespace
@mixin leader($lines: 1, $font-size: $base-font-size, $property: margin) { @mixin leader($lines: 1, $font-size: $base-font-size, $property: margin) {
#{$property}-top: rhythm($lines, $font-size); $leader: rhythm($lines, $font-size);
@if unit($leader) == px {
$leader: floor($leader)
}
#{$property}-top: $leader;
} }
// Apply leading whitespace as padding
@mixin padding-leader($lines: 1, $font-size: $base-font-size) { @mixin padding-leader($lines: 1, $font-size: $base-font-size) {
@include leader($lines, $font-size, padding); @include leader($lines, $font-size, padding);
} }
// Apply leading whitespace as margin
@mixin margin-leader($lines: 1, $font-size: $base-font-size) { @mixin margin-leader($lines: 1, $font-size: $base-font-size) {
@include leader($lines, $font-size, margin); @include leader($lines, $font-size, margin);
} }
// Apply trailing whitespace // Apply trailing whitespace
@mixin trailer($lines: 1, $font-size: $base-font-size, $property: margin) { @mixin trailer($lines: 1, $font-size: $base-font-size, $property: margin) {
#{$property}-bottom: rhythm($lines, $font-size); $leader: rhythm($lines, $font-size);
@if unit($leader) == px {
$leader: ceil($leader)
}
#{$property}-bottom: $leader;
} }
// Apply trailing whitespace as padding
@mixin padding-trailer($lines: 1, $font-size: $base-font-size) { @mixin padding-trailer($lines: 1, $font-size: $base-font-size) {
@include trailer($lines, $font-size, padding); @include trailer($lines, $font-size, padding);
} }
// Apply trailing whitespace as margin
@mixin margin-trailer($lines: 1, $font-size: $base-font-size) { @mixin margin-trailer($lines: 1, $font-size: $base-font-size) {
@include trailer($lines, $font-size, margin); @include trailer($lines, $font-size, margin);
} }
@ -95,21 +149,28 @@ $base-half-leader: $base-leader / 2;
@include trailer($trailer, $font-size); @include trailer($trailer, $font-size);
} }
// Apply a border width to any side without destroying the vertical rhythm // Apply a border width to any side without destroying the vertical rhythm.
// The available space ($lines) must be greater than the width of your border.
@mixin apply-side-rhythm-border($side, $width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { @mixin apply-side-rhythm-border($side, $width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) {
@if not $relative-font-sizing and $font-size != $base-font-size {
@warn "$relative-font-sizing is false but a relative font size was passed to apply-side-rhythm-border";
}
border-#{$side}: { border-#{$side}: {
style: $border-style; style: $border-style;
width: 1em * $width / $font-size; width: $font-unit * $width / $font-size;
}; };
padding-#{$side}: 1em / $font-size * ($lines * $base-line-height - $width); padding-#{$side}: $font-unit / $font-size * ($lines * $base-line-height - $width);
} }
// Aplly rhythm borders equally to all sides // Aplly rhythm borders equally to all sides
@mixin rhythm-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { @mixin rhythm-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) {
@if not $relative-font-sizing and $font-size != $base-font-size {
@warn "$relative-font-sizing is false but a relative font size was passed to rhythm-borders";
}
border: { border: {
style: $border-style; style: $border-style;
width: 1em * $width / $font-size; }; width: $font-unit * $width / $font-size; };
padding: 1em / $font-size * ($lines * $base-line-height - $width); padding: $font-unit / $font-size * ($lines * $base-line-height - $width);
} }
// Apply a leading rhythm border // Apply a leading rhythm border

View File

@ -2,7 +2,7 @@
@mixin no-bullet { @mixin no-bullet {
list-style-image : none; list-style-image : none;
list-style-type : none; list-style-type : none;
margin-left : 0px; margin-left : 0;
} }
// turns off the bullets for an entire list // turns off the bullets for an entire list

View File

@ -0,0 +1,12 @@
// Prevent long urls and text from breaking layouts
// [originally from perishablepress.com](http://perishablepress.com/press/2010/06/01/wrapping-content/)
@mixin force-wrap {
white-space: pre; // CSS 2.0
white-space: pre-wrap; // CSS 2.1
white-space: pre-line; // CSS 3.0
white-space: -pre-wrap; // Opera 4-6
white-space: -o-pre-wrap; // Opera 7
white-space: -moz-pre-wrap; // Mozilla
white-space: -hp-pre-wrap; // HP Printers
word-wrap: break-word; // IE 5+
}

View File

@ -18,7 +18,7 @@
// [Easy Clearing](http://www.positioniseverything.net/easyclearing.html) // [Easy Clearing](http://www.positioniseverything.net/easyclearing.html)
// has the advantage of allowing positioned elements to hang // has the advantage of allowing positioned elements to hang
// outside the bounds of the container at the expense of more tricky CSS. // outside the bounds of the container at the expense of more tricky CSS.
@mixin pie-clearfix { @mixin legacy-pie-clearfix {
&:after { &:after {
content : "\0020"; content : "\0020";
display : block; display : block;
@ -29,3 +29,16 @@
} }
@include has-layout; @include has-layout;
} }
// This is an updated version of the PIE clearfix method that reduces the amount of CSS output.
// If you need to support Firefox before 3.5 you need to use `legacy-pie-clearfix` instead.
//
// Adapted from: [A new micro clearfix hack](http://nicolasgallagher.com/micro-clearfix-hack/)
@mixin pie-clearfix {
&:after {
content: "";
display: table;
clear: both;
}
@include has-layout;
}

View File

@ -1,77 +1,96 @@
<!-- <!--
PIE: CSS3 rendering for IE PIE: CSS3 rendering for IE
Version 1.0beta3 Version 1.0beta5
http://css3pie.com http://css3pie.com
Dual-licensed for use under the Apache License Version 2.0 or the General Public License (GPL) Version 2. Dual-licensed for use under the Apache License Version 2.0 or the General Public License (GPL) Version 2.
--> -->
<PUBLIC:COMPONENT lightWeight="true"> <PUBLIC:COMPONENT lightWeight="true">
<!-- saved from url=(0014)about:internet -->
<PUBLIC:ATTACH EVENT="oncontentready" FOR="element" ONEVENT="init()" /> <PUBLIC:ATTACH EVENT="oncontentready" FOR="element" ONEVENT="init()" />
<PUBLIC:ATTACH EVENT="ondocumentready" FOR="element" ONEVENT="init()" /> <PUBLIC:ATTACH EVENT="ondocumentready" FOR="element" ONEVENT="init()" />
<PUBLIC:ATTACH EVENT="ondetach" FOR="element" ONEVENT="cleanup()" /> <PUBLIC:ATTACH EVENT="ondetach" FOR="element" ONEVENT="cleanup()" />
<script type="text/javascript"> <script type="text/javascript">
var doc = element.document;var h=window.PIE; var doc = element.document;var f=window.PIE;
if(!h){h=window.PIE={I:"-pie-",Na:"Pie",Ja:"pie_",Bb:{TD:1,TH:1}};try{doc.execCommand("BackgroundImageCache",false,true)}catch(J){}h.D=function(){for(var a=4,b=doc.createElement("div"),c=b.getElementsByTagName("i");b.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]--\>",c[0];);return a}();if(h.D===6)h.I=h.I.replace(/^-/,"");h.Wa=h.D===8&&doc.documentMode;h.n={Aa:function(a){var b=h.ec;if(!b){b=h.ec=doc.createDocumentFragment();b.namespaces.add("css3vml","urn:schemas-microsoft-com:vml")}return b.createElement("css3vml:"+a)}, if(!f){f=window.PIE={Q:"-pie-",nb:"Pie",La:"pie_",Ac:{TD:1,TH:1},cc:{TABLE:1,THEAD:1,TBODY:1,TFOOT:1,TR:1,INPUT:1,TEXTAREA:1,SELECT:1,OPTION:1,IMG:1,HR:1},fc:{A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},Gd:{submit:1,button:1,reset:1},aa:function(){}};try{doc.execCommand("BackgroundImageCache",false,true)}catch(aa){}for(var X=4,Y=doc.createElement("div"),ca=Y.getElementsByTagName("i"),Z;Y.innerHTML="<!--[if gt IE "+ ++X+"]><i></i><![endif]--\>",ca[0];);f.V=X;if(X===6)f.Q=f.Q.replace(/^-/,"");f.Ba=doc.documentMode||
oa:function(a){return a&&a._pieId||(a._pieId=+new Date+Math.random())},$a:function(a){var b,c,g,e,d=arguments;b=1;for(c=d.length;b<c;b++){e=d[b];for(g in e)if(e.hasOwnProperty(g))a[g]=e[g]}return a},Hb:function(a,b,c){var g=h.Yb||(h.Yb={}),e=g[a],d;if(e)b.call(c,e);else{d=new Image;d.onload=function(){e=g[a]={g:d.width,e:d.height};b.call(c,e);d.onload=null};d.src=a}}};h.ea=function(){this.ab=[];this.vb={}};h.ea.prototype={W:function(a){var b=h.n.oa(a),c=this.vb,g=this.ab;if(!(b in c)){c[b]=g.length; f.V;Y.innerHTML='<v:shape adj="1"/>';Z=Y.firstChild;Z.style.behavior="url(#default#VML)";f.zc=typeof Z.adj==="object";(function(){var a,b=0,c={};f.p={Za:function(d){if(!a){a=doc.createDocumentFragment();a.namespaces.add("css3vml","urn:schemas-microsoft-com:vml")}return a.createElement("css3vml:"+d)},Aa:function(d){return d&&d._pieId||(d._pieId="_"+ ++b)},Eb:function(d){var e,g,i,j,h=arguments;e=1;for(g=h.length;e<g;e++){j=h[e];for(i in j)if(j.hasOwnProperty(i))d[i]=j[i]}return d},Rb:function(d,e,
g.push(a)}},Ga:function(a){a=h.n.oa(a);var b=this.vb;if(a&&a in b){delete this.ab[b[a]];delete b[a]}},Ca:function(){for(var a=this.ab,b=a.length;b--;)a[b]&&a[b]()}};if(h.Wa===8){h.La=new h.ea;setInterval(function(){h.La.Ca()},250)}h.F=new h.ea;window.attachEvent("onbeforeunload",function(){h.F.Ca()});h.F.ya=function(a,b,c){a.attachEvent(b,c);this.W(function(){a.detachEvent(b,c)})};(function(){function a(){h.ta.Ca()}h.ta=new h.ea;h.F.ya(window,"onresize",a)})();(function(){function a(){h.Ma.Ca()}h.Ma= g){var i=c[d],j,h;if(i)Object.prototype.toString.call(i)==="[object Array]"?i.push([e,g]):e.call(g,i);else{h=c[d]=[[e,g]];j=new Image;j.onload=function(){i=c[d]={i:j.width,f:j.height};for(var k=0,n=h.length;k<n;k++)h[k][0].call(h[k][1],i);j.onload=null};j.src=d}}}})();f.Na={gc:function(a,b,c,d){function e(){k=i>=90&&i<270?b:0;n=i<180?c:0;l=b-k;q=c-n}function g(){for(;i<0;)i+=360;i%=360}var i=d.ra;d=d.zb;var j,h,k,n,l,q,s,m;if(d){d=d.coords(a,b,c);j=d.x;h=d.y}if(i){i=i.jd();g();e();if(!d){j=k;h=n}d=
new h.ea;h.F.ya(window,"onscroll",a);h.ta.W(a)})();(function(){function a(){c=h.Ka.rc()}function b(){if(c){for(var g=0,e=c.length;g<e;g++)h.attach(c[g]);c=0}}var c;h.F.ya(window,"onbeforeprint",a);h.F.ya(window,"onafterprint",b)})();h.i=function(){function a(d){this.w=d}var b=doc.createElement("length-calc"),c=b.style,g={},e={};c.position="absolute";c.top=c.left=-9999;a.prototype={bb:/(px|em|ex|mm|cm|in|pt|pc|%)$/,qb:function(){var d=g[this.w];if(d===void 0)d=g[this.w]=parseFloat(this.w);return d}, f.Na.tc(j,h,i,l,q);a=d[0];d=d[1]}else if(d){a=b-j;d=c-h}else{j=h=a=0;d=c}s=a-j;m=d-h;if(i===void 0){i=!s?m<0?90:270:!m?s<0?180:0:-Math.atan2(m,s)/Math.PI*180;g();e()}return{ra:i,xc:j,yc:h,td:a,ud:d,Vd:k,Wd:n,rd:l,sd:q,kd:s,ld:m,rc:f.Na.dc(j,h,a,d)}},tc:function(a,b,c,d,e){if(c===0||c===180)return[d,b];else if(c===90||c===270)return[a,e];else{c=Math.tan(-c*Math.PI/180);a=c*a-b;b=-1/c;d=b*d-e;e=b-c;return[(d-a)/e,(c*d-b*a)/e]}},dc:function(a,b,c,d){a=c-a;b=d-b;return Math.abs(a===0?b:b===0?a:Math.sqrt(a*
Ua:function(){var d=e[this.w];if(!d){d=this.w.match(this.bb);d=e[this.w]=d&&d[0]||"px"}return d},a:function(d,f){var i=this.qb(),j=this.Ua();switch(j){case "px":return i;case "%":return i*(typeof f==="function"?f():f)/100;case "em":return i*this.ob(d);case "ex":return i*this.ob(d)/2;default:return i*a.oc[j]}},ob:function(d){var f=d.currentStyle.fontSize;if(f.indexOf("px")>0)return parseFloat(f);else{b.style.width="1em";d.appendChild(b);f=b.offsetWidth;b.parentNode!==d&&d.removeChild(b);return f}}}; a+b*b))}};f.ea=function(){this.Gb=[];this.oc={}};f.ea.prototype={ba:function(a){var b=f.p.Aa(a),c=this.oc,d=this.Gb;if(!(b in c)){c[b]=d.length;d.push(a)}},Ha:function(a){a=f.p.Aa(a);var b=this.oc;if(a&&a in b){delete this.Gb[b[a]];delete b[a]}},wa:function(){for(var a=this.Gb,b=a.length;b--;)a[b]&&a[b]()}};f.Oa=new f.ea;f.Oa.Qd=function(){var a=this;if(!a.Rd){setInterval(function(){a.wa()},250);a.Rd=1}};(function(){function a(){f.K.wa();window.detachEvent("onunload",a);window.PIE=null}f.K=new f.ea;
a.oc=function(){var d=["mm","cm","in","pt","pc"],f={},i=doc.documentElement,j=d.length,k;for(i.appendChild(b);j--;){k=d[j];b.style.width="100"+k;f[k]=b.offsetWidth/100}i.removeChild(b);return f}();a.kb=new a("0");return a}();h.Ha=function(){function a(e){this.Q=e}var b=new h.i("50%"),c={top:1,center:1,bottom:1},g={left:1,center:1,right:1};a.prototype={yc:function(){if(!this.nb){var e=this.Q,d=e.length,f=h.i.kb,i=h.q.fa.ba;f=["left",f,"top",f];if(d===1){e.push({type:i,value:"center"});d++}if(d===2){i& window.attachEvent("onunload",a);f.K.sa=function(b,c,d){b.attachEvent(c,d);this.ba(function(){b.detachEvent(c,d)})}})();f.Qa=new f.ea;f.K.sa(window,"onresize",function(){f.Qa.wa()});(function(){function a(){f.mb.wa()}f.mb=new f.ea;f.K.sa(window,"onscroll",a);f.Qa.ba(a)})();(function(){function a(){c=f.kb.md()}function b(){if(c){for(var d=0,e=c.length;d<e;d++)f.attach(c[d]);c=0}}var c;f.K.sa(window,"onbeforeprint",a);f.K.sa(window,"onafterprint",b)})();f.lb=new f.ea;f.K.sa(doc,"onmouseup",function(){f.lb.wa()});
(e[0].type|e[1].type)&&e[0].value in c&&e[1].value in g&&e.push(e.shift());if(e[0].type&i)if(e[0].value==="center")f[1]=b;else f[0]=e[0].value;else if(e[0].T())f[1]=new h.i(e[0].value);if(e[1].type&i)if(e[1].value==="center")f[3]=b;else f[2]=e[1].value;else if(e[1].T())f[3]=new h.i(e[1].value)}this.nb=f}return this.nb},coords:function(e,d,f){var i=this.yc(),j=i[1].a(e,d);e=i[3].a(e,f);return{x:i[0]==="right"?d-j:j,y:i[2]==="bottom"?f-e:e}}};return a}();h.Jb=function(){function a(b){this.w=b}a.prototype= f.ge=function(){function a(h){this.Y=h}var b=doc.createElement("length-calc"),c=doc.documentElement,d=b.style,e={},g=["mm","cm","in","pt","pc"],i=g.length,j={};d.position="absolute";d.top=d.left="-9999px";for(c.appendChild(b);i--;){b.style.width="100"+g[i];e[g[i]]=b.offsetWidth/100}c.removeChild(b);b.style.width="1em";a.prototype={Kb:/(px|em|ex|mm|cm|in|pt|pc|%)$/,ic:function(){var h=this.Id;if(h===void 0)h=this.Id=parseFloat(this.Y);return h},yb:function(){var h=this.$d;if(!h)h=this.$d=(h=this.Y.match(this.Kb))&&
{bb:/[a-z]+$/i,Ua:function(){return this.dc||(this.dc=this.w.match(this.bb)[0].toLowerCase())},qc:function(){var b=this.Xb,c;if(b===undefined){b=this.Ua();c=parseFloat(this.w,10);b=this.Xb=b==="deg"?c:b==="rad"?c/Math.PI*180:b==="grad"?c/400*360:b==="turn"?c*360:0}return b}};return a}();h.aa=function(){function a(b){this.w=b}a.Mc=/\s*rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d+|\d*\.\d+)\s*\)\s*/;a.prototype={parse:function(){if(!this.wa){var b=this.w,c=b.match(a.Mc);if(c){this.wa= h[0]||"px";return h},a:function(h,k){var n=this.ic(),l=this.yb();switch(l){case "px":return n;case "%":return n*(typeof k==="function"?k():k)/100;case "em":return n*this.xb(h);case "ex":return n*this.xb(h)/2;default:return n*e[l]}},xb:function(h){var k=h.currentStyle.fontSize,n,l;if(k.indexOf("px")>0)return parseFloat(k);else if(h.tagName in f.cc){l=this;n=h.parentNode;return f.n(k).a(n,function(){return l.xb(n)})}else{h.appendChild(b);k=b.offsetWidth;b.parentNode===h&&h.removeChild(b);return k}}};
"rgb("+c[1]+","+c[2]+","+c[3]+")";this.lb=parseFloat(c[4])}else{this.wa=b;this.lb=b==="transparent"?0:1}}},value:function(b){this.parse();return this.wa==="currentColor"?b.currentStyle.color:this.wa},ha:function(){this.parse();return this.lb}};return a}();h.q=function(){function a(c){this.Ba=c;this.ch=0;this.Q=[];this.ra=0}var b=a.fa={sa:1,hb:2,$:4,Sb:8,ib:16,ba:32,z:64,ca:128,da:256,ua:512,Vb:1024,URL:2048};a.jb=function(c,g){this.type=c;this.value=g};a.jb.prototype={Ya:function(){return this.type& f.n=function(h){return j[h]||(j[h]=new a(h))};return a}();f.Ja=function(){function a(e){this.X=e}var b=f.n("50%"),c={top:1,center:1,bottom:1},d={left:1,center:1,right:1};a.prototype={zd:function(){if(!this.ac){var e=this.X,g=e.length,i=f.v,j=i.pa,h=f.n("0");j=j.ma;h=["left",h,"top",h];if(g===1){e.push(new i.ob(j,"center"));g++}if(g===2){j&(e[0].k|e[1].k)&&e[0].d in c&&e[1].d in d&&e.push(e.shift());if(e[0].k&j)if(e[0].d==="center")h[1]=b;else h[0]=e[0].d;else if(e[0].W())h[1]=f.n(e[0].d);if(e[1].k&
b.z||this.type&b.ca&&this.value==="0"},T:function(){return this.Ya()||this.type&b.ua}};a.prototype={Vc:/\s/,Gc:/^[\+\-]?(\d*\.)?\d+/,url:/^url\(\s*("([^"]*)"|'([^']*)'|([!#$%&*-~]*))\s*\)/i,ub:/^\-?[_a-z][\w-]*/i,Qc:/^("([^"]*)"|'([^']*)')/,Ac:/^#([\da-f]{6}|[\da-f]{3})/i,Tc:{px:b.z,em:b.z,ex:b.z,mm:b.z,cm:b.z,"in":b.z,pt:b.z,pc:b.z,deg:b.sa,rad:b.sa,grad:b.sa},lc:{aqua:1,black:1,blue:1,fuchsia:1,gray:1,green:1,lime:1,maroon:1,navy:1,olive:1,purple:1,red:1,silver:1,teal:1,white:1,yellow:1,currentColor:1}, j)if(e[1].d==="center")h[3]=b;else h[2]=e[1].d;else if(e[1].W())h[3]=f.n(e[1].d)}this.ac=h}return this.ac},coords:function(e,g,i){var j=this.zd(),h=j[1].a(e,g);e=j[3].a(e,i);return{x:j[0]==="right"?g-h:h,y:j[2]==="bottom"?i-e:e}}};return a}();f.Ka=function(){function a(b,c){this.i=b;this.f=c}a.prototype={a:function(b,c,d,e,g){var i=this.i,j=this.f,h=c/d;e=e/g;if(i==="contain"){i=e>h?c:d*e;j=e>h?c/e:d}else if(i==="cover"){i=e<h?c:d*e;j=e<h?c/e:d}else if(i==="auto"){j=j==="auto"?g:j.a(b,d);i=j*e}else{i=
kc:{rgb:1,rgba:1,hsl:1,hsla:1},next:function(c){function g(u,n){u=new a.jb(u,n);if(!c){k.Q.push(u);k.ra++}return u}function e(){k.ra++;return null}var d,f,i,j,k=this;if(this.ra<this.Q.length)return this.Q[this.ra++];for(;this.Vc.test(this.Ba.charAt(this.ch));)this.ch++;if(this.ch>=this.Ba.length)return e();f=this.ch;d=this.Ba.substring(this.ch);i=d.charAt(0);switch(i){case "#":if(j=d.match(this.Ac)){this.ch+=j[0].length;return g(b.$,j[0])}break;case '"':case "'":if(j=d.match(this.Qc)){this.ch+=j[0].length; i.a(b,c);j=j==="auto"?i/e:j.a(b,d)}return{i:i,f:j}}};a.Kc=new a("auto","auto");return a}();f.Ec=function(){function a(b){this.Y=b}a.prototype={Kb:/[a-z]+$/i,yb:function(){return this.ad||(this.ad=this.Y.match(this.Kb)[0].toLowerCase())},jd:function(){var b=this.Vc,c;if(b===undefined){b=this.yb();c=parseFloat(this.Y,10);b=this.Vc=b==="deg"?c:b==="rad"?c/Math.PI*180:b==="grad"?c/400*360:b==="turn"?c*360:0}return b}};return a}();f.Jc=function(){function a(c){this.Y=c}var b={};a.Pd=/\s*rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d+|\d*\.\d+)\s*\)\s*/;
return g(b.Vb,j[2]||j[3]||"")}break;case "/":case ",":this.ch++;return g(b.da,i);case "u":if(j=d.match(this.url)){this.ch+=j[0].length;return g(b.URL,j[2]||j[3]||j[4]||"")}}if(j=d.match(this.Gc)){i=j[0];this.ch+=i.length;if(d.charAt(i.length)==="%"){this.ch++;return g(b.ua,i+"%")}if(j=d.substring(i.length).match(this.ub)){i+=j[0];this.ch+=j[0].length;return g(this.Tc[j[0].toLowerCase()]||b.Sb,i)}return g(b.ca,i)}if(j=d.match(this.ub)){i=j[0];this.ch+=i.length;if(i.toLowerCase()in this.lc)return g(b.$, a.Fb={aliceblue:"F0F8FF",antiquewhite:"FAEBD7",aqua:"0FF",aquamarine:"7FFFD4",azure:"F0FFFF",beige:"F5F5DC",bisque:"FFE4C4",black:"000",blanchedalmond:"FFEBCD",blue:"00F",blueviolet:"8A2BE2",brown:"A52A2A",burlywood:"DEB887",cadetblue:"5F9EA0",chartreuse:"7FFF00",chocolate:"D2691E",coral:"FF7F50",cornflowerblue:"6495ED",cornsilk:"FFF8DC",crimson:"DC143C",cyan:"0FF",darkblue:"00008B",darkcyan:"008B8B",darkgoldenrod:"B8860B",darkgray:"A9A9A9",darkgreen:"006400",darkkhaki:"BDB76B",darkmagenta:"8B008B",
i);if(d.charAt(i.length)==="("){this.ch++;if(i.toLowerCase()in this.kc){d=function(u){return u&&u.type&b.ca};j=function(u){return u&&u.type&(b.ca|b.ua)};var m=function(u,n){return u&&u.value===n},l=function(){return k.next(1)};if((i.charAt(0)==="r"?j(l()):d(l()))&&m(l(),",")&&j(l())&&m(l(),",")&&j(l())&&(i==="rgb"||i==="hsa"||m(l(),",")&&d(l()))&&m(l(),")"))return g(b.$,this.Ba.substring(f,this.ch));return e()}return g(b.ib,i+"(")}return g(b.ba,i)}this.ch++;return g(b.hb,i)},v:function(){return this.Q[this.ra-- - darkolivegreen:"556B2F",darkorange:"FF8C00",darkorchid:"9932CC",darkred:"8B0000",darksalmon:"E9967A",darkseagreen:"8FBC8F",darkslateblue:"483D8B",darkslategray:"2F4F4F",darkturquoise:"00CED1",darkviolet:"9400D3",deeppink:"FF1493",deepskyblue:"00BFFF",dimgray:"696969",dodgerblue:"1E90FF",firebrick:"B22222",floralwhite:"FFFAF0",forestgreen:"228B22",fuchsia:"F0F",gainsboro:"DCDCDC",ghostwhite:"F8F8FF",gold:"FFD700",goldenrod:"DAA520",gray:"808080",green:"008000",greenyellow:"ADFF2F",honeydew:"F0FFF0",
2]},all:function(){for(;this.next(););return this.Q},Z:function(c,g){for(var e=[],d,f;d=this.next();){if(c(d)){f=true;this.v();break}e.push(d)}return g&&!f?null:e}};return a}();var K=function(a){this.d=a};K.prototype={J:0,Kc:function(){var a=this.Oa,b;return!a||(b=this.m())&&(a.x!==b.x||a.y!==b.y)},Nc:function(){var a=this.Oa,b;return!a||(b=this.m())&&(a.g!==b.g||a.e!==b.e)},pb:function(){var a=this.d.getBoundingClientRect();return{x:a.left,y:a.top,g:a.right-a.left,e:a.bottom-a.top}},m:function(){return this.J? hotpink:"FF69B4",indianred:"CD5C5C",indigo:"4B0082",ivory:"FFFFF0",khaki:"F0E68C",lavender:"E6E6FA",lavenderblush:"FFF0F5",lawngreen:"7CFC00",lemonchiffon:"FFFACD",lightblue:"ADD8E6",lightcoral:"F08080",lightcyan:"E0FFFF",lightgoldenrodyellow:"FAFAD2",lightgreen:"90EE90",lightgrey:"D3D3D3",lightpink:"FFB6C1",lightsalmon:"FFA07A",lightseagreen:"20B2AA",lightskyblue:"87CEFA",lightslategray:"789",lightsteelblue:"B0C4DE",lightyellow:"FFFFE0",lime:"0F0",limegreen:"32CD32",linen:"FAF0E6",magenta:"F0F",
this.xa||(this.xa=this.pb()):this.pb()},zc:function(){return!!this.Oa},Da:function(){++this.J},Fa:function(){if(!--this.J){if(this.xa)this.Oa=this.xa;this.xa=null}}};(function(){function a(b){var c=h.n.oa(b);return function(){if(this.J){var g=this.mb||(this.mb={});return c in g?g[c]:(g[c]=b.call(this))}else return b.call(this)}}h.p={J:0,V:function(b){function c(g){this.d=g}h.n.$a(c.prototype,h.p,b);c.cc={};return c},j:function(){var b=this.la(),c=this.constructor.cc;return b?b in c?c[b]:(c[b]=this.X(b)): maroon:"800000",mediumauqamarine:"66CDAA",mediumblue:"0000CD",mediumorchid:"BA55D3",mediumpurple:"9370D8",mediumseagreen:"3CB371",mediumslateblue:"7B68EE",mediumspringgreen:"00FA9A",mediumturquoise:"48D1CC",mediumvioletred:"C71585",midnightblue:"191970",mintcream:"F5FFFA",mistyrose:"FFE4E1",moccasin:"FFE4B5",navajowhite:"FFDEAD",navy:"000080",oldlace:"FDF5E6",olive:"808000",olivedrab:"688E23",orange:"FFA500",orangered:"FF4500",orchid:"DA70D6",palegoldenrod:"EEE8AA",palegreen:"98FB98",paleturquoise:"AFEEEE",
null},la:a(function(){var b=this.d,c=this.constructor,g=b.style;b=b.currentStyle;var e=this.ja,d=this.qa,f=c.ac||(c.ac=h.I+e);c=c.bc||(c.bc=h.Na+d.charAt(0).toUpperCase()+d.substring(1));return g[c]||b.getAttribute(f)||g[d]||b.getAttribute(e)}),f:a(function(){return!!this.j()}),C:a(function(){var b=this.la(),c=b!==this.Zb;this.Zb=b;return c}),ia:a,Da:function(){++this.J},Fa:function(){--this.J||delete this.mb}}})();h.Lb=h.p.V({ja:h.I+"background",qa:h.Na+"Background",gc:{scroll:1,fixed:1,local:1}, palevioletred:"D87093",papayawhip:"FFEFD5",peachpuff:"FFDAB9",peru:"CD853F",pink:"FFC0CB",plum:"DDA0DD",powderblue:"B0E0E6",purple:"800080",red:"F00",rosybrown:"BC8F8F",royalblue:"4169E1",saddlebrown:"8B4513",salmon:"FA8072",sandybrown:"F4A460",seagreen:"2E8B57",seashell:"FFF5EE",sienna:"A0522D",silver:"C0C0C0",skyblue:"87CEEB",slateblue:"6A5ACD",slategray:"708090",snow:"FFFAFA",springgreen:"00FF7F",steelblue:"4682B4",tan:"D2B48C",teal:"008080",thistle:"D8BFD8",tomato:"FF6347",turquoise:"40E0D0",
Ea:{"repeat-x":1,"repeat-y":1,repeat:1,"no-repeat":1},Hc:{"padding-box":1,"border-box":1,"content-box":1},jc:{"padding-box":1,"border-box":1},Lc:{top:1,right:1,bottom:1,left:1,center:1},Oc:{contain:1,cover:1},X:function(a){function b(v){return v.T()||v.type&j&&v.value in u}function c(v){return v.T()&&new h.i(v.value)||v.value==="auto"&&"auto"}var g=this.d.currentStyle,e,d,f=h.q.fa,i=f.da,j=f.ba,k=f.$,m,l,u=this.Lc,n,q,t=null;if(this.Ta()){a=new h.q(a);t={images:[]};for(d={};e=a.next();){m=e.type; violet:"EE82EE",wheat:"F5DEB3",white:"FFF",whitesmoke:"F5F5F5",yellow:"FF0",yellowgreen:"9ACD32"};a.prototype={parse:function(){if(!this.Ua){var c=this.Y,d;if(d=c.match(a.Pd)){this.Ua="rgb("+d[1]+","+d[2]+","+d[3]+")";this.Yb=parseFloat(d[4])}else{if((d=c.toLowerCase())in a.Fb)c="#"+a.Fb[d];this.Ua=c;this.Yb=c==="transparent"?0:1}}},T:function(c){this.parse();return this.Ua==="currentColor"?c.currentStyle.color:this.Ua},fa:function(){this.parse();return this.Yb}};f.ha=function(c){return b[c]||(b[c]=
l=e.value;if(!d.type&&m&f.ib&&l==="linear-gradient("){n={Y:[],type:"linear-gradient"};for(q={};e=a.next();){m=e.type;l=e.value;if(m&f.hb&&l===")"){q.color&&n.Y.push(q);n.Y.length>1&&h.n.$a(d,n);break}if(m&k){if(n.Ra||n.Va){e=a.v();if(e.type!==i)break;a.next()}q={color:new h.aa(l)};e=a.next();if(e.T())q.xb=new h.i(e.value);else a.v()}else if(m&f.sa&&!n.Ra&&!q.color&&!n.Y.length)n.Ra=new h.Jb(e.value);else if(b(e)&&!n.Va&&!q.color&&!n.Y.length){a.v();n.Va=new h.Ha(a.Z(function(v){return!b(v)},false))}else if(m& new a(c))};return a}();f.v=function(){function a(c){this.$a=c;this.ch=0;this.X=[];this.Ga=0}var b=a.pa={Ia:1,Wb:2,B:4,Lc:8,Xb:16,ma:32,J:64,na:128,oa:256,Ra:512,Tc:1024,URL:2048};a.ob=function(c,d){this.k=c;this.d=d};a.ob.prototype={Ca:function(){return this.k&b.J||this.k&b.na&&this.d==="0"},W:function(){return this.Ca()||this.k&b.Ra}};a.prototype={ce:/\s/,Jd:/^[\+\-]?(\d*\.)?\d+/,url:/^url\(\s*("([^"]*)"|'([^']*)'|([!#$%&*-~]*))\s*\)/i,nc:/^\-?[_a-z][\w-]*/i,Xd:/^("([^"]*)"|'([^']*)')/,Bd:/^#([\da-f]{6}|[\da-f]{3})/i,
i&&l===","){if(q.color){n.Y.push(q);q={}}}else break}}else if(!d.type&&m&f.URL){d.url=l;d.type="image"}else if(b(e)&&!d.size){a.v();d.position=new h.Ha(a.Z(function(v){return!b(v)},false))}else if(m&j)if(l in this.Ea)d.repeat=l;else if(l in this.Hc){d.origin=l;if(l in this.jc)d.clip=l}else{if(l in this.gc)d.Zc=l}else if(m&k&&!t.color)t.color=new h.aa(l);else if(m&i)if(l==="/"){e=a.next();m=e.type;l=e.value;if(m&j&&l in this.Oc)d.size=l;else if(l=c(e))d.size={g:l,e:c(a.next())||a.v()&&l}}else{if(l=== ae:{px:b.J,em:b.J,ex:b.J,mm:b.J,cm:b.J,"in":b.J,pt:b.J,pc:b.J,deg:b.Ia,rad:b.Ia,grad:b.Ia},fd:{rgb:1,rgba:1,hsl:1,hsla:1},next:function(c){function d(q,s){q=new a.ob(q,s);if(!c){k.X.push(q);k.Ga++}return q}function e(){k.Ga++;return null}var g,i,j,h,k=this;if(this.Ga<this.X.length)return this.X[this.Ga++];for(;this.ce.test(this.$a.charAt(this.ch));)this.ch++;if(this.ch>=this.$a.length)return e();i=this.ch;g=this.$a.substring(this.ch);j=g.charAt(0);switch(j){case "#":if(h=g.match(this.Bd)){this.ch+=
","&&d.type){t.images.push(d);d={}}}else return null}d.type&&t.images.push(d)}else this.Fb(function(){var v=g.backgroundPositionX,x=g.backgroundPositionY,r=g.backgroundImage,o=g.backgroundColor;t={};if(o!=="transparent")t.color=new h.aa(o);if(r!=="none")t.images=[{type:"image",url:(new h.q(r)).next().value,repeat:g.backgroundRepeat,position:new h.Ha((new h.q(v+" "+x)).all())}]});return t&&(t.color||t.images&&t.images[0])?t:null},Fb:function(a){var b=this.d.runtimeStyle,c=b.backgroundImage,g=b.backgroundColor; h[0].length;return d(b.B,h[0])}break;case '"':case "'":if(h=g.match(this.Xd)){this.ch+=h[0].length;return d(b.Tc,h[2]||h[3]||"")}break;case "/":case ",":this.ch++;return d(b.oa,j);case "u":if(h=g.match(this.url)){this.ch+=h[0].length;return d(b.URL,h[2]||h[3]||h[4]||"")}}if(h=g.match(this.Jd)){j=h[0];this.ch+=j.length;if(g.charAt(j.length)==="%"){this.ch++;return d(b.Ra,j+"%")}if(h=g.substring(j.length).match(this.nc)){j+=h[0];this.ch+=h[0].length;return d(this.ae[h[0].toLowerCase()]||b.Lc,j)}return d(b.na,
if(c)b.backgroundImage="";if(g)b.backgroundColor="";a=a.call(this);if(c)b.backgroundImage=c;if(g)b.backgroundColor=g;return a},la:h.p.ia(function(){return this.Ta()||this.Fb(function(){var a=this.d.currentStyle;return a.backgroundColor+" "+a.backgroundImage+" "+a.backgroundRepeat+" "+a.backgroundPositionX+" "+a.backgroundPositionY})}),Ta:h.p.ia(function(){var a=this.d;return a.style[this.qa]||a.currentStyle.getAttribute(this.ja)}),wb:function(){var a=0;if(h.D<7){a=this.d;a=""+(a.style[h.Na+"PngFix"]|| j)}if(h=g.match(this.nc)){j=h[0];this.ch+=j.length;if(j.toLowerCase()in f.Jc.Fb||j==="currentColor"||j==="transparent")return d(b.B,j);if(g.charAt(j.length)==="("){this.ch++;if(j.toLowerCase()in this.fd){g=function(q){return q&&q.k&b.na};h=function(q){return q&&q.k&(b.na|b.Ra)};var n=function(q,s){return q&&q.d===s},l=function(){return k.next(1)};if((j.charAt(0)==="r"?h(l()):g(l()))&&n(l(),",")&&h(l())&&n(l(),",")&&h(l())&&(j==="rgb"||j==="hsa"||n(l(),",")&&g(l()))&&n(l(),")"))return d(b.B,this.$a.substring(i,
a.currentStyle.getAttribute(h.I+"png-fix"))==="true"}return a},f:h.p.ia(function(){return(this.Ta()||this.wb())&&!!this.j()})});h.Pb=h.p.V({Ab:["Top","Right","Bottom","Left"],Fc:{bd:"1px",$c:"3px",ad:"5px"},X:function(){var a={},b={},c={},g=false,e=true,d=true,f=true;this.Gb(function(){for(var i=this.d.currentStyle,j=0,k,m,l,u,n,q,t;j<4;j++){l=this.Ab[j];t=l.charAt(0).toLowerCase();k=b[t]=i["border"+l+"Style"];m=i["border"+l+"Color"];l=i["border"+l+"Width"];if(j>0){if(k!==u)d=false;if(m!==n)e=false; this.ch));return e()}return d(b.Xb,j)}return d(b.ma,j)}this.ch++;return d(b.Wb,j)},D:function(){return this.X[this.Ga-- -2]},all:function(){for(;this.next(););return this.X},la:function(c,d){for(var e=[],g,i;g=this.next();){if(c(g)){i=true;this.D();break}e.push(g)}return d&&!i?null:e}};return a}();var da=function(a){this.e=a};da.prototype={Z:0,Nd:function(){var a=this.qb,b;return!a||(b=this.o())&&(a.x!==b.x||a.y!==b.y)},Sd:function(){var a=this.qb,b;return!a||(b=this.o())&&(a.i!==b.i||a.f!==b.f)},
if(l!==q)f=false}u=k;n=m;q=l;c[t]=new h.aa(m);l=a[t]=new h.i(b[t]==="none"?"0":this.Fc[l]||l);if(l.a(this.d)>0)g=true}});return g?{gb:a,Rc:b,mc:c,Wc:f,nc:e,Sc:d}:null},la:h.p.ia(function(){var a=this.d,b=a.currentStyle,c;a.tagName in h.Bb&&a.offsetParent.currentStyle.borderCollapse==="collapse"||this.Gb(function(){c=b.borderWidth+"|"+b.borderStyle+"|"+b.borderColor});return c}),Gb:function(a){var b=this.d.runtimeStyle,c=b.borderWidth,g=b.borderColor;if(c)b.borderWidth="";if(g)b.borderColor="";a=a.call(this); hc:function(){var a=this.e,b=a.getBoundingClientRect(),c=f.Ba===9;return{x:b.left,y:b.top,i:c?a.offsetWidth:b.right-b.left,f:c?a.offsetHeight:b.bottom-b.top}},o:function(){return this.Z?this.Va||(this.Va=this.hc()):this.hc()},Ad:function(){return!!this.qb},cb:function(){++this.Z},hb:function(){if(!--this.Z){if(this.Va)this.qb=this.Va;this.Va=null}}};(function(){function a(b){var c=f.p.Aa(b);return function(){if(this.Z){var d=this.$b||(this.$b={});return c in d?d[c]:(d[c]=b.call(this))}else return b.call(this)}}
if(c)b.borderWidth=c;if(g)b.borderColor=g;return a}});(function(){h.Ia=h.p.V({ja:"border-radius",qa:"borderRadius",X:function(b){var c=null,g,e,d,f,i=false;if(b){e=new h.q(b);var j=function(){for(var k=[],m;(d=e.next())&&d.T();){f=new h.i(d.value);m=f.qb();if(m<0)return null;if(m>0)i=true;k.push(f)}return k.length>0&&k.length<5?{tl:k[0],tr:k[1]||k[0],br:k[2]||k[0],bl:k[3]||k[1]||k[0]}:null};if(b=j()){if(d){if(d.type&h.q.fa.da&&d.value==="/")g=j()}else g=b;if(i&&b&&g)c={x:b,y:g}}}return c}});var a= f.C={Z:0,ja:function(b){function c(d){this.e=d;this.Zb=this.ia()}f.p.Eb(c.prototype,f.C,b);c.$c={};return c},j:function(){var b=this.ia(),c=this.constructor.$c;return b?b in c?c[b]:(c[b]=this.ka(b)):null},ia:a(function(){var b=this.e,c=this.constructor,d=b.style;b=b.currentStyle;var e=this.va,g=this.Fa,i=c.Yc||(c.Yc=f.Q+e);c=c.Zc||(c.Zc=f.nb+g.charAt(0).toUpperCase()+g.substring(1));return d[c]||b.getAttribute(i)||d[g]||b.getAttribute(e)}),h:a(function(){return!!this.j()}),G:a(function(){var b=this.ia(),
h.i.kb;a={tl:a,tr:a,br:a,bl:a};h.Ia.Ib={x:a,y:a}})();h.Nb=h.p.V({ja:"border-image",qa:"borderImage",Ea:{stretch:1,round:1,repeat:1,space:1},X:function(a){var b=null,c,g,e,d,f,i,j=0,k,m=h.q.fa,l=m.ba,u=m.ca,n=m.z,q=m.ua;if(a){c=new h.q(a);b={};for(var t=function(r){return r&&r.type&m.da&&r.value==="/"},v=function(r){return r&&r.type&l&&r.value==="fill"},x=function(){d=c.Z(function(r){return!(r.type&(u|q))});if(v(c.next())&&!b.fill)b.fill=true;else c.v();if(t(c.next())){j++;f=c.Z(function(){return!(g.type& c=b!==this.Zb;this.Zb=b;return c}),ua:a,cb:function(){++this.Z},hb:function(){--this.Z||delete this.$b}}})();f.Sb=f.C.ja({va:f.Q+"background",Fa:f.nb+"Background",cd:{scroll:1,fixed:1,local:1},fb:{"repeat-x":1,"repeat-y":1,repeat:1,"no-repeat":1},sc:{"padding-box":1,"border-box":1,"content-box":1},Od:{top:1,right:1,bottom:1,left:1,center:1},Td:{contain:1,cover:1},eb:{Ma:"backgroundClip",B:"backgroundColor",da:"backgroundImage",Pa:"backgroundOrigin",R:"backgroundPosition",S:"backgroundRepeat",Sa:"backgroundSize"},
(u|q|n))&&!(g.type&l&&g.value==="auto")});if(t(c.next())){j++;i=c.Z(function(){return!(g.type&(u|n))})}}else c.v()};g=c.next();){a=g.type;e=g.value;if(a&(u|q)&&!d){c.v();x()}else if(v(g)&&!b.fill){b.fill=true;x()}else if(a&l&&this.Ea[e]&&!b.repeat){b.repeat={e:e};if(g=c.next())if(g.type&l&&this.Ea[g.value])b.repeat.db=g.value;else c.v()}else if(a&m.URL&&!b.src)b.src=e;else return null}if(!b.src||!d||d.length<1||d.length>4||f&&f.length>4||j===1&&f.length<1||i&&i.length>4||j===2&&i.length<1)return null; ka:function(a){function b(v){return v&&v.W()||v.k&k&&v.d in m}function c(v){return v&&(v.W()&&f.n(v.d)||v.d==="auto"&&"auto")}var d=this.e.currentStyle,e,g,i,j=f.v.pa,h=j.oa,k=j.ma,n=j.B,l,q,s=0,m=this.Od,r,p,t={L:[]};if(this.wb()){e=new f.v(a);for(i={};g=e.next();){l=g.k;q=g.d;if(!i.N&&l&j.Xb&&q==="linear-gradient"){r={ca:[],N:q};for(p={};g=e.next();){l=g.k;q=g.d;if(l&j.Wb&&q===")"){p.color&&r.ca.push(p);r.ca.length>1&&f.p.Eb(i,r);break}if(l&n){if(r.ra||r.zb){g=e.D();if(g.k!==h)break;e.next()}p=
if(!b.repeat)b.repeat={e:"stretch"};if(!b.repeat.db)b.repeat.db=b.repeat.e;a=function(r,o){return{P:o(r[0]),O:o(r[1]||r[0]),K:o(r[2]||r[0]),M:o(r[3]||r[1]||r[0])}};b.slice=a(d,function(r){return new h.i(r.type&u?r.value+"px":r.value)});b.width=f&&f.length>0?a(f,function(r){return r.type&(n|q)?new h.i(r.value):r.value}):(k=this.d.currentStyle)&&{P:new h.i(k.borderTopWidth),O:new h.i(k.borderRightWidth),K:new h.i(k.borderBottomWidth),M:new h.i(k.borderLeftWidth)};b.pa=a(i||[0],function(r){return r.type& {color:f.ha(q)};g=e.next();if(g.W())p.db=f.n(g.d);else e.D()}else if(l&j.Ia&&!r.ra&&!p.color&&!r.ca.length)r.ra=new f.Ec(g.d);else if(b(g)&&!r.zb&&!p.color&&!r.ca.length){e.D();r.zb=new f.Ja(e.la(function(v){return!b(v)},false))}else if(l&h&&q===","){if(p.color){r.ca.push(p);p={}}}else break}}else if(!i.N&&l&j.URL){i.Ab=q;i.N="image"}else if(b(g)&&!i.$){e.D();i.$=new f.Ja(e.la(function(v){return!b(v)},false))}else if(l&k)if(q in this.fb&&!i.bb)i.bb=q;else if(q in this.sc&&!i.Wa){i.Wa=q;if((g=e.next())&&
n?new h.i(r.value):r.value})}return b}});h.Rb=h.p.V({ja:"box-shadow",qa:"boxShadow",X:function(a){var b,c=h.i,g=h.q.fa,e;if(a){e=new h.q(a);b={pa:[],Xa:[]};for(a=function(){for(var d,f,i,j,k,m;d=e.next();){i=d.value;f=d.type;if(f&g.da&&i===",")break;else if(d.Ya()&&!k){e.v();k=e.Z(function(l){return!l.Ya()})}else if(f&g.$&&!j)j=i;else if(f&g.ba&&i==="inset"&&!m)m=true;else return false}d=k&&k.length;if(d>1&&d<5){(m?b.Xa:b.pa).push({Xc:new c(k[0].value),Yc:new c(k[1].value),blur:new c(k[2]?k[2].value: g.k&k&&g.d in this.sc)i.ub=g.d;else{i.ub=q;e.D()}}else if(q in this.cd&&!i.bc)i.bc=q;else return null;else if(l&n&&!t.color)t.color=f.ha(q);else if(l&h&&q==="/"&&!i.Xa&&i.$){g=e.next();if(g.k&k&&g.d in this.Td)i.Xa=new f.Ka(g.d);else if(g=c(g)){l=c(e.next());if(!l){l=g;e.D()}i.Xa=new f.Ka(g,l)}else return null}else if(l&h&&q===","&&i.N){i.Hb=a.substring(s,e.ch-1);s=e.ch;t.L.push(i);i={}}else return null}if(i.N){i.Hb=a.substring(s);t.L.push(i)}}else this.Bc(f.Ba<9?function(){var v=this.eb,o=d[v.R+
"0"),Pc:new c(k[3]?k[3].value:"0"),color:new h.aa(j||"currentColor")});return true}return false};a(););}return b&&(b.Xa.length||b.pa.length)?b:null}});h.Wb=h.p.V({la:h.p.ia(function(){var a=this.d.currentStyle;return a.visibility+"|"+a.display}),X:function(){var a=this.d,b=a.runtimeStyle;a=a.currentStyle;var c=b.visibility,g;b.visibility="";g=a.visibility;b.visibility=c;return{Uc:g!=="hidden",sc:a.display!=="none"}},f:function(){return false}});h.A={U:function(a){function b(c,g,e,d){this.d=c;this.o= "X"],u=d[v.R+"Y"],x=d[v.da],y=d[v.B];if(y!=="transparent")t.color=f.ha(y);if(x!=="none")t.L=[{N:"image",Ab:(new f.v(x)).next().d,bb:d[v.S],$:new f.Ja((new f.v(o+" "+u)).all())}]}:function(){var v=this.eb,o=/\s*,\s*/,u=d[v.da].split(o),x=d[v.B],y,z,D,G,E,B;if(x!=="transparent")t.color=f.ha(x);if((G=u.length)&&u[0]!=="none"){x=d[v.S].split(o);y=d[v.R].split(o);z=d[v.Pa].split(o);D=d[v.Ma].split(o);v=d[v.Sa].split(o);t.L=[];for(o=0;o<G;o++)if((E=u[o])&&E!=="none"){B=v[o].split(" ");t.L.push({Hb:E+" "+
g;this.h=e;this.parent=d}h.n.$a(b.prototype,h.A,a);return b},Za:false,N:function(){return false},Cb:function(){this.k();this.f()&&this.S()},cb:function(){this.Za=true},Db:function(){this.f()?this.S():this.k()},Qa:function(a,b){this.zb(a);for(var c=this.ga||(this.ga=[]),g=a+1,e=c.length,d;g<e;g++)if(d=c[g])break;c[a]=b;this.u().insertBefore(b,d||null)},ma:function(a){var b=this.ga;return b&&b[a]||null},zb:function(a){var b=this.ma(a),c=this.va;if(b&&c){c.removeChild(b);this.ga[a]=null}},na:function(a, x[o]+" "+y[o]+" / "+v[o]+" "+z[o]+" "+D[o],N:"image",Ab:(new f.v(E)).next().d,bb:x[o],$:new f.Ja((new f.v(y[o])).all()),Wa:z[o],ub:D[o],Xa:new f.Ka(B[0],B[1])})}}});return t.color||t.L[0]?t:null},Bc:function(a){var b=f.Ba>8,c=this.eb,d=this.e.runtimeStyle,e=d[c.da],g=d[c.B],i=d[c.S],j,h,k,n;if(e)d[c.da]="";if(g)d[c.B]="";if(i)d[c.S]="";if(b){j=d[c.Ma];h=d[c.Pa];n=d[c.R];k=d[c.Sa];if(j)d[c.Ma]="";if(h)d[c.Pa]="";if(n)d[c.R]="";if(k)d[c.Sa]=""}a=a.call(this);if(e)d[c.da]=e;if(g)d[c.B]=g;if(i)d[c.S]=
b,c,g){var e=this.Pa||(this.Pa={}),d=e[a];if(!d){d=e[a]=h.n.Aa("shape");if(b)d.appendChild(d[b]=h.n.Aa(b));if(g){c=this.ma(g);if(!c){this.Qa(g,doc.createElement("group"+g));c=this.ma(g)}}c.appendChild(d);a=d.style;a.position="absolute";a.left=a.top=0;a.behavior="url(#default#VML)"}return d},Sa:function(a){var b=this.Pa,c=b&&b[a];if(c){c.parentNode.removeChild(c);delete b[a]}return!!c},sb:function(a){var b=this.d,c=this.o.m(),g=c.g,e=c.e,d,f,i,j,k,m;c=a.x.tl.a(b,g);d=a.y.tl.a(b,e);f=a.x.tr.a(b,g); i;if(b){if(j)d[c.Ma]=j;if(h)d[c.Pa]=h;if(n)d[c.R]=n;if(k)d[c.Sa]=k}return a},ia:f.C.ua(function(){return this.wb()||this.Bc(function(){var a=this.e.currentStyle,b=this.eb;return a[b.B]+" "+a[b.da]+" "+a[b.S]+" "+a[b.R+"X"]+" "+a[b.R+"Y"]})}),wb:f.C.ua(function(){var a=this.e;return a.style[this.Fa]||a.currentStyle.getAttribute(this.va)}),qc:function(){var a=0;if(f.V<7){a=this.e;a=""+(a.style[f.nb+"PngFix"]||a.currentStyle.getAttribute(f.Q+"png-fix"))==="true"}return a},h:f.C.ua(function(){return(this.wb()||
i=a.y.tr.a(b,e);j=a.x.br.a(b,g);k=a.y.br.a(b,e);m=a.x.bl.a(b,g);a=a.y.bl.a(b,e);g=Math.min(g/(c+f),e/(i+k),g/(m+j),e/(d+a));if(g<1){c*=g;d*=g;f*=g;i*=g;j*=g;k*=g;m*=g;a*=g}return{x:{tl:c,tr:f,br:j,bl:m},y:{tl:d,tr:i,br:k,bl:a}}},ka:function(a,b,c){b=b||1;var g,e,d=this.o.m();e=d.g*b;d=d.e*b;var f=this.h.s,i=Math.floor,j=Math.ceil,k=a?a.P*b:0,m=a?a.O*b:0,l=a?a.K*b:0;a=a?a.M*b:0;var u,n,q,t,v;if(c||f.f()){g=this.sb(c||f.j());c=g.x.tl*b;f=g.y.tl*b;u=g.x.tr*b;n=g.y.tr*b;q=g.x.br*b;t=g.y.br*b;v=g.x.bl* this.qc())&&!!this.j()})});f.Vb=f.C.ja({wc:["Top","Right","Bottom","Left"],Hd:{thin:"1px",medium:"3px",thick:"5px"},ka:function(){var a={},b={},c={},d=false,e=true,g=true,i=true;this.Cc(function(){for(var j=this.e.currentStyle,h=0,k,n,l,q,s,m,r;h<4;h++){l=this.wc[h];r=l.charAt(0).toLowerCase();k=b[r]=j["border"+l+"Style"];n=j["border"+l+"Color"];l=j["border"+l+"Width"];if(h>0){if(k!==q)g=false;if(n!==s)e=false;if(l!==m)i=false}q=k;s=n;m=l;c[r]=f.ha(n);l=a[r]=f.n(b[r]==="none"?"0":this.Hd[l]||l);if(l.a(this.e)>
b;b=g.y.bl*b;e="m"+i(a)+","+i(f)+"qy"+i(c)+","+i(k)+"l"+j(e-u)+","+i(k)+"qx"+j(e-m)+","+i(n)+"l"+j(e-m)+","+j(d-t)+"qy"+j(e-q)+","+j(d-l)+"l"+i(v)+","+j(d-l)+"qx"+i(a)+","+j(d-b)+" x e"}else e="m"+i(a)+","+i(k)+"l"+j(e-m)+","+i(k)+"l"+j(e-m)+","+j(d-l)+"l"+i(a)+","+j(d-l)+"xe";return e},u:function(){var a=this.parent.ma(this.B),b;if(!a){a=doc.createElement(this.za);b=a.style;b.position="absolute";b.top=b.left=0;this.parent.Qa(this.B,a)}return a},k:function(){this.parent.zb(this.B);delete this.Pa; 0)d=true}});return d?{I:a,Yd:b,gd:c,de:i,hd:e,Zd:g}:null},ia:f.C.ua(function(){var a=this.e,b=a.currentStyle,c;a.tagName in f.Ac&&a.offsetParent.currentStyle.borderCollapse==="collapse"||this.Cc(function(){c=b.borderWidth+"|"+b.borderStyle+"|"+b.borderColor});return c}),Cc:function(a){var b=this.e.runtimeStyle,c=b.borderWidth,d=b.borderColor;if(c)b.borderWidth="";if(d)b.borderColor="";a=a.call(this);if(c)b.borderWidth=c;if(d)b.borderColor=d;return a}});(function(){f.jb=f.C.ja({va:"border-radius",
delete this.ga}};h.Ub=h.A.U({f:function(){var a=this.hc;for(var b in a)if(a.hasOwnProperty(b)&&a[b].f())return true;return false},N:function(){return this.h.eb.C()},cb:function(){if(this.f()){var a=this.rb(),b=a,c;a=a.currentStyle;var g=a.position,e=this.u().style,d=0,f=0;f=this.o.m();if(g==="fixed"&&h.D>6){d=f.x;f=f.y;b=g}else{do b=b.offsetParent;while(b&&b.currentStyle.position==="static");if(b){c=b.getBoundingClientRect();b=b.currentStyle;d=f.x-c.left-(parseFloat(b.borderLeftWidth)||0);f=f.y-c.top- Fa:"borderRadius",ka:function(b){var c=null,d,e,g,i,j=false;if(b){e=new f.v(b);var h=function(){for(var k=[],n;(g=e.next())&&g.W();){i=f.n(g.d);n=i.ic();if(n<0)return null;if(n>0)j=true;k.push(i)}return k.length>0&&k.length<5?{tl:k[0],tr:k[1]||k[0],br:k[2]||k[0],bl:k[3]||k[1]||k[0]}:null};if(b=h()){if(g){if(g.k&f.v.pa.oa&&g.d==="/")d=h()}else d=b;if(j&&b&&d)c={x:b,y:d}}}return c}});var a=f.n("0");a={tl:a,tr:a,br:a,bl:a};f.jb.Dc={x:a,y:a}})();f.Ub=f.C.ja({va:"border-image",Fa:"borderImage",fb:{stretch:1,
(parseFloat(b.borderTopWidth)||0)}else{b=doc.documentElement;d=f.x+b.scrollLeft-b.clientLeft;f=f.y+b.scrollTop-b.clientTop}b="absolute"}e.position=b;e.left=d;e.top=f;e.zIndex=g==="static"?-1:a.zIndex;this.Za=true}},Db:function(){},Eb:function(){var a=this.h.eb.j();this.u().style.display=a.Uc&&a.sc?"":"none"},Cb:function(){this.f()?this.Eb():this.k()},rb:function(){var a=this.d;return a.tagName in h.Bb?a.offsetParent:a},u:function(){var a=this.va,b;if(!a){b=this.rb();a=this.va=doc.createElement("css3-container"); round:1,repeat:1,space:1},ka:function(a){var b=null,c,d,e,g,i,j,h=0,k=f.v.pa,n=k.ma,l=k.na,q=k.Ra;if(a){c=new f.v(a);b={};for(var s=function(p){return p&&p.k&k.oa&&p.d==="/"},m=function(p){return p&&p.k&n&&p.d==="fill"},r=function(){g=c.la(function(p){return!(p.k&(l|q))});if(m(c.next())&&!b.fill)b.fill=true;else c.D();if(s(c.next())){h++;i=c.la(function(p){return!p.W()&&!(p.k&n&&p.d==="auto")});if(s(c.next())){h++;j=c.la(function(p){return!p.Ca()})}}else c.D()};a=c.next();){d=a.k;e=a.d;if(d&(l|q)&&
this.Eb();b.parentNode.insertBefore(a,b)}return a},k:function(){var a=this.va,b;if(a&&(b=a.parentNode))b.removeChild(a);delete this.va;delete this.ga}});h.Kb=h.A.U({B:2,za:"background",N:function(){var a=this.h;return a.G.C()||a.s.C()},f:function(){var a=this.h;return a.L.f()||a.s.f()||a.G.f()||a.R.f()&&a.R.j().Xa},S:function(){var a=this.o.m();if(a.g&&a.e){this.tc();this.uc()}},tc:function(){var a=this.h.G.j(),b=this.o.m(),c=this.d,g=a&&a.color,e,d;if(g&&g.ha()>0){this.tb();a=this.na("bgColor","fill", !g){c.D();r()}else if(m(a)&&!b.fill){b.fill=true;r()}else if(d&n&&this.fb[e]&&!b.repeat){b.repeat={f:e};if(a=c.next())if(a.k&n&&this.fb[a.d])b.repeat.Ob=a.d;else c.D()}else if(d&k.URL&&!b.src)b.src=e;else return null}if(!b.src||!g||g.length<1||g.length>4||i&&i.length>4||h===1&&i.length<1||j&&j.length>4||h===2&&j.length<1)return null;if(!b.repeat)b.repeat={f:"stretch"};if(!b.repeat.Ob)b.repeat.Ob=b.repeat.f;a=function(p,t){return{t:t(p[0]),r:t(p[1]||p[0]),b:t(p[2]||p[0]),l:t(p[3]||p[1]||p[0])}};b.slice=
this.u(),1);e=b.g;b=b.e;a.stroked=false;a.coordsize=e*2+","+b*2;a.coordorigin="1,1";a.path=this.ka(null,2);d=a.style;d.width=e;d.height=b;a.fill.color=g.value(c);c=g.ha();if(c<1)a.fill.opacity=c}else this.Sa("bgColor")},uc:function(){var a=this.h.G.j(),b=this.o.m();a=a&&a.images;var c,g,e,d,f;if(a){this.tb();g=b.g;e=b.e;for(f=a.length;f--;){b=a[f];c=this.na("bgImage"+f,"fill",this.u(),2);c.stroked=false;c.fill.type="tile";c.fillcolor="none";c.coordsize=g*2+","+e*2;c.coordorigin="1,1";c.path=this.ka(0, a(g,function(p){return f.n(p.k&l?p.d+"px":p.d)});if(i&&i[0])b.I=a(i,function(p){return p.W()?f.n(p.d):p.d});if(j&&j[0])b.Da=a(j,function(p){return p.Ca()?f.n(p.d):p.d})}return b}});f.Ic=f.C.ja({va:"box-shadow",Fa:"boxShadow",ka:function(a){var b,c=f.n,d=f.v.pa,e;if(a){e=new f.v(a);b={Da:[],Bb:[]};for(a=function(){for(var g,i,j,h,k,n;g=e.next();){j=g.d;i=g.k;if(i&d.oa&&j===",")break;else if(g.Ca()&&!k){e.D();k=e.la(function(l){return!l.Ca()})}else if(i&d.B&&!h)h=j;else if(i&d.ma&&j==="inset"&&!n)n=
2);d=c.style;d.width=g;d.height=e;if(b.type==="linear-gradient")this.fc(c,b);else{c.fill.src=b.url;this.Jc(c,f)}}}for(f=a?a.length:0;this.Sa("bgImage"+f++););},Jc:function(a,b){h.n.Hb(a.fill.src,function(c){var g=a.fill,e=this.d,d=this.o.m(),f=d.g;d=d.e;var i=this.h,j=i.H.j(),k=j&&j.gb;j=k?k.t.a(e):0;var m=k?k.r.a(e):0,l=k?k.b.a(e):0;k=k?k.l.a(e):0;i=i.G.j().images[b];e=i.position?i.position.coords(e,f-c.g-k-m,d-c.e-j-l):{x:0,y:0};i=i.repeat;l=m=0;var u=f+1,n=d+1,q=h.D===8?0:1;k=Math.round(e.x)+k+ true;else return false}g=k&&k.length;if(g>1&&g<5){(n?b.Bb:b.Da).push({ee:c(k[0].d),fe:c(k[1].d),blur:c(k[2]?k[2].d:"0"),Ud:c(k[3]?k[3].d:"0"),color:f.ha(h||"currentColor")});return true}return false};a(););}return b&&(b.Bb.length||b.Da.length)?b:null}});f.Uc=f.C.ja({ia:f.C.ua(function(){var a=this.e.currentStyle;return a.visibility+"|"+a.display}),ka:function(){var a=this.e,b=a.runtimeStyle;a=a.currentStyle;var c=b.visibility,d;b.visibility="";d=a.visibility;b.visibility=c;return{be:d!=="hidden",
0.5;j=Math.round(e.y)+j+0.5;g.position=k/f+","+j/d;if(i&&i!=="repeat"){if(i==="repeat-x"||i==="no-repeat"){m=j+1;n=j+c.e+q}if(i==="repeat-y"||i==="no-repeat"){l=k+1;u=k+c.g+q}a.style.clip="rect("+m+"px,"+u+"px,"+n+"px,"+l+"px)"}},this)},fc:function(a,b){function c(A,B,y,G,H){if(y===0||y===180)return[G,B];else if(y===90||y===270)return[A,H];else{y=Math.tan(-y*u/180);A=y*A-B;B=-1/y;G=B*G-H;H=B-y;return[(G-A)/H,(y*G-B*A)/H]}}function g(){x=m>=90&&m<270?j:0;r=m<180?k:0;o=j-x;s=k-r}function e(){for(;m< nd:a.display!=="none"}},h:function(){return false}});f.u={P:function(a){function b(c,d,e,g){this.e=c;this.s=d;this.g=e;this.parent=g}f.p.Eb(b.prototype,f.u,a);return b},Cb:false,O:function(){return false},Ea:f.aa,Lb:function(){this.m();this.h()&&this.U()},ib:function(){this.Cb=true},Mb:function(){this.h()?this.U():this.m()},sb:function(a,b){this.vc(a);for(var c=this.qa||(this.qa=[]),d=a+1,e=c.length,g;d<e;d++)if(g=c[d])break;c[a]=b;this.H().insertBefore(b,g||null)},ya:function(a){var b=this.qa;return b&&
0;)m+=360;m%=360}function d(A,B){var y=B[0]-A[0];A=B[1]-A[1];return Math.abs(y===0?A:A===0?y:Math.sqrt(y*y+A*A))}var f=this.d,i=this.o.m(),j=i.g,k=i.e;a=a.fill;var m=b.Ra,l=b.Va;b=b.Y;i=b.length;var u=Math.PI,n,q,t,v,x,r,o,s,p,z,E,C;if(l){l=l.coords(f,j,k);n=l.x;q=l.y}if(m){m=m.qc();e();g();if(!l){n=x;q=r}l=c(n,q,m,o,s);t=l[0];v=l[1]}else if(l){t=j-n;v=k-q}else{n=q=t=0;v=k}l=t-n;p=v-q;if(m===void 0){m=!l?p<0?90:270:!p?l<0?180:0:-Math.atan2(p,l)/u*180;e();g()}l=m%90?Math.atan2(l*j/k,p)/u*180:m+90; b[a]||null},vc:function(a){var b=this.ya(a),c=this.Ta;if(b&&c){c.removeChild(b);this.qa[a]=null}},za:function(a,b,c,d){var e=this.rb||(this.rb={}),g=e[a];if(!g){g=e[a]=f.p.Za("shape");if(b)g.appendChild(g[b]=f.p.Za(b));if(d){c=this.ya(d);if(!c){this.sb(d,doc.createElement("group"+d));c=this.ya(d)}}c.appendChild(g);a=g.style;a.position="absolute";a.left=a.top=0;a.behavior="url(#default#VML)"}return g},vb:function(a){var b=this.rb,c=b&&b[a];if(c){c.parentNode.removeChild(c);delete b[a]}return!!c},kc:function(a){var b=
l+=180;l%=360;z=d([n,q],[t,v]);t=d([x,r],c(x,r,m,o,s));v=[];q=d([n,q],c(n,q,m,x,r))/t*100;n=[];for(p=0;p<i;p++)n.push(b[p].xb?b[p].xb.a(f,z):p===0?0:p===i-1?z:null);for(p=1;p<i;p++){if(n[p]===null){E=n[p-1];z=p;do C=n[++z];while(C===null);n[p]=E+(C-E)/(z-p+1)}n[p]=Math.max(n[p],n[p-1])}for(p=0;p<i;p++)v.push(q+n[p]/t*100+"% "+b[p].color.value(f));a.angle=l;a.type="gradient";a.method="sigma";a.color=b[0].color.value(f);a.color2=b[i-1].color.value(f);a.colors.value=v.join(",")},tb:function(){var a= this.e,c=this.s.o(),d=c.i,e=c.f,g,i,j,h,k,n;c=a.x.tl.a(b,d);g=a.y.tl.a(b,e);i=a.x.tr.a(b,d);j=a.y.tr.a(b,e);h=a.x.br.a(b,d);k=a.y.br.a(b,e);n=a.x.bl.a(b,d);a=a.y.bl.a(b,e);d=Math.min(d/(c+i),e/(j+k),d/(n+h),e/(g+a));if(d<1){c*=d;g*=d;i*=d;j*=d;h*=d;k*=d;n*=d;a*=d}return{x:{tl:c,tr:i,br:h,bl:n},y:{tl:g,tr:j,br:k,bl:a}}},xa:function(a,b,c){b=b||1;var d,e,g=this.s.o();e=g.i*b;g=g.f*b;var i=this.g.F,j=Math.floor,h=Math.ceil,k=a?a.Jb*b:0,n=a?a.Ib*b:0,l=a?a.tb*b:0;a=a?a.Db*b:0;var q,s,m,r,p;if(c||i.h()){d=
this.d.runtimeStyle;a.backgroundImage="url(about:blank)";a.backgroundColor="transparent"},k:function(){h.A.k.call(this);var a=this.d.runtimeStyle;a.backgroundImage=a.backgroundColor=""}});h.Ob=h.A.U({B:4,za:"border",ic:{TABLE:1,INPUT:1,TEXTAREA:1,SELECT:1,OPTION:1,IMG:1,HR:1,FIELDSET:1},Ec:{submit:1,button:1,reset:1},N:function(){var a=this.h;return a.H.C()||a.s.C()},f:function(){var a=this.h;return(a.L.f()||a.s.f()||a.G.f())&&a.H.f()},S:function(){var a=this.d,b=this.h.H.j(),c=this.o.m(),g=c.g;c= this.kc(c||i.j());c=d.x.tl*b;i=d.y.tl*b;q=d.x.tr*b;s=d.y.tr*b;m=d.x.br*b;r=d.y.br*b;p=d.x.bl*b;b=d.y.bl*b;e="m"+j(a)+","+j(i)+"qy"+j(c)+","+j(k)+"l"+h(e-q)+","+j(k)+"qx"+h(e-n)+","+j(s)+"l"+h(e-n)+","+h(g-r)+"qy"+h(e-m)+","+h(g-l)+"l"+j(p)+","+h(g-l)+"qx"+j(a)+","+h(g-b)+" x e"}else e="m"+j(a)+","+j(k)+"l"+h(e-n)+","+j(k)+"l"+h(e-n)+","+h(g-l)+"l"+j(a)+","+h(g-l)+"xe";return e},H:function(){var a=this.parent.ya(this.M),b;if(!a){a=doc.createElement(this.Ya);b=a.style;b.position="absolute";b.top=b.left=
c.e;var e,d,f,i,j;if(b){this.Cc();b=this.wc(2);i=0;for(j=b.length;i<j;i++){f=b[i];e=this.na("borderPiece"+i,f.stroke?"stroke":"fill",this.u());e.coordsize=g*2+","+c*2;e.coordorigin="1,1";e.path=f.path;d=e.style;d.width=g;d.height=c;e.filled=!!f.fill;e.stroked=!!f.stroke;if(f.stroke){e=e.stroke;e.weight=f.fb+"px";e.color=f.color.value(a);e.dashstyle=f.stroke==="dashed"?"2 2":f.stroke==="dotted"?"1 1":"solid";e.linestyle=f.stroke==="double"&&f.fb>2?"ThinThin":"Single"}else e.fill.color=f.fill.value(a)}for(;this.Sa("borderPiece"+ 0;this.parent.sb(this.M,a)}return a},mc:function(){var a=this.e,b=a.currentStyle,c=a.runtimeStyle,d=a.tagName,e=f.V===6,g;if(e&&(d in f.cc||d==="FIELDSET")||d==="BUTTON"||d==="INPUT"&&a.type in f.Gd){c.borderWidth="";d=this.g.z.wc;for(g=d.length;g--;){e=d[g];c["padding"+e]="";c["padding"+e]=f.n(b["padding"+e]).a(a)+f.n(b["border"+e+"Width"]).a(a)+(f.V!==8&&g%2?1:0)}c.borderWidth=0}else if(e){if(a.childNodes.length!==1||a.firstChild.tagName!=="ie6-mask"){b=doc.createElement("ie6-mask");d=b.style;d.visibility=
i++););}},Cc:function(){var a=this.d,b=a.currentStyle,c=a.runtimeStyle,g=a.tagName,e=h.D===6,d;if(e&&g in this.ic||g==="BUTTON"||g==="INPUT"&&a.type in this.Ec){c.borderWidth="";g=this.h.H.Ab;for(d=g.length;d--;){e=g[d];c["padding"+e]="";c["padding"+e]=(new h.i(b["padding"+e])).a(a)+(new h.i(b["border"+e+"Width"])).a(a)+(!h.D===8&&d%2?1:0)}c.borderWidth=0}else if(e){if(a.childNodes.length!==1||a.firstChild.tagName!=="ie6-mask"){b=doc.createElement("ie6-mask");g=b.style;g.visibility="visible";for(g.zoom= "visible";for(d.zoom=1;d=a.firstChild;)b.appendChild(d);a.appendChild(b);c.visibility="hidden"}}else c.borderColor="transparent"},he:function(){},m:function(){this.parent.vc(this.M);delete this.rb;delete this.qa}};f.Rc=f.u.P({h:function(){var a=this.ed;for(var b in a)if(a.hasOwnProperty(b)&&a[b].h())return true;return false},O:function(){return this.g.Pb.G()},ib:function(){if(this.h()){var a=this.jc(),b=a,c;a=a.currentStyle;var d=a.position,e=this.H().style,g=0,i=0;i=this.s.o();if(d==="fixed"&&f.V>
1;g=a.firstChild;)b.appendChild(g);a.appendChild(b);c.visibility="hidden"}}else c.borderColor="transparent"},wc:function(a){var b=this.d,c,g,e,d=this.h.H,f=[],i,j,k,m,l=Math.round,u,n,q;if(d.f()){c=d.j();d=c.gb;n=c.Rc;q=c.mc;if(c.Wc&&c.Sc&&c.nc){if(q.t.ha()>0){c=d.t.a(b);k=c/2;f.push({path:this.ka({P:k,O:k,K:k,M:k},a),stroke:n.t,color:q.t,fb:c})}}else{a=a||1;c=this.o.m();g=c.g;e=c.e;c=l(d.t.a(b));k=l(d.r.a(b));m=l(d.b.a(b));b=l(d.l.a(b));var t={t:c,r:k,b:m,l:b};b=this.h.s;if(b.f())u=this.sb(b.j()); 6){g=i.x;i=i.y;b=d}else{do b=b.offsetParent;while(b&&b.currentStyle.position==="static");if(b){c=b.getBoundingClientRect();b=b.currentStyle;g=i.x-c.left-(parseFloat(b.borderLeftWidth)||0);i=i.y-c.top-(parseFloat(b.borderTopWidth)||0)}else{b=doc.documentElement;g=i.x+b.scrollLeft-b.clientLeft;i=i.y+b.scrollTop-b.clientTop}b="absolute"}e.position=b;e.left=g;e.top=i;e.zIndex=d==="static"?-1:a.zIndex;this.Cb=true}},Mb:f.aa,Nb:function(){var a=this.g.Pb.j();this.H().style.display=a.be&&a.nd?"":"none"},
i=Math.floor;j=Math.ceil;var v=function(o,s){return u?u[o][s]:0},x=function(o,s,p,z,E,C){var A=v("x",o),B=v("y",o),y=o.charAt(1)==="r";o=o.charAt(0)==="b";return A>0&&B>0?(C?"al":"ae")+(y?j(g-A):i(A))*a+","+(o?j(e-B):i(B))*a+","+(i(A)-s)*a+","+(i(B)-p)*a+","+z*65535+","+2949075*(E?1:-1):(C?"m":"l")+(y?g-s:s)*a+","+(o?e-p:p)*a},r=function(o,s,p,z){var E=o==="t"?i(v("x","tl"))*a+","+j(s)*a:o==="r"?j(g-s)*a+","+i(v("y","tr"))*a:o==="b"?j(g-v("x","br"))*a+","+i(e-s)*a:i(s)*a+","+j(e-v("y","bl"))*a;o= Lb:function(){this.h()?this.Nb():this.m()},jc:function(){var a=this.e;return a.tagName in f.Ac?a.offsetParent:a},H:function(){var a=this.Ta,b;if(!a){b=this.jc();a=this.Ta=doc.createElement("css3-container");a.style.direction="ltr";this.Nb();b.parentNode.insertBefore(a,b)}return a},ab:f.aa,m:function(){var a=this.Ta,b;if(a&&(b=a.parentNode))b.removeChild(a);delete this.Ta;delete this.qa}});f.Fc=f.u.P({M:2,Ya:"background",O:function(){var a=this.g;return a.w.G()||a.F.G()},h:function(){var a=this.g;
o==="t"?j(g-v("x","tr"))*a+","+j(s)*a:o==="r"?j(g-s)*a+","+j(e-v("y","br"))*a:o==="b"?i(v("x","bl"))*a+","+i(e-s)*a:i(s)*a+","+i(v("y","tl"))*a;return p?(z?"m"+o:"")+"l"+E:(z?"m"+E:"")+"l"+o};b=function(o,s,p,z,E,C){var A=o==="l"||o==="r",B=t[o],y,G;if(B>0&&n[o]!=="none"&&q[o].ha()>0){y=t[A?o:s];s=t[A?s:o];G=t[A?o:p];p=t[A?p:o];if(n[o]==="dashed"||n[o]==="dotted"){f.push({path:x(z,y,s,C+45,0,1)+x(z,0,0,C,1,0),fill:q[o]});f.push({path:r(o,B/2,0,1),stroke:n[o],fb:B,color:q[o]});f.push({path:x(E,G,p, return a.q.h()||a.F.h()||a.w.h()||a.ga.h()&&a.ga.j().Bb},U:function(){var a=this.s.o();if(a.i&&a.f){this.od();this.pd()}},od:function(){var a=this.g.w.j(),b=this.s.o(),c=this.e,d=a&&a.color,e,g;if(d&&d.fa()>0){this.lc();a=this.za("bgColor","fill",this.H(),1);e=b.i;b=b.f;a.stroked=false;a.coordsize=e*2+","+b*2;a.coordorigin="1,1";a.path=this.xa(null,2);g=a.style;g.width=e;g.height=b;a.fill.color=d.T(c);c=d.fa();if(c<1)a.fill.opacity=c}else this.vb("bgColor")},pd:function(){var a=this.g.w.j(),b=this.s.o();
C,0,1)+x(E,0,0,C-45,1,0),fill:q[o]})}else f.push({path:x(z,y,s,C+45,0,1)+r(o,B,0,0)+x(E,G,p,C,0,0)+(n[o]==="double"&&B>2?x(E,G-i(G/3),p-i(p/3),C-45,1,0)+r(o,j(B/3*2),1,0)+x(z,y-i(y/3),s-i(s/3),C,1,0)+"x "+x(z,i(y/3),i(s/3),C+45,0,1)+r(o,i(B/3),1,0)+x(E,i(G/3),i(p/3),C,0,0):"")+x(E,0,0,C-45,1,0)+r(o,0,1,0)+x(z,0,0,C,1,0),fill:q[o]})}};b("t","l","r","tl","tr",90);b("r","t","b","tr","br",0);b("b","r","l","br","bl",-90);b("l","b","t","bl","tl",-180)}}return f},k:function(){h.A.k.call(this);this.d.runtimeStyle.borderColor= a=a&&a.L;var c,d,e,g,i;if(a){this.lc();d=b.i;e=b.f;for(i=a.length;i--;){b=a[i];c=this.za("bgImage"+i,"fill",this.H(),2);c.stroked=false;c.fill.type="tile";c.fillcolor="none";c.coordsize=d*2+","+e*2;c.coordorigin="1,1";c.path=this.xa(0,2);g=c.style;g.width=d;g.height=e;if(b.N==="linear-gradient")this.bd(c,b);else{c.fill.src=b.Ab;this.Md(c,i)}}}for(i=a?a.length:0;this.vb("bgImage"+i++););},Md:function(a,b){var c=this;f.p.Rb(a.fill.src,function(d){var e=c.e,g=c.s.o(),i=g.i;g=g.f;if(i&&g){var j=a.fill,
""}});h.Mb=h.A.U({B:5,Ic:["t","tr","r","br","b","bl","l","tl","c"],N:function(){return this.h.L.C()},f:function(){return this.h.L.f()},S:function(){var a=this.h.L.j(),b=this.o.m();this.u();var c=this.d,g=this.yb;h.n.Hb(a.src,function(e){function d(x,r,o,s,p){x=g[x].style;x.width=r;x.height=o;x.left=s;x.top=p}function f(x,r,o){for(var s=0,p=x.length;s<p;s++)g[x[s]].imagedata[r]=o}var i=b.g,j=b.e,k=a.width,m=k.P.a(c),l=k.O.a(c),u=k.K.a(c);k=k.M.a(c);var n=a.slice,q=n.P.a(c),t=n.O.a(c),v=n.K.a(c);n= h=c.g,k=h.z.j(),n=k&&k.I;k=n?n.t.a(e):0;var l=n?n.r.a(e):0,q=n?n.b.a(e):0;n=n?n.l.a(e):0;h=h.w.j().L[b];e=h.$?h.$.coords(e,i-d.i-n-l,g-d.f-k-q):{x:0,y:0};h=h.bb;q=l=0;var s=i+1,m=g+1,r=f.V===8?0:1;n=Math.round(e.x)+n+0.5;k=Math.round(e.y)+k+0.5;j.position=n/i+","+k/g;if(h&&h!=="repeat"){if(h==="repeat-x"||h==="no-repeat"){l=k+1;m=k+d.f+r}if(h==="repeat-y"||h==="no-repeat"){q=n+1;s=n+d.i+r}a.style.clip="rect("+l+"px,"+s+"px,"+m+"px,"+q+"px)"}}})},bd:function(a,b){var c=this.e,d=this.s.o(),e=d.i,g=
n.M.a(c);d("tl",k,m,0,0);d("t",i-k-l,m,k,0);d("tr",l,m,i-l,0);d("r",l,j-m-u,i-l,m);d("br",l,u,i-l,j-u);d("b",i-k-l,u,k,j-u);d("bl",k,u,0,j-u);d("l",k,j-m-u,0,m);d("c",i-k-l,j-m-u,k,m);f(["tl","t","tr"],"cropBottom",(e.e-q)/e.e);f(["tl","l","bl"],"cropRight",(e.g-n)/e.g);f(["bl","b","br"],"cropTop",(e.e-v)/e.e);f(["tr","r","br"],"cropLeft",(e.g-t)/e.g);if(a.repeat.db==="stretch"){f(["l","r","c"],"cropTop",q/e.e);f(["l","r","c"],"cropBottom",v/e.e)}if(a.repeat.e==="stretch"){f(["t","b","c"],"cropLeft", d.f;a=a.fill;d=b.ca;var i=d.length,j=Math.PI,h=f.Na,k=h.tc,n=h.dc;b=h.gc(c,e,g,b);h=b.ra;var l=b.xc,q=b.yc,s=b.Vd,m=b.Wd,r=b.rd,p=b.sd,t=b.kd,v=b.ld;b=b.rc;e=h%90?Math.atan2(t*e/g,v)/j*180:h+90;e+=180;e%=360;r=k(s,m,h,r,p);g=n(s,m,r[0],r[1]);j=[];r=k(l,q,h,s,m);n=n(l,q,r[0],r[1])/g*100;k=[];for(h=0;h<i;h++)k.push(d[h].db?d[h].db.a(c,b):h===0?0:h===i-1?b:null);for(h=1;h<i;h++){if(k[h]===null){l=k[h-1];b=h;do q=k[++b];while(q===null);k[h]=l+(q-l)/(b-h+1)}k[h]=Math.max(k[h],k[h-1])}for(h=0;h<i;h++)j.push(n+
n/e.g);f(["t","b","c"],"cropRight",t/e.g)}g.c.style.display=a.fill?"":"none"},this)},u:function(){var a=this.parent.ma(this.B),b,c,g,e=this.Ic,d=e.length;if(!a){a=doc.createElement("border-image");b=a.style;b.position="absolute";this.yb={};for(g=0;g<d;g++){c=this.yb[e[g]]=h.n.Aa("rect");c.appendChild(h.n.Aa("imagedata"));b=c.style;b.behavior="url(#default#VML)";b.position="absolute";b.top=b.left=0;c.imagedata.src=this.h.L.j().src;c.stroked=false;c.filled=false;a.appendChild(c)}this.parent.Qa(this.B, k[h]/g*100+"% "+d[h].color.T(c));a.angle=e;a.type="gradient";a.method="sigma";a.color=d[0].color.T(c);a.color2=d[i-1].color.T(c);if(a.colors)a.colors.value=j.join(",");else a.colors=j.join(",")},lc:function(){var a=this.e.runtimeStyle;a.backgroundImage="url(about:blank)";a.backgroundColor="transparent"},m:function(){f.u.m.call(this);var a=this.e.runtimeStyle;a.backgroundImage=a.backgroundColor=""}});f.Gc=f.u.P({M:4,Ya:"border",O:function(){var a=this.g;return a.z.G()||a.F.G()},h:function(){var a=
a)}return a}});h.Qb=h.A.U({B:1,za:"outset-box-shadow",N:function(){var a=this.h;return a.R.C()||a.s.C()},f:function(){var a=this.h.R;return a.f()&&a.j().pa[0]},S:function(){function a(y,G,H,w,D,F,I){y=b.na("shadow"+y+G,"fill",g,f-y);G=y.fill;y.coordsize=m*2+","+l*2;y.coordorigin="1,1";y.stroked=false;y.filled=true;G.color=D.value(c);if(F){G.type="gradienttitle";G.color2=G.color;G.opacity=0}y.path=I;v=y.style;v.left=H;v.top=w;v.width=m;v.height=l;return y}var b=this,c=this.d,g=this.u(),e=this.h,d= this.g;return(a.F.h()||a.w.h())&&!a.q.h()&&a.z.h()},U:function(){var a=this.e,b=this.g.z.j(),c=this.s.o(),d=c.i;c=c.f;var e,g,i,j,h;if(b){this.mc();b=this.wd(2);j=0;for(h=b.length;j<h;j++){i=b[j];e=this.za("borderPiece"+j,i.stroke?"stroke":"fill",this.H());e.coordsize=d*2+","+c*2;e.coordorigin="1,1";e.path=i.path;g=e.style;g.width=d;g.height=c;e.filled=!!i.fill;e.stroked=!!i.stroke;if(i.stroke){e=e.stroke;e.weight=i.Qb+"px";e.color=i.color.T(a);e.dashstyle=i.stroke==="dashed"?"2 2":i.stroke==="dotted"?
e.R.j().pa;e=e.s.j();var f=d.length,i=f,j,k=this.o.m(),m=k.g,l=k.e;k=h.D===8?1:0;for(var u=["tl","tr","br","bl"],n,q,t,v,x,r,o,s,p,z,E,C,A,B;i--;){q=d[i];x=q.Xc.a(c);r=q.Yc.a(c);j=q.Pc.a(c);o=q.blur.a(c);q=q.color;s=-j-o;if(!e&&o)e=h.Ia.Ib;s=this.ka({P:s,O:s,K:s,M:s},2,e);if(o){p=(j+o)*2+m;z=(j+o)*2+l;E=o*2/p;C=o*2/z;if(o-j>m/2||o-j>l/2)for(j=4;j--;){n=u[j];A=n.charAt(0)==="b";B=n.charAt(1)==="r";n=a(i,n,x,r,q,o,s);t=n.fill;t.focusposition=(B?1-E:E)+","+(A?1-C:C);t.focussize="0,0";n.style.clip="rect("+ "1 1":"solid";e.linestyle=i.stroke==="double"&&i.Qb>2?"ThinThin":"Single"}else e.fill.color=i.fill.T(a)}for(;this.vb("borderPiece"+j++););}},wd:function(a){var b=this.e,c,d,e,g=this.g.z,i=[],j,h,k,n,l=Math.round,q,s,m;if(g.h()){c=g.j();g=c.I;s=c.Yd;m=c.gd;if(c.de&&c.Zd&&c.hd){if(m.t.fa()>0){c=g.t.a(b);k=c/2;i.push({path:this.xa({Jb:k,Ib:k,tb:k,Db:k},a),stroke:s.t,color:m.t,Qb:c})}}else{a=a||1;c=this.s.o();d=c.i;e=c.f;c=l(g.t.a(b));k=l(g.r.a(b));n=l(g.b.a(b));b=l(g.l.a(b));var r={t:c,r:k,b:n,l:b};
((A?z/2:0)+k)+"px,"+(B?p:p/2)+"px,"+(A?z:z/2)+"px,"+((B?p/2:0)+k)+"px)"}else{n=a(i,"",x,r,q,o,s);t=n.fill;t.focusposition=E+","+C;t.focussize=1-E*2+","+(1-C*2)}}else{n=a(i,"",x,r,q,o,s);x=q.ha();if(x<1)n.fill.opacity=x}}}});h.Tb=h.A.U({B:6,za:"imgEl",N:function(){var a=this.h;return this.d.src!==this.$b||a.s.C()},f:function(){var a=this.h;return a.s.f()||a.G.wb()},S:function(){this.Bc();var a=this.na("img","fill",this.u()),b=a.fill,c=this.o.m(),g=c.g;c=c.e;var e=this.h.H.j(),d=e&&e.gb,f=this.d;e= b=this.g.F;if(b.h())q=this.kc(b.j());j=Math.floor;h=Math.ceil;var p=function(o,u){return q?q[o][u]:0},t=function(o,u,x,y,z,D){var G=p("x",o),E=p("y",o),B=o.charAt(1)==="r";o=o.charAt(0)==="b";return G>0&&E>0?(D?"al":"ae")+(B?h(d-G):j(G))*a+","+(o?h(e-E):j(E))*a+","+(j(G)-u)*a+","+(j(E)-x)*a+","+y*65535+","+2949075*(z?1:-1):(D?"m":"l")+(B?d-u:u)*a+","+(o?e-x:x)*a},v=function(o,u,x,y){var z=o==="t"?j(p("x","tl"))*a+","+h(u)*a:o==="r"?h(d-u)*a+","+j(p("y","tr"))*a:o==="b"?h(d-p("x","br"))*a+","+j(e-
f.src;var i=Math.round;a.stroked=false;b.type="frame";b.src=e;b.position=0.5/g+","+0.5/c;a.coordsize=g*2+","+c*2;a.coordorigin="1,1";a.path=this.ka(d?{P:i(d.t.a(f)),O:i(d.r.a(f)),K:i(d.b.a(f)),M:i(d.l.a(f))}:0,2);a=a.style;a.width=g;a.height=c;this.$b=e},Bc:function(){this.d.runtimeStyle.filter="alpha(opacity=0)"},k:function(){h.A.k.call(this);this.d.runtimeStyle.filter=""}});h.Ka=function(){function a(f){function i(){if(!B){var w,D,F=f.currentStyle.getAttribute(c)==="true";if(!A){A=1;f.runtimeStyle.zoom= u)*a:j(u)*a+","+h(e-p("y","bl"))*a;o=o==="t"?h(d-p("x","tr"))*a+","+h(u)*a:o==="r"?h(d-u)*a+","+h(e-p("y","br"))*a:o==="b"?j(p("x","bl"))*a+","+j(e-u)*a:j(u)*a+","+j(p("y","tl"))*a;return x?(y?"m"+o:"")+"l"+z:(y?"m"+z:"")+"l"+o};b=function(o,u,x,y,z,D){var G=o==="l"||o==="r",E=r[o],B,A;if(E>0&&s[o]!=="none"&&m[o].fa()>0){B=r[G?o:u];u=r[G?u:o];A=r[G?o:x];x=r[G?x:o];if(s[o]==="dashed"||s[o]==="dotted"){i.push({path:t(y,B,u,D+45,0,1)+t(y,0,0,D,1,0),fill:m[o]});i.push({path:v(o,E/2,0,1),stroke:s[o],Qb:E,
1;for(var I=f,M=1;I=I.previousSibling;)if(I.nodeType===1){M=0;break}if(M)f.className+=" "+h.Ja+"first-child"}p.Da();if(F&&(D=p.m())&&(w=doc.documentElement||doc.body)&&(D.y>w.clientHeight||D.x>w.clientWidth||D.y+D.e<0||D.x+D.g<0)){if(!G){G=1;h.Ma.W(i)}}else{B=1;G=A=0;h.Ma.Ga(i);z={G:new h.Lb(f),H:new h.Pb(f),L:new h.Nb(f),s:new h.Ia(f),R:new h.Rb(f),eb:new h.Wb(f)};E=[z.G,z.H,z.L,z.s,z.R,z.eb];w=new h.Ub(f,p,z);D=[new h.Qb(f,p,z,w),new h.Kb(f,p,z,w),new h.Ob(f,p,z,w),new h.Mb(f,p,z,w)];f.tagName=== color:m[o]});i.push({path:t(z,A,x,D,0,1)+t(z,0,0,D-45,1,0),fill:m[o]})}else i.push({path:t(y,B,u,D+45,0,1)+v(o,E,0,0)+t(z,A,x,D,0,0)+(s[o]==="double"&&E>2?t(z,A-j(A/3),x-j(x/3),D-45,1,0)+v(o,h(E/3*2),1,0)+t(y,B-j(B/3),u-j(u/3),D,1,0)+"x "+t(y,j(B/3),j(u/3),D+45,0,1)+v(o,j(E/3),1,0)+t(z,j(A/3),j(x/3),D,0,0):"")+t(z,0,0,D-45,1,0)+v(o,0,1,0)+t(y,0,0,D,1,0),fill:m[o]})}};b("t","l","r","tl","tr",90);b("r","t","b","tr","br",0);b("b","r","l","br","bl",-90);b("l","b","t","bl","tl",-180)}}return i},m:function(){if(this.ec||
"IMG"&&D.push(new h.Tb(f,p,z,w));w.hc=D;s=[w].concat(D);if(w=f.currentStyle.getAttribute(h.I+"watch-ancestors")){C=[];w=parseInt(w,10);D=0;for(F=f.parentNode;F&&(w==="NaN"||D++<w);){C.push(F);F.attachEvent("onpropertychange",t);F.attachEvent("onmouseenter",n);F.attachEvent("onmouseleave",q);F=F.parentNode}}h.Wa===8&&h.La.W(k);k(1)}if(!y){y=1;f.attachEvent("onmove",j);f.attachEvent("onresize",j);f.attachEvent("onpropertychange",m);f.attachEvent("onmouseenter",n);f.attachEvent("onmouseleave",q);h.ta.W(j); !this.g.q.h())this.e.runtimeStyle.borderColor="";f.u.m.call(this)}});f.Tb=f.u.P({M:5,Ld:["t","tr","r","br","b","bl","l","tl","c"],O:function(){return this.g.q.G()},h:function(){return this.g.q.h()},U:function(){this.H();var a=this.g.q.j(),b=this.g.z.j(),c=this.s.o(),d=this.e,e=this.uc;f.p.Rb(a.src,function(g){function i(v,o,u,x,y){v=e[v].style;var z=Math.max;v.width=z(o,0);v.height=z(u,0);v.left=x;v.top=y}function j(v,o,u){for(var x=0,y=v.length;x<y;x++)e[v[x]].imagedata[o]=u}var h=c.i,k=c.f,n=f.n("0"),
h.F.W(r)}p.Fa()}}function j(){p&&p.zc()&&k()}function k(w){if(!H)if(B){var D,F;v();if(w||p.Kc()){D=0;for(F=s.length;D<F;D++)s[D].cb()}if(w||p.Nc()){D=0;for(F=s.length;D<F;D++)s[D].Db()}x()}else A||i()}function m(){var w,D,F;w=event;if(!H&&!(w&&w.propertyName in d))if(B){v();w=0;for(D=s.length;w<D;w++){F=s[w];F.Za||F.cb();F.N()&&F.Cb()}x()}else A||i()}function l(){f.className+=g}function u(){f.className=f.className.replace(e,"")}function n(){setTimeout(l,0)}function q(){setTimeout(u,0)}function t(){var w= l=a.I||(b?b.I:{t:n,r:n,b:n,l:n});n=l.t.a(d);var q=l.r.a(d),s=l.b.a(d);l=l.l.a(d);var m=a.slice,r=m.t.a(d),p=m.r.a(d),t=m.b.a(d);m=m.l.a(d);i("tl",l,n,0,0);i("t",h-l-q,n,l,0);i("tr",q,n,h-q,0);i("r",q,k-n-s,h-q,n);i("br",q,s,h-q,k-s);i("b",h-l-q,s,l,k-s);i("bl",l,s,0,k-s);i("l",l,k-n-s,0,n);i("c",h-l-q,k-n-s,l,n);j(["tl","t","tr"],"cropBottom",(g.f-r)/g.f);j(["tl","l","bl"],"cropRight",(g.i-m)/g.i);j(["bl","b","br"],"cropTop",(g.f-t)/g.f);j(["tr","r","br"],"cropLeft",(g.i-p)/g.i);j(["l","r","c"],"cropTop",
event.propertyName;if(w==="className"||w==="id")m()}function v(){p.Da();for(var w=E.length;w--;)E[w].Da()}function x(){for(var w=E.length;w--;)E[w].Fa();p.Fa()}function r(){if(y){if(C)for(var w=0,D=C.length,F;w<D;w++){F=C[w];F.detachEvent("onpropertychange",t);F.detachEvent("onmouseenter",n);F.detachEvent("onmouseleave",q)}f.detachEvent("onmove",k);f.detachEvent("onresize",k);f.detachEvent("onpropertychange",m);f.detachEvent("onmouseenter",n);f.detachEvent("onmouseleave",q);h.F.Ga(r);y=0}}function o(){if(!H){var w, r/g.f);j(["l","r","c"],"cropBottom",t/g.f);j(["t","b","c"],"cropLeft",m/g.i);j(["t","b","c"],"cropRight",p/g.i);e.c.style.display=a.fill?"":"none"},this)},H:function(){var a=this.parent.ya(this.M),b,c,d,e=this.Ld,g=e.length;if(!a){a=doc.createElement("border-image");b=a.style;b.position="absolute";this.uc={};for(d=0;d<g;d++){c=this.uc[e[d]]=f.p.Za("rect");c.appendChild(f.p.Za("imagedata"));b=c.style;b.behavior="url(#default#VML)";b.position="absolute";b.top=b.left=0;c.imagedata.src=this.g.q.j().src;
D;r();H=1;if(s){w=0;for(D=s.length;w<D;w++)s[w].k()}h.Wa===8&&h.La.Ga(k);h.ta.Ga(k);s=p=z=E=C=f=null}}var s,p=new K(f),z,E,C,A,B,y,G,H;this.Dc=i;this.update=k;this.k=o;this.vc=f}var b={},c=h.I+"lazy-init",g=" "+h.Ja+"hover",e=new RegExp("\\b"+h.Ja+"hover\\b","g"),d={background:1,bgColor:1,display:1};a.xc=function(f){var i=h.n.oa(f);return b[i]||(b[i]=new a(f))};a.k=function(f){f=h.n.oa(f);var i=b[f];if(i){i.k();delete b[f]}};a.rc=function(){var f=[],i;if(b){for(var j in b)if(b.hasOwnProperty(j)){i= c.stroked=false;c.filled=false;a.appendChild(c)}this.parent.sb(this.M,a)}return a},Ea:function(){if(this.h()){var a=this.e,b=a.runtimeStyle,c=this.g.q.j().I;b.borderStyle="solid";if(c){b.borderTopWidth=c.t.a(a)+"px";b.borderRightWidth=c.r.a(a)+"px";b.borderBottomWidth=c.b.a(a)+"px";b.borderLeftWidth=c.l.a(a)+"px"}this.mc()}},m:function(){var a=this.e.runtimeStyle;a.borderStyle="";if(this.ec||!this.g.z.h())a.borderColor=a.borderWidth="";f.u.m.call(this)}});f.Hc=f.u.P({M:1,Ya:"outset-box-shadow",O:function(){var a=
b[j];f.push(i.vc);i.k()}b={}}return f};return a}();h.attach=function(a){h.D<9&&h.Ka.xc(a).Dc()};h.detach=function(a){h.Ka.k(a)}}; this.g;return a.ga.G()||a.F.G()},h:function(){var a=this.g.ga;return a.h()&&a.j().Da[0]},U:function(){function a(B,A,L,N,H,I,F){B=b.za("shadow"+B+A,"fill",d,i-B);A=B.fill;B.coordsize=n*2+","+l*2;B.coordorigin="1,1";B.stroked=false;B.filled=true;A.color=H.T(c);if(I){A.type="gradienttitle";A.color2=A.color;A.opacity=0}B.path=F;p=B.style;p.left=L;p.top=N;p.width=n;p.height=l;return B}var b=this,c=this.e,d=this.H(),e=this.g,g=e.ga.j().Da;e=e.F.j();var i=g.length,j=i,h,k=this.s.o(),n=k.i,l=k.f;k=f.V===
var L=window.PIE,N=element;function init(){doc.media!=="print"&&L.attach(N)}function cleanup(){L.detach(N);L=N=0}N.readyState==="complete"&&init(); 8?1:0;for(var q=["tl","tr","br","bl"],s,m,r,p,t,v,o,u,x,y,z,D,G,E;j--;){m=g[j];t=m.ee.a(c);v=m.fe.a(c);h=m.Ud.a(c);o=m.blur.a(c);m=m.color;u=-h-o;if(!e&&o)e=f.jb.Dc;u=this.xa({Jb:u,Ib:u,tb:u,Db:u},2,e);if(o){x=(h+o)*2+n;y=(h+o)*2+l;z=o*2/x;D=o*2/y;if(o-h>n/2||o-h>l/2)for(h=4;h--;){s=q[h];G=s.charAt(0)==="b";E=s.charAt(1)==="r";s=a(j,s,t,v,m,o,u);r=s.fill;r.focusposition=(E?1-z:z)+","+(G?1-D:D);r.focussize="0,0";s.style.clip="rect("+((G?y/2:0)+k)+"px,"+(E?x:x/2)+"px,"+(G?y:y/2)+"px,"+((E?x/2:0)+k)+
"px)"}else{s=a(j,"",t,v,m,o,u);r=s.fill;r.focusposition=z+","+D;r.focussize=1-z*2+","+(1-D*2)}}else{s=a(j,"",t,v,m,o,u);t=m.fa();if(t<1)s.fill.opacity=t}}}});f.Pc=f.u.P({M:6,Ya:"imgEl",O:function(){var a=this.g;return this.e.src!==this.Xc||a.F.G()},h:function(){var a=this.g;return a.F.h()||a.w.qc()},U:function(){this.Xc=i;this.Cd();var a=this.za("img","fill",this.H()),b=a.fill,c=this.s.o(),d=c.i;c=c.f;var e=this.g.z.j(),g=e&&e.I;e=this.e;var i=e.src,j=Math.round,h=e.currentStyle,k=f.n;if(!g||f.V<
7){g=f.n("0");g={t:g,r:g,b:g,l:g}}a.stroked=false;b.type="frame";b.src=i;b.position=(d?0.5/d:0)+","+(c?0.5/c:0);a.coordsize=d*2+","+c*2;a.coordorigin="1,1";a.path=this.xa({Jb:j(g.t.a(e)+k(h.paddingTop).a(e)),Ib:j(g.r.a(e)+k(h.paddingRight).a(e)),tb:j(g.b.a(e)+k(h.paddingBottom).a(e)),Db:j(g.l.a(e)+k(h.paddingLeft).a(e))},2);a=a.style;a.width=d;a.height=c},Cd:function(){this.e.runtimeStyle.filter="alpha(opacity=0)"},m:function(){f.u.m.call(this);this.e.runtimeStyle.filter=""}});f.Oc=f.u.P({ib:f.aa,
Mb:f.aa,Nb:f.aa,Lb:f.aa,Kd:/^,+|,+$/g,Fd:/,+/g,gb:function(a,b){(this.pb||(this.pb=[]))[a]=b||void 0},ab:function(){var a=this.pb,b;if(a&&(b=a.join(",").replace(this.Kd,"").replace(this.Fd,","))!==this.Wc)this.Wc=this.e.runtimeStyle.background=b},m:function(){this.e.runtimeStyle.background="";delete this.pb}});f.Mc=f.u.P({ta:1,O:function(){return this.g.w.G()},h:function(){var a=this.g;return a.w.h()||a.q.h()},U:function(){var a=this.g.w.j(),b,c,d=0,e,g;if(a){b=[];if(c=a.L)for(;e=c[d++];)if(e.N===
"linear-gradient"){g=this.vd(e.Wa);g=(e.Xa||f.Ka.Kc).a(this.e,g.i,g.f,g.i,g.f);b.push("url(data:image/svg+xml,"+escape(this.xd(e,g.i,g.f))+") "+this.dd(e.$)+" / "+g.i+"px "+g.f+"px "+(e.bc||"")+" "+(e.Wa||"")+" "+(e.ub||""))}else b.push(e.Hb);a.color&&b.push(a.color.Y);this.parent.gb(this.ta,b.join(","))}},dd:function(a){return a?a.X.map(function(b){return b.d}).join(" "):"0 0"},vd:function(a){var b=this.e,c=this.s.o(),d=c.i;c=c.f;var e;if(a!=="border-box")if((e=this.g.z.j())&&(e=e.I)){d-=e.l.a(b)+
e.l.a(b);c-=e.t.a(b)+e.b.a(b)}if(a==="content-box"){a=f.n;e=b.currentStyle;d-=a(e.paddingLeft).a(b)+a(e.paddingRight).a(b);c-=a(e.paddingTop).a(b)+a(e.paddingBottom).a(b)}return{i:d,f:c}},xd:function(a,b,c){var d=this.e,e=a.ca,g=e.length,i=f.Na.gc(d,b,c,a);a=i.xc;var j=i.yc,h=i.td,k=i.ud;i=i.rc;var n,l,q,s,m;n=[];for(l=0;l<g;l++)n.push(e[l].db?e[l].db.a(d,i):l===0?0:l===g-1?i:null);for(l=1;l<g;l++)if(n[l]===null){s=n[l-1];q=l;do m=n[++q];while(m===null);n[l]=s+(m-s)/(q-l+1)}b=['<svg width="'+b+'" height="'+
c+'" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="'+a/b*100+'%" y1="'+j/c*100+'%" x2="'+h/b*100+'%" y2="'+k/c*100+'%">'];for(l=0;l<g;l++)b.push('<stop offset="'+n[l]/i+'" stop-color="'+e[l].color.T(d)+'" stop-opacity="'+e[l].color.fa()+'"/>');b.push('</linearGradient></defs><rect width="100%" height="100%" fill="url(#g)"/></svg>');return b.join("")},m:function(){this.parent.gb(this.ta)}});f.Nc=f.u.P({S:"repeat",Sc:"stretch",Qc:"round",ta:0,O:function(){return this.g.q.G()},
h:function(){return this.g.q.h()},U:function(){var a=this,b=a.g.q.j(),c=a.g.z.j(),d=a.s.o(),e=b.repeat,g=e.f,i=e.Ob,j=a.e,h=0;f.p.Rb(b.src,function(k){function n(R,S,U,V,W,T,w,C,K,O){J.push('<pattern patternUnits="userSpaceOnUse" id="pattern'+Q+'" x="'+(g===p?R+U/2-K/2:R)+'" y="'+(i===p?S+V/2-O/2:S)+'" width="'+K+'" height="'+O+'"><svg width="'+K+'" height="'+O+'" viewBox="'+W+" "+T+" "+w+" "+C+'" preserveAspectRatio="none"><image xlink:href="'+r+'" x="0" y="0" width="'+s+'" height="'+m+'" /></svg></pattern>');
P.push('<rect x="'+R+'" y="'+S+'" width="'+U+'" height="'+V+'" fill="url(#pattern'+Q+')" />');Q++}var l=d.i,q=d.f,s=k.i,m=k.f,r=a.Dd(b.src,s,m),p=a.S,t=a.Sc;k=a.Qc;var v=Math.ceil,o=f.n("0"),u=b.I||(c?c.I:{t:o,r:o,b:o,l:o});o=u.t.a(j);var x=u.r.a(j),y=u.b.a(j);u=u.l.a(j);var z=b.slice,D=z.t.a(j),G=z.r.a(j),E=z.b.a(j);z=z.l.a(j);var B=l-u-x,A=q-o-y,L=s-z-G,N=m-D-E,H=g===t?B:L*o/D,I=i===t?A:N*x/G,F=g===t?B:L*y/E;t=i===t?A:N*u/z;var J=[],P=[],Q=0;if(g===k){H-=(H-(B%H||H))/v(B/H);F-=(F-(B%F||F))/v(B/
F)}if(i===k){I-=(I-(A%I||I))/v(A/I);t-=(t-(A%t||t))/v(A/t)}k=['<svg width="'+l+'" height="'+q+'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">'];n(0,0,u,o,0,0,z,D,u,o);n(u,0,B,o,z,0,L,D,H,o);n(l-x,0,x,o,s-G,0,G,D,x,o);n(0,o,u,A,0,D,z,N,u,t);if(b.fill)n(u,o,B,A,z,D,L,N,H||F||L,t||I||N);n(l-x,o,x,A,s-G,D,G,N,x,I);n(0,q-y,u,y,0,m-E,z,E,u,y);n(u,q-y,B,y,z,m-E,L,E,F,y);n(l-x,q-y,x,y,s-G,m-E,G,E,x,y);k.push("<defs>"+J.join("\n")+"</defs>"+P.join("\n")+"</svg>");a.parent.gb(a.ta,
"url(data:image/svg+xml,"+escape(k.join(""))+") no-repeat border-box border-box");h&&a.parent.ab()},a);h=1},Dd:function(){var a={};return function(b,c,d){var e=a[b],g;if(!e){e=new Image;g=doc.createElement("canvas");e.src=b;g.width=c;g.height=d;g.getContext("2d").drawImage(e,0,0);e=a[b]=g.toDataURL()}return e}}(),Ea:f.Tb.prototype.Ea,m:function(){var a=this.e.runtimeStyle;this.parent.gb(this.ta);a.borderColor=a.borderStyle=a.borderWidth=""}});f.kb=function(){function a(m,r){m.className+=" "+r}function b(m){var r=
s.slice.call(arguments,1),p=r.length;setTimeout(function(){for(;p--;)a(m,r[p])},0)}function c(m){var r=s.slice.call(arguments,1),p=r.length;setTimeout(function(){for(;p--;){var t=r[p];t=q[t]||(q[t]=new RegExp("\\b"+t+"\\b","g"));m.className=m.className.replace(t,"")}},0)}function d(m){function r(){if(!R){var w,C,K=f.Ba,O=m.currentStyle,M=O.getAttribute(g)==="true";T=O.getAttribute(i);T=K>7?T!=="false":T==="true";if(!Q){Q=1;m.runtimeStyle.zoom=1;O=m;for(var ba=1;O=O.previousSibling;)if(O.nodeType===
1){ba=0;break}ba&&a(m,n)}F.cb();if(M&&(C=F.o())&&(w=doc.documentElement||doc.body)&&(C.y>w.clientHeight||C.x>w.clientWidth||C.y+C.f<0||C.x+C.i<0)){if(!V){V=1;f.mb.ba(r)}}else{R=1;V=Q=0;f.mb.Ha(r);if(K===9){J={w:new f.Sb(m),q:new f.Ub(m),z:new f.Vb(m)};P=[J.w,J.q];I=new f.Oc(m,F,J);w=[new f.Mc(m,F,J,I),new f.Nc(m,F,J,I)]}else{J={w:new f.Sb(m),z:new f.Vb(m),q:new f.Ub(m),F:new f.jb(m),ga:new f.Ic(m),Pb:new f.Uc(m)};P=[J.w,J.z,J.q,J.F,J.ga,J.Pb];I=new f.Rc(m,F,J);w=[new f.Hc(m,F,J,I),new f.Fc(m,F,J,
I),new f.Gc(m,F,J,I),new f.Tb(m,F,J,I)];m.tagName==="IMG"&&w.push(new f.Pc(m,F,J,I));I.ed=w}H=[I].concat(w);if(w=m.currentStyle.getAttribute(f.Q+"watch-ancestors")){w=parseInt(w,10);C=0;for(M=m.parentNode;M&&(w==="NaN"||C++<w);){A(M,"onpropertychange",G);A(M,"onmouseenter",o);A(M,"onmouseleave",u);A(M,"onmousedown",x);if(M.tagName in f.fc){A(M,"onfocus",z);A(M,"onblur",D)}M=M.parentNode}}if(T){f.Oa.ba(t);f.Oa.Qd()}t(1)}if(!S){S=1;K<9&&A(m,"onmove",p);A(m,"onresize",p);A(m,"onpropertychange",v);A(m,
"onmouseenter",o);A(m,"onmouseleave",u);A(m,"onmousedown",x);if(m.tagName in f.fc){A(m,"onfocus",z);A(m,"onblur",D)}f.Qa.ba(p);f.K.ba(L)}F.hb()}}function p(){F&&F.Ad()&&t()}function t(w){if(!W)if(R){var C,K=H.length;E();for(C=0;C<K;C++)H[C].Ea();if(w||F.Nd())for(C=0;C<K;C++)H[C].ib();if(w||F.Sd())for(C=0;C<K;C++)H[C].Mb();I.ab();B()}else Q||r()}function v(){var w,C=H.length,K;w=event;if(!W&&!(w&&w.propertyName in l))if(R){E();for(w=0;w<C;w++)H[w].Ea();for(w=0;w<C;w++){K=H[w];K.Cb||K.ib();K.O()&&K.Lb()}I.ab();
B()}else Q||r()}function o(){b(m,j)}function u(){c(m,j,h)}function x(){b(m,h);f.lb.ba(y)}function y(){c(m,h);f.lb.Ha(y)}function z(){b(m,k)}function D(){c(m,k)}function G(){var w=event.propertyName;if(w==="className"||w==="id")v()}function E(){F.cb();for(var w=P.length;w--;)P[w].cb()}function B(){for(var w=P.length;w--;)P[w].hb();F.hb()}function A(w,C,K){w.attachEvent(C,K);U.push([w,C,K])}function L(){if(S){for(var w=U.length,C;w--;){C=U[w];C[0].detachEvent(C[1],C[2])}f.K.Ha(L);S=0;U=[]}}function N(){if(!W){var w,
C;L();W=1;if(H){w=0;for(C=H.length;w<C;w++){H[w].ec=1;H[w].m()}}T&&f.Oa.Ha(t);f.Qa.Ha(t);H=F=J=P=m=null}}var H,I,F=new da(m),J,P,Q,R,S,U=[],V,W,T;this.Ed=r;this.update=t;this.m=N;this.qd=m}var e={},g=f.Q+"lazy-init",i=f.Q+"poll",j=f.La+"hover",h=f.La+"active",k=f.La+"focus",n=f.La+"first-child",l={background:1,bgColor:1,display:1},q={},s=[];d.yd=function(m){var r=f.p.Aa(m);return e[r]||(e[r]=new d(m))};d.m=function(m){m=f.p.Aa(m);var r=e[m];if(r){r.m();delete e[m]}};d.md=function(){var m=[],r;if(e){for(var p in e)if(e.hasOwnProperty(p)){r=
e[p];m.push(r.qd);r.m()}e={}}return m};return d}();f.supportsVML=f.zc;f.attach=function(a){f.Ba<10&&f.zc&&f.kb.yd(a).Ed()};f.detach=function(a){f.kb.m(a)}};
var $=element;function init(){var a=window.PIE;a&&doc.media!=="print"&&a.attach($)}function cleanup(){var a=window.PIE;if(a){a.detach($);$=0}}$.readyState==="complete"&&init();
</script> </script>
</PUBLIC:COMPONENT> </PUBLIC:COMPONENT>

View File

@ -1,7 +1,7 @@
module Compass module Compass
end end
%w(dependencies util browser_support sass_extensions version errors quick_cache).each do |lib| %w(dependencies util browser_support sass_extensions version errors quick_cache logger).each do |lib|
require "compass/#{lib}" require "compass/#{lib}"
end end

View File

@ -65,7 +65,10 @@ module Compass
end end
def remove(file_name) def remove(file_name)
if File.exists?(file_name) if File.directory?(file_name)
FileUtils.rm_rf file_name
log_action :remove, basename(file_name)+"/", options
elsif File.exists?(file_name)
File.unlink file_name File.unlink file_name
log_action :remove, basename(file_name), options log_action :remove, basename(file_name), options
end end

View File

@ -4,7 +4,7 @@ end
require 'compass/commands/registry' require 'compass/commands/registry'
%w(base generate_grid_background default help list_frameworks project_base %w(base generate_grid_background default help list_frameworks project_base
update_project watch_project create_project imports installer_command update_project watch_project create_project clean_project imports installer_command
print_version project_stats stamp_pattern sprite validate_project print_version project_stats stamp_pattern sprite validate_project
write_configuration interactive unpack_extension).each do |lib| write_configuration interactive unpack_extension).each do |lib|
require "compass/commands/#{lib}" require "compass/commands/#{lib}"

View File

@ -10,7 +10,7 @@ module Compass
attr_accessor :working_path, :options attr_accessor :working_path, :options
def initialize(working_path, options) def initialize(working_path, options)
self.working_path = working_path self.working_path = working_path.to_s
self.options = options self.options = options
end end
@ -22,6 +22,14 @@ module Compass
raise StandardError.new("Not Implemented") raise StandardError.new("Not Implemented")
end end
def successful?
!@failed
end
def failed!
@failed = true
end
protected protected
def framework def framework

View File

@ -0,0 +1,79 @@
require 'compass/commands/project_base'
require 'compass/compiler'
module Compass
module Commands
module CleanProjectOptionsParser
def set_options(opts)
opts.banner = %Q{
Usage: compass clean [path/to/project] [options]
Description:
Remove generated files and the sass cache.
Options:
}.split("\n").map{|l| l.gsub(/^ */,'')}.join("\n")
super
end
end
class CleanProject < UpdateProject
register :clean
def initialize(working_path, options)
super
assert_project_directory_exists!
end
def perform
compiler = new_compiler_instance
compiler.clean!
Compass::SpriteImporter.find_all_sprite_map_files(Compass.configuration.images_path).each do |sprite|
remove sprite
end
end
def determine_cache_location
Compass.configuration.cache_path || Sass::Plugin.options[:cache_location] || File.join(working_path, ".sass-cache")
end
class << self
def option_parser(arguments)
parser = Compass::Exec::CommandOptionParser.new(arguments)
parser.extend(Compass::Exec::GlobalOptionsParser)
parser.extend(Compass::Exec::ProjectOptionsParser)
parser.extend(CleanProjectOptionsParser)
end
def usage
option_parser([]).to_s
end
def primary; true; end
def description(command)
"Remove generated files and the sass cache"
end
def parse!(arguments)
parser = option_parser(arguments)
parser.parse!
parse_arguments!(parser, arguments)
parser.options
end
def parse_arguments!(parser, arguments)
if arguments.size > 0
parser.options[:project_name] = arguments.shift if File.directory?(arguments.first)
unless arguments.empty?
parser.options[:sass_files] = arguments.dup
parser.options[:force] = true
end
end
end
end
end
end
end

View File

@ -84,8 +84,8 @@ module Compass
end end
def absolute_path?(path) def absolute_path?(path)
# This is only going to work on unix, gonna need a better implementation. # Pretty basic implementation
path.index(File::SEPARATOR) == 0 path.index(File::SEPARATOR) == 0 || path.index(':') == 1
end end
def skip_extension_discovery? def skip_extension_discovery?

View File

@ -16,8 +16,10 @@ module Compass::Commands
matching.first matching.first
elsif name =~ /^-/ elsif name =~ /^-/
nil nil
else elsif matching.size > 1
raise Compass::Error, "Ambiguous abbreviation '#{name}'. Did you mean one of: #{matching.join(", ")}" raise Compass::Error, "Ambiguous abbreviation '#{name}'. Did you mean one of: #{matching.join(", ")}"
else
raise Compass::Error, "Command not found: #{name}"
end end
end end
def abbreviation?(name) def abbreviation?(name)

View File

@ -39,7 +39,7 @@ module Compass
def perform def perform
relative_uri = options[:uri].gsub(/^#{Compass.configuration.images_dir}\//, '') relative_uri = options[:uri].gsub(/^#{Compass.configuration.images_dir}\//, '')
sprites = Compass::SpriteImporter.new(relative_uri, Compass.sass_engine_options) sprites = Compass::SpriteImporter.new(:uri => relative_uri, :options => Compass.sass_engine_options)
options[:output_file] ||= File.join(Compass.configuration.sass_path, "sprites", "_#{sprites.name}.#{Compass.configuration.preferred_syntax}") options[:output_file] ||= File.join(Compass.configuration.sass_path, "sprites", "_#{sprites.name}.#{Compass.configuration.preferred_syntax}")
options[:skip_overrides] ||= false options[:skip_overrides] ||= false
contents = sprites.content_for_images(options[:skip_overrides]) contents = sprites.content_for_images(options[:skip_overrides])

View File

@ -34,7 +34,8 @@ module Compass
compiler = new_compiler_instance compiler = new_compiler_instance
check_for_sass_files!(compiler) check_for_sass_files!(compiler)
compiler.clean! if compiler.new_config? compiler.clean! if compiler.new_config?
compiler.run error_count = compiler.run
failed! if error_count > 0
end end
def check_for_sass_files!(compiler) def check_for_sass_files!(compiler)
@ -51,12 +52,10 @@ module Compass
def new_compiler_instance(additional_options = {}) def new_compiler_instance(additional_options = {})
@compiler_opts ||= begin @compiler_opts ||= begin
compiler_opts = Compass.sass_engine_options compiler_opts = {:sass => Compass.sass_engine_options}
compiler_opts.merge!(:force => options[:force], compiler_opts.merge!(options)
:sass_files => explicit_sass_files, compiler_opts[:sass_files] = explicit_sass_files
:dry_run => options[:dry_run]) compiler_opts[:cache_location] = determine_cache_location
compiler_opts[:quiet] = options[:quiet] if options[:quiet]
compiler_opts[:time] = options[:time] if options[:time]
compiler_opts compiler_opts
end end

View File

@ -3,16 +3,19 @@ module Compass
include Actions include Actions
attr_accessor :working_path, :from, :to, :options, :staleness_checker, :importer attr_accessor :working_path, :from, :to, :options, :sass_options, :staleness_checker, :importer
def initialize(working_path, from, to, options) def initialize(working_path, from, to, options)
self.working_path = working_path self.working_path = working_path.to_s
self.from, self.to = from.gsub('./', ''), to self.from, self.to = File.expand_path(from), to
self.logger = options.delete(:logger) self.logger = options.delete(:logger)
sass_opts = options.delete(:sass) || {}
self.options = options self.options = options
self.options[:cache_location] ||= determine_cache_location self.sass_options = options.dup
options[:importer] = self.importer = Sass::Importers::Filesystem.new(from) self.sass_options.update(sass_opts)
self.staleness_checker = Sass::Plugin::StalenessChecker.new(options) self.sass_options[:cache_location] ||= determine_cache_location
self.sass_options[:importer] = self.importer = Sass::Importers::Filesystem.new(from)
self.staleness_checker = Sass::Plugin::StalenessChecker.new(sass_options)
end end
def determine_cache_location def determine_cache_location
@ -72,16 +75,17 @@ module Compass
end end
def clean! def clean!
FileUtils.rm_rf options[:cache_location] remove options[:cache_location]
css_files.each do |css_file| css_files.each do |css_file|
FileUtils.rm_f css_file remove css_file
end end
end end
def run def run
failure_count = 0
if new_config? if new_config?
# Wipe out the cache and force compilation if the configuration has changed. # Wipe out the cache and force compilation if the configuration has changed.
FileUtils.rm_rf options[:cache_location] remove options[:cache_location] if options[:cache_location]
options[:force] = true options[:force] = true
end end
@ -94,6 +98,7 @@ module Compass
begin begin
compile_if_required sass_filename, css_filename compile_if_required sass_filename, css_filename
rescue Sass::SyntaxError => e rescue Sass::SyntaxError => e
failure_count += 1
handle_exception(sass_filename, css_filename, e) handle_exception(sass_filename, css_filename, e)
end end
end end
@ -101,6 +106,7 @@ module Compass
if options[:time] if options[:time]
puts "Compilation took #{(result.__duration * 1000).round / 1000.0}s" puts "Compilation took #{(result.__duration * 1000).round / 1000.0}s"
end end
return failure_count
end end
def compile_if_required(sass_filename, css_filename) def compile_if_required(sass_filename, css_filename)
@ -142,7 +148,7 @@ module Compass
# A sass engine for compiling a single file. # A sass engine for compiling a single file.
def engine(sass_filename, css_filename) def engine(sass_filename, css_filename)
syntax = (sass_filename =~ /\.(s[ac]ss)$/) && $1.to_sym || :sass syntax = (sass_filename =~ /\.(s[ac]ss)$/) && $1.to_sym || :sass
opts = options.merge :filename => sass_filename, :css_filename => css_filename, :syntax => syntax opts = sass_options.merge(:filename => sass_filename, :css_filename => css_filename, :syntax => syntax)
Sass::Engine.new(open(sass_filename).read, opts) Sass::Engine.new(open(sass_filename).read, opts)
end end

View File

@ -38,7 +38,8 @@ module Compass
:color_output, :color_output,
:preferred_syntax, :preferred_syntax,
:disable_warnings, :disable_warnings,
:sprite_engine :sprite_engine,
:chunky_png_options
].flatten ].flatten
# Registers a new configuration property. # Registers a new configuration property.

View File

@ -38,8 +38,8 @@ module Compass
end end
def absolute_path?(path) def absolute_path?(path)
# This is only going to work on unix, gonna need a better implementation. # Pretty basic implementation
path.index(File::SEPARATOR) == 0 path.index(File::SEPARATOR) == 0 || path.index(':') == 1
end end
def to_sass_engine_options def to_sass_engine_options

View File

@ -71,8 +71,10 @@ module Compass
end end
# When called with a block, defines the cache buster strategy to be used. # When called with a block, defines the cache buster strategy to be used.
# The block must return nil or a string that can be appended to a url as a query parameter. # If the block returns nil or a string, then it is appended to the url as a query parameter.
# The returned string must not include the starting '?'. # In this case, the returned string must not include the starting '?'.
# The block may also return a hash with :path and/or :query values and it
# will replace the original path and query string with the busted values returned.
# The block will be passed the root-relative url of the asset. # The block will be passed the root-relative url of the asset.
# If the block accepts two arguments, it will also be passed a File object # If the block accepts two arguments, it will also be passed a File object
# that points to the asset on disk -- which may or may not exist. # that points to the asset on disk -- which may or may not exist.

View File

@ -133,6 +133,10 @@ module Compass
:chunky_png :chunky_png
end end
def default_chunky_png_options
{:compression => Zlib::BEST_COMPRESSION}
end
# helper functions # helper functions
def http_join(*segments) def http_join(*segments)

View File

@ -12,7 +12,7 @@ module Compass::Exec
def run! def run!
begin begin
perform! return perform!
rescue Exception => e rescue Exception => e
raise e if e.is_a? SystemExit raise e if e.is_a? SystemExit
if e.is_a?(::Compass::Error) || e.is_a?(OptionParser::ParseError) if e.is_a?(::Compass::Error) || e.is_a?(OptionParser::ParseError)
@ -22,7 +22,6 @@ module Compass::Exec
end end
return 1 return 1
end end
return 0
end end
protected protected
@ -40,7 +39,9 @@ module Compass::Exec
else else
command_class.parse!(args) command_class.parse!(args)
end end
command_class.new(Dir.getwd, @options).execute cmd = command_class.new(Dir.getwd, @options)
cmd.execute
cmd.successful? ? 0 : 1
rescue OptionParser::ParseError => e rescue OptionParser::ParseError => e
puts "Error: #{e.message}" puts "Error: #{e.message}"
puts command_class.usage if command_class.respond_to?(:usage) puts command_class.usage if command_class.respond_to?(:usage)

View File

@ -1,12 +1,12 @@
module Compass::SassExtensions::Functions::Display module Compass::SassExtensions::Functions::Display
DEFAULT_DISPLAY = { DEFAULT_DISPLAY = {
:block => %w{address blockquote center dir div dd dl dt fieldset form :block => %w{address article aside blockquote center dir div dd details dl dt fieldset
frameset h1 h2 h3 h4 h5 h6 hr isindex menu noframes figcaption figure form footer frameset h1 h2 h3 h4 h5 h6 hr header hgroup
noscript ol p pre ul isindex menu nav noframes noscript ol p pre section summary ul},
article aside dialog figure footer header hgroup nav section}, :inline => %w{a abbr acronym audio b basefont bdo big br canvas cite code command
:inline => %w{a abbr acronym b basefont bdo big br cite code dfn em datalist dfn em embed font i img input keygen kbd label mark meter output
font i img input kbd label q s samp select small span progress q rp rt ruby s samp select small span strike strong sub
strike strong sub sup textarea tt u var}, sup textarea time tt u var video wbr},
:table => %w{table}, :table => %w{table},
:"list-item" => %w{li}, :"list-item" => %w{li},
:"table-row-group" => %w{tbody}, :"table-row-group" => %w{tbody},
@ -14,9 +14,10 @@ module Compass::SassExtensions::Functions::Display
:"table-footer-group" => %w{tfoot}, :"table-footer-group" => %w{tfoot},
:"table-row" => %w{tr}, :"table-row" => %w{tr},
:"table-cell" => %w{th td}, :"table-cell" => %w{th td},
:html5 => %w{article aside dialog figure footer header hgroup nav section} :"html5-block" => %w{article aside details figcaption figure footer header hgroup menu nav section summary},
:"html5-inline" => %w{audio canvas command datalist embed keygen mark meter output progress rp rt ruby time video wbr},
} }
DEFAULT_DISPLAY[:html5] = (DEFAULT_DISPLAY[:"html5-block"] + DEFAULT_DISPLAY[:"html5-inline"]).sort
# returns a comma delimited string for all the # returns a comma delimited string for all the
# elements according to their default css3 display value. # elements according to their default css3 display value.
def elements_of_type(display) def elements_of_type(display)

View File

@ -35,6 +35,8 @@ private
'image/jpeg' 'image/jpeg'
when /\.gif$/i when /\.gif$/i
'image/gif' 'image/gif'
when /\.svg$/i
'image/svg+xml'
when /\.otf$/i when /\.otf$/i
'font/opentype' 'font/opentype'
when /\.ttf$/i when /\.ttf$/i

View File

@ -96,7 +96,7 @@ module Compass::SassExtensions::Functions::Sprites
def sprite_url(map) def sprite_url(map)
verify_map(map, "sprite-url") verify_map(map, "sprite-url")
map.generate map.generate
image_url(Sass::Script::String.new("#{map.path}-#{map.uniqueness_hash}.png"), image_url(Sass::Script::String.new("#{map.path}-s#{map.uniqueness_hash}.png"),
Sass::Script::Bool.new(false), Sass::Script::Bool.new(false),
Sass::Script::Bool.new(false)) Sass::Script::Bool.new(false))
end end

View File

@ -91,9 +91,7 @@ module Compass::SassExtensions::Functions::Urls
if cache_buster.is_a?(Sass::Script::String) if cache_buster.is_a?(Sass::Script::String)
path += "?#{cache_buster.value}" path += "?#{cache_buster.value}"
else else
if buster = compute_cache_buster(path, real_path) path = cache_busted_path(path, real_path)
path += "?#{buster}"
end
end end
end end
@ -137,6 +135,23 @@ module Compass::SassExtensions::Functions::Urls
end end
end end
def cache_busted_path(path, real_path)
cache_buster = compute_cache_buster(path, real_path)
if cache_buster.nil?
return path
elsif cache_buster.is_a?(String)
cache_buster = {:query => cache_buster}
else
path = cache_buster[:path] if cache_buster[:path]
end
if cache_buster[:query]
"%s?%s" % [path, cache_buster[:query]]
else
path
end
end
def compute_cache_buster(path, real_path) def compute_cache_buster(path, real_path)
if Compass.configuration.asset_cache_buster if Compass.configuration.asset_cache_buster
args = [path] args = [path]

View File

@ -9,6 +9,8 @@ module Compass
end end
require 'compass/sass_extensions/sprites/image' require 'compass/sass_extensions/sprites/image'
require 'compass/sass_extensions/sprites/sprite_methods'
require 'compass/sass_extensions/sprites/image_methods'
require 'compass/sass_extensions/sprites/sprite_map' require 'compass/sass_extensions/sprites/sprite_map'
require 'compass/sass_extensions/sprites/engines' require 'compass/sass_extensions/sprites/engines'

View File

@ -1 +1,25 @@
module Compass
module SassExtensions
module Sprites
class Engine
attr_accessor :width, :height, :images, :canvas
def initialize(width, height, images)
@width, @height, @images = width, height, images
@canvas = nil
end
def construct_sprite
raise ::Compass::Error, "You must impliment construct_sprite"
end
def save(filename)
raise ::Compass::Error, "You must impliment save(filename)"
end
end
end
end
end
require 'compass/sass_extensions/sprites/engines/chunky_png_engine' require 'compass/sass_extensions/sprites/engines/chunky_png_engine'

View File

@ -7,20 +7,19 @@ end
module Compass module Compass
module SassExtensions module SassExtensions
module Sprites module Sprites
module ChunkyPngEngine class ChunkyPngEngine < Compass::SassExtensions::Sprites::Engine
# Returns a PNG object
def construct_sprite def construct_sprite
output_png = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT) @canvas = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT)
images.each do |image| images.each do |image|
input_png = ChunkyPNG::Image.from_file(image.file) input_png = ChunkyPNG::Image.from_file(image.file)
if image.repeat == "no-repeat" if image.repeat == "no-repeat"
output_png.replace! input_png, image.left, image.top canvas.replace! input_png, image.left, image.top
else else
x = image.left - (image.left / image.width).ceil * image.width x = image.left - (image.left / image.width).ceil * image.width
while x < width do while x < width do
begin begin
output_png.replace! input_png, x, image.top canvas.replace! input_png, x, image.top
x += image.width x += image.width
rescue ChunkyPNG::OutOfBounds rescue ChunkyPNG::OutOfBounds
break; break;
@ -28,8 +27,16 @@ module Compass
end end
end end
end end
output_png
end end
def save(filename)
if canvas.nil?
construct_sprite
end
canvas.save(filename, Compass.configuration.chunky_png_options)
end
end end
end end
end end

View File

@ -0,0 +1,32 @@
module Compass
module SassExtensions
module Sprites
module ImageMethods
# Fetches the Sprite::Image object for the supplied name
def image_for(name)
@images.detect { |img| img.name == name}
end
# Returns true if the image name has a hover selector image
def has_hover?(name)
!image_for("#{name}_hover").nil?
end
# Returns true if the image name has a target selector image
def has_target?(name)
!image_for("#{name}_target").nil?
end
# Returns true if the image name has an active selector image
def has_active?(name)
!image_for("#{name}_active").nil?
end
# Return and array of image names that make up this sprite
def sprite_names
image_names.map { |f| File.basename(f, '.png') }
end
end
end
end
end

View File

@ -2,6 +2,11 @@ module Compass
module SassExtensions module SassExtensions
module Sprites module Sprites
class SpriteMap < Sass::Script::Literal class SpriteMap < Sass::Script::Literal
attr_accessor :image_names, :path, :name, :map, :kwargs
attr_accessor :images, :width, :height, :engine
include SpriteMethods
include ImageMethods
# Initialize a new sprite object from a relative file path # Initialize a new sprite object from a relative file path
@ -14,21 +19,7 @@ module Compass
new(sprites, importer.path, importer.name, context, kwargs) new(sprites, importer.path, importer.name, context, kwargs)
end end
# Loads the sprite engine
def require_engine!
self.class.send(:include, eval("::Compass::SassExtensions::Sprites::#{modulize}Engine"))
end
# Changing this string will invalidate all previously generated sprite images.
# We should do so only when the packing algorithm changes
SPRITE_VERSION = "1"
attr_accessor :image_names, :path, :name, :kwargs
attr_accessor :images, :width, :height
def initialize(sprites, path, name, context, kwargs) def initialize(sprites, path, name, context, kwargs)
require_engine!
@image_names = sprites @image_names = sprites
@path = path @path = path
@name = name @name = name
@ -37,150 +28,12 @@ module Compass
@images = nil @images = nil
@width = nil @width = nil
@height = nil @height = nil
@engine = nil
@evaluation_context = context @evaluation_context = context
validate! validate!
compute_image_metadata! compute_image_metadata!
end end
# Calculate the size of the sprite
def size
[width, height]
end
# Calculates the overal image dimensions
# collects image sizes and input parameters for each sprite
# Calculates the height
def compute_image_metadata!
@width = 0
init_images
compute_image_positions!
@height = @images.last.top + @images.last.height
end
# Creates the Sprite::Image objects for each image and calculates the width
def init_images
@images = image_names.collect do |relative_file|
image = Compass::SassExtensions::Sprites::Image.new(self, relative_file, kwargs)
@width = [ @width, image.width + image.offset ].max
image
end
end
# Calculates the overal image dimensions
# collects image sizes and input parameters for each sprite
def compute_image_positions!
@images.each_with_index do |image, index|
image.left = image.position.unit_str == "%" ? (@width - image.width) * (image.position.value / 100) : image.position.value
next if index == 0
last_image = @images[index-1]
image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max
end
end
# Fetches the Sprite::Image object for the supplied name
def image_for(name)
@images.detect { |img| img.name == name}
end
# Returns true if the image name has a hover selector image
def has_hover?(name)
!image_for("#{name}_hover").nil?
end
# Returns true if the image name has a target selector image
def has_target?(name)
!image_for("#{name}_target").nil?
end
# Returns true if the image name has an active selector image
def has_active?(name)
!image_for("#{name}_active").nil?
end
# Return and array of image names that make up this sprite
def sprite_names
image_names.map { |f| File.basename(f, '.png') }
end
# Validates that the sprite_names are valid sass
def validate!
for sprite_name in sprite_names
unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/
raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier"
end
end
end
# The on-the-disk filename of the sprite
def filename
File.join(Compass.configuration.images_path, "#{path}-#{uniqueness_hash}.png")
end
# Generate a sprite image if necessary
def generate
if generation_required?
if kwargs.get_var('cleanup').value
cleanup_old_sprites
end
sprite_data = construct_sprite
save!(sprite_data)
Compass.configuration.run_callback(:sprite_generated, sprite_data)
end
end
def cleanup_old_sprites
Dir[File.join(Compass.configuration.images_path, "#{path}-*.png")].each do |file|
FileUtils.rm file
end
end
# Does this sprite need to be generated
def generation_required?
!File.exists?(filename) || outdated?
end
# Returns the uniqueness hash for this sprite object
def uniqueness_hash
@uniqueness_hash ||= begin
sum = Digest::MD5.new
sum << SPRITE_VERSION
sum << path
images.each do |image|
[:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr|
sum << image.send(attr).to_s
end
end
sum.hexdigest[0...10]
end
@uniqueness_hash
end
# Saves the sprite engine
def save!(output_png)
saved = output_png.save filename
Compass.configuration.run_callback(:sprite_saved, filename)
saved
end
# All the full-path filenames involved in this sprite
def image_filenames
@images.map(&:file)
end
# Checks whether this sprite is outdated
def outdated?
if File.exists?(filename)
return @images.map(&:mtime).any? { |imtime| imtime.to_i > self.mtime.to_i }
end
true
end
# Mtime of the sprite file
def mtime
@mtime ||= File.mtime(filename)
end
def inspect def inspect
to_s to_s
end end

View File

@ -0,0 +1,134 @@
module Compass
module SassExtensions
module Sprites
module SpriteMethods
# Changing this string will invalidate all previously generated sprite images.
# We should do so only when the packing algorithm changes
SPRITE_VERSION = "1"
# Calculates the overal image dimensions
# collects image sizes and input parameters for each sprite
# Calculates the height
def compute_image_metadata!
@width = 0
init_images
compute_image_positions!
@height = @images.last.top + @images.last.height
init_engine
end
def init_engine
@engine = eval("::Compass::SassExtensions::Sprites::#{modulize}Engine.new(nil, nil, nil)")
@engine.width = @width
@engine.height = @height
@engine.images = @images
end
# Creates the Sprite::Image objects for each image and calculates the width
def init_images
@images = image_names.collect do |relative_file|
image = Compass::SassExtensions::Sprites::Image.new(self, relative_file, kwargs)
@width = [ @width, image.width + image.offset ].max
image
end
end
# Calculates the overal image dimensions
# collects image sizes and input parameters for each sprite
def compute_image_positions!
@images.each_with_index do |image, index|
image.left = image.position.unit_str == "%" ? (@width - image.width) * (image.position.value / 100) : image.position.value
next if index == 0
last_image = @images[index-1]
image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max
end
end
# Validates that the sprite_names are valid sass
def validate!
for sprite_name in sprite_names
unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/
raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier"
end
end
end
# The on-the-disk filename of the sprite
def filename
File.join(Compass.configuration.images_path, "#{path}-s#{uniqueness_hash}.png")
end
# Generate a sprite image if necessary
def generate
if generation_required?
if kwargs.get_var('cleanup').value
cleanup_old_sprites
end
engine.construct_sprite
Compass.configuration.run_callback(:sprite_generated, engine.canvas)
save!
end
end
def cleanup_old_sprites
Dir[File.join(Compass.configuration.images_path, "#{path}-*.png")].each do |file|
FileUtils.rm file
end
end
# Does this sprite need to be generated
def generation_required?
!File.exists?(filename) || outdated?
end
# Returns the uniqueness hash for this sprite object
def uniqueness_hash
@uniqueness_hash ||= begin
sum = Digest::MD5.new
sum << SPRITE_VERSION
sum << path
images.each do |image|
[:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr|
sum << image.send(attr).to_s
end
end
sum.hexdigest[0...10]
end
@uniqueness_hash
end
# Saves the sprite engine
def save!
saved = engine.save(filename)
Compass.configuration.run_callback(:sprite_saved, filename)
saved
end
# All the full-path filenames involved in this sprite
def image_filenames
@images.map(&:file)
end
# Checks whether this sprite is outdated
def outdated?
if File.exists?(filename)
return @images.map(&:mtime).any? { |imtime| imtime.to_i > self.mtime.to_i }
end
true
end
# Mtime of the sprite file
def mtime
@mtime ||= File.mtime(filename)
end
# Calculate the size of the sprite
def size
[width, height]
end
end
end
end
end

View File

@ -5,6 +5,13 @@ module Compass
SPRITE_IMPORTER_REGEX = %r{((.+/)?([^\*.]+))/(.+?)\.png} SPRITE_IMPORTER_REGEX = %r{((.+/)?([^\*.]+))/(.+?)\.png}
VALID_EXTENSIONS = ['.png'] VALID_EXTENSIONS = ['.png']
# finds all sprite files
def self.find_all_sprite_map_files(path)
hex = "[0-9a-f]"
glob = "*-{,s}#{hex*10}{#{VALID_EXTENSIONS.join(",")}}"
Dir.glob(File.join(path, "**", glob))
end
def self.load(uri, options) def self.load(uri, options)
klass = Compass::SpriteImporter.new klass = Compass::SpriteImporter.new
klass.uri, klass.options = uri, options klass.uri, klass.options = uri, options
@ -31,7 +38,7 @@ module Compass
end end
def to_s def to_s
content_for_images self.class.name
end end
def hash def hash

View File

@ -1,9 +1,16 @@
begin begin
require 'rubygems' require 'rubygems'
require 'compass-validator' require 'compass-validator'
rescue LoadError rescue LoadError => e
raise Compass::MissingDependency, %Q{The Compass CSS Validator could not be loaded. Please install it: if e.message =~ /core_ext/
raise Compass::MissingDependency, <<-ERRORMSG
The Compass CSS Validator is out of date. Please upgrade it:
sudo gem install compass-validator --version ">= 3.0.1"
ERRORMSG
else
raise Compass::MissingDependency, <<-ERRORMSG
The Compass CSS Validator could not be loaded. Please install it:
sudo gem install compass-validator sudo gem install compass-validator
} ERRORMSG
end
end end

View File

@ -1,57 +0,0 @@
require 'spec_helper'
describe Compass::SassExtensions::Sprites::Base do
before :each do
@images_src_path = File.join(File.dirname(__FILE__), '..', '..', '..', 'test_project', 'public', 'images')
@images_tmp_path = File.join(File.dirname(__FILE__), '..', '..', '..', 'test_project', 'public', 'images-tmp')
FileUtils.cp_r @images_src_path, @images_tmp_path
config = Compass::Configuration::Data.new('config')
config.images_path = @images_tmp_path
Compass.add_configuration(config)
Compass.configure_sass_plugin!
#fix this eww
options = Compass.sass_engine_options.extend Compass::SassExtensions::Functions::Sprites::VariableReader
@map = Compass::SpriteImporter.new("selectors/*.png", options)
@base = Compass::SassExtensions::Sprites::Base.new(@map.sprite_names.map{|n| "selectors/#{n}.png"}, @map.path, 'selectors', @map.sass_engine, @map.options)
end
after :each do
FileUtils.rm_r @images_tmp_path
end
subject { @base }
its(:size) { should == [10,40] }
its(:sprite_names) { should == @map.sprite_names }
its(:image_filenames) { should == Dir["#{@images_tmp_path}/selectors/*.png"].sort }
its(:generation_required?) { should be_true }
its(:uniqueness_hash) { should == 'ef52c5c63a'}
its(:outdated?) { should be_true }
its(:filename) { should == File.join(@images_tmp_path, "#{@base.path}-#{@base.uniqueness_hash}.png")}
it "should return the 'ten-by-ten' image" do
subject.image_for('ten-by-ten').name.should == 'ten-by-ten'
subject.image_for('ten-by-ten').should be_a Compass::SassExtensions::Sprites::Image
end
%w(target hover active).each do |selector|
it "should have a #{selector}" do
subject.send(:"has_#{selector}?", 'ten-by-ten').should be_true
end
it "should return #{selector} image class" do
subject.image_for('ten-by-ten').send(:"#{selector}").name.should == "ten-by-ten_#{selector}"
end
end
context "#generate" do
before { @base.generate }
it "should generate sprite" do
File.exists?(@base.filename).should be_true
end
its(:generation_required?) { should be_false }
its(:outdated?) { should be_false }
end
end

View File

@ -1,161 +0,0 @@
require 'spec_helper'
require 'compass/sass_extensions/sprites/image'
describe Compass::SassExtensions::Sprites::Image do
let(:sprite_filename) { 'squares/ten-by-ten.png' }
let(:sprite_path) { File.join(images_src_path, sprite_filename) }
let(:sprite_name) { File.basename(sprite_filename, '.png') }
let(:parent) do
mock
end
before do
parent.stubs(:image_for).with('ten-by-ten').returns(image)
parent.stubs(:image_for).with('ten-by-ten_hover').returns(hover_image)
end
let(:image) { self.class.describes.new(parent, File.join(sprite_filename), options)}
let(:hover_image) { self.class.describes.new(parent, File.join('selectors/ten-by-ten_hover.png'), options)}
let(:digest) { Digest::MD5.file(sprite_path).hexdigest }
subject { image }
before {
file = StringIO.new("images_path = #{images_src_path.inspect}\n")
Compass.add_configuration(file, "sprite_config")
}
describe '#initialize' do
its(:name) { should == sprite_name }
its(:file) { should == sprite_path }
its(:relative_file) { should == sprite_filename }
its(:width) { should == 10 }
its(:height) { should == 10 }
its(:digest) { should == digest }
its(:top) { should == 0 }
its(:left) { should == 0 }
end
let(:get_var_expects) { nil }
let(:get_var_return) { nil }
let(:options) {
options = mock
options.stubs(:get_var).with(anything).returns(nil)
options.stubs(:get_var).with(get_var_expects).returns(get_var_return)
options
}
describe '#parent' do
context '_hover' do
subject { hover_image }
its(:parent) { should == image }
end
context 'no parent' do
subject { image }
its(:parent) { should be_nil }
end
end
describe '#repeat' do
let(:type) { nil }
let(:get_var_return) { OpenStruct.new(:value => type) }
context 'specific image' do
let(:type) { 'specific' }
let(:get_var_expects) { "#{sprite_name}-repeat" }
its(:repeat) { should == type }
end
context 'global' do
let(:type) { 'global' }
let(:get_var_expects) { 'repeat' }
its(:repeat) { should == type }
end
context 'default' do
let(:get_var_expects) { nil }
its(:repeat) { should == "no-repeat" }
end
end
describe '#position' do
let(:type) { nil }
let(:get_var_return) { type }
context 'specific image' do
let(:type) { 'specific' }
let(:get_var_expects) { "#{sprite_name}-position" }
its(:position) { should == type }
end
context 'global' do
let(:type) { 'global' }
let(:get_var_expects) { 'position' }
its(:position) { should == type }
end
context 'default' do
let(:get_var_expects) { nil }
its(:position) { should == Sass::Script::Number.new(0, ["px"]) }
end
end
describe '#spacing' do
let(:type) { nil }
let(:get_var_return) { OpenStruct.new(:value => type) }
context 'specific image' do
let(:type) { 'specific' }
let(:get_var_expects) { "#{sprite_name}-spacing" }
its(:spacing) { should == type }
end
context 'global' do
let(:type) { 'global' }
let(:get_var_expects) { 'spacing' }
its(:spacing) { should == type }
end
context 'default' do
let(:get_var_expects) { nil }
its(:spacing) { should == Sass::Script::Number.new(0).value }
end
end
describe '#offset' do
before { image.stubs(:position).returns(stub_position) }
let(:offset) { 100 }
let(:stub_position) {
stub(:value => offset)
}
context 'unitless' do
before { stub_position.stubs(:unitless?).returns(true) }
before { stub_position.stubs(:unit_str).returns('em') }
its(:offset) { should == offset }
end
context 'pixels' do
before { stub_position.stubs(:unitless?).returns(false) }
before { stub_position.stubs(:unit_str).returns('px') }
its(:offset) { should == offset }
end
context 'neither, use 0' do
before { stub_position.stubs(:unitless?).returns(false) }
before { stub_position.stubs(:unit_str).returns('em') }
its(:offset) { should == 0 }
end
end
end

View File

@ -1,54 +0,0 @@
require 'spec_helper'
require 'fakefs/spec_helpers'
require 'timecop'
describe Compass::SpriteImporter do
include FakeFS::SpecHelpers
let(:sprite_map) { self.class.describes.new(uri, options) }
let(:options) { { :test => :test2 } }
subject { sprite_map }
let(:path) { 'path' }
let(:dir) { "dir/#{name}" }
let(:name) { 'subdir' }
let(:sprite_path) { File.join(path, dir) }
let(:files) { (1..3).collect { |i| File.join(sprite_path, "#{i}.png") } }
let(:expanded_files) { files.collect { |file| File.expand_path(file) } }
let(:configuration) { stub(:images_path => path) }
let(:mtime) { Time.now - 30 }
before {
Compass.stubs(:configuration).returns(configuration)
FileUtils.mkdir_p(sprite_path)
Timecop.freeze(mtime) do
files.each { |file| File.open(file, 'w') }
end
Timecop.return
}
describe '#initialize' do
let(:uri) { 'dir/subdir/*.png' }
its(:uri) { should == uri }
its(:path) { should == dir }
its(:name) { should == name }
its(:files) { should == expanded_files }
its(:sass_options) { should == options.merge(:filename => name, :syntax => :scss, :importer => sprite_map) }
it "should have a correct mtime" do
sprite_map.mtime(uri, subject.sass_options).should == mtime
end
it "should have a test for the sass engine" do
pending 'sass'
end
end
end

View File

@ -1,5 +0,0 @@
require 'spec_helper'
require 'fakefs/spec_helpers'
describe Compass::Sprites do
end

View File

@ -1,37 +0,0 @@
$LOAD_PATH.unshift(File.dirname(__FILE__))
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'rubygems'
require 'compass'
require 'rspec'
require 'rspec/autorun'
require 'mocha'
module CompassGlobalInclude
class << self
def included(klass)
klass.instance_eval do
let(:images_src_path) { File.join(File.dirname(__FILE__), 'test_project', 'public', 'images') }
end
end
end
end
module CompassSpriteHelpers
def create_sprite_temp
::FileUtils.cp_r @images_src_path, @images_tmp_path
end
def clean_up_sprites
::FileUtils.rm_r @images_tmp_path
end
end
RSpec.configure do |config|
config.include(CompassGlobalInclude)
config.include(CompassSpriteHelpers)
config.before :each do
@images_src_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images')
@images_tmp_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images-tmp')
end
config.mock_with :mocha
end

View File

@ -1,571 +0,0 @@
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
require 'digest/md5'
describe Compass::Sprites do
before :each do
create_sprite_temp
file = StringIO.new("images_path = #{@images_tmp_path.inspect}\n")
Compass.add_configuration(file, "sprite_config")
Compass.configure_sass_plugin!
end
after :each do
clean_up_sprites
end
def map_location(file)
Dir.glob(File.join(@images_tmp_path, file)).first
end
def image_size(file)
IO.read(map_location(file))[0x10..0x18].unpack('NN')
end
def image_md5(file)
md5 = Digest::MD5.new
md5.update IO.read(map_location(file))
md5.hexdigest
end
def render(scss)
scss = %Q(@import "compass"; #{scss})
options = Compass.sass_engine_options
options[:line_comments] = false
options[:style] = :expanded
options[:syntax] = :scss
css = Sass::Engine.new(scss, options).render
# reformat to fit result of heredoc:
" #{css.gsub('@charset "UTF-8";', '').gsub(/\n/, "\n ").strip}\n"
end
#Callbacks
describe 'callbacks' do
it "should fire on_sprite_saved" do
saved = false
path = nil
Compass.configuration.on_sprite_saved {|filepath| path = filepath; saved = true }
render <<-SCSS
@import "squares/*.png";
@include all-squares-sprites;
SCSS
saved.should eq true
path.should be_kind_of String
end
it "should fire on_sprite_generated" do
saved = false
sprite_data = nil
Compass.configuration.on_sprite_generated {|data| sprite_data = data; saved = true }
render <<-SCSS
@import "squares/*.png";
@include all-squares-sprites;
SCSS
sprite_data.should be_kind_of ChunkyPNG::Image
saved.should eq true
end
end
# DEFAULT USAGE:
it "should generate sprite classes" do
css = render <<-SCSS
@import "squares/*.png";
@include all-squares-sprites;
SCSS
css.should == <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-161c60ad78.png') no-repeat;
}
.squares-ten-by-ten {
background-position: 0 0;
}
.squares-twenty-by-twenty {
background-position: 0 -10px;
}
CSS
image_size('squares-*.png').should == [20, 30]
image_md5('squares-*.png').should == 'fcc93d7b279c2ad6898fbca49cbd01e1'
end
it "should generate sprite classes with dimensions" do
css = render <<-SCSS
$squares-sprite-dimensions: true;
@import "squares/*.png";
@include all-squares-sprites;
SCSS
css.should == <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-161c60ad78.png') no-repeat;
}
.squares-ten-by-ten {
background-position: 0 0;
height: 10px;
width: 10px;
}
.squares-twenty-by-twenty {
background-position: 0 -10px;
height: 20px;
width: 20px;
}
CSS
image_size('squares-*.png').should == [20, 30]
end
it "should provide sprite mixin" do
css = render <<-SCSS
@import "squares/*.png";
.cubicle {
@include squares-sprite("ten-by-ten");
}
.large-cube {
@include squares-sprite("twenty-by-twenty", true);
}
SCSS
css.should == <<-CSS
.squares-sprite, .cubicle, .large-cube {
background: url('/squares-161c60ad78.png') no-repeat;
}
.cubicle {
background-position: 0 0;
}
.large-cube {
background-position: 0 -10px;
height: 20px;
width: 20px;
}
CSS
image_size('squares-*.png').should == [20, 30]
end
# CUSTOMIZATIONS:
it "should be possible to change the base class" do
css = render <<-SCSS
$squares-sprite-base-class: ".circles";
@import "squares/*.png";
SCSS
css.should == <<-CSS
.circles {
background: url('/squares-161c60ad78.png') no-repeat;
}
CSS
image_size('squares-*.png').should == [20, 30]
end
it "should calculate the spacing between images but not before first image" do
css = render <<-SCSS
$squares-ten-by-ten-spacing: 33px;
@import "squares/*.png";
@include all-squares-sprites;
SCSS
css.should == <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-89450808af.png') no-repeat;
}
.squares-ten-by-ten {
background-position: 0 0;
}
.squares-twenty-by-twenty {
background-position: 0 -43px;
}
CSS
image_size('squares-*.png').should == [20, 63]
end
it "should calculate the spacing between images" do
css = render <<-SCSS
$squares-twenty-by-twenty-spacing: 33px;
@import "squares/*.png";
@include all-squares-sprites;
SCSS
css.should == <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-673837183a.png') no-repeat;
}
.squares-ten-by-ten {
background-position: 0 0;
}
.squares-twenty-by-twenty {
background-position: 0 -43px;
}
CSS
image_size('squares-*.png').should == [20, 63]
end
it "should calculate the maximum spacing between images" do
css = render <<-SCSS
$squares-ten-by-ten-spacing: 44px;
$squares-twenty-by-twenty-spacing: 33px;
@import "squares/*.png";
@include all-squares-sprites;
SCSS
css.should == <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-1cd84c9068.png') no-repeat;
}
.squares-ten-by-ten {
background-position: 0 0;
}
.squares-twenty-by-twenty {
background-position: 0 -54px;
}
CSS
image_size('squares-*.png').should == [20, 74]
end
it "should calculate the maximum spacing between images in reversed order" do
css = render <<-SCSS
$squares-ten-by-ten-spacing: 33px;
$squares-twenty-by-twenty-spacing: 44px;
@import "squares/*.png";
@include all-squares-sprites;
SCSS
css.should == <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-f25b7090ca.png') no-repeat;
}
.squares-ten-by-ten {
background-position: 0 0;
}
.squares-twenty-by-twenty {
background-position: 0 -54px;
}
CSS
image_size('squares-*.png').should == [20, 74]
end
it "should calculate the default spacing between images" do
css = render <<-SCSS
$squares-spacing: 22px;
@import "squares/*.png";
@include all-squares-sprites;
SCSS
css.should == <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-d66bf24bab.png') no-repeat;
}
.squares-ten-by-ten {
background-position: 0 0;
}
.squares-twenty-by-twenty {
background-position: 0 -32px;
}
CSS
image_size('squares-*.png').should == [20, 52]
end
it "should use position adjustments in functions" do
css = render <<-SCSS
$squares: sprite-map("squares/*.png", $position: 100%);
.squares-sprite {
background: $squares no-repeat;
}
.adjusted-percentage {
background-position: sprite-position($squares, ten-by-ten, 100%);
}
.adjusted-px-1 {
background-position: sprite-position($squares, ten-by-ten, 4px);
}
.adjusted-px-2 {
background-position: sprite-position($squares, twenty-by-twenty, -3px, 2px);
}
SCSS
css.should == <<-CSS
.squares-sprite {
background: url('/squares-8e490168dd.png') no-repeat;
}
.adjusted-percentage {
background-position: 100% 0;
}
.adjusted-px-1 {
background-position: -6px 0;
}
.adjusted-px-2 {
background-position: -3px -8px;
}
CSS
image_size('squares-*.png').should == [20, 30]
image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012'
end
it "should use position adjustments in mixins" do
css = render <<-SCSS
$squares-position: 100%;
@import "squares/*.png";
.adjusted-percentage {
@include squares-sprite("ten-by-ten", $offset-x: 100%);
}
.adjusted-px-1 {
@include squares-sprite("ten-by-ten", $offset-x: 4px);
}
.adjusted-px-2 {
@include squares-sprite("twenty-by-twenty", $offset-x: -3px, $offset-y: 2px);
}
SCSS
css.should == <<-CSS
.squares-sprite, .adjusted-percentage, .adjusted-px-1, .adjusted-px-2 {
background: url('/squares-8e490168dd.png') no-repeat;
}
.adjusted-percentage {
background-position: 100% 0;
}
.adjusted-px-1 {
background-position: -6px 0;
}
.adjusted-px-2 {
background-position: -3px -8px;
}
CSS
image_size('squares-*.png').should == [20, 30]
image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012'
end
it "should repeat the image" do
css = render <<-SCSS
$squares-repeat: repeat;
@import "squares/*.png";
@include all-squares-sprites;
SCSS
css.should == <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-a5550fd132.png') no-repeat;
}
.squares-ten-by-ten {
background-position: 0 0;
}
.squares-twenty-by-twenty {
background-position: 0 -10px;
}
CSS
image_size('squares-*.png').should == [20, 30]
image_md5('squares-*.png').should == '94abae8440f1b58617f52920b70aaed2'
end
it "should allow the position of a sprite to be specified in absolute pixels" do
css = render <<-SCSS
$squares-ten-by-ten-position: 10px;
$squares-twenty-by-twenty-position: 10px;
@import "squares/*.png";
@include all-squares-sprites;
SCSS
css.should == <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-89a274044e.png') no-repeat;
}
.squares-ten-by-ten {
background-position: -10px 0;
}
.squares-twenty-by-twenty {
background-position: -10px -10px;
}
CSS
image_size('squares-*.png').should == [30, 30]
image_md5('squares-*.png').should == '2fb19ef9c83018c93c6f147af3a56cb2'
end
it "should provide a nice errors for lemonade's old users" do
proc do
render <<-SCSS
.squares {
background: sprite-url("squares/*.png") no-repeat;
}
SCSS
end.should raise_error Sass::SyntaxError,
%q(The first argument to sprite-url() must be a sprite map. See http://beta.compass-style.org/help/tutorials/spriting/ for more information.)
proc do
render <<-SCSS
.squares {
background: sprite-image("squares/twenty-by-twenty.png") no-repeat;
}
SCSS
end.should raise_error Sass::SyntaxError,
%q(The sprite-image() function has been replaced by sprite(). See http://beta.compass-style.org/help/tutorials/spriting/ for more information.)
proc do
render <<-SCSS
@import "squares/*.png";
.squares {
background: sprite-position("squares/twenty-by-twenty.png") no-repeat;
}
SCSS
end.should raise_error Sass::SyntaxError,
%q(The first argument to sprite-position() must be a sprite map. See http://beta.compass-style.org/help/tutorials/spriting/ for more information.)
end
it "should work even if @import is missing" do
actual_css = render <<-SCSS
.squares {
background: sprite(sprite-map("squares/*.png"), twenty-by-twenty) no-repeat;
}
SCSS
actual_css.should == <<-CSS
.squares {
background: url('/squares-145869726f.png') 0 -10px no-repeat;
}
CSS
end
it "should calculate corret sprite demsions when givin spacing via issue#253" do
css = render <<-SCSS
$squares-spacing: 10px;
@import "squares/*.png";
.foo {
@include sprite-background-position($squares-sprites, "twenty-by-twenty");
}
.bar {
@include sprite-background-position($squares-sprites, "ten-by-ten");
}
SCSS
image_size('squares-*.png').should == [20, 40]
css.should == <<-CSS
.squares-sprite {
background: url('/squares-e3c68372d9.png') no-repeat;
}
.foo {
background-position: 0 -20px;
}
.bar {
background-position: 0 0;
}
CSS
end
it "should render corret sprite with css selectors via issue#248" do
css = render <<-SCSS
@import "selectors/*.png";
@include all-selectors-sprites;
SCSS
css.should == <<-CSS
.selectors-sprite, .selectors-ten-by-ten {
background: url('/selectors-edfef809e2.png') no-repeat;
}
.selectors-ten-by-ten {
background-position: 0 0;
}
.selectors-ten-by-ten:hover, .selectors-ten-by-ten.ten-by-ten_hover, .selectors-ten-by-ten.ten-by-ten-hover {
background-position: 0 -20px;
}
.selectors-ten-by-ten:target, .selectors-ten-by-ten.ten-by-ten_target, .selectors-ten-by-ten.ten-by-ten-target {
background-position: 0 -30px;
}
.selectors-ten-by-ten:active, .selectors-ten-by-ten.ten-by-ten_active, .selectors-ten-by-ten.ten-by-ten-active {
background-position: 0 -10px;
}
CSS
end
it "should render corret sprite with css selectors via magic mixin" do
css = render <<-SCSS
@import "selectors/*.png";
a {
@include selectors-sprite(ten-by-ten)
}
SCSS
css.should == <<-CSS
.selectors-sprite, a {
background: url('/selectors-edfef809e2.png') no-repeat;
}
a {
background-position: 0 0;
}
a:hover, a.ten-by-ten_hover, a.ten-by-ten-hover {
background-position: 0 -20px;
}
a:target, a.ten-by-ten_target, a.ten-by-ten-target {
background-position: 0 -30px;
}
a:active, a.ten-by-ten_active, a.ten-by-ten-active {
background-position: 0 -10px;
}
CSS
end
it "should not render corret sprite with css selectors via magic mixin" do
css = render <<-SCSS
@import "selectors/*.png";
a {
$disable-magic-sprite-selectors:true;
@include selectors-sprite(ten-by-ten)
}
SCSS
css.should == <<-CSS
.selectors-sprite, a {
background: url('/selectors-edfef809e2.png') no-repeat;
}
a {
background-position: 0 0;
}
CSS
end
it "should raise error on filenames that are not valid sass syntax" do
lambda do
render <<-SCSS
@import "prefix/*.png";
a {
@include squares-sprite(20-by-20);
}
SCSS
end.should raise_error Compass::Error
end
it "should generate sprite with bad repeat-x dimensions" do
css = render <<-SCSS
$ko-starbg26x27-repeat: repeat-x;
@import "ko/*.png";
@include all-ko-sprites;
SCSS
css.should == <<-CSS
.ko-sprite, .ko-default_background, .ko-starbg26x27 {
background: url('/ko-cc3f80660d.png') no-repeat;
}
.ko-default_background {
background-position: 0 0;
}
.ko-starbg26x27 {
background-position: 0 -128px;
}
CSS
end
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -42,8 +42,7 @@ q, blockquote {
a img { a img {
border: none; } border: none; }
article, aside, details, figcaption, figure, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary {
footer, header, hgroup, menu, nav, section {
display: block; } display: block; }
body { body {
@ -672,10 +671,10 @@ input.span-24, textarea.span-24, select.span-24 {
background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px);
background-image: -ms-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -ms-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -ms-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -ms-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px);
background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px);
-moz-background-size: 100% 20px, auto; -moz-background-size: 100% 18px, auto;
-webkit-background-size: 100% 20px, auto; -webkit-background-size: 100% 18px, auto;
-o-background-size: 100% 20px, auto; -o-background-size: 100% 18px, auto;
background-size: 100% 20px, auto; background-size: 100% 18px, auto;
background-position: left top; } background-position: left top; }
.feedback, .error, .alert, .notice, .success, .info { .feedback, .error, .alert, .notice, .success, .info {
@ -759,7 +758,7 @@ textarea {
border: 1px solid #bbbbbb; } border: 1px solid #bbbbbb; }
input.text:focus, input.title:focus, input[type=email]:focus, input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, input[type=email]:focus, input[type=text]:focus, input[type=password]:focus,
textarea:focus { textarea:focus {
border: 1px solid #666666; } border-color: #666666; }
select { select {
background-color: #fff; background-color: #fff;

View File

@ -5,8 +5,8 @@
background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px);
background-image: -ms-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -ms-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -ms-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -ms-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px);
background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px);
-moz-background-size: 100% 20px, auto; -moz-background-size: 100% 18px, auto;
-webkit-background-size: 100% 20px, auto; -webkit-background-size: 100% 18px, auto;
-o-background-size: 100% 20px, auto; -o-background-size: 100% 18px, auto;
background-size: 100% 20px, auto; background-size: 100% 18px, auto;
background-position: left top; } background-position: left top; }

View File

@ -30,7 +30,7 @@ form.bp textarea {
border: 1px solid #bbbbbb; } border: 1px solid #bbbbbb; }
form.bp input.text:focus, form.bp input.title:focus, form.bp input[type=email]:focus, form.bp input[type=text]:focus, form.bp input[type=password]:focus, form.bp input.text:focus, form.bp input.title:focus, form.bp input[type=email]:focus, form.bp input[type=text]:focus, form.bp input[type=password]:focus,
form.bp textarea:focus { form.bp textarea:focus {
border: 1px solid #666666; } border-color: #666666; }
form.bp select { form.bp select {
background-color: #fff; background-color: #fff;
border-width: 1px; border-width: 1px;

View File

@ -3,7 +3,7 @@ html {
padding: 0; padding: 0;
border: 0; } border: 0; }
.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, div, span, object, iframe, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { .bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, blockquote, q, th, td, caption, table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing details, body.testing figcaption, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing menu, body.testing nav, body.testing section, body.testing summary, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, div, span, object, iframe, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr {
margin: 0; margin: 0;
padding: 0; padding: 0;
border: 0; border: 0;
@ -13,7 +13,7 @@ html {
font-family: inherit; font-family: inherit;
vertical-align: baseline; } vertical-align: baseline; }
article, aside, dialog, figure, footer, header, hgroup, nav, section { article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary {
display: block; } display: block; }
blockquote, q { blockquote, q {
@ -35,7 +35,7 @@ table {
a img { a img {
border: none; } border: none; }
body.testing .bp-reset-element, body.testing body, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, body.testing .bp-reset-element, body.testing body, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing details, body.testing figcaption, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing menu, body.testing nav, body.testing section, body.testing summary, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing details, body.testing figcaption, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing menu, body.testing nav, body.testing section, body.testing summary, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table,
body.testing div, body.testing span, body.testing object, body.testing iframe, body.testing p, body.testing div, body.testing span, body.testing object, body.testing iframe, body.testing p,
body.testing pre, body.testing a, body.testing abbr, body.testing acronym, body.testing address, body.testing pre, body.testing a, body.testing abbr, body.testing acronym, body.testing address,
body.testing code, body.testing del, body.testing dfn, body.testing em, body.testing img, body.testing code, body.testing del, body.testing dfn, body.testing em, body.testing img,
@ -50,7 +50,7 @@ body.testing caption, body.testing tbody, body.testing tfoot, body.testing thead
font-size: 100%; font-size: 100%;
font-family: inherit; font-family: inherit;
vertical-align: baseline; } vertical-align: baseline; }
body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section { body.testing article, body.testing aside, body.testing details, body.testing figcaption, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing menu, body.testing nav, body.testing section, body.testing summary {
display: block; } display: block; }
body.testing blockquote, body.testing q { body.testing blockquote, body.testing q {
quotes: "" ""; } quotes: "" ""; }

View File

@ -3,7 +3,7 @@ html {
padding: 0; padding: 0;
border: 0; } border: 0; }
.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, .bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, blockquote, q, th, td, caption, table,
div, span, object, iframe, p, div, span, object, iframe, p,
pre, a, abbr, acronym, address, pre, a, abbr, acronym, address,
code, del, dfn, em, img, code, del, dfn, em, img,
@ -19,7 +19,7 @@ caption, tbody, tfoot, thead, tr {
font-family: inherit; font-family: inherit;
vertical-align: baseline; } vertical-align: baseline; }
article, aside, dialog, figure, footer, header, hgroup, nav, section { article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary {
display: block; } display: block; }
blockquote, q { blockquote, q {

View File

@ -0,0 +1,29 @@
# Require any additional compass plugins here.
project_type = :stand_alone
css_dir = "tmp"
sass_dir = "sass"
images_dir = "images"
output_style = :compact
# To enable relative image paths using the images_url() function:
# http_images_path = :relative
http_images_path = "/images"
line_comments = false
asset_cache_buster do |path, file|
pathname = Pathname.new(path)
case pathname.basename(pathname.extname).to_s
when "grid"
new_path = "%s/%s-BUSTED%s" % [pathname.dirname, pathname.basename(pathname.extname), pathname.extname]
{:path => new_path, :query => nil}
when "feed"
"query_string"
when "dk"
{:query => "query_string"}
end
end
asset_host do |path|
"http://assets%d.example.com" % (path.size % 4)
end

View File

@ -0,0 +1,9 @@
.showgrid { background-image: url('http://assets0.example.com/images/grid-BUSTED.png'); }
.inlinegrid { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAUEAYAAACv1qP4AAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAZ0lEQVRYw+3QwQ2AIBAFUTEUwI3+uzN7gDscsIgxEuO8An52J11X73OudfxMraXkzHfO3Y98nQEhA0IGhAwIGRAyIGRAyICQASEDQgaEDAgZEDIgZEDIgJABoZzSGK3tPuN9ERFP7Nw4fg+c5g8V1wAAAABJRU5ErkJggg=='); }
.no-buster { background-image: url('http://assets0.example.com/images/grid.png'); }
.feed { background-image: url('http://assets0.example.com/images/feed.png?query_string'); }
.dk { background-image: url('http://assets0.example.com/images/flags/dk.png?query_string'); }

Binary file not shown.

After

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

View File

@ -0,0 +1,14 @@
.showgrid
background-image: image-url("grid.png")
.inlinegrid
background-image: inline-image("grid.png")
.no-buster
background-image: image-url("grid.png", $only-path: false, $cache-buster: false)
.feed
background-image: image-url("feed.png")
.dk
background-image: image-url("flags/dk.png")

View File

@ -1,84 +1,103 @@
.hbox { .hbox {
display: -moz-box; display: -moz-box;
display: -webkit-box; display: -webkit-box;
display: -ms-box;
display: box; display: box;
-moz-box-orient: horizontal; -moz-box-orient: horizontal;
-webkit-box-orient: horizontal; -webkit-box-orient: horizontal;
-ms-box-orient: horizontal;
box-orient: horizontal; box-orient: horizontal;
-moz-box-align: stretch; -moz-box-align: stretch;
-webkit-box-align: stretch; -webkit-box-align: stretch;
-ms-box-align: stretch;
box-align: stretch; } box-align: stretch; }
.hbox > * { .hbox > * {
-moz-box-flex: 0; -moz-box-flex: 0;
-webkit-box-flex: 0; -webkit-box-flex: 0;
-ms-box-flex: 0;
box-flex: 0; } box-flex: 0; }
.vbox { .vbox {
display: -moz-box; display: -moz-box;
display: -webkit-box; display: -webkit-box;
display: -ms-box;
display: box; display: box;
-moz-box-orient: vertical; -moz-box-orient: vertical;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
-ms-box-orient: vertical;
box-orient: vertical; box-orient: vertical;
-moz-box-align: stretch; -moz-box-align: stretch;
-webkit-box-align: stretch; -webkit-box-align: stretch;
-ms-box-align: stretch;
box-align: stretch; } box-align: stretch; }
.vbox > * { .vbox > * {
-moz-box-flex: 0; -moz-box-flex: 0;
-webkit-box-flex: 0; -webkit-box-flex: 0;
-ms-box-flex: 0;
box-flex: 0; } box-flex: 0; }
.spacer { .spacer {
-moz-box-flex: 1; -moz-box-flex: 1;
-webkit-box-flex: 1; -webkit-box-flex: 1;
-ms-box-flex: 1;
box-flex: 1; } box-flex: 1; }
.reverse { .reverse {
-moz-box-direction: reverse; -moz-box-direction: reverse;
-webkit-box-direction: reverse; -webkit-box-direction: reverse;
-ms-box-direction: reverse;
box-direction: reverse; } box-direction: reverse; }
.box-flex-0 { .box-flex-0 {
-moz-box-flex: 0; -moz-box-flex: 0;
-webkit-box-flex: 0; -webkit-box-flex: 0;
-ms-box-flex: 0;
box-flex: 0; } box-flex: 0; }
.box-flex-1 { .box-flex-1 {
-moz-box-flex: 1; -moz-box-flex: 1;
-webkit-box-flex: 1; -webkit-box-flex: 1;
-ms-box-flex: 1;
box-flex: 1; } box-flex: 1; }
.box-flex-2 { .box-flex-2 {
-moz-box-flex: 2; -moz-box-flex: 2;
-webkit-box-flex: 2; -webkit-box-flex: 2;
-ms-box-flex: 2;
box-flex: 2; } box-flex: 2; }
.box-flex-group-0 { .box-flex-group-0 {
-moz-box-flex-group: 0; -moz-box-flex-group: 0;
-webkit-box-flex-group: 0; -webkit-box-flex-group: 0;
-ms-box-flex-group: 0;
box-flex-group: 0; } box-flex-group: 0; }
.box-flex-group-1 { .box-flex-group-1 {
-moz-box-flex-group: 1; -moz-box-flex-group: 1;
-webkit-box-flex-group: 1; -webkit-box-flex-group: 1;
-ms-box-flex-group: 1;
box-flex-group: 1; } box-flex-group: 1; }
.box-flex-group-2 { .box-flex-group-2 {
-moz-box-flex-group: 2; -moz-box-flex-group: 2;
-webkit-box-flex-group: 2; -webkit-box-flex-group: 2;
-ms-box-flex-group: 2;
box-flex-group: 2; } box-flex-group: 2; }
.start { .start {
-moz-box-pack: start; -moz-box-pack: start;
-webkit-box-pack: start; -webkit-box-pack: start;
-ms-box-pack: start;
box-pack: start; } box-pack: start; }
.end { .end {
-moz-box-pack: end; -moz-box-pack: end;
-webkit-box-pack: end; -webkit-box-pack: end;
-ms-box-pack: end;
box-pack: end; } box-pack: end; }
.center { .center {
-moz-box-pack: center; -moz-box-pack: center;
-webkit-box-pack: center; -webkit-box-pack: center;
-ms-box-pack: center;
box-pack: center; } box-pack: center; }

View File

@ -0,0 +1,9 @@
pre {
white-space: pre;
white-space: pre-wrap;
white-space: pre-line;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
white-space: -moz-pre-wrap;
white-space: -hp-pre-wrap;
word-wrap: break-word; }

View File

@ -565,15 +565,12 @@
.ie-horizontal-filter { .ie-horizontal-filter {
*zoom: 1; *zoom: 1;
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorstr='#FFFFFFFF', endColorstr='#FF000000')";
filter: progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorstr='#FFFFFFFF', endColorstr='#FF000000'); } filter: progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorstr='#FFFFFFFF', endColorstr='#FF000000'); }
.ie-vertical-filter { .ie-vertical-filter {
*zoom: 1; *zoom: 1;
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FF000000')";
filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FF000000'); } filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FF000000'); }
.ie-alpha-filter { .ie-alpha-filter {
*zoom: 1; *zoom: 1;
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#00FFFFFF')";
filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#00FFFFFF'); } filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#00FFFFFF'); }

Some files were not shown because too many files have changed in this diff Show More