From d8637f78753af20022c9b6cd55717a5f905dd0ee Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 12:11:43 -0400 Subject: splitting wallpaper url / position --- .../assets/javascripts/rectangles/models/wall.js | 24 ++++++++++++++-------- public/assets/javascripts/ui/editor/EditorView.js | 4 ++++ public/assets/javascripts/ui/reader/ReaderView.js | 4 ++++ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/public/assets/javascripts/rectangles/models/wall.js b/public/assets/javascripts/rectangles/models/wall.js index dc38183..dedae8b 100644 --- a/public/assets/javascripts/rectangles/models/wall.js +++ b/public/assets/javascripts/rectangles/models/wall.js @@ -68,12 +68,12 @@ }, */ mousedown: function(e){ - if (Scenery.nextMedia) { - var offset = offsetFromPoint(e, mx.el) - if (! offset) { return } + var offset = offsetFromPoint(e, mx.el) + if (! offset) { return } - var pos = base.mxOffsetToPosition( offset, index ) + var pos = base.mxOffsetToPosition( offset, index ) + if (Scenery.nextMedia) { var scenery = Scenery.addNextToWall({ wall: base, index: index, @@ -116,7 +116,7 @@ Minotaur.watch( app.router.editorView.settings ) } else { - app.controller.hideExtras() + app.controller.pickWall(base, pos) } } }) @@ -140,6 +140,7 @@ Wall.prototype.deserialize = function(data){ this.wallpaper( data.background ) + this.wallpaperPosition( data.background_x, data.background_y, data.background_scale ) } @@ -214,22 +215,27 @@ } Wall.prototype.wallpaper = function(background){ + this.background = background || "none" + this.mx.forEach(function(mx){ + mx.el.style.backgroundImage = background + }) + } + + Wall.prototype.wallpaperPosition = function(x, y, scale){ var useX = this.side & FRONT_BACK var shouldFlip = this.side & (LEFT | BACK) - - this.background = background || "none" - + this.mx.forEach(function(mx){ var partitionOffset = useX ? mx.x : mx.z if (shouldFlip) partitionOffset *= -1 partitionOffset += mx.width/2 var floorOffset = mx.y + mx.height/2 - mx.el.style.backgroundImage = background mx.el.style.backgroundPosition = (~~partitionOffset) + "px " + (~~floorOffset) + "px" }) } + Wall.prototype.outline = function(wallColor, outlineColor){ var useX = this.side & FRONT_BACK var mx = this.mx diff --git a/public/assets/javascripts/ui/editor/EditorView.js b/public/assets/javascripts/ui/editor/EditorView.js index 67687fe..f95d909 100644 --- a/public/assets/javascripts/ui/editor/EditorView.js +++ b/public/assets/javascripts/ui/editor/EditorView.js @@ -52,6 +52,10 @@ var EditorView = View.extend({ } }, + pickWall: function(wall, pos){ + this.hideExtras() + }, + hideExtras: function(){ this.mediaEditor.hide() this.textEditor.hide() diff --git a/public/assets/javascripts/ui/reader/ReaderView.js b/public/assets/javascripts/ui/reader/ReaderView.js index 82db048..5f2db0f 100644 --- a/public/assets/javascripts/ui/reader/ReaderView.js +++ b/public/assets/javascripts/ui/reader/ReaderView.js @@ -78,6 +78,10 @@ var ReaderView = View.extend({ app.tube("pick-scenery", { scenery: scenery }) }, + pickWall: function(wall, pos){ + this.hideExtras() + }, + hideExtras: function(){ this.mediaPlayer.hide() app.tube("close-scenery") -- cgit v1.2.3-70-g09d2 From 42420ebed566dffd680998d5b2fb46764164e540 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 13:04:41 -0400 Subject: wallpaperPosition --- .../assets/javascripts/rectangles/models/wall.js | 75 ++++++++++++++++++---- 1 file changed, 64 insertions(+), 11 deletions(-) diff --git a/public/assets/javascripts/rectangles/models/wall.js b/public/assets/javascripts/rectangles/models/wall.js index dedae8b..93e1f42 100644 --- a/public/assets/javascripts/rectangles/models/wall.js +++ b/public/assets/javascripts/rectangles/models/wall.js @@ -140,7 +140,6 @@ Wall.prototype.deserialize = function(data){ this.wallpaper( data.background ) - this.wallpaperPosition( data.background_x, data.background_y, data.background_scale ) } @@ -215,24 +214,78 @@ } Wall.prototype.wallpaper = function(background){ - this.background = background || "none" + if (! background) { + background = { src: "none" } + } + else if (typeof background == "string") { + background = { src: background } + } + else if (! background.src) { + background = { src: "none" } + } + background.x = background.x || 0 + background.y = background.y || 0 + background.scale = background.scale || 1 + + this.background = background + this.background.src = this.background.src.replace("url(","").replace(")","") + + console.log(background) + + if (this.background.src == "none") { + this.wallpaperLoad(this.background.src) + return + } + + var img = new Image () + img.onload = function(){ + this.backgroundImage = img + this.wallpaperLoad(this.background.src) + this.wallpaperPosition(background) + }.bind(this) + img.src = this.background.src + img.complete && img.onload() + } + + Wall.prototype.wallpaperLoad = function(url){ + if (url !== "none") { + url = "url(" + url + ")" + } this.mx.forEach(function(mx){ - mx.el.style.backgroundImage = background + mx.el.style.backgroundImage = url }) } - Wall.prototype.wallpaperPosition = function(x, y, scale){ + Wall.prototype.wallpaperPosition = function(background){ + if (this.background.src == "none") { return } + this.background.x = background.x || this.background.x + this.background.y = background.y || this.background.y + this.background.scale = background.scale || this.background.scale || 1 + var useX = this.side & FRONT_BACK var shouldFlip = this.side & (LEFT | BACK) - this.mx.forEach(function(mx){ - var partitionOffset = useX ? mx.x : mx.z - if (shouldFlip) partitionOffset *= -1 - partitionOffset += mx.width/2 - var floorOffset = mx.y + mx.height/2 + var mx, dx, dy + var w = Math.round( this.backgroundImage.naturalWidth * this.background.scale ) + var h = Math.round( this.backgroundImage.naturalHeight * this.background.scale ) - mx.el.style.backgroundPosition = (~~partitionOffset) + "px " + (~~floorOffset) + "px" - }) + this.surface.faces.forEach(function(face, i){ + + if (shouldFlip) { + mx = this.mx[this.mx.length-1-i] + dx = Math.round( this.background.x + face.x.a ) + dy = Math.round( this.background.y + face.y.b ) + } + else { + mx = this.mx[i] + dx = Math.round( this.background.x - face.x.b ) + dy = Math.round( this.background.y + face.y.b ) + } + + mx.el.style.backgroundPosition = dx + 'px ' + dy + 'px' + mx.el.style.backgroundSize = w + 'px ' + h + 'px' + }.bind(this)) + bbb = this } -- cgit v1.2.3-70-g09d2 From 896350bb20b20aaef9c5fdfcfcf36553ff8aa614 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 13:08:46 -0400 Subject: left/right rotates --- public/assets/javascripts/mx/extensions/mx.movements.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/assets/javascripts/mx/extensions/mx.movements.js b/public/assets/javascripts/mx/extensions/mx.movements.js index 4627cd3..f94bbc2 100644 --- a/public/assets/javascripts/mx/extensions/mx.movements.js +++ b/public/assets/javascripts/mx/extensions/mx.movements.js @@ -51,7 +51,6 @@ MX.Movements = function (cam) { moveForward = true break - case 37: // left case 65: // a moveLeft = true break @@ -61,15 +60,16 @@ MX.Movements = function (cam) { moveBackward = true break - case 39: // right case 68: // d moveRight = true break + case 37: // left case 81: // q turnLeft = true break + case 39: // right case 69: // e turnRight = true break @@ -132,7 +132,6 @@ MX.Movements = function (cam) { moveForward = false break - case 37: // left case 65: // a moveLeft = false break @@ -142,15 +141,16 @@ MX.Movements = function (cam) { moveBackward = false break - case 39: // right case 68: // d moveRight = false break + case 37: // left case 81: // q turnLeft = false break + case 39: // right case 69: // e turnRight = false break -- cgit v1.2.3-70-g09d2 From f5ab61241bf9519325a36b86ee74ab2df13a4331 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 14:43:45 -0400 Subject: colorpicker presets --- .../assets/javascripts/rectangles/models/wall.js | 2 -- .../assets/javascripts/ui/editor/LightControl.js | 33 ++++++++++++++++++++++ public/assets/javascripts/ui/reader/MediaPlayer.js | 4 +-- public/assets/stylesheets/app.css | 8 ++++-- views/controls/editor/light-control.ejs | 10 +++---- 5 files changed, 46 insertions(+), 11 deletions(-) diff --git a/public/assets/javascripts/rectangles/models/wall.js b/public/assets/javascripts/rectangles/models/wall.js index 93e1f42..820fb5f 100644 --- a/public/assets/javascripts/rectangles/models/wall.js +++ b/public/assets/javascripts/rectangles/models/wall.js @@ -230,8 +230,6 @@ this.background = background this.background.src = this.background.src.replace("url(","").replace(")","") - console.log(background) - if (this.background.src == "none") { this.wallpaperLoad(this.background.src) return diff --git a/public/assets/javascripts/ui/editor/LightControl.js b/public/assets/javascripts/ui/editor/LightControl.js index 3eb2861..2b7cfaa 100644 --- a/public/assets/javascripts/ui/editor/LightControl.js +++ b/public/assets/javascripts/ui/editor/LightControl.js @@ -10,6 +10,7 @@ var LightControl = View.extend({ "input #brightness-control": "updateBrightness", "input #outline-hue": "updateShadow", "input #wall-hue": "updateShadow", + "click .presets span": "selectPreset", }, initialize: function(){ @@ -114,6 +115,38 @@ var LightControl = View.extend({ this.setMode(mode) }, + presets: { + wireframe: { + wall: [255,255,255], + outline: [0,0,0], + floor: [246,246,246], + ceiling: [255,255,255], + }, + shaded: { + wall: [205,205,204], + outline: [0,0,0], + floor: [109,116,106], + ceiling: [159,163,157], + }, + pfunk: { + wall: [255,63,78], + outline: [255,246,0], + floor: [255,255,0], + ceiling: [225,118,252], + }, + seapunk: { + wall: [110,255,255], + outline: [146,133,255], + floor: [89,221,255], + ceiling: [139,255,173], + }, + }, + selectPreset: function(e){ + var preset = $(e.currentTarget).data('preset') + if (! this.presets[preset]) return + this.load(this.presets[preset]) + }, + beginBrightness: function(){ this.begin() $(window).one("mouseup", this.finalize.bind(this)) diff --git a/public/assets/javascripts/ui/reader/MediaPlayer.js b/public/assets/javascripts/ui/reader/MediaPlayer.js index df2d075..6195ab6 100644 --- a/public/assets/javascripts/ui/reader/MediaPlayer.js +++ b/public/assets/javascripts/ui/reader/MediaPlayer.js @@ -53,8 +53,8 @@ var MediaPlayer = FormView.extend({ this.bind(scenery) this.$el.addClass("active") - this.$name.html(media.title) - this.$description.html(media.description) + this.$name.html( sanitize(media.title) ) + this.$description.html( marked(media.description) ) switch (media.type) { case "image": diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index eb3bd87..15f29c3 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -1475,13 +1475,17 @@ input[type="range"]::-webkit-slider-thumb { .color-swatches { margin-top: 10px; } -.color-swatches.defaults { +.presets { margin-top: 10px; } -.color-swatches.defaults span{ +.presets span { font-size:12px; font-weight:500; + display: inline-block; + width: 50%; + float:left; + cursor:pointer; } .color-swatches span { display: inline-block; diff --git a/views/controls/editor/light-control.ejs b/views/controls/editor/light-control.ejs index fdf95a7..1fc4484 100644 --- a/views/controls/editor/light-control.ejs +++ b/views/controls/editor/light-control.ejs @@ -23,17 +23,17 @@

Preset Styles

-
- +
+ Wireframe - + Shaded - + P.Funk - + SeaPunk
-- cgit v1.2.3-70-g09d2 From 06e38245987304ef6bddb1f9c3e6cad16a215209 Mon Sep 17 00:00:00 2001 From: ryderr Date: Tue, 7 Oct 2014 16:12:09 -0400 Subject: new font --- public/assets/fonts/ionicons.eot | Bin 124752 -> 101984 bytes public/assets/fonts/ionicons.svg | 2338 +++++++++++++++++++++++------ public/assets/fonts/ionicons.ttf | Bin 124588 -> 164548 bytes public/assets/fonts/ionicons.woff | Bin 124664 -> 57276 bytes public/assets/stylesheets/app.css | 14 +- public/assets/stylesheets/ionicons.css | 2559 +++++++++++++++----------------- views/controls/builder/settings.ejs | 2 +- views/controls/builder/toolbar.ejs | 14 +- views/controls/editor/media-drawer.ejs | 2 +- views/controls/editor/media-editor.ejs | 4 +- views/controls/editor/settings.ejs | 4 +- views/controls/editor/toolbar.ejs | 16 +- views/controls/editor/wallpaper.ejs | 11 +- views/controls/reader/media-player.ejs | 8 +- views/home.ejs | 2 +- views/partials/header.ejs | 2 +- views/partials/sign-in.ejs | 4 +- views/profile.ejs | 2 +- 18 files changed, 3164 insertions(+), 1818 deletions(-) diff --git a/public/assets/fonts/ionicons.eot b/public/assets/fonts/ionicons.eot index 6b33288..52b1e57 100755 Binary files a/public/assets/fonts/ionicons.eot and b/public/assets/fonts/ionicons.eot differ diff --git a/public/assets/fonts/ionicons.svg b/public/assets/fonts/ionicons.svg index a1ee425..5c8c909 100755 --- a/public/assets/fonts/ionicons.svg +++ b/public/assets/fonts/ionicons.svg @@ -1,447 +1,1899 @@ + -Generated by IcoMoon + +Created by FontForge 20120731 at Mon Jun 16 14:44:31 2014 + By Adam Bradley +Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net) + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/fonts/ionicons.ttf b/public/assets/fonts/ionicons.ttf index 573d5b3..cc67b2f 100755 Binary files a/public/assets/fonts/ionicons.ttf and b/public/assets/fonts/ionicons.ttf differ diff --git a/public/assets/fonts/ionicons.woff b/public/assets/fonts/ionicons.woff index 337b87f..1d7b977 100755 Binary files a/public/assets/fonts/ionicons.woff and b/public/assets/fonts/ionicons.woff differ diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index e626d39..988dd89 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -77,11 +77,11 @@ a{ .editing #help-button { display: inline; } -.topLinks a.icon-help-circled { +.topLinks a.ion-help-circled { font-size: 24px; padding: 21px 27px 0 8px; } -.topLinks a.icon-help-circled:hover { +.topLinks a.ion-help-circled:hover { background:transparent; color:red; } @@ -875,7 +875,7 @@ iframe.embed { } .menu span.inuse:before { - content: "\e736" !important; + content: "\f12a" !important; } .menu span:hover:after{ @@ -893,7 +893,7 @@ iframe.embed { font-family:'Lato', sans-serif; } -.menu span.icon-ios7-sunny-outline:hover:after { +.menu span.ion-ios7-sunny-outline:hover:after { width: 130px; } @@ -902,7 +902,7 @@ iframe.embed { content:""; opacity:0; } -.menu span.icon-map.hidden:hover:after{ +.menu span.ion-map.hidden:hover:after{ content:"show map"; } .fixed { @@ -1051,7 +1051,7 @@ iframe.embed { transform:translateY(0%); } -.fileUpload .icon-ios7-upload-outline { +.fileUpload .ion-ios7-upload-outline { font-size:40px; } .fileUpload .upload-icon.uploading { @@ -1338,7 +1338,7 @@ iframe.embed { color:white; cursor:pointer; } -.wallpaper .icon-ios7-upload-outline { +.wallpaper .ion-ios7-upload-outline { font-size: 26px; } .wallpaper .wallpaperRemove { diff --git a/public/assets/stylesheets/ionicons.css b/public/assets/stylesheets/ionicons.css index 0d8af36..34c20e2 100755 --- a/public/assets/stylesheets/ionicons.css +++ b/public/assets/stylesheets/ionicons.css @@ -1,1335 +1,1224 @@ -@font-face { - font-family: 'ionicons'; - src:url('../fonts/ionicons.eot'); - src:url('../fonts/ionicons.eot?#iefix') format('embedded-opentype'), - url('../fonts/ionicons.ttf') format('truetype'), - url('../fonts/ionicons.woff') format('woff'), - url('../fonts/ionicons.svg#icomoon') format('svg'); - font-weight: normal; - font-style: normal; -} - -[class*="icon-"] { - font-family: 'ionicons'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-ios7-folder:before { - content: "\e60c"; -} -.icon-ios7-flag:before { - content: "\e619"; -} -.icon-ios7-partlysunny:before { - content: "\e626"; -} -.icon-ios7-personadd-outline:before { - content: "\e633"; -} -.icon-ios7-filing:before { - content: "\e640"; -} -.icon-ios7-heart-outline:before { - content: "\e64d"; -} -.icon-ios7-film-outline:before { - content: "\e65a"; -} -.icon-ios7-fastforward:before { - content: "\e667"; -} -.icon-ios7-cloud-download:before { - content: "\e674"; -} -.icon-ios7-plus-empty:before { - content: "\e681"; -} -.icon-ios7-plus:before { - content: "\e682"; -} -.icon-ios7-plus-outline:before { - content: "\e683"; -} -.icon-ios7-checkmark-empty:before { - content: "\e684"; -} -.icon-ios7-checkmark:before { - content: "\e685"; -} -.icon-ios7-checkmark-outline:before { - content: "\e686"; -} -.icon-ios7-help-empty:before { - content: "\e687"; -} -.icon-ios7-help:before { - content: "\e688"; -} -.icon-ios7-help-outline:before { - content: "\e689"; -} -.icon-ios7-information-empty:before { - content: "\e68a"; -} -.icon-ios7-information:before { - content: "\e68b"; -} -.icon-ios7-information-outline:before { - content: "\e68c"; -} -.icon-ios7-circle-filled:before { - content: "\e68d"; -} -.icon-ios7-circle-outline:before { - content: "\e68e"; -} -.icon-ios7-trash-outline:before { - content: "\e68f"; -} -.icon-ios7-more:before { - content: "\e690"; -} -.icon-ios7-more-outline:before { - content: "\e691"; -} -.icon-ios7-upload:before { - content: "\e692"; -} -.icon-ios7-upload-outline:before { - content: "\e693"; -} -.icon-ios7-download:before { - content: "\e694"; -} -.icon-ios7-download-outline:before { - content: "\e695"; -} -.icon-ios7-search-strong:before { - content: "\e696"; -} -.icon-ios7-search:before { - content: "\e697"; -} -.icon-ios7-navigate:before { - content: "\e698"; -} -.icon-ios7-navigate-outline:before { - content: "\e699"; -} -.icon-ios7-copy:before { - content: "\e69a"; -} -.icon-ios7-copy-outline:before { - content: "\e69b"; -} -.icon-ios7-photos:before { - content: "\e69c"; -} -.icon-ios7-photos-outline:before { - content: "\e69d"; -} -.icon-ios7-albums:before { - content: "\e69e"; -} -.icon-ios7-albums-outline:before { - content: "\e69f"; -} -.icon-ios7-world:before { - content: "\e6a0"; -} -.icon-ios7-world-outline:before { - content: "\e6a1"; -} -.icon-ios7-recording:before { - content: "\e6a2"; -} -.icon-ios7-recording-outline:before { - content: "\e6a3"; -} -.icon-ios7-keypad:before { - content: "\e6a4"; -} -.icon-ios7-keypad-outline:before { - content: "\e6a5"; -} -.icon-ios7-contact:before { - content: "\e6a6"; -} -.icon-ios7-contact-outline:before { - content: "\e6a7"; -} -.icon-ios7-clock:before { - content: "\e6a8"; -} -.icon-ios7-clock-outline:before { - content: "\e6a9"; -} -.icon-ios7-star:before { - content: "\e6aa"; -} -.icon-ios7-star-outline:before { - content: "\e6ab"; -} -.icon-ios7-compose-outline:before { - content: "\e6ac"; -} -.icon-ios7-wineglass:before { - content: "\e6ad"; -} -.icon-ios7-pie:before { - content: "\e6ae"; -} -.icon-ios7-pie-outline:before { - content: "\e6af"; -} -.icon-ios7-reload:before { - content: "\e6b0"; -} -.icon-ios7-wineglass-outline:before { - content: "\e6b1"; -} -.icon-ios7-medkit:before { - content: "\e6b2"; -} -.icon-ios7-medkit-outline:before { - content: "\e6b3"; -} -.icon-ios7-briefcase-outline:before { - content: "\e6b4"; -} -.icon-ios7-briefcase:before { - content: "\e6b5"; -} -.icon-ios7-pricetag:before { - content: "\e6b6"; -} -.icon-ios7-pricetag-outline:before { - content: "\e6b7"; -} -.icon-ios7-speedometer:before { - content: "\e6b8"; -} -.icon-ios7-speedometer-outline:before { - content: "\e6b9"; -} -.icon-ios7-lightbulb:before { - content: "\e6ba"; -} -.icon-ios7-lightbulb-outline:before { - content: "\e6bb"; -} -.icon-ios7-calculator:before { - content: "\e6bc"; -} -.icon-ios7-calculator-outline:before { - content: "\e6bd"; -} -.icon-ios7-arrow-thin-left:before { - content: "\e6be"; -} -.icon-ios7-arrow-thin-down:before { - content: "\e6bf"; -} -.icon-ios7-arrow-thin-right:before { - content: "\e6c0"; -} -.icon-ios7-arrow-thin-up:before { - content: "\e6c1"; -} -.icon-ios7-time:before { - content: "\e6c2"; -} -.icon-ios7-time-outline:before { - content: "\e6c3"; -} -.icon-volume-mute:before { - content: "\e6c4"; -} -.icon-thumbsdown:before { - content: "\e6c5"; -} -.icon-thumbsup:before { - content: "\e6c6"; -} -.icon-calendar:before { - content: "\e6c7"; -} -.icon-images:before { - content: "\e6c8"; -} -.icon-film-marker:before { - content: "\e6c9"; -} -.icon-game-controller-b:before { - content: "\e6ca"; -} -.icon-game-controller-a:before { - content: "\e6cb"; -} -.icon-man:before { - content: "\e6cc"; -} -.icon-archive:before { - content: "\e6cd"; -} -.icon-trash-b:before { - content: "\e6ce"; -} -.icon-trash-a:before { - content: "\e6cf"; -} -.icon-folder:before { - content: "\e6d0"; -} -.icon-alert-circled:before { - content: "\e6d1"; -} -.icon-information-circled:before { - content: "\e6d2"; -} -.icon-minus-circled:before { - content: "\e6d3"; -} -.icon-plus-circled:before { - content: "\e6d4"; -} -.icon-link:before { - content: "\e6d5"; -} -.icon-eject:before { - content: "\e6d6"; -} -.icon-skip-backward:before { - content: "\e6d7"; -} -.icon-skip-forward:before { - content: "\e6d8"; -} -.icon-iphone:before { - content: "\e6d9"; -} -.icon-ipad:before { - content: "\e6da"; -} -.icon-ipod:before { - content: "\e6db"; -} -.icon-alert:before { - content: "\e6dc"; -} -.icon-arrow-right-a:before { - content: "\e6dd"; -} -.icon-arrow-up-a:before { - content: "\e6de"; -} -.icon-arrow-left-a:before { - content: "\e6df"; -} -.icon-arrow-down-a:before { - content: "\e6e0"; -} -.icon-ionic:before { - content: "\e6e1"; -} -.icon-plane:before { - content: "\e6e2"; -} -.icon-flask:before { - content: "\e6e3"; -} -.icon-card:before { - content: "\e6e4"; -} -.icon-bag:before { - content: "\e6e5"; -} -.icon-map:before { - content: "\e6e6"; -} -.icon-clipboard:before { - content: "\e6e7"; -} -.icon-pound:before { - content: "\e6e8"; -} -.icon-at:before { - content: "\e6e9"; -} -.icon-image:before { - content: "\e6ea"; -} -.icon-mic-c:before { - content: "\e6eb"; -} -.icon-mic-b:before { - content: "\e6ec"; -} -.icon-waterdrop:before { - content: "\e6ed"; -} -.icon-record:before { - content: "\e6ee"; -} -.icon-stop:before { - content: "\e6ef"; -} -.icon-pause:before { - content: "\e6f0"; -} -.icon-play:before { - content: "\e6f1"; -} -.icon-volume-low:before { - content: "\e6f2"; -} -.icon-volume-medium:before { - content: "\e6f3"; -} -.icon-volume-high:before { - content: "\e6f4"; -} -.icon-mic-a:before { - content: "\e6f5"; -} -.icon-music-note:before { - content: "\e6f6"; -} -.icon-headphone:before { - content: "\e6f7"; -} -.icon-disc:before { - content: "\e6f8"; -} -.icon-videocamera:before { - content: "\e6f9"; -} -.icon-printer:before { - content: "\e6fa"; -} -.icon-laptop:before { - content: "\e6fb"; -} -.icon-monitor:before { - content: "\e6fc"; -} -.icon-flash-off:before { - content: "\e6fd"; -} -.icon-flash:before { - content: "\e6fe"; -} -.icon-eye:before { - content: "\e6ff"; -} -.icon-camera:before { - content: "\e700"; -} -.icon-bluetooth:before { - content: "\e701"; -} -.icon-wifi:before { - content: "\e702"; -} -.icon-battery-charging:before { - content: "\e703"; -} -.icon-battery-empty:before { - content: "\e704"; -} -.icon-battery-low:before { - content: "\e705"; -} -.icon-battery-half:before { - content: "\e706"; -} -.icon-battery-full:before { - content: "\e707"; -} -.icon-woman:before { - content: "\e708"; -} -.icon-person-stalker:before { - content: "\e709"; -} -.icon-person-add:before { - content: "\e70a"; -} -.icon-person:before { - content: "\e70b"; -} -.icon-chatboxes:before { -} -.icon-chatbox-working:before { - content: "\e70d"; -} -.icon-chatbox:before { - content: "\e70e"; -} -.icon-chatbubbles:before { - content: "\e70f"; -} -.icon-chatbubble-working:before { - content: "\e710"; -} -.icon-chatbubble:before { - content: "\e711"; -} -.icon-unlocked:before { - content: "\e712"; -} -.icon-locked:before { - content: "\e713"; -} -.icon-more:before { - content: "\e714"; -} -.icon-grid:before { - content: "\e715"; -} -.icon-upload:before { - content: "\e716"; -} -.icon-cloud:before { - content: "\e717"; -} -.icon-location:before { - content: "\e718"; -} -.icon-compose:before { - content: "\e719"; -} -.icon-paperclip:before { - content: "\e71a"; -} -.icon-share:before { - content: "\e71b"; -} -.icon-email:before { - content: "\e71c"; -} -.icon-reply-all:before { - content: "\e71d"; -} -.icon-forward:before { - content: "\e71e"; -} -.icon-reply:before { - content: "\e71f"; -} -.icon-filing:before { - content: "\e720"; -} -.icon-document-text:before { - content: "\e721"; -} -.icon-document:before { - content: "\e722"; -} -.icon-gear-b:before { - content: "\e723"; -} -.icon-gear-a:before { - content: "\e724"; -} -.icon-help-circled:before { - content: "\e725"; -} -.icon-help:before { - content: "\e726"; -} -.icon-information:before { - content: "\e727"; -} -.icon-minus:before { - content: "\e728"; -} -.icon-minus-round:before { - content: "\e729"; -} -.icon-plus:before { - content: "\e72a"; -} -.icon-plus-round:before { - content: "\e72b"; -} -.icon-drag:before { - content: "\e72c"; -} -.icon-navicon:before { - content: "\e72d"; -} -.icon-navicon-round:before { - content: "\e72e"; -} -.icon-heart:before { - content: "\e72f"; -} -.icon-star:before { - content: "\e730"; -} -.icon-search:before { - content: "\e731"; -} -.icon-home:before { - content: "\e732"; -} -.icon-shuffle:before { - content: "\e733"; -} -.icon-loop:before { - content: "\e734"; -} -.icon-close-circled:before { - content: "\e735"; -} -.icon-close:before { - content: "\e736"; -} -.icon-close-round:before { - content: "\e737"; -} -.icon-checkmark-circled:before { - content: "\e738"; -} -.icon-checkmark:before { - content: "\e739"; -} -.icon-checkmark-round:before { - content: "\e73a"; -} -.icon-chevron-left:before { - content: "\e73b"; -} -.icon-chevron-right:before { - content: "\e73c"; -} -.icon-chevron-down:before { - content: "\e73d"; -} -.icon-chevron-up:before { - content: "\e73e"; -} -.icon-arrow-down-c:before { - content: "\e73f"; -} -.icon-arrow-up-c:before { - content: "\e740"; -} -.icon-arrow-right-c:before { - content: "\e741"; -} -.icon-arrow-left-c:before { - content: "\e742"; -} -.icon-arrow-left-b:before { - content: "\e743"; -} -.icon-arrow-down-b:before { - content: "\e744"; -} -.icon-arrow-right-b:before { - content: "\e745"; -} -.icon-arrow-up-b:before { - content: "\e746"; -} -.icon-refresh:before { - content: "\e747"; -} -.icon-leaf:before { - content: "\e748"; -} -.icon-briefcase:before { - content: "\e749"; -} -.icon-clock:before { - content: "\e74a"; -} -.icon-thermometer:before { - content: "\e74b"; -} -.icon-wrench:before { - content: "\e74c"; -} -.icon-medkit:before { - content: "\e74d"; -} -.icon-wineglass:before { - content: "\e74e"; -} -.icon-load-d:before { - content: "\e74f"; -} -.icon-load-c:before { - content: "\e750"; -} -.icon-load-b:before { - content: "\e751"; -} -.icon-load-a:before { - content: "\e752"; -} -.icon-umbrella:before { - content: "\e753"; -} -.icon-coffee:before { - content: "\e754"; -} -.icon-pizza:before { - content: "\e755"; -} -.icon-icecream:before { - content: "\e756"; -} -.icon-spoon:before { - content: "\e757"; -} -.icon-fork:before { - content: "\e758"; -} -.icon-knife:before { - content: "\e759"; -} -.icon-earth:before { - content: "\e75a"; -} -.icon-egg:before { - content: "\e75b"; -} -.icon-pie-graph:before { - content: "\e75c"; -} -.icon-magnet:before { - content: "\e75d"; -} -.icon-help-buoy:before { - content: "\e75e"; -} -.icon-nuclear:before { - content: "\e75f"; -} -.icon-beaker:before { - content: "\e760"; -} -.icon-pricetags:before { - content: "\e761"; -} -.icon-pricetag:before { - content: "\e762"; -} -.icon-settings:before { - content: "\e763"; -} -.icon-hammer:before { - content: "\e764"; -} -.icon-power:before { - content: "\e765"; -} -.icon-female:before { - content: "\e766"; -} -.icon-male:before { - content: "\e767"; -} -.icon-pinpoint:before { - content: "\e768"; -} -.icon-pin:before { - content: "\e769"; -} -.icon-navigate:before { - content: "\e76a"; -} -.icon-flag:before { - content: "\e76b"; -} -.icon-code-download:before { - content: "\e76c"; -} -.icon-code-working:before { - content: "\e76d"; -} -.icon-code:before { - content: "\e76e"; -} -.icon-usb:before { - content: "\e76f"; -} -.icon-bookmark:before { - content: "\e770"; -} -.icon-key:before { - content: "\e771"; -} -.icon-lightbulb:before { - content: "\e772"; -} -.icon-calculator:before { - content: "\e773"; -} -.icon-speakerphone:before { - content: "\e774"; -} -.icon-contrast:before { - content: "\e775"; -} -.icon-accelerate:before { - content: "\e776"; -} -.icon-speedometer:before { - content: "\e777"; -} -.icon-compass:before { - content: "\e778"; -} -.icon-radio-waves:before { - content: "\e779"; -} -.icon-log-out:before { - content: "\e77a"; -} -.icon-log-in:before { - content: "\e77b"; -} -.icon-levels:before { - content: "\e77c"; -} -.icon-connection-bars:before { - content: "\e77d"; -} -.icon-stats-bars:before { - content: "\e77e"; -} -.icon-arrow-graph-up:before { - content: "\e77f"; -} -.icon-arrow-graph-down:before { - content: "\e780"; -} -.icon-arrow-resize:before { - content: "\e781"; -} -.icon-arrow-move:before { - content: "\e782"; -} -.icon-arrow-expand:before { - content: "\e783"; -} -.icon-arrow-shrink:before { - content: "\e784"; -} -.icon-arrow-swap:before { - content: "\e785"; -} -.icon-arrow-return-left:before { - content: "\e786"; -} -.icon-arrow-return-right:before { - content: "\e787"; -} -.icon-social-android-outline:before { - content: "\e788"; -} -.icon-social-android:before { - content: "\e789"; -} -.icon-social-dropbox:before { - content: "\e78a"; -} -.icon-social-dropbox-outline:before { - content: "\e78b"; -} -.icon-social-designernews:before { - content: "\e78c"; -} -.icon-social-designernews-outline:before { - content: "\e78d"; -} -.icon-social-hackernews:before { - content: "\e78e"; -} -.icon-social-hackernews-outline:before { - content: "\e78f"; -} -.icon-social-windows:before { - content: "\e790"; -} -.icon-social-windows-outline:before { - content: "\e791"; -} -.icon-social-apple:before { - content: "\e792"; -} -.icon-social-apple-outline:before { - content: "\e793"; -} -.icon-social-youtube:before { - content: "\e794"; -} -.icon-social-youtube-outline:before { - content: "\e795"; -} -.icon-social-linkedin:before { - content: "\e796"; -} -.icon-social-linkedin-outline:before { - content: "\e797"; -} -.icon-social-skype:before { - content: "\e798"; -} -.icon-social-skype-outline:before { - content: "\e799"; -} -.icon-social-vimeo:before { - content: "\e79a"; -} -.icon-social-vimeo-outline:before { - content: "\e79b"; -} -.icon-social-buffer:before { - content: "\e79c"; -} -.icon-social-buffer-outline:before { - content: "\e79d"; -} -.icon-social-yahoo:before { - content: "\e79e"; -} -.icon-social-yahoo-outline:before { - content: "\e79f"; -} -.icon-social-reddit:before { - content: "\e7a0"; -} -.icon-social-reddit-outline:before { - content: "\e7a1"; -} -.icon-social-wordpress:before { - content: "\e7a2"; -} -.icon-social-wordpress-outline:before { - content: "\e7a3"; -} -.icon-social-tumblr:before { - content: "\e7a4"; -} -.icon-social-tumblr-outline:before { - content: "\e7a5"; -} -.icon-social-rss:before { - content: "\e7a6"; -} -.icon-social-rss-outline:before { - content: "\e7a7"; -} -.icon-social-github:before { - content: "\e7a8"; -} -.icon-social-github-outline:before { - content: "\e7a9"; -} -.icon-social-dribbble:before { - content: "\e7aa"; -} -.icon-social-dribbble-outline:before { - content: "\e7ab"; -} -.icon-social-googleplus:before { - content: "\e7ac"; -} -.icon-social-googleplus-outline:before { - content: "\e7ad"; -} -.icon-social-facebook:before { - content: "\e7ae"; -} -.icon-social-facebook-outline:before { - content: "\e7af"; -} -.icon-social-twitter:before { - content: "\e7b0"; -} -.icon-social-twitter-outline:before { - content: "\e7b1"; -} -.icon-social-pinterest:before { - content: "\e7b2"; -} -.icon-social-pinterest-outline:before { - content: "\e7b3"; -} -.icon-social-bitcoin:before { - content: "\e7b4"; -} -.icon-social-bitcoin-outline:before { - content: "\e7b5"; -} -.icon-ios7-at-outline:before { - content: "\e600"; -} -.icon-ios7-bookmarks:before { - content: "\e601"; -} -.icon-ios7-bookmarks-outline:before { - content: "\e602"; -} -.icon-ios7-at:before { - content: "\e603"; -} -.icon-ios7-stopwatch:before { - content: "\e604"; -} -.icon-ios7-stopwatch-outline:before { - content: "\e605"; -} -.icon-ios7-timer:before { - content: "\e606"; -} -.icon-ios7-timer-outline:before { - content: "\e607"; -} -.icon-ios7-alarm:before { - content: "\e608"; -} -.icon-ios7-alarm-outline:before { - content: "\e609"; -} -.icon-ios7-rainy:before { - content: "\e60a"; -} -.icon-ios7-rainy-outline:before { - content: "\e60b"; -} -.icon-ios7-eye-outline:before { - content: "\e60d"; -} -.icon-ios7-gear-outline:before { - content: "\e60e"; -} -.icon-ios7-gear:before { - content: "\e60f"; -} -.icon-ios7-box-outline:before { - content: "\e610"; -} -.icon-ios7-box:before { - content: "\e611"; -} -.icon-ios7-drag:before { - content: "\e612"; -} -.icon-ios7-ionic-outline:before { - content: "\e613"; -} -.icon-ios7-printer-outline:before { - content: "\e614"; -} -.icon-ios7-trash:before { - content: "\e615"; -} -.icon-ios7-flag-outline:before { - content: "\e616"; -} -.icon-ios7-glasses:before { - content: "\e617"; -} -.icon-ios7-glasses-outline:before { - content: "\e618"; -} -.icon-ios7-infinite:before { - content: "\e61a"; -} -.icon-ios7-infinite-outline:before { - content: "\e61b"; -} -.icon-ios7-cart:before { - content: "\e61c"; -} -.icon-ios7-cart-outline:before { - content: "\e61d"; -} -.icon-ios7-moon:before { - content: "\e61e"; -} -.icon-ios7-moon-outline:before { - content: "\e61f"; -} -.icon-ios7-thunderstorm:before { - content: "\e620"; -} -.icon-ios7-thunderstorm-outline:before { - content: "\e621"; -} -.icon-ios7-cloudy-outline:before { - content: "\e622"; -} -.icon-ios7-sunny:before { - content: "\e623"; -} -.icon-ios7-sunny-outline:before { - content: "\e624"; -} -.icon-ios7-people:before { - content: "\e625"; -} -.icon-ios7-people-outline:before { - content: "\e627"; -} -.icon-ios7-person:before { - content: "\e628"; -} -.icon-ios7-person-outline:before { - content: "\e629"; -} -.icon-ios7-location:before { - content: "\e62a"; -} -.icon-ios7-location-outline:before { - content: "\e62b"; -} -.icon-ios7-personadd:before { - content: "\e62c"; -} -.icon-ios7-email:before { - content: "\e62f"; -} -.icon-ios7-email-outline:before { - content: "\e630"; -} -.icon-ios7-paperplane:before { - content: "\e631"; -} -.icon-ios7-paperplane-outline:before { - content: "\e632"; -} -.icon-ios7-undo:before { - content: "\e634"; -} -.icon-ios7-undo-outline:before { - content: "\e635"; -} -.icon-ios7-redo:before { - content: "\e636"; -} -.icon-ios7-redo-outline:before { - content: "\e637"; -} -.icon-ios7-refresh-outline:before { - content: "\e63a"; -} -.icon-ios7-cog:before { - content: "\e63b"; -} -.icon-ios7-cog-outline:before { - content: "\e63c"; -} -.icon-ios7-browsers:before { - content: "\e63d"; -} -.icon-ios7-browsers-outline:before { - content: "\e63e"; -} -.icon-ios7-bolt:before { - content: "\e63f"; -} -.icon-ios7-bolt-outline:before { - content: "\e641"; -} -.icon-ios7-heart:before { - content: "\e642"; -} -.icon-ios7-printer:before { - content: "\e645"; -} -.icon-ios7-telephone:before { - content: "\e646"; -} -.icon-ios7-telephone-outline:before { - content: "\e647"; -} -.icon-ios7-monitor:before { - content: "\e648"; -} -.icon-ios7-monitor-outline:before { - content: "\e649"; -} -.icon-ios7-camera:before { - content: "\e64a"; -} -.icon-ios7-camera-outline:before { - content: "\e64b"; -} -.icon-ios7-film:before { - content: "\e64c"; -} -.icon-ios7-bell:before { - content: "\e64e"; -} -.icon-ios7-bell-outline:before { - content: "\e64f"; -} -.icon-ios7-musical-note:before { - content: "\e650"; -} -.icon-ios7-musical-notes:before { - content: "\e651"; -} -.icon-ios7-skipbackward:before { - content: "\e652"; -} -.icon-ios7-skipbackward-outline:before { - content: "\e653"; -} -.icon-ios7-skipforward:before { - content: "\e654"; -} -.icon-ios7-skipforward-outline:before { - content: "\e655"; -} -.icon-ios7-rewind:before { - content: "\e656"; -} -.icon-ios7-rewind-outline:before { - content: "\e657"; -} -.icon-ios7-pause-outline:before { - content: "\e658"; -} -.icon-ios7-pause:before { - content: "\e659"; -} -.icon-ios7-play:before { - content: "\e65b"; -} -.icon-ios7-volume-high:before { - content: "\e65c"; -} -.icon-ios7-volume-low:before { - content: "\e65d"; -} -.icon-ios7-mic-off:before { - content: "\e65e"; -} -.icon-ios7-mic-outline:before { - content: "\e65f"; -} -.icon-ios7-mic:before { - content: "\e660"; -} -.icon-ios7-cloud-upload:before { - content: "\e661"; -} -.icon-ios7-cloud-upload-outline:before { - content: "\e662"; -} -.icon-ios7-cloud-outline:before { - content: "\e663"; -} -.icon-ios7-arrow-forward:before { - content: "\e664"; -} -.icon-ios7-arrow-back:before { - content: "\e665"; -} -.icon-ios7-unlocked:before { - content: "\e666"; -} -.icon-ios7-unlocked-outline:before { - content: "\e668"; -} -.icon-ios7-locked:before { - content: "\e669"; -} -.icon-ios7-locked-outline:before { - content: "\e66a"; -} -.icon-ios7-minus-empty:before { - content: "\e66b"; -} -.icon-ios7-minus:before { - content: "\e66c"; -} -.icon-ios7-minus-outline:before { - content: "\e66d"; -} -.icon-ios7-folder-outline:before { - content: "\e66e"; -} -.icon-ios7-calendar:before { - content: "\e66f"; -} -.icon-ios7-calendar-outline:before { - content: "\e670"; -} -.icon-ios7-partlysunny-outline:before { - content: "\e671"; -} -.icon-ios7-cloudy:before { - content: "\e672"; -} -.icon-ios7-eye:before { - content: "\e676"; -} -.icon-ios7-videocam:before { - content: "\e67b"; -} -.icon-ios7-videocam-outline:before { - content: "\e67c"; -} -.icon-ios7-fastforward-outline:before { - content: "\e67d"; -} -.icon-ios7-play-outline:before { - content: "\e67e"; -} -.icon-ios7-cloud-download-outline:before { - content: "\e67f"; -} -.icon-ios7-cloud:before { - content: "\e680"; -} -.icon-ios7-arrow-up:before { - content: "\e62d"; -} -.icon-ios7-arrow-down:before { - content: "\e62e"; -} -.icon-ios7-arrow-right:before { - content: "\e638"; -} -.icon-ios7-arrow-left:before { - content: "\e639"; -} -.icon-ios7-chatbubble:before { - content: "\e643"; -} -.icon-ios7-chatbubble-outline:before { - content: "\e644"; -} -.icon-ios7-refresh:before { - content: "\e673"; -} -.icon-ios7-refresh-empty:before { - content: "\e675"; -} -.icon-ios7-filing-outline:before { - content: "\e677"; -} -.icon-ios7-compose:before { - content: "\e678"; -} -.icon-ios7-chatboxes:before { - content: "\e679"; -} +/*! + Ionicons, v1.5.2 + Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ + https://twitter.com/benjsperry https://twitter.com/ionicframework + MIT License: https://github.com/driftyco/ionicons +*/ +@font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=1.5.2"); src: url("../fonts/ionicons.eot?v=1.5.2#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=1.5.2") format("truetype"), url("../fonts/ionicons.woff?v=1.5.2") format("woff"), url("../fonts/ionicons.svg?v=1.5.2#Ionicons") format("svg"); font-weight: normal; font-style: normal; } +.ion, .ion-loading-a, .ion-loading-b, .ion-loading-c, .ion-loading-d, .ion-looping, .ion-refreshing, .ion-ios7-reloading, .ionicons, .ion-alert:before, .ion-alert-circled:before, .ion-android-add:before, .ion-android-add-contact:before, .ion-android-alarm:before, .ion-android-archive:before, .ion-android-arrow-back:before, .ion-android-arrow-down-left:before, .ion-android-arrow-down-right:before, .ion-android-arrow-forward:before, .ion-android-arrow-up-left:before, .ion-android-arrow-up-right:before, .ion-android-battery:before, .ion-android-book:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-chat:before, .ion-android-checkmark:before, .ion-android-clock:before, .ion-android-close:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-data:before, .ion-android-developer:before, .ion-android-display:before, .ion-android-download:before, .ion-android-drawer:before, .ion-android-dropdown:before, .ion-android-earth:before, .ion-android-folder:before, .ion-android-forums:before, .ion-android-friends:before, .ion-android-hand:before, .ion-android-image:before, .ion-android-inbox:before, .ion-android-information:before, .ion-android-keypad:before, .ion-android-lightbulb:before, .ion-android-locate:before, .ion-android-location:before, .ion-android-mail:before, .ion-android-microphone:before, .ion-android-mixer:before, .ion-android-more:before, .ion-android-note:before, .ion-android-playstore:before, .ion-android-printer:before, .ion-android-promotion:before, .ion-android-reminder:before, .ion-android-remove:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-social:before, .ion-android-social-user:before, .ion-android-sort:before, .ion-android-stair-drawer:before, .ion-android-star:before, .ion-android-stopwatch:before, .ion-android-storage:before, .ion-android-system-back:before, .ion-android-system-home:before, .ion-android-system-windows:before, .ion-android-timer:before, .ion-android-trash:before, .ion-android-user-menu:before, .ion-android-volume:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .ion-chevron-down:before, .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, .ion-contrast:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-edit:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-eye:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-flask:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .ion-game-controller-a:before, .ion-game-controller-b:before, .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .ion-home:before, .ion-icecream:before, .ion-icon-social-google-plus:before, .ion-icon-social-google-plus-outline:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios7-alarm:before, .ion-ios7-alarm-outline:before, .ion-ios7-albums:before, .ion-ios7-albums-outline:before, .ion-ios7-americanfootball:before, .ion-ios7-americanfootball-outline:before, .ion-ios7-analytics:before, .ion-ios7-analytics-outline:before, .ion-ios7-arrow-back:before, .ion-ios7-arrow-down:before, .ion-ios7-arrow-forward:before, .ion-ios7-arrow-left:before, .ion-ios7-arrow-right:before, .ion-ios7-arrow-thin-down:before, .ion-ios7-arrow-thin-left:before, .ion-ios7-arrow-thin-right:before, .ion-ios7-arrow-thin-up:before, .ion-ios7-arrow-up:before, .ion-ios7-at:before, .ion-ios7-at-outline:before, .ion-ios7-barcode:before, .ion-ios7-barcode-outline:before, .ion-ios7-baseball:before, .ion-ios7-baseball-outline:before, .ion-ios7-basketball:before, .ion-ios7-basketball-outline:before, .ion-ios7-bell:before, .ion-ios7-bell-outline:before, .ion-ios7-bolt:before, .ion-ios7-bolt-outline:before, .ion-ios7-bookmarks:before, .ion-ios7-bookmarks-outline:before, .ion-ios7-box:before, .ion-ios7-box-outline:before, .ion-ios7-briefcase:before, .ion-ios7-briefcase-outline:before, .ion-ios7-browsers:before, .ion-ios7-browsers-outline:before, .ion-ios7-calculator:before, .ion-ios7-calculator-outline:before, .ion-ios7-calendar:before, .ion-ios7-calendar-outline:before, .ion-ios7-camera:before, .ion-ios7-camera-outline:before, .ion-ios7-cart:before, .ion-ios7-cart-outline:before, .ion-ios7-chatboxes:before, .ion-ios7-chatboxes-outline:before, .ion-ios7-chatbubble:before, .ion-ios7-chatbubble-outline:before, .ion-ios7-checkmark:before, .ion-ios7-checkmark-empty:before, .ion-ios7-checkmark-outline:before, .ion-ios7-circle-filled:before, .ion-ios7-circle-outline:before, .ion-ios7-clock:before, .ion-ios7-clock-outline:before, .ion-ios7-close:before, .ion-ios7-close-empty:before, .ion-ios7-close-outline:before, .ion-ios7-cloud:before, .ion-ios7-cloud-download:before, .ion-ios7-cloud-download-outline:before, .ion-ios7-cloud-outline:before, .ion-ios7-cloud-upload:before, .ion-ios7-cloud-upload-outline:before, .ion-ios7-cloudy:before, .ion-ios7-cloudy-night:before, .ion-ios7-cloudy-night-outline:before, .ion-ios7-cloudy-outline:before, .ion-ios7-cog:before, .ion-ios7-cog-outline:before, .ion-ios7-compose:before, .ion-ios7-compose-outline:before, .ion-ios7-contact:before, .ion-ios7-contact-outline:before, .ion-ios7-copy:before, .ion-ios7-copy-outline:before, .ion-ios7-download:before, .ion-ios7-download-outline:before, .ion-ios7-drag:before, .ion-ios7-email:before, .ion-ios7-email-outline:before, .ion-ios7-expand:before, .ion-ios7-eye:before, .ion-ios7-eye-outline:before, .ion-ios7-fastforward:before, .ion-ios7-fastforward-outline:before, .ion-ios7-filing:before, .ion-ios7-filing-outline:before, .ion-ios7-film:before, .ion-ios7-film-outline:before, .ion-ios7-flag:before, .ion-ios7-flag-outline:before, .ion-ios7-folder:before, .ion-ios7-folder-outline:before, .ion-ios7-football:before, .ion-ios7-football-outline:before, .ion-ios7-gear:before, .ion-ios7-gear-outline:before, .ion-ios7-glasses:before, .ion-ios7-glasses-outline:before, .ion-ios7-heart:before, .ion-ios7-heart-outline:before, .ion-ios7-help:before, .ion-ios7-help-empty:before, .ion-ios7-help-outline:before, .ion-ios7-home:before, .ion-ios7-home-outline:before, .ion-ios7-infinite:before, .ion-ios7-infinite-outline:before, .ion-ios7-information:before, .ion-ios7-information-empty:before, .ion-ios7-information-outline:before, .ion-ios7-ionic-outline:before, .ion-ios7-keypad:before, .ion-ios7-keypad-outline:before, .ion-ios7-lightbulb:before, .ion-ios7-lightbulb-outline:before, .ion-ios7-location:before, .ion-ios7-location-outline:before, .ion-ios7-locked:before, .ion-ios7-locked-outline:before, .ion-ios7-loop:before, .ion-ios7-loop-strong:before, .ion-ios7-medkit:before, .ion-ios7-medkit-outline:before, .ion-ios7-mic:before, .ion-ios7-mic-off:before, .ion-ios7-mic-outline:before, .ion-ios7-minus:before, .ion-ios7-minus-empty:before, .ion-ios7-minus-outline:before, .ion-ios7-monitor:before, .ion-ios7-monitor-outline:before, .ion-ios7-moon:before, .ion-ios7-moon-outline:before, .ion-ios7-more:before, .ion-ios7-more-outline:before, .ion-ios7-musical-note:before, .ion-ios7-musical-notes:before, .ion-ios7-navigate:before, .ion-ios7-navigate-outline:before, .ion-ios7-paper:before, .ion-ios7-paper-outline:before, .ion-ios7-paperplane:before, .ion-ios7-paperplane-outline:before, .ion-ios7-partlysunny:before, .ion-ios7-partlysunny-outline:before, .ion-ios7-pause:before, .ion-ios7-pause-outline:before, .ion-ios7-paw:before, .ion-ios7-paw-outline:before, .ion-ios7-people:before, .ion-ios7-people-outline:before, .ion-ios7-person:before, .ion-ios7-person-outline:before, .ion-ios7-personadd:before, .ion-ios7-personadd-outline:before, .ion-ios7-photos:before, .ion-ios7-photos-outline:before, .ion-ios7-pie:before, .ion-ios7-pie-outline:before, .ion-ios7-play:before, .ion-ios7-play-outline:before, .ion-ios7-plus:before, .ion-ios7-plus-empty:before, .ion-ios7-plus-outline:before, .ion-ios7-pricetag:before, .ion-ios7-pricetag-outline:before, .ion-ios7-pricetags:before, .ion-ios7-pricetags-outline:before, .ion-ios7-printer:before, .ion-ios7-printer-outline:before, .ion-ios7-pulse:before, .ion-ios7-pulse-strong:before, .ion-ios7-rainy:before, .ion-ios7-rainy-outline:before, .ion-ios7-recording:before, .ion-ios7-recording-outline:before, .ion-ios7-redo:before, .ion-ios7-redo-outline:before, .ion-ios7-refresh:before, .ion-ios7-refresh-empty:before, .ion-ios7-refresh-outline:before, .ion-ios7-reload:before, .ion-ios7-reloading:before, .ion-ios7-reverse-camera:before, .ion-ios7-reverse-camera-outline:before, .ion-ios7-rewind:before, .ion-ios7-rewind-outline:before, .ion-ios7-search:before, .ion-ios7-search-strong:before, .ion-ios7-settings:before, .ion-ios7-settings-strong:before, .ion-ios7-shrink:before, .ion-ios7-skipbackward:before, .ion-ios7-skipbackward-outline:before, .ion-ios7-skipforward:before, .ion-ios7-skipforward-outline:before, .ion-ios7-snowy:before, .ion-ios7-speedometer:before, .ion-ios7-speedometer-outline:before, .ion-ios7-star:before, .ion-ios7-star-half:before, .ion-ios7-star-outline:before, .ion-ios7-stopwatch:before, .ion-ios7-stopwatch-outline:before, .ion-ios7-sunny:before, .ion-ios7-sunny-outline:before, .ion-ios7-telephone:before, .ion-ios7-telephone-outline:before, .ion-ios7-tennisball:before, .ion-ios7-tennisball-outline:before, .ion-ios7-thunderstorm:before, .ion-ios7-thunderstorm-outline:before, .ion-ios7-time:before, .ion-ios7-time-outline:before, .ion-ios7-timer:before, .ion-ios7-timer-outline:before, .ion-ios7-toggle:before, .ion-ios7-toggle-outline:before, .ion-ios7-trash:before, .ion-ios7-trash-outline:before, .ion-ios7-undo:before, .ion-ios7-undo-outline:before, .ion-ios7-unlocked:before, .ion-ios7-unlocked-outline:before, .ion-ios7-upload:before, .ion-ios7-upload-outline:before, .ion-ios7-videocam:before, .ion-ios7-videocam-outline:before, .ion-ios7-volume-high:before, .ion-ios7-volume-low:before, .ion-ios7-wineglass:before, .ion-ios7-wineglass-outline:before, .ion-ios7-world:before, .ion-ios7-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-loading-a:before, .ion-load-b:before, .ion-loading-b:before, .ion-load-c:before, .ion-loading-c:before, .ion-load-d:before, .ion-loading-d:before, .ion-location:before, .ion-locked:before, .ion-log-in:before, .ion-log-out:before, .ion-loop:before, .ion-looping:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .ion-navicon-round:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .ion-person:before, .ion-person-add:before, .ion-person-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .ion-refresh:before, .ion-refreshing:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .ion-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .ion-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } + +.ion-spin, .ion-loading-a, .ion-loading-b, .ion-loading-c, .ion-loading-d, .ion-looping, .ion-refreshing, .ion-ios7-reloading { -webkit-animation: spin 1s infinite linear; -moz-animation: spin 1s infinite linear; -o-animation: spin 1s infinite linear; animation: spin 1s infinite linear; } + +@-moz-keyframes spin { 0% { -moz-transform: rotate(0deg); } + 100% { -moz-transform: rotate(359deg); } } +@-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(359deg); } } +@-o-keyframes spin { 0% { -o-transform: rotate(0deg); } + 100% { -o-transform: rotate(359deg); } } +@-ms-keyframes spin { 0% { -ms-transform: rotate(0deg); } + 100% { -ms-transform: rotate(359deg); } } +@keyframes spin { 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } } +.ion-loading-a { -webkit-animation-timing-function: steps(8, start); -moz-animation-timing-function: steps(8, start); animation-timing-function: steps(8, start); } + +.ion-alert:before { content: "\f101"; } + +.ion-alert-circled:before { content: "\f100"; } + +.ion-android-add:before { content: "\f2c7"; } + +.ion-android-add-contact:before { content: "\f2c6"; } + +.ion-android-alarm:before { content: "\f2c8"; } + +.ion-android-archive:before { content: "\f2c9"; } + +.ion-android-arrow-back:before { content: "\f2ca"; } + +.ion-android-arrow-down-left:before { content: "\f2cb"; } + +.ion-android-arrow-down-right:before { content: "\f2cc"; } + +.ion-android-arrow-forward:before { content: "\f30f"; } + +.ion-android-arrow-up-left:before { content: "\f2cd"; } + +.ion-android-arrow-up-right:before { content: "\f2ce"; } + +.ion-android-battery:before { content: "\f2cf"; } + +.ion-android-book:before { content: "\f2d0"; } + +.ion-android-calendar:before { content: "\f2d1"; } + +.ion-android-call:before { content: "\f2d2"; } + +.ion-android-camera:before { content: "\f2d3"; } + +.ion-android-chat:before { content: "\f2d4"; } + +.ion-android-checkmark:before { content: "\f2d5"; } + +.ion-android-clock:before { content: "\f2d6"; } + +.ion-android-close:before { content: "\f2d7"; } + +.ion-android-contact:before { content: "\f2d8"; } + +.ion-android-contacts:before { content: "\f2d9"; } + +.ion-android-data:before { content: "\f2da"; } + +.ion-android-developer:before { content: "\f2db"; } + +.ion-android-display:before { content: "\f2dc"; } + +.ion-android-download:before { content: "\f2dd"; } + +.ion-android-drawer:before { content: "\f310"; } + +.ion-android-dropdown:before { content: "\f2de"; } + +.ion-android-earth:before { content: "\f2df"; } + +.ion-android-folder:before { content: "\f2e0"; } + +.ion-android-forums:before { content: "\f2e1"; } + +.ion-android-friends:before { content: "\f2e2"; } + +.ion-android-hand:before { content: "\f2e3"; } + +.ion-android-image:before { content: "\f2e4"; } + +.ion-android-inbox:before { content: "\f2e5"; } + +.ion-android-information:before { content: "\f2e6"; } + +.ion-android-keypad:before { content: "\f2e7"; } + +.ion-android-lightbulb:before { content: "\f2e8"; } + +.ion-android-locate:before { content: "\f2e9"; } + +.ion-android-location:before { content: "\f2ea"; } + +.ion-android-mail:before { content: "\f2eb"; } + +.ion-android-microphone:before { content: "\f2ec"; } + +.ion-android-mixer:before { content: "\f2ed"; } + +.ion-android-more:before { content: "\f2ee"; } + +.ion-android-note:before { content: "\f2ef"; } + +.ion-android-playstore:before { content: "\f2f0"; } + +.ion-android-printer:before { content: "\f2f1"; } + +.ion-android-promotion:before { content: "\f2f2"; } + +.ion-android-reminder:before { content: "\f2f3"; } + +.ion-android-remove:before { content: "\f2f4"; } + +.ion-android-search:before { content: "\f2f5"; } + +.ion-android-send:before { content: "\f2f6"; } + +.ion-android-settings:before { content: "\f2f7"; } + +.ion-android-share:before { content: "\f2f8"; } + +.ion-android-social:before { content: "\f2fa"; } + +.ion-android-social-user:before { content: "\f2f9"; } + +.ion-android-sort:before { content: "\f2fb"; } + +.ion-android-stair-drawer:before { content: "\f311"; } + +.ion-android-star:before { content: "\f2fc"; } + +.ion-android-stopwatch:before { content: "\f2fd"; } + +.ion-android-storage:before { content: "\f2fe"; } + +.ion-android-system-back:before { content: "\f2ff"; } + +.ion-android-system-home:before { content: "\f300"; } + +.ion-android-system-windows:before { content: "\f301"; } + +.ion-android-timer:before { content: "\f302"; } + +.ion-android-trash:before { content: "\f303"; } + +.ion-android-user-menu:before { content: "\f312"; } + +.ion-android-volume:before { content: "\f304"; } + +.ion-android-wifi:before { content: "\f305"; } + +.ion-aperture:before { content: "\f313"; } + +.ion-archive:before { content: "\f102"; } + +.ion-arrow-down-a:before { content: "\f103"; } + +.ion-arrow-down-b:before { content: "\f104"; } + +.ion-arrow-down-c:before { content: "\f105"; } + +.ion-arrow-expand:before { content: "\f25e"; } + +.ion-arrow-graph-down-left:before { content: "\f25f"; } + +.ion-arrow-graph-down-right:before { content: "\f260"; } + +.ion-arrow-graph-up-left:before { content: "\f261"; } + +.ion-arrow-graph-up-right:before { content: "\f262"; } + +.ion-arrow-left-a:before { content: "\f106"; } + +.ion-arrow-left-b:before { content: "\f107"; } + +.ion-arrow-left-c:before { content: "\f108"; } + +.ion-arrow-move:before { content: "\f263"; } + +.ion-arrow-resize:before { content: "\f264"; } + +.ion-arrow-return-left:before { content: "\f265"; } + +.ion-arrow-return-right:before { content: "\f266"; } + +.ion-arrow-right-a:before { content: "\f109"; } + +.ion-arrow-right-b:before { content: "\f10a"; } + +.ion-arrow-right-c:before { content: "\f10b"; } + +.ion-arrow-shrink:before { content: "\f267"; } + +.ion-arrow-swap:before { content: "\f268"; } + +.ion-arrow-up-a:before { content: "\f10c"; } + +.ion-arrow-up-b:before { content: "\f10d"; } + +.ion-arrow-up-c:before { content: "\f10e"; } + +.ion-asterisk:before { content: "\f314"; } + +.ion-at:before { content: "\f10f"; } + +.ion-bag:before { content: "\f110"; } + +.ion-battery-charging:before { content: "\f111"; } + +.ion-battery-empty:before { content: "\f112"; } + +.ion-battery-full:before { content: "\f113"; } + +.ion-battery-half:before { content: "\f114"; } + +.ion-battery-low:before { content: "\f115"; } + +.ion-beaker:before { content: "\f269"; } + +.ion-beer:before { content: "\f26a"; } + +.ion-bluetooth:before { content: "\f116"; } + +.ion-bonfire:before { content: "\f315"; } + +.ion-bookmark:before { content: "\f26b"; } + +.ion-briefcase:before { content: "\f26c"; } + +.ion-bug:before { content: "\f2be"; } + +.ion-calculator:before { content: "\f26d"; } + +.ion-calendar:before { content: "\f117"; } + +.ion-camera:before { content: "\f118"; } + +.ion-card:before { content: "\f119"; } + +.ion-cash:before { content: "\f316"; } + +.ion-chatbox:before { content: "\f11b"; } + +.ion-chatbox-working:before { content: "\f11a"; } + +.ion-chatboxes:before { content: "\f11c"; } + +.ion-chatbubble:before { content: "\f11e"; } + +.ion-chatbubble-working:before { content: "\f11d"; } + +.ion-chatbubbles:before { content: "\f11f"; } + +.ion-checkmark:before { content: "\f122"; } + +.ion-checkmark-circled:before { content: "\f120"; } + +.ion-checkmark-round:before { content: "\f121"; } + +.ion-chevron-down:before { content: "\f123"; } + +.ion-chevron-left:before { content: "\f124"; } + +.ion-chevron-right:before { content: "\f125"; } + +.ion-chevron-up:before { content: "\f126"; } + +.ion-clipboard:before { content: "\f127"; } + +.ion-clock:before { content: "\f26e"; } + +.ion-close:before { content: "\f12a"; } + +.ion-close-circled:before { content: "\f128"; } + +.ion-close-round:before { content: "\f129"; } + +.ion-closed-captioning:before { content: "\f317"; } + +.ion-cloud:before { content: "\f12b"; } + +.ion-code:before { content: "\f271"; } + +.ion-code-download:before { content: "\f26f"; } + +.ion-code-working:before { content: "\f270"; } + +.ion-coffee:before { content: "\f272"; } + +.ion-compass:before { content: "\f273"; } + +.ion-compose:before { content: "\f12c"; } + +.ion-connection-bars:before { content: "\f274"; } + +.ion-contrast:before { content: "\f275"; } + +.ion-cube:before { content: "\f318"; } + +.ion-disc:before { content: "\f12d"; } + +.ion-document:before { content: "\f12f"; } + +.ion-document-text:before { content: "\f12e"; } + +.ion-drag:before { content: "\f130"; } + +.ion-earth:before { content: "\f276"; } + +.ion-edit:before { content: "\f2bf"; } + +.ion-egg:before { content: "\f277"; } + +.ion-eject:before { content: "\f131"; } + +.ion-email:before { content: "\f132"; } + +.ion-eye:before { content: "\f133"; } + +.ion-eye-disabled:before { content: "\f306"; } + +.ion-female:before { content: "\f278"; } + +.ion-filing:before { content: "\f134"; } + +.ion-film-marker:before { content: "\f135"; } + +.ion-fireball:before { content: "\f319"; } + +.ion-flag:before { content: "\f279"; } + +.ion-flame:before { content: "\f31a"; } + +.ion-flash:before { content: "\f137"; } + +.ion-flash-off:before { content: "\f136"; } + +.ion-flask:before { content: "\f138"; } + +.ion-folder:before { content: "\f139"; } + +.ion-fork:before { content: "\f27a"; } + +.ion-fork-repo:before { content: "\f2c0"; } + +.ion-forward:before { content: "\f13a"; } + +.ion-funnel:before { content: "\f31b"; } + +.ion-game-controller-a:before { content: "\f13b"; } + +.ion-game-controller-b:before { content: "\f13c"; } + +.ion-gear-a:before { content: "\f13d"; } + +.ion-gear-b:before { content: "\f13e"; } + +.ion-grid:before { content: "\f13f"; } + +.ion-hammer:before { content: "\f27b"; } + +.ion-happy:before { content: "\f31c"; } + +.ion-headphone:before { content: "\f140"; } + +.ion-heart:before { content: "\f141"; } + +.ion-heart-broken:before { content: "\f31d"; } + +.ion-help:before { content: "\f143"; } + +.ion-help-buoy:before { content: "\f27c"; } + +.ion-help-circled:before { content: "\f142"; } + +.ion-home:before { content: "\f144"; } + +.ion-icecream:before { content: "\f27d"; } + +.ion-icon-social-google-plus:before { content: "\f146"; } + +.ion-icon-social-google-plus-outline:before { content: "\f145"; } + +.ion-image:before { content: "\f147"; } + +.ion-images:before { content: "\f148"; } + +.ion-information:before { content: "\f14a"; } + +.ion-information-circled:before { content: "\f149"; } + +.ion-ionic:before { content: "\f14b"; } + +.ion-ios7-alarm:before { content: "\f14d"; } + +.ion-ios7-alarm-outline:before { content: "\f14c"; } + +.ion-ios7-albums:before { content: "\f14f"; } + +.ion-ios7-albums-outline:before { content: "\f14e"; } + +.ion-ios7-americanfootball:before { content: "\f31f"; } + +.ion-ios7-americanfootball-outline:before { content: "\f31e"; } + +.ion-ios7-analytics:before { content: "\f321"; } + +.ion-ios7-analytics-outline:before { content: "\f320"; } + +.ion-ios7-arrow-back:before { content: "\f150"; } + +.ion-ios7-arrow-down:before { content: "\f151"; } + +.ion-ios7-arrow-forward:before { content: "\f152"; } + +.ion-ios7-arrow-left:before { content: "\f153"; } + +.ion-ios7-arrow-right:before { content: "\f154"; } + +.ion-ios7-arrow-thin-down:before { content: "\f27e"; } + +.ion-ios7-arrow-thin-left:before { content: "\f27f"; } + +.ion-ios7-arrow-thin-right:before { content: "\f280"; } + +.ion-ios7-arrow-thin-up:before { content: "\f281"; } + +.ion-ios7-arrow-up:before { content: "\f155"; } + +.ion-ios7-at:before { content: "\f157"; } + +.ion-ios7-at-outline:before { content: "\f156"; } + +.ion-ios7-barcode:before { content: "\f323"; } + +.ion-ios7-barcode-outline:before { content: "\f322"; } + +.ion-ios7-baseball:before { content: "\f325"; } + +.ion-ios7-baseball-outline:before { content: "\f324"; } + +.ion-ios7-basketball:before { content: "\f327"; } + +.ion-ios7-basketball-outline:before { content: "\f326"; } + +.ion-ios7-bell:before { content: "\f159"; } + +.ion-ios7-bell-outline:before { content: "\f158"; } + +.ion-ios7-bolt:before { content: "\f15b"; } + +.ion-ios7-bolt-outline:before { content: "\f15a"; } + +.ion-ios7-bookmarks:before { content: "\f15d"; } + +.ion-ios7-bookmarks-outline:before { content: "\f15c"; } + +.ion-ios7-box:before { content: "\f15f"; } + +.ion-ios7-box-outline:before { content: "\f15e"; } + +.ion-ios7-briefcase:before { content: "\f283"; } + +.ion-ios7-briefcase-outline:before { content: "\f282"; } + +.ion-ios7-browsers:before { content: "\f161"; } + +.ion-ios7-browsers-outline:before { content: "\f160"; } + +.ion-ios7-calculator:before { content: "\f285"; } + +.ion-ios7-calculator-outline:before { content: "\f284"; } + +.ion-ios7-calendar:before { content: "\f163"; } + +.ion-ios7-calendar-outline:before { content: "\f162"; } + +.ion-ios7-camera:before { content: "\f165"; } + +.ion-ios7-camera-outline:before { content: "\f164"; } + +.ion-ios7-cart:before { content: "\f167"; } + +.ion-ios7-cart-outline:before { content: "\f166"; } + +.ion-ios7-chatboxes:before { content: "\f169"; } + +.ion-ios7-chatboxes-outline:before { content: "\f168"; } + +.ion-ios7-chatbubble:before { content: "\f16b"; } + +.ion-ios7-chatbubble-outline:before { content: "\f16a"; } + +.ion-ios7-checkmark:before { content: "\f16e"; } + +.ion-ios7-checkmark-empty:before { content: "\f16c"; } + +.ion-ios7-checkmark-outline:before { content: "\f16d"; } + +.ion-ios7-circle-filled:before { content: "\f16f"; } + +.ion-ios7-circle-outline:before { content: "\f170"; } + +.ion-ios7-clock:before { content: "\f172"; } + +.ion-ios7-clock-outline:before { content: "\f171"; } + +.ion-ios7-close:before { content: "\f2bc"; } + +.ion-ios7-close-empty:before { content: "\f2bd"; } + +.ion-ios7-close-outline:before { content: "\f2bb"; } + +.ion-ios7-cloud:before { content: "\f178"; } + +.ion-ios7-cloud-download:before { content: "\f174"; } + +.ion-ios7-cloud-download-outline:before { content: "\f173"; } + +.ion-ios7-cloud-outline:before { content: "\f175"; } + +.ion-ios7-cloud-upload:before { content: "\f177"; } + +.ion-ios7-cloud-upload-outline:before { content: "\f176"; } + +.ion-ios7-cloudy:before { content: "\f17a"; } + +.ion-ios7-cloudy-night:before { content: "\f308"; } + +.ion-ios7-cloudy-night-outline:before { content: "\f307"; } + +.ion-ios7-cloudy-outline:before { content: "\f179"; } + +.ion-ios7-cog:before { content: "\f17c"; } + +.ion-ios7-cog-outline:before { content: "\f17b"; } + +.ion-ios7-compose:before { content: "\f17e"; } + +.ion-ios7-compose-outline:before { content: "\f17d"; } + +.ion-ios7-contact:before { content: "\f180"; } + +.ion-ios7-contact-outline:before { content: "\f17f"; } + +.ion-ios7-copy:before { content: "\f182"; } + +.ion-ios7-copy-outline:before { content: "\f181"; } + +.ion-ios7-download:before { content: "\f184"; } + +.ion-ios7-download-outline:before { content: "\f183"; } + +.ion-ios7-drag:before { content: "\f185"; } + +.ion-ios7-email:before { content: "\f187"; } + +.ion-ios7-email-outline:before { content: "\f186"; } + +.ion-ios7-expand:before { content: "\f30d"; } + +.ion-ios7-eye:before { content: "\f189"; } + +.ion-ios7-eye-outline:before { content: "\f188"; } + +.ion-ios7-fastforward:before { content: "\f18b"; } + +.ion-ios7-fastforward-outline:before { content: "\f18a"; } + +.ion-ios7-filing:before { content: "\f18d"; } + +.ion-ios7-filing-outline:before { content: "\f18c"; } + +.ion-ios7-film:before { content: "\f18f"; } + +.ion-ios7-film-outline:before { content: "\f18e"; } + +.ion-ios7-flag:before { content: "\f191"; } + +.ion-ios7-flag-outline:before { content: "\f190"; } + +.ion-ios7-folder:before { content: "\f193"; } + +.ion-ios7-folder-outline:before { content: "\f192"; } + +.ion-ios7-football:before { content: "\f329"; } + +.ion-ios7-football-outline:before { content: "\f328"; } + +.ion-ios7-gear:before { content: "\f195"; } + +.ion-ios7-gear-outline:before { content: "\f194"; } + +.ion-ios7-glasses:before { content: "\f197"; } + +.ion-ios7-glasses-outline:before { content: "\f196"; } + +.ion-ios7-heart:before { content: "\f199"; } + +.ion-ios7-heart-outline:before { content: "\f198"; } + +.ion-ios7-help:before { content: "\f19c"; } + +.ion-ios7-help-empty:before { content: "\f19a"; } + +.ion-ios7-help-outline:before { content: "\f19b"; } + +.ion-ios7-home:before { content: "\f32b"; } + +.ion-ios7-home-outline:before { content: "\f32a"; } + +.ion-ios7-infinite:before { content: "\f19e"; } + +.ion-ios7-infinite-outline:before { content: "\f19d"; } + +.ion-ios7-information:before { content: "\f1a1"; } + +.ion-ios7-information-empty:before { content: "\f19f"; } + +.ion-ios7-information-outline:before { content: "\f1a0"; } + +.ion-ios7-ionic-outline:before { content: "\f1a2"; } + +.ion-ios7-keypad:before { content: "\f1a4"; } + +.ion-ios7-keypad-outline:before { content: "\f1a3"; } + +.ion-ios7-lightbulb:before { content: "\f287"; } + +.ion-ios7-lightbulb-outline:before { content: "\f286"; } + +.ion-ios7-location:before { content: "\f1a6"; } + +.ion-ios7-location-outline:before { content: "\f1a5"; } + +.ion-ios7-locked:before { content: "\f1a8"; } + +.ion-ios7-locked-outline:before { content: "\f1a7"; } + +.ion-ios7-loop:before { content: "\f32d"; } + +.ion-ios7-loop-strong:before { content: "\f32c"; } + +.ion-ios7-medkit:before { content: "\f289"; } + +.ion-ios7-medkit-outline:before { content: "\f288"; } + +.ion-ios7-mic:before { content: "\f1ab"; } + +.ion-ios7-mic-off:before { content: "\f1a9"; } + +.ion-ios7-mic-outline:before { content: "\f1aa"; } + +.ion-ios7-minus:before { content: "\f1ae"; } + +.ion-ios7-minus-empty:before { content: "\f1ac"; } + +.ion-ios7-minus-outline:before { content: "\f1ad"; } + +.ion-ios7-monitor:before { content: "\f1b0"; } + +.ion-ios7-monitor-outline:before { content: "\f1af"; } + +.ion-ios7-moon:before { content: "\f1b2"; } + +.ion-ios7-moon-outline:before { content: "\f1b1"; } + +.ion-ios7-more:before { content: "\f1b4"; } + +.ion-ios7-more-outline:before { content: "\f1b3"; } + +.ion-ios7-musical-note:before { content: "\f1b5"; } + +.ion-ios7-musical-notes:before { content: "\f1b6"; } + +.ion-ios7-navigate:before { content: "\f1b8"; } + +.ion-ios7-navigate-outline:before { content: "\f1b7"; } + +.ion-ios7-paper:before { content: "\f32f"; } + +.ion-ios7-paper-outline:before { content: "\f32e"; } + +.ion-ios7-paperplane:before { content: "\f1ba"; } + +.ion-ios7-paperplane-outline:before { content: "\f1b9"; } + +.ion-ios7-partlysunny:before { content: "\f1bc"; } + +.ion-ios7-partlysunny-outline:before { content: "\f1bb"; } + +.ion-ios7-pause:before { content: "\f1be"; } + +.ion-ios7-pause-outline:before { content: "\f1bd"; } + +.ion-ios7-paw:before { content: "\f331"; } + +.ion-ios7-paw-outline:before { content: "\f330"; } + +.ion-ios7-people:before { content: "\f1c0"; } + +.ion-ios7-people-outline:before { content: "\f1bf"; } + +.ion-ios7-person:before { content: "\f1c2"; } + +.ion-ios7-person-outline:before { content: "\f1c1"; } + +.ion-ios7-personadd:before { content: "\f1c4"; } + +.ion-ios7-personadd-outline:before { content: "\f1c3"; } + +.ion-ios7-photos:before { content: "\f1c6"; } + +.ion-ios7-photos-outline:before { content: "\f1c5"; } + +.ion-ios7-pie:before { content: "\f28b"; } + +.ion-ios7-pie-outline:before { content: "\f28a"; } + +.ion-ios7-play:before { content: "\f1c8"; } + +.ion-ios7-play-outline:before { content: "\f1c7"; } + +.ion-ios7-plus:before { content: "\f1cb"; } + +.ion-ios7-plus-empty:before { content: "\f1c9"; } + +.ion-ios7-plus-outline:before { content: "\f1ca"; } + +.ion-ios7-pricetag:before { content: "\f28d"; } + +.ion-ios7-pricetag-outline:before { content: "\f28c"; } + +.ion-ios7-pricetags:before { content: "\f333"; } + +.ion-ios7-pricetags-outline:before { content: "\f332"; } + +.ion-ios7-printer:before { content: "\f1cd"; } + +.ion-ios7-printer-outline:before { content: "\f1cc"; } + +.ion-ios7-pulse:before { content: "\f335"; } + +.ion-ios7-pulse-strong:before { content: "\f334"; } + +.ion-ios7-rainy:before { content: "\f1cf"; } + +.ion-ios7-rainy-outline:before { content: "\f1ce"; } + +.ion-ios7-recording:before { content: "\f1d1"; } + +.ion-ios7-recording-outline:before { content: "\f1d0"; } + +.ion-ios7-redo:before { content: "\f1d3"; } + +.ion-ios7-redo-outline:before { content: "\f1d2"; } + +.ion-ios7-refresh:before { content: "\f1d6"; } + +.ion-ios7-refresh-empty:before { content: "\f1d4"; } + +.ion-ios7-refresh-outline:before { content: "\f1d5"; } + +.ion-ios7-reload:before, .ion-ios7-reloading:before { content: "\f28e"; } + +.ion-ios7-reverse-camera:before { content: "\f337"; } + +.ion-ios7-reverse-camera-outline:before { content: "\f336"; } + +.ion-ios7-rewind:before { content: "\f1d8"; } + +.ion-ios7-rewind-outline:before { content: "\f1d7"; } + +.ion-ios7-search:before { content: "\f1da"; } + +.ion-ios7-search-strong:before { content: "\f1d9"; } + +.ion-ios7-settings:before { content: "\f339"; } + +.ion-ios7-settings-strong:before { content: "\f338"; } + +.ion-ios7-shrink:before { content: "\f30e"; } + +.ion-ios7-skipbackward:before { content: "\f1dc"; } + +.ion-ios7-skipbackward-outline:before { content: "\f1db"; } + +.ion-ios7-skipforward:before { content: "\f1de"; } + +.ion-ios7-skipforward-outline:before { content: "\f1dd"; } + +.ion-ios7-snowy:before { content: "\f309"; } + +.ion-ios7-speedometer:before { content: "\f290"; } + +.ion-ios7-speedometer-outline:before { content: "\f28f"; } + +.ion-ios7-star:before { content: "\f1e0"; } + +.ion-ios7-star-half:before { content: "\f33a"; } + +.ion-ios7-star-outline:before { content: "\f1df"; } + +.ion-ios7-stopwatch:before { content: "\f1e2"; } + +.ion-ios7-stopwatch-outline:before { content: "\f1e1"; } + +.ion-ios7-sunny:before { content: "\f1e4"; } + +.ion-ios7-sunny-outline:before { content: "\f1e3"; } + +.ion-ios7-telephone:before { content: "\f1e6"; } + +.ion-ios7-telephone-outline:before { content: "\f1e5"; } + +.ion-ios7-tennisball:before { content: "\f33c"; } + +.ion-ios7-tennisball-outline:before { content: "\f33b"; } + +.ion-ios7-thunderstorm:before { content: "\f1e8"; } + +.ion-ios7-thunderstorm-outline:before { content: "\f1e7"; } + +.ion-ios7-time:before { content: "\f292"; } + +.ion-ios7-time-outline:before { content: "\f291"; } + +.ion-ios7-timer:before { content: "\f1ea"; } + +.ion-ios7-timer-outline:before { content: "\f1e9"; } + +.ion-ios7-toggle:before { content: "\f33e"; } + +.ion-ios7-toggle-outline:before { content: "\f33d"; } + +.ion-ios7-trash:before { content: "\f1ec"; } + +.ion-ios7-trash-outline:before { content: "\f1eb"; } + +.ion-ios7-undo:before { content: "\f1ee"; } + +.ion-ios7-undo-outline:before { content: "\f1ed"; } + +.ion-ios7-unlocked:before { content: "\f1f0"; } + +.ion-ios7-unlocked-outline:before { content: "\f1ef"; } + +.ion-ios7-upload:before { content: "\f1f2"; } + +.ion-ios7-upload-outline:before { content: "\f1f1"; } + +.ion-ios7-videocam:before { content: "\f1f4"; } + +.ion-ios7-videocam-outline:before { content: "\f1f3"; } + +.ion-ios7-volume-high:before { content: "\f1f5"; } + +.ion-ios7-volume-low:before { content: "\f1f6"; } + +.ion-ios7-wineglass:before { content: "\f294"; } + +.ion-ios7-wineglass-outline:before { content: "\f293"; } + +.ion-ios7-world:before { content: "\f1f8"; } + +.ion-ios7-world-outline:before { content: "\f1f7"; } + +.ion-ipad:before { content: "\f1f9"; } + +.ion-iphone:before { content: "\f1fa"; } + +.ion-ipod:before { content: "\f1fb"; } + +.ion-jet:before { content: "\f295"; } + +.ion-key:before { content: "\f296"; } + +.ion-knife:before { content: "\f297"; } + +.ion-laptop:before { content: "\f1fc"; } + +.ion-leaf:before { content: "\f1fd"; } + +.ion-levels:before { content: "\f298"; } + +.ion-lightbulb:before { content: "\f299"; } + +.ion-link:before { content: "\f1fe"; } + +.ion-load-a:before, .ion-loading-a:before { content: "\f29a"; } + +.ion-load-b:before, .ion-loading-b:before { content: "\f29b"; } + +.ion-load-c:before, .ion-loading-c:before { content: "\f29c"; } + +.ion-load-d:before, .ion-loading-d:before { content: "\f29d"; } + +.ion-location:before { content: "\f1ff"; } + +.ion-locked:before { content: "\f200"; } + +.ion-log-in:before { content: "\f29e"; } + +.ion-log-out:before { content: "\f29f"; } + +.ion-loop:before, .ion-looping:before { content: "\f201"; } + +.ion-magnet:before { content: "\f2a0"; } + +.ion-male:before { content: "\f2a1"; } + +.ion-man:before { content: "\f202"; } + +.ion-map:before { content: "\f203"; } + +.ion-medkit:before { content: "\f2a2"; } + +.ion-merge:before { content: "\f33f"; } + +.ion-mic-a:before { content: "\f204"; } + +.ion-mic-b:before { content: "\f205"; } + +.ion-mic-c:before { content: "\f206"; } + +.ion-minus:before { content: "\f209"; } + +.ion-minus-circled:before { content: "\f207"; } + +.ion-minus-round:before { content: "\f208"; } + +.ion-model-s:before { content: "\f2c1"; } + +.ion-monitor:before { content: "\f20a"; } + +.ion-more:before { content: "\f20b"; } + +.ion-mouse:before { content: "\f340"; } + +.ion-music-note:before { content: "\f20c"; } + +.ion-navicon:before { content: "\f20e"; } + +.ion-navicon-round:before { content: "\f20d"; } + +.ion-navigate:before { content: "\f2a3"; } + +.ion-network:before { content: "\f341"; } + +.ion-no-smoking:before { content: "\f2c2"; } + +.ion-nuclear:before { content: "\f2a4"; } + +.ion-outlet:before { content: "\f342"; } + +.ion-paper-airplane:before { content: "\f2c3"; } + +.ion-paperclip:before { content: "\f20f"; } + +.ion-pause:before { content: "\f210"; } + +.ion-person:before { content: "\f213"; } + +.ion-person-add:before { content: "\f211"; } + +.ion-person-stalker:before { content: "\f212"; } + +.ion-pie-graph:before { content: "\f2a5"; } + +.ion-pin:before { content: "\f2a6"; } + +.ion-pinpoint:before { content: "\f2a7"; } + +.ion-pizza:before { content: "\f2a8"; } + +.ion-plane:before { content: "\f214"; } + +.ion-planet:before { content: "\f343"; } + +.ion-play:before { content: "\f215"; } + +.ion-playstation:before { content: "\f30a"; } + +.ion-plus:before { content: "\f218"; } + +.ion-plus-circled:before { content: "\f216"; } + +.ion-plus-round:before { content: "\f217"; } + +.ion-podium:before { content: "\f344"; } + +.ion-pound:before { content: "\f219"; } + +.ion-power:before { content: "\f2a9"; } + +.ion-pricetag:before { content: "\f2aa"; } + +.ion-pricetags:before { content: "\f2ab"; } + +.ion-printer:before { content: "\f21a"; } + +.ion-pull-request:before { content: "\f345"; } + +.ion-qr-scanner:before { content: "\f346"; } + +.ion-quote:before { content: "\f347"; } + +.ion-radio-waves:before { content: "\f2ac"; } + +.ion-record:before { content: "\f21b"; } + +.ion-refresh:before, .ion-refreshing:before { content: "\f21c"; } + +.ion-reply:before { content: "\f21e"; } + +.ion-reply-all:before { content: "\f21d"; } + +.ion-ribbon-a:before { content: "\f348"; } + +.ion-ribbon-b:before { content: "\f349"; } + +.ion-sad:before { content: "\f34a"; } + +.ion-scissors:before { content: "\f34b"; } + +.ion-search:before { content: "\f21f"; } + +.ion-settings:before { content: "\f2ad"; } + +.ion-share:before { content: "\f220"; } + +.ion-shuffle:before { content: "\f221"; } + +.ion-skip-backward:before { content: "\f222"; } + +.ion-skip-forward:before { content: "\f223"; } + +.ion-social-android:before { content: "\f225"; } + +.ion-social-android-outline:before { content: "\f224"; } + +.ion-social-apple:before { content: "\f227"; } + +.ion-social-apple-outline:before { content: "\f226"; } + +.ion-social-bitcoin:before { content: "\f2af"; } + +.ion-social-bitcoin-outline:before { content: "\f2ae"; } + +.ion-social-buffer:before { content: "\f229"; } + +.ion-social-buffer-outline:before { content: "\f228"; } + +.ion-social-designernews:before { content: "\f22b"; } + +.ion-social-designernews-outline:before { content: "\f22a"; } + +.ion-social-dribbble:before { content: "\f22d"; } + +.ion-social-dribbble-outline:before { content: "\f22c"; } + +.ion-social-dropbox:before { content: "\f22f"; } + +.ion-social-dropbox-outline:before { content: "\f22e"; } + +.ion-social-facebook:before { content: "\f231"; } + +.ion-social-facebook-outline:before { content: "\f230"; } + +.ion-social-foursquare:before { content: "\f34d"; } + +.ion-social-foursquare-outline:before { content: "\f34c"; } + +.ion-social-freebsd-devil:before { content: "\f2c4"; } + +.ion-social-github:before { content: "\f233"; } + +.ion-social-github-outline:before { content: "\f232"; } + +.ion-social-google:before { content: "\f34f"; } + +.ion-social-google-outline:before { content: "\f34e"; } + +.ion-social-googleplus:before { content: "\f235"; } + +.ion-social-googleplus-outline:before { content: "\f234"; } + +.ion-social-hackernews:before { content: "\f237"; } + +.ion-social-hackernews-outline:before { content: "\f236"; } + +.ion-social-instagram:before { content: "\f351"; } + +.ion-social-instagram-outline:before { content: "\f350"; } + +.ion-social-linkedin:before { content: "\f239"; } + +.ion-social-linkedin-outline:before { content: "\f238"; } + +.ion-social-pinterest:before { content: "\f2b1"; } + +.ion-social-pinterest-outline:before { content: "\f2b0"; } + +.ion-social-reddit:before { content: "\f23b"; } + +.ion-social-reddit-outline:before { content: "\f23a"; } + +.ion-social-rss:before { content: "\f23d"; } + +.ion-social-rss-outline:before { content: "\f23c"; } + +.ion-social-skype:before { content: "\f23f"; } + +.ion-social-skype-outline:before { content: "\f23e"; } + +.ion-social-tumblr:before { content: "\f241"; } + +.ion-social-tumblr-outline:before { content: "\f240"; } + +.ion-social-tux:before { content: "\f2c5"; } + +.ion-social-twitter:before { content: "\f243"; } + +.ion-social-twitter-outline:before { content: "\f242"; } + +.ion-social-usd:before { content: "\f353"; } + +.ion-social-usd-outline:before { content: "\f352"; } + +.ion-social-vimeo:before { content: "\f245"; } + +.ion-social-vimeo-outline:before { content: "\f244"; } + +.ion-social-windows:before { content: "\f247"; } + +.ion-social-windows-outline:before { content: "\f246"; } + +.ion-social-wordpress:before { content: "\f249"; } + +.ion-social-wordpress-outline:before { content: "\f248"; } + +.ion-social-yahoo:before { content: "\f24b"; } + +.ion-social-yahoo-outline:before { content: "\f24a"; } + +.ion-social-youtube:before { content: "\f24d"; } + +.ion-social-youtube-outline:before { content: "\f24c"; } + +.ion-speakerphone:before { content: "\f2b2"; } + +.ion-speedometer:before { content: "\f2b3"; } + +.ion-spoon:before { content: "\f2b4"; } + +.ion-star:before { content: "\f24e"; } + +.ion-stats-bars:before { content: "\f2b5"; } + +.ion-steam:before { content: "\f30b"; } + +.ion-stop:before { content: "\f24f"; } + +.ion-thermometer:before { content: "\f2b6"; } + +.ion-thumbsdown:before { content: "\f250"; } + +.ion-thumbsup:before { content: "\f251"; } + +.ion-toggle:before { content: "\f355"; } + +.ion-toggle-filled:before { content: "\f354"; } + +.ion-trash-a:before { content: "\f252"; } + +.ion-trash-b:before { content: "\f253"; } + +.ion-trophy:before { content: "\f356"; } + +.ion-umbrella:before { content: "\f2b7"; } + +.ion-university:before { content: "\f357"; } + +.ion-unlocked:before { content: "\f254"; } + +.ion-upload:before { content: "\f255"; } + +.ion-usb:before { content: "\f2b8"; } + +.ion-videocamera:before { content: "\f256"; } + +.ion-volume-high:before { content: "\f257"; } + +.ion-volume-low:before { content: "\f258"; } + +.ion-volume-medium:before { content: "\f259"; } + +.ion-volume-mute:before { content: "\f25a"; } + +.ion-wand:before { content: "\f358"; } + +.ion-waterdrop:before { content: "\f25b"; } + +.ion-wifi:before { content: "\f25c"; } + +.ion-wineglass:before { content: "\f2b9"; } + +.ion-woman:before { content: "\f25d"; } + +.ion-wrench:before { content: "\f2ba"; } + +.ion-xbox:before { content: "\f30c"; } diff --git a/views/controls/builder/settings.ejs b/views/controls/builder/settings.ejs index dd2496b..aae67d0 100644 --- a/views/controls/builder/settings.ejs +++ b/views/controls/builder/settings.ejs @@ -4,7 +4,7 @@ diff --git a/views/controls/builder/toolbar.ejs b/views/controls/builder/toolbar.ejs index a00249c..8b2e9b8 100644 --- a/views/controls/builder/toolbar.ejs +++ b/views/controls/builder/toolbar.ejs @@ -2,33 +2,33 @@ + class="ion-ios7-photos-outline">
+ class="ion-ios7-trash-outline"> + class="ion-ios7-compose-outline">
diff --git a/views/controls/editor/media-drawer.ejs b/views/controls/editor/media-drawer.ejs index 3d95fb9..10a160e 100644 --- a/views/controls/editor/media-drawer.ejs +++ b/views/controls/editor/media-drawer.ejs @@ -1,7 +1,7 @@
-
+
Upload File
diff --git a/views/controls/editor/media-editor.ejs b/views/controls/editor/media-editor.ejs index 305a602..f5e3b5b 100644 --- a/views/controls/editor/media-editor.ejs +++ b/views/controls/editor/media-editor.ejs @@ -13,8 +13,8 @@
- - + + + class="ion-ios7-keypad-outline"> + class="ion-ios7-sunny-outline"> [[ if (user.username == "test12343") { ]] + class="ion-ios7-compose-outline"> [[ } ]] + class="ion-key">
diff --git a/views/controls/editor/wallpaper.ejs b/views/controls/editor/wallpaper.ejs index 95cf827..01cf771 100644 --- a/views/controls/editor/wallpaper.ejs +++ b/views/controls/editor/wallpaper.ejs @@ -3,12 +3,12 @@ Add custom wallpaper to walls. Begin by uploading a pattern. Or try this one -> -
+
- +
@@ -17,9 +17,14 @@ -->
- +
+ +
+ + +
diff --git a/views/controls/reader/media-player.ejs b/views/controls/reader/media-player.ejs index ca03ec8..0ca89c5 100644 --- a/views/controls/reader/media-player.ejs +++ b/views/controls/reader/media-player.ejs @@ -1,13 +1,13 @@
- - + + - - + + diff --git a/views/home.ejs b/views/home.ejs index a6f5a88..51d5a92 100755 --- a/views/home.ejs +++ b/views/home.ejs @@ -17,7 +17,7 @@
Create 3D Rooms
-
+
Watch video.
diff --git a/views/partials/header.ejs b/views/partials/header.ejs index 1b7b498..ea579cc 100644 --- a/views/partials/header.ejs +++ b/views/partials/header.ejs @@ -69,7 +69,7 @@ [[ } ]] [[ if (opt.editing) { ]] - + [[ } ]] [[ } else { ]] diff --git a/views/partials/sign-in.ejs b/views/partials/sign-in.ejs index 98f0acc..08c9e99 100644 --- a/views/partials/sign-in.ejs +++ b/views/partials/sign-in.ejs @@ -5,7 +5,7 @@
- +
  • @@ -38,7 +38,7 @@
    - +
  • diff --git a/views/profile.ejs b/views/profile.ejs index 9cfb40d..22c824c 100644 --- a/views/profile.ejs +++ b/views/profile.ejs @@ -14,7 +14,7 @@
  • [[ } else { ]]
    - +
    [[ } ]]
    -- cgit v1.2.3-70-g09d2 From f28ffa4087ce761040029ba61e2a67b1b37a0909 Mon Sep 17 00:00:00 2001 From: ryderr Date: Tue, 7 Oct 2014 16:15:21 -0400 Subject: icon stuff --- views/controls/editor/toolbar.ejs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/views/controls/editor/toolbar.ejs b/views/controls/editor/toolbar.ejs index f9d91af..2fad418 100644 --- a/views/controls/editor/toolbar.ejs +++ b/views/controls/editor/toolbar.ejs @@ -3,39 +3,39 @@ + class="ion-ios7-photos-outline"> + class="ion-ios7-keypad-outline"> + class="ion-ios7-sunny-outline"> [[ if (user.username == "test12343") { ]] + class="ion-ios7-compose-outline"> [[ } ]] + class="ion-key">
    -- cgit v1.2.3-70-g09d2 From 816c603b03f037fecde9168daccaa5bd344d4c0d Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 16:37:26 -0400 Subject: nomenclature for addressing floors, ceilings --- .../javascripts/rectangles/engine/rooms/_walls.js | 11 ++ .../javascripts/rectangles/engine/rooms/clipper.js | 2 +- .../javascripts/rectangles/engine/rooms/grouper.js | 19 +++ .../assets/javascripts/rectangles/models/floor.js | 146 +++++++++++++++++++++ .../assets/javascripts/rectangles/models/room.js | 2 +- .../assets/javascripts/rectangles/models/wall.js | 6 +- .../javascripts/rectangles/util/constants.js | 3 +- public/assets/javascripts/ui/editor/TextEditor.js | 5 +- views/partials/scripts.ejs | 1 + 9 files changed, 186 insertions(+), 9 deletions(-) create mode 100644 public/assets/javascripts/rectangles/models/floor.js diff --git a/public/assets/javascripts/rectangles/engine/rooms/_walls.js b/public/assets/javascripts/rectangles/engine/rooms/_walls.js index f0cd558..b3611c8 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/_walls.js +++ b/public/assets/javascripts/rectangles/engine/rooms/_walls.js @@ -35,6 +35,7 @@ var base = this base.list = [] + base.floors = [] base.lookup = {} base.colors = {} @@ -57,11 +58,21 @@ base.lookup[wall.id] = wall }) } + + base.assignFloors = function(floors){ + base.floors = floors + floors.forEach(function(floor){ + base.lookup[floor.id] = floor + }) + } base.bind = function(){ base.list.forEach(function(wall){ wall.bind() }) + base.floors.forEach(function(floor){ + floor.bind() + }) } base.count = function(){ diff --git a/public/assets/javascripts/rectangles/engine/rooms/clipper.js b/public/assets/javascripts/rectangles/engine/rooms/clipper.js index 33e3a84..0382758 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/clipper.js +++ b/public/assets/javascripts/rectangles/engine/rooms/clipper.js @@ -49,7 +49,7 @@ Rooms.regions = regions = [] return } - + base.reset_rects() base.clip_rects() var culled = base.cull_rects_iterative() diff --git a/public/assets/javascripts/rectangles/engine/rooms/grouper.js b/public/assets/javascripts/rectangles/engine/rooms/grouper.js index 663d29d..ec776a2 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/grouper.js +++ b/public/assets/javascripts/rectangles/engine/rooms/grouper.js @@ -48,13 +48,16 @@ base.build = function (){ var walls = [] + var floors = [] var collections = base.collect() base.cull(collections) base.group(walls, collections, FRONT) base.group(walls, collections, BACK) base.group(walls, collections, LEFT) base.group(walls, collections, RIGHT) + base.groupFloors(floors, collections) Walls.assign( walls ) + Walls.assignFloors( floors ) Walls.bind() } base.collect = function(){ @@ -63,12 +66,16 @@ collections[BACK] = [] collections[LEFT] = [] collections[RIGHT] = [] + collections[FLOOR] = [] + collections[CEILING] = [] Rooms.forEach(function(room){ room.mx_walls.forEach(function(mx){ var side = mx.side || mx.half_side collections[side].push(mx) }) + collections[FLOOR] = collections[FLOOR].concat( room.mx_floor ) + collections[CEILING] = collections[CEILING].concat( room.mx_ceiling ) }) base.cull(collections) @@ -161,6 +168,18 @@ return walls } + base.groupFloors = function(floors, collections){ + var floor = new Floor ({ + id: 'floor', + mx: collections[FLOOR] + }) + var ceiling = new Floor ({ + id: 'ceiling', + mx: collections[CEILING] + }) + floors.push(floor) + floors.push(ceiling) + } } diff --git a/public/assets/javascripts/rectangles/models/floor.js b/public/assets/javascripts/rectangles/models/floor.js new file mode 100644 index 0000000..ee264c7 --- /dev/null +++ b/public/assets/javascripts/rectangles/models/floor.js @@ -0,0 +1,146 @@ +(function(){ + + var vec2, Rect, sort + if ('window' in this) { + vec2 = window.vec2 + Rect = window.Rect + sort = window.sort + } + else { + vec2 = require('./vec2') + Rect = require('./rect') + UidGenerator = require('../util/uid') + } + + var Floor = function(opt){ + this.id = opt.id + this.side = opt.side + this.mx = opt.mx + } + + Floor.prototype.serialize = function(){ + return { + id: this.id, + background: this.background, + } + } + + Floor.prototype.deserialize = function(data){ + this.wallpaper( data.background ) + } + + Floor.prototype.bind = function(){ + var base = this + base.$els = $( this.mx.map(function(mx){ return mx.el }) ) + console.log("HELLO") + this.mx.forEach(function(mx, index){ + $(mx.el).bind({ + mousedown: function(e){ + console.log("clicked on", base.id) + if (Scenery.nextWallpaper) { + var oldState = base.serialize() + base.wallpaper(Scenery.nextWallpaper) + Scenery.nextWallpaper = null + + UndoStack.push({ + type: 'update-wallpaper', + undo: oldState, + redo: base.serialize(), + }) + + // TODO: watch individual scenery object here + Minotaur.watch( app.router.editorView.settings ) + } + } + }) + }) + + // flip the mx order + var shouldFlip = this.side & (CEILING) + if (! shouldFlip) { + this.mx.reverse() + } + } + + Floor.prototype.color = function(color){ + this.$els.css("background-color", color) + } + + Floor.prototype.wallpaper = function(background){ + if (! background) { + background = { src: "none" } + } + else if (typeof background == "string") { + background = { src: background } + } + else if (! background.src) { + background = { src: "none" } + } + background.x = background.x || 0 + background.y = background.y || 0 + background.scale = background.scale || 1 + + this.background = background + this.background.src = this.background.src.replace("url(","").replace(")","") + + if (this.background.src == "none") { + this.wallpaperLoad(this.background.src) + return + } + + var img = new Image () + img.onload = function(){ + this.backgroundImage = img + this.wallpaperLoad(this.background.src) + this.wallpaperPosition(background) + }.bind(this) + img.src = this.background.src + img.complete && img.onload() + } + + Floor.prototype.wallpaperLoad = function(url){ + if (url !== "none") { + url = "url(" + url + ")" + } + this.mx.forEach(function(mx){ + mx.el.style.backgroundImage = url + }) + } + + Floor.prototype.wallpaperPosition = function(background){ + if (this.background.src == "none") { return } + this.background.x = background.x || this.background.x + this.background.y = background.y || this.background.y + this.background.scale = background.scale || this.background.scale || 1 + + var shouldFlip = this.side & (CEILING) + + var mx, dx, dy + var w = Math.round( this.backgroundImage.naturalWidth * this.background.scale ) + var h = Math.round( this.backgroundImage.naturalHeight * this.background.scale ) + + this.surface.faces.forEach(function(face, i){ + + if (shouldFlip) { + mx = this.mx[this.mx.length-1-i] + dx = Math.round( this.background.x + face.x.a ) + dy = Math.round( this.background.y + face.y.b ) + } + else { + mx = this.mx[i] + dx = Math.round( this.background.x - face.x.b ) + dy = Math.round( this.background.y + face.y.b ) + } + + mx.el.style.backgroundPosition = dx + 'px ' + dy + 'px' + mx.el.style.backgroundSize = w + 'px ' + h + 'px' + }.bind(this)) + } + + if ('window' in this) { + window.Floor = Floor + } + else { + module.exports = Floor + } +})() diff --git a/public/assets/javascripts/rectangles/models/room.js b/public/assets/javascripts/rectangles/models/room.js index 0f09325..1a4606c 100644 --- a/public/assets/javascripts/rectangles/models/room.js +++ b/public/assets/javascripts/rectangles/models/room.js @@ -154,7 +154,7 @@ } // if (bitcount(wall_collision) > 1) { // collision |= wall_collision -// } +// } }) return collision } diff --git a/public/assets/javascripts/rectangles/models/wall.js b/public/assets/javascripts/rectangles/models/wall.js index 820fb5f..8174de7 100644 --- a/public/assets/javascripts/rectangles/models/wall.js +++ b/public/assets/javascripts/rectangles/models/wall.js @@ -19,7 +19,7 @@ this.side = opt.side this.surface = opt.surface this.mx = opt.mx - this.background = "" + this.background = { src: "none" } } Wall.prototype.toString = function(){ @@ -127,8 +127,6 @@ if (! shouldFlip) { this.mx.reverse() } - - // this.outline(wallColor, outlineColor) } Wall.prototype.serialize = function(){ @@ -283,10 +281,8 @@ mx.el.style.backgroundPosition = dx + 'px ' + dy + 'px' mx.el.style.backgroundSize = w + 'px ' + h + 'px' }.bind(this)) - bbb = this } - Wall.prototype.outline = function(wallColor, outlineColor){ var useX = this.side & FRONT_BACK var mx = this.mx diff --git a/public/assets/javascripts/rectangles/util/constants.js b/public/assets/javascripts/rectangles/util/constants.js index 4c6b3cc..198cc41 100644 --- a/public/assets/javascripts/rectangles/util/constants.js +++ b/public/assets/javascripts/rectangles/util/constants.js @@ -1,5 +1,6 @@ var FRONT = 0x1, BACK = 0x2, LEFT = 0x4, RIGHT = 0x8, FLOOR = 0x10, CEILING = 0x20 - FRONT_BACK = FRONT | BACK, LEFT_RIGHT = LEFT | RIGHT, FLOOR_CEILING = FLOOR | CEILING +var FRONT_BACK = FRONT | BACK, LEFT_RIGHT = LEFT | RIGHT, FLOOR_CEILING = FLOOR | CEILING +var WALL_SIDES = FRONT | BACK | LEFT | RIGHT var TOP = CEILING, BOTTOM = FLOOR, TOP_LEFT = TOP | LEFT, diff --git a/public/assets/javascripts/ui/editor/TextEditor.js b/public/assets/javascripts/ui/editor/TextEditor.js index 1e35c12..0aa5aad 100644 --- a/public/assets/javascripts/ui/editor/TextEditor.js +++ b/public/assets/javascripts/ui/editor/TextEditor.js @@ -39,12 +39,15 @@ var TextEditor = FormView.extend({ scale: 0.5, font: { family: 'Lato', size: 12, align: 'left' }, } - this.createMode(true) } + else { + $("[data-role='toggle-text-editor']").removeClass("inuse") + } }, hide: function(scenery){ + Scenery.nextMedia = null if (this.scenery) { this.unbind() } diff --git a/views/partials/scripts.ejs b/views/partials/scripts.ejs index f768160..21bed03 100644 --- a/views/partials/scripts.ejs +++ b/views/partials/scripts.ejs @@ -46,6 +46,7 @@ + -- cgit v1.2.3-70-g09d2 From 49ce8683ce072d8ae24176aff7fadbf5195f5922 Mon Sep 17 00:00:00 2001 From: ryderr Date: Tue, 7 Oct 2014 16:48:11 -0400 Subject: wallpaper buttons --- public/assets/stylesheets/app.css | 12 +++++++----- views/controls/editor/wallpaper.ejs | 8 ++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index 6a034ea..943fc8e 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -1332,7 +1332,7 @@ iframe.embed { padding-bottom: 6px; } -.wallpaperUpload, .wallpaperRemove { +.toolButton { border: 1px solid; display: inline-block; width: 100%; @@ -1341,9 +1341,9 @@ iframe.embed { font-weight: 300; } -.wallpaper label { +.toolButton label { position: relative; - top: -6px; + vertical-align: middle; float: none; } .wallpaper form { @@ -1357,8 +1357,10 @@ iframe.embed { color:white; cursor:pointer; } -.wallpaper .ion-ios7-upload-outline { - font-size: 26px; +.toolButton > span, .toolButton form > span{ + font-size: 26px; + margin: 0 7px; + vertical-align: middle; } .wallpaper .wallpaperRemove { cursor: pointer; diff --git a/views/controls/editor/wallpaper.ejs b/views/controls/editor/wallpaper.ejs index 01cf771..97a9232 100644 --- a/views/controls/editor/wallpaper.ejs +++ b/views/controls/editor/wallpaper.ejs @@ -5,7 +5,7 @@ -
    +
    @@ -16,13 +16,13 @@ -->
    -
    +
    -
    - +
    +
    -- cgit v1.2.3-70-g09d2 From 646b9a935b4fbcc7b0108a66fe7309a61c55d3c1 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 16:52:43 -0400 Subject: tiling wallpaper on ceiling / floor --- .../javascripts/rectangles/engine/rooms/grouper.js | 2 ++ public/assets/javascripts/rectangles/models/floor.js | 18 +++++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/public/assets/javascripts/rectangles/engine/rooms/grouper.js b/public/assets/javascripts/rectangles/engine/rooms/grouper.js index ec776a2..890a476 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/grouper.js +++ b/public/assets/javascripts/rectangles/engine/rooms/grouper.js @@ -171,10 +171,12 @@ base.groupFloors = function(floors, collections){ var floor = new Floor ({ id: 'floor', + side: FLOOR, mx: collections[FLOOR] }) var ceiling = new Floor ({ id: 'ceiling', + side: CEILING, mx: collections[CEILING] }) floors.push(floor) diff --git a/public/assets/javascripts/rectangles/models/floor.js b/public/assets/javascripts/rectangles/models/floor.js index ee264c7..78e9019 100644 --- a/public/assets/javascripts/rectangles/models/floor.js +++ b/public/assets/javascripts/rectangles/models/floor.js @@ -32,11 +32,10 @@ Floor.prototype.bind = function(){ var base = this base.$els = $( this.mx.map(function(mx){ return mx.el }) ) - console.log("HELLO") + this.mx.forEach(function(mx, index){ $(mx.el).bind({ mousedown: function(e){ - console.log("clicked on", base.id) if (Scenery.nextWallpaper) { var oldState = base.serialize() base.wallpaper(Scenery.nextWallpaper) @@ -119,22 +118,23 @@ var w = Math.round( this.backgroundImage.naturalWidth * this.background.scale ) var h = Math.round( this.backgroundImage.naturalHeight * this.background.scale ) - this.surface.faces.forEach(function(face, i){ + this.mx.forEach(function(mx, i){ + + var region = mx.rect if (shouldFlip) { - mx = this.mx[this.mx.length-1-i] - dx = Math.round( this.background.x + face.x.a ) - dy = Math.round( this.background.y + face.y.b ) + dx = Math.round( this.background.x - region.x.a ) + dy = Math.round( this.background.y - region.y.a ) } else { - mx = this.mx[i] - dx = Math.round( this.background.x - face.x.b ) - dy = Math.round( this.background.y + face.y.b ) + dx = Math.round( this.background.x - region.x.a ) + dy = Math.round( this.background.y + region.y.b ) } mx.el.style.backgroundPosition = dx + 'px ' + dy + 'px' mx.el.style.backgroundSize = w + 'px ' + h + 'px' }.bind(this)) + bbb = this } if ('window' in this) { -- cgit v1.2.3-70-g09d2 From a672e348038e06a439a8135d9a2e0254f54c2aae Mon Sep 17 00:00:00 2001 From: ryderr Date: Tue, 7 Oct 2014 16:58:17 -0400 Subject: wallpaper stuff --- public/assets/stylesheets/app.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index 943fc8e..2d966ee 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -1346,13 +1346,16 @@ iframe.embed { vertical-align: middle; float: none; } +.wallpaperUpload:hover { + cursor:pointer; +} .wallpaper form { position: relative; padding: 2px 0 0 0; font-size: 14px; font-weight: 300; } -.wallpaper form:hover, .wallpaperRemove:hover { +.toolButton:hover { background:black; color:white; cursor:pointer; -- cgit v1.2.3-70-g09d2 From 8a0f5258f0d03cf121d6fde49c5c7731c2212154 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 17:03:37 -0400 Subject: storing floor/ceiling wallpaper --- .../assets/javascripts/rectangles/engine/rooms/_walls.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/public/assets/javascripts/rectangles/engine/rooms/_walls.js b/public/assets/javascripts/rectangles/engine/rooms/_walls.js index b3611c8..7438cd4 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/_walls.js +++ b/public/assets/javascripts/rectangles/engine/rooms/_walls.js @@ -80,16 +80,20 @@ } base.forEach = function(f){ - return base.list.forEach(f) + return base.values().forEach(f) } base.map = function(f){ - return base.list.map(f) + return base.values().map(f) + } + + base.values = function(){ + return _.values(base.lookup) } base.serialize = function(){ var data = [] - base.list.forEach(function(wall){ + base.forEach(function(wall){ data.push(wall.serialize()) }) return data @@ -108,7 +112,7 @@ var outlineColor = rgb_string(Walls.colors.outline) var floorColor = rgb_string(Walls.colors.floor) var ceilingColor = rgb_string(Walls.colors.ceiling) - Walls.forEach(function(wall){ + Walls.list.forEach(function(wall){ wall.outline(wallColor, outlineColor) }) Rooms.forEach(function(room){ @@ -122,7 +126,7 @@ wall: function(rgb){ var rgbaColor = rgba_string(rgb, app.defaults.wallOpacity) Walls.colors.wall = rgb - Walls.forEach(function(wall){ + Walls.list.forEach(function(wall){ wall.outline(rgbaColor, null) }) }, @@ -130,7 +134,7 @@ outline: function(rgb){ var rgbColor = rgb_string(rgb) Walls.colors.outline = rgb - Walls.forEach(function(wall){ + Walls.list.forEach(function(wall){ wall.outline(null, rgbColor) }) }, -- cgit v1.2.3-70-g09d2 From 24cc36bf81987c721aee4dae57a64edf5dd515bb Mon Sep 17 00:00:00 2001 From: ryderr Date: Tue, 7 Oct 2014 17:18:40 -0400 Subject: delete icon --- public/assets/stylesheets/app.css | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index 2d966ee..0831a36 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -1188,22 +1188,24 @@ iframe.embed { } .deleteArmed .mediaContainer:before { - content: "\e68f"; - font-family: 'ionicons'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - font-size: 60px; - margin-top: -62px; - position: absolute; - background: #FF3B30; - border-radius: 1000px; - margin-left: -59px; - color: white; + content: "\f1eb"; + font-family: 'ionicons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + -webkit-font-smoothing: antialiased; + font-size: 40px; + margin-top: -62px; + position: absolute; + background: #FF3B30; + border-radius: 1000px; + margin-left: -59px; + color: white; + width: 50px; + height: 50px; + line-height: 50px; } .deleteArmed .mediaContainer.deleted { -- cgit v1.2.3-70-g09d2 From eb1d33b2c32c15821a6307306ca46fda262eb8b9 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 17:26:29 -0400 Subject: no projects --- views/profile.ejs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/views/profile.ejs b/views/profile.ejs index 22c824c..b64e1d5 100644 --- a/views/profile.ejs +++ b/views/profile.ejs @@ -41,11 +41,15 @@ [[ if (projects.length) { ]]

    [[- profile.username ]] has [[- projects.length ]] project[[- projects.length != 1 ? "s" : "" ]]

    - [[ } ]] - [[ include projects/list-projects ]] + [[ include projects/list-projects ]] - view more + view more + [[ } else { ]] +

    Welcome to VVALLS

    +

    + You don't have any projects yet. To get started click "New Project" up at the top of the screen. + [[ } ]] [[ include partials/edit-profile ]] [[ include projects/layouts-modal ]] -- cgit v1.2.3-70-g09d2 From ea5cce0042a6448636d4bd583c1200c26a7efe87 Mon Sep 17 00:00:00 2001 From: ryderr Date: Tue, 7 Oct 2014 17:34:36 -0400 Subject: no profile pic thing --- public/assets/stylesheets/app.css | 30 +++++++++++++++++++++++------- views/profile.ejs | 6 +++++- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index 0831a36..cef90a9 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -9,7 +9,9 @@ body,textarea,input { font-family: 'Lato', sans-serif; } - +input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill { + background:white; +} *, *:before, *:after { moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } @@ -468,14 +470,27 @@ iframe.embed { /* PROFILE PAGE */ .profilePic { - font-size: 148px; background-size: cover; background-position: center; width: 40%; height: 50vh; float: left; + display:table; } +.profilePic .ion-ios7-person-outline { + font-size: 100px; +} + + +.noPic input { + position: absolute; + width: 40%; + height: 48vh; + margin-top: -33vh; + margin-left: -20%; + opacity: 0; +} .topLinks { float: right; z-index: 3; @@ -1197,11 +1212,11 @@ iframe.embed { text-transform: none; -webkit-font-smoothing: antialiased; font-size: 40px; - margin-top: -62px; + margin-top: -50px; position: absolute; background: #FF3B30; border-radius: 1000px; - margin-left: -59px; + margin-left: -50px; color: white; width: 50px; height: 50px; @@ -2036,8 +2051,9 @@ form li textarea { letter-spacing: 2px; } .facebook b { - float: left; - font-size: 50px; + float: left; + font-size: 50px; + margin: 0 0 0 20px; } a[data-role="forgot-password"] { @@ -2049,7 +2065,7 @@ a[data-role="forgot-password"] { vertical-align: bottom; padding-right: 14px; font-size: 19px; - line-height: 16px; + line-height: 7px; } .aboutRoom { diff --git a/views/profile.ejs b/views/profile.ejs index 22c824c..6a5b3ea 100644 --- a/views/profile.ejs +++ b/views/profile.ejs @@ -13,8 +13,12 @@
    [[ } else { ]] -
    +
    + +
    click to add profile pic
    + +
    [[ } ]]
    -- cgit v1.2.3-70-g09d2 From eb1e515f5446d8a90d92c2f60722eca23a9c4fe5 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 17:55:35 -0400 Subject: clamp looking up/down --- public/assets/javascripts/mx/extensions/mx.movements.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/assets/javascripts/mx/extensions/mx.movements.js b/public/assets/javascripts/mx/extensions/mx.movements.js index f94bbc2..065c93b 100644 --- a/public/assets/javascripts/mx/extensions/mx.movements.js +++ b/public/assets/javascripts/mx/extensions/mx.movements.js @@ -16,8 +16,8 @@ MX.Movements = function (cam) { creeping = false, locked = false, gravity = false, - rotationX_min = PI/-2, - rotationX_max = PI/2 + rotationX_min = PI/-4, + rotationX_max = PI/6 var v = 12, vr = Math.PI * 0.012, -- cgit v1.2.3-70-g09d2 From c60434bc4655d0e020ca75fc7c5fddf53ac58ede Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 18:29:08 -0400 Subject: invert logo if background is dark, match body bg to wall color --- .../rectangles/engine/map/ui_minimap.js | 2 ++ .../javascripts/rectangles/engine/rooms/_walls.js | 9 +++++++++ public/assets/stylesheets/app.css | 23 +++++++++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/public/assets/javascripts/rectangles/engine/map/ui_minimap.js b/public/assets/javascripts/rectangles/engine/map/ui_minimap.js index fabbdb9..d7280b9 100644 --- a/public/assets/javascripts/rectangles/engine/map/ui_minimap.js +++ b/public/assets/javascripts/rectangles/engine/map/ui_minimap.js @@ -7,6 +7,7 @@ Map.UI.Minimap = function(map){ base.creating = base.dragging = base.resizing = false +/* base.mouse = new mouse({ el: map.el, down: down, @@ -15,6 +16,7 @@ Map.UI.Minimap = function(map){ up: up, rightclick: rightclick, }) +*/ base.wheel = new wheel({ el: map.el, diff --git a/public/assets/javascripts/rectangles/engine/rooms/_walls.js b/public/assets/javascripts/rectangles/engine/rooms/_walls.js index 7438cd4..5ff53fe 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/_walls.js +++ b/public/assets/javascripts/rectangles/engine/rooms/_walls.js @@ -125,6 +125,15 @@ wall: function(rgb){ var rgbaColor = rgba_string(rgb, app.defaults.wallOpacity) + var rgbColor = rgb_string(rgb) + + var rgb_max = Math.max.apply(0, rgb) + var rgb_min = Math.min.apply(255, rgb) + var luminance = (rgb_max + rgb_min ) / 2 + + $("#header").toggleClass("black", luminance < 128) + $("body").css("background-color", rgbColor) + Walls.colors.wall = rgb Walls.list.forEach(function(wall){ wall.outline(rgbaColor, null) diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index cef90a9..b4d176f 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -71,6 +71,27 @@ a{ left: 0; z-index: 6; } +#header.black .logo:hover { + background: white; +} +#header.black .logo:hover path { + fill: black; +} +#header.black path { + fill: white; +} +#header.black .topLinks a { + color: white; +} +#header.black .topLinks a:hover { + color: black; + background-color: white; +} +#header.black a#help-button:hover { + background-color: transparent; + text-shadow: 0 0 3px #fff, 0 0 3px #fff, 0 0 3px #fff, 0 0 3px #fff, 0 0 3px #fff; +} + #help-button { display: none; border-right:0px!important; @@ -1566,7 +1587,7 @@ input[type="range"]::-webkit-slider-thumb { bottom: 10px; right: 10px; font-size: 12px; - -webkit-transform: translateY(450px); + -webkit-transform: translateY(500px); -webkit-transition: -webkit-transform 0.2s ease-in-out; transform: translateY(450px); transition: -webkit-transform 0.2s ease-in-out; -- cgit v1.2.3-70-g09d2 From 4dede1ce3a31cfb17cbad80749863725a9957d19 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 18:38:43 -0400 Subject: inverse colors --- public/assets/javascripts/ui/editor/LightControl.js | 11 ++++++----- public/assets/stylesheets/app.css | 6 +++++- views/controls/editor/light-control.ejs | 6 +++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/public/assets/javascripts/ui/editor/LightControl.js b/public/assets/javascripts/ui/editor/LightControl.js index 2b7cfaa..51e6be7 100644 --- a/public/assets/javascripts/ui/editor/LightControl.js +++ b/public/assets/javascripts/ui/editor/LightControl.js @@ -134,17 +134,18 @@ var LightControl = View.extend({ floor: [255,255,0], ceiling: [225,118,252], }, - seapunk: { - wall: [110,255,255], - outline: [146,133,255], - floor: [89,221,255], - ceiling: [139,255,173], + inverse: { + wall: [0,0,0], + outline: [0,230,255], + floor: [0,0,0], + ceiling: [0,0,0], }, }, selectPreset: function(e){ var preset = $(e.currentTarget).data('preset') if (! this.presets[preset]) return this.load(this.presets[preset]) + $(e.currentTarget).addClass('active') }, beginBrightness: function(){ diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index b4d176f..f770637 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -1529,6 +1529,10 @@ input[type="range"]::-webkit-slider-thumb { width: 50%; float:left; cursor:pointer; + border-bottom: 1px transparent solid; +} +.presets span.active { + border-bottom: 1px dotted; } .color-swatches span { display: inline-block; @@ -1589,7 +1593,7 @@ input[type="range"]::-webkit-slider-thumb { font-size: 12px; -webkit-transform: translateY(500px); -webkit-transition: -webkit-transform 0.2s ease-in-out; - transform: translateY(450px); + transform: translateY(500px); transition: -webkit-transform 0.2s ease-in-out; width: 210px; } diff --git a/views/controls/editor/light-control.ejs b/views/controls/editor/light-control.ejs index 1fc4484..8f42d8d 100644 --- a/views/controls/editor/light-control.ejs +++ b/views/controls/editor/light-control.ejs @@ -30,11 +30,11 @@ Shaded + + Inverse + P.Funk - - SeaPunk -
    -- cgit v1.2.3-70-g09d2 From e9c849ff9d69ceeafa0a98b22040d027f82d7dc3 Mon Sep 17 00:00:00 2001 From: ryderr Date: Tue, 7 Oct 2014 18:51:50 -0400 Subject: wallpaper --- views/controls/editor/wallpaper.ejs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/controls/editor/wallpaper.ejs b/views/controls/editor/wallpaper.ejs index 97a9232..3c621b1 100644 --- a/views/controls/editor/wallpaper.ejs +++ b/views/controls/editor/wallpaper.ejs @@ -1,7 +1,7 @@

    Add Wallpaper

    - Add custom wallpaper to walls. Begin by uploading a pattern. Or try this one -> + Add custom wallpaper to walls. Begin by uploading a pattern. Or try one of these -> -- cgit v1.2.3-70-g09d2 From a980ce6da41d8358c8fa973bf83809e80325ccd5 Mon Sep 17 00:00:00 2001 From: ryderr Date: Tue, 7 Oct 2014 18:54:16 -0400 Subject: start of default wallpaper --- views/controls/editor/wallpaper.ejs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/views/controls/editor/wallpaper.ejs b/views/controls/editor/wallpaper.ejs index 3c621b1..2d47e04 100644 --- a/views/controls/editor/wallpaper.ejs +++ b/views/controls/editor/wallpaper.ejs @@ -1,9 +1,14 @@

    Add Wallpaper

    - Add custom wallpaper to walls. Begin by uploading a pattern. Or try one of these -> + Add custom wallpaper to walls. Begin by uploading a pattern. Or try one of these -> - + + + + + +
    -- cgit v1.2.3-70-g09d2 From 8ae73f097e27cd54f685c562081f3a1bc7c9b13d Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 18:59:04 -0400 Subject: resize/scale wallpaper --- public/assets/javascripts/ui/editor/EditorView.js | 1 + .../javascripts/ui/editor/WallpaperPicker.js | 57 +++++++++++++++++++++- public/assets/stylesheets/app.css | 12 +++++ public/assets/test/bg.html | 2 +- views/controls/editor/wallpaper.ejs | 6 +++ 5 files changed, 76 insertions(+), 2 deletions(-) diff --git a/public/assets/javascripts/ui/editor/EditorView.js b/public/assets/javascripts/ui/editor/EditorView.js index f95d909..f60b149 100644 --- a/public/assets/javascripts/ui/editor/EditorView.js +++ b/public/assets/javascripts/ui/editor/EditorView.js @@ -54,6 +54,7 @@ var EditorView = View.extend({ pickWall: function(wall, pos){ this.hideExtras() + this.wallpaperPicker.pickWall(wall) }, hideExtras: function(){ diff --git a/public/assets/javascripts/ui/editor/WallpaperPicker.js b/public/assets/javascripts/ui/editor/WallpaperPicker.js index 7f9b8f7..3694095 100644 --- a/public/assets/javascripts/ui/editor/WallpaperPicker.js +++ b/public/assets/javascripts/ui/editor/WallpaperPicker.js @@ -6,8 +6,11 @@ var WallpaperPicker = UploadView.extend({ uploadAction: "/api/media/upload", events: { + "mousedown": 'stopPropagation', "click .swatch": 'pick', "click .wallpaperRemove": 'remove', + "input [data-role='wallpaper-scale']": 'updateScale', + }, initialize: function(){ @@ -15,6 +18,11 @@ var WallpaperPicker = UploadView.extend({ this.$swatches = this.$(".swatches") this.$remove = this.$(".wallpaperRemove") this.$remove.hide() + + this.$position = this.$("[data-role='wallpaper-position']") + this.$scale = this.$("[data-role='wallpaper-scale']") + + this.initializePositionCursor() }, loaded: false, @@ -122,5 +130,52 @@ var WallpaperPicker = UploadView.extend({ _followCursor(e); }) }, - + + wall: null, + pickWall: function(wall){ + if (wall.background.src == "none") { + return; + } + console.log(wall) + this.wall = wall + }, + + updateScale: function(){ + if (! this.wall) return; + s = parseFloat(this.$scale.val()) + this.wall.wallpaperPosition({ scale: s }) + }, + + initializePositionCursor: function(){ + var base = this + var dx = 0, dy = 0, dragging = false + var x = 0, y = 0, s = 1 + var mymouse = new mouse({ + el: this.$position[0], + down: function(e, cursor){ + if (! base.wall) return + s = parseFloat( base.$scale.val() ) + x = base.wall.background.x + y = base.wall.background.y + dragging = true + }, + drag: function(e, cursor){ + if (! dragging) return + delta = cursor.delta() + delta.a = - delta.a + dx = delta.a*s + dy = delta.b*s + base.wall.wallpaperPosition({ + scale: s, + x: x+dx, + y: y+dy, + }) + }, + up: function(e, cursor, new_cursor){ + delta.zero() + dragging = false + }, + }) + }, + }) diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index f770637..6e23962 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -1487,6 +1487,18 @@ input[type="range"]::-webkit-slider-thumb { border:3px solid #000; } +.wallpaperResizeControls input[type=range] { + width: 130px; + position: relative; + top: -10px; +} +.wallpaperResizeControls { + font-size: 30px; +} +.wallpaperResizeControls span { + cursor: pointer; +} + #color-picker { position: relative; } diff --git a/public/assets/test/bg.html b/public/assets/test/bg.html index cd7eaa8..fecf811 100644 --- a/public/assets/test/bg.html +++ b/public/assets/test/bg.html @@ -88,7 +88,7 @@ var x0 = 0, y0 = 0 var mymouse = new mouse({ el: cursor, down: function(e, cursor){ - console.log(cursor.x.a, cursor.y.a) + console.log(cursor.x.a, cursor.y.a) dragging = true }, drag: function(e, cursor){ diff --git a/views/controls/editor/wallpaper.ejs b/views/controls/editor/wallpaper.ejs index 97a9232..719c8ff 100644 --- a/views/controls/editor/wallpaper.ejs +++ b/views/controls/editor/wallpaper.ejs @@ -25,6 +25,12 @@
    + +
    + + +
    +
    -- cgit v1.2.3-70-g09d2 From bd952badbe37dcd1c4089b2b869a6a4d85c0b198 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 19:01:10 -0400 Subject: update when u click wall --- public/assets/javascripts/ui/editor/WallpaperPicker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/assets/javascripts/ui/editor/WallpaperPicker.js b/public/assets/javascripts/ui/editor/WallpaperPicker.js index 3694095..140076d 100644 --- a/public/assets/javascripts/ui/editor/WallpaperPicker.js +++ b/public/assets/javascripts/ui/editor/WallpaperPicker.js @@ -136,8 +136,8 @@ var WallpaperPicker = UploadView.extend({ if (wall.background.src == "none") { return; } - console.log(wall) this.wall = wall + this.$scale.val( this.wall.background.scale ) }, updateScale: function(){ -- cgit v1.2.3-70-g09d2 From c2e2334328256fa0409341692284f25f3167ab30 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 7 Oct 2014 19:03:56 -0400 Subject: scale cil/floor wallapper --- public/assets/javascripts/rectangles/models/floor.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/public/assets/javascripts/rectangles/models/floor.js b/public/assets/javascripts/rectangles/models/floor.js index 78e9019..7ed52a1 100644 --- a/public/assets/javascripts/rectangles/models/floor.js +++ b/public/assets/javascripts/rectangles/models/floor.js @@ -49,6 +49,9 @@ // TODO: watch individual scenery object here Minotaur.watch( app.router.editorView.settings ) + } + else { + app.controller.pickWall(base, null) } } }) -- cgit v1.2.3-70-g09d2