├── favicon.ico
├── images
├── bg.png
├── logo.png
├── fabric.png
├── noise.png
├── stitch.png
├── teaser.png
├── logo-retina.png
└── double-stitch.png
├── stylesheets
├── wide.css
├── mobile.css
└── screen.css
├── Procfile
├── Gemfile
├── sass
├── wide.scss
├── partials
│ └── _header.scss
├── mobile.scss
└── screen.scss
├── config.rb
├── Rakefile
├── Termfile
├── Gemfile.lock
├── index.html
├── javascripts
├── master.js
└── modernizr.js
└── capabilities.json
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/philippbosch/haz/HEAD/favicon.ico
--------------------------------------------------------------------------------
/images/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/philippbosch/haz/HEAD/images/bg.png
--------------------------------------------------------------------------------
/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/philippbosch/haz/HEAD/images/logo.png
--------------------------------------------------------------------------------
/images/fabric.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/philippbosch/haz/HEAD/images/fabric.png
--------------------------------------------------------------------------------
/images/noise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/philippbosch/haz/HEAD/images/noise.png
--------------------------------------------------------------------------------
/images/stitch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/philippbosch/haz/HEAD/images/stitch.png
--------------------------------------------------------------------------------
/images/teaser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/philippbosch/haz/HEAD/images/teaser.png
--------------------------------------------------------------------------------
/stylesheets/wide.css:
--------------------------------------------------------------------------------
1 | .group{width:18%;padding:0 1%}.group:nth-child(4){clear:none}
2 |
--------------------------------------------------------------------------------
/images/logo-retina.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/philippbosch/haz/HEAD/images/logo-retina.png
--------------------------------------------------------------------------------
/Procfile:
--------------------------------------------------------------------------------
1 | web: bundle exec serve 8022
2 | compass: bundle exec compass watch .
3 |
--------------------------------------------------------------------------------
/images/double-stitch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/philippbosch/haz/HEAD/images/double-stitch.png
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source :rubygems
2 | gem "rake"
3 | gem "compass"
4 | gem "compass-growl"
5 | gem "rb-fsevent"
6 | gem "foreman"
7 |
--------------------------------------------------------------------------------
/sass/wide.scss:
--------------------------------------------------------------------------------
1 | .group {
2 | width: 18%;
3 | padding: 0 1%;
4 |
5 | &:nth-child(4) {
6 | clear: none;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/config.rb:
--------------------------------------------------------------------------------
1 | require "compass-growl"
2 |
3 | http_path = "/"
4 | css_dir = "stylesheets"
5 | sass_dir = "sass"
6 | images_dir = "images"
7 | javascripts_dir = "javascripts"
8 |
9 | output_style = :compressed
10 | line_comments = false
11 |
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | desc "Deploy to server"
2 | task :deploy do
3 | sh "BRANCH=$(git describe --contains --all HEAD) && echo Deploying $BRANCH … && compass compile && rsync -rtz --exclude .git --exclude .sass-cache . pb@haz.io:projects/haz/$BRANCH/"
4 | end
5 |
--------------------------------------------------------------------------------
/Termfile:
--------------------------------------------------------------------------------
1 | # WestOst App
2 |
3 | PROJECT_NAME = "haz"
4 |
5 | setup do
6 | run "bundle install"
7 | end
8 |
9 | before do
10 | run "cd ~/Sites/#{PROJECT_NAME}"
11 | end
12 |
13 | tab "#{PROJECT_NAME}" do
14 | pane do
15 | run "foreman start"
16 |
17 | pane do
18 | run "mate ."
19 | run "open http://localhost:8022/"
20 | run "clear && ls -alG"
21 | end
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/sass/partials/_header.scss:
--------------------------------------------------------------------------------
1 | #header {
2 | width: 680px;
3 | margin: 0 auto;
4 | @include clearfix;
5 |
6 | h1 {
7 | text-align: left;
8 | width: 230px;
9 | height: 200px;
10 | float: left;
11 | }
12 |
13 | p {
14 | text-align: left;
15 | margin-top: 84px;
16 | @include text-shadow(rgba(0,0,0,0.3) 0 1px);
17 | line-height: 1.4;
18 |
19 | a {
20 | @include text-shadow(rgba(255,255,255,0.7) 0 1px);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/stylesheets/mobile.css:
--------------------------------------------------------------------------------
1 | body{padding:24px 16px;padding-top:0}#header{width:100%}#header h1{height:135px;display:inline;float:none}#header p{margin-top:24px;margin-bottom:16px;text-align:center}.group{width:100%;padding:0;display:inline;float:none}.features li .title{padding-top:0.5em;padding-bottom:0.5em}footer{margin-left:-16px;margin-right:-16px}#github-ribbon{display:none}@media only screen and (-webkit-min-device-pixel-ratio: 2),
2 | only screen and (min-device-pixel-ratio: 2){#header h1{width:193px;height:134px;display:block;margin:0 auto;background:url('/images/logo-retina.png?1311583719');background-size:100%}#header h1 img{display:none}}
3 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: http://rubygems.org/
3 | specs:
4 | chunky_png (1.2.5)
5 | compass (0.11.5)
6 | chunky_png (~> 1.2)
7 | fssm (>= 0.2.7)
8 | sass (~> 3.1)
9 | compass-growl (0.0.5)
10 | compass (~> 0.11.1)
11 | growl_notify
12 | foreman (0.26.1)
13 | term-ansicolor (~> 1.0.5)
14 | thor (>= 0.13.6)
15 | fssm (0.2.7)
16 | growl_notify (0.0.3)
17 | rb-appscript
18 | rake (0.9.2.2)
19 | rb-appscript (0.6.1)
20 | rb-fsevent (0.4.3.1)
21 | sass (3.1.10)
22 | term-ansicolor (1.0.7)
23 | thor (0.14.6)
24 |
25 | PLATFORMS
26 | ruby
27 |
28 | DEPENDENCIES
29 | compass
30 | compass-growl
31 | foreman
32 | rake
33 | rb-fsevent
34 |
--------------------------------------------------------------------------------
/sass/mobile.scss:
--------------------------------------------------------------------------------
1 | @import "compass";
2 |
3 | body {
4 | padding: 24px 16px;
5 | padding-top: 0;
6 | }
7 |
8 | #header {
9 | width: 100%;
10 |
11 | h1 {
12 | height: 135px;
13 | @include float(none);
14 | }
15 |
16 | p {
17 | margin-top: 24px;
18 | margin-bottom: 16px;
19 | text-align: center;
20 | }
21 | }
22 |
23 | .group {
24 | width: 100%;
25 | padding: 0;
26 | @include float(none);
27 | }
28 |
29 | .features {
30 | li {
31 | .title {
32 | padding-top: 0.5em;
33 | padding-bottom: 0.5em;
34 | }
35 | }
36 | }
37 |
38 | footer {
39 | margin-left: -16px;
40 | margin-right: -16px;
41 | }
42 |
43 | #github-ribbon {
44 | display: none;
45 | }
46 |
47 |
48 | @media
49 | only screen and (-webkit-min-device-pixel-ratio: 2),
50 | only screen and (min-device-pixel-ratio: 2) {
51 |
52 | #header {
53 | h1 {
54 | width: 193px;
55 | height: 134px;
56 | display: block;
57 | margin: 0 auto;
58 | background: image-url("logo-retina.png");
59 | background-size: 100%;
60 |
61 | img {
62 | display: none;
63 | }
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/stylesheets/screen.css:
--------------------------------------------------------------------------------
1 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary{display:block}body{background-image:url('/images/bg.png?1311440663');background-color:#78b814;background-position:top center;color:#fff;font-family:"Droid Sans", sans-serif;padding:48px;padding-top:0;-webkit-text-size-adjust:100%}a{color:#3c5c0a;text-decoration:none}a.spec:after{content:" ›";color:rgba(136,135,95,0.5);text-transform:uppercase;font-size:75%;text-shadow:none}a.spec:hover:after{content:" Spec ›"}#wrapper{overflow:hidden;*zoom:1}#wrapper > header{text-align:center;margin-bottom:1em}#header{width:680px;margin:0 auto;overflow:hidden;*zoom:1}#header h1{text-align:left;width:230px;height:200px;float:left}#header p{text-align:left;margin-top:84px;text-shadow:rgba(0,0,0,0.3) 0 1px;line-height:1.4}#header p a{text-shadow:rgba(255,255,255,0.7) 0 1px}p.info{text-align:center}.group{width:30%;display:inline;float:left;padding:0 1.5%;margin-bottom:2em}.group:nth-child(4){clear:left}.group h1{margin:0 -5px;padding:32px 0 16px 0;text-align:center;font-size:24px;font-weight:bold;color:rgba(136,135,95,0.7);letter-spacing:-2px;background:url('/images/stitch.png?1311440663') center 8px repeat-x;text-shadow:rgba(255,255,255,0.7) 0 1px,rgba(0,0,0,0.2) 0 -1px}.features{width:100%;margin-top:1em;padding-bottom:0.5em;background:#e7e6cf url('/images/fabric.png?1311440663');-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;-moz-box-shadow:rgba(0,0,0,0.5) 0 1px 2px;-webkit-box-shadow:rgba(0,0,0,0.5) 0 1px 2px;-o-box-shadow:rgba(0,0,0,0.5) 0 1px 2px;box-shadow:rgba(0,0,0,0.5) 0 1px 2px}.features,.features a{color:#88875F}.features li{margin:0 1em;position:relative}.features li:last-child{border-bottom:0}.features li .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;padding:0.5em 64px 0.5em 0}.features .support{text-align:right;color:#FFF;color:rgba(255,255,255,0.8);position:absolute;top:0.6em;right:0;display:block;padding:4px 6px;-moz-border-radius:12px;-webkit-border-radius:12px;-o-border-radius:12px;-ms-border-radius:12px;-khtml-border-radius:12px;border-radius:12px;text-transform:uppercase;font-size:12px;font-weight:bold;-moz-box-shadow:rgba(0,0,0,0.2) 0 1px inset,rgba(255,255,255,0.8) 0 -1px inset;-webkit-box-shadow:rgba(0,0,0,0.2) 0 1px inset,rgba(255,255,255,0.8) 0 -1px inset;-o-box-shadow:rgba(0,0,0,0.2) 0 1px inset,rgba(255,255,255,0.8) 0 -1px inset;box-shadow:rgba(0,0,0,0.2) 0 1px inset,rgba(255,255,255,0.8) 0 -1px inset}.features .support-yes > .support{background-color:#78b814;background-color:rgba(120,184,20,0.9)}.features .support-no > .support{background-color:#b83314;background-color:rgba(184,51,20,0.9)}.features .support-maybe > .support{background-color:#cfd12b;background-color:rgba(207,209,43,0.9)}.subfeatures{margin-bottom:0.5em}.subfeatures li{font-size:80%;border:0;margin-right:0}.subfeatures li .support{top:0.5em}footer{background:url('/images/double-stitch.png?1311440663') top center repeat-x;font-size:12px;clear:both;text-align:center;line-height:1.4;padding-top:48px;margin:16px -48px 0 -48px}footer a{color:#54800e;text-decoration:none}#useragent{margin-bottom:1em}#social{margin-top:1em}#github-ribbon{position:absolute;top:0;right:0;border:0}
2 |
--------------------------------------------------------------------------------
/sass/screen.scss:
--------------------------------------------------------------------------------
1 | @import "compass/reset";
2 | @import "compass";
3 |
4 | $green: #78b814;
5 | $light-green: mix($green, #FFF);
6 | $even-lighter-green: mix($green, #FFF, 30%);
7 | $dark-green: mix($green, #000, 70%);
8 | $even-darker-green: mix($green, #000);
9 | $red: #b83314;
10 | $yellow: #cfd12b;
11 | $white-kinda: #FFF;
12 | //$noise: url("http://noisepng.com/64-90-4.png");
13 | $noise: image-url("noise.png");
14 |
15 | body {
16 | background-image: image-url("bg.png");
17 | background-color: $green;
18 | background-position: top center;
19 | color: $white-kinda;
20 | font-family: "Droid Sans", sans-serif;
21 | padding: 48px;
22 | padding-top: 0;
23 | -webkit-text-size-adjust: 100%;
24 | }
25 |
26 | a {
27 | color: $even-darker-green;
28 | text-decoration: none;
29 |
30 | &.spec {
31 | &:after {
32 | content: " ›";
33 | color: rgba(#88875F, 0.5);
34 | text-transform: uppercase;
35 | font-size: 75%;
36 | @include text-shadow(none);
37 | }
38 |
39 | &:hover:after {
40 | content: " Spec ›";
41 | }
42 | }
43 | }
44 |
45 | #wrapper {
46 | @include clearfix;
47 |
48 | & > header {
49 | text-align: center;
50 | margin-bottom: 1em;
51 | }
52 | }
53 |
54 | @import "partials/header";
55 |
56 | p.info {
57 | text-align: center;
58 | }
59 |
60 | .group {
61 | width: 30%;
62 | @include float(left);
63 | padding: 0 1.5%;
64 | margin-bottom: 2em;
65 |
66 | &:nth-child(4) {
67 | clear: left;
68 | }
69 |
70 | h1 {
71 | margin: 0 -5px;
72 | padding: 32px 0 16px 0;
73 | text-align: center;
74 | font-size: 24px;
75 | font-weight: bold;
76 | color: rgba(#88875F, 0.7);
77 | letter-spacing: -2px;
78 | @include background(image-url("stitch.png") center 8px repeat-x);
79 | @include text-shadow(rgba(255,255,255,0.7) 0 1px, rgba(0,0,0,0.2) 0 -1px);
80 | }
81 | }
82 |
83 | .features {
84 | width: 100%;
85 | margin-top: 1em;
86 | padding-bottom: 0.5em;
87 | background: #E7E6CF image-url("fabric.png");
88 | @include border-radius(3px);
89 | @include box-shadow(rgba(0,0,0,0.5) 0 1px 2px);
90 |
91 | &, a {
92 | color: #88875F;
93 | }
94 |
95 | li {
96 | margin: 0 1em;
97 | position: relative;
98 |
99 | &:last-child {
100 | border-bottom: 0;
101 | }
102 |
103 | .title {
104 | white-space: nowrap;
105 | overflow: hidden;
106 | text-overflow: ellipsis;
107 | display: block;
108 | padding: 0.5em 64px 0.5em 0;
109 | }
110 | }
111 |
112 | .support {
113 | text-align: right;
114 | color: #FFF;
115 | color: rgba(255,255,255,0.8);
116 | position: absolute;
117 | top: 0.6em;
118 | right: 0;
119 | display: block;
120 | padding: 4px 6px;
121 | @include border-radius(12px);
122 | text-transform: uppercase;
123 | font-size: 12px;
124 | font-weight: bold;
125 | @include box-shadow(rgba(0,0,0,0.2) 0 1px inset, rgba(255,255,255,0.8) 0 -1px inset);
126 | }
127 |
128 | .support-yes > .support {
129 | background-color: $green;
130 | background-color: rgba($green,0.9);
131 | }
132 |
133 | .support-no > .support {
134 | background-color: $red;
135 | background-color: rgba($red,0.9);
136 | }
137 |
138 | .support-maybe > .support {
139 | background-color: $yellow;
140 | background-color: rgba($yellow,0.9);
141 | }
142 | }
143 |
144 | .subfeatures {
145 | margin-bottom: 0.5em;
146 |
147 | li {
148 | font-size: 80%;
149 | border: 0;
150 | margin-right: 0;
151 |
152 | .support {
153 | top: 0.5em;
154 | }
155 | }
156 | }
157 |
158 | footer {
159 | @include background(image-url("double-stitch.png") top center repeat-x);
160 | font-size: 12px;
161 | clear: both;
162 | text-align: center;
163 | line-height: 1.4;
164 | padding-top: 48px;
165 | margin: 16px -48px 0 -48px;
166 |
167 | a {
168 | color: $dark-green;
169 | text-decoration: none;
170 | }
171 | }
172 |
173 | #useragent {
174 | margin-bottom: 1em;
175 | }
176 |
177 | #social {
178 | margin-top: 1em;
179 | }
180 |
181 | #github-ribbon {
182 | position: absolute;
183 | top: 0;
184 | right: 0;
185 | border: 0;
186 | }
187 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | haz.io › HTML5 & CSS3 Browser Capabilities
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
19 |
20 |
21 |
32 |
57 |
58 |
87 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
114 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/javascripts/master.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | var sectionTemplateSource = $('#section-template').html(),
3 | sectionTemplate = Handlebars.compile(sectionTemplateSource),
4 | useragentTemplateSource = $('#useragent-template').html(),
5 | useragentTemplate = Handlebars.compile(useragentTemplateSource),
6 | features = "";
7 |
8 | $.each(Modernizr.input, function(attr, support) {
9 | $('html').addClass((!support?'no-':'')+'input-'+attr);
10 | });
11 |
12 | $.each(Modernizr.inputtypes, function(type, support) {
13 | $('html').addClass((!support?'no-':'')+'inputtypes-'+type);
14 | });
15 |
16 | $.each(Modernizr.video, function(type, support) {
17 | $('html').addClass((support===''?'no-':(support=='maybe'?'maybe-':''))+'video-'+type);
18 | });
19 |
20 | $.each(Modernizr.audio, function(type, support) {
21 | $('html').addClass((support===''?'no-':(support=='maybe'?'maybe-':''))+'audio-'+type);
22 | });
23 |
24 |
25 | function setSupport($feature, supported) {
26 | if (supported == 'yes' || supported == 'probably') {
27 | $feature.addClass('support-yes').find('> .support').text('yes');
28 | } else if (supported == 'no' || supported === '') {
29 | $feature.addClass('support-no').find('> .support').text('no');
30 | } else if (supported == 'maybe') {
31 | $feature.addClass('support-maybe').find('> .support').text('maybe');
32 | }
33 | }
34 | $.getJSON('capabilities.json?v=2.1', function(capabilities) {
35 | $(capabilities.sections).each(function(i, section) {
36 | $('#features').append(sectionTemplate(section));
37 | $(section.features).each(function(i, feature) {
38 | var supported,
39 | $feature = $('.feature.' + section.name + '-' + feature.name);
40 | if (!(section.name in Modernizr)) {
41 | supported = !!Modernizr[feature.name] ? 'yes' : 'no';
42 | } else {
43 | supported = !!Modernizr[section.name][feature.name] ? 'yes' : 'no';
44 | }
45 | setSupport($feature, supported);
46 |
47 | if(feature.subfeatures) {
48 | $(feature.subfeatures).each(function(i, subfeature) {
49 | var supported = !!Modernizr[feature.name] && Modernizr[feature.name][subfeature.name.substr(subfeature.name.indexOf('-')+1)] || 'no',
50 | $subfeature = $('.feature.' + subfeature.name);
51 | setSupport($subfeature, supported);
52 | });
53 | }
54 | });
55 | });
56 | });
57 |
58 |
59 | /* BrowserDetect,
60 | by PPK, http://www.quirksmode.org/js/detect.html */
61 | var BrowserDetect = {
62 | init: function () {
63 | this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
64 | this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version";
65 | this.OS = this.searchString(this.dataOS) || "an unknown OS";
66 | },
67 | searchString: function (data) {
68 | for (var i=0;i",a,""].join(""),k.id=i,k.innerHTML+=f,g.appendChild(k),h=c(k,a),k.parentNode.removeChild(k);return!!h},w=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=C(e[d],"function"),C(e[d],c)||(e[d]=c),e.removeAttribute(d))),e=null;return f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),x,y={}.hasOwnProperty,z;!C(y,c)&&!C(y.call,c)?z=function(a,b){return y.call(a,b)}:z=function(a,b){return b in a&&C(a.constructor.prototype[b],c)};var G=function(c,d){var f=c.join(""),g=d.length;v(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||j.touch.offsetTop===9,e.csstransforms3d=j.csstransforms3d.offsetLeft===9,e.generatedcontent=j.generatedcontent.offsetHeight>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",o.join("touch-enabled),("),i,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",o.join("transform-3d),("),i,")","{#csstransforms3d{left:9px;position:absolute}}"].join(""),['#generatedcontent:after{content:"',m,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);r.flexbox=function(){function c(a,b,c,d){a.style.cssText=o.join(b+":"+c+";")+(d||"")}function a(a,b,c,d){b+=":",a.style.cssText=(b+o.join(c+";"+b)).slice(0,-b.length)+(d||"")}var d=b.createElement("div"),e=b.createElement("div");a(d,"display","box","width:42px;padding:0;"),c(e,"box-flex","1","width:10px;"),d.appendChild(e),g.appendChild(d);var f=e.offsetWidth===42;d.removeChild(e),g.removeChild(d);return f},r.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},r.canvastext=function(){return!!e.canvas&&!!C(b.createElement("canvas").getContext("2d").fillText,"function")},r.webgl=function(){return!!a.WebGLRenderingContext},r.touch=function(){return e.touch},r.geolocation=function(){return!!navigator.geolocation},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){var b=!!a.openDatabase;return b},r.indexedDB=function(){for(var b=-1,c=p.length;++b7)},r.history=function(){return!!a.history&&!!history.pushState},r.draganddrop=function(){return w("dragstart")&&w("drop")},r.websockets=function(){for(var b=-1,c=p.length;++b";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var I in r)z(r,I)&&(x=I.toLowerCase(),e[x]=r[I](),u.push((e[x]?"":"no-")+x));e.input||H(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)z(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return;b=typeof b=="boolean"?b:!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b}return e},A(""),j=l=null,e._version=d,e._prefixes=o,e._domPrefixes=p,e.hasEvent=w,e.testProp=function(a){return E([a])},e.testAllProps=F,e.testStyles=v,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+u.join(" "):"");return e}(this,this.document),function(){function a(a){return window.getComputedStyle?getComputedStyle(a,null).getPropertyValue("background"):a.currentStyle.background}Modernizr.testStyles(" #modernizr { background-repeat: round; } ",function(b,c){Modernizr.addTest("bgrepeatround",a(b)=="round")}),Modernizr.testStyles(" #modernizr { background-repeat: space; } ",function(b,c){Modernizr.addTest("bgrepeatspace",a(b)=="space")})}(),function(){function c(b){a(b,"",-1)}function b(a){var b=a+"=",c=document.cookie.split(";");for(var d=0;dab",b.style.display="block",d.appendChild(b),e=b.offsetHeight,b.open=!0,e=e!=b.offsetHeight,d.removeChild(b),c&&d.parentNode.removeChild(d);return e}),Modernizr.addTest("createelement-attrs",function(){try{return document.createElement(" ").getAttribute("name")=="test"}catch(a){return!1}}),Modernizr.addTest("pointerevents",function(){var a=document.createElement("x"),b=document.documentElement,c=window.getComputedStyle,d;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a),d=c&&c(a,"").pointerEvents==="auto",b.removeChild(a);return!!d}),Modernizr.addTest("progressbar",function(){return document.createElement("progress").max!=undefined}),Modernizr.addTest("meter",function(){return document.createElement("meter").max!=undefined}),Modernizr.addTest("emoji",function(){if(!Modernizr.canvastext)return!1;var a=document.createElement("canvas"),b=a.getContext("2d");b.textBaseline="top",b.font="32px Arial",b.fillText("😃",0,0);return b.getImageData(16,16,1,1).data[0]!=0}),Modernizr.addTest("devicemotion","DeviceMotionEvent"in window),Modernizr.addTest("deviceorientation","DeviceOrientationEvent"in window),Modernizr.addTest("file",function(){return!!(window.File&&window.FileList&&window.FileReader)}),function(){var a=Modernizr.input.placeholder="placeholder"in document.createElement("input");a&&((Modernizr.textarea||(Modernizr.textarea={})).placeholder="placeholder"in document.createElement("textarea"))}(),function(){function c(){try{var a=document.createElement("div"),b=document.createElement("span"),c=a.style,d=0,e=0,f=!1,g=!1,h=!1;document.body.appendChild(a),a.appendChild(b),b.innerHTML="Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.",c.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;",d=b.offsetHeight,e=b.offsetWidth,c.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;-moz-hyphens:auto;-webkit-hyphens:auto;-o-hyphens:auto;-ms-hyphens:auto;hyphens:auto;",f=b.offsetHeight!=d||b.offsetWidth!=e,a.removeChild(b),document.body.removeChild(a);return f}catch(i){return!1}}function b(a){try{var b=document.createElement("input"),c=document.createElement("div"),d="lebowski",e=!1,f;document.body.appendChild(b),document.body.appendChild(c),c.innerHTML=d+a+d,b.setSelectionRange?(b.focus(),b.setSelectionRange(0,0)):b.createTextRange&&(f=b.createTextRange(),f.collapse(!0),f.moveEnd("character",0),f.moveStart("character",0),f.select());if(window.find)e=window.find(d+d);else try{f=self.document.body.createTextRange(),e=f.findText(d+d)}catch(g){e=!1}document.body.removeChild(c),document.body.removeChild(b);return e}catch(g){return!1}}function a(a,b){try{var c=document.createElement("div"),d=document.createElement("span"),e=c.style,f=0,g=!1,h=!1,i=!1;document.body.appendChild(c),c.appendChild(d),e.cssText="position:absolute;top:0;left:0;overflow:visible;width:1.25em;",d.innerHTML="mm",f=d.offsetHeight,d.innerHTML="m"+a+"m",h=d.offsetHeight>f,b?(d.innerHTML="m m",f=d.offsetWidth,d.innerHTML="m"+a+"m",i=d.offsetWidth>f):i=!0,h===!0&&i===!0&&(g=!0),c.removeChild(d),document.body.removeChild(c);return g}catch(j){return!1}}Modernizr.addTest("csshyphens",function(){return Modernizr.testAllProps("hyphens")}),Modernizr.addTest("workingcsshyphens",function(){try{return c()}catch(a){return!1}}),Modernizr.addTest("softhyphens",function(){try{return a("",!0)&&a("",!1)}catch(b){return!1}}),Modernizr.addTest("softhyphensfind",function(){try{return b("")&&b("")}catch(a){return!1}})}(),function(){var a=new Image;a.onerror=function(){Modernizr.addTest("webp",!1)},a.onload=function(){Modernizr.addTest("webp",function(){return a.width==4})},a.src="data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAACyAgCdASoBAAEALmk0mk0iIiIiIgBoSygABc6zbAAA/v56QAAAAA=="}(),function(){if(!!Modernizr.webgl){var a,b,c;try{a=document.createElement("canvas"),b=a.getContext("webgl")||a.getContext("experimental-webgl"),c=b.getSupportedExtensions()}catch(d){return}Modernizr.webgl=new Boolean(!0);for(var e=-1,f=c.length;++e 1",
55 | "specurl": "https://bugs.webkit.org/show_bug.cgi?id=45761"
56 | },
57 | {
58 | "name": "display-table",
59 | "title": "display: table",
60 | "specurl": ""
61 | },
62 | {
63 | "name": "flexbox",
64 | "title": "Flexible Box Model",
65 | "specurl": "http://dev.w3.org/csswg/css3-flexbox/"
66 | },
67 | {
68 | "name": "generatedcontent",
69 | "title": "Generated Content",
70 | "specurl": "http://dev.w3.org/csswg/css3-content/"
71 | },
72 | {
73 | "name": "hsla",
74 | "title": "hsla()",
75 | "specurl": "http://dev.w3.org/csswg/css3-color/#hsla-color"
76 | },
77 | {
78 | "name": "csshyphens",
79 | "title": "Hyphenation",
80 | "specurl": ""
81 | },
82 | {
83 | "name": "multiplebgs",
84 | "title": "Multiple backgrounds",
85 | "specurl": "http://dev.w3.org/csswg/css3-background/#layering"
86 | },
87 | {
88 | "name": "opacity",
89 | "title": "opacity",
90 | "specurl": "http://dev.w3.org/csswg/css3-color/#transparency"
91 | },
92 | {
93 | "name": "overflowscrolling",
94 | "title": "overflow-scrolling",
95 | "specurl": ""
96 | },
97 | {
98 | "name": "pointerevents",
99 | "title": "pointer-events",
100 | "specurl": "developer.mozilla.org/en/CSS/pointer-events"
101 | },
102 | {
103 | "name": "rgba",
104 | "title": "rgba()",
105 | "specurl": "http://dev.w3.org/csswg/css3-color/#rgba-color"
106 | },
107 | {
108 | "name": "textshadow",
109 | "title": "text-shadow",
110 | "specurl": "http://dev.w3.org/csswg/css3-text/#text-shadow"
111 | },
112 | {
113 | "name": "userselect",
114 | "title": "user-select",
115 | "specurl": ""
116 | },
117 | {
118 | "name": "cssanimations",
119 | "title": "CSS Animations",
120 | "specurl": "http://dev.w3.org/csswg/css3-animations/"
121 | },
122 | {
123 | "name": "csscolumns",
124 | "title": "CSS Columns",
125 | "specurl": "http://dev.w3.org/csswg/css3-multicol/"
126 | },
127 | {
128 | "name": "cssgradients",
129 | "title": "CSS Gradients",
130 | "specurl": "http://dev.w3.org/csswg/css3-images/#gradients"
131 | },
132 | {
133 | "name": "cssreflections",
134 | "title": "CSS Reflections"
135 | },
136 | {
137 | "name": "csstransforms",
138 | "title": "CSS 2D Transforms",
139 | "specurl": "http://dev.w3.org/csswg/css3-2d-transforms/"
140 | },
141 | {
142 | "name": "csstransforms3d",
143 | "title": "CSS 3D Transforms",
144 | "specurl": "http://dev.w3.org/csswg/css3-3d-transforms/"
145 | },
146 | {
147 | "name": "csstransitions",
148 | "title": "CSS Transitions",
149 | "specurl": "http://dev.w3.org/csswg/css3-transitions/"
150 | }
151 | ]
152 | },
153 | {
154 | "name": "html5",
155 | "title": "HTML5",
156 | "features": [
157 | {
158 | "name": "applicationcache",
159 | "title": "applicationCache",
160 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html"
161 | },
162 | {
163 | "name": "canvas",
164 | "title": "Canvas",
165 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html"
166 | },
167 | {
168 | "name": "canvastext",
169 | "title": "Canvas Text",
170 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#text-0"
171 | },
172 | {
173 | "name": "details",
174 | "title": "",
175 | "specurl": ""
176 | },
177 | {
178 | "name": "devicemotion",
179 | "title": "Device Motion Event",
180 | "specurl": "http://dev.w3.org/geo/api/spec-source-orientation.html"
181 | },
182 | {
183 | "name": "deviceorientation",
184 | "title": "Device Orientation Event",
185 | "specurl": "http://dev.w3.org/geo/api/spec-source-orientation.html"
186 | },
187 | {
188 | "name": "draganddrop",
189 | "title": "Drag and Drop",
190 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html"
191 | },
192 | {
193 | "name": "file",
194 | "title": "File API",
195 | "specurl": "http://dev.w3.org/2006/webapi/FileAPI/"
196 | },
197 | {
198 | "name": "hashchange",
199 | "title": "hashchange Event",
200 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#handler-window-onhashchange"
201 | },
202 | {
203 | "name": "history",
204 | "title": "History Management",
205 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#the-history-interface"
206 | },
207 | {
208 | "name": "audio",
209 | "title": "HTML5 Audio",
210 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#the-audio-element",
211 | "subfeatures": [
212 | {
213 | "name": "audio-mp3",
214 | "title": "MP3"
215 | },
216 | {
217 | "name": "audio-wav",
218 | "title": "WAV"
219 | },
220 | {
221 | "name": "audio-m4a",
222 | "title": "M4A"
223 | },
224 | {
225 | "name": "audio-ogg",
226 | "title": "Ogg"
227 | }
228 | ]
229 | },
230 | {
231 | "name": "video",
232 | "title": "HTML5 Video",
233 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#the-video-element",
234 | "subfeatures": [
235 | {
236 | "name": "video-h264",
237 | "title": "H.264"
238 | },
239 | {
240 | "name": "video-ogg",
241 | "title": "Ogg"
242 | },
243 | {
244 | "name": "video-webm",
245 | "title": "WebM"
246 | }
247 | ]
248 | },
249 | {
250 | "name": "indexeddb",
251 | "title": "IndexedDB",
252 | "specurl": "http://www.w3.org/TR/IndexedDB/"
253 | },
254 | {
255 | "name": "localstorage",
256 | "title": "localStorage",
257 | "specurl": "http://dev.w3.org/html5/webstorage/#the-localstorage-attribute"
258 | },
259 | {
260 | "name": "meter",
261 | "title": "",
262 | "specurl": ""
263 | },
264 | {
265 | "name": "postmessage",
266 | "title": "Cross-window Messaging",
267 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#web-messaging"
268 | },
269 | {
270 | "name": "progressbar",
271 | "title": "",
272 | "specurl": ""
273 | },
274 | {
275 | "name": "sessionstorage",
276 | "title": "sessionStorage",
277 | "specurl": "http://dev.w3.org/html5/webstorage/#the-sessionstorage-attribute"
278 | },
279 | {
280 | "name": "sharedworkers",
281 | "title": "Shared Workers",
282 | "specurl": "http://dev.w3.org/html5/workers/#shared-workers-introduction"
283 | },
284 | {
285 | "name": "websockets",
286 | "title": "Web Sockets",
287 | "specurl": "http://dev.w3.org/html5/websockets/"
288 | },
289 | {
290 | "name": "websqldatabase",
291 | "title": "Web SQL Database",
292 | "specurl": "http://www.w3.org/TR/webdatabase/"
293 | },
294 | {
295 | "name": "webworkers",
296 | "title": "Web Workers",
297 | "specurl": "http://www.whatwg.org/specs/web-apps/current-work/complete/workers.html"
298 | }
299 | ]
300 | },
301 | {
302 | "name": "inputtypes",
303 | "title": "Input Types",
304 | "features": [
305 | {
306 | "name": "search",
307 | "title": "search",
308 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#text-state-and-search-state"
309 | },
310 | {
311 | "name": "tel",
312 | "title": "tel",
313 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#telephone-state"
314 | },
315 | {
316 | "name": "url",
317 | "title": "url",
318 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#url-state"
319 | },
320 | {
321 | "name": "email",
322 | "title": "email",
323 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#e-mail-state"
324 | },
325 | {
326 | "name": "datetime",
327 | "title": "datetime",
328 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#date-and-time-state"
329 | },
330 | {
331 | "name": "date",
332 | "title": "date",
333 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#date-state"
334 | },
335 | {
336 | "name": "month",
337 | "title": "month",
338 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#month-state"
339 | },
340 | {
341 | "name": "week",
342 | "title": "week",
343 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#week-state"
344 | },
345 | {
346 | "name": "time",
347 | "title": "time",
348 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#time-state"
349 | },
350 | {
351 | "name": "datetime-local",
352 | "title": "datetime-local",
353 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#local-date-and-time-state"
354 | },
355 | {
356 | "name": "number",
357 | "title": "number",
358 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#number-state"
359 | },
360 | {
361 | "name": "range",
362 | "title": "range",
363 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#range-state"
364 | },
365 | {
366 | "name": "color",
367 | "title": "color",
368 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#color-state"
369 | }
370 | ]
371 | },
372 | {
373 | "name": "input",
374 | "title": "Input Attributes",
375 | "features": [
376 | {
377 | "name": "autocomplete",
378 | "title": "autocomplete",
379 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#the-autocomplete-attribute"
380 | },
381 | {
382 | "name": "autofocus",
383 | "title": "autofocus",
384 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#attr-fe-autofocus"
385 | },
386 | {
387 | "name": "list",
388 | "title": "list",
389 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#attr-input-list"
390 | },
391 | {
392 | "name": "placeholder",
393 | "title": "placeholder",
394 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#the-placeholder-attribute"
395 | },
396 | {
397 | "name": "max",
398 | "title": "max",
399 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#the-min-and-max-attributes"
400 | },
401 | {
402 | "name": "min",
403 | "title": "min",
404 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#the-min-and-max-attributes"
405 | },
406 | {
407 | "name": "multiple",
408 | "title": "multiple",
409 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#the-multiple-attribute"
410 | },
411 | {
412 | "name": "pattern",
413 | "title": "pattern",
414 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#the-pattern-attribute"
415 | },
416 | {
417 | "name": "required",
418 | "title": "required",
419 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#the-required-attribute"
420 | },
421 | {
422 | "name": "step",
423 | "title": "step",
424 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#the-step-attribute"
425 | }
426 | ]
427 | },
428 | {
429 | "name": "misc",
430 | "title": "Miscellaneous",
431 | "features": [
432 | {
433 | "name": "cookies",
434 | "title": "Cookies",
435 | "specurl": ""
436 | },
437 | {
438 | "name": "customprotocolhandler",
439 | "title": "Custom Protocol Handlers",
440 | "specurl": ""
441 | },
442 | {
443 | "name": "datauri",
444 | "title": "data URIs",
445 | "specurl": ""
446 | },
447 | {
448 | "name": "emoji",
449 | "title": "Emoji",
450 | "specurl": "http://en.wikipedia.org/wiki/Emoji"
451 | },
452 | {
453 | "name": "fullscreen",
454 | "title": "Fullscreen API",
455 | "specurl": "https://developer.mozilla.org/en/API/Fullscreen"
456 | },
457 | {
458 | "name": "geolocation",
459 | "title": "Geolocation API",
460 | "specurl": "http://dev.w3.org/geo/api/spec-source.html"
461 | },
462 | {
463 | "name": "inlinesvg",
464 | "title": "Inline SVG",
465 | "specurl": "http://dev.w3.org/html5/spec/Overview.html#svg-0"
466 | },
467 | {
468 | "name": "smil",
469 | "title": "SMIL",
470 | "specurl": "http://www.w3.org/TR/REC-smil/"
471 | },
472 | {
473 | "name": "svg",
474 | "title": "SVG",
475 | "specurl": "http://www.w3.org/TR/SVG/"
476 | },
477 | {
478 | "name": "svgclippaths",
479 | "title": "SVG Clip paths",
480 | "specurl": "http://www.w3.org/TR/SVG/masking.html#ClipPathProperty"
481 | },
482 | {
483 | "name": "touch",
484 | "title": "Touch Events",
485 | "specurl": "http://www.w3.org/TR/2011/WD-touch-events-20110505/"
486 | },
487 | {
488 | "name": "webgl",
489 | "title": "WebGL",
490 | "specurl": "http://www.khronos.org/registry/webgl/specs/latest/"
491 | },
492 | {
493 | "name": "webp",
494 | "title": "WebP",
495 | "specurl": "http://code.google.com/speed/webp/"
496 | }
497 | ]
498 | }
499 | ]
500 | }
501 |
--------------------------------------------------------------------------------