diff --git a/22-loader-with-pure-css/README.md b/22-loader-with-pure-css/README.md
new file mode 100644
index 00000000..b0f92dc0
--- /dev/null
+++ b/22-loader-with-pure-css/README.md
@@ -0,0 +1,3 @@
+A Pen created at CodePen.io. You can find this one at http://codepen.io/bojankrsmanovic/pen/dpzZkm.
+
+ Inspired from http://codepen.io/iremlopsum/pen/WxqyNq All props to Irem Lopsum. I used his values and colors. This is however almost-like replica with pure CSS. Duno why really, just wanted to try. PS. Only works in chrome for now (!= firefox IE).
\ No newline at end of file
diff --git a/22-loader-with-pure-css/config.rb b/22-loader-with-pure-css/config.rb
new file mode 100644
index 00000000..4302d097
--- /dev/null
+++ b/22-loader-with-pure-css/config.rb
@@ -0,0 +1,25 @@
+# Require any additional compass plugins here.
+
+# Set this to the root of your project when deployed:
+http_path = "/"
+css_dir = "css"
+sass_dir = "scss"
+images_dir = "images"
+javascripts_dir = "js"
+fonts_dir = "fonts"
+
+output_style = :expanded
+
+# To enable relative paths to assets via compass helper functions. Uncomment:
+# relative_assets = true
+
+# To disable debugging comments that display the original location of your selectors. Uncomment:
+# line_comments = false
+color_output = false
+
+
+# If you prefer the indented syntax, you might want to regenerate this
+# project again passing --syntax sass, or you can uncomment this:
+# preferred_syntax = :sass
+# and then run:
+# sass-convert -R --from scss --to sass css scss && rm -rf sass && mv scss sass
diff --git a/22-loader-with-pure-css/css/style.css b/22-loader-with-pure-css/css/style.css
new file mode 100644
index 00000000..34d6364e
--- /dev/null
+++ b/22-loader-with-pure-css/css/style.css
@@ -0,0 +1,688 @@
+*,
+*:before,
+*:after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+.wrapper {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ margin: -100px;
+ width: 200px;
+ height: 200px;
+ background-color: transparent;
+ border: none;
+ -webkit-user-select: none;
+}
+.wrapper .box-wrap {
+ width: 70%;
+ height: 70%;
+ margin: calc((100% - 70%)/2) calc((100% - 70%)/2);
+ position: relative;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+}
+.wrapper .box-wrap .box {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ background: rgba(135, 0, 0, 0.6);
+ background: -webkit-linear-gradient(left, #141562, #486FBC, #EAB5A1, #8DD6FF, #4973C9, #D07CA7, #F4915E, #F5919E, #B46F89, #141562, #486FBC);
+ background: linear-gradient(to right, #141562, #486FBC, #EAB5A1, #8DD6FF, #4973C9, #D07CA7, #F4915E, #F5919E, #B46F89, #141562, #486FBC);
+ background-position: 0% 50%;
+ background-size: 1000% 1000%;
+ visibility: hidden;
+}
+.wrapper .box-wrap .box.one {
+ -webkit-animation: moveGradient 15s infinite, oneMove 3.5s infinite;
+ animation: moveGradient 15s infinite, oneMove 3.5s infinite;
+}
+.wrapper .box-wrap .box.two {
+ -webkit-animation: moveGradient 15s infinite, twoMove 3.5s .15s infinite;
+ animation: moveGradient 15s infinite, twoMove 3.5s .15s infinite;
+}
+.wrapper .box-wrap .box.three {
+ -webkit-animation: moveGradient 15s infinite, threeMove 3.5s .3s infinite;
+ animation: moveGradient 15s infinite, threeMove 3.5s .3s infinite;
+}
+.wrapper .box-wrap .box.four {
+ -webkit-animation: moveGradient 15s infinite, fourMove 3.5s .575s infinite;
+ animation: moveGradient 15s infinite, fourMove 3.5s .575s infinite;
+}
+.wrapper .box-wrap .box.five {
+ -webkit-animation: moveGradient 15s infinite, fiveMove 3.5s .725s infinite;
+ animation: moveGradient 15s infinite, fiveMove 3.5s .725s infinite;
+}
+.wrapper .box-wrap .box.six {
+ -webkit-animation: moveGradient 15s infinite, sixMove 3.5s .875s infinite;
+ animation: moveGradient 15s infinite, sixMove 3.5s .875s infinite;
+}
+
+@-webkit-keyframes moveGradient {
+ to {
+ background-position: 100% 50%;
+ }
+}
+
+@keyframes moveGradient {
+ to {
+ background-position: 100% 50%;
+ }
+}
+@-webkit-keyframes oneMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@keyframes oneMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@-webkit-keyframes twoMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@keyframes twoMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@-webkit-keyframes threeMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@keyframes threeMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(0% 70% 70% 0 round 5%);
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(0% 35% 70% round 5%);
+ clip-path: inset(0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(35% 70% 35% 0 round 5%);
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@-webkit-keyframes fourMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@keyframes fourMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@-webkit-keyframes fiveMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@keyframes fiveMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@-webkit-keyframes sixMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+@keyframes sixMove {
+ 0% {
+ visibility: visible;
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 14.2857% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 28.5714% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 42.8571% {
+ -webkit-clip-path: inset(70% 0 0 70% round 5%);
+ clip-path: inset(70% 0 0 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 57.1428% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ -webkit-clip-path: inset(35% 0% 35% 70% round 5%);
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 85.7142% {
+ -webkit-clip-path: inset(35% round 5%);
+ clip-path: inset(35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 100% {
+ -webkit-clip-path: inset(70% 35% 0% 35% round 5%);
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ -webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
diff --git a/22-loader-with-pure-css/index.html b/22-loader-with-pure-css/index.html
new file mode 100644
index 00000000..d0b70fd1
--- /dev/null
+++ b/22-loader-with-pure-css/index.html
@@ -0,0 +1,35 @@
+
+
+
+
+ #22 - Loader with pure CSS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/22-loader-with-pure-css/license.md b/22-loader-with-pure-css/license.md
new file mode 100644
index 00000000..1f95acf6
--- /dev/null
+++ b/22-loader-with-pure-css/license.md
@@ -0,0 +1,10 @@
+
+
diff --git a/22-loader-with-pure-css/scss/style.scss b/22-loader-with-pure-css/scss/style.scss
new file mode 100644
index 00000000..cb79ddc6
--- /dev/null
+++ b/22-loader-with-pure-css/scss/style.scss
@@ -0,0 +1,355 @@
+$w-size: 200px;
+$w-margin: -$w-size/2;
+$b-size: 70%; //This is % based on $w-size. Use any value you want (that makes sense) and any unit that you would like (test it)
+$box-wrapper-width: $b-size;
+$box-wrapper-height: $b-size;
+$box-wrapper-margin: calc((100% - #{$box-wrapper-height})/2) calc((100% - #{$box-wrapper-width})/2);
+
+//clip-path: inset() doesn't work on firefox and IE, if anyone feels like making it work with SVG clipping, please drop me a link in comments, would like to see it. :)
+
+*,
+*:before,
+*:after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+
+.wrapper {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ margin: $w-margin;
+ width: $w-size;
+ height: $w-size;
+ background-color: transparent;
+ border: none;
+ -webkit-user-select: none;
+
+ .box-wrap {
+ width: $box-wrapper-width;
+ height: $box-wrapper-height;
+ margin: $box-wrapper-margin;
+ position: relative;
+ transform: rotate(-45deg);
+
+ .box {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ background: rgba(135, 0, 0, .6);
+ background: linear-gradient(to right, #141562, #486FBC, #EAB5A1, #8DD6FF, #4973C9, #D07CA7, #F4915E, #F5919E, #B46F89, #141562, #486FBC);
+ background-position: 0% 50%;
+ background-size: 1000% 1000%;
+ visibility: hidden;
+
+ &.one {
+ animation:
+ moveGradient 15s infinite,
+ oneMove 3.5s infinite;
+ }
+
+ &.two {
+ animation:
+ moveGradient 15s infinite,
+ twoMove 3.5s .15s infinite;
+ }
+
+ &.three {
+ animation:
+ moveGradient 15s infinite,
+ threeMove 3.5s .3s infinite;
+ }
+
+ &.four {
+ animation:
+ moveGradient 15s infinite,
+ fourMove 3.5s .575s infinite;
+ }
+
+ &.five {
+ animation:
+ moveGradient 15s infinite,
+ fiveMove 3.5s .725s infinite;
+ }
+
+ &.six {
+ animation:
+ moveGradient 15s infinite,
+ sixMove 3.5s .875s infinite;
+ }
+ }
+ }
+}
+
+@keyframes moveGradient {
+
+ to {
+ background-position: 100% 50%
+ }
+}
+
+@keyframes oneMove {
+
+ 0% {
+ visibility: visible;
+ clip-path: inset(0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 14.2857% {
+ clip-path: inset(0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 28.5714% {
+ clip-path: inset(35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 42.8571% {
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 57.1428% {
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 71.4285% {
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 85.7142% {
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 100% {
+ clip-path: inset(0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+
+@keyframes twoMove {
+
+ 0% {
+ visibility: visible;
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 14.2857% {
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 28.5714% {
+ clip-path: inset(0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 42.8571% {
+ clip-path: inset(0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 57.1428% {
+ clip-path: inset(35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 71.4285% {
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 85.7142% {
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 100% {
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+
+@keyframes threeMove {
+
+ 0% {
+ visibility: visible;
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 14.2857% {
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 28.5714% {
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 42.8571% {
+ clip-path: inset(0% 70% 70% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 57.1428% {
+ clip-path: inset(0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ clip-path: inset(0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 85.7142% {
+ clip-path: inset(35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 100% {
+ clip-path: inset(35% 70% 35% 0 round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+
+@keyframes fourMove {
+
+ 0% {
+ visibility: visible;
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 14.2857% {
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 28.5714% {
+ clip-path: inset(35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 42.8571% {
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 57.1428% {
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+ 71.4285% {
+ clip-path: inset(70% 0 0 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 85.7142% {
+ clip-path: inset(70% 0 0 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 100% {
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+
+@keyframes fiveMove {
+
+ 0% {
+ visibility: visible;
+ clip-path: inset(70% 0 0 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 14.2857% {
+ clip-path: inset(70% 0 0 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 28.5714% {
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 42.8571% {
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 57.1428% {
+ clip-path: inset(35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 71.4285% {
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 85.7142% {
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 100% {
+ clip-path: inset(70% 0 0 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
+
+@keyframes sixMove {
+
+ 0% {
+ visibility: visible;
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 14.2857% {
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 28.5714% {
+ clip-path: inset(70% 0 0 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 42.8571% {
+ clip-path: inset(70% 0 0 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 57.1428% {
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 71.4285% {
+ clip-path: inset(35% 0% 35% 70% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 85.7142% {
+ clip-path: inset(35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+
+ 100% {
+ clip-path: inset(70% 35% 0% 35% round 5%);
+ animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
+ }
+}
\ No newline at end of file
diff --git a/3d-device-sketch/README.md b/3d-device-sketch/README.md
new file mode 100644
index 00000000..59e9efad
--- /dev/null
+++ b/3d-device-sketch/README.md
@@ -0,0 +1,4 @@
+A Pen created at CodePen.io. You can find this one at http://codepen.io/iulianghel/pen/ORXaQb.
+
+ 3d fun with drawing a smarphone sketch.
+Inspired by this dribbble: https://dribbble.com/shots/2944774-Mobile-App-Login-form
\ No newline at end of file
diff --git a/3d-device-sketch/css/style.css b/3d-device-sketch/css/style.css
new file mode 100644
index 00000000..82bf5e43
--- /dev/null
+++ b/3d-device-sketch/css/style.css
@@ -0,0 +1,461 @@
+@-webkit-keyframes phone-shape {
+ 0% {
+ border-top-color: transparent;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: transparent;
+ }
+ 25% {
+ border-top-color: transparent;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: rgba(255, 255, 255, 0.95);
+ }
+ 50% {
+ border-top-color: rgba(255, 255, 255, 0.95);
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: rgba(255, 255, 255, 0.95);
+ }
+ 75% {
+ border-top-color: rgba(255, 255, 255, 0.95);
+ border-right-color: rgba(255, 255, 255, 0.95);
+ border-bottom-color: transparent;
+ border-left-color: rgba(255, 255, 255, 0.95);
+ }
+ 100% {
+ border-top-color: rgba(255, 255, 255, 0.95);
+ border-right-color: rgba(255, 255, 255, 0.95);
+ border-bottom-color: rgba(255, 255, 255, 0.95);
+ border-left-color: rgba(255, 255, 255, 0.95);
+ }
+}
+@keyframes phone-shape {
+ 0% {
+ border-top-color: transparent;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: transparent;
+ }
+ 25% {
+ border-top-color: transparent;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: rgba(255, 255, 255, 0.95);
+ }
+ 50% {
+ border-top-color: rgba(255, 255, 255, 0.95);
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: rgba(255, 255, 255, 0.95);
+ }
+ 75% {
+ border-top-color: rgba(255, 255, 255, 0.95);
+ border-right-color: rgba(255, 255, 255, 0.95);
+ border-bottom-color: transparent;
+ border-left-color: rgba(255, 255, 255, 0.95);
+ }
+ 100% {
+ border-top-color: rgba(255, 255, 255, 0.95);
+ border-right-color: rgba(255, 255, 255, 0.95);
+ border-bottom-color: rgba(255, 255, 255, 0.95);
+ border-left-color: rgba(255, 255, 255, 0.95);
+ }
+}
+@-webkit-keyframes stroke-vertical {
+ 0% {
+ height: 0%;
+ opacity: 0;
+ }
+ 100% {
+ height: calc(100% + 4px );
+ opacity: 1;
+ }
+}
+@keyframes stroke-vertical {
+ 0% {
+ height: 0%;
+ opacity: 0;
+ }
+ 100% {
+ height: calc(100% + 4px );
+ opacity: 1;
+ }
+}
+@-webkit-keyframes stroke-horizontal {
+ 0% {
+ width: 0%;
+ opacity: 0;
+ }
+ 100% {
+ width: calc(100% + 4px );
+ opacity: 1;
+ }
+}
+@keyframes stroke-horizontal {
+ 0% {
+ width: 0%;
+ opacity: 0;
+ }
+ 100% {
+ width: calc(100% + 4px );
+ opacity: 1;
+ }
+}
+@-webkit-keyframes fade-in {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+@keyframes fade-in {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+@-webkit-keyframes phone-rotate {
+ 0% {
+ -webkit-transform: rotateX(0) rotateY(0) rotateZ(0);
+ transform: rotateX(0) rotateY(0) rotateZ(0);
+ }
+ 100% {
+ -webkit-transform: rotateX(50deg) rotateY(0) rotateZ(-42deg);
+ transform: rotateX(50deg) rotateY(0) rotateZ(-42deg);
+ }
+}
+@keyframes phone-rotate {
+ 0% {
+ -webkit-transform: rotateX(0) rotateY(0) rotateZ(0);
+ transform: rotateX(0) rotateY(0) rotateZ(0);
+ }
+ 100% {
+ -webkit-transform: rotateX(50deg) rotateY(0) rotateZ(-42deg);
+ transform: rotateX(50deg) rotateY(0) rotateZ(-42deg);
+ }
+}
+@-webkit-keyframes show-display {
+ 0% {
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 50px 0 rgba(0, 0, 0, 0);
+ }
+ 100% {
+ -webkit-transform: translateZ(75px);
+ transform: translateZ(75px);
+ box-shadow: -50px 40px 50px 0 rgba(0, 0, 0, 0.4);
+ }
+}
+@keyframes show-display {
+ 0% {
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 50px 0 rgba(0, 0, 0, 0);
+ }
+ 100% {
+ -webkit-transform: translateZ(75px);
+ transform: translateZ(75px);
+ box-shadow: -50px 40px 50px 0 rgba(0, 0, 0, 0.4);
+ }
+}
+div {
+ box-sizing: border-box;
+}
+iframe,
+div,
+:before,
+:after {
+ -webkit-transition: all 3s;
+ transition: all 3s;
+ -webkit-animation-fill-mode: forwards!important;
+ animation-fill-mode: forwards!important;
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+}
+body {
+ overflow: hidden;
+ background: -webkit-radial-gradient(#00c2ea, #0058a7);
+ background: radial-gradient(#00c2ea, #0058a7);
+ height: 100vh;
+}
+body .container {
+ -webkit-perspective: 2400px;
+ perspective: 2400px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100vw;
+ height: 100vh;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+@media (max-width: 979px) {
+ body .container {
+ -webkit-transform: scale(0.8);
+ transform: scale(0.8);
+ }
+}
+@media (max-width: 767px) {
+ body .container {
+ -webkit-transform: scale(0.6);
+ transform: scale(0.6);
+ }
+}
+@media (max-width: 479px) {
+ body .container {
+ -webkit-transform: scale(0.45);
+ transform: scale(0.45);
+ }
+}
+body .container .phone-shape {
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+ -webkit-transform: rotateX(0) rotateY(0) rotateZ(0);
+ transform: rotateX(0) rotateY(0) rotateZ(0);
+ position: relative;
+ border: 2px solid rgba(255, 255, 255, 0.95);
+ border-color: transparent;
+ border-radius: 56px;
+ width: 428px;
+ height: 869px;
+ margin: 0 auto;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-transform: rotateX(50deg) rotateY(0) rotateZ(-45deg);
+ transform: rotateX(50deg) rotateY(0) rotateZ(-45deg);
+ -webkit-animation: 0.3s phone-shape 4.2s, 8.4s phone-rotate;
+ animation: 0.3s phone-shape 4.2s, 8.4s phone-rotate;
+}
+body .container .phone-shape .phone-display {
+ z-index: 99;
+ position: absolute;
+ border: 2px solid rgba(255, 255, 255, 0.95);
+ border-color: transparent;
+ top: 100px;
+ bottom: 100px;
+ right: 25px;
+ left: 25px;
+ padding: 0;
+ -webkit-animation: 0.3s phone-shape 4.8s;
+ animation: 0.3s phone-shape 4.8s;
+}
+body .container .phone-shape .phone-display .iframe-container {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0.001;
+ -webkit-animation: 1.8s fade-in 6.6s, 1.8s show-display 7.2s;
+ animation: 1.8s fade-in 6.6s, 1.8s show-display 7.2s;
+}
+body .container .phone-shape .phone-display .iframe-container iframe {
+ position: absolute;
+ border: none;
+ background: transparent;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ display: block;
+ pointer-events: all;
+ margin: 0;
+ padding: 0;
+ -webkit-transform: translateZ(1px);
+ transform: translateZ(1px);
+ box-shadow: 0px 0px 50px 0 rgba(0, 0, 0, 0);
+}
+body .container .phone-shape .phone-display .iframe-container:before {
+ content: " ";
+ font-size: 0;
+ position: absolute;
+ top: 0;
+ left: -4px;
+ width: 4px;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.8);
+ -webkit-transform: rotateY(90deg) translateX(2px) translateZ(2px);
+ transform: rotateY(90deg) translateX(2px) translateZ(2px);
+}
+body .container .phone-shape .phone-display .iframe-container:after {
+ content: " ";
+ font-size: 0;
+ position: absolute;
+ left: 0;
+ bottom: -4px;
+ height: 4px;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.8);
+ -webkit-transform: rotateX(90deg) translateY(-2px) translateX(0) translateZ(2px);
+ transform: rotateX(90deg) translateY(-2px) translateX(0) translateZ(2px);
+}
+body .container .phone-shape .phone-hole {
+ position: absolute;
+ width: 14px;
+ height: 14px;
+ left: 50%;
+ margin-left: -7px;
+ border: 2px solid rgba(255, 255, 255, 0.95);
+ border-color: transparent;
+ border-radius: 50%;
+ top: 46px;
+ -webkit-animation: 0.3s phone-shape 5.4s;
+ animation: 0.3s phone-shape 5.4s;
+}
+body .container .phone-shape .phone-button {
+ position: absolute;
+ width: 60px;
+ height: 60px;
+ left: 50%;
+ margin-left: -30px;
+ border: 2px solid rgba(255, 255, 255, 0.95);
+ border-color: transparent;
+ border-radius: 50%;
+ bottom: 24px;
+ -webkit-animation: 0.3s phone-shape 6s;
+ animation: 0.3s phone-shape 6s;
+}
+body .container .graphic-guides {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+}
+body .container .graphic-guides .top,
+body .container .graphic-guides .right,
+body .container .graphic-guides .bottom,
+body .container .graphic-guides .center,
+body .container .graphic-guides .left {
+ position: absolute;
+ background: rgba(255, 255, 255, 0.4);
+ opacity: 0;
+}
+body .container .graphic-guides .top {
+ -webkit-animation: 0.6s stroke-horizontal 0.6s;
+ animation: 0.6s stroke-horizontal 0.6s;
+ height: 2px;
+ left: -2px;
+ top: -2px;
+}
+body .container .graphic-guides .right {
+ height: calc(100% + 4px );
+ -webkit-animation: 0.6s stroke-vertical 3s;
+ animation: 0.6s stroke-vertical 3s;
+ width: 2px;
+ right: -2px;
+ top: -2px;
+}
+body .container .graphic-guides .bottom {
+ -webkit-animation: 0.6s stroke-horizontal 1.2s;
+ animation: 0.6s stroke-horizontal 1.2s;
+ height: 2px;
+ left: -2px;
+ bottom: -2px;
+}
+body .container .graphic-guides .left {
+ height: calc(100% + 4px );
+ -webkit-animation: 0.6s stroke-vertical 1.8s;
+ animation: 0.6s stroke-vertical 1.8s;
+ width: 2px;
+ left: -2px;
+ top: -2px;
+}
+body .container .graphic-guides .center {
+ -webkit-animation: 0.6s stroke-vertical 2.4s;
+ animation: 0.6s stroke-vertical 2.4s;
+ width: 2px;
+ left: 50%;
+ margin-left: -1px;
+ top: -2px;
+}
+body .container .graphic-guides .top:before,
+body .container .graphic-guides .bottom:before {
+ content: " ";
+ font-size: 0;
+ position: absolute;
+ top: 0;
+ left: -60px;
+ width: 60px;
+ height: inherit;
+ background: -webkit-linear-gradient(left, transparent 0%, rgba(255, 255, 255, 0.4) 100%);
+ background: linear-gradient(to right, transparent 0%, rgba(255, 255, 255, 0.4) 100%);
+}
+body .container .graphic-guides .top:after,
+body .container .graphic-guides .bottom:after {
+ content: " ";
+ font-size: 0;
+ position: absolute;
+ top: 0;
+ right: -60px;
+ width: 60px;
+ height: inherit;
+ background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.4) 0%, transparent 100%);
+ background: linear-gradient(to right, rgba(255, 255, 255, 0.4) 0%, transparent 100%);
+}
+body .container .graphic-guides .right:before,
+body .container .graphic-guides .center:before,
+body .container .graphic-guides .left:before {
+ content: " ";
+ font-size: 0;
+ position: absolute;
+ right: 0;
+ top: -60px;
+ height: 60px;
+ width: inherit;
+ background: -webkit-linear-gradient(top, transparent 0%, rgba(255, 255, 255, 0.4) 100%);
+ background: linear-gradient(to bottom, transparent 0%, rgba(255, 255, 255, 0.4) 100%);
+}
+body .container .graphic-guides .right:after,
+body .container .graphic-guides .center:after,
+body .container .graphic-guides .left:after {
+ content: " ";
+ font-size: 0;
+ position: absolute;
+ right: 0;
+ bottom: -60px;
+ height: 60px;
+ width: inherit;
+ background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.4) 0%, transparent 100%);
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.4) 0%, transparent 100%);
+}
+body.flat .container .phone-shape {
+ -webkit-transform: rotateX(0) rotateY(0) rotateZ(0) !important;
+ transform: rotateX(0) rotateY(0) rotateZ(0) !important;
+}
+body .controls {
+ position: absolute;
+ top: 20px;
+ right: 20px;
+}
+body .controls span {
+ cursor: default;
+ font-family: sans-serif;
+ padding: 8px 20px;
+ border-radius: 2px;
+ background: rgba(255, 255, 255, 0.6);
+ color: #333;
+}
+body.flat .controls span {
+ background: #fff;
+}
diff --git a/3d-device-sketch/index.html b/3d-device-sketch/index.html
new file mode 100644
index 00000000..01dd3aff
--- /dev/null
+++ b/3d-device-sketch/index.html
@@ -0,0 +1,51 @@
+
+
+
+
+ 3d device sketch
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/3d-device-sketch/less/style.less b/3d-device-sketch/less/style.less
new file mode 100644
index 00000000..2d92e4e8
--- /dev/null
+++ b/3d-device-sketch/less/style.less
@@ -0,0 +1,363 @@
+// autoprefixer: Android 2.3;Android >= 4;Chrome >= 20;Firefox >= 24;iOS >= 6;Opera >= 12;Safari >= 6
+//
+// style variables
+@sketchColor: fade(white, 95%);
+@sketchWidth: 2px;
+@sketchStyle: solid;
+@sketchBorder: @sketchWidth @sketchStyle @sketchColor;
+@holeSize: 14px;
+@buttonSize: 60px;
+@sketchFadeLength: 60px;
+@guidesColor: fade(@sketchColor, 40%);
+@displayThickness: 4px;
+// time variables
+@step: .6s;
+// Animations
+@keyframes phone-shape {
+ 0% {
+ border-top-color: transparent;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: transparent;
+ }
+ 25% {
+ border-top-color: transparent;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: @sketchColor;
+ }
+ 50% {
+ border-top-color: @sketchColor;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: @sketchColor;
+ }
+ 75% {
+ border-top-color: @sketchColor;
+ border-right-color: @sketchColor;
+ border-bottom-color: transparent;
+ border-left-color: @sketchColor;
+ }
+ 100% {
+ border-top-color: @sketchColor;
+ border-right-color: @sketchColor;
+ border-bottom-color: @sketchColor;
+ border-left-color: @sketchColor;
+ }
+}
+
+@keyframes stroke-vertical {
+ 0% {
+ height: 0%;
+ opacity: 0;
+ }
+ 100% {
+ height: ~"calc(100% + " @sketchWidth*2 ~")";
+ opacity: 1;
+ }
+}
+
+@keyframes stroke-horizontal {
+ 0% {
+ width: 0%;
+ opacity: 0;
+ }
+ 100% {
+ width: ~"calc(100% + " @sketchWidth*2 ~")";
+ opacity: 1;
+ }
+}
+
+@keyframes fade-in {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes phone-rotate {
+ 0% {
+ transform: rotateX(0) rotateY(0) rotateZ(0);
+ }
+ 100% {
+ transform: rotateX(50deg) rotateY(0) rotateZ(-42deg);
+ }
+}
+
+@keyframes show-display {
+ 0% {
+ transform: translateZ(0);
+ box-shadow: 0 0 50px 0 fade(black, 0%);
+ }
+ 100% {
+ transform: translateZ(75px);
+ box-shadow: -50px 40px 50px 0 fade(black, 40%);
+ }
+}
+
+// Animations end
+.gradientHorizontal (@startColor, @endColor) {
+ background: linear-gradient(to right, @startColor 0%, @endColor 100%);
+}
+
+.gradientVertical (@startColor, @endColor) {
+ background: linear-gradient(to bottom, @startColor 0%, @endColor 100%);
+}
+
+div {
+ box-sizing: border-box;
+}
+
+iframe,
+div,
+:before,
+:after {
+ transition: all 3s;
+ animation-fill-mode: forwards!important;
+ transform-style: preserve-3d;
+}
+
+body {
+ overflow: hidden;
+ background: radial-gradient(rgb(0, 194, 234), rgb(0, 88, 167));
+ height: 100vh;
+ .container {
+ perspective: 2400px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100vw;
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ @media (max-width: 979px) {
+ transform: scale(.8);
+ }
+ @media (max-width: 767px) {
+ transform: scale(.6);
+ }
+ @media (max-width: 479px) {
+ transform: scale(.45);
+ }
+ .phone-shape {
+ transform-style: preserve-3d;
+ transform: rotateX(0) rotateY(0) rotateZ(0);
+ position: relative;
+ border: @sketchBorder;
+ border-color: transparent;
+ border-radius: 56px;
+ width: 428px;
+ height: 869px;
+ margin: 0 auto;
+ flex-shrink: 0;
+ flex-grow: 0;
+ transform: rotateX(50deg) rotateY(0) rotateZ(-45deg);
+ animation: @step/2 phone-shape @step*7, @step*14 phone-rotate;
+ .phone-display {
+ z-index: 99;
+ position: absolute;
+ border: @sketchBorder;
+ border-color: transparent;
+ top: 100px;
+ bottom: 100px;
+ right: 25px;
+ left: 25px;
+ padding: 0;
+ animation: @step/2 phone-shape @step*8;
+ .iframe-container {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0.001;
+ animation: @step*3 fade-in @step*11, @step*3 show-display @step*12;
+ iframe {
+ position: absolute;
+ border: none;
+ background: transparent;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ display: block;
+ pointer-events: all;
+ margin: 0;
+ padding: 0;
+ transform: translateZ(1px);
+ box-shadow: 0px 0px 50px 0 fade(black, 0%);
+ }
+ &:before {
+ content: " ";
+ font-size: 0;
+ position: absolute;
+ top: 0;
+ left: -@displayThickness;
+ width: @displayThickness;
+ height: 100%;
+ background: fade(black, 80%);
+ transform: rotateY(90deg) translateX(@displayThickness/2) translateZ(@displayThickness/2);
+ }
+ &:after {
+ content: " ";
+ font-size: 0;
+ position: absolute;
+ left: 0;
+ bottom: -@displayThickness;
+ height: @displayThickness;
+ width: 100%;
+ background: fade(black, 80%);
+ transform: rotateX(90deg) translateY(-@displayThickness/2) translateX(0) translateZ(@displayThickness/2);
+ }
+ }
+ }
+ .circles(@size) {
+ position: absolute;
+ width: @size;
+ height: @size;
+ left: 50%;
+ margin-left: -@size/2;
+ border: @sketchBorder;
+ border-color: transparent;
+ border-radius: 50%;
+ }
+ .phone-hole {
+ .circles(@holeSize);
+ top: 46px;
+ animation: @step/2 phone-shape @step*9;
+ }
+ .phone-button {
+ .circles(@buttonSize);
+ bottom: 24px;
+ animation: @step/2 phone-shape @step*10;
+ }
+ }
+ .graphic-guides {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ .top,
+ .right,
+ .bottom,
+ .center,
+ .left {
+ position: absolute;
+ background: @guidesColor;
+ opacity: 0;
+ }
+ .guideEnds() {
+ content: " ";
+ font-size: 0;
+ position: absolute;
+ }
+ .top {
+ animation: @step stroke-horizontal @step;
+ height: @sketchWidth;
+ left: -@sketchWidth;
+ top: -@sketchWidth;
+ }
+ .right {
+ height: ~"calc(100% + " @sketchWidth*2 ~")";
+ animation: @step stroke-vertical @step*5;
+ width: @sketchWidth;
+ right: -@sketchWidth;
+ top: -@sketchWidth;
+ }
+ .bottom {
+ animation: @step stroke-horizontal @step*2;
+ height: @sketchWidth;
+ left: -@sketchWidth;
+ bottom: -@sketchWidth;
+ }
+ .left {
+ height: ~"calc(100% + " @sketchWidth*2 ~")";
+ animation: @step stroke-vertical @step*3;
+ width: @sketchWidth;
+ left: -@sketchWidth;
+ top: -@sketchWidth;
+ }
+ .center {
+ animation: @step stroke-vertical @step*4;
+ width: @sketchWidth;
+ left: 50%;
+ margin-left: -@sketchWidth/2;
+ top: -@sketchWidth;
+ }
+ .top,
+ .bottom {
+ &:before {
+ .guideEnds;
+ top: 0;
+ left: -@sketchFadeLength;
+ width: @sketchFadeLength;
+ height: inherit;
+ .gradientHorizontal(transparent, @guidesColor);
+ }
+ &:after {
+ .guideEnds;
+ top: 0;
+ right: -@sketchFadeLength;
+ width: @sketchFadeLength;
+ height: inherit;
+ .gradientHorizontal(@guidesColor, transparent);
+ }
+ }
+ .right,
+ .center,
+ .left {
+ &:before {
+ .guideEnds;
+ right: 0;
+ top: -@sketchFadeLength;
+ height: @sketchFadeLength;
+ width: inherit;
+ .gradientVertical(transparent, @guidesColor);
+ }
+ &:after {
+ .guideEnds;
+ right: 0;
+ bottom: -@sketchFadeLength;
+ height: @sketchFadeLength;
+ width: inherit;
+ .gradientVertical(@guidesColor, transparent);
+ }
+ }
+ }
+ }
+ &.flat {
+ .container {
+ .phone-shape {
+ transform: rotateX(0) rotateY(0) rotateZ(0)!important;
+ .phone-display {
+ iframe {}
+ }
+ }
+ }
+ }
+ .controls {
+ position: absolute;
+ top: 20px;
+ right: 20px;
+ span {
+ cursor: default;
+ font-family: sans-serif;
+ padding: 8px 20px;
+ border-radius: 2px;
+ background: fade(white, 60%);
+ color: #333;
+ }
+ }
+ &.flat {
+ .container {}
+ .controls {
+ span {
+ background: #fff;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/3d-device-sketch/license.md b/3d-device-sketch/license.md
new file mode 100644
index 00000000..03c0b6a4
--- /dev/null
+++ b/3d-device-sketch/license.md
@@ -0,0 +1,10 @@
+
+
diff --git a/3d-portfolio-template-master/README.md b/3d-portfolio-template-master/README.md
new file mode 100755
index 00000000..a1fa70dc
--- /dev/null
+++ b/3d-portfolio-template-master/README.md
@@ -0,0 +1,12 @@
+3D Portfolio Template
+=========
+
+A portfolio template, with a filter that triggers 3D rotating sections.
+
+[Article on CodyHouse](http://codyhouse.co/gem/3d-portfolio-template/)
+
+[Demo](http://codyhouse.co/demo/3d-portfolio-template/index.html)
+
+[Terms](http://codyhouse.co/terms/)
+
+Images: [Unsplash](https://unsplash.com/)
diff --git a/3d-portfolio-template-master/css/reset.css b/3d-portfolio-template-master/css/reset.css
new file mode 100755
index 00000000..bae9a91e
--- /dev/null
+++ b/3d-portfolio-template-master/css/reset.css
@@ -0,0 +1,48 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+
+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;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section, main {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
\ No newline at end of file
diff --git a/3d-portfolio-template-master/css/style.css b/3d-portfolio-template-master/css/style.css
new file mode 100755
index 00000000..c456cd18
--- /dev/null
+++ b/3d-portfolio-template-master/css/style.css
@@ -0,0 +1,622 @@
+/* --------------------------------
+
+Primary style
+
+-------------------------------- */
+*, *::after, *::before {
+ box-sizing: border-box;
+}
+
+html {
+ font-size: 62.5%;
+}
+
+body {
+ font-size: 1.6rem;
+ color: #edeade;
+ background-color: #43202f;
+ font-family: sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+a {
+ color: #72a987;
+ text-decoration: none;
+}
+
+/* --------------------------------
+
+Portfolio Navigation
+
+-------------------------------- */
+.cd-3d-portfolio-navigation {
+ width: 100%;
+ height: 25vh;
+ text-align: center;
+ display: table;
+}
+.cd-3d-portfolio-navigation .cd-wrapper {
+ display: table-cell;
+ width: 100%;
+ vertical-align: middle;
+}
+.cd-3d-portfolio-navigation h1 {
+ font-size: 2rem;
+ margin-bottom: .6em;
+ font-family: "Lora", serif;
+ font-weight: bold;
+}
+.cd-3d-portfolio-navigation li {
+ display: inline-block;
+ margin: 0 .3em;
+}
+.cd-3d-portfolio-navigation li a {
+ display: inline-block;
+ color: #edeade;
+ border: 2px solid #391b28;
+ padding: .6em;
+ -webkit-transition: all .2s;
+ transition: all .2s;
+}
+.cd-3d-portfolio-navigation li a:hover {
+ border-color: #72a987;
+}
+.cd-3d-portfolio-navigation li .selected {
+ color: #edeade;
+ background: #72a987;
+ border-color: #72a987;
+ cursor: default;
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
+}
+@media only screen and (min-width: 768px) {
+ .cd-3d-portfolio-navigation h1 {
+ font-size: 3.2rem;
+ }
+}
+
+/* --------------------------------
+
+Portfolio Projects
+
+-------------------------------- */
+.cd-3d-portfolio {
+ overflow: hidden;
+}
+.cd-3d-portfolio .close-project {
+ /* this is the 'X' icon - visible when a project has been selected */
+ position: absolute;
+ z-index: 2;
+ top: 24px;
+ right: 5%;
+ /* replace text with image */
+ color: transparent;
+ white-space: nowrap;
+ text-indent: 100%;
+ overflow: hidden;
+ height: 48px;
+ width: 48px;
+ border-radius: 50%;
+ background: rgba(0, 0, 0, 0.6);
+ -webkit-transform: scale(0);
+ -ms-transform: scale(0);
+ transform: scale(0);
+ -webkit-transition: -webkit-transform .3s 0s;
+ transition: -webkit-transform .3s 0s;
+ transition: transform .3s 0s;
+ transition: transform .3s 0s, -webkit-transform .3s 0s;
+}
+.cd-3d-portfolio .close-project:hover {
+ background: black;
+}
+.cd-3d-portfolio .close-project::after, .cd-3d-portfolio .close-project::before {
+ /* the 'X' lines */
+ content: '';
+ position: absolute;
+ width: 18px;
+ height: 2px;
+ top: 50%;
+ left: 50%;
+ background: #edeade;
+}
+.cd-3d-portfolio .close-project::before {
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg);
+ -ms-transform: translateX(-50%) translateY(-50%) rotate(45deg);
+ transform: translateX(-50%) translateY(-50%) rotate(45deg);
+}
+.cd-3d-portfolio .close-project::after {
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(-45deg);
+ -ms-transform: translateX(-50%) translateY(-50%) rotate(-45deg);
+ transform: translateX(-50%) translateY(-50%) rotate(-45deg);
+}
+.cd-3d-portfolio .project-is-open .open .close-project {
+ /* show the 'X' icon when a project has been selected */
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ -webkit-transition-delay: 0.6s;
+ transition-delay: 0.6s;
+ -webkit-transition: background 0.3s, -webkit-transform 0.3s 0.6s;
+ transition: background 0.3s, -webkit-transform 0.3s 0.6s;
+ transition: transform 0.3s 0.6s, background 0.3s;
+ transition: transform 0.3s 0.6s, background 0.3s, -webkit-transform 0.3s 0.6s;
+}
+
+.cd-3d-portfolio .projects {
+ /* used to render its children in a 3D space - add perspective */
+ -webkit-perspective: 1000px;
+ perspective: 1000px;
+}
+.cd-3d-portfolio .projects .row {
+ height: 25vh;
+ position: relative;
+ z-index: 1;
+ /* position its children in a 3d space */
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+ /* Force hardware acceleration */
+ will-change: transform;
+ -webkit-transform: translateZ(-50vw);
+ transform: translateZ(-50vw);
+ -webkit-transition: -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ pointer-events: none;
+}
+.cd-3d-portfolio .projects .row:nth-of-type(2) {
+ -webkit-transition-delay: .1s;
+ transition-delay: .1s;
+}
+.cd-3d-portfolio .projects .row:nth-of-type(3) {
+ -webkit-transition-delay: .2s;
+ transition-delay: .2s;
+}
+.cd-3d-portfolio .projects .row::after {
+ /* this is used to create the row bottom face */
+ content: '';
+ position: absolute;
+ z-index: 1;
+ bottom: 0;
+ left: 0;
+ height: 100vw;
+ width: 100%;
+ background: #0f070b;
+ -webkit-transform: translateZ(50vw) rotateX(90deg);
+ transform: translateZ(50vw) rotateX(90deg);
+ -webkit-transform-origin: bottom center;
+ -ms-transform-origin: bottom center;
+ transform-origin: bottom center;
+ -webkit-transition: visibility 0s 0.6s;
+ transition: visibility 0s 0.6s;
+}
+.cd-3d-portfolio .projects .row:last-of-type::after {
+ /* use its ::after element as top face (rather than bottom face) */
+ top: 0;
+ bottom: auto;
+ -webkit-transform: translateZ(50vw) rotateX(-90deg);
+ transform: translateZ(50vw) rotateX(-90deg);
+ -webkit-transform-origin: top center;
+ -ms-transform-origin: top center;
+ transform-origin: top center;
+}
+.cd-3d-portfolio .projects:not(.project-has-transition) .row:nth-of-type(2) {
+ /* increase z-index of the second row - this way the back faces of the first and thirdv rows won't be visible (only of no project has been selected) */
+ z-index: 2;
+}
+.no-preserve3d .cd-3d-portfolio .projects .row {
+ /* fallback for browsers that don't support the preser3d property */
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.cd-3d-portfolio .projects .row > li {
+ /* this is the single project */
+ position: absolute;
+ z-index: 1;
+ height: 100%;
+ width: 100%;
+ -webkit-transform: translateZ(50vw);
+ transform: translateZ(50vw);
+ will-change: transform;
+ overflow: hidden;
+}
+.cd-3d-portfolio .projects .row > li.selected {
+ /* this the project on the visible face of the parallelepiped */
+ pointer-events: auto;
+}
+.cd-3d-portfolio .projects .row > li.front-face {
+ -webkit-transform: translateZ(50vw);
+ transform: translateZ(50vw);
+}
+.cd-3d-portfolio .projects .row > li.right-face {
+ -webkit-transform: rotateY(90deg) translateZ(50vw);
+ transform: rotateY(90deg) translateZ(50vw);
+}
+.cd-3d-portfolio .projects .row > li.left-face {
+ -webkit-transform: rotateY(-90deg) translateZ(50vw);
+ transform: rotateY(-90deg) translateZ(50vw);
+}
+.cd-3d-portfolio .projects .row > li.back-face {
+ -webkit-transform: rotateY(180deg) translateZ(50vw);
+ transform: rotateY(180deg) translateZ(50vw);
+}
+.cd-3d-portfolio .projects .row > li.hidden {
+ opacity: 0;
+ visibility: hidden;
+}
+.no-preserve3d .cd-3d-portfolio .projects .row > li {
+ opacity: 0;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transition: opacity .4s;
+ transition: opacity .4s;
+}
+.no-preserve3d .cd-3d-portfolio .projects .row > li.front-face, .no-preserve3d .cd-3d-portfolio .projects .row > li.right-face, .no-preserve3d .cd-3d-portfolio .projects .row > li.left-face, .no-preserve3d .cd-3d-portfolio .projects .row > li.back-face {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+}
+.no-preserve3d .cd-3d-portfolio .projects .row > li.selected {
+ opacity: 1;
+}
+.cd-3d-portfolio .projects .project-wrapper {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100vh;
+ width: 100%;
+}
+.cd-3d-portfolio .projects .project-image {
+ position: relative;
+ z-index: 2;
+ /* vertically center its content */
+ display: table;
+ width: 100%;
+ height: 25%;
+ cursor: pointer;
+ /* force hardware acceleration */
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ will-change: transform;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-transition: -webkit-transform 0.6s;
+ transition: -webkit-transform 0.6s;
+ transition: transform 0.6s;
+ transition: transform 0.6s, -webkit-transform 0.6s;
+}
+.cd-3d-portfolio .projects .project-image::before, .cd-3d-portfolio .projects .project-image::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+}
+.cd-3d-portfolio .projects .project-image::before {
+ /* this is the project background image */
+ z-index: 1;
+ height: 240%;
+ background-color: #201017;
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-size: cover;
+}
+.cd-3d-portfolio .projects .project-image::after {
+ /* this is the project image cover layer - this is visible only during a rotation of the parallelepiped (while the project is disappearing) */
+ z-index: 3;
+ height: 100%;
+ background: black;
+ opacity: 0;
+ -webkit-transition: opacity .5s;
+ transition: opacity .5s;
+}
+.cd-3d-portfolio .projects .row > li:not(.selected) .project-image::after {
+ opacity: 1;
+}
+.cd-3d-portfolio .projects .row:nth-of-type(2) > li:not(.selected) .project-image::after {
+ -webkit-transition-delay: .1s;
+ transition-delay: .1s;
+}
+.cd-3d-portfolio .projects .row:nth-of-type(3) > li:not(.selected) .project-image::after {
+ -webkit-transition-delay: .2s;
+ transition-delay: .2s;
+}
+.cd-3d-portfolio .projects .row > li.project-1 .project-image::before {
+ /* set project background image */
+ background-image: url(../img/photo-1.jpg);
+}
+.cd-3d-portfolio .projects .row > li.project-2 .project-image::before {
+ background-image: url(../img/photo-2.jpg);
+}
+.cd-3d-portfolio .projects .row > li.project-3 .project-image::before {
+ background-image: url(../img/photo-3.jpg);
+}
+.cd-3d-portfolio .projects .row > li.project-4 .project-image::before {
+ background-image: url(../img/photo-4.jpg);
+}
+.cd-3d-portfolio .projects .row > li.project-5 .project-image::before {
+ background-image: url(../img/photo-5.jpg);
+}
+.cd-3d-portfolio .projects .row > li.project-6 .project-image::before {
+ background-image: url(../img/photo-6.jpg);
+}
+.cd-3d-portfolio .projects .row > li.project-7 .project-image::before {
+ background-image: url(../img/photo-7.jpg);
+}
+.cd-3d-portfolio .projects .row > li.project-8 .project-image::before {
+ background-image: url(../img/photo-8.jpg);
+}
+.cd-3d-portfolio .projects .row > li.project-9 .project-image::before {
+ background-image: url(../img/photo-9.jpg);
+}
+.cd-3d-portfolio .projects .project-title {
+ position: relative;
+ z-index: 2;
+ /* vertically center inside its parent */
+ display: table-cell;
+ vertical-align: middle;
+ text-align: center;
+ /* force hardware acceleration */
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ will-change: transform;
+ -webkit-transition: -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+}
+.cd-3d-portfolio .projects h2 {
+ color: #edeade;
+ font-size: 2.2rem;
+ font-weight: bold;
+ font-family: "Lora", serif;
+}
+.cd-3d-portfolio .projects .project-content {
+ position: absolute;
+ z-index: 1;
+ /* place the content right below the project image */
+ top: 60%;
+ width: 100%;
+ background: white;
+ box-shadow: 0 -5px 0 white;
+}
+.cd-3d-portfolio .projects .project-content > div {
+ opacity: 0;
+ -webkit-transform: translateY(25%);
+ -ms-transform: translateY(25%);
+ transform: translateY(25%);
+ -webkit-transition: all 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: all 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+}
+.cd-3d-portfolio .projects .project-content p {
+ width: 90%;
+ max-width: 800px;
+ margin: 2em auto;
+ line-height: 1.6;
+ color: #694d59;
+}
+.cd-3d-portfolio .projects.project-has-transition .row > li {
+ /* the project-has-transition class is used to add a transition to the tranform property of the single projects - it's added when a project is selected (before opening it) and removed when a project is colsed (when the closing animation is finished) */
+ -webkit-transition: opacity 0s 0.6s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: opacity 0s 0.6s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), opacity 0s 0.6s;
+ transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), opacity 0s 0.6s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+}
+.cd-3d-portfolio .projects.project-has-transition .row > li.selected.open {
+ overflow: visible;
+}
+.cd-3d-portfolio .projects.project-has-transition .row > li:not(.selected) {
+ opacity: 0;
+}
+.cd-3d-portfolio .projects.project-has-transition .row::after {
+ /* hide the bottom/top parallelepiped face when a project is selected */
+ visibility: hidden;
+ -webkit-transition: visibility 0s;
+ transition: visibility 0s;
+}
+.cd-3d-portfolio .projects.project-is-open .row > li {
+ /* the project-is-open class is used when a project is selected - it's added when a project is selected (before opening it) and removed when a project is closed (before the closing animation begins) */
+ -webkit-transition: opacity 0s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: opacity 0s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+ transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), opacity 0s;
+ transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), opacity 0s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1);
+}
+.cd-3d-portfolio .projects.project-is-open .row > li.selected.open .project-wrapper {
+ /* selected project on the visible face of the parallelepiped */
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+.cd-3d-portfolio .projects.project-is-open .row > li.selected .project-image {
+ /* projects on the visible face of the parallelepiped */
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+}
+.cd-3d-portfolio .projects.project-is-open .row > li.selected.open .project-image {
+ cursor: auto;
+}
+.cd-3d-portfolio .projects.project-is-open .row > li.selected.open .project-title {
+ -webkit-transform: translateY(70%);
+ -ms-transform: translateY(70%);
+ transform: translateY(70%);
+}
+.cd-3d-portfolio .projects.project-is-open .row > li.selected.open .project-content > div {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+}
+.cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected.open.front-face {
+ /* if the project selected is inside the first row */
+ -webkit-transform: translateZ(50vw) translateY(-100%);
+ transform: translateZ(50vw) translateY(-100%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected.open.right-face {
+ -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(-100%);
+ transform: rotateY(90deg) translateZ(50vw) translateY(-100%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected.open.left-face {
+ -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(-100%);
+ transform: rotateY(-90deg) translateZ(50vw) translateY(-100%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected.open.back-face {
+ -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(-100%);
+ transform: rotateY(180deg) translateZ(50vw) translateY(-100%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected:not(.open).front-face {
+ /* if the project selected is not inside the first row */
+ -webkit-transform: translateZ(50vw) translateY(300%);
+ transform: translateZ(50vw) translateY(300%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected:not(.open).right-face {
+ -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(300%);
+ transform: rotateY(90deg) translateZ(50vw) translateY(300%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected:not(.open).left-face {
+ -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(300%);
+ transform: rotateY(-90deg) translateZ(50vw) translateY(300%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected:not(.open).back-face {
+ -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(300%);
+ transform: rotateY(180deg) translateZ(50vw) translateY(300%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected.open.front-face {
+ /* if the project selected is inside the second row */
+ -webkit-transform: translateZ(50vw) translateY(-200%);
+ transform: translateZ(50vw) translateY(-200%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected.open.right-face {
+ -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(-200%);
+ transform: rotateY(90deg) translateZ(50vw) translateY(-200%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected.open.left-face {
+ -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(-200%);
+ transform: rotateY(-90deg) translateZ(50vw) translateY(-200%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected.open.back-face {
+ -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(-200%);
+ transform: rotateY(180deg) translateZ(50vw) translateY(-200%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected:not(.open).front-face {
+ /* if the project selected is not inside the second row */
+ -webkit-transform: translateZ(50vw) translateY(200%);
+ transform: translateZ(50vw) translateY(200%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected:not(.open).right-face {
+ -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(200%);
+ transform: rotateY(90deg) translateZ(50vw) translateY(200%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected:not(.open).left-face {
+ -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(200%);
+ transform: rotateY(-90deg) translateZ(50vw) translateY(200%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected:not(.open).back-face {
+ -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(200%);
+ transform: rotateY(180deg) translateZ(50vw) translateY(200%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected.open.front-face {
+ /* if the project selected is inside the third row */
+ -webkit-transform: translateZ(50vw) translateY(-300%);
+ transform: translateZ(50vw) translateY(-300%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected.open.right-face {
+ -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(-300%);
+ transform: rotateY(90deg) translateZ(50vw) translateY(-300%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected.open.left-face {
+ -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(-300%);
+ transform: rotateY(-90deg) translateZ(50vw) translateY(-300%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected.open.back-face {
+ -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(-300%);
+ transform: rotateY(180deg) translateZ(50vw) translateY(-300%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected:not(.open).front-face {
+ /* if the project selected is not inside the third row */
+ -webkit-transform: translateZ(50vw) translateY(100%);
+ transform: translateZ(50vw) translateY(100%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected:not(.open).right-face {
+ -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(100%);
+ transform: rotateY(90deg) translateZ(50vw) translateY(100%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected:not(.open).left-face {
+ -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(100%);
+ transform: rotateY(-90deg) translateZ(50vw) translateY(100%);
+}
+.cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected:not(.open).back-face {
+ -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(100%);
+ transform: rotateY(180deg) translateZ(50vw) translateY(100%);
+}
+.no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:first-of-type > li.selected {
+ -webkit-transform: translateY(300%);
+ -ms-transform: translateY(300%);
+ transform: translateY(300%);
+}
+.no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:first-of-type > li.selected.open {
+ -webkit-transform: translateY(-100%);
+ -ms-transform: translateY(-100%);
+ transform: translateY(-100%);
+}
+.no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:nth-of-type(2) > li.selected {
+ -webkit-transform: translateY(200%);
+ -ms-transform: translateY(200%);
+ transform: translateY(200%);
+}
+.no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:nth-of-type(2) > li.selected.open {
+ -webkit-transform: translateY(-200%);
+ -ms-transform: translateY(-200%);
+ transform: translateY(-200%);
+}
+.no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:nth-of-type(3) > li.selected {
+ -webkit-transform: translateY(100%);
+ -ms-transform: translateY(100%);
+ transform: translateY(100%);
+}
+.no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:nth-of-type(3) > li.selected.open {
+ -webkit-transform: translateY(-300%);
+ -ms-transform: translateY(-300%);
+ transform: translateY(-300%);
+}
+@media only screen and (min-width: 768px) {
+ .cd-3d-portfolio .projects h2 {
+ font-size: 3.5rem;
+ }
+ .cd-3d-portfolio .projects p {
+ font-size: 2rem;
+ }
+}
+
+/* --------------------------------
+
+Back to top
+
+-------------------------------- */
+.cd-top {
+ position: fixed;
+ z-index: 3;
+ bottom: 40px;
+ right: 5%;
+ display: inline-block;
+ height: 48px;
+ width: 48px;
+ /* replace text with image */
+ overflow: hidden;
+ text-indent: 100%;
+ white-space: nowrap;
+ background: rgba(0, 0, 0, 0.6) url(../img/cd-icon-arrow.svg) no-repeat center center;
+ visibility: hidden;
+ opacity: 0;
+ -webkit-transition: opacity .3s, visibility .3s;
+ transition: opacity .3s, visibility .3s;
+}
+.cd-top.is-visible {
+ /* the button becomes visible */
+ visibility: visible;
+ opacity: 1;
+}
+.cd-top:hover {
+ background-color: black;
+ opacity: 1;
+}
diff --git a/3d-portfolio-template-master/img/cd-icon-arrow.svg b/3d-portfolio-template-master/img/cd-icon-arrow.svg
new file mode 100755
index 00000000..9a09dc62
--- /dev/null
+++ b/3d-portfolio-template-master/img/cd-icon-arrow.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/3d-portfolio-template-master/img/photo-1.jpg b/3d-portfolio-template-master/img/photo-1.jpg
new file mode 100755
index 00000000..b965bc59
Binary files /dev/null and b/3d-portfolio-template-master/img/photo-1.jpg differ
diff --git a/3d-portfolio-template-master/img/photo-2.jpg b/3d-portfolio-template-master/img/photo-2.jpg
new file mode 100755
index 00000000..fa82fb9e
Binary files /dev/null and b/3d-portfolio-template-master/img/photo-2.jpg differ
diff --git a/3d-portfolio-template-master/img/photo-3.jpg b/3d-portfolio-template-master/img/photo-3.jpg
new file mode 100755
index 00000000..cb7565b6
Binary files /dev/null and b/3d-portfolio-template-master/img/photo-3.jpg differ
diff --git a/3d-portfolio-template-master/img/photo-4.jpg b/3d-portfolio-template-master/img/photo-4.jpg
new file mode 100755
index 00000000..83d63d73
Binary files /dev/null and b/3d-portfolio-template-master/img/photo-4.jpg differ
diff --git a/3d-portfolio-template-master/img/photo-5.jpg b/3d-portfolio-template-master/img/photo-5.jpg
new file mode 100755
index 00000000..82e67cf6
Binary files /dev/null and b/3d-portfolio-template-master/img/photo-5.jpg differ
diff --git a/3d-portfolio-template-master/img/photo-6.jpg b/3d-portfolio-template-master/img/photo-6.jpg
new file mode 100755
index 00000000..8e21b6fd
Binary files /dev/null and b/3d-portfolio-template-master/img/photo-6.jpg differ
diff --git a/3d-portfolio-template-master/img/photo-7.jpg b/3d-portfolio-template-master/img/photo-7.jpg
new file mode 100755
index 00000000..89f2ac23
Binary files /dev/null and b/3d-portfolio-template-master/img/photo-7.jpg differ
diff --git a/3d-portfolio-template-master/img/photo-8.jpg b/3d-portfolio-template-master/img/photo-8.jpg
new file mode 100755
index 00000000..caf8f890
Binary files /dev/null and b/3d-portfolio-template-master/img/photo-8.jpg differ
diff --git a/3d-portfolio-template-master/img/photo-9.jpg b/3d-portfolio-template-master/img/photo-9.jpg
new file mode 100755
index 00000000..14b272b3
Binary files /dev/null and b/3d-portfolio-template-master/img/photo-9.jpg differ
diff --git a/3d-portfolio-template-master/index.html b/3d-portfolio-template-master/index.html
new file mode 100755
index 00000000..3fa8905a
--- /dev/null
+++ b/3d-portfolio-template-master/index.html
@@ -0,0 +1,388 @@
+
+
+
+
+
+
+
+
+
+
+ 3D Portfolio Template | CodyHouse
+
+
+
+
+
+
3D Portfolio Template
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit quod, molestiae voluptates commodi debitis saepe hic, aut magnam accusantium nostrum error ratione eum vero accusamus autem modi labore doloremque explicabo ut perspiciatis nulla molestias sequi eligendi tempore libero. Dolore iste vitae illum sequi neque quas, dolorem dolor officiis voluptatum quae voluptatibus tenetur molestias soluta blanditiis amet debitis incidunt eaque ratione facere repudiandae cupiditate aspernatur, velit ea itaque. Optio aut harum ad modi dolore doloribus tenetur laboriosam aspernatur minima itaque velit quia, illo sapiente unde, eum autem expedita facilis aliquam, dolorum dicta fuga totam sed pariatur iste! Inventore laudantium qui nostrum, perspiciatis quod! Molestias asperiores facilis explicabo necessitatibus dicta perferendis, esse, quisquam autem corporis ab doloremque nisi voluptas quidem, modi sequi aperiam, illum reiciendis delectus nostrum architecto eligendi sint deleniti voluptate! Magni quia harum eligendi laudantium fuga aspernatur veniam sunt impedit, vitae sit praesentium quam porro dolorem in eveniet iusto. Dicta tempora quo itaque minima expedita accusamus ex perferendis repellat totam! Fugit rerum nihil distinctio ducimus delectus, accusamus enim eos eum nulla fugiat aliquam blanditiis minus omnis maiores, quia numquam placeat. Molestias cupiditate deleniti porro praesentium, aliquam blanditiis maxime iste necessitatibus provident optio ipsum, beatae, libero nostrum, maiores! Temporibus, reiciendis, quibusdam.
+
+
+
+
+
Close
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+
+
Close
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+
+
Close
+
+
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+
+
Close
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+
+
Close
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+
+
Close
+
+
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+
+
Close
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+
+
Close
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet.
+
+
+
+
+
Close
+
+
+
+
+
+
Top
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/3d-portfolio-template-master/js/jquery-3.0.0.min.js b/3d-portfolio-template-master/js/jquery-3.0.0.min.js
new file mode 100755
index 00000000..62d410d9
--- /dev/null
+++ b/3d-portfolio-template-master/js/jquery-3.0.0.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v3.0.0 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.0.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return a&&"[object Object]"===k.call(a)?(b=e(a))?(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n):!0:!1},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;d>f;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;return"string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a)?(d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e):void 0},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"===c||r.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\x00-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,ca=function(a,b){return b?"\x00"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"label"in b&&b.disabled===a||"form"in b&&b.disabled===a||"form"in b&&b.disabled===!1&&(b.isDisabled===a||b.isDisabled!==!a&&("label"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML=" ",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML=" ";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[0>c?c+b:c]}),even:pa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e)}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,e>i&&ya(a.slice(i,e)),f>e&&ya(a=a.slice(e)),f>e&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(_,aa),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(_,aa),$.test(j[0].type)&&qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)&&qa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML=" ","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML=" ",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;d>b;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;d>b;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(f>b)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(1>=b&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){
+return j.call(r(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:X.test(c)?JSON.parse(c):c}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),Z(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=Z(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthf;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ba(d)&&(e[f]=fa(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;g>f;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ga(this,!0)},hide:function(){return ga(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ba(this)?r(this).show():r(this).hide()})}});var ha=/^(?:checkbox|radio)$/i,ia=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ja=/^$|\/(?:java|ecma)script/i,ka={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;d>c;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var na=/<|?\w+;/;function oa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;o>n;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(na.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ia.exec(f)||["",""])[1].toLowerCase(),i=ka[h]||ka._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;cc;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?r(e,this).index(i)>-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/
+
+
+
+
+