diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d42ab35 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +out/* diff --git a/content/2014/02/find-and-replace-the-zed-way.md b/content/2014/02/find-and-replace-the-zed-way.md new file mode 100644 index 0000000..19216df --- /dev/null +++ b/content/2014/02/find-and-replace-the-zed-way.md @@ -0,0 +1,25 @@ +Find and Replace: the Zed Way +============================= +date: 2014-02-26 + +Most editors got their find & replace features before the advent of *multiple cursors*. In Zed, multiple cursors are core to your editing experience: they're used to quickly apply edits on multiple locations simultaneously, for instance, to emulate a traditional editor's find & replace functionality. + +But before we get to the *replace* aspect, let's have a look at how to use use Zed's find features first. + +### Find in file + +The `Find:Find` command (`Command-F`/`Ctrl-F`), brings up the goto UI prefixed with `:/` which signifies (incremental) search in file. Enter you phrase and press enter to jump to the first match, then to jump to the next match (with the match still selected) use the `Find:Next` command (`Command-G`/`Ctrl-K`), or `Find:Previous` (`Command-Shift-G`/`Ctrl-Shift-K`) to jump to the previous match. To jump to other instances of the identifier under the cursor use `Command-[`/`Ctrl-[` (previous instance) and `Command-]`/`Ctrl-]` (next instance). + +### Find and replace + +To replace text, we use multiple cursors: + +1. Select the phrase you want to replace (e.g. via search, followed by `Enter` to put focus back on the editor) +2. Add cursors to however many instances of that phrase as you want via `Ctrl-Alt-Right` (add the instance to the "right" -- after the current selection) and/or `Ctrl-Alt-Left` (add to the left). Or, to put cursors on all instances at once, use `Find:All` (`Ctrl-Alt-F`). +3. Start making your changes! The change will be applied at all locations. + + + +## Find in project + +Zed also has basic find in project functionality (no replace in project yet) via `Find:Find in Project` (`Command-Shift-F`/`Ctrl-Shift-F`). diff --git a/content/2014/02/thoughts-on-atom-vs-zed.md b/content/2014/02/thoughts-on-atom-vs-zed.md new file mode 100644 index 0000000..61eca1f --- /dev/null +++ b/content/2014/02/thoughts-on-atom-vs-zed.md @@ -0,0 +1,61 @@ +Thoughts on Atom vs Zed +======================= +date: 2014-02-27 + +So, [Atom happened][1], github's web tech-based code editor. I have an Atom invite and I played around with it a bit today and it's an interesting project -- and with the weight of Github behind it, definitely not something to ignore. + +Of course, as the author of Zed I have to ask: how does Atom compare to Zed, and is there any reason for Zed to exist anymore? In this post I'll try to compare and contrast the two a little bit based on what I've learned so far. Of course, all of this is somewhat biased, but I try to abstain from criticism at the level of "WHY COFFEESCRIPT!? COFFEESCRIPT SUCKS!!1" + +### Web technology + +Both Zed and Atom observed that web technology is a great way to build a hackable editor, and that a web tech stack doesn't need to live in a web page. In Zed's case it's a [Chrome app][2] (and available for Mac/Windows/Linux/ChromeOS) -- although *spoiler alert* I have a branch with a [node-webkit][3] prototype for Zed too --- in Atom's case it's a native app based on a forked version of node-webkit, currently only on Mac, but I'm sure with at least a Windows version is not far off. Zed is built using HTML, pure CSS and JavaScript. Atom is built using HTML, [Less][4] and [CoffeeScript][5]. + +Atom is, due to its strong ties to node.js APIs, less portable than Zed. Zed currently runs as a Chrome app, and in prototype-form as a node-webkit "native" app. But it's easy to also make it work as a regular web app, if need be, or as a Firefox App if that ever becomes a thing. That said, of course, getting access to node.js directly allows the editor to do anything node.js can do (= basically anything) and Chrome or web apps can't. + +### UI/UX + +Zed has the explicit goal of [doing things differently][6] regarding the concept of open files and tabs (or lack thereof), minimalism in UI, unifying file opening and creation, and remote file editing. Atom basically looks like sublime: file tree on the left, tab bar along the top, and borrows features like goto and the command panel from Sublime and Textmate too (Zed does too, but has tweaked the way goto works). Atom is more "traditional" UX-wise, which is a perfectly legitimate choice. + +### Feature set + +I'm not going to do a feature-by-feature comparison. Let's say that Zed and Atom are relatively close in terms of feature set. Atom is probably stronger in terms of find and replace support (regex support, find and replace in project). Zed is stronger in language support (extensible code completion, inline markers for linters, symbol indexing, code formatters etc.) and remote file editing. The reason for Zed's language support focus is obvious, [considering where I came from][7] and you can expect more features in this area in the future. + +Since both are extensible editors, my response to any missing feature in Zed can be "well, just fork the project and add it, or create an extension" and Github will say "well, just write an extension." + +### Extensibility + +From the beginning the ability to extend Zed (beyond forking the code) has been high priority for Zed, however being a Chrome app limits its flexibility a bit. If you want to use Chrome APIs like getting access to the local file system, you need to [run in a "safe" mode][8] that does not allow a lot of things like eval'ing arbitrary (user) code. Therefore, in Zed, all extension code lives in a sandbox in a separate process. Zed exposes [APIs][9] to the sandbox to do certain things like using basic UI elements, getting access to files etc. Zed extension points are designed in advance and not accidental. Zed provides specific extension points to extend its built-in code completion, symbol indexing, linting etc. support. There are (currently) no APIs to make arbitrary changes to the DOM, listen to arbitrary events etc. Zed may eventually get these features, but they have to added explicitly. + +However, putting extension code in a sandbox has two advantages: + +1. Extensions can interfere with the main process in limited ways, it's difficult to make the main editor crash as a result of poor extension code, and because the sandbox lives in a separate process, performing CPU intensive tasks also does not slow down the editor. + +2. It is easy to reload extension code without having to reload the whole editor (by simply killing the sandbox and restarting it). As a result, extensions can be developed without having to relaunch Zed, but just by resetting the sandbox. + +Atom extensions as far as I can see, get full access to about everything: the DOM and all CoffeeScript/JS APIs. This provides a lot of flexibility, and as a result a more significant part of Atom is built as extensions compared to Zed. For instance, [auto completion][10] is not a built-in Atom feature, but built as an extension. The question is how extensions will interact, for instance if I want to add a JavaScript-specific auto completer. I suppose the autocomplete Atom extension would need to provide an API somehow (couldn't find how, or if this is supported). In Zed, code completion is a core feature and provides handlers to plug in to, to do this -- which how the [word][11], [ctag symbol][12] and [snippet completers][13] are implemented. + +However, since all code in Atom is loaded into the same JavaScript VM, reloading involves reopening windows to see the results during extension development -- at least, as far as I can see. And poor extension code, can completely screw up the editor. + +Atom has `apm`, a package manager (from the looks of it, based on [npm][14]) to easily install, upgrade, remove and publish extensions. Very cool stuff. Zed has no such feature yet, [although it's coming][15]. + +### Licensing and cost + +How Atom will be distributed once it leaves beta is not 100% clear. Most likely it will be free, but not open source with some sort payment model attached. Github is trying to find a balance between the ability to earn money on the product, while still [open sourcing][16] as much as possible. Zed is [100% open source, MIT licensed][17]. + + [1]: http://atom.io + [2]: https://chrome.google.com/webstore/detail/zed-code-editor/pfmjnmeipppmcebplngmhfkleiinphhp + [3]: https://github.com/rogerwang/node-webkit + [4]: http://lesscss.org + [5]: http://coffeescript.org/ + [6]: http://zedapp.org/vision/ + [7]: http://zef.me/3881/post-phd-plans-cloud-9-ide + [8]: http://developer.chrome.com/apps/contentSecurityPolicy + [9]: https://github.com/zedapp/zed/tree/master/app/config/api/zed + [10]: https://github.com/atom/autocomplete + [11]: https://github.com/zedapp/zed/blob/master/app/config/default/command/text_completer.js + [12]: https://github.com/zedapp/zed/blob/master/app/config/default/command/ctags_completer.js + [13]: https://github.com/zedapp/zed/blob/master/app/config/default/command/snippet_completer.js + [14]: http://npmjs.org + [15]: https://github.com/zedapp/zed/pull/90 + [16]: https://github.com/atom + [17]: https://github.com/zedapp/zed diff --git a/content/2014/04/dependency-injection-in-javascript-using-architect.md b/content/2014/04/dependency-injection-in-javascript-using-architect.md new file mode 100644 index 0000000..93730f1 --- /dev/null +++ b/content/2014/04/dependency-injection-in-javascript-using-architect.md @@ -0,0 +1,186 @@ +Dependency Injection in JavaScript Using Architect +============== +date: 2014-04-11 + +[Architect][1] is an open source dependency-injection framework for both server and client-side JavaScript code. Wikipedia defines [dependency injection][2] as follows: + +> Dependency injection is a software design pattern that implements inversion of control and allows a program design to follow the dependency inversion principle. + +Very impressive. The way I think of it -- at least in Architect's implementation -- is simply as *dynamic imports*. Whereas usually you import (or `require`) a *specific* module by listing its path, dependency injection allows you to postpone the decision which module to load until run time. + +Why is this useful? Here's a few reasons: + +1. Testing: it becomes easy to test modules if you can easily switch out imported modules with mock implementations. +2. The module to pick may depend on the context in which the application is run (e.g. arguments passed upon launch, or the runtime environment). + +The second is the reason I recently refactored Zed to use Architect as part of the effort to offer both a [Chrome App and a node-webkit based version][3]. + +What does such a refactor entail? Essentially it means turning require.js modules into Architect plugins. + +### File systems + +Here's roughly what Zed's require.js modules looked like *before*: + + define(function(require, exports, module) { + var fs = require("./fs/local"); + module.exports = { + method1: function() { + fs.readFile("/.zedstate", function(err, content) { + // Do something useful + }); + } + }; + }); + + +If you know a little bit about Zed's feature set you can spot the problem with this pseudo module: Zed supports *many* types of file systems and this ties our module to one in particular. Currently Zed supports: + +* A [RESTful HTTP file system][4] (used for editing remote files) +* A [local file system][5] (using Chrome's APIs) for editing local folders +* A [dropbox file system][6] for editing files on Dropbox +* A [file system that syncs to Google Drive][7] (using Chrome's SyncFS APIs) used for the Notes and Configuration projects. +* A [read-only static file system][8] that reads files from the application bundle (used for the manual project) +* A [node.js-based file system][9] for accessing local folders (for node-webkit) +* A [union file system][10] that combines any of the above (used for the Configuration project) + +Clearly, a `require` call to any particular file system module makes our module immediately dependent on a particular file system implementation. Even wrapping the `require` in an if-statement wouldn't scale, since there are quite a few options. + +Alright, so now let's have a look at the Architect version, which is only slightly more verbose: + + define(function(require, exports, module) { + plugin.consumes = ["fs"]; + plugin.provides = ["mymodule"]; + return plugin; + + function plugin(options, imports, register) { + var fs = imports.fs; + var api = { + method1: function() { + fs.readFile("/.zedstate", function(err, content) { + // Do something useful + }); + } + }; + register(null, { mymodule: api }); + } + }); + + +Rather than exporting the API immediately, the module now exports a single function `plugin` that takes three arguments: + +* `options`: containing any options for the plugin. +* `imports`: containing a key with the API of each consumed service +* `register`: the function to be called to register the services provided by the plugin. + +In addition, two properties are tacked onto the `plugin` function object: + +* `consumes`: an array all services that this plugin relies on. Note these are symbolic names, not module paths. +* `provides`: an array of all services that this plugin implements and exposes. + +Note that all the `require`s are gone and have been replaced by "consumed services." The `plugin.consumes =` line says "this plugin [module] requires a service named 'fs' to function." Any other plugin that `provides` the "fs" service can now be *injected* here, as long as the interfaces match. As you can [see in Zed's codebase][5] all file system plug-ins expose *exactly* the same methods and all `provide` the `fs` service. + +So, how does an `fs` service get injected? That's Architects job, the plugin doesn't have to worry about it. In practice, the way this works is that the project to be opened is encoded in the URL passed to the `editor.html` page that hosts the editor. Based on the request parameters [a piece of code figures out][11] which plugin providing the `fs` service is to be loaded. More on composing plugins into applications later on. + +### Runtime-specific APIs + +Switching out file system modules is just *one* useful application of Architect in the implementation of Zed. Another one is abstracting from APIs specific to the runtime environment. + +As I mentioned, the challenge was to get Zed to run *both* as a Chrome App as a node-webkit app. Each of these provide certain APIs (e.g. to get access to the local file system, window management, etc.) that are different between the runtimes. The way this is solved in Zed is by wrapping these APIs in Architect plug-ins that have two implementations: one for Chrome and one for node-webkit. + +A clean example of this are the `window` plugins for [Chrome][12] and for [node-webkit][13] (note the consistent use the `.chrome.js` and `.nw.js` filename patterns to make clear that these plugins are runtime specific). Both these plug-ins implement the same methods: + +* `close()` to close the current window +* `create(...)` to create a new window +* `fullScreen()` to toggle full-screening the window +* `maximize()` to toggle maximizing a window + +etc. + +Any plugin that consumes the `window` service provided by this plug-in will now call into the runtime-specific implementation. Examples of this include the [title bar][14] and [project picker][15]. + +Pretty cool right? + +### Putting it together + +So, how do we compose multiple plug-ins into an application? For this we use a plugin list. In its most basic form: + + var plugins = ["./mymodule", "./fs/local"]; + + architect.resolveConfig(plugins, ".", function(err, config) { + architect.createApp(config, function(err, app) { + // At this point we have an instantiated application + var mymodule = app.getService("mymodule"); + mymodule.method1(); + }); + }); + + +In essence you specify a list of plug-ins to load and then create an application out of them, which will link them all up. Now, replacing `./fs/local` with `./fs/sync` would switch `mymodule` to another file system implementation, without having to change the file at all. + +However, in practice, almost all file system plug-ins require extra arguments. These can be passed by not using the plain-string notation, but the object notation, e.g.: + + var plugins = [ + "./mymodule", + { packagePath: "./fs/local", dir: "/etc" } + ]; + + +The `packagePath` contains the require.js module that contains the plug-in (as before), and any other provided options are passed into the plug-in via the `options` argument to the `plugin` function. + +And that's pretty much everything there's to it! For some examples of real world architect plugin lists and instantiations, have a look at [boot.js][16] (for the editor windows) and [open.boot.js][17] (for the project picker). Both of these build up a list of plugins that are laregely shared, but add some plugins based on the runtime environment (based on the `isNodeWebkit` variable). + +### Caveats + +Something to be aware of using Architect: + +Plugins cannot have circular dependencies, i.e. plugin 1 cannot depend on a service provided by plugin 2 if plugin 2 depends one one provided by plugin 1, even if this happens indirectly. If you do this you get obscure errors. The way I've been working around this is by assigning the resulting architect application to a global, and then calling `getService("servicename")` on that global. + +For instance, I instantiate the application this way: + + architect.resolveConfig(plugins, ".", function(err, config) { + architect.createApp(config, function(err, app) { + window.zed = app; + }); + }); + + +Then, elsewhere in some plugin that doesn't have an explicit dependency on service `A` (listed under `consumes`) I call `zed.getService("A")` to get a reference to it anyway. Clearly, this is a bit ugly, but you need it sometimes. + +Second: *always call `register()`* as soon as posisble. If you don't call register() at all, your application will never load -- every plugin has to call it. Also, if you wait with calling `register` too long, everything else is waiting for it, resulting in a poor user experience. + +If you keep these two things in mind, you should be golden. + +### Do I Need Architect? + +So, does every application need [Architect][1]? Probaby not. However, for applications of a certain size, and applications that need to be loaded in different configurations, it can be very useful. So evaluate its value for your application specifically. + +Architect was developed largely by [Tim Caswell][18], back when we both worked at [Cloud9][19]. Cloud9 these days uses it both for their node.js back-end and their client-side too. Another former Cloud9 colleague gave [some talks about Architect that also give a good introduction][20]. + +### About Zed and this Blog Post + +[Last week I announced][21] I would make working on Zed my day-time job. Zed was open source before, and I kept it that way. In addition to the openness in *code* I also want to be open in design decisions and other lessons learned during this endeavor. This post is one example of that: it shows how Zed gets value out of Architect, but it's potentially useful for any JavaScript developer. Do you want to support me in working in this open way? [Consider contributing on Gittip][22]. + +**Unrelated post script:** This post was written and edited on a Chromebook running Zed in Vim mode, using the Notes project that's automatically synced with my other computers. *And it was a great experience.* + + [1]: https://github.com/c9/architect + [2]: http://en.wikipedia.org/wiki/Dependency_injection + [3]: /download + [4]: https://github.com/zedapp/zed/blob/master/app/js/fs/web.js + [5]: https://github.com/zedapp/zed/blob/master/app/js/fs/local.js + [6]: https://github.com/zedapp/zed/blob/master/app/js/fs/dropbox.js + [7]: https://github.com/zedapp/zed/blob/master/app/js/fs/sync.js + [8]: https://github.com/zedapp/zed/blob/master/app/js/fs/static.js + [9]: https://github.com/zedapp/zed/blob/master/app/js/fs/node.js + [10]: https://github.com/zedapp/zed/blob/master/app/js/fs/union.js + [11]: https://github.com/zedapp/zed/blob/master/app/js/fs_picker.js + [12]: https://github.com/zedapp/zed/blob/master/app/js/window.chrome.js + [13]: https://github.com/zedapp/zed/blob/master/app/js/window.nw.js + [14]: https://github.com/zedapp/zed/blob/master/app/js/title_bar.js#L50 + [15]: https://github.com/zedapp/zed/blob/master/app/js/open.js#L49 + [16]: https://github.com/zedapp/zed/blob/master/app/js/boot.js + [17]: https://github.com/zedapp/zed/blob/master/app/js/open.boot.js + [18]: http://creationix.com/ + [19]: http://c9.io + [20]: https://www.youtube.com/watch?v=QzSoHMnvSB0 + [21]: http://zedapp.org/2014/04/zed-the-next-phase/ + [22]: https://www.gittip.com/zefhemel/ diff --git a/content/2014/04/the-changelog-0-11-1.md b/content/2014/04/the-changelog-0-11-1.md new file mode 100644 index 0000000..036bed4 --- /dev/null +++ b/content/2014/04/the-changelog-0-11-1.md @@ -0,0 +1,40 @@ +The Changelog: 0.11.1 +===================== +date: 2014-04-23 + +This is the first update to be pushed for both the Chrome and Standalone version, so we'll be finding out if auto-update works in the standalone version! + +Before we get to the changes in this release, a little update on the funding situation. Last time we crossed the $100/week mark on [Gittip][1] and there is has been some growth, but not that much -- we're currently at $108/week, which is still way off from making this project sustainable. So, if you're a Zed user, [consider buying][2]! + +Both the Chrome and Standalone version should be upgraded automatically. If you somehow can't wait for the standalone version to self-update, feel free to download it again from the [download page][3]. + +This release saw even more growth in community contributions. I'm very excited about this -- Zed is really becoming a team effort. + +Here's the [changelog][4] for 0.11.1: + +* New auto save (which should be friendlier for people using build systems with file watchers). The new version *always* saves when switching between splits and files and when the editor loses focus. What's new is the ability to switch off timed saves (set to `saveTimeout` to 0 to disable). +* Commands to move splits around: (`Split:Move To *`) +* New splits now receive focus automatically +* Version number now appears in project picker +* Fixes to file tree (by eltuerto) +* Sandbox messages now appear in zed::log for standalone version +* Configuration now uses [JSON5][5] format (which supports comments etc.) +* Fix to trim remote URLs when pasting (by surma) +* ZPM auto update fixes +* Scroll past end preference (`scrollPastEnd`) (by TheKiteEatingTree) +* Modes: + * PHP mode now includes a parser and reports parse errors + * Livescript mode (by maninalift) + * Groovy mode (by calebmpeterson) + * JSX mode + * Improved Markdown preview styling (by ghotsla) + +Thanks to all who contributed! + + + + [1]: https://www.gittip.com/zefhemel/ + [2]: /buy + [3]: /download + [4]: https://github.com/zedapp/zed/blob/master/app/manual/changelog.md + [5]: http://json5.org/ diff --git a/content/2014/04/the-changelog-0-11-2.md b/content/2014/04/the-changelog-0-11-2.md new file mode 100644 index 0000000..0178d9a --- /dev/null +++ b/content/2014/04/the-changelog-0-11-2.md @@ -0,0 +1,34 @@ +The Changelog: 0.11.2 +===================== +date: 2014-04-29 + +Before we get to the changes in this release, a little update on the funding situation. We're currently at $115/week, which is still way off from making this project sustainable. So, if you're a Zed user, [consider buying][1]! + +Both the Chrome and Standalone version should be upgraded automatically to 0.11.2. If you somehow can't wait for the standalone version to self-update, feel free to download it again from the [download page][2]. + +![][3] + +This release brings one major feature for Chrome Zed users: [Edit in Zed][4]. Edit in Zed is a new Chrome Extension that works in cooperation with the Zed Chrome App, so be sure you have both installed when testing it. What it does is add a little icon on any `textarea` on any website that shows up when you hover your mouse over it. When you click the icon, Zed will open allowing you to edit the content of the text area, constantly writing back the content. By default Zed launches in text mode, but you can, of course, easily switch to Markdown mode, use preview etc. This feature is fantastic when writing a lot of content on a web page (in a CMS, for instance). Try it out! [Here's a little screencast that demoes the feature][5]. + +Here's the full [changelog][6] for 0.11.2: + +* New "Edit in Zed" Chrome Extension for Zed Chrome version: adds a little on-hover Zed icon to textareas on any website in Chrome, when you click it, you can edit the contents of this text area using Zed. [Download the extension from the Chrome Store][4]. +* Usage data collection: upon first launch you will be asked to agree to collect anonymous usage data. This helps us to see what features (e.g. language modes) people are using and what to improve. +* ZPM fix github package support (by conradz) +* Fix: code beautification (formatting) for selection works now +* Scroll past end of editor preference (by TheKiteEatingTree) +* Modes: + * JSX (react.js) mode now has JSHint support + * Ruby mode now also works on Vagrantfile +* Various minor bug fixes (by robru and others) + +Thanks to all who contributed! + + + + [1]: /buy + [2]: /download + [3]: http://lh5.googleusercontent.com/GTD14j7CnJ8Oc7EUErrNWEtPpgqDI45egaWD-dDxv_TEr-ANH5QoqK-eC1GQ32PkyVH0Rm09LQ=s640-h400-e365-rw + [4]: https://chrome.google.com/webstore/detail/edit-in-zed/dpkaficlkfnjemlheobmkabnnoafeepg + [5]: http://screencast.com/t/tjJXX1rYO + [6]: https://github.com/zedapp/zed/blob/master/app/manual/changelog.md diff --git a/content/2014/04/the-changelog-v0-10-2.md b/content/2014/04/the-changelog-v0-10-2.md new file mode 100644 index 0000000..e412354 --- /dev/null +++ b/content/2014/04/the-changelog-v0-10-2.md @@ -0,0 +1,36 @@ +The Changelog: v0.10.2 +====================== +date: 2014-04-08 + +Woah, the past week has been a huge week. On Tuesday [I announced that I would make working on Zed my day job][1] which resulted in a *lot* of attention. The number of active users exploded, as did participation on [Github][2] and the [Google Group][3]. A couple of new people contributed code to the project too, which is fantastic. I couldn't be happier! + +I'm also happy to see that many of you already made the effort to contribute to the sustainability of the project by [donating weekly on Gittip][4]. We haven't nearly reached financial sustainability of the project, but it's encouraging! + +I just pushed Zed version 0.10.2 to the [Chrome Store][5], which is a minor release in terms of features, but a big one in the amount of work that was done to work towards the promised standalone version. I suspect that this will be the last release before a version that will come in both a Chrome App and Standalone edition -- hopefully by the end of this week or early next week. Stay tuned! + +Here's the [changelog][6] for 0.10.2: + +* Refactoring of Zed core codebase to use Architect plug-ins, making it easier to create the Zed standalone (without Chrome dependency) version. +* New commands: + * `Help:Commands` (bound to F1 by default) gives you a context-sensitive list of all available Zed commands in your current mode, documentation for each command (if available) and current keybinding (by robru) + * `Tools:Document Statistics` gives some useful stats about your current document (word count, line count, character count etc.) (by robru) +* Sandbox updates: + * Added sandbox commands to call goto and invoke arbitrary other commands (by robru) + * Added a "click" handler for the sandbox. +* Language modes: + * Separate SCSS mode (by wpapper) + * Scala mode (by netzwerg) + * Mode is now set for files without a file extension based on Unix shebang line, e.g. #!/bin/bash uses bash mode (by robru) +* Made configuration loading more robust, even if user.json contains JSON parse errors. +* Minor fixes of the whitespace trimmer (by robru) +* Indent on paste fixes (by TheKiteEatingTree) +* Some minor updates to the manual (particularly the config.md documentation) + +Thanks to all who contributed! + + [1]: http://zedapp.org/2014/04/zed-the-next-phase/ + [2]: https://github.com/zedapp/zed + [3]: https://groups.google.com/forum/#!forum/zed-user + [4]: https://www.gittip.com/zefhemel/ + [5]: https://chrome.google.com/webstore/detail/zed-code-editor/pfmjnmeipppmcebplngmhfkleiinphhp + [6]: https://github.com/zedapp/zed/blob/master/app/manual/changelog.md diff --git a/content/2014/04/the-changelog-v0-11-first-standalone-release.md b/content/2014/04/the-changelog-v0-11-first-standalone-release.md new file mode 100644 index 0000000..b6a3b96 --- /dev/null +++ b/content/2014/04/the-changelog-v0-11-first-standalone-release.md @@ -0,0 +1,44 @@ +The Changelog: v0.11 -- First Standalone Release +================= +date: 2014-04-10 + +When I announced [that I would start working on Zed as my day job][1] I committed to one "feature" immediately: a standalone version -- a version you can use without having Chrome installed. Well, barely 2 weeks later, here it is! There may still be bugs here and there, but there's an auto-update feature, so hopefully we can quickly resolve bugs without too much work with re-downloading for you. + +**Bonus feature:** Are you a Vim fan? Zed now has vim keybindings (see changelog below). + +First, a little update with the funding situation. The good news is that we broke the [$100/week barrier on Gittip][2]. That's fantastic, but not nearly enough to make this project sustainable (we need roughly 10x that). So if you're a happy Zed user, [consider supporting the project financially][3]. + +Let me get right to the download links. If you're using the Chrome version (as now more than 15k people are!), you should be getting 0.11 within a few hours. If you want to try out the standalone version, here are the download links. Note: these may still be propagating through our CDN -- thanks [MaxCDN][4]! If the links don't work for you yet, try again in a few hours! + +* [Mac version of Zed standalone 0.11][5] +* [Windows version of Zed standalone 0.11][6] +* [Linux 64-bit version of Zed standalone 0.11][7] +* [Linux 32-bit version of Zed standalone 0.11][8] + +Here's the [changelog][9] for 0.11.0: + +* Standalone: + * First release of Zed standalone! I'm sure there will still be bugs, please report them on github when you find them. + * Open individual files or directories from the command line by calling "zed [dir]" or "zed [file]". On Mac, please install the CLI tools via the `Tools:Install Mac CLI` or the native Tools menu in the Mac app to use this. +* Multiple keybindings support. That's right, we now have Vim and Emacs keybindings. Use the `Configuration:Preferences:KeyBinding:*` commands to switch between them. (by nightwing) +* New commands: + * `File:Copy` (by iElectric) +* Language modes: + * Python now has CTags indexing (by gholstla) + * Ability to switch off certain CSSLint options (by conradz) +* Bugs fixed: + * Fixed a bug where when the project history is empty, no new projects are added. + +Thanks to all who contributed! + + + + [1]: http://zedapp.org/2014/04/zed-the-next-phase/ + [2]: https://www.gittip.com/zefhemel/ + [3]: http://zedapp.org/buy + [4]: http://www.maxcdn.com + [5]: http://download.zedapp.org/zed-mac-v0.11.0.tar.gz + [6]: http://download.zedapp.org/zed-win-v0.11.0.zip + [7]: http://download.zedapp.org/zed-linux64-v0.11.0.tar.gz + [8]: http://download.zedapp.org/zed-linux32-v0.11.0.tar.gz + [9]: https://github.com/zedapp/zed/blob/master/app/manual/changelog.md diff --git a/content/2014/04/zed-the-next-phase.md b/content/2014/04/zed-the-next-phase.md new file mode 100644 index 0000000..e676f0c --- /dev/null +++ b/content/2014/04/zed-the-next-phase.md @@ -0,0 +1,81 @@ +Zed: The Next Phase +=================== +date: 2014-04-01 + +When I started the Zed project about a year ago I intended to build an editor just for me: something minimal, simple and stable. Writing something for myself seemed a natural thing to do after spending about a year and a half having a job [building an IDE][1]: once you've built your own tools, there's no going back. Also, having built this sort of thing before (although not from "scratch"), it was fairly quick to get something working. + +Over the past year, Zed has been the ultimate piece of dogfood-ware for me -- my own personal playground that allowed me to iterate on lingering ideas I had on improving code editing. Since people asked why I created *yet another* editor, over time I distilled some [principles behind the design of Zed][2]. + +Screenshot + +The past half a year I've been using Zed full-time and I've been *very* happy with it. And I'm not the only one. The Google Chrome Web Store (Zed currently runs as a Chrome app) [tells me][3] there are well over 4000 "weekly users", and the reviews are generally very positive. Now I take the 4k number with a grain of salt, but clearly, this is no longer a 1-person audience editor. The number of community contributions has also increased lately and there appears to be a growing number of users that don't just like Zed as a cool "look what web tech can do" demo, but really *love* Zed as an editor, and see it as a modern-day Emacs or Vim: minimalist, powerful and extensible. + +However, with a full-time day job at work, and full-time night job as a parent, there isn't always much time to spend on Zed. At least not as much as I'd like. And I have *so many* cool ideas I still want to implement. + +It's time to fix that. + +### I'm making Zed my day job + +So, I'm going to try something radical. As of today, I'm making Zed my day-time job. + +I've launched a company to further develop Zed, with the goal to, over time, earn enough money on it to support me and my family, and to continue developing Zed into something great. + +While an obvious option to make Zed profitable would be to make it proprietary and sell licenses, I won't be doing that. I think there's a lot of value for users in the fact that their editor is open source, in terms of hackability and longevity. Also, since I'm a company of one -- for the foreseeable future -- I think the best way to compete is if when the community helps out with enhancement and bug fixes, as it does already. So, *Zed will remain open source.* + +### Sustainable Open Source + +I'm going to try making a living working on open source. I have not fully decided how I'll attempt this, so [all ideas are welcome][4]. However, my current plan is the simplest and most transparent thing possible: ask users to pay. If you use Zed and get value out of it, support me financially to support further development. Just as you would for regular commercial software, pay for Zed as well. + +While possibly naive, this seems like the cleanest way to sustainability of this type of project. I don't want to do [open core][5], or do weird in-editor ads (which people would be able to easily remove anyway). Consulting around Zed also doesn't seem to make much sense. Again, tips or suggestions, are welcome, so [get in touch][4]. + +### Why would you pay for an *editor*? + +So why would you pay for an editor when you can get Vim, Emacs, Notepad++ and Gedit for free? + +As I see it, the cost of software has very little to do with purchase price. If a piece of software *just* makes you 1% more productive compared to *not* using the software, and you earn, say, $40/hour and use it 40 hours a week (developers tend to use their editors close to full-time), very quickly this software is worth $70/month. Or rather, *not* using that piece of software costs you $70/month. Zed will be *significantly* cheaper than that, price wise. + +Are you as productive using your "free" software as you are/will be with Zed? My challenge is to make the answer to that question a resounding "no." + +As a bonus, in contrast to proprietary editors like Sublime and most Jetbrains IDEs, Zed is 100% open source, so you can read the source code, enhance it, fix it, break it and learn from it. Even if I or my company will go away, Zed won't, if somebody cares enough about it to develop it further. So it's a more lasting investment than paying for a commercial alternative. + +Of course, this being open source, there's no way to enforce anybody to pay a dime. So what if people don't? That will mean that when my savings run out I will have to go back to a regular day time job. As a result, Zed development will slow down again. This tool that your rely on won't improve at the same pace anymore. Me unhappy, you unhappy. If instead lots of people contribute, possibly I can hire a second person, third, fourth. Who knows. Result: Zed will get even awesomer. + +It's all in your hands. + +Can't some random person fork the project and attempt same thing? Yep. Worse, they can fork the project, and create a proprietary version and start selling it. I'm just assuming people are decent and respect my and the community's work. That's what this whole open source thing is all about, or so I understand. + +### So, what cool features will we get? + +I have *loads* of things I want to do, but the only one I want to commit to right now is a stand-alone version of Zed. Zed currently is only available as a [Chrome packaged app][6]. So you need to use Chrome to run it. This is fine, but not everybody likes it. It also limits OS integration somewhat. + +The stand-alone version will be built on top of [node-webkit][7] and be available for Mac, Windows and Linux. Once the initial work there is done, both version should continue working from the same code base, so I should be able to support two versions (Chrome App and standalone) without much effort. + +There are many more things I will finally have time for, but I'll talk about those over time. Those [familiar with my background][8] can probably guess what direction I could take. + +### Sign me up! + +I'm still working out ways for users to support this project, but one that's available for those who want to support the project right away is [my Gittip account][9]. I'm going on a stretch here and am willing to accept Gittips from people who do not currently use Zed, but are excited about the dream and want to find out where this is going. I know, I'm a very generous that way. Also, if you or your company are interested in supporting this effort and don't want to use Gittip, [get in touch][4]. And if you haven't already, give Zed a try and [report any bugs you may find][10]. + +I'm *very* excited, and frankly, a bit scared to take this step. But I've also been looking forward to it for a long time. + +Let's make Zed even more awesome! + +Watch this blog, my [twitter account][11], or [Zed's twitter account][12] and subscribe to the [Google Group][13] for regular updates! + +Discussion on [Hacker News][14] and [Reddit][15]. + + [1]: http://c9.io + [2]: /vision + [3]: https://chrome.google.com/webstore/detail/zed-code-editor/pfmjnmeipppmcebplngmhfkleiinphhp/reviews + [4]: mailto:zef@zef.me + [5]: http://en.wikipedia.org/wiki/Open_core + [6]: https://chrome.google.com/webstore/detail/zed-code-editor/pfmjnmeipppmcebplngmhfkleiinphhp + [7]: https://github.com/rogerwang/node-webkit + [8]: http://zef.me/about + [9]: https://www.gittip.com/zefhemel/ + [10]: https://github.com/zedapp/zed/issues?milestone=1&state=open + [11]: http://twitter.com/zef + [12]: http://twitter.com/ZedEditor + [13]: https://groups.google.com/forum/#!forum/zed-user + [14]: https://news.ycombinator.com/item?id=7515147 + [15]: http://www.reddit.com/r/programming/comments/220czd/zed_new_open_source_code_editor_the_creator_quits/ diff --git a/content/2014/05/language-agnostic-tooling.md b/content/2014/05/language-agnostic-tooling.md new file mode 100644 index 0000000..3c4dcf1 --- /dev/null +++ b/content/2014/05/language-agnostic-tooling.md @@ -0,0 +1,137 @@ +Language-Agnostic Tooling +========== +date: 2014-05-22 + +One of many challenges I struggle with working on Zed as one-person company is what to spend your time on. Should I just fix bugs? Write documentation? Brag about Zed features in blog post? Write features that make great demos to draw people in? Should I build payment systems to [increase income][1]? + +Basically I have to ask myself: how can I optimize my user-happiness-increase/hour ratio? + +As you may be aware I have a [background in programming language engineering][2]. I have some experience in writing programs that parse and statically analyze programs. At [Cloud9][3] I worked on language intelligence features. At one point I spent a month or two (and my colleague quite a while more after) building a type inference engine for JavaScript. It's pretty difficult to do, but the result nice and allows for quite accurate code completion of methods and properties ([try it out][3]). However, building such a feature for *one* language takes a developer *months*. + +This raises the question: should take the same approach for Zed? Should I spent months building a super accurate code completion engine for *one* language? That would mean that nothing much else gets done. Is that the best use of time? + +I decided that, no, it's not. Instead, I started to think about create ways to have *similar* features in Zed, but built with much less effort. + +Thus far I came up with a few examples of low-hanging language tooling fruit, if you will. They're much more pragmatic and often less accurate than their full-blown, expensive to develop alternatives (= custom implementations for each language). Nevertheless, I found them to very helpful and to have a good pay-off/hour spent ratio. + +### 1\. Symbol Indexing + +This is the most obvious one: Zed's symbol indexing. Rather than writing complicated parsers for the languages Zed supports, I chose an ad-hoc approach with simple regular expressions. This is fast to develop, fast to execute and works reasonably accurately (depending on the language and regular expression). + +![Symbol indexing](/img/symbol-indexing.png) + +How it works is simple: for each language you have to write a function that takes source code and returns a list of symbols and their position in the file. This is how it worked for a long time. One JavaScript module with one indexing function per language mode. However, this could be further improved, because the pattern of these symbol indexers was always the same: define a few regular expressions, then run over the string to find matches and turn these into symbol info to return. + +So recently I created a single generic [Regex Indexer][4] command, that can simply be configured for each language individually without having to write any JavaScript. For instance [for Go][5]: + + commands: { + "Tools:Index": { + scriptUrl: "/default/command/regex_indexer.js", + inputs: { + text: true + }, + regexes: [{ + regex: "type\\s*([A-Z-a-z0-9_]+)", + symbolIndex: 1, + type: "type" + }, { + regex: "func\\s*(\\([^\\)]+\\))?\\s*([a-zA-Z0-9_\\-\\$]+\\s*\\([^\\)]*\\))", + symbolIndex: 2, + type: "function" + }] + } + } + + +Or [Clojure][6]: + + commands: { + "Tools:Index": { + scriptUrl: "/default/command/regex_indexer.js", + inputs: { + text: true + }, + regexes: [{ + regex: "\\(defn-?\\s*([A-Z-a-z0-9_\\-]+)", + symbolIndex: 1, + type: "function" + }] + } + }, + + +Regular expressions are still ugly beasts, but they work. And adding simple symbol indexing to any language is now often a matter of half an hour up to an hour (depending on your regex skills). + +### 2\. Bracket Checking + +One nice feature of Zed is its built-in support for parsers and linters. For instance, Zed's JavaScript mode has JSHint built-in. JSON, PHP, Lua and CoffeeScript also have syntax checkers as part of their language mode, because there happen to be parsers for these languages written in JavaScript already, it's easy to integrate into Zed and showing markers for syntax errors inline saves you from one more trip to the terminal (or browser) and back. + +That's all very nice, but there are many more language for which parser written in JavaScript are *not* yet available. And writing a high-quality parser for most languages is *a lot of work*. + +So would it be possible to build some syntax tooling that helps *at least a little* in detecting common mistakes writing code? + +One thing I've been experimenting with is [my new bracket-check][7] package (install via [ZPM][8]: `gh:zefhemel/bracket-check`). The name hints at what it does: it checks nesting of brackets: e.g. `[{(`. Is this a full-blown syntax check? No (although... almost for Lisps), but it *helps*. + +Bracket-check's [configuration file][9] shows how to enable and configure it for various languages. You only have to configure two things: the bracket pairs to match and the parts to skip over (such as string literals, comments) etc. Here's the definition for Go: + + go: { + commands: { + "Tools:Brackets:Check": { + scriptUrl: "./check.js", + internal: true, + inputs: { + text: true + }, + brackets: ["()", "{}", "[]"], + skip: [["\"", "\""], ["`", "`"], ["//", "\n"], ["/*", "*/"]] + } + }, + handlers: { + check: ["Tools:Brackets:Check"] + } + }, + + +![Invalid bracket error](/img/bracket-invalid.png) + +There are similar configurations for Clojure and Dart. More are trivial to add. + +### 3\. Property and Method Completion + +The most interesting example (in my opinion) is my experimental [follow complete][10] package. Follow complete is based on a few observations: + +1. A lot of languages use a `a.b` and `a.b()` (and similar: `a->b` and `a->b()`, `a::b`) notations for package namespacing, property access and method calling, e.g. JavaScript, Go, C++, PHP, Ruby, CoffeeScript, C#, Java, Dart, Groovy, Lua, Rust, Python, Scala etc. +2. Programmers tend to name variables of certain types the same all over the code base: e.g. `arr` for arrays, `el` for HTML DOM elements. +3. Many languages use the `a.b` pattern for namespacing, for instance in Python after you `import os` you call methods on it via `os.some_method()`. Even without explicit imports, `document.createElement()` is an example of this in JavaScript. + +If this is the case, wouldn't indexing any sequence of `x.y`, `x.y(...)`, `x(...).y` and `x(...).y(...)` found in a code base, result in some useful completions when requesting code completion after typing `x.`? In that case, code completions could include `y` and `y()`. + +This is exactly what [follow complete][10] does. It uses Zed's new database APIs to index sequences of identifiers with `.`s in between and uses that for completion. As it turns out, if your code base is big enough, this gets surprisingly useful. + +Again, here's a Go example. Go happens to use `.` as a package separator. Without any Go-specific knowledge, let alone knowledge of Go's APIs, Zed can now give the following completion for the `datastore` package (which is an Google App Engine specific package that is used fairly heavily in this particular project): + +![Follow complete](/img/follow-complete.png) + +As you can see, although Zed "knows" that these are all methods, it doesn't show method argument names, simply because it doesn't know them. Potentially these method names could be matched with the symbol list, perhaps to also give argument names. Nevertheless, even without that getting some completion for APIs that are used in your project is quite useful. + +If you want to try out follow complete as it is today, install the `gh:zefhemel/follow-complete` package, and after installing be sure to reindex your whole project with the `Tools:Index Project` command. + +These are just three examples of useful language tooling features that are relatively language-agnostic. I'm constantly thinking about new ways to do this sort of stuff. + +Any suggestions are welcome. + +### About Zed and this blog post + +[A little while back I announced][11] I would make working on Zed my day-time job. Zed was open source before, and I kept it that way. In addition to the openness in *code* I also want to be open in design decisions and other lessons learned during this endeavor. This post is one example of that. Do you want to support me in working in this open way? [Consider "buying" Zed][1]. + + [1]: /buy + [2]: http://zef.me/thesis.pdf + [3]: http://c9.io + [4]: https://github.com/zedapp/zed/blob/master/app/config/default/command/regex_indexer.js + [5]: https://github.com/zedapp/zed/blob/master/app/config/default/mode/go.json#L10 + [6]: https://github.com/zedapp/zed/blob/master/app/config/default/mode/clojure.json#L8 + [7]: https://github.com/zefhemel/bracket-check + [8]: http://zedapp.org/2014/05/zed-package-manager/ + [9]: https://github.com/zefhemel/bracket-check/blob/master/config.json + [10]: https://github.com/zefhemel/follow-complete + [11]: http://zedapp.org/2014/04/zed-the-next-phase/ diff --git a/content/2014/05/the-changelog-0-11-3.md b/content/2014/05/the-changelog-0-11-3.md new file mode 100644 index 0000000..24339df --- /dev/null +++ b/content/2014/05/the-changelog-0-11-3.md @@ -0,0 +1,31 @@ +The Changelog: 0.11.3 +===================== +date: 2014-05-14 + +This release contains some big infrastructural changes (primarily the switch from the `/tags` ctags file to using [IndexedDB][1] (a fast LevelDB-powered in-browser database) that will enable some cool language-intelligence features that will most likely be released as separate Zed packages in the near future. In addition, icons are now used in the symbol list and auto complete to signify whether they're functions, types, snippets etc. Some indexers (e.g. the ones for JavaScript and Go) now also includes arguments to functions in the symbol list. + +![New symbols](/img/new-symbols.png) + +Here's the full [changelog][3] for 0.11.3: + +* [ZeDB][4]: a simple abstraction layer on top of IndexedDB. Packages and other sandbox code can create their own data stores and indexes (via the `databases` key in configuration) and read, write and query that data quickly. This system is current primarily used for symbol indexing and code completion (see below). +* Complete rework of generic project indexing system, now storing symbol information in IndexedDB for faster retrieval (than the `/tags` file in ctags format that it used to use). +* Support for full function signatures and icons in symbol list (`Command-R`/`Ctrl-R`) and code completion for certain languages (JavaScript, Go, others still have to be updated) +* General-purpose regex-based symbol indexer allows to add basic symbol indexing to modes without writing any JavaScript (see Go and JavaScript mode for examples). +* Additional multi-cursor commands (`Cursor:Multiple:Add Above Skip Current` and `Cursor:Multiple:Add Below Skip Current` by thebishopgame) +* Standalone: + * No longer crashes when an exception occurs + * Do not save window position for minimized windows (by nightwing) +* Modes: + * New matlab mode (by timothyrenner) + * Markdown: disable strip whitespace (by robru) + * Handlebars mode (by chenxsan) + +Thanks to all who contributed! + + + + [1]: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API + [2]: http://zedapp.org/wp-content/uploads/2014/05/new-symbols.png + [3]: https://github.com/zedapp/zed/blob/master/app/manual/changelog.md + [4]: https://github.com/zedapp/zedb diff --git a/content/2014/05/zed-package-manager.md b/content/2014/05/zed-package-manager.md new file mode 100644 index 0000000..ba463ad --- /dev/null +++ b/content/2014/05/zed-package-manager.md @@ -0,0 +1,204 @@ +Zed Package Manager +=================== +date: 2014-05-15 + +A while back we added a very cool feature to Zed called ZPM, which we never advertised. As you may have guessed it stands for "Zed Package Manager" and the first implementation was done by [Andrew Stephan][1]. + +While ZPM will likely be dramatically improved in the future, let me lay out how it works right now: how to install and manage packages and how you can create your own packages that extend the functionality of Zed. + +Let's start with installing and managing. + +### Installing and Managing Packages + +Installing a Zed package is straight forward, all you need is a copy of Zed (duh) and the URI of the packages you want to install (more on this URI later). + +To see what packages are currently installed, run the `Tools:Zpm:Installed Packages` command from an editor window, this will open up a session listing all currently installed packages as well as the ability to uninstall, update, update all and install new packages. This list uses a regular Zed file as user interface, you can operate it with the keyboard (by moving your cursor to a "button" and hitting `Enter`) or mouse (by clicking on a "button"). Note that packages that come preinstalled with Zed can not be uninstalled (they have an uninstall option, but this will have no effect). + +To install a new package hit the "Install New" button. Alternatively, you can run the `Tools:Zpm:Install` command (from anywhere, doesn't need to be from the installed packages view). Then, enter the package URI. A simple package (that we'll developer later in this post) you can try is `gh:zefhemel/sample-zed-package` After installation completes you should now have a new `My Test Command` command that says "Hello world" when you run it. + +Awesomeness. + +Zed's package ecosystem is fully decentralized at this time. There is no central repository like Sublime and Atom have. However, [for now we can use the Zed wiki for this purpose][2]. + +### Under the hood + +Packages are essentially not much more than a way to easily install some files into your configuration project. When you look in your Configuration project under the `/packages` directory (the tree is the best way to explore here: `Command-T`/`Ctrl-T`), you'll see that there are already a number of packages pre-installed. At the time of this writing the following modes are distributed as Zed packages: + +* [JavaScript mode][3] +* [JSON mode][4] +* [JSON5 mode][5] +* [PHP mode][6] +* [CSS mode][7] +* [JSX mode][8] + +Over time, more and more built-in modes will be migrated to Zed packages, but this is a significant undertaking, so it will take a while. + +If you open up the `/default.json` file in your Configuration project, you'll see a `packages` key listed: + + packages: [ + "gh:zedapp/javascript-mode", + "gh:zedapp/json-mode", + "gh:zedapp/json5-mode", + "gh:zedapp/php-mode", + "gh:zedapp/css-mode", + "gh:zedapp/jsx-mode" + ] + + +ZPM ensures that each of the packages listed there are installed and kept up-to-date automatically. If you installed a package yourself you'll find it listed in your `/user.json` file. + +So where do these packages come from? A package URI can either be a full HTTP link to a directory that contains a `package.json` file, or, preferably, a shortcut can be used. Shortcut URIs are prefixed with (currently) either `gh:` (for github) or `bb:` (for bitbucket). These expand to (in case of the `gh:zedapp/javascript-mode`) to `https://raw.githubusercontent.com/zedapp/javascript-mode/master/`. ZPM expects, by appending `package.json`, to [find a JSON file][9] similar to this: + + { + "name": "JavaScript mode", + "uri": "gh:zedapp/javascript-mode", + "version": "0.2", + "description": "JavaScript mode for Zed", + "files": [ + "beautify-js.js", + "beautify.js", + "check.js", + "index.js", + "jshint.js" + ] + } + + +The required keys are: + +* `uri`: This URI has to *exactly* match the URI people will use to install your package (if not, you can expect weird behavior). +* `name`: The name of the packaged used to display in the UI +* `description`: Description used to display in the UI +* `version`: Version number, when you increase this number people with the package installed will automatically updated (ZPM checks for updates every few hours) +* `files`: A list of relative paths of files that the package consists of (`package.json` and `config.json` are included automatically, you don't have to add them to this list). + +Every package, in addition to `package.json` should at least have a `config.json` file that contains [regular Zed config, for instance defining new commands, modes, themes][10] or whatever your package offers. [Here's the config for the JavaScript mode][11]. The rest of the files are typically JavaScript files that implement the commands listed in the config file. + +### Developing your own packages + +#### Preparation + +The first thing you'll want to do is store your configuration project in a local directory (rather than SyncFS, which is the default in the Chrome edition of Zed). The reason is you'll want to upload or check in your package files to e.g. Github so you need direct access to the files. To do this in the Chrome version run the `Configuration:Store in Local Folder` command. If you're using the standalone version, your configuration is stored in `~/.config/zed/config` on Linux and `~/Library/Application Support/zed/config` on Mac. If you want to store your config elsewhere use the `Configuration:Set Configuration Directory` command. Personally I store my configuration somewhere in my Dropbox folder. + +#### Decide where to host your package + +I suggest you create a public Github or Bitbucket repository for your package. In this blog post we'll use [hosting it on a Github repository called `sample-zed-package` hosted on my `zefhemel` github account][12] as an example. + +#### Create the package + +The Configuration project has some developer-specific commands to get you started quickly. Run the `Tools:Zpm:Create Package` package. This will prompt you for the package URI. We'll enter `gh:zefhemel/sample-zed-package` (replace with whatever your repo is). + +This will create two files in `/packages/gh/zefhemel/sample-zed-package/` named `package.json` and `config.json`. It will open `package.json` by default. Update its default values to whatever you want, e.g. + + { + "name": "My First Zed Package", + "uri": "gh:zefhemel/sample-zed-package", + "version": "1.0", + "description": "A useful new package", + "files": [] + } + + +Next, let's open up the `config.json` in the same directory (tip: Open up Goto with `Command-E`/`Ctrl-E` and press the spacebar to complete the path to the current directory, then pick `config.json`). + +For our purposes we'll just define a sample command: + + { + commands: { + "My Test Command": { + scriptUrl: "./command.js" + } + } + } + + +Next, let's create `/packages/gh/zefhemel/sample-zed-package/command.js` (again using the same Goto trick): + + var ui = require("zed/ui"); + + module.exports = function(info) { + return ui.prompt("Hello world!"); + }; + + +As you can see a Zed command is implemented as a CommonJS-style JavaScript module. It exports a function taking a single argument (`info`) that, depending on your configuration contains useful information about the context in which the command was executed. Zed comes with a growing API that allow you to interact with the editor, all these APIs are available by `require`'ing modules under `zed/*`. In your configuration project look under `/api/zed` to see what's available. Admittedly, documentation is lacking on these APIs, so until that improves it is recommended to look at a lot of examples. For this, the Configuration project is your oister: all code for all installed packaegs, modes, all themes and many commands is all there to be inspected. If you have specific questions, please join the [Zed Google Group and ask!][13] + +To test it out our newly created project we need to add our package to our `packages` list in `/user.json`: + + packages: [ + "gh:zefhemel/sample-zed-package" + ] + + +Automaticically, your configuration will reload and your new command should be available. Run `My Test Command` to try it out. If it's not there, try reloading your configuration explicitly using `Configuration:Reload`. You will have to run this command every time you change your `config.json` file. Another command you'll need a lot is the `Sandbox:Reset` command, which will make sure your JavaScript code is reloaded the next time it's invoked. + +#### Publishing your package + +Before publishing our package we have to remember one important thing: to update our `package.json` to include all our extra files (files other than `package.json` and `config.json`). Luckily Zed offers a convenience command for this: Switch to your `package.json` file and run `Tools:Zpm:Update Package.json File List`. This command will automatically scan your project and update your `package.json` to include the `command.js` file. + +This is where the Zed-part ends. In brief what what's left to do is to turn our package directory into a git directory, commit all files to it and push it to github. + +To do so, open a terminal and `cd` to your Zed configuration directory, then `cd` into our package directory: + + $ cd packages/gh/zefhemel/sample-zed-package + + +Initiallize a git repository there, add all files and commit: + + $ git init + $ git add * + $ git commit -m "Initial checkin" + + +Add the github repository we created earlier as a remote and push to it. In my case: + + $ git remote add origin git@github.com:zefhemel/sample-zed-package.git + $ git push -u origin master + + +Done! + +#### Testing your package + +Before telling all our friends, all we have to do now is test our package. For this purpose I always have a separate Zed copy lying around (either I use the standalone version for development and the Chrome version for testing or the other way around, or I use a Zed chrome install in the Canary version of Chrome). Alternatively you can switch your Zed configuration to a new, clean, directory (and switch back later). The goal is to have a Zed install without your package already installed. You can also use another computer (e.g. your Chromebook) of course. + +To install your package, in your "clean" Zed run the `Tools:Zpm:Install` command and enter your package's URI. If all works out well your command should now be available. Rather than running `Tools:Zpm:Install`, you can also update your `packages` list to include your package's URI in the Configuration by hand. The effect should be the same. + +Works? Congratulations, be sure to add your package to [our wiki page!][2] + +#### Development and debugging tips + +You should treat the Configuration project like a development environment for developing Zed packages. I usually start out with adding my new modes and commands to my `/user.json` file, and if it works I migrate them to a package. + +**Logging:** Every project has a `zed::log` file that lists notices, errors and warnings from Zed and its sandbox code. If your package or script doesn't work, always check `zed::log` first for pointers to what may be wrong. For debugging purposes you can use `console.log` etc. in your JavaScript, whose output also appears in `zed::log` (prefixed with `[Sandbox]`). + +**Reloading/restarting:** Since Zed strictly separates all the package and extension code from the editor itself by running it in a sandbox, it is possible to edit your packages and test the result immediately without restarting Zed or reopening your editor window. What you have to remember is that in order to reload your configuration file (`config.json`) you can just run the `Configuration:Reload` command. And if you made changes to your JavaScript files, you just run the `Sandbox:Reset` command to have Zed reload those files to see your changes in action. + +**Protip:** If you do a lot of Zed package development, it may be a good idea to bind the `Configuration:Reload` and `Sandbox:Reset` commands to a key combination. I have this in my `/user.json`: + + keys: { + "Sandbox:Reset": "Ctrl-Shift-S", + "Configuration:Reload": "Ctrl-Alt-Shift-S" + } + + +**Common problems:** + +* If your configuration keeps reloading constantly, after you add your package to the `packages` key in your `/user.json` a likely cause is that the URI listed in your `package.json` does not match the URI used in the package's path. That is, if your package URI is `gh:abc/def` your `package.json` *has to be located in* `/packages/gh/abc/def/package.json`, if it's not, looping behavior can occur. +* If you see 404 errors in `zed::log` when installing or running your package, this is likely a problem with your `files` list in your `package.json`. If the 404s occur while installing a package, make sure that you have checked in a `package.json` where all files listed under `files` exist. If it happens while testing a package *after* installation, make sure that the file that Zed claims it cannot find was listed under the `files` key in your `package.json`. + +And that's it! Let's see what you can build! + + [1]: https://github.com/TheKiteEatingTree + [2]: https://github.com/zedapp/zed/wiki/Packages + [3]: https://github.com/zedapp/javascript-mode + [4]: https://github.com/zedapp/json-mode + [5]: https://github.com/zedapp/json5-mode + [6]: https://github.com/zedapp/php-mode + [7]: https://github.com/zedapp/css-mode + [8]: https://github.com/zedapp/jsx-mode + [9]: https://raw.githubusercontent.com/zedapp/javascript-mode/master/package.json + [10]: http://zedapp.org/2014/02/configuration/ + [11]: https://github.com/zedapp/javascript-mode/blob/master/config.json + [12]: https://github.com/zefhemel/sample-zed-package + [13]: https://groups.google.com/forum/#!forum/zed-user diff --git a/content/2014/06/the-changelog-0-11-4.md b/content/2014/06/the-changelog-0-11-4.md new file mode 100644 index 0000000..af9ba80 --- /dev/null +++ b/content/2014/06/the-changelog-0-11-4.md @@ -0,0 +1,36 @@ +The Changelog: 0.11.4 +============ +date: 2014-06-16 + +This release has some solid improvements for its Goto feature (whose matching algorithm was improved and now also searches symbols by default) and project-wide search (with case insensitive and regex support and support for only searching files matching a file pattern) as well as some other, more minor changes that should smoothen the experience. + +Here's the full [changelog][1] for 0.11.4: + +* Goto improvements: + * Goto (Ctrl-E/Command-E) now also includes matches from the symbol index (without having to use the `:@` or `@` prefix) + * New fuzzy matching algorithm: + * Now also searches file directory names by default. + * Character sequences now have to match exactly, spaces can be used as wildcards. E.g. "bcd" matches "abcde" but not "abccde", however "bc d" will match "abccde". + * Scoring is now based on how close the pattern match is to the end of the path, the closer to the end, the higher the score. This favors file name matches over directory name matches, which is usually what you want. +* Project search improvements: + * Now integrated into goto (Ctrl-Shift-F/Command-Shift-F) + * New query syntax: `searchphrase [-flags] [filepath pattern]` for example: `hello` or `hello *.js` or `hello -i` (case insensitive search) `he*llo -ie /docs/*.md` (case insensitive regex search). Supported flags: `-i` (case insensitive matching) and `-e` (regex match). +* Batched undo: you no longer have to run undo for every character, certain operations (including typing and deleting) are now batched up. +* Better behavior when "closing" a split (going from 2 to 1 splits): the split left will now contain the file in the active split. +* Bug fix: Fix window positioning after restore +* Bug fix: Better recovery from broken configuration +* Bug fix: No longer show stacked "file changed" dialogs for each change +* Sandbox API: + * `zed/http` API now also has POST, PUT, DELETE etc. support and returns not just content, but also headers (by akoenig) + * `zed/preview` API now supports opening the preview split (by akoenig) +* Mode: + * Clojure/ClojureScript mode: symbol indexing and better indenting + +As always, if you have Zed installed, Zed should be upgraded automatically. If not, you can [download Zed from its download page][2]. + +Thanks to all who contributed! + + + + [1]: https://github.com/zedapp/zed/blob/master/app/manual/changelog.md + [2]: /download diff --git a/content/2014/06/zed-usage.md b/content/2014/06/zed-usage.md new file mode 100644 index 0000000..f88dc79 --- /dev/null +++ b/content/2014/06/zed-usage.md @@ -0,0 +1,109 @@ +How is Zed Actually Used? +============= +date: 2014-06-27 + +A few releases back, Zed added opt-in analytics. Upon first launch, Zed asks the user whether he's ok sending some anonymous usage data to further improve Zed. It has been about two months since this release, so it's time to share some results. + +Of course, there's no way of telling how many people have *not* opted into the analytics, so total numbers don't say much. However, presumably percentages give some indication how Zed is used. + +## Zed Chrome vs. Standalone + +As of version [0\.11][1] Zed comes in two editions: + +1. Zed Chrome, the Chrome App installable (and discoverable) via the Chrome Web Store, available for all platforms that Google Chrome runs on. +2. Zed Standalone, based on node-webkit, available for Mac, Linux and Windows. + +At various points in time, [features have been discussed][2] that would need to introduce APIs (such as running CLI commands from sandbox code) that would only be implementable in the *standalone* version of Zed. Therefore, it's interesting to see how many users would be impacted if we'd start adding features that only work in the standalone version. + +Based on data from the past two months, it turns out **79%** of Zed usage comes from the Chrome App. Note that this is not just counting launches but all events -- meaning that "real" usage counts more towards this percentage than a single launch. + +The question is: Why is the Chrome App so much popular? I can think of a few reasons: + +1. The Chrome App is promoted in the [Chrome Web Store][3] which brings in a lot of new users that otherwise would probably never had heard of Zed. +2. The Chrome App has been around longer and people haven't switched. +3. The Standalone version seems to have some unexplainable [power consumption issues][4], at least on Mac. +4. The standalone version does not have automatic configuration syncing, nor the syncing Notes project, nor Dropbox support. +5. The standalone version does not run on Chrome OS. + +A few of these can be further investigated. For instance, option 4 includes Dropbox support and the Notes project. Are those heavily used features? We have some data on that. Here are the used "file system types" ranked by usage: + +![Zed FS types](/img/zed-fs-types.png) + +Translation of the names used: + +* `local` is Chrome's Local Folder file system implementation. +* `config` is Chrome's syncing Configuration file system. +* `node` is the Standalone version's node.js-based local file system. +* `manual` is the Manual project, +* `syncfs` is the syncing Notes project (Chrome only). +* `http`/`https` is remote editing of directories using `zedrem`. +* `nwconfig` is the Standalone version of the Configuration project. +* `dropbox` is the Dropbox file system (Chrome only). +* `textarea` is the new "Edit in Zed" feature (Chrome only). + +From this we can see that editing of local folders (`local` + `node`) accounts for 57% of all projects being opened. Chrome-specific features (Notes and Dropbox support) add up to about 10%, which isn't huge but still significant. Whether or not people choose the Chrome version for this reason -- they at least use it. + +## Language Modes + +Zed has syntax highlighting support for many different languages. In addition, for some languages it has language-specific features, such as integrated syntax checking, linting and code beautification. However, does that impact usage? What languages do people use Zed for where language-support can be further improved? + +Here are the top 10 most popular language mode by usage: + +![Zed popular languages](/img/zed-popular-languages.png) + +Zed's most advanced language mode is JavaScript, and indeed, that's topping the chart. More surprising are "text" and "markdown". Markdown mode has syntax highlighting and preview support, but could be further improved. Also when you open a new project with Zed a `zed::start` document shows that uses `markdown` mode, so that may skew the results. Interesting items on this list are PHP, Python, C, and Ruby. PHP has a syntax checker, but Python, C and Ruby don't have very good language features yet. Definitely something to work on in further releases. + +## Goto vs the File Tree + +Zed has championed its Goto functionality. It grows out of the belief that the "type a few characters in a search field" way of navigating files is better than using a file tree. Nevertheless, Zed still features a file tree, although it's not always visible. So, what are users actually using? + +Based on data collected, it appears that in Zed **87%** of the time Goto is used to navigate between files. Note that this doesn't prove that Zed made the right call, just that users use Zed the way it was intended. + +## Popular Commands + +Zed is command based, commands can be bound to keys, but also be executed by name. Naturally, most commands are executed through a key binding (e.g. you use the `Up` key rather than executing the `Cursor:Up` command manually), but commands can be executed by name too. It's interesting to see what commands are commonly executed by name -- because they're worth assigning a keyboard shortcut to. + +Here's the top 10: + +![Popular commands](/img/zed-popular-commands.png) + +Three of these `File:Rename`, `File:Delete` and `Navigate:Reload Filelist` are file-management related commands. I use these three myself too, although I bound the latter to a key in my own configuration. `Navigate:Reload Filelist` is an annoying one. It's a command that ideally you'd never have to execute manually, Zed should just detect changes itself. Sadly, in practice this is hard to do without rescanning your whole file tree (potentially huge) every minute or so (and is every minute even enough?) as there's no way to "watch" a directory tree at an OS level (at least not in most file systems Zed supports, such as the HTML5 based local file system used in Chrome). + +## Operating Systems and Geography + +What operating system do most Zed users use? Here's the list: + +1. Windows: 42% +2. Mac: 16% +3. Linux 64-bit: 16% +4. Chrome OS: 15% +5. Other: 11% + +Time to pay attention to all those Windows users, for sure. Also, there's a significant number of ChromeOS users, which I find intriguing. It'd be interesting to further investigate how ChromeOS users use Zed, because most likely they don't use the ability to edit local folders -- because there are none (other than the Downloads folder). + +And just for fun -- here's the geographic distribution of Zed users: + +![Zed user map](/img/zed-map.png) + +![Zed user countries](/img/zed-countries.png) + +This begs the question: People of Greenland -- y u no use Zed? + +## Actionable items + +So, what do we do with this information? Here's a few action items, at least for me: + +1. Test every release on Windows, since this is how the largest percentage of users will experience Zed. +2. Explore what new features can be added to the following language modes: + * markdown/text + * PHP + * Python + * Ruby + * C +3. See what keyboard shortcuts can be assigned to reloading the file list and renaming a file. +4. Write up a blog post about effective ways of using Zed on ChromeOS. + + [1]: http://zedapp.org/2014/04/the-changelog-v0-11-first-standalone-release/ + [2]: https://github.com/zedapp/zed/issues?state=open + [3]: https://chrome.google.com/webstore/category/apps + [4]: https://github.com/zedapp/zed/issues/311 diff --git a/content/2014/07/the-changelog-0-11-5.md b/content/2014/07/the-changelog-0-11-5.md new file mode 100644 index 0000000..c7ce132 --- /dev/null +++ b/content/2014/07/the-changelog-0-11-5.md @@ -0,0 +1,72 @@ +The Changelog: 0.11.5 +===================== +date: 2014-07-09 + +This release incorporates some of the findings in [How Zed is Actually Used][1] (specifically better support for popular Zed languages such as Python, Ruby and PHP). It also includes two new packages as part of the distribution: [follow-complete and bracket-check][2]. In addition, various bugs have been fixed and features tweaked. + +Let's recap what follow-complete does: + +> Follow complete is based on a few observations: +> +> 1. A lot of languages use a `a.b` and `a.b()` (and similar: `a->b` and `a->b()`, `a::b`) notations for package namespacing, property access and method calling, e.g. JavaScript, Go, C++, PHP, Ruby, CoffeeScript, C#, Java, Dart, Groovy, Lua, Rust, Python, Scala etc. +> 2. Programmers tend to name variables of certain types the same all over the code base: e.g. `arr` for arrays, `el` for HTML DOM elements. +> 3. Many languages use the `a.b` pattern for namespacing, for instance in Python after you `import os` you call methods on it via `os.some_method()`. Even without explicit imports, `document.createElement()` is an example of this in JavaScript. +> +> If this is the case, wouldn't indexing any sequence of `x.y`, `x.y(...)`, `x(...).y` and `x(...).y(...)` found in a code base, result in some useful completions when requesting code completion after typing `x.`? In that case, code completions could include `y` and `y()`. +> +> This is exactly what follow complete does. It uses Zed's new database APIs to index sequences of identifiers with `.`s in between and uses that for completion. As it turns out, if your code base is big enough, this gets surprisingly useful. +> +> Again, here's a Go example. Go happens to use `.` as a package separator. Without any Go-specific knowledge, let alone knowledge of Go's APIs, Zed can now give the following completion for the `datastore` package (which is an Google App Engine specific package that is used fairly heavily in this particular project): +> +> Screenshot 2014-05-22 15.19.13 +> +> As you can see, although Zed "knows" that these are all methods, it doesn't show method argument names, simply because it doesn't know them. Potentially these method names could be matched with the symbol list, perhaps to also give argument names. Nevertheless, even without that getting some completion for APIs that are used in your project is quite useful. + +Follow complete is currently enabled for: JavaScript, Python, Ruby, Go, Java, C#, Groovy, Lua, Nix, Rust and Scala. + +Now let's recap what bracket check does: + +> There are many more language for which parser written in JavaScript are *not* yet available. And writing a high-quality parser for most languages is *a lot of work*. +> +> So would it be possible to build some syntax tooling that helps *at least a little* in detecting common mistakes writing code? +> +> This is what bracket check does: it checks nesting of brackets: e.g. `[{(`. Is this a full-blown syntax check? No (although... almost for Lisps), but it *helps*. +> +> For each language, you only have to configure two things: the bracket pairs to match and the parts to skip over (such as string literals, comments) etc. Here is it in action: +> +> Screenshot 2014-05-22 15.27.24 + +Here's the full [changelog][3] for 0.11.5: + +* Modes: + * Ruby: symbol indexing + * Python: improved symbol indexing + * C: symbol indexing + * PHP: improved symbol indexing + * Java: symbol indexing + * C#: symbol indexing + * GLSL syntax highlighting + * Stylus syntax highlighting +* Two new packages made part of the default distribution: + * follow-complete: offers quasi-intelligent completions for `x.y` property accesses/method calls for many languages (currently enabled for JavaScript, Python, Ruby, Go, Java, C#, Groovy, Lua, Nix, Rust and Scala) + * bracket-check: checks matching brackes (currently enabled for Clojure, Go, Dart, Python, Ruby, Java, and C#) +* Local (Chrome) directories with more than 100 files/directories did not show up completely before, this is now fixed (by farnoy) +* Projects are automatically indexed (for symbols and code completion) the first time they are opened, you can do this manually with `Tools:Index Project`. +* Search project now only searches known file types and does so more sequentially, which should prevent crashes +* Key bindings: + * Default keybinding for `Find:Next` on Linux/Windows/ChromeOS is now `Ctrl-G`, and `Find:Previous` is now `Ctrl-Shift-G`. + * `Nativate:Reload Filelist` is now bound to `Command-Shift-L` on Mac and `Ctrl-Shift-L` on Windows/Linux/ChromeOS as well as `F5` on both. +* Dotfiles (files starting with `.`) now appear in the file list, except those defined in `gotoExcludes` (by default `.git`) +* Goto matching algorithm tweaked, now also does fuzzy matching again (although with a lower score). +* File renaming fixes (by TheKiteEatingTree) + +As always, if you have Zed installed, Zed should be upgraded automatically. If not, you can [download Zed from its download page][4]. + +Thanks to all who contributed! + + + + [1]: http://zedapp.org/2014/06/zed-usage/ + [2]: http://zedapp.org/2014/05/language-agnostic-tooling/ + [3]: https://github.com/zedapp/zed/blob/master/app/manual/changelog.md + [4]: /download diff --git a/content/2014/07/the-changelog-0-12.md b/content/2014/07/the-changelog-0-12.md new file mode 100644 index 0000000..0ce6771 --- /dev/null +++ b/content/2014/07/the-changelog-0-12.md @@ -0,0 +1,60 @@ +The Changelog: 0.12 +=================== +date: 2014-07-17 + +This is a big release, both internally (the whole code base has been refactored to use [ES6-promises][1] instead of node.js-style callbacks) and externally: there's now an optional "traditional" UI mode that shows you a persistent file tree on the left and a menu bar along the top. In addition, there's now a basic UI for managing snippets. Let's look at each of those individually. + +## UI Layout Picker + +The first time you run Zed 0.12 you'll be greeted with the following pop-up: + +![Zed UI Layout](/img/zed-ui-layout.png) + +This seems a bit contrary to the [Zed vision][2], right? Offering a "cluttered mode." The reason for offering it anyway is that: + +1. Some people just really like to have a file tree available at all times. It gives them a sense of context. +2. Other people are completely confused by Zed's minimalist UI. They open an editor and then have no idea what to do (even though there's a little `zed::start` doc that tries to explain it) -- there's no file tree, no menu. Now what? + +So, for those people -- you can now make Zed look like this: + +![Zed traditional](/img/zed-traditional-2.png) + +The menu bar is a curated (hardcoded) collection of commands that I think most people need or would like to know about. Ideally, you quickly learn the keyboard shortcuts (listed in the menu) and then disable the menu again, but hey... maybe it doesn't take *that* much space. + +![Zed menu](/img/zed-menu.png) + +## Snippets Manager + +From early on people have had problems creating their own snippets and understandably so. Therefore I developed a package ([zedapp/snippets][3]) to make this easier. With a file active in a mode you want to manage snippets for run the `Snippets:List` command: + +![Zed snippets](/img/zed-snippets.png) + +This will list existing snippets, add new ones and allows you to edit, and remove them (if not built-in). There's also a `Snippets:Add` command to immediately add a new snippet for the current mode. + +## Full changelog + +* First-run screen that asks you to pick a UI layout. This is fully configurable later on, via: + * New `persistentTree` preference that, when enabled, shows a file tree along the left. + * New `showMenus` preference that shows a menu along the top with a (curated) list of common commands (and their key bindings). +* Snippet manager (`Snippet:List`, `Snippet:Add`) shows and adds snippets to the mode of the currently active session. +* `File:New` command (bound to `Command-N`/`Ctrl-N`) that opens the Goto UI with the directory of the currently active file prefilled. +* ZPM and Snippet manager use special "Zed UI" Ace mode that highlights "buttons" more like buttons, so you can tell they're clickable. +* Language modes can now have a `completionTriggers` key with characters that should automatically trigger code completion, e.g. `.` for JavaScript or `->` for PHP. And as a result... +* Code completion now automatically triggers after typing a `completionTriggers` sequence of characters (this can be switched on/off with the `autoTriggerCompletion` preference). +* Big Manual overhaul +* Modes: + * Scala symbol indexing + * PHP follow complete support + * Clojure follow complete support + * Gherkin mode (by lalomartins) +* Themes: + * Base16 theme (by farnoy) + +Enjoy the release! + +Want to contribute to Zed's development? [Consider buying][4]. + + [1]: http://www.html5rocks.com/en/tutorials/es6/promises/ + [2]: /vision + [3]: https://github.com/zedapp/snippets + [4]: /buy diff --git a/content/2014/08/the-changelog-0-12-1.md b/content/2014/08/the-changelog-0-12-1.md new file mode 100644 index 0000000..263ec56 --- /dev/null +++ b/content/2014/08/the-changelog-0-12-1.md @@ -0,0 +1,21 @@ +The Changelog: 0.12.1 +===================== +date: 2014-08-01 + +This release has a [much improved flow for editing files remotely using zedrem][1]. Rather than having to copy and paste URLs every time, you can now pass in a user-specific key to the zedrem command and windows will automatically open up when you use zedrem. See the [Edit Remote Files page][2] for updated instructions. Note: if you already downloaded the zedrem binary onto a server before, be sure to redownload it to get these new features. + +* Zedrem: The `zedrem` binary now takes an optional `-key` flag where the user key can be passed in. This key is automatically generated (see below) and can be requested using the `Configuration:Zedrem:Get User Key` command. When passed in, edit windows will automatically appear when you run zedrem. +* Zedrem: the `~/.zedremrc` file (that is: the .zedremrc file in your $HOME directory) has been extended to have a `userKey` entry in the `[client]` section, this is useful if often editing files on the same server and not wanting to pass in the user key every time. +* To support the above there is now a `zedrem` preference in the Configuration (under preference). By default a server is configured there (remote.zedapp.org over SSL) and a `userKey` generated. The project picker will establish a persistent websocket connection with this server to enable the behavior described above. +* Zedrem: ownership of files is now preserved. +* Modes: + * Improved C++ symbol indexing (by cessen) +* Key bindings: + * Mac: Alt-Delete now added as alternative to Alt-D (by 11684) +* Zed now works on the Chrome Beta channel again (Chrome 37) +* Symbols are now listed in order that they appear in files, rather than based on length. +* Mutliple cursor bug fixes: moving and copying lines up and down now works with multiple cursors, as does whitespace trimming. +* Standalone: no more crashes with the splash screen. + + [1]: http://screencast.com/t/Lrk2BIUnD + [2]: http://zedapp.org/features/edit-remote-files/ diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..9d167e5 --- /dev/null +++ b/content/about.md @@ -0,0 +1,4 @@ +About Zed +========= + +Zed is the coolest editor you'll ever find. diff --git a/content/blog.md b/content/blog.md new file mode 100644 index 0000000..8c62bef --- /dev/null +++ b/content/blog.md @@ -0,0 +1,2 @@ +Blog +===== diff --git a/content/buy.md b/content/buy.md new file mode 100644 index 0000000..8fc10de --- /dev/null +++ b/content/buy.md @@ -0,0 +1,30 @@ +Buy +=== + +To support the development of Zed, we ask you to pay money to ensure further development. [Zed's creator recently switched to working on working on Zed as his day job][1] on a mission to speed up development and support the project better. He needs to feed his family. For this, we need money. + +Zed is more than an editor project, it is also a test case in the sustainability of open source through voluntary contributions. This is a dream for many, can it be done? + +We currently have three ways to support Zed financially. + +For users: + +* [Gittip][2]. With gittip you commit to a weekly donation. A weekly contribution of $1-$5 (or whatever it's worth to you) would go a long way to make the project sustainable. +* Paypal: if you prefer to make a one-time donation (or at the pace you're comfortable with) you can send your donations via Paypal to `zef@zef.me` +* [Bitcoin][3]. By now you must have heard of [this digital currency][4]. You can send your donations to the address: `16sykahXZSXsbiMgg1CyjRVbyG7y95wLR6` + +For companies: + +* [Sponsorship](mailto:zefhemel@gmail.com): work for a company that wants to contribute to open source? Zed has a big audience of ahead-of-the-curve developers. Sponsors are displayed with logo and link on every page of the Zed website. Interested? [Get in touch][5]. + +## FAQ + +### Isn't Zed open source, why should I pay? + +While the Zed software is free to use and play with, its development is not free. Zed is now the day-time job of creator [Zef Hemel][6], and he has a family to feed. To ensure he can keep spending his time on this project, we need to generate a regular income for the project. + + [1]: http://zedapp.org/2014/04/zed-the-next-phase/ + [2]: https://www.gittip.com/zefhemel/ + [3]: http://blockchain.info/address/16sykahXZSXsbiMgg1CyjRVbyG7y95wLR6 + [4]: https://bitcoin.org/en/ + [6]: http://zef.me diff --git a/content/download.md b/content/download.md new file mode 100644 index 0000000..51f9771 --- /dev/null +++ b/content/download.md @@ -0,0 +1,23 @@ +Download +======== +Zed is available in two editions: a *Chrome App* version installed right into Chrome (works on Mac, Windows, Linux and ChromeOS) and a *Standalone* version not dependent on a browser (for Mac, Windows and Linux). + +**Current version:** [0.12.1 (changelog)](/2014/08/the-changelog-0-12-1) + +Pick your favorite edition: + +* [Zed Chrome App][2] (installation takes just 3 clicks in Chrome) and the accompanying [Edit in Zed][3] extension (makes all `textarea`s editable in Zed) +* [Zed Standalone for Mac][4] +* [Zed Standalone for Windows][5] +* [Zed Standalone for Linux 64-bit][6] +* [Zed Standalone for Linux 32-bit][7] + +Like Zed? Zed is open source, but development is not free -- [consider buying][8]! + + [2]: https://chrome.google.com/webstore/detail/zed-code-editor/pfmjnmeipppmcebplngmhfkleiinphhp + [3]: https://chrome.google.com/webstore/detail/edit-in-zed/dpkaficlkfnjemlheobmkabnnoafeepg + [4]: http://download.zedapp.org/zed-mac-v0.12.1.tar.gz + [5]: http://download.zedapp.org/zed-win-v0.12.1.zip + [6]: http://download.zedapp.org/zed-linux64-v0.12.1.tar.gz + [7]: http://download.zedapp.org/zed-linux32-v0.12.1.tar.gz + [8]: /buy diff --git a/content/features.md b/content/features.md new file mode 100644 index 0000000..dea0a4c --- /dev/null +++ b/content/features.md @@ -0,0 +1,30 @@ +Features +======== +1. **Chrome Application:** Installing via the Chrome Web Store brings a few useful features: + 1. Cross platform: Zed runs on any platforms that desktop Chrome runs on (including Chromebooks). + 2. Installation is easy with just a few clicks. + 3. Upgrades are automatic. + 4. Settings are automatically synchronized between all computers logged into with the same Google account. + 5. Special "Notes" space is stored in Google Drive and synchronized between computers automatically as well. +2. **[Edit files remotely with your local preferences][1]:** Need to edit files on a remote server, or even in a local VM, and don't like copying your editor's settings files everywhere you go? Zed makes this easy, just install the `zed` binary with a single command(/download), run it to get a URL you can copy & paste into the Zed Chrome app, to edit files immediately. This works even if your server is part of a VPN or doesn't have a public IP. +3. **Edit files locally:** By selecting "Open Local Folder" +4. **Edit files directly on Dropbox:** By selecting "Open Dropbox Folder" +5. **State preservation**: Zed preserves your editor state completely: the state of your splits, recency of open files, cursor and scroll positions, even part of the undo history for open files. +6. **Auto save**: Zed always automatically saves your files. Save buttons are so '00s. +7. **Chromeless:** Zed fits Chrome perfectly, by not having any. The UI is completely clutter free. +8. **Keyboard oriented:** Zed can operated entirely with the keyboard. +9. **Programming language support:** + * Linters/checkers for various languages (reports errors in the gutter as you edit code) + * Code completion (`Tab`): + * Words that appear in the current file (any file type) + * Based on ctags (Zed has its own ctags indexers for various languages) + * Snippets +10. **Efficient project navigation** at various levels of granularity: + * Files, quickly jump to the file you want (`Command-E`) + * Symbols, Zed indexes all symbols defined in your project and lets you quickly jump to the one you're interested in (`Command-R`, `Command-J`) +11. **Command-based:** Similar Emacs, every key you press in Zed runs a command. Keybinding to command mappings are configurable in the "Settings" projects. Commands can also executed by name via `Command-.` (for a filter list view of all comands) or `Command-Shift-.` (for a tree view of all commands). +12. **(Vertical) split views**: either 1, 2 or 3 vertical splits. (`Command-1`, `Command-2`, `Command-3`, and `Command-0` to switch between splits). Or use `Command-P` to get a preview split for various languages. + +(All keyboard shortcuts mentioned here refer to the default keybindings. For Windows and Linux replace `Command` with `Ctrl`.) + + [1]: /features/edit-remote-files/ diff --git a/content/features/edit-remote-files.md b/content/features/edit-remote-files.md new file mode 100644 index 0000000..65749fa --- /dev/null +++ b/content/features/edit-remote-files.md @@ -0,0 +1,79 @@ +Edit Remote Files +================= + +Zed makes editing files on any server or even local VM super easy. No port forwarding or firewall tweaking is required: as long as the server can reach the Internet, you can edit files. + +Here's how to do it: + +1. Log into the server in question (e.g. via SSH) +2. In a terminal download `zedrem`, the Zed remote editing utility (you only need to do this once): + + curl http://get.zedapp.org | bash + + + This will automatically detect the operating system of your server (currently 32/64 bit and ARM Linux, FreeBSD and Mac OS X are supported) and download `zedrem` into the current directory. If you use windows, you can download [zedrem.exe from here][1]. + +3. At this point you have two options, the "simple" option and the "quick" option: + + * Simple option: run `zedrem` without any flags as follows: + + ./zedrem + + + or, leave out the `` entirely and just run `./zedrem` to edit files in the current directory. + + You will now be given a URL to copy and paste into the Zed chrome application in the Project Picker under "Edit Remote Files". Paste the URL and press `Return`, you will now get a Zed editor window with all your files available. + + * Quick option: get your unique zedrem key from the Zed app by (in any editor window) running the `Configuration:Zedrem:Get User Key` command. Then run zedrem as follows: + + ./zedrem -key YOURUSERKEY + + + A Zed editor window should now appear immediately. + +**Protip #1:** If you often run `zedrem` in the background (by adding `&` to the end). Consider enabling `huponexit` in your bash shell (e.g. in your `~/.bashrc` or `~/.bash_profile`) so that the `zedrem` process will be stopped when you exit your shell (e.g. when you disconnect your SSH connection). Put this in your bash startup file (or just enter it in your shell every time): + + shopt -s huponexit + + +Then, you can run `zedrem` in the background while feeling safe that all `zedrem` processes will automatically be killed when you exit: + + ./zedrem & + + +**Protip #1:** Upon startup zedrem reads the `~/.zedremrc` file if exists, this file in an "ini" file with the following sections and options: + + [client] + url = wss://remote.zedapp.org:443 + userKey = youruserkey + + # For running zedrem in server mode + [server] + ip = 0.0.0.0 + port = 7337 + sslCert = /path/to/file.crt + sslKey = /path/to/file.key + + +This is particularly useful if you run your own zedrem server (see below) or if you edit files often on the same server (so you don't have to fill in your user key every time). + +## How it works + +The `zedrem` utility (written in Go, source code available from our [Github repository][2]) establishes a secure websocket connection to `wss://remote.zedapp.org:443` and registers itself. The `remote.zedapp.org` server will function as a proxy between the Zed Chrome application and your server. The Chrome app will request a file list, a file load, a file save, and these will be proxied through `remote.zedapp.org` to your server. This way you can edit files on server behind firewalls and part of VPNs -- as long as they can contact a Zed server, you can edit files there. + +If you feel uncomfortable with a proxy managed by us, you can run your own. In fact the `zedrem` you downloaded can function as such a proxy server. To do so, simply run it in server mode: + + ./zedrem --server + + +This will run a proxy server listening on port 7337 by default (check `./zedrem --help` for command line options). Then to connect to it, pass the `-u` flag to override the `server.zedapp.org` default: + + ./zedrem -u ws://your-ip-or-hostname:7337 + + +For this to work, the machine running `zedrem --server` must allow incoming connections on the port it's listening to. + +Happy remote editing! + + [1]: http://get.zedapp.org/zedrem.exe + [2]: https://github.com/zedapp/zedrem diff --git a/content/img/bracket-invalid.png b/content/img/bracket-invalid.png new file mode 100644 index 0000000..91e9b24 Binary files /dev/null and b/content/img/bracket-invalid.png differ diff --git a/content/img/follow-complete.png b/content/img/follow-complete.png new file mode 100644 index 0000000..41e98f3 Binary files /dev/null and b/content/img/follow-complete.png differ diff --git a/content/img/navigation1.gif b/content/img/navigation1.gif new file mode 100644 index 0000000..fd5730d Binary files /dev/null and b/content/img/navigation1.gif differ diff --git a/content/img/new-symbols.png b/content/img/new-symbols.png new file mode 100644 index 0000000..b6f9cd7 Binary files /dev/null and b/content/img/new-symbols.png differ diff --git a/content/img/symbol-indexing.png b/content/img/symbol-indexing.png new file mode 100644 index 0000000..a25a2f9 Binary files /dev/null and b/content/img/symbol-indexing.png differ diff --git a/content/img/zed-countries.png b/content/img/zed-countries.png new file mode 100644 index 0000000..63d0713 Binary files /dev/null and b/content/img/zed-countries.png differ diff --git a/content/img/zed-find-replace1.gif b/content/img/zed-find-replace1.gif new file mode 100644 index 0000000..f44031c Binary files /dev/null and b/content/img/zed-find-replace1.gif differ diff --git a/content/img/zed-fs-types.png b/content/img/zed-fs-types.png new file mode 100644 index 0000000..10c8066 Binary files /dev/null and b/content/img/zed-fs-types.png differ diff --git a/content/img/zed-map.png b/content/img/zed-map.png new file mode 100644 index 0000000..7f61073 Binary files /dev/null and b/content/img/zed-map.png differ diff --git a/content/img/zed-menu.png b/content/img/zed-menu.png new file mode 100644 index 0000000..7ab4fd0 Binary files /dev/null and b/content/img/zed-menu.png differ diff --git a/content/img/zed-popular-commands.png b/content/img/zed-popular-commands.png new file mode 100644 index 0000000..2ed0336 Binary files /dev/null and b/content/img/zed-popular-commands.png differ diff --git a/content/img/zed-popular-languages.png b/content/img/zed-popular-languages.png new file mode 100644 index 0000000..7c96a23 Binary files /dev/null and b/content/img/zed-popular-languages.png differ diff --git a/content/img/zed-screen-new.png b/content/img/zed-screen-new.png new file mode 100644 index 0000000..9885286 Binary files /dev/null and b/content/img/zed-screen-new.png differ diff --git a/content/img/zed-snippets.png b/content/img/zed-snippets.png new file mode 100644 index 0000000..7dbf6e6 Binary files /dev/null and b/content/img/zed-snippets.png differ diff --git a/content/img/zed-splits.gif b/content/img/zed-splits.gif new file mode 100644 index 0000000..951589a Binary files /dev/null and b/content/img/zed-splits.gif differ diff --git a/content/img/zed-traditional-2.png b/content/img/zed-traditional-2.png new file mode 100644 index 0000000..98b9feb Binary files /dev/null and b/content/img/zed-traditional-2.png differ diff --git a/content/img/zed-ui-layout.png b/content/img/zed-ui-layout.png new file mode 100644 index 0000000..5c05f3f Binary files /dev/null and b/content/img/zed-ui-layout.png differ diff --git a/content/index.md b/content/index.md new file mode 100644 index 0000000..80f445a --- /dev/null +++ b/content/index.md @@ -0,0 +1,47 @@ +Welcome to Zed +============== + +### What does it look like? + +zed-screen-new + +### What is it? + +Zed is a fully offline-capable, open source, keyboard-focused, text and code editor for power users. You can use Zed to edit *local files* as well as *remote files* on any server. Zed has all features you'd expect from a capable code editor: + +* Syntax highlighting for many programming languages (e.g. C, Clojure, CoffeeScript, C#, CSS, Dart, Erlang, Go, Haml, Haskell, HTML, ini files, Java, JavaScript, JSON, LogiQL, Lua, Markdown, Nix, PHP, Plist, Protobufs, Python, Ruby, Shell, XML) +* Code completion: symbols, snippets and property/method completion. +* Built-in linting for some languages with inline markers (JavaScript, CoffeeScript, JSON, Lua, CSS) +* Multiple cursors +* Split-view editing +* Themes: light and dark themes out of the box and you can easily develop your own using CSS. + +[embed]http://www.youtube.com/watch?v=Rb8oQ5XHoLA[/embed] + +Zed is distributed in two editions: [a *Chrome App* and a standalone app][1]. + +### Why *another* editor? + +Zed was not designed to be an *X* clone (although it borrows ideas from many). It has opinionated ideas on how to make *you* more productive editing code. Specifically: + +1. Zed tries to reduce [cognitive load][2] while editing code by *simplifying* as much as possible: + * Zed has *no* tabs and no concept of open files. You navigate between files either using the goto UI (`Command-E`/`Ctrl-E`) or file tree (`Command-T`/`Ctrl-T`). Switching between recent file is easy because recently opened files appear at the top. + * Zed has as little window chrome as reasonably possible: editors take up the full window space, minus a small bar along the top indicating what file is open. + * Zed *unifies* file navigation and file creation in its goto UI: you can either navigate to an existing file, or to a non existing file, in which case it will create the file including its parent directories (if necessary). As Zed will create any directories as required, you can just treat the path as a namespace. + * Zed has [first-class support for editing files on any Internet-connected server][3], so you no longer have to switch to nano or vi when editing files remotely, and swap in all the associated keybindings into your brain. + * Zed persists edit state between sessions: window size and location, recent commands, split view state, cursor and selections and even undo history are persisted between sessions in a `.zedstate` file stored in the project directory. This gives you peace of mind: not working on a project *right now*? Just close the window. Don't worry. +2. Zed is built 100% using web technologies (HTML, JavaScript and pure CSS). Because it is [open source][4] (MIT licensed), you can inspect the DOM and change the code. Alternatively, you can write [extensions][5] (create new language modes, custom commands, key bindings, themes etc.) from within the editor without having to touch the Zed codebase at all. +3. **Chrome App version bonus:** the Chrome App version of Zed has some extra useful features: + * Cross platform: Zed runs on any platforms that desktop Chrome runs on (including Chromebooks) + * Installation is easy with just a few clicks + * Settings are automatically synchronized between all computers logged into with the same Google account. + * Special "Notes" space is stored in Google Drive and synchronized between computers automatically as well. + +[Click here to learn more about why we created Zed][6]. + + [1]: /download + [2]: http://en.wikipedia.org/wiki/Cognitive_load + [3]: /features/edit-remote-files/ + [4]: https://github.com/zedapp/zed + [5]: http://zedapp.org/2014/05/zed-package-manager/ + [6]: /vision diff --git a/content/vision.md b/content/vision.md new file mode 100644 index 0000000..744940a --- /dev/null +++ b/content/vision.md @@ -0,0 +1,85 @@ +Why Zed? +======== +Every "modern" code editor and IDE today (Sublime, TextMate, Atom, Eclipse, IntelliJ) works and looks more or less the same: you have a file tree on the left, tab bar at the top with open files, and if it's an IDE a bunch of additional panels, like "Outline", "Package browser" etc. To open a file you select it in the tree, make some changes and press `Command-S` or `Ctrl-S` to save. + +Things haven't changed *that much*, the past years. Is this really the best we can do, or can we improve the status quo? + +We believe things can be improved still. Zed is a project attempting to improving the way you work without making you feel *too* far outside of your comfort zone. + +There are two ways Zed tries to do this: + +1. **Reduce cognitive load.** Programming is hard enough as it is. Worrying about juggling files, folders, local or remote, and panels and other distractions, are things we can do without. +2. **Hackability.** The audience of a code editor is programmers. Programmers want to change things, extend things, hack on things. + +## Reduce cognitive load + +Here's some ways that Zed tries to reduce cognitive load while programming. + +### No more open files and tabs + +There are two reasons for the concept of "open files" represented as tabs in editors today: + +1. Tabs provide a quick way to navigate between a few files you're editing. This is nice in theory, but in practice the number of open files (represented as tabs) quickly become *unwieldy* and pretty soon you are unable to find the tab you're looking for. "Tab bankruptcy" is a common phenomenon where the only way out is to simply close all tabs and hope that the ones you needed resurface over time. +2. Open files can be in a "dirty" state, i.e. they may have unsaved changes and this needs to be visible to the user. Zed argues that there is no good reason anymore for for files to be in a dirty state, ever. The days where saving to disk took a minute are over. Constantly saving files simplifies a lot of things and *good undo functionality* and version control can help in reverting a file to its previous state, even after saving or after closing and reopening a project. + +**Zed** has no concept of open files (or tabs). You can navigate between files quickly and efficiently using its goto UI (`Command-E`/`Ctrl-E`), which sorts files based on date of last opening and can be used to quickly find the file you're looking for. Whether the file you're selecting is already in memory or is loaded from disk (or over the network) is completely transparent. Why would you care? + +### Split views + +As if managing tabs isn't difficult enough, there's also the issue of managing split views. Many editors support the most impressive window work of split editors. "Well, I have a big-ass monitor so I better use it by splitting it vertically in three, and then the middle pane in two horizontal ones, and the third into three so that I can see everything at once!" + +If you ever used an editor with super flexible split view window docking, you at some point will have ended up in some insane configuration, where it became near impossible to navigate between editors without using the mouse, or without spending considerable time seeing in which pane (each with its own tab bar) you had opened that one particular file. + +**Zed** has very limited split view configurations. You can have 1 editor, or 2 next to each other (and toggle their size between 50%/50% 33%/66% and 66%/33%), or 3 next to each other. There's also a 2-way split with a preview window on the right. That's it. Admittedly, initially the reason for this was simplicity of implementation, but after working this way for a year, there's really no reason to support more configurations. Limited flexibility in this sense frees your mind to think about what really matters. + +![Zed splits](/img/zed-splits.gif) + +### Minimal UI + +Many editors today boast a "distraction free" mode. "Remove all the distracting chrome!" That's great, but when *do* you want all this distracting chrome? + +Never. + +It should always be you and your code, with as little chrome as possible. No panels, no tab bars, no file tree that takes up space constantly. Just as clean as functionally possible. If there's anything visible other than the code you're editing, there'd better be a damn good reason, that is either it gives you a sense of context (what file am I editing? Where am I within this file?) or it's a temporary UI element that I explicitly asked for (e.g. an open file dialog). + +**Zed** has as little window chrome as reasonably possible: editors take up the full window space, minus a small indicator along the top indicating what file is open. + +### Unifying file navigation and creation + +[Notational Velocity][1] is a simple note taking app that unifies the concept of searching for notes and creating them. It has a three-part UI: at the top there's a "search" field, below it is the list of notes that match the search, and below that is the actual editor where you can scribble your notes. When you enter a search phrase that matches some note titles and press `Return`, it opens the note and puts the editor in focus. If you enter a search phrase that doesn't match a note and press `Return`, it creates a new note with that name and put the (empty) editor in focus. + +**Zed** applies this approach to code editors. Its goto feature (`Command-E`/`Ctrl-E`) works the same way: You can use it to either navigate to an existing file, or to a non existing file, in which case it will create the file including its parent directories (if necessary). As Zed will create any directories as required, you can just treat the path as a namespace. And opening a *new* file is not at all different than opening an *existing* one. + +![Navigation](/img/navigation1.gif) + +### Editor state + +Editor state should be preserved between editor launches. Life is hard enough as it is, if we have to keep editor windows open, because we're afraid we otherwise have to restore its state later on, that just makes life even harder. + +**Zed** persists window size and location, recent commands, split view state, cursor and selections and undo history between sessions in a `.zedstate` file stored in the project directory. This gives you peace of mind: not working on a project *right now*? Just close the window. Don't worry. + +### Where are my files located? + +With this whole DevOps thing going on, people spend a lot of their time editing files in a virtual machine or remote server. All of a sudden, they have to use nano or vi, and completely swap out everything they know about the editor they use locally, and swap in the... interesting vi keybindings. + +Even if you're a big nano or vi fan, this situation is not ideal since your preferences and customizations don't travel with you so you don't your tab size preferences and themes on those remote servers. + +**Zed** has [very innovative support for editing files on any Internet-connected server][2] without the need to use WebDAV or (S)FTP. This means you can *always* use your local Zed editor with all your favorite customizations. + +## Hackability + +Many programmers like to be able to hack on their environment. They like to tweak things, add things, remove things. An editor can support this in two ways, and Zed supports both. + +### Open source + +The Zed core is completely open source (MIT licensed). You can fork the project and change whatever you want. It's all built using web technologies (HTML, CSS, JavaScript) so it's not all that complicated. Being open source is not about price, it's about flexibility. Even if you never have dive into the code, the idea that you *can* is comforting. + +### Extensibility + +However, if you don't have to fork your editor to make it do what you want, so much the better. That's why Zed has the ["Configuration" project][3]. This is configuration in the broadest sense of the word: in this project you can tweak preferences and keybindings, but the configuration project is also where all of Zed's language modes and themes are implemented. Indeed, features like language-specific code completers, symbol indexers, linters and all themes are implemented in the Configuration project "user-land" code. You can look at how everything is implemented and add your own custom Zed commands, language modes and themes as well. + +And since the Configuration project is synced to Google Drive, all your extensions and preferences travel with you wherever you log in with your Google account. + + [1]: http://notational.net + [2]: http://zedapp.org/features/edit-remote-files/ + [3]: http://zedapp.org/2014/02/configuration/ diff --git a/template/base.html b/template/base.html new file mode 100644 index 0000000..97224a7 --- /dev/null +++ b/template/base.html @@ -0,0 +1,65 @@ + + + {{ title }} + + + + + + + +
+
+ +
+
+
+
+
{{{ content }}}
+
+ +
+
+ + +
+ + + + + diff --git a/template/blog.html b/template/blog.html new file mode 100644 index 0000000..4cedc3d --- /dev/null +++ b/template/blog.html @@ -0,0 +1,7 @@ +{{#call-template "base.html" title=title}} +{{ markdown content }} +{{#each (limit (sort (list-pages "/blog/.*") by="date" reverse=true) count=20)}} +

{{ title }}

+{{ markdown content }} +{{/each}} +{{/call-template}} diff --git a/template/blog/template.html b/template/blog/template.html new file mode 100644 index 0000000..0aa2f41 --- /dev/null +++ b/template/blog/template.html @@ -0,0 +1,5 @@ +{{#call-template "base.html" title=title}} +

Blog: {{title}}

+

Date: {{date}}

+{{ markdown content }} +{{/call-template}} diff --git a/template/css/style.css b/template/css/style.css new file mode 100644 index 0000000..df30672 --- /dev/null +++ b/template/css/style.css @@ -0,0 +1,7726 @@ +/*! +Theme Name: rtPanel +Theme URI: http://rtcamp.com/rtpanel/ +Description: WordPress theme framework with Custom Menu, Header and Background along with Logo, Favicon, Featured Image, Google Custom Search Integration and more options. Now includes a Foundation 5 framework, Grunt Task Runner, Bower package manager, SAAS based CSS preprocessor and translation support. This theme comes with free technical support by team of 30+ full-time developers. +Version: 4.1.5 +Author: rtCamp +Author URI: http://rtcamp.com/ +Contributors: rtCampers ( http://rtcamp.com/about/rtcampers/ ) +License: GNU General Public License, v2 (or newer) +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Tags: black, blue, white, orange, light, one-column, two-columns, right-sidebar, custom-header, custom-background, custom-menu, editor-style, theme-options, threaded-comments, sticky-post, translation-ready, responsive-layout, full-width-template, buddypress +*/ + +/*! normalize.css v2.1.2 | MIT License | git.io/normalize */ +article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { + display:block +} +audio, canvas, video { + display:inline-block +} +audio:not([controls]) { + display:none; + height:0 +} +[hidden], template { + display:none +} +script { + display:none !important +} +html { + font-family:sans-serif; + -ms-text-size-adjust:100%; + -webkit-text-size-adjust:100% +} +body { + margin:0 +} +a { + background:transparent +} +a:focus { + outline:thin dotted +} +a:active, a:hover { + outline:0 +} +h1 { + font-size:2em; + margin:0.67em 0 +} +abbr[title] { + border-bottom:1px dotted +} +b, strong { + font-weight:bold +} +dfn { + font-style:italic +} +hr { + -moz-box-sizing:content-box; + box-sizing:content-box; + height:0 +} +mark { + background:#ff0; + color:#000 +} +code, kbd, pre, samp { + font-family:monospace, serif; + font-size:1em +} +pre { + white-space:pre-wrap +} +q { + quotes:"\201C""\201D""\2018""\2019" +} +small { + font-size:80% +} +sub, sup { + font-size:75%; + line-height:0; + position:relative; + vertical-align:baseline +} +sup { + top:-0.5em +} +sub { + bottom:-0.25em +} +img { + border:0 +} +svg:not(:root) { + overflow:hidden +} +figure { + margin:0 +} +fieldset { + border:1px solid #c0c0c0; + margin:0 2px; + padding:0.35em 0.625em 0.75em +} +legend { + border:0; + padding:0 +} +button, input, select, textarea { + font-family:inherit; + font-size:100%; + margin:0 +} +button, input { + line-height:normal +} +button, select { + text-transform:none +} +button, html input[type="button"], input[type="reset"], input[type="submit"] { + -webkit-appearance:button; + cursor:pointer +} +button[disabled], html input[disabled] { + cursor:default +} +input[type="checkbox"], input[type="radio"] { + box-sizing:border-box; + padding:0 +} +input[type="search"] { + -webkit-appearance:textfield; + -moz-box-sizing:content-box; + -webkit-box-sizing:content-box; + box-sizing:content-box +} +input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { + -webkit-appearance:none +} +button::-moz-focus-inner, input::-moz-focus-inner { + border:0; + padding:0 +} +textarea { + overflow:auto; + vertical-align:top +} +table { + border-collapse:collapse; + border-spacing:0 +} +meta.foundation-mq-small { + font-family:"/only screen and (max-width: 40em)/"; + width:0em +} +meta.foundation-mq-medium { + font-family:"/only screen and (min-width:40.063em)/"; + width:40.063em +} +meta.foundation-mq-large { + font-family:"/only screen and (min-width:64.063em)/"; + width:64.063em +} +meta.foundation-mq-xlarge { + font-family:"/only screen and (min-width:90.063em)/"; + width:90.063em +} +meta.foundation-mq-xxlarge { + font-family:"/only screen and (min-width:120.063em)/"; + width:120.063em +} +*, *:before, *:after { + -moz-box-sizing:border-box; + -webkit-box-sizing:border-box; + box-sizing:border-box +} +html, body { + font-size:100% +} +body { + background:#fff; + color:#4c4c4c; + padding:0; + margin:0; + font-family:"Open Sans", sans-serif; + font-weight:normal; + font-style:normal; + line-height:1; + position:relative; + cursor:default +} +a:hover { + cursor:pointer +} +img, object, embed { + max-width:100%; + height:auto +} +object, embed { + height:100% +} +img { + -ms-interpolation-mode:bicubic +} +#map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { + max-width:none !important +} +.left { + float:left !important +} +.right { + float:right !important +} +.clearfix { + *zoom:1 +} +.clearfix:before, .clearfix:after { + content:" "; + display:table +} +.clearfix:after { + clear:both +} +.text-left { + text-align:left !important +} +.text-right { + text-align:right !important +} +.text-center { + text-align:center !important +} +.text-justify { + text-align:justify !important +} +.hide { + display:none +} +.start { + float:left !important +} +.end { + float:right !important +} +.text-start { + text-align:left !important +} +.text-end { + text-align:right !important +} +.antialiased { + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale +} +img { + display:inline-block; + vertical-align:middle +} +textarea { + height:auto; + min-height:50px +} +select { + width:100% +} +.row { + width:100%; + margin-left:auto; + margin-right:auto; + margin-top:0; + margin-bottom:0; + max-width:75rem; + *zoom:1 +} +.row:before, .row:after { + content:" "; + display:table +} +.row:after { + clear:both +} +.row.collapse>.column, .row.collapse>.columns { + position:relative; + padding-left:0; + padding-right:0; + float:left +} +.row.collapse .row { + margin-left:0; + margin-right:0 +} +.row .row { + width:auto; + margin-left:-0.625rem; + margin-right:-0.625rem; + margin-top:0; + margin-bottom:0; + max-width:none; + *zoom:1 +} +.row .row:before, .row .row:after { + content:" "; + display:table +} +.row .row:after { + clear:both +} +.row .row.collapse { + width:auto; + margin:0; + max-width:none; + *zoom:1 +} +.row .row.collapse:before, .row .row.collapse:after { + content:" "; + display:table +} +.row .row.collapse:after { + clear:both +} +.column, .columns { + position:relative; + padding-left:0.625rem; + padding-right:0.625rem; + width:100%; + float:left +} +@media only screen { + .column.small-centered, .columns.small-centered { + position:relative; + margin-left:auto; + margin-right:auto; + float:none + } + .column.small-uncentered, .columns.small-uncentered { + margin-left:0; + margin-right:0; + float:left + } + .column.small-uncentered.opposite, .columns.small-uncentered.opposite { + float:right + } + .small-push-1 { + position:relative; + left:8.33333%; + right:auto + } + .small-pull-1 { + position:relative; + right:8.33333%; + left:auto + } + .small-push-2 { + position:relative; + left:16.66667%; + right:auto + } + .small-pull-2 { + position:relative; + right:16.66667%; + left:auto + } + .small-push-3 { + position:relative; + left:25%; + right:auto + } + .small-pull-3 { + position:relative; + right:25%; + left:auto + } + .small-push-4 { + position:relative; + left:33.33333%; + right:auto + } + .small-pull-4 { + position:relative; + right:33.33333%; + left:auto + } + .small-push-5 { + position:relative; + left:41.66667%; + right:auto + } + .small-pull-5 { + position:relative; + right:41.66667%; + left:auto + } + .small-push-6 { + position:relative; + left:50%; + right:auto + } + .small-pull-6 { + position:relative; + right:50%; + left:auto + } + .small-push-7 { + position:relative; + left:58.33333%; + right:auto + } + .small-pull-7 { + position:relative; + right:58.33333%; + left:auto + } + .small-push-8 { + position:relative; + left:66.66667%; + right:auto + } + .small-pull-8 { + position:relative; + right:66.66667%; + left:auto + } + .small-push-9 { + position:relative; + left:75%; + right:auto + } + .small-pull-9 { + position:relative; + right:75%; + left:auto + } + .small-push-10 { + position:relative; + left:83.33333%; + right:auto + } + .small-pull-10 { + position:relative; + right:83.33333%; + left:auto + } + .small-push-11 { + position:relative; + left:91.66667%; + right:auto + } + .small-pull-11 { + position:relative; + right:91.66667%; + left:auto + } + .column, .columns { + position:relative; + padding-left:0.625rem; + padding-right:0.625rem; + float:left + } + .small-1 { + position:relative; + width:8.33333% + } + .small-2 { + position:relative; + width:16.66667% + } + .small-3 { + position:relative; + width:25% + } + .small-4 { + position:relative; + width:33.33333% + } + .small-5 { + position:relative; + width:41.66667% + } + .small-6 { + position:relative; + width:50% + } + .small-7 { + position:relative; + width:58.33333% + } + .small-8 { + position:relative; + width:66.66667% + } + .small-9 { + position:relative; + width:75% + } + .small-10 { + position:relative; + width:83.33333% + } + .small-11 { + position:relative; + width:91.66667% + } + .small-12 { + position:relative; + width:100% + } + [class*="column"]+[class*="column"]:last-child { + float:right + } + [class*="column"]+[class*="column"].end { + float:left + } + .small-offset-0 { + position:relative; + margin-left:0% !important + } + .small-offset-1 { + position:relative; + margin-left:8.33333% !important + } + .small-offset-2 { + position:relative; + margin-left:16.66667% !important + } + .small-offset-3 { + position:relative; + margin-left:25% !important + } + .small-offset-4 { + position:relative; + margin-left:33.33333% !important + } + .small-offset-5 { + position:relative; + margin-left:41.66667% !important + } + .small-offset-6 { + position:relative; + margin-left:50% !important + } + .small-offset-7 { + position:relative; + margin-left:58.33333% !important + } + .small-offset-8 { + position:relative; + margin-left:66.66667% !important + } + .small-offset-9 { + position:relative; + margin-left:75% !important + } + .small-offset-10 { + position:relative; + margin-left:83.33333% !important + } + .column.small-reset-order, .columns.small-reset-order { + margin-left:0; + margin-right:0; + left:auto; + right:auto; + float:left + } +} +@media only screen and (min-width: 40.063em) { + .column.medium-centered, .columns.medium-centered { + position:relative; + margin-left:auto; + margin-right:auto; + float:none + } + .column.medium-uncentered, .columns.medium-uncentered { + margin-left:0; + margin-right:0; + float:left + } + .column.medium-uncentered.opposite, .columns.medium-uncentered.opposite { + float:right + } + .medium-push-1 { + position:relative; + left:8.33333%; + right:auto + } + .medium-pull-1 { + position:relative; + right:8.33333%; + left:auto + } + .medium-push-2 { + position:relative; + left:16.66667%; + right:auto + } + .medium-pull-2 { + position:relative; + right:16.66667%; + left:auto + } + .medium-push-3 { + position:relative; + left:25%; + right:auto + } + .medium-pull-3 { + position:relative; + right:25%; + left:auto + } + .medium-push-4 { + position:relative; + left:33.33333%; + right:auto + } + .medium-pull-4 { + position:relative; + right:33.33333%; + left:auto + } + .medium-push-5 { + position:relative; + left:41.66667%; + right:auto + } + .medium-pull-5 { + position:relative; + right:41.66667%; + left:auto + } + .medium-push-6 { + position:relative; + left:50%; + right:auto + } + .medium-pull-6 { + position:relative; + right:50%; + left:auto + } + .medium-push-7 { + position:relative; + left:58.33333%; + right:auto + } + .medium-pull-7 { + position:relative; + right:58.33333%; + left:auto + } + .medium-push-8 { + position:relative; + left:66.66667%; + right:auto + } + .medium-pull-8 { + position:relative; + right:66.66667%; + left:auto + } + .medium-push-9 { + position:relative; + left:75%; + right:auto + } + .medium-pull-9 { + position:relative; + right:75%; + left:auto + } + .medium-push-10 { + position:relative; + left:83.33333%; + right:auto + } + .medium-pull-10 { + position:relative; + right:83.33333%; + left:auto + } + .medium-push-11 { + position:relative; + left:91.66667%; + right:auto + } + .medium-pull-11 { + position:relative; + right:91.66667%; + left:auto + } + .column, .columns { + position:relative; + padding-left:0.625rem; + padding-right:0.625rem; + float:left + } + .medium-1 { + position:relative; + width:8.33333% + } + .medium-2 { + position:relative; + width:16.66667% + } + .medium-3 { + position:relative; + width:25% + } + .medium-4 { + position:relative; + width:33.33333% + } + .medium-5 { + position:relative; + width:41.66667% + } + .medium-6 { + position:relative; + width:50% + } + .medium-7 { + position:relative; + width:58.33333% + } + .medium-8 { + position:relative; + width:66.66667% + } + .medium-9 { + position:relative; + width:75% + } + .medium-10 { + position:relative; + width:83.33333% + } + .medium-11 { + position:relative; + width:91.66667% + } + .medium-12 { + position:relative; + width:100% + } + [class*="column"]+[class*="column"]:last-child { + float:right + } + [class*="column"]+[class*="column"].end { + float:left + } + .medium-offset-0 { + position:relative; + margin-left:0% !important + } + .medium-offset-1 { + position:relative; + margin-left:8.33333% !important + } + .medium-offset-2 { + position:relative; + margin-left:16.66667% !important + } + .medium-offset-3 { + position:relative; + margin-left:25% !important + } + .medium-offset-4 { + position:relative; + margin-left:33.33333% !important + } + .medium-offset-5 { + position:relative; + margin-left:41.66667% !important + } + .medium-offset-6 { + position:relative; + margin-left:50% !important + } + .medium-offset-7 { + position:relative; + margin-left:58.33333% !important + } + .medium-offset-8 { + position:relative; + margin-left:66.66667% !important + } + .medium-offset-9 { + position:relative; + margin-left:75% !important + } + .medium-offset-10 { + position:relative; + margin-left:83.33333% !important + } + .column.medium-reset-order, .columns.medium-reset-order { + margin-left:0; + margin-right:0; + left:auto; + right:auto; + float:left + } + .push-1 { + position:relative; + left:8.33333%; + right:auto + } + .pull-1 { + position:relative; + right:8.33333%; + left:auto + } + .push-2 { + position:relative; + left:16.66667%; + right:auto + } + .pull-2 { + position:relative; + right:16.66667%; + left:auto + } + .push-3 { + position:relative; + left:25%; + right:auto + } + .pull-3 { + position:relative; + right:25%; + left:auto + } + .push-4 { + position:relative; + left:33.33333%; + right:auto + } + .pull-4 { + position:relative; + right:33.33333%; + left:auto + } + .push-5 { + position:relative; + left:41.66667%; + right:auto + } + .pull-5 { + position:relative; + right:41.66667%; + left:auto + } + .push-6 { + position:relative; + left:50%; + right:auto + } + .pull-6 { + position:relative; + right:50%; + left:auto + } + .push-7 { + position:relative; + left:58.33333%; + right:auto + } + .pull-7 { + position:relative; + right:58.33333%; + left:auto + } + .push-8 { + position:relative; + left:66.66667%; + right:auto + } + .pull-8 { + position:relative; + right:66.66667%; + left:auto + } + .push-9 { + position:relative; + left:75%; + right:auto + } + .pull-9 { + position:relative; + right:75%; + left:auto + } + .push-10 { + position:relative; + left:83.33333%; + right:auto + } + .pull-10 { + position:relative; + right:83.33333%; + left:auto + } + .push-11 { + position:relative; + left:91.66667%; + right:auto + } + .pull-11 { + position:relative; + right:91.66667%; + left:auto + } +} +@media only screen and (min-width: 64.063em) { + .column.large-centered, .columns.large-centered { + position:relative; + margin-left:auto; + margin-right:auto; + float:none + } + .column.large-uncentered, .columns.large-uncentered { + margin-left:0; + margin-right:0; + float:left + } + .column.large-uncentered.opposite, .columns.large-uncentered.opposite { + float:right + } + .large-push-1 { + position:relative; + left:8.33333%; + right:auto + } + .large-pull-1 { + position:relative; + right:8.33333%; + left:auto + } + .large-push-2 { + position:relative; + left:16.66667%; + right:auto + } + .large-pull-2 { + position:relative; + right:16.66667%; + left:auto + } + .large-push-3 { + position:relative; + left:25%; + right:auto + } + .large-pull-3 { + position:relative; + right:25%; + left:auto + } + .large-push-4 { + position:relative; + left:33.33333%; + right:auto + } + .large-pull-4 { + position:relative; + right:33.33333%; + left:auto + } + .large-push-5 { + position:relative; + left:41.66667%; + right:auto + } + .large-pull-5 { + position:relative; + right:41.66667%; + left:auto + } + .large-push-6 { + position:relative; + left:50%; + right:auto + } + .large-pull-6 { + position:relative; + right:50%; + left:auto + } + .large-push-7 { + position:relative; + left:58.33333%; + right:auto + } + .large-pull-7 { + position:relative; + right:58.33333%; + left:auto + } + .large-push-8 { + position:relative; + left:66.66667%; + right:auto + } + .large-pull-8 { + position:relative; + right:66.66667%; + left:auto + } + .large-push-9 { + position:relative; + left:75%; + right:auto + } + .large-pull-9 { + position:relative; + right:75%; + left:auto + } + .large-push-10 { + position:relative; + left:83.33333%; + right:auto + } + .large-pull-10 { + position:relative; + right:83.33333%; + left:auto + } + .large-push-11 { + position:relative; + left:91.66667%; + right:auto + } + .large-pull-11 { + position:relative; + right:91.66667%; + left:auto + } + .column, .columns { + position:relative; + padding-left:0.625rem; + padding-right:0.625rem; + float:left + } + .large-1 { + position:relative; + width:8.33333% + } + .large-2 { + position:relative; + width:16.66667% + } + .large-3 { + position:relative; + width:25% + } + .large-4 { + position:relative; + width:33.33333% + } + .large-5 { + position:relative; + width:41.66667% + } + .large-6 { + position:relative; + width:50% + } + .large-7 { + position:relative; + width:58.33333% + } + .large-8 { + position:relative; + width:66.66667% + } + .large-9 { + position:relative; + width:75% + } + .large-10 { + position:relative; + width:83.33333% + } + .large-11 { + position:relative; + width:91.66667% + } + .large-12 { + position:relative; + width:100% + } + [class*="column"]+[class*="column"]:last-child { + float:right + } + [class*="column"]+[class*="column"].end { + float:left + } + .large-offset-0 { + position:relative; + margin-left:0% !important + } + .large-offset-1 { + position:relative; + margin-left:8.33333% !important + } + .large-offset-2 { + position:relative; + margin-left:16.66667% !important + } + .large-offset-3 { + position:relative; + margin-left:25% !important + } + .large-offset-4 { + position:relative; + margin-left:33.33333% !important + } + .large-offset-5 { + position:relative; + margin-left:41.66667% !important + } + .large-offset-6 { + position:relative; + margin-left:50% !important + } + .large-offset-7 { + position:relative; + margin-left:58.33333% !important + } + .large-offset-8 { + position:relative; + margin-left:66.66667% !important + } + .large-offset-9 { + position:relative; + margin-left:75% !important + } + .large-offset-10 { + position:relative; + margin-left:83.33333% !important + } + .column.large-reset-order, .columns.large-reset-order { + margin-left:0; + margin-right:0; + left:auto; + right:auto; + float:left + } + .push-1 { + position:relative; + left:8.33333%; + right:auto + } + .pull-1 { + position:relative; + right:8.33333%; + left:auto + } + .push-2 { + position:relative; + left:16.66667%; + right:auto + } + .pull-2 { + position:relative; + right:16.66667%; + left:auto + } + .push-3 { + position:relative; + left:25%; + right:auto + } + .pull-3 { + position:relative; + right:25%; + left:auto + } + .push-4 { + position:relative; + left:33.33333%; + right:auto + } + .pull-4 { + position:relative; + right:33.33333%; + left:auto + } + .push-5 { + position:relative; + left:41.66667%; + right:auto + } + .pull-5 { + position:relative; + right:41.66667%; + left:auto + } + .push-6 { + position:relative; + left:50%; + right:auto + } + .pull-6 { + position:relative; + right:50%; + left:auto + } + .push-7 { + position:relative; + left:58.33333%; + right:auto + } + .pull-7 { + position:relative; + right:58.33333%; + left:auto + } + .push-8 { + position:relative; + left:66.66667%; + right:auto + } + .pull-8 { + position:relative; + right:66.66667%; + left:auto + } + .push-9 { + position:relative; + left:75%; + right:auto + } + .pull-9 { + position:relative; + right:75%; + left:auto + } + .push-10 { + position:relative; + left:83.33333%; + right:auto + } + .pull-10 { + position:relative; + right:83.33333%; + left:auto + } + .push-11 { + position:relative; + left:91.66667%; + right:auto + } + .pull-11 { + position:relative; + right:91.66667%; + left:auto + } +} +.accordion { + *zoom:1; + margin-bottom:0 +} +.accordion:before, .accordion:after { + content:" "; + display:table +} +.accordion:after { + clear:both +} +.accordion dd { + display:block; + margin-bottom:0 !important +} +.accordion dd.active a { + background:#e8e8e8 +} +.accordion dd>a { + background:#efefef; + color:#222; + padding:1rem; + display:block; + font-family:"Open Sans", sans-serif; + font-size:1rem +} +.accordion dd>a:hover { + background:#e3e3e3 +} +.accordion .content { + display:none; + padding:0.625rem +} +.accordion .content.active { + display:block; + background:#fff +} +.alert-box { + border-style:solid; + border-width:1px; + display:block; + font-weight:normal; + margin-bottom:1.25rem; + position:relative; + padding:0.875rem 1.5rem 0.875rem 0.875rem; + font-size:0.8125rem; + background-color:#446cb3; + border-color:#3a5d9a; + color:#fff +} +.alert-box .close { + font-size:1.375rem; + padding:9px 6px 4px; + line-height:0; + position:absolute; + top:50%; + margin-top:-0.6875rem; + right:0.25rem; + color:#333; + opacity:0.3 +} +.alert-box .close:hover, .alert-box .close:focus { + opacity:0.5 +} +.alert-box.radius { + -webkit-border-radius:5px; + border-radius:5px +} +.alert-box.round { + -webkit-border-radius:1000px; + border-radius:1000px +} +.alert-box.success { + background-color:#7ad03a; + border-color:#68b92c; + color:#fff +} +.alert-box.alert { + background-color:#dd3d36; + border-color:#ca2922; + color:#fff +} +.alert-box.secondary { + background-color:#e7e7e7; + border-color:#c7c7c7; + color:#4f4f4f +} +.alert-box.warning { + background-color:#ffba00; + border-color:#dba000; + color:#fff +} +.alert-box.info { + background-color:#2ea2cc; + border-color:#288baf; + color:#fff +} +[class*="block-grid-"] { + display:block; + padding:0; + margin:0 0 0 -0.625rem; + *zoom:1 +} +[class*="block-grid-"]:before, [class*="block-grid-"]:after { + content:" "; + display:table +} +[class*="block-grid-"]:after { + clear:both +} +[class*="block-grid-"]>li { + display:inline; + height:auto; + float:left; + padding:0 0.625rem 1.25rem +} +@media only screen { + .small-block-grid-1>li { + width:100%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-1>li:nth-of-type(n) { + clear:none + } + .small-block-grid-1>li:nth-of-type(1n+1) { + clear:both + } + .small-block-grid-2>li { + width:50%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-2>li:nth-of-type(n) { + clear:none + } + .small-block-grid-2>li:nth-of-type(2n+1) { + clear:both + } + .small-block-grid-3>li { + width:33.33333%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-3>li:nth-of-type(n) { + clear:none + } + .small-block-grid-3>li:nth-of-type(3n+1) { + clear:both + } + .small-block-grid-4>li { + width:25%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-4>li:nth-of-type(n) { + clear:none + } + .small-block-grid-4>li:nth-of-type(4n+1) { + clear:both + } + .small-block-grid-5>li { + width:20%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-5>li:nth-of-type(n) { + clear:none + } + .small-block-grid-5>li:nth-of-type(5n+1) { + clear:both + } + .small-block-grid-6>li { + width:16.66667%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-6>li:nth-of-type(n) { + clear:none + } + .small-block-grid-6>li:nth-of-type(6n+1) { + clear:both + } + .small-block-grid-7>li { + width:14.28571%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-7>li:nth-of-type(n) { + clear:none + } + .small-block-grid-7>li:nth-of-type(7n+1) { + clear:both + } + .small-block-grid-8>li { + width:12.5%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-8>li:nth-of-type(n) { + clear:none + } + .small-block-grid-8>li:nth-of-type(8n+1) { + clear:both + } + .small-block-grid-9>li { + width:11.11111%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-9>li:nth-of-type(n) { + clear:none + } + .small-block-grid-9>li:nth-of-type(9n+1) { + clear:both + } + .small-block-grid-10>li { + width:10%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-10>li:nth-of-type(n) { + clear:none + } + .small-block-grid-10>li:nth-of-type(10n+1) { + clear:both + } + .small-block-grid-11>li { + width:9.09091%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-11>li:nth-of-type(n) { + clear:none + } + .small-block-grid-11>li:nth-of-type(11n+1) { + clear:both + } + .small-block-grid-12>li { + width:8.33333%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .small-block-grid-12>li:nth-of-type(n) { + clear:none + } + .small-block-grid-12>li:nth-of-type(12n+1) { + clear:both + } +} +@media only screen and (min-width: 40.063em) { + .medium-block-grid-1>li { + width:100%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-1>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-1>li:nth-of-type(1n+1) { + clear:both + } + .medium-block-grid-2>li { + width:50%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-2>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-2>li:nth-of-type(2n+1) { + clear:both + } + .medium-block-grid-3>li { + width:33.33333%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-3>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-3>li:nth-of-type(3n+1) { + clear:both + } + .medium-block-grid-4>li { + width:25%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-4>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-4>li:nth-of-type(4n+1) { + clear:both + } + .medium-block-grid-5>li { + width:20%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-5>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-5>li:nth-of-type(5n+1) { + clear:both + } + .medium-block-grid-6>li { + width:16.66667%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-6>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-6>li:nth-of-type(6n+1) { + clear:both + } + .medium-block-grid-7>li { + width:14.28571%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-7>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-7>li:nth-of-type(7n+1) { + clear:both + } + .medium-block-grid-8>li { + width:12.5%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-8>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-8>li:nth-of-type(8n+1) { + clear:both + } + .medium-block-grid-9>li { + width:11.11111%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-9>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-9>li:nth-of-type(9n+1) { + clear:both + } + .medium-block-grid-10>li { + width:10%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-10>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-10>li:nth-of-type(10n+1) { + clear:both + } + .medium-block-grid-11>li { + width:9.09091%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-11>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-11>li:nth-of-type(11n+1) { + clear:both + } + .medium-block-grid-12>li { + width:8.33333%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .medium-block-grid-12>li:nth-of-type(n) { + clear:none + } + .medium-block-grid-12>li:nth-of-type(12n+1) { + clear:both + } +} +@media only screen and (min-width: 64.063em) { + .large-block-grid-1>li { + width:100%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-1>li:nth-of-type(n) { + clear:none + } + .large-block-grid-1>li:nth-of-type(1n+1) { + clear:both + } + .large-block-grid-2>li { + width:50%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-2>li:nth-of-type(n) { + clear:none + } + .large-block-grid-2>li:nth-of-type(2n+1) { + clear:both + } + .large-block-grid-3>li { + width:33.33333%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-3>li:nth-of-type(n) { + clear:none + } + .large-block-grid-3>li:nth-of-type(3n+1) { + clear:both + } + .large-block-grid-4>li { + width:25%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-4>li:nth-of-type(n) { + clear:none + } + .large-block-grid-4>li:nth-of-type(4n+1) { + clear:both + } + .large-block-grid-5>li { + width:20%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-5>li:nth-of-type(n) { + clear:none + } + .large-block-grid-5>li:nth-of-type(5n+1) { + clear:both + } + .large-block-grid-6>li { + width:16.66667%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-6>li:nth-of-type(n) { + clear:none + } + .large-block-grid-6>li:nth-of-type(6n+1) { + clear:both + } + .large-block-grid-7>li { + width:14.28571%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-7>li:nth-of-type(n) { + clear:none + } + .large-block-grid-7>li:nth-of-type(7n+1) { + clear:both + } + .large-block-grid-8>li { + width:12.5%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-8>li:nth-of-type(n) { + clear:none + } + .large-block-grid-8>li:nth-of-type(8n+1) { + clear:both + } + .large-block-grid-9>li { + width:11.11111%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-9>li:nth-of-type(n) { + clear:none + } + .large-block-grid-9>li:nth-of-type(9n+1) { + clear:both + } + .large-block-grid-10>li { + width:10%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-10>li:nth-of-type(n) { + clear:none + } + .large-block-grid-10>li:nth-of-type(10n+1) { + clear:both + } + .large-block-grid-11>li { + width:9.09091%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-11>li:nth-of-type(n) { + clear:none + } + .large-block-grid-11>li:nth-of-type(11n+1) { + clear:both + } + .large-block-grid-12>li { + width:8.33333%; + padding:0 0.625rem 1.25rem; + list-style:none + } + .large-block-grid-12>li:nth-of-type(n) { + clear:none + } + .large-block-grid-12>li:nth-of-type(12n+1) { + clear:both + } +} +.breadcrumbs { + display:block; + padding:0.5625rem 0.875rem 0.5625rem; + overflow:hidden; + margin-left:0; + list-style:none; + border-style:solid; + border-width:1px; + background-color:#f4f4f4; + border-color:#dcdcdc; + -webkit-border-radius:5px; + border-radius:5px +} +.breadcrumbs>* { + margin:0; + float:left; + font-size:0.6875rem; + text-transform:uppercase +} +.breadcrumbs>*:hover a, .breadcrumbs>*:focus a { + text-decoration:underline +} +.breadcrumbs>* a, .breadcrumbs>* span { + text-transform:uppercase; + color:#446cb3 +} +.breadcrumbs>*.current { + cursor:default; + color:#333 +} +.breadcrumbs>*.current a { + cursor:default; + color:#333 +} +.breadcrumbs>*.current:hover, .breadcrumbs>*.current:hover a, .breadcrumbs>*.current:focus, .breadcrumbs>*.current:focus a { + text-decoration:none +} +.breadcrumbs>*.unavailable { + color:#999 +} +.breadcrumbs>*.unavailable a { + color:#999 +} +.breadcrumbs>*.unavailable:hover, .breadcrumbs>*.unavailable:hover a, .breadcrumbs>*.unavailable:focus, .breadcrumbs>*.unavailable a:focus { + text-decoration:none; + color:#999; + cursor:default +} +.breadcrumbs>*:before { + content:"/"; + color:#aaa; + margin:0 0.75rem; + position:relative; + top:1px +} +.breadcrumbs>*:first-child:before { + content:" "; + margin:0 +} +button, .button { + border-style:solid; + border-width:0px; + cursor:pointer; + font-family:"Open Sans", sans-serif; + font-weight:normal; + line-height:normal; + margin:0 0 0.625rem; + position:relative; + text-decoration:none; + text-align:center; + display:inline-block; + padding-top:1rem; + padding-right:2rem; + padding-bottom:1.0625rem; + padding-left:2rem; + font-size:1rem; + background-color:#446cb3; + border-color:#36568f; + color:#fff; + -webkit-transition:background-color 300ms ease-out; + -moz-transition:background-color 300ms ease-out; + transition:background-color 300ms ease-out; + padding-top:1.0625rem; + padding-bottom:1rem; + -webkit-appearance:none; + border:none; + font-weight:normal !important +} +button:hover, button:focus, .button:hover, .button:focus { + background-color:#36568f +} +button:hover, button:focus, .button:hover, .button:focus { + color:#fff +} +button.secondary, .button.secondary { + background-color:#e7e7e7; + border-color:#b9b9b9; + color:#333 +} +button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { + background-color:#b9b9b9 +} +button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { + color:#333 +} +button.success, .button.success { + background-color:#7ad03a; + border-color:#61ac29; + color:#fff +} +button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { + background-color:#61ac29 +} +button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { + color:#fff +} +button.alert, .button.alert { + background-color:#dd3d36; + border-color:#bc2620; + color:#fff +} +button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { + background-color:#bc2620 +} +button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { + color:#fff +} +button.large, .button.large { + padding-top:1.125rem; + padding-right:2.25rem; + padding-bottom:1.1875rem; + padding-left:2.25rem; + font-size:1.25rem +} +button.small, .button.small { + padding-top:0.875rem; + padding-right:1.75rem; + padding-bottom:0.9375rem; + padding-left:1.75rem; + font-size:0.8125rem +} +button.tiny, .button.tiny { + padding-top:0.625rem; + padding-right:1.25rem; + padding-bottom:0.6875rem; + padding-left:1.25rem; + font-size:0.6875rem +} +button.expand, .button.expand { + padding-right:0; + padding-left:0; + width:100% +} +button.left-align, .button.left-align { + text-align:left; + text-indent:0.75rem +} +button.right-align, .button.right-align { + text-align:right; + padding-right:0.75rem +} +button.radius, .button.radius { + -webkit-border-radius:5px; + border-radius:5px +} +button.round, .button.round { + -webkit-border-radius:1000px; + border-radius:1000px +} +button.disabled, button[disabled], .button.disabled, .button[disabled] { + background-color:#446cb3; + border-color:#36568f; + color:#fff; + cursor:default; + opacity:0.7; + -webkit-box-shadow:none; + box-shadow:none +} +button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + background-color:#36568f +} +button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + color:#fff +} +button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + background-color:#446cb3 +} +button.disabled.secondary, button[disabled].secondary, .button.disabled.secondary, .button[disabled].secondary { + background-color:#e7e7e7; + border-color:#b9b9b9; + color:#333; + cursor:default; + opacity:0.7; + -webkit-box-shadow:none; + box-shadow:none +} +button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { + background-color:#b9b9b9 +} +button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { + color:#333 +} +button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { + background-color:#e7e7e7 +} +button.disabled.success, button[disabled].success, .button.disabled.success, .button[disabled].success { + background-color:#7ad03a; + border-color:#61ac29; + color:#fff; + cursor:default; + opacity:0.7; + -webkit-box-shadow:none; + box-shadow:none +} +button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { + background-color:#61ac29 +} +button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { + color:#fff +} +button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { + background-color:#7ad03a +} +button.disabled.alert, button[disabled].alert, .button.disabled.alert, .button[disabled].alert { + background-color:#dd3d36; + border-color:#bc2620; + color:#fff; + cursor:default; + opacity:0.7; + -webkit-box-shadow:none; + box-shadow:none +} +button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { + background-color:#bc2620 +} +button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { + color:#fff +} +button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { + background-color:#dd3d36 +} +@media only screen and (min-width: 40.063em) { + button, .button { + display:inline-block + } +} +.button-group { + list-style:none; + margin:0; + *zoom:1 +} +.button-group:before, .button-group:after { + content:" "; + display:table +} +.button-group:after { + clear:both +} +.button-group>* { + margin:0; + float:left +} +.button-group>*>button, .button-group>* .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group>*:last-child button, .button-group>*:last-child .button { + border-right:0 +} +.button-group>*:first-child { + margin-left:0 +} +.button-group.radius>*>button, .button-group.radius>* .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group.radius>*:last-child button, .button-group.radius>*:last-child .button { + border-right:0 +} +.button-group.radius>*:first-child, .button-group.radius>*:first-child>a, .button-group.radius>*:first-child>button, .button-group.radius>*:first-child>.button { + -moz-border-radius-bottomleft:5px; + -moz-border-radius-topleft:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-top-left-radius:5px; + border-bottom-left-radius:5px; + border-top-left-radius:5px +} +.button-group.radius>*:last-child, .button-group.radius>*:last-child>a, .button-group.radius>*:last-child>button, .button-group.radius>*:last-child>.button { + -moz-border-radius-topright:5px; + -moz-border-radius-bottomright:5px; + -webkit-border-top-right-radius:5px; + -webkit-border-bottom-right-radius:5px; + border-top-right-radius:5px; + border-bottom-right-radius:5px +} +.button-group.round>*>button, .button-group.round>* .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group.round>*:last-child button, .button-group.round>*:last-child .button { + border-right:0 +} +.button-group.round>*:first-child, .button-group.round>*:first-child>a, .button-group.round>*:first-child>button, .button-group.round>*:first-child>.button { + -moz-border-radius-bottomleft:1000px; + -moz-border-radius-topleft:1000px; + -webkit-border-bottom-left-radius:1000px; + -webkit-border-top-left-radius:1000px; + border-bottom-left-radius:1000px; + border-top-left-radius:1000px +} +.button-group.round>*:last-child, .button-group.round>*:last-child>a, .button-group.round>*:last-child>button, .button-group.round>*:last-child>.button { + -moz-border-radius-topright:1000px; + -moz-border-radius-bottomright:1000px; + -webkit-border-top-right-radius:1000px; + -webkit-border-bottom-right-radius:1000px; + border-top-right-radius:1000px; + border-bottom-right-radius:1000px +} +.button-group.even-2 li { + width:50% +} +.button-group.even-2 li>button, .button-group.even-2 li .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group.even-2 li:last-child button, .button-group.even-2 li:last-child .button { + border-right:0 +} +.button-group.even-2 li button, .button-group.even-2 li .button { + width:100% +} +.button-group.even-3 li { + width:33.33333% +} +.button-group.even-3 li>button, .button-group.even-3 li .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group.even-3 li:last-child button, .button-group.even-3 li:last-child .button { + border-right:0 +} +.button-group.even-3 li button, .button-group.even-3 li .button { + width:100% +} +.button-group.even-4 li { + width:25% +} +.button-group.even-4 li>button, .button-group.even-4 li .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group.even-4 li:last-child button, .button-group.even-4 li:last-child .button { + border-right:0 +} +.button-group.even-4 li button, .button-group.even-4 li .button { + width:100% +} +.button-group.even-5 li { + width:20% +} +.button-group.even-5 li>button, .button-group.even-5 li .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group.even-5 li:last-child button, .button-group.even-5 li:last-child .button { + border-right:0 +} +.button-group.even-5 li button, .button-group.even-5 li .button { + width:100% +} +.button-group.even-6 li { + width:16.66667% +} +.button-group.even-6 li>button, .button-group.even-6 li .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group.even-6 li:last-child button, .button-group.even-6 li:last-child .button { + border-right:0 +} +.button-group.even-6 li button, .button-group.even-6 li .button { + width:100% +} +.button-group.even-7 li { + width:14.28571% +} +.button-group.even-7 li>button, .button-group.even-7 li .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group.even-7 li:last-child button, .button-group.even-7 li:last-child .button { + border-right:0 +} +.button-group.even-7 li button, .button-group.even-7 li .button { + width:100% +} +.button-group.even-8 li { + width:12.5% +} +.button-group.even-8 li>button, .button-group.even-8 li .button { + border-right:1px solid; + border-color:rgba(255, 255, 255, 0.5) +} +.button-group.even-8 li:last-child button, .button-group.even-8 li:last-child .button { + border-right:0 +} +.button-group.even-8 li button, .button-group.even-8 li .button { + width:100% +} +.button-bar { + *zoom:1 +} +.button-bar:before, .button-bar:after { + content:" "; + display:table +} +.button-bar:after { + clear:both +} +.button-bar .button-group { + float:left; + margin-right:0.625rem +} +.button-bar .button-group div { + overflow:hidden +} +[data-clearing] { + *zoom:1; + margin-bottom:0; + margin-left:0; + list-style:none +} +[data-clearing]:before, [data-clearing]:after { + content:" "; + display:table +} +[data-clearing]:after { + clear:both +} +[data-clearing] li { + float:left; + margin-right:10px +} +.clearing-blackout { + background:#333; + position:fixed; + width:100%; + height:100%; + top:0; + left:0; + z-index:998 +} +.clearing-blackout .clearing-close { + display:block +} +.clearing-container { + position:relative; + z-index:998; + height:100%; + overflow:hidden; + margin:0 +} +.visible-img { + height:95%; + position:relative +} +.visible-img img { + position:absolute; + left:50%; + top:50%; + margin-left:-50%; + max-height:100%; + max-width:100% +} +.clearing-caption { + color:#ccc; + font-size:0.875em; + line-height:1.3; + margin-bottom:0; + text-align:center; + bottom:0; + background:#333; + width:100%; + padding:10px 30px 20px; + position:absolute; + left:0 +} +.clearing-close { + z-index:999; + padding-left:20px; + padding-top:10px; + font-size:30px; + line-height:1; + color:#ccc; + display:none +} +.clearing-close:hover, .clearing-close:focus { + color:#ccc +} +.clearing-assembled .clearing-container { + height:100% +} +.clearing-assembled .clearing-container .carousel>ul { + display:none +} +.clearing-feature li { + display:none +} +.clearing-feature li.clearing-featured-img { + display:block +} +@media only screen and (min-width: 40.063em) { + .clearing-main-prev, .clearing-main-next { + position:absolute; + height:100%; + width:40px; + top:0 + } + .clearing-main-prev>span, .clearing-main-next>span { + position:absolute; + top:50%; + display:block; + width:0; + height:0; + border:solid 12px + } + .clearing-main-prev>span:hover, .clearing-main-next>span:hover { + opacity:0.8 + } + .clearing-main-prev { + left:0 + } + .clearing-main-prev>span { + left:5px; + border-color:transparent; + border-right-color:#ccc + } + .clearing-main-next { + right:0 + } + .clearing-main-next>span { + border-color:transparent; + border-left-color:#ccc + } + .clearing-main-prev.disabled, .clearing-main-next.disabled { + opacity:0.3 + } + .clearing-assembled .clearing-container .carousel { + background:rgba(51, 51, 51, 0.8); + height:120px; + margin-top:10px; + text-align:center + } + .clearing-assembled .clearing-container .carousel>ul { + display:inline-block; + z-index:999; + height:100%; + position:relative; + float:none + } + .clearing-assembled .clearing-container .carousel>ul li { + display:block; + width:120px; + min-height:inherit; + float:left; + overflow:hidden; + margin-right:0; + padding:0; + position:relative; + cursor:pointer; + opacity:0.4 + } + .clearing-assembled .clearing-container .carousel>ul li.fix-height img { + height:100%; + max-width:none + } + .clearing-assembled .clearing-container .carousel>ul li a.th { + border:none; + -webkit-box-shadow:none; + box-shadow:none; + display:block + } + .clearing-assembled .clearing-container .carousel>ul li img { + cursor:pointer !important; + width:100% !important + } + .clearing-assembled .clearing-container .carousel>ul li.visible { + opacity:1 + } + .clearing-assembled .clearing-container .carousel>ul li:hover { + opacity:0.8 + } + .clearing-assembled .clearing-container .visible-img { + background:#333; + overflow:hidden; + height:85% + } + .clearing-close { + position:absolute; + top:10px; + right:20px; + padding-left:0; + padding-top:0 + } +} +@media only screen and (max-width: 40em) { + .f-dropdown { + max-width:100%; + left:0 + } +} +.f-dropdown { + position:absolute; + left:-9999px; + list-style:none; + margin-left:0; + width:100%; + max-height:none; + height:auto; + background:#fff; + border:solid 1px #ccc; + font-size:16px; + z-index:99; + margin-top:2px; + max-width:200px +} +.f-dropdown>*:first-child { + margin-top:0 +} +.f-dropdown>*:last-child { + margin-bottom:0 +} +.f-dropdown:before { + content:""; + display:block; + width:0; + height:0; + border:inset 6px; + border-color:transparent transparent #fff transparent; + border-bottom-style:solid; + position:absolute; + top:-12px; + left:10px; + z-index:99 +} +.f-dropdown:after { + content:""; + display:block; + width:0; + height:0; + border:inset 7px; + border-color:transparent transparent #ccc transparent; + border-bottom-style:solid; + position:absolute; + top:-14px; + left:9px; + z-index:98 +} +.f-dropdown.right:before { + left:auto; + right:10px +} +.f-dropdown.right:after { + left:auto; + right:9px +} +.f-dropdown li { + font-size:0.875rem; + cursor:pointer; + line-height:1.125rem; + margin:0 +} +.f-dropdown li:hover, .f-dropdown li:focus { + background:#eee +} +.f-dropdown li a { + display:block; + padding:0.5rem; + color:#555 +} +.f-dropdown.content { + position:absolute; + left:-9999px; + list-style:none; + margin-left:0; + padding:1.25rem; + width:100%; + height:auto; + max-height:none; + background:#fff; + border:solid 1px #ccc; + font-size:16px; + z-index:99; + max-width:200px +} +.f-dropdown.content>*:first-child { + margin-top:0 +} +.f-dropdown.content>*:last-child { + margin-bottom:0 +} +.f-dropdown.tiny { + max-width:200px +} +.f-dropdown.small { + max-width:300px +} +.f-dropdown.medium { + max-width:500px +} +.f-dropdown.large { + max-width:800px +} +.dropdown.button { + position:relative; + padding-right:3.5625rem +} +.dropdown.button:before { + position:absolute; + content:""; + width:0; + height:0; + display:block; + border-style:solid; + border-color:#fff transparent transparent transparent; + top:50% +} +.dropdown.button:before { + border-width:0.375rem; + right:1.40625rem; + margin-top:-0.15625rem +} +.dropdown.button:before { + border-color:#fff transparent transparent transparent +} +.dropdown.button.tiny { + padding-right:2.625rem +} +.dropdown.button.tiny:before { + border-width:0.375rem; + right:1.125rem; + margin-top:-0.125rem +} +.dropdown.button.tiny:before { + border-color:#fff transparent transparent transparent +} +.dropdown.button.small { + padding-right:3.0625rem +} +.dropdown.button.small:before { + border-width:0.4375rem; + right:1.3125rem; + margin-top:-0.15625rem +} +.dropdown.button.small:before { + border-color:#fff transparent transparent transparent +} +.dropdown.button.large { + padding-right:3.625rem +} +.dropdown.button.large:before { + border-width:0.3125rem; + right:1.71875rem; + margin-top:-0.15625rem +} +.dropdown.button.large:before { + border-color:#fff transparent transparent transparent +} +.dropdown.button.secondary:before { + border-color:#333 transparent transparent transparent +} +.flex-video { + position:relative; + padding-top:1.5625rem; + padding-bottom:67.5%; + height:0; + margin-bottom:1rem; + overflow:hidden +} +.flex-video.widescreen { + padding-bottom:57.25% +} +.flex-video.vimeo { + padding-top:0 +} +.flex-video iframe, .flex-video object, .flex-video embed, .flex-video video { + position:absolute; + top:0; + left:0; + width:100%; + height:100% +} +form { + margin:0 0 1rem +} +form .row .row { + margin:0 -0.5rem +} +form .row .row .column, form .row .row .columns { + padding:0 0.5rem +} +form .row .row.collapse { + margin:0 +} +form .row .row.collapse .column, form .row .row.collapse .columns { + padding:0 +} +form .row .row.collapse input { + -moz-border-radius-bottomright:0; + -moz-border-radius-topright:0; + -webkit-border-bottom-right-radius:0; + -webkit-border-top-right-radius:0 +} +form .row input.column, form .row input.columns, form .row textarea.column, form .row textarea.columns { + padding-left:0.5rem +} +label { + font-size:0.875rem; + color:#4d4d4d; + cursor:pointer; + display:block; + font-weight:normal; + margin-bottom:0.5rem +} +label.right { + float:none; + text-align:right +} +label.inline { + margin:0 0 1rem 0; + padding:0.625rem 0 +} +label small { + text-transform:capitalize; + color:#676767 +} +select { + -webkit-appearance:none !important; + background:#fafafa url("data:image/svg+xml;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iM3B4IiB2aWV3Qm94PSIwIDAgNiAzIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2IDMiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwb2x5Z29uIHBvaW50cz0iNS45OTIsMCAyLjk5MiwzIC0wLjAwOCwwICIvPjwvc3ZnPg==") no-repeat; + background-position-x:97%; + background-position-y:center; + border:1px solid #ccc; + padding:0.5rem; + font-size:0.875rem; + -webkit-border-radius:0; + border-radius:0 +} +select.radius { + -webkit-border-radius:5px; + border-radius:5px +} +select:hover { + background:#f3f3f3 url("data:image/svg+xml;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iM3B4IiB2aWV3Qm94PSIwIDAgNiAzIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2IDMiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwb2x5Z29uIHBvaW50cz0iNS45OTIsMCAyLjk5MiwzIC0wLjAwOCwwICIvPjwvc3ZnPg==") no-repeat; + background-position-x:97%; + background-position-y:center; + border-color:#999 +} +select::-ms-expand { + display:none +} +@-moz-document url-prefix() { + select { + background:#fafafa + } + select:hover { + background:#f3f3f3 + } +} +.prefix, .postfix { + display:block; + position:relative; + z-index:2; + text-align:center; + width:100%; + padding-top:0; + padding-bottom:0; + border-style:solid; + border-width:1px; + overflow:hidden; + font-size:0.875rem; + height:2.3125rem; + line-height:2.3125rem +} +.postfix.button { + padding-left:0; + padding-right:0; + padding-top:0; + padding-bottom:0; + text-align:center; + line-height:2.125rem; + border:none +} +.prefix.button { + padding-left:0; + padding-right:0; + padding-top:0; + padding-bottom:0; + text-align:center; + line-height:2.125rem; + border:none +} +.prefix.button.radius { + -webkit-border-radius:0; + border-radius:0; + -moz-border-radius-bottomleft:5px; + -moz-border-radius-topleft:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-top-left-radius:5px; + border-bottom-left-radius:5px; + border-top-left-radius:5px +} +.postfix.button.radius { + -webkit-border-radius:0; + border-radius:0; + -moz-border-radius-topright:5px; + -moz-border-radius-bottomright:5px; + -webkit-border-top-right-radius:5px; + -webkit-border-bottom-right-radius:5px; + border-top-right-radius:5px; + border-bottom-right-radius:5px +} +.prefix.button.round { + -webkit-border-radius:0; + border-radius:0; + -moz-border-radius-bottomleft:1000px; + -moz-border-radius-topleft:1000px; + -webkit-border-bottom-left-radius:1000px; + -webkit-border-top-left-radius:1000px; + border-bottom-left-radius:1000px; + border-top-left-radius:1000px +} +.postfix.button.round { + -webkit-border-radius:0; + border-radius:0; + -moz-border-radius-topright:1000px; + -moz-border-radius-bottomright:1000px; + -webkit-border-top-right-radius:1000px; + -webkit-border-bottom-right-radius:1000px; + border-top-right-radius:1000px; + border-bottom-right-radius:1000px +} +span.prefix, label.prefix { + background:#f2f2f2; + border-color:#d8d8d8; + border-right:none; + color:#333 +} +span.prefix.radius, label.prefix.radius { + -webkit-border-radius:0; + border-radius:0; + -moz-border-radius-bottomleft:5px; + -moz-border-radius-topleft:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-top-left-radius:5px; + border-bottom-left-radius:5px; + border-top-left-radius:5px +} +span.postfix, label.postfix { + background:#f2f2f2; + border-color:#cbcbcb; + border-left:none; + color:#333 +} +span.postfix.radius, label.postfix.radius { + -webkit-border-radius:0; + border-radius:0; + -moz-border-radius-topright:5px; + -moz-border-radius-bottomright:5px; + -webkit-border-top-right-radius:5px; + -webkit-border-bottom-right-radius:5px; + border-top-right-radius:5px; + border-bottom-right-radius:5px +} +.input-group.radius>*:first-child, .input-group.radius>*:first-child * { + -moz-border-radius-bottomleft:5px; + -moz-border-radius-topleft:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-top-left-radius:5px; + border-bottom-left-radius:5px; + border-top-left-radius:5px +} +.input-group.radius>*:last-child, .input-group.radius>*:last-child * { + -moz-border-radius-topright:5px; + -moz-border-radius-bottomright:5px; + -webkit-border-top-right-radius:5px; + -webkit-border-bottom-right-radius:5px; + border-top-right-radius:5px; + border-bottom-right-radius:5px +} +.input-group.round>*:first-child, .input-group.round>*:first-child * { + -moz-border-radius-bottomleft:1000px; + -moz-border-radius-topleft:1000px; + -webkit-border-bottom-left-radius:1000px; + -webkit-border-top-left-radius:1000px; + border-bottom-left-radius:1000px; + border-top-left-radius:1000px +} +.input-group.round>*:last-child, .input-group.round>*:last-child * { + -moz-border-radius-topright:1000px; + -moz-border-radius-bottomright:1000px; + -webkit-border-top-right-radius:1000px; + -webkit-border-bottom-right-radius:1000px; + border-top-right-radius:1000px; + border-bottom-right-radius:1000px +} +input[type="text"], input[type="password"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="week"], input[type="email"], input[type="number"], input[type="search"], input[type="tel"], input[type="time"], input[type="url"], textarea { + -webkit-appearance:none; + -webkit-border-radius:0; + border-radius:0; + background-color:#fff; + font-family:inherit; + border:1px solid #ccc; + -webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1); + color:rgba(0, 0, 0, 0.75); + display:block; + font-size:0.875rem; + margin:0 0 1rem 0; + padding:0.5rem; + height:2.3125rem; + width:100%; + -moz-box-sizing:border-box; + -webkit-box-sizing:border-box; + box-sizing:border-box; + -webkit-transition:-webkit-box-shadow 0.45s, border-color 0.45s ease-in-out; + -moz-transition:-moz-box-shadow 0.45s, border-color 0.45s ease-in-out; + transition:box-shadow 0.45s, border-color 0.45s ease-in-out +} +input[type="text"]:focus, input[type="password"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="week"]:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="time"]:focus, input[type="url"]:focus, textarea:focus { + -webkit-box-shadow:0 0 5px #999; + -moz-box-shadow:0 0 5px #999; + box-shadow:0 0 5px #999; + border-color:#999 +} +input[type="text"]:focus, input[type="password"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="week"]:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="time"]:focus, input[type="url"]:focus, textarea:focus { + background:#fafafa; + border-color:#999; + outline:none +} +input[type="text"][disabled], input[type="password"][disabled], input[type="date"][disabled], input[type="datetime"][disabled], input[type="datetime-local"][disabled], input[type="month"][disabled], input[type="week"][disabled], input[type="email"][disabled], input[type="number"][disabled], input[type="search"][disabled], input[type="tel"][disabled], input[type="time"][disabled], input[type="url"][disabled], textarea[disabled] { + background-color:#ddd +} +select { + height:2.3125rem +} +input[type="file"], input[type="checkbox"], input[type="radio"], select { + margin:0 0 1rem 0 +} +input[type="checkbox"]+label, input[type="radio"]+label { + display:inline-block; + margin-left:0.5rem; + margin-right:1rem; + margin-bottom:0; + vertical-align:baseline +} +input[type="file"] { + width:100% +} +fieldset { + border:solid 1px #ddd; + padding:1.25rem; + margin:1.125rem 0 +} +fieldset legend { + font-weight:bold; + background:#fff; + padding:0 0.1875rem; + margin:0; + margin-left:-0.1875rem +} +[data-abide] .error small.error, [data-abide] span.error, [data-abide] small.error { + display:block; + padding:0.375rem 0.5625rem 0.5625rem; + margin-top:-1px; + margin-bottom:1rem; + font-size:0.75rem; + font-weight:normal; + font-style:italic; + background:#dd3d36; + color:#fff +} +[data-abide] span.error, [data-abide] small.error { + display:none +} +span.error, small.error { + display:block; + padding:0.375rem 0.5625rem 0.5625rem; + margin-top:-1px; + margin-bottom:1rem; + font-size:0.75rem; + font-weight:normal; + font-style:italic; + background:#dd3d36; + color:#fff +} +.error input, .error textarea, .error select { + margin-bottom:0 +} +.error label, .error label.error { + color:#dd3d36 +} +.error>small, .error small.error { + display:block; + padding:0.375rem 0.5625rem 0.5625rem; + margin-top:-1px; + margin-bottom:1rem; + font-size:0.75rem; + font-weight:normal; + font-style:italic; + background:#dd3d36; + color:#fff +} +.error>label>small { + color:#676767; + background:transparent; + padding:0; + text-transform:capitalize; + font-style:normal; + font-size:60%; + margin:0; + display:inline +} +.error span.error-message { + display:block +} +input.error, textarea.error { + margin-bottom:0 +} +label.error { + color:#dd3d36 +} +.inline-list { + margin:0 auto 1.0625rem auto; + margin-left:-1.375rem; + margin-right:0; + padding:0; + list-style:none; + overflow:hidden +} +.inline-list>li { + list-style:none; + float:left; + margin-left:1.375rem; + display:block +} +.inline-list>li>* { + display:block +} +.joyride-list { + display:none +} +.joyride-tip-guide { + display:none; + position:absolute; + background:#333; + color:#fff; + z-index:101; + top:0; + left:2.5%; + font-family:inherit; + font-weight:normal; + width:95% +} +.lt-ie9 .joyride-tip-guide { + max-width:800px; + left:50%; + margin-left:-400px +} +.joyride-content-wrapper { + width:100%; + padding:1.125rem 1.25rem 1.5rem +} +.joyride-content-wrapper .button { + margin-bottom:0 !important +} +.joyride-tip-guide .joyride-nub { + display:block; + position:absolute; + left:22px; + width:0; + height:0; + border:10px solid #333 +} +.joyride-tip-guide .joyride-nub.top { + border-top-style:solid; + border-color:#333; + border-top-color:transparent !important; + border-left-color:transparent !important; + border-right-color:transparent !important; + top:-20px +} +.joyride-tip-guide .joyride-nub.bottom { + border-bottom-style:solid; + border-color:#333 !important; + border-bottom-color:transparent !important; + border-left-color:transparent !important; + border-right-color:transparent !important; + bottom:-20px +} +.joyride-tip-guide .joyride-nub.right { + right:-20px +} +.joyride-tip-guide .joyride-nub.left { + left:-20px +} +.joyride-tip-guide h1, .joyride-tip-guide h2, .joyride-tip-guide h3, .joyride-tip-guide h4, .joyride-tip-guide h5, .joyride-tip-guide h6 { + line-height:1.25; + margin:0; + font-weight:bold; + color:#fff +} +.joyride-tip-guide p { + margin:0 0 1.125rem 0; + font-size:0.875rem; + line-height:1.3 +} +.joyride-timer-indicator-wrap { + width:50px; + height:3px; + border:solid 1px #555; + position:absolute; + right:1.0625rem; + bottom:1rem +} +.joyride-timer-indicator { + display:block; + width:0; + height:inherit; + background:#666 +} +.joyride-close-tip { + position:absolute; + right:12px; + top:10px; + color:#777 !important; + text-decoration:none; + font-size:24px; + font-weight:normal; + line-height:.5 !important +} +.joyride-close-tip:hover, .joyride-close-tip:focus { + color:#eee !important +} +.joyride-modal-bg { + position:fixed; + height:100%; + width:100%; + background:transparent; + background:rgba(0, 0, 0, 0.5); + z-index:100; + display:none; + top:0; + left:0; + cursor:pointer +} +.joyride-expose-wrapper { + background-color:#ffffff; + position:absolute; + border-radius:3px; + z-index:102; + -moz-box-shadow:0 0 30px #ffffff; + -webkit-box-shadow:0 0 15px #ffffff; + box-shadow:0 0 15px #ffffff +} +.joyride-expose-cover { + background:transparent; + border-radius:3px; + position:absolute; + z-index:9999; + top:0; + left:0 +} +@media only screen and (min-width: 40.063em) { + .joyride-tip-guide { + width:300px; + left:inherit + } + .joyride-tip-guide .joyride-nub.bottom { + border-color:#333 !important; + border-bottom-color:transparent !important; + border-left-color:transparent !important; + border-right-color:transparent !important; + bottom:-20px + } + .joyride-tip-guide .joyride-nub.right { + border-color:#333 !important; + border-top-color:transparent !important; + border-right-color:transparent !important; + border-bottom-color:transparent !important; + top:22px; + left:auto; + right:-20px + } + .joyride-tip-guide .joyride-nub.left { + border-color:#333 !important; + border-top-color:transparent !important; + border-left-color:transparent !important; + border-bottom-color:transparent !important; + top:22px; + left:-20px; + right:auto + } +} +.keystroke, kbd { + background-color:#ededed; + border-color:#ddd; + color:#222; + border-style:solid; + border-width:1px; + margin:0; + font-family:"Consolas", "Menlo", "Courier", monospace; + font-size:0.875rem; + padding:0.125rem 0.25rem 0; + -webkit-border-radius:5px; + border-radius:5px +} +.label { + font-weight:normal; + font-family:"Open Sans", sans-serif; + text-align:center; + text-decoration:none; + line-height:1; + white-space:nowrap; + display:inline-block; + position:relative; + margin-bottom:inherit; + padding:0.25rem 0.5rem 0.375rem; + font-size:0.6875rem; + background-color:#446cb3; + color:#fff +} +.label.radius { + -webkit-border-radius:5px; + border-radius:5px +} +.label.round { + -webkit-border-radius:1000px; + border-radius:1000px +} +.label.alert { + background-color:#dd3d36; + color:#fff +} +.label.success { + background-color:#7ad03a; + color:#fff +} +.label.secondary { + background-color:#e7e7e7; + color:#333 +} +[data-magellan-expedition] { + background:#fff; + z-index:50; + min-width:100%; + padding:10px +} +[data-magellan-expedition] .sub-nav { + margin-bottom:0 +} +[data-magellan-expedition] .sub-nav dd { + margin-bottom:0 +} +[data-magellan-expedition] .sub-nav .active { + line-height:1.8em +} +@-webkit-keyframes rotate { + from { + -webkit-transform:rotate(0deg) + } + to { + -webkit-transform:rotate(360deg) + } +} +@-moz-keyframes rotate { + from { + -moz-transform:rotate(0deg) + } + to { + -moz-transform:rotate(360deg) + } +} +@-o-keyframes rotate { + from { + -o-transform:rotate(0deg) + } + to { + -o-transform:rotate(360deg) + } +} +@keyframes rotate { + from { + transform:rotate(0deg) + } + to { + transform:rotate(360deg) + } +} +.slideshow-wrapper { + position:relative +} +.slideshow-wrapper ul { + list-style-type:none; + margin:0 +} +.slideshow-wrapper ul li, .slideshow-wrapper ul li .orbit-caption { + display:none +} +.slideshow-wrapper ul li:first-child { + display:block +} +.slideshow-wrapper .orbit-container { + background-color:transparent +} +.slideshow-wrapper .orbit-container li { + display:block +} +.slideshow-wrapper .orbit-container li .orbit-caption { + display:block +} +.preloader { + display:block; + width:40px; + height:40px; + position:absolute; + top:50%; + left:50%; + margin-top:-20px; + margin-left:-20px; + border:solid 3px; + border-color:#555 #fff; + -webkit-border-radius:1000px; + border-radius:1000px; + -webkit-animation-name:rotate; + -webkit-animation-duration:1.5s; + -webkit-animation-iteration-count:infinite; + -webkit-animation-timing-function:linear; + -moz-animation-name:rotate; + -moz-animation-duration:1.5s; + -moz-animation-iteration-count:infinite; + -moz-animation-timing-function:linear; + -o-animation-name:rotate; + -o-animation-duration:1.5s; + -o-animation-iteration-count:infinite; + -o-animation-timing-function:linear; + animation-name:rotate; + animation-duration:1.5s; + animation-iteration-count:infinite; + animation-timing-function:linear +} +.orbit-container { + overflow:hidden; + width:100%; + position:relative; + background:none +} +.orbit-container .orbit-slides-container { + list-style:none; + margin:0; + padding:0; + position:relative +} +.orbit-container .orbit-slides-container img { + display:block; + max-width:100% +} +.orbit-container .orbit-slides-container>* { + position:absolute; + top:0; + width:100%; + margin-left:100% +} +.orbit-container .orbit-slides-container>*:first-child { + margin-left:0% +} +.orbit-container .orbit-slides-container>* .orbit-caption { + position:absolute; + bottom:0; + background-color:rgba(51, 51, 51, 0.8); + color:#fff; + width:100%; + padding:0.625rem 0.875rem; + font-size:0.875rem +} +.orbit-container .orbit-slide-number { + position:absolute; + top:10px; + left:10px; + font-size:12px; + color:#fff; + background:rgba(0, 0, 0, 0); + z-index:10 +} +.orbit-container .orbit-slide-number span { + font-weight:700; + padding:0.3125rem +} +.orbit-container .orbit-timer { + position:absolute; + top:12px; + right:10px; + height:6px; + width:100px; + z-index:10 +} +.orbit-container .orbit-timer .orbit-progress { + height:3px; + background-color:rgba(255, 255, 255, 0.3); + display:block; + width:0%; + position:relative; + right:20px; + top:5px +} +.orbit-container .orbit-timer>span { + display:none; + position:absolute; + top:0px; + right:0; + width:11px; + height:14px; + border:solid 4px #fff; + border-top:none; + border-bottom:none +} +.orbit-container .orbit-timer.paused>span { + right:-4px; + top:0px; + width:11px; + height:14px; + border:inset 8px; + border-right-style:solid; + border-color:transparent transparent transparent #fff +} +.orbit-container .orbit-timer.paused>span.dark { + border-color:transparent transparent transparent #333 +} +.orbit-container:hover .orbit-timer>span { + display:block +} +.orbit-container .orbit-prev, .orbit-container .orbit-next { + position:absolute; + top:45%; + margin-top:-25px; + width:36px; + height:60px; + line-height:50px; + color:white; + background-color:none; + text-indent:-9999px !important; + z-index:10 +} +.orbit-container .orbit-prev:hover, .orbit-container .orbit-next:hover { + background-color:rgba(0, 0, 0, 0.3) +} +.orbit-container .orbit-prev>span, .orbit-container .orbit-next>span { + position:absolute; + top:50%; + margin-top:-10px; + display:block; + width:0; + height:0; + border:inset 10px +} +.orbit-container .orbit-prev { + left:0 +} +.orbit-container .orbit-prev>span { + border-right-style:solid; + border-color:transparent; + border-right-color:#fff +} +.orbit-container .orbit-prev:hover>span { + border-right-color:#fff +} +.orbit-container .orbit-next { + right:0 +} +.orbit-container .orbit-next>span { + border-color:transparent; + border-left-style:solid; + border-left-color:#fff; + left:50%; + margin-left:-4px +} +.orbit-container .orbit-next:hover>span { + border-left-color:#fff +} +.orbit-bullets-container { + text-align:center +} +.orbit-bullets { + margin:0 auto 30px auto; + overflow:hidden; + position:relative; + top:10px; + float:none; + text-align:center; + display:block +} +.orbit-bullets li { + display:inline-block; + width:0.5625rem; + height:0.5625rem; + background:#ccc; + float:none; + margin-right:6px; + -webkit-border-radius:1000px; + border-radius:1000px +} +.orbit-bullets li.active { + background:#999 +} +.orbit-bullets li:last-child { + margin-right:0 +} +.touch .orbit-container .orbit-prev, .touch .orbit-container .orbit-next { + display:none +} +.touch .orbit-bullets { + display:none +} +@media only screen and (min-width: 40.063em) { + .touch .orbit-container .orbit-prev, .touch .orbit-container .orbit-next { + display:inherit + } + .touch .orbit-bullets { + display:block + } +} +@media only screen and (max-width: 40em) { + .orbit-stack-on-small .orbit-slides-container { + height:auto !important + } + .orbit-stack-on-small .orbit-slides-container>* { + position:relative; + margin-left:0% !important + } + .orbit-stack-on-small .orbit-timer, .orbit-stack-on-small .orbit-next, .orbit-stack-on-small .orbit-prev, .orbit-stack-on-small .orbit-bullets { + display:none + } +} +ul.pagination { + display:block; + height:1.5rem; + margin-left:-0.3125rem +} +ul.pagination li { + height:1.5rem; + color:#222; + font-size:0.875rem; + margin-left:0.3125rem +} +ul.pagination li a { + display:block; + padding:0.0625rem 0.625rem 0.0625rem; + color:#999; + -webkit-border-radius:5px; + border-radius:5px +} +ul.pagination li:hover a, ul.pagination li a:focus { + background:#e6e6e6 +} +ul.pagination li.unavailable a { + cursor:default; + color:#999 +} +ul.pagination li.unavailable:hover a, ul.pagination li.unavailable a:focus { + background:transparent +} +ul.pagination li.current a { + background:#446cb3; + color:#fff; + font-weight:bold; + cursor:default +} +ul.pagination li.current a:hover, ul.pagination li.current a:focus { + background:#446cb3 +} +ul.pagination li { + float:left; + display:block +} +.pagination-centered { + text-align:center +} +.pagination-centered ul.pagination li { + float:none; + display:inline-block +} +.panel { + border-style:solid; + border-width:1px; + border-color:#f4f4f4; + margin-bottom:1.25rem; + padding:1.25rem; + background:#f2f2f2 +} +.panel>:first-child { + margin-top:0 +} +.panel>:last-child { + margin-bottom:0 +} +.panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6, .panel p { + color:#333 +} +.panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6 { + line-height:1; + margin-bottom:0.625rem +} +.panel h1.subheader, .panel h2.subheader, .panel h3.subheader, .panel h4.subheader, .panel h5.subheader, .panel h6.subheader { + line-height:1.4 +} +.panel.callout { + border-style:solid; + border-width:1px; + border-color:#f5f7fb; + margin-bottom:1.25rem; + padding:1.25rem; + background:#f4f6fb +} +.panel.callout>:first-child { + margin-top:0 +} +.panel.callout>:last-child { + margin-bottom:0 +} +.panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6, .panel.callout p { + color:#333 +} +.panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6 { + line-height:1; + margin-bottom:0.625rem +} +.panel.callout h1.subheader, .panel.callout h2.subheader, .panel.callout h3.subheader, .panel.callout h4.subheader, .panel.callout h5.subheader, .panel.callout h6.subheader { + line-height:1.4 +} +.panel.callout a { + color:#446cb3 +} +.panel.radius { + -webkit-border-radius:5px; + border-radius:5px +} +.pricing-table { + border:solid 1px #ddd; + margin-left:0; + margin-bottom:1.25rem +} +.pricing-table * { + list-style:none; + line-height:1 +} +.pricing-table .title { + background-color:#333; + padding:0.9375rem 1.25rem; + text-align:center; + color:#eee; + font-weight:normal; + font-size:1rem; + font-family:"Open Sans", sans-serif +} +.pricing-table .price { + background-color:#f6f6f6; + padding:0.9375rem 1.25rem; + text-align:center; + color:#333; + font-weight:normal; + font-size:2rem; + font-family:"Open Sans", sans-serif +} +.pricing-table .description { + background-color:#fff; + padding:0.9375rem; + text-align:center; + color:#777; + font-size:0.75rem; + font-weight:normal; + line-height:1.4; + border-bottom:dotted 1px #ddd +} +.pricing-table .bullet-item { + background-color:#fff; + padding:0.9375rem; + text-align:center; + color:#333; + font-size:0.875rem; + font-weight:normal; + border-bottom:dotted 1px #ddd +} +.pricing-table .cta-button { + background-color:#fff; + text-align:center; + padding:1.25rem 1.25rem 0 +} +.progress { + background-color:#f6f6f6; + height:1.5625rem; + border:1px solid #fff; + padding:0.125rem; + margin-bottom:0.625rem +} +.progress .meter { + background:#446cb3; + height:100%; + display:block +} +.progress.secondary .meter { + background:#e7e7e7; + height:100%; + display:block +} +.progress.success .meter { + background:#7ad03a; + height:100%; + display:block +} +.progress.alert .meter { + background:#dd3d36; + height:100%; + display:block +} +.progress.radius { + -webkit-border-radius:5px; + border-radius:5px +} +.progress.radius .meter { + -webkit-border-radius:4px; + border-radius:4px +} +.progress.round { + -webkit-border-radius:1000px; + border-radius:1000px +} +.progress.round .meter { + -webkit-border-radius:999px; + border-radius:999px +} +.reveal-modal-bg { + position:fixed; + height:100%; + width:100%; + background:#000; + background:rgba(0, 0, 0, 0.45); + z-index:98; + display:none; + top:0; + left:0 +} +.reveal-modal { + visibility:hidden; + display:none; + position:absolute; + left:50%; + z-index:99; + height:auto; + margin-left:-40%; + width:80%; + background-color:#fff; + padding:1.25rem; + border:solid 1px #666; + -webkit-box-shadow:0 0 10px rgba(0, 0, 0, 0.4); + box-shadow:0 0 10px rgba(0, 0, 0, 0.4); + top:6.25rem +} +.reveal-modal .column, .reveal-modal .columns { + min-width:0 +} +.reveal-modal>:first-child { + margin-top:0 +} +.reveal-modal>:last-child { + margin-bottom:0 +} +.reveal-modal .close-reveal-modal { + font-size:1.375rem; + line-height:1; + position:absolute; + top:0.5rem; + right:0.6875rem; + color:#aaa; + font-weight:bold; + cursor:pointer +} +@media only screen and (min-width: 40.063em) { + .reveal-modal { + padding:1.875rem; + top:6.25rem + } + .reveal-modal.tiny { + margin-left:-15%; + width:30% + } + .reveal-modal.small { + margin-left:-20%; + width:40% + } + .reveal-modal.medium { + margin-left:-30%; + width:60% + } + .reveal-modal.large { + margin-left:-35%; + width:70% + } + .reveal-modal.xlarge { + margin-left:-47.5%; + width:95% + } +} +@media print { + .reveal-modal { + background:#fff !important + } +} +.side-nav { + display:block; + margin:0; + padding:0.875rem 0; + list-style-type:none; + list-style-position:inside; + font-family:"Open Sans", sans-serif +} +.side-nav li { + margin:0 0 0.4375rem 0; + font-size:0.875rem +} +.side-nav li a { + display:block; + color:#446cb3 +} +.side-nav li.active>a:first-child { + color:#4d4d4d; + font-weight:normal; + font-family:"Open Sans", sans-serif +} +.side-nav li.divider { + border-top:1px solid; + height:0; + padding:0; + list-style:none; + border-top-color:#fff +} +.split.button { + position:relative; + padding-right:5.0625rem +} +.split.button span { + display:block; + height:100%; + position:absolute; + right:0; + top:0; + border-left:solid 1px +} +.split.button span:before { + position:absolute; + content:""; + width:0; + height:0; + display:block; + border-style:inset; + top:50%; + left:50% +} +.split.button span:active { + background-color:rgba(0, 0, 0, 0.1) +} +.split.button span { + border-left-color:rgba(255, 255, 255, 0.5) +} +.split.button span { + width:3.09375rem +} +.split.button span:before { + border-top-style:solid; + border-width:0.375rem; + top:48%; + margin-left:-0.375rem +} +.split.button span:before { + border-color:#fff transparent transparent transparent +} +.split.button.secondary span { + border-left-color:rgba(255, 255, 255, 0.5) +} +.split.button.secondary span:before { + border-color:#fff transparent transparent transparent +} +.split.button.alert span { + border-left-color:rgba(255, 255, 255, 0.5) +} +.split.button.success span { + border-left-color:rgba(255, 255, 255, 0.5) +} +.split.button.tiny { + padding-right:3.75rem +} +.split.button.tiny span { + width:2.25rem +} +.split.button.tiny span:before { + border-top-style:solid; + border-width:0.375rem; + top:48%; + margin-left:-0.375rem +} +.split.button.small { + padding-right:4.375rem +} +.split.button.small span { + width:2.625rem +} +.split.button.small span:before { + border-top-style:solid; + border-width:0.4375rem; + top:48%; + margin-left:-0.375rem +} +.split.button.large { + padding-right:5.5rem +} +.split.button.large span { + width:3.4375rem +} +.split.button.large span:before { + border-top-style:solid; + border-width:0.3125rem; + top:48%; + margin-left:-0.375rem +} +.split.button.expand { + padding-left:2rem +} +.split.button.secondary span:before { + border-color:#333 transparent transparent transparent +} +.split.button.radius span { + -moz-border-radius-topright:5px; + -moz-border-radius-bottomright:5px; + -webkit-border-top-right-radius:5px; + -webkit-border-bottom-right-radius:5px; + border-top-right-radius:5px; + border-bottom-right-radius:5px +} +.split.button.round span { + -moz-border-radius-topright:1000px; + -moz-border-radius-bottomright:1000px; + -webkit-border-top-right-radius:1000px; + -webkit-border-bottom-right-radius:1000px; + border-top-right-radius:1000px; + border-bottom-right-radius:1000px +} +.sub-nav { + display:block; + width:auto; + overflow:hidden; + margin:-0.25rem 0 1.125rem; + padding-top:0.25rem; + margin-right:0; + margin-left:-0.75rem +} +.sub-nav dt { + text-transform:uppercase +} +.sub-nav dt, .sub-nav dd, .sub-nav li { + float:left; + display:inline; + margin-left:1rem; + margin-bottom:0.625rem; + font-family:"Open Sans", sans-serif; + font-weight:normal; + font-size:0.875rem; + color:#999 +} +.sub-nav dt a, .sub-nav dd a, .sub-nav li a { + text-decoration:none; + color:#999 +} +.sub-nav dt a:hover, .sub-nav dd a:hover, .sub-nav li a:hover { + color:#0085b1 +} +.sub-nav dt.active a, .sub-nav dd.active a, .sub-nav li.active a { + -webkit-border-radius:5px; + border-radius:5px; + font-weight:normal; + background:#446cb3; + padding:0.1875rem 1rem; + cursor:default; + color:#fff +} +.sub-nav dt.active a:hover, .sub-nav dd.active a:hover, .sub-nav li.active a:hover { + background:#0085b1 +} +div.switch { + position:relative; + padding:0; + display:block; + overflow:hidden; + border-style:solid; + border-width:1px; + margin-bottom:1.25rem; + height:2.25rem; + background:#fff; + border-color:#ccc +} +div.switch label { + position:relative; + left:0; + z-index:2; + float:left; + width:50%; + height:100%; + margin:0; + font-weight:bold; + text-align:left; + -webkit-transition:all 0.1s ease-out; + -moz-transition:all 0.1s ease-out; + transition:all 0.1s ease-out +} +div.switch input { + position:absolute; + z-index:3; + opacity:0; + width:100%; + height:100%; + -moz-appearance:none +} +div.switch input:hover, div.switch input:focus { + cursor:pointer +} +div.switch span:last-child { + position:absolute; + top:-1px; + left:-1px; + z-index:1; + display:block; + padding:0; + border-width:1px; + border-style:solid; + -webkit-transition:all 0.1s ease-out; + -moz-transition:all 0.1s ease-out; + transition:all 0.1s ease-out +} +div.switch input:not(:checked)+label { + opacity:0 +} +div.switch input:checked { + display:none !important +} +div.switch input { + left:0; + display:block !important +} +div.switch input:first-of-type+label, div.switch input:first-of-type+span+label { + left:-50% +} +div.switch input:first-of-type:checked+label, div.switch input:first-of-type:checked+span+label { + left:0% +} +div.switch input:last-of-type+label, div.switch input:last-of-type+span+label { + right:-50%; + left:auto; + text-align:right +} +div.switch input:last-of-type:checked+label, div.switch input:last-of-type:checked+span+label { + right:0%; + left:auto +} +div.switch span.custom { + display:none !important +} +form.custom div.switch .hidden-field { + margin-left:auto; + position:absolute; + visibility:visible +} +div.switch label { + padding:0; + line-height:2.3rem; + font-size:0.875rem +} +div.switch input:first-of-type:checked ~ span:last-child { + left:100%; + margin-left:-2.1875rem +} +div.switch span:last-child { + width:2.25rem; + height:2.25rem +} +div.switch span:last-child { + border-color:#b3b3b3; + background:#fff; + background:-moz-linear-gradient(top, #fff 0%, #f2f2f2 100%); + background:-webkit-linear-gradient(top, #fff 0%, #f2f2f2 100%); + background:linear-gradient(to bottom, #ffffff 0%, #f2f2f2 100%); + -webkit-box-shadow:2px 0 10px 0 rgba(0, 0, 0, 0.07), 1000px 0 0 1000px #f7fcf3, -2px 0 10px 0 rgba(0, 0, 0, 0.07), -1000px 0 0 1000px #f5f5f5; + box-shadow:2px 0 10px 0 rgba(0, 0, 0, 0.07), 1000px 0 0 980px #f7fcf3, -2px 0 10px 0 rgba(0, 0, 0, 0.07), -1000px 0 0 1000px #f5f5f5 +} +div.switch:hover span:last-child, div.switch:focus span:last-child { + background:#fff; + background:-moz-linear-gradient(top, #fff 0%, #e6e6e6 100%); + background:-webkit-linear-gradient(top, #fff 0%, #e6e6e6 100%); + background:linear-gradient(to bottom, #ffffff 0%, #e6e6e6 100%) +} +div.switch:active { + background:transparent +} +div.switch.large { + height:2.75rem +} +div.switch.large label { + padding:0; + line-height:2.3rem; + font-size:1.0625rem +} +div.switch.large input:first-of-type:checked ~ span:last-child { + left:100%; + margin-left:-2.6875rem +} +div.switch.large span:last-child { + width:2.75rem; + height:2.75rem +} +div.switch.small { + height:1.75rem +} +div.switch.small label { + padding:0; + line-height:2.1rem; + font-size:0.75rem +} +div.switch.small input:first-of-type:checked ~ span:last-child { + left:100%; + margin-left:-1.6875rem +} +div.switch.small span:last-child { + width:1.75rem; + height:1.75rem +} +div.switch.tiny { + height:1.375rem +} +div.switch.tiny label { + padding:0; + line-height:1.9rem; + font-size:0.6875rem +} +div.switch.tiny input:first-of-type:checked ~ span:last-child { + left:100%; + margin-left:-1.3125rem +} +div.switch.tiny span:last-child { + width:1.375rem; + height:1.375rem +} +div.switch.radius { + -webkit-border-radius:4px; + border-radius:4px +} +div.switch.radius span:last-child { + -webkit-border-radius:3px; + border-radius:3px +} +div.switch.round { + -webkit-border-radius:1000px; + border-radius:1000px +} +div.switch.round span:last-child { + -webkit-border-radius:999px; + border-radius:999px +} +div.switch.round label { + padding:0 0.5625rem +} +@-webkit-keyframes webkitSiblingBugfix { + from { + position:relative + } + to { + position:relative + } +} +table { + background:#fff; + margin-bottom:1.25rem; + border:solid 1px #ddd +} +table thead, table tfoot { + background:#f5f5f5 +} +table thead tr th, table thead tr td, table tfoot tr th, table tfoot tr td { + padding:0.5rem 0.625rem 0.625rem; + font-size:0.875rem; + font-weight:bold; + color:#222; + text-align:left +} +table tr th, table tr td { + padding:0.5625rem 0.625rem; + font-size:0.875rem; + color:#222 +} +table tr.even, table tr.alt, table tr:nth-of-type(even) { + background:#f9f9f9 +} +table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { + display:table-cell; + line-height:1.125rem +} +.tabs { + *zoom:1; + margin-bottom:0 !important +} +.tabs:before, .tabs:after { + content:" "; + display:table +} +.tabs:after { + clear:both +} +.tabs dd { + position:relative; + margin-bottom:0 !important; + top:1px; + float:left +} +.tabs dd>a { + display:block; + background:#efefef; + color:#222; + padding-top:1rem; + padding-right:2rem; + padding-bottom:1.0625rem; + padding-left:2rem; + font-family:"Open Sans", sans-serif; + font-size:1rem +} +.tabs dd>a:hover { + background:#e1e1e1 +} +.tabs dd.active a { + background:#fff +} +.tabs.radius dd:first-child a { + -moz-border-radius-bottomleft:5px; + -moz-border-radius-topleft:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-top-left-radius:5px; + border-bottom-left-radius:5px; + border-top-left-radius:5px +} +.tabs.radius dd:last-child a { + -moz-border-radius-topright:5px; + -moz-border-radius-bottomright:5px; + -webkit-border-top-right-radius:5px; + -webkit-border-bottom-right-radius:5px; + border-top-right-radius:5px; + border-bottom-right-radius:5px +} +.tabs.vertical dd { + position:inherit; + float:none; + display:block; + top:auto +} +.tabs-content { + *zoom:1; + margin-bottom:1.5rem +} +.tabs-content:before, .tabs-content:after { + content:" "; + display:table +} +.tabs-content:after { + clear:both +} +.tabs-content>.content { + display:none; + float:left; + padding:0.625rem 0 +} +.tabs-content>.content.active { + display:block +} +.tabs-content>.content.contained { + padding:0.625rem +} +.tabs-content.vertical { + display:block +} +.tabs-content.vertical>.content { + padding:0 0.625rem +} +@media only screen and (min-width: 40.063em) { + .tabs.vertical { + width:20%; + float:left; + margin-bottom:1.25rem + } + .tabs-content.vertical { + width:80%; + float:left; + margin-left:-1px + } +} +.th { + line-height:0; + display:inline-block; + border:solid 4px #fff; + max-width:100%; + -webkit-box-shadow:0 0 0 1px rgba(0, 0, 0, 0.2); + box-shadow:0 0 0 1px rgba(0, 0, 0, 0.2); + -webkit-transition:all 200ms ease-out; + -moz-transition:all 200ms ease-out; + transition:all 200ms ease-out +} +.th:hover, .th:focus { + -webkit-box-shadow:0 0 6px 1px rgba(68, 108, 179, 0.5); + box-shadow:0 0 6px 1px rgba(68, 108, 179, 0.5) +} +.th.radius { + -webkit-border-radius:5px; + border-radius:5px +} +.has-tip { + border-bottom:dotted 1px #ccc; + cursor:help; + font-weight:bold; + color:#333 +} +.has-tip:hover, .has-tip:focus { + border-bottom:dotted 1px #1f3151; + color:#446cb3 +} +.has-tip.tip-left, .has-tip.tip-right { + float:none !important +} +.tooltip { + display:none; + position:absolute; + z-index:999; + font-weight:normal; + font-size:0.875rem; + line-height:1.3; + padding:0.75rem; + max-width:85%; + left:50%; + width:100%; + color:#fff; + background:#333; + -webkit-border-radius:5px; + border-radius:5px +} +.tooltip>.nub { + display:block; + left:5px; + position:absolute; + width:0; + height:0; + border:solid 5px; + border-color:transparent transparent #333 transparent; + top:-10px +} +.tooltip.opened { + color:#446cb3 !important; + border-bottom:dotted 1px #1f3151 !important +} +.tap-to-close { + display:block; + font-size:0.625rem; + color:#777; + font-weight:normal +} +@media only screen and (min-width: 40.063em) { + .tooltip>.nub { + border-color:transparent transparent #333 transparent; + top:-10px + } + .tooltip.tip-top>.nub { + border-color:#333 transparent transparent transparent; + top:auto; + bottom:-10px + } + .tooltip.tip-left, .tooltip.tip-right { + float:none !important + } + .tooltip.tip-left>.nub { + border-color:transparent transparent transparent #333; + right:-10px; + left:auto; + top:50%; + margin-top:-5px + } + .tooltip.tip-right>.nub { + border-color:transparent #333 transparent transparent; + right:auto; + left:-10px; + top:50%; + margin-top:-5px + } +} +meta.foundation-mq-topbar { + font-family:"/only screen and (min-width:40.063em)/"; + width:40.063em +} +.contain-to-grid { + width:100%; + background:#333 +} +.contain-to-grid .top-bar { + margin-bottom:0 +} +.fixed { + width:100%; + left:0; + position:fixed; + top:0; + z-index:99 +} +.fixed.expanded:not(.top-bar) { + overflow-y:auto; + height:auto; + width:100%; + max-height:100% +} +.fixed.expanded:not(.top-bar) .title-area { + position:fixed; + width:100%; + z-index:99 +} +.fixed.expanded:not(.top-bar) .top-bar-section { + z-index:98; + margin-top:45px +} +.top-bar { + overflow:hidden; + height:45px; + line-height:45px; + position:relative; + background:#333; + margin-bottom:0 +} +.top-bar ul { + margin-bottom:0; + list-style:none +} +.top-bar .row { + max-width:none +} +.top-bar form, .top-bar input { + margin-bottom:0 +} +.top-bar input { + height:auto; + padding-top:.35rem; + padding-bottom:.35rem; + font-size:0.75rem +} +.top-bar .button { + padding-top:.45rem; + padding-bottom:.35rem; + margin-bottom:0; + font-size:0.75rem +} +.top-bar .title-area { + position:relative; + margin:0 +} +.top-bar .name { + height:45px; + margin:0; + font-size:16px +} +.top-bar .name h1 { + line-height:45px; + font-size:1.0625rem; + margin:0 +} +.top-bar .name h1 a { + font-weight:normal; + color:#fff; + width:50%; + display:block; + padding:0 15px +} +.top-bar .toggle-topbar { + position:absolute; + right:0; + top:0 +} +.top-bar .toggle-topbar a { + color:#fff; + text-transform:uppercase; + font-size:0.8125rem; + font-weight:bold; + position:relative; + display:block; + padding:0 15px; + height:45px; + line-height:45px +} +.top-bar .toggle-topbar.menu-icon { + right:15px; + top:50%; + margin-top:-16px; + padding-left:40px +} +.top-bar .toggle-topbar.menu-icon a { + height:34px; + line-height:33px; + padding:0; + padding-right:25px; + color:#fff; + position:relative +} +.top-bar .toggle-topbar.menu-icon a::after { + content:""; + position:absolute; + right:0; + display:block; + width:16px; + top:0; + height:0; + -webkit-box-shadow:0 10px 0 1px #fff, 0 16px 0 1px #fff, 0 22px 0 1px #fff; + box-shadow:0 10px 0 1px #fff, 0 16px 0 1px #fff, 0 22px 0 1px #fff +} +.top-bar.expanded { + height:auto; + background:transparent +} +.top-bar.expanded .title-area { + background:#333 +} +.top-bar.expanded .toggle-topbar a { + color:#888 +} +.top-bar.expanded .toggle-topbar a span { + -webkit-box-shadow:0 10px 0 1px #888, 0 16px 0 1px #888, 0 22px 0 1px #888; + box-shadow:0 10px 0 1px #888, 0 16px 0 1px #888, 0 22px 0 1px #888 +} +.top-bar-section { + left:0; + position:relative; + width:auto; + -webkit-transition:left 300ms ease-out; + -moz-transition:left 300ms ease-out; + transition:left 300ms ease-out +} +.top-bar-section ul { + width:100%; + height:auto; + display:block; + background:#333; + font-size:16px; + margin:0 +} +.top-bar-section .divider, .top-bar-section[role="separator"] { + border-top:solid 1px #1a1a1a; + clear:both; + height:1px; + width:100% +} +.top-bar-section ul li>a { + display:block; + width:100%; + color:#fff; + padding:12px 0 12px 0; + padding-left:15px; + font-family:"Open Sans", sans-serif; + font-size:0.8125rem; + font-weight:normal; + background:#333 +} +.top-bar-section ul li>a.button { + background:#446cb3; + font-size:0.8125rem; + padding-right:15px; + padding-left:15px +} +.top-bar-section ul li>a.button:hover { + background:#324f83 +} +.top-bar-section ul li>a.button.secondary { + background:#e7e7e7 +} +.top-bar-section ul li>a.button.secondary:hover { + background:#cecece +} +.top-bar-section ul li>a.button.success { + background:#7ad03a +} +.top-bar-section ul li>a.button.success:hover { + background:#60aa28 +} +.top-bar-section ul li>a.button.alert { + background:#dd3d36 +} +.top-bar-section ul li>a.button.alert:hover { + background:#c12721 +} +.top-bar-section ul li:hover>a { + background:#272727; + color:#fff +} +.top-bar-section ul li.active>a { + background:#446cb3; + color:#fff +} +.top-bar-section ul li.active>a:hover { + background:#3a5d9a +} +.top-bar-section .has-form { + padding:15px +} +.top-bar-section .has-dropdown { + position:relative +} +.top-bar-section .has-dropdown>a:after { + content:""; + display:block; + width:0; + height:0; + border:inset 5px; + border-color:transparent transparent transparent rgba(255, 255, 255, 0.4); + border-left-style:solid; + margin-right:15px; + margin-top:-4.5px; + position:absolute; + top:50%; + right:0 +} +.top-bar-section .has-dropdown.moved { + position:static +} +.top-bar-section .has-dropdown.moved>.dropdown { + display:block +} +.top-bar-section .dropdown { + position:absolute; + left:100%; + top:0; + display:none; + z-index:99 +} +.top-bar-section .dropdown li { + width:100%; + height:auto +} +.top-bar-section .dropdown li a { + font-weight:normal; + padding:8px 15px +} +.top-bar-section .dropdown li a.parent-link { + font-weight:normal +} +.top-bar-section .dropdown li.title h5 { + margin-bottom:0 +} +.top-bar-section .dropdown li.title h5 a { + color:#fff; + line-height:22.5px; + display:block +} +.top-bar-section .dropdown li.has-form { + padding:8px 15px +} +.top-bar-section .dropdown li .button { + top:auto +} +.top-bar-section .dropdown label { + padding:8px 15px 2px; + margin-bottom:0; + text-transform:uppercase; + color:#777; + font-weight:bold; + font-size:0.625rem +} +.js-generated { + display:block +} +@media only screen and (min-width: 40.063em) { + .top-bar { + background:#333; + *zoom:1; + overflow:visible + } + .top-bar:before, .top-bar:after { + content:" "; + display:table + } + .top-bar:after { + clear:both + } + .top-bar .toggle-topbar { + display:none + } + .top-bar .title-area { + float:left + } + .top-bar .name h1 a { + width:auto + } + .top-bar input, .top-bar .button { + font-size:0.875rem; + position:relative; + top:7px + } + .top-bar.expanded { + background:#333 + } + .contain-to-grid .top-bar { + max-width:75rem; + margin:0 auto; + margin-bottom:0 + } + .top-bar-section { + -webkit-transition:none 0 0; + -moz-transition:none 0 0; + transition:none 0 0; + left:0 !important + } + .top-bar-section ul { + width:auto; + height:auto !important; + display:inline + } + .top-bar-section ul li { + float:left + } + .top-bar-section ul li .js-generated { + display:none + } + .top-bar-section li.hover>a:not(.button) { + background:#272727; + color:#fff + } + .top-bar-section li:not(.has-form) a:not(.button) { + padding:0 15px; + line-height:45px; + background:#333 + } + .top-bar-section li:not(.has-form) a:not(.button):hover { + background:#272727 + } + .top-bar-section .has-dropdown>a { + padding-right:35px !important + } + .top-bar-section .has-dropdown>a:after { + content:""; + display:block; + width:0; + height:0; + border:inset 5px; + border-color:rgba(255, 255, 255, 0.4) transparent transparent transparent; + border-top-style:solid; + margin-top:-2.5px; + top:22.5px + } + .top-bar-section .has-dropdown.moved { + position:relative + } + .top-bar-section .has-dropdown.moved>.dropdown { + display:none + } + .top-bar-section .has-dropdown.hover>.dropdown, .top-bar-section .has-dropdown.not-click:hover>.dropdown { + display:block + } + .top-bar-section .has-dropdown .dropdown li.has-dropdown>a:after { + border:none; + content:"\00bb"; + top:1rem; + margin-top:-2px; + right:5px; + line-height:1.2 + } + .top-bar-section .dropdown { + left:0; + top:auto; + background:transparent; + min-width:100% + } + .top-bar-section .dropdown li a { + color:#fff; + line-height:1; + white-space:nowrap; + padding:12px 15px; + background:#333 + } + .top-bar-section .dropdown li label { + white-space:nowrap; + background:#333 + } + .top-bar-section .dropdown li .dropdown { + left:100%; + top:0 + } + .top-bar-section>ul>.divider, .top-bar-section>ul>[role="separator"] { + border-bottom:none; + border-top:none; + border-right:solid 1px #4e4e4e; + clear:none; + height:45px; + width:0 + } + .top-bar-section .has-form { + background:#333; + padding:0 15px; + height:45px + } + .top-bar-section .right li .dropdown { + left:auto; + right:0 + } + .top-bar-section .right li .dropdown li .dropdown { + right:100% + } + .top-bar-section .left li .dropdown { + right:auto; + left:0 + } + .top-bar-section .left li .dropdown li .dropdown { + left:100% + } + .no-js .top-bar-section ul li:hover>a { + background:#272727; + color:#fff + } + .no-js .top-bar-section ul li:active>a { + background:#446cb3; + color:#fff + } + .no-js .top-bar-section .has-dropdown:hover>.dropdown { + display:block + } +} +div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, p, blockquote, th, td { + margin:0; + padding:0 +} +a { + color:#446cb3; + text-decoration:none; + line-height:inherit +} +a:hover, a:focus { + color:#3a5d9a +} +a img { + border:none +} +p { + font-family:inherit; + font-weight:normal; + font-size:1rem; + line-height:inherit; + margin-bottom:1.75rem; + text-rendering:optimizeLegibility +} +p.lead { + font-size:1.21875rem; + line-height:1.6 +} +p aside { + font-size:0.875rem; + line-height:1.35; + font-style:italic +} +h1, h2, h3, h4, h5, h6 { + font-family:"Open Sans", sans-serif; + font-weight:400; + font-style:normal; + color:#222; + text-rendering:optimizeLegibility; + margin-top:0.2rem; + margin-bottom:0.5rem; + line-height:1.4 +} +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { + font-size:60%; + color:#6f6f6f; + line-height:0 +} +h1 { + font-size:1.5rem +} +h2 { + font-size:1.125rem +} +h3 { + font-size:1.1875rem +} +h4 { + font-size:0.9375rem +} +h5 { + font-size:1.125rem +} +h6 { + font-size:0.875rem +} +.subheader { + line-height:1.4; + color:#6f6f6f; + font-weight:300; + margin-top:0.2rem; + margin-bottom:0.5rem +} +hr { + border:dotted #ddd; + border-width:1px 0 0; + clear:both; + margin:1.875rem 0 1.8125rem; + height:0 +} +em, i { + font-style:italic; + line-height:inherit +} +strong, b { + font-weight:bold; + line-height:inherit +} +small { + font-size:60%; + line-height:inherit +} +code { + font-family:Consolas, "Liberation Mono", Courier, monospace; + font-weight:bold; + color:#ac231d +} +ul, ol, dl { + font-size:1rem; + line-height:inherit; + margin-bottom:1.75rem; + list-style-position:outside; + font-family:inherit +} +ul { + margin-left:2rem +} +ul.no-bullet { + margin-left:0 +} +ul.no-bullet li ul, ul.no-bullet li ol { + margin-left:1.25rem; + margin-bottom:0; + list-style:none +} +ul li ul, ul li ol { + margin-left:1.25rem; + margin-bottom:0; + font-size:1rem +} +ul.square li ul, ul.circle li ul, ul.disc li ul { + list-style:inherit +} +ul.square { + list-style-type:square; + margin-left:2rem +} +ul.circle { + list-style-type:circle; + margin-left:2rem +} +ul.disc { + list-style-type:disc; + margin-left:2rem +} +ul.no-bullet { + list-style:none +} +ol { + margin-left:2rem +} +ol li ul, ol li ol { + margin-left:1.25rem; + margin-bottom:0 +} +dl dt { + margin-bottom:0.3rem; + font-weight:bold +} +dl dd { + margin-bottom:0.75rem +} +abbr, acronym { + text-transform:uppercase; + font-size:90%; + color:#4c4c4c; + border-bottom:1px dotted #ddd; + cursor:help +} +abbr { + text-transform:none +} +blockquote { + margin:0 0 1.75rem; + padding:0.5625rem 1.25rem 0 1.1875rem; + border-left:1px solid #ddd +} +blockquote cite { + display:block; + font-size:0.8125rem; + color:#555 +} +blockquote cite:before { + content:"\2014 \0020" +} +blockquote cite a, blockquote cite a:visited { + color:#555 +} +blockquote, blockquote p { + line-height:inherit; + color:#6f6f6f +} +.vcard { + display:inline-block; + margin:0 0 1.25rem 0; + border:1px solid #ddd; + padding:0.625rem 0.75rem +} +.vcard li { + margin:0; + display:block +} +.vcard .fn { + font-weight:bold; + font-size:0.9375rem +} +.vevent .summary { + font-weight:bold +} +.vevent abbr { + cursor:default; + text-decoration:none; + font-weight:bold; + border:none; + padding:0 0.0625rem +} +@media only screen and (min-width: 40.063em) { + h1, h2, h3, h4, h5, h6 { + line-height:1.4 + } + h1 { + font-size:2.125rem + } + h2 { + font-size:1.75rem + } + h3 { + font-size:1.5rem + } + h4 { + font-size:1.25rem + } +} +.print-only { + display:none !important +} +@media print { + * { + background:transparent !important; + color:#000 !important; + box-shadow:none !important; + text-shadow:none !important + } + a, a:visited { + text-decoration:underline + } + a[href]:after { + content:" (" attr(href)")" + } + abbr[title]:after { + content:" (" attr(title)")" + } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { + content:"" + } + pre, blockquote { + border:1px solid #999; + page-break-inside:avoid + } + thead { + display:table-header-group + } + tr, img { + page-break-inside:avoid + } + img { + max-width:100% !important + } + @page { + margin:0.5cm + } + p, h2, h3 { + orphans:3; + widows:3 + } + h2, h3 { + page-break-after:avoid + } + .hide-on-print { + display:none !important + } + .print-only { + display:block !important + } + .hide-for-print { + display:none !important + } + .show-for-print { + display:inherit !important + } +} +.off-canvas-wrap { + -webkit-backface-visibility:hidden; + position:relative; + width:100%; + overflow:hidden +} +.inner-wrap { + -webkit-backface-visibility:hidden; + position:relative; + width:100%; + *zoom:1; + -webkit-transition:-webkit-transform 500ms ease; + -moz-transition:-moz-transform 500ms ease; + -ms-transition:-ms-transform 500ms ease; + -o-transition:-o-transform 500ms ease; + transition:transform 500ms ease +} +.inner-wrap:before, .inner-wrap:after { + content:" "; + display:table +} +.inner-wrap:after { + clear:both +} +nav.tab-bar { + -webkit-backface-visibility:hidden; + background:#333; + color:#fff; + height:2.8125rem; + line-height:2.8125rem; + position:relative +} +nav.tab-bar h1, nav.tab-bar h2, nav.tab-bar h3, nav.tab-bar h4, nav.tab-bar h5, nav.tab-bar h6 { + color:#fff; + font-weight:bold; + line-height:2.8125rem; + margin:0 +} +nav.tab-bar h1, nav.tab-bar h2, nav.tab-bar h3, nav.tab-bar h4 { + font-size:1.125rem +} +section.left-small { + width:2.8125rem; + height:2.8125rem; + position:absolute; + top:0; + border-right:solid 1px #1a1a1a; + box-shadow:1px 0 0 #4e4e4e; + left:0 +} +section.right-small { + width:2.8125rem; + height:2.8125rem; + position:absolute; + top:0; + border-left:solid 1px #4e4e4e; + box-shadow:-1px 0 0 #1a1a1a; + right:0 +} +section.tab-bar-section { + padding:0 0.625rem; + position:absolute; + text-align:center; + height:2.8125rem; + top:0 +} +@media only screen and (min-width: 40.063em) { + section.tab-bar-section { + text-align:left + } +} +section.tab-bar-section.left { + left:0; + right:2.8125rem +} +section.tab-bar-section.right { + left:2.8125rem; + right:0 +} +section.tab-bar-section.middle { + left:2.8125rem; + right:2.8125rem +} +a.menu-icon { + text-indent:2.1875rem; + width:2.8125rem; + height:2.8125rem; + display:block; + line-height:2.0625rem; + padding:0; + color:#fff; + position:relative +} +a.menu-icon span { + position:absolute; + display:block; + width:1rem; + height:0; + left:0.8125rem; + top:0.3125rem; + -webkit-box-shadow:1px 10px 1px 1px #fff, 1px 16px 1px 1px #fff, 1px 22px 1px 1px #fff; + box-shadow:0 10px 0 1px #fff, 0 16px 0 1px #fff, 0 22px 0 1px #fff +} +a.menu-icon:hover span { + -webkit-box-shadow:1px 10px 1px 1px #b3b3b3, 1px 16px 1px 1px #b3b3b3, 1px 22px 1px 1px #b3b3b3; + box-shadow:0 10px 0 1px #b3b3b3, 0 16px 0 1px #b3b3b3, 0 22px 0 1px #b3b3b3 +} +.left-off-canvas-menu { + -webkit-backface-visibility:hidden; + width:250px; + top:0; + bottom:0; + height:100%; + position:absolute; + overflow-y:auto; + background:#333; + z-index:1001; + box-sizing:content-box; + -webkit-transform:translate3d(-100%, 0, 0); + -moz-transform:translate3d(-100%, 0, 0); + -ms-transform:translate3d(-100%, 0, 0); + -o-transform:translate3d(-100%, 0, 0); + transform:translate3d(-100%, 0, 0) +} +.left-off-canvas-menu * { + -webkit-backface-visibility:hidden +} +.right-off-canvas-menu { + -webkit-backface-visibility:hidden; + width:250px; + top:0; + bottom:0; + height:100%; + position:absolute; + overflow-y:auto; + background:#333; + z-index:1001; + box-sizing:content-box; + -webkit-transform:translate3d(100%, 0, 0); + -moz-transform:translate3d(100%, 0, 0); + -ms-transform:translate3d(100%, 0, 0); + -o-transform:translate3d(100%, 0, 0); + transform:translate3d(100%, 0, 0); + right:0 +} +ul.off-canvas-list { + list-style-type:none; + padding:0; + margin:0 +} +ul.off-canvas-list li label { + padding:0.3rem 0.9375rem; + color:#999; + text-transform:uppercase; + font-weight:bold; + background:#444; + border-top:1px solid #5e5e5e; + border-bottom:none; + margin:0 +} +ul.off-canvas-list li a { + display:block; + padding:0.66667rem; + color:rgba(255, 255, 255, 0.7); + border-bottom:1px solid #262626 +} +.move-right>.inner-wrap { + -webkit-transform:translate3d(250px, 0, 0); + -moz-transform:translate3d(250px, 0, 0); + -ms-transform:translate3d(250px, 0, 0); + -o-transform:translate3d(250px, 0, 0); + transform:translate3d(250px, 0, 0) +} +.move-right a.exit-off-canvas { + -webkit-backface-visibility:hidden; + transition:background 300ms ease; + cursor:pointer; + box-shadow:-4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + display:block; + position:absolute; + background:rgba(255, 255, 255, 0.2); + top:0; + bottom:0; + left:0; + right:0; + z-index:1002; + -webkit-tap-highlight-color:rgba(0, 0, 0, 0) +} +@media only screen and (min-width: 40.063em) { + .move-right a.exit-off-canvas:hover { + background:rgba(255, 255, 255, 0.05) + } +} +.move-left>.inner-wrap { + -webkit-transform:translate3d(-250px, 0, 0); + -moz-transform:translate3d(-250px, 0, 0); + -ms-transform:translate3d(-250px, 0, 0); + -o-transform:translate3d(-250px, 0, 0); + transform:translate3d(-250px, 0, 0) +} +.move-left a.exit-off-canvas { + -webkit-backface-visibility:hidden; + transition:background 300ms ease; + cursor:pointer; + box-shadow:-4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + display:block; + position:absolute; + background:rgba(255, 255, 255, 0.2); + top:0; + bottom:0; + left:0; + right:0; + z-index:1002; + -webkit-tap-highlight-color:rgba(0, 0, 0, 0) +} +@media only screen and (min-width: 40.063em) { + .move-left a.exit-off-canvas:hover { + background:rgba(255, 255, 255, 0.05) + } +} +.csstransforms.no-csstransforms3d .left-off-canvas-menu { + -webkit-transform:translate(-100%, 0); + -moz-transform:translate(-100%, 0); + -ms-transform:translate(-100%, 0); + -o-transform:translate(-100%, 0); + transform:translate(-100%, 0) +} +.csstransforms.no-csstransforms3d .right-off-canvas-menu { + -webkit-transform:translate(100%, 0); + -moz-transform:translate(100%, 0); + -ms-transform:translate(100%, 0); + -o-transform:translate(100%, 0); + transform:translate(100%, 0) +} +.csstransforms.no-csstransforms3d .move-left>.inner-wrap { + -webkit-transform:translate(-250px, 0); + -moz-transform:translate(-250px, 0); + -ms-transform:translate(-250px, 0); + -o-transform:translate(-250px, 0); + transform:translate(-250px, 0) +} +.csstransforms.no-csstransforms3d .move-right>.inner-wrap { + -webkit-transform:translate(250px, 0); + -moz-transform:translate(250px, 0); + -ms-transform:translate(250px, 0); + -o-transform:translate(250px, 0); + transform:translate(250px, 0) +} +.no-csstransforms .left-off-canvas-menu { + left:-250px +} +.no-csstransforms .right-off-canvas-menu { + right:-250px +} +.no-csstransforms .move-left>.inner-wrap { + right:250px +} +.no-csstransforms .move-right>.inner-wrap { + left:250px +} +.show-for-small, .show-for-small-only, .show-for-medium-down, .show-for-large-down, .hide-for-medium, .hide-for-medium-up, .hide-for-medium-only, .hide-for-large, .hide-for-large-up, .hide-for-large-only, .hide-for-xlarge, .hide-for-xlarge-up, .hide-for-xlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge-only { + display:inherit !important +} +.hide-for-small, .hide-for-small-only, .hide-for-medium-down, .show-for-medium, .show-for-medium-up, .show-for-medium-only, .hide-for-large-down, .show-for-large, .show-for-large-up, .show-for-large-only, .show-for-xlarge, .show-for-xlarge-up, .show-for-xlarge-only, .show-for-xxlarge-up, .show-for-xxlarge-only { + display:none !important +} +table.show-for-small, table.show-for-small-only, table.show-for-medium-down, table.show-for-large-down, table.hide-for-medium, table.hide-for-medium-up, table.hide-for-medium-only, table.hide-for-large, table.hide-for-large-up, table.hide-for-large-only, table.hide-for-xlarge, table.hide-for-xlarge-up, table.hide-for-xlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge-only { + display:table +} +thead.show-for-small, thead.show-for-small-only, thead.show-for-medium-down, thead.show-for-large-down, thead.hide-for-medium, thead.hide-for-medium-up, thead.hide-for-medium-only, thead.hide-for-large, thead.hide-for-large-up, thead.hide-for-large-only, thead.hide-for-xlarge, thead.hide-for-xlarge-up, thead.hide-for-xlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge-only { + display:table-header-group !important +} +tbody.show-for-small, tbody.show-for-small-only, tbody.show-for-medium-down, tbody.show-for-large-down, tbody.hide-for-medium, tbody.hide-for-medium-up, tbody.hide-for-medium-only, tbody.hide-for-large, tbody.hide-for-large-up, tbody.hide-for-large-only, tbody.hide-for-xlarge, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge-only { + display:table-row-group !important +} +tr.show-for-small, tr.show-for-small-only, tr.show-for-medium-down, tr.show-for-large-down, tr.hide-for-medium, tr.hide-for-medium-up, tr.hide-for-medium-only, tr.hide-for-large, tr.hide-for-large-up, tr.hide-for-large-only, tr.hide-for-xlarge, tr.hide-for-xlarge-up, tr.hide-for-xlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge-only { + display:table-row !important +} +td.show-for-small, td.show-for-small-only, td.show-for-medium-down td.show-for-large-down, td.hide-for-medium, td.hide-for-medium-up, td.hide-for-large, td.hide-for-large-up, td.hide-for-xlarge td.hide-for-xlarge-up, td.hide-for-xxlarge-up, th.show-for-small, th.show-for-small-only, th.show-for-medium-down th.show-for-large-down, th.hide-for-medium, th.hide-for-medium-up, th.hide-for-large, th.hide-for-large-up, th.hide-for-xlarge th.hide-for-xlarge-up, th.hide-for-xxlarge-up { + display:table-cell !important +} +@media only screen and (min-width: 40.063em) { + .hide-for-small, .hide-for-small-only, .show-for-medium, .show-for-medium-down, .show-for-medium-up, .show-for-medium-only, .hide-for-large, .hide-for-large-up, .hide-for-large-only, .hide-for-xlarge, .hide-for-xlarge-up, .hide-for-xlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge-only { + display:inherit !important + } + .show-for-small, .show-for-small-only, .hide-for-medium, .hide-for-medium-down, .hide-for-medium-up, .hide-for-medium-only, .hide-for-large-down, .show-for-large, .show-for-large-up, .show-for-large-only, .show-for-xlarge, .show-for-xlarge-up, .show-for-xlarge-only, .show-for-xxlarge-up, .show-for-xxlarge-only { + display:none !important + } + table.hide-for-small, table.hide-for-small-only, table.show-for-medium, table.show-for-medium-down, table.show-for-medium-up, table.show-for-medium-only, table.hide-for-large, table.hide-for-large-up, table.hide-for-large-only, table.hide-for-xlarge, table.hide-for-xlarge-up, table.hide-for-xlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge-only { + display:table + } + thead.hide-for-small, thead.hide-for-small-only, thead.show-for-medium, thead.show-for-medium-down, thead.show-for-medium-up, thead.show-for-medium-only, thead.hide-for-large, thead.hide-for-large-up, thead.hide-for-large-only, thead.hide-for-xlarge, thead.hide-for-xlarge-up, thead.hide-for-xlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge-only { + display:table-header-group !important + } + tbody.hide-for-small, tbody.hide-for-small-only, tbody.show-for-medium, tbody.show-for-medium-down, tbody.show-for-medium-up, tbody.show-for-medium-only, tbody.hide-for-large, tbody.hide-for-large-up, tbody.hide-for-large-only, tbody.hide-for-xlarge, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge-only { + display:table-row-group !important + } + tr.hide-for-small, tr.hide-for-small-only, tr.show-for-medium, tr.show-for-medium-down, tr.show-for-medium-up, tr.show-for-medium-only, tr.hide-for-large, tr.hide-for-large-up, tr.hide-for-large-only, tr.hide-for-xlarge, tr.hide-for-xlarge-up, tr.hide-for-xlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge-only { + display:table-row !important + } + td.hide-for-small, td.hide-for-small-only, td.show-for-medium, td.show-for-medium-down, td.show-for-medium-up, td.show-for-medium-only, td.hide-for-large, td.hide-for-large-up, td.hide-for-large-only, td.hide-for-xlarge, td.hide-for-xlarge-up, td.hide-for-xlarge-only, td.hide-for-xxlarge-up, td.hide-for-xxlarge-only, th.hide-for-small, th.hide-for-small-only, th.show-for-medium, th.show-for-medium-down, th.show-for-medium-up, th.show-for-medium-only, th.hide-for-large, th.hide-for-large-up, th.hide-for-large-only, th.hide-for-xlarge, th.hide-for-xlarge-up, th.hide-for-xlarge-only, th.hide-for-xxlarge-up, th.hide-for-xxlarge-only { + display:table-cell !important + } +} +@media only screen and (min-width: 64.063em) { + .hide-for-small, .hide-for-small-only, .hide-for-medium, .hide-for-medium-down, .hide-for-medium-only, .show-for-medium-up, .show-for-large, .show-for-large-up, .show-for-large-only, .hide-for-xlarge, .hide-for-xlarge-up, .hide-for-xlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge-only { + display:inherit !important + } + .show-for-small-only, .show-for-medium, .show-for-medium-down, .show-for-medium-only, .hide-for-large, .hide-for-large-up, .hide-for-large-only, .show-for-xlarge, .show-for-xlarge-up, .show-for-xlarge-only, .show-for-xxlarge-up, .show-for-xxlarge-only { + display:none !important + } + table.hide-for-small, table.hide-for-small-only, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-medium-only, table.show-for-medium-up, table.show-for-large, table.show-for-large-up, table.show-for-large-only, table.hide-for-xlarge, table.hide-for-xlarge-up, table.hide-for-xlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge-only { + display:table + } + thead.hide-for-small, thead.hide-for-small-only, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.show-for-large, thead.show-for-large-up, thead.show-for-large-only, thead.hide-for-xlarge, thead.hide-for-xlarge-up, thead.hide-for-xlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge-only { + display:table-header-group !important + } + tbody.hide-for-small, tbody.hide-for-small-only, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.show-for-large, tbody.show-for-large-up, tbody.show-for-large-only, tbody.hide-for-xlarge, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge-only { + display:table-row-group !important + } + tr.hide-for-small, tr.hide-for-small-only, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.show-for-large, tr.show-for-large-up, tr.show-for-large-only, tr.hide-for-xlarge, tr.hide-for-xlarge-up, tr.hide-for-xlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge-only { + display:table-row !important + } + td.hide-for-small, td.hide-for-small-only, td.hide-for-medium, td.hide-for-medium-down, td.hide-for-medium-only, td.show-for-medium-up, td.show-for-large, td.show-for-large-up, td.show-for-large-only, td.hide-for-xlarge, td.hide-for-xlarge-up, td.hide-for-xlarge-only, td.hide-for-xxlarge-up, td.hide-for-xxlarge-only, th.hide-for-small, th.hide-for-small-only, th.hide-for-medium, th.hide-for-medium-down, th.hide-for-medium-only, th.show-for-medium-up, th.show-for-large, th.show-for-large-up, th.show-for-large-only, th.hide-for-xlarge, th.hide-for-xlarge-up, th.hide-for-xlarge-only, th.hide-for-xxlarge-up, th.hide-for-xxlarge-only { + display:table-cell !important + } +} +@media only screen and (min-width: 90.063em) { + .hide-for-small, .hide-for-small-only, .hide-for-medium, .hide-for-medium-down, .hide-for-medium-only, .show-for-medium-up, .show-for-large-up, .hide-for-large-only, .show-for-xlarge, .show-for-xlarge-up, .show-for-xlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge-only { + display:inherit !important + } + .show-for-small-only, .show-for-medium, .show-for-medium-down, .show-for-medium-only, .show-for-large, .show-for-large-only, .show-for-large-down, .hide-for-xlarge, .hide-for-xlarge-up, .hide-for-xlarge-only, .show-for-xxlarge-up, .show-for-xxlarge-only { + display:none !important + } + table.hide-for-small, table.hide-for-small-only, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-medium-only, table.show-for-medium-up, table.show-for-large-up, table.hide-for-large-only, table.show-for-xlarge, table.show-for-xlarge-up, table.show-for-xlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge-only { + display:table + } + thead.hide-for-small, thead.hide-for-small-only, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.show-for-large-up, thead.hide-for-large-only, thead.show-for-xlarge, thead.show-for-xlarge-up, thead.show-for-xlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge-only { + display:table-header-group !important + } + tbody.hide-for-small, tbody.hide-for-small-only, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.show-for-large-up, tbody.hide-for-large-only, tbody.show-for-xlarge, tbody.show-for-xlarge-up, tbody.show-for-xlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge-only { + display:table-row-group !important + } + tr.hide-for-small, tr.hide-for-small-only, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.show-for-large-up, tr.hide-for-large-only, tr.show-for-xlarge, tr.show-for-xlarge-up, tr.show-for-xlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge-only { + display:table-row !important + } + td.hide-for-small, td.hide-for-small-only, td.hide-for-medium, td.hide-for-medium-down, td.hide-for-medium-only, td.show-for-medium-up, td.show-for-large-up, td.hide-for-large-only, td.show-for-xlarge, td.show-for-xlarge-up, td.show-for-xlarge-only, td.hide-for-xxlarge-up, td.hide-for-xxlarge-only, th.hide-for-small, th.hide-for-small-only, th.hide-for-medium, th.hide-for-medium-down, th.hide-for-medium-only, th.show-for-medium-up, th.show-for-large-up, th.hide-for-large-only, th.show-for-xlarge, th.show-for-xlarge-up, th.show-for-xlarge-only, th.hide-for-xxlarge-up, th.hide-for-xxlarge-only { + display:table-cell !important + } +} +@media only screen and (min-width: 120.063em) { + .hide-for-small, .hide-for-small-only, .hide-for-medium, .hide-for-medium-down, .hide-for-medium-only, .show-for-medium-up, .show-for-large-up, .hide-for-large-only, .hide-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-up, .show-for-xxlarge-only { + display:inherit !important + } + .show-for-small-only, .show-for-medium, .show-for-medium-down, .show-for-medium-only, .show-for-large, .show-for-large-only, .show-for-large-down, .hide-for-xlarge, .show-for-xlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge-only { + display:none !important + } + table.hide-for-small, table.hide-for-small-only, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-medium-only, table.show-for-medium-up, table.show-for-large-up, table.hide-for-xlarge-only, table.show-for-xlarge-up, table.show-for-xxlarge-up, table.show-for-xxlarge-only { + display:table + } + thead.hide-for-small, thead.hide-for-small-only, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.show-for-large-up, thead.hide-for-xlarge-only, thead.show-for-xlarge-up, thead.show-for-xxlarge-up, thead.show-for-xxlarge-only { + display:table-header-group !important + } + tbody.hide-for-small, tbody.hide-for-small-only, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.show-for-large-up, tbody.hide-for-xlarge-only, tbody.show-for-xlarge-up, tbody.show-for-xxlarge-up, tbody.show-for-xxlarge-only { + display:table-row-group !important + } + tr.hide-for-small, tr.hide-for-small-only, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.show-for-large-up, tr.hide-for-xlarge-only, tr.show-for-xlarge-up, tr.show-for-xxlarge-up, tr.show-for-xxlarge-only { + display:table-row !important + } + td.hide-for-small, td.hide-for-small-only, td.hide-for-medium, td.hide-for-medium-down, td.hide-for-medium-only, td.show-for-medium-up, td.show-for-large-up, td.hide-for-xlarge-only, td.show-for-xlarge-up, td.show-for-xxlarge-up, td.show-for-xxlarge-only, th.hide-for-small, th.hide-for-small-only, th.hide-for-medium, th.hide-for-medium-down, th.hide-for-medium-only, th.show-for-medium-up, th.show-for-large-up, th.hide-for-xlarge-only, th.show-for-xlarge-up, th.show-for-xxlarge-up, th.show-for-xxlarge-only { + display:table-cell !important + } +} +.show-for-landscape, .hide-for-portrait { + display:inherit !important +} +.hide-for-landscape, .show-for-portrait { + display:none !important +} +table.hide-for-landscape, table.show-for-portrait { + display:table +} +thead.hide-for-landscape, thead.show-for-portrait { + display:table-header-group !important +} +tbody.hide-for-landscape, tbody.show-for-portrait { + display:table-row-group !important +} +tr.hide-for-landscape, tr.show-for-portrait { + display:table-row !important +} +td.hide-for-landscape, td.show-for-portrait, th.hide-for-landscape, th.show-for-portrait { + display:table-cell !important +} +@media only screen and (orientation: landscape) { + .show-for-landscape, .hide-for-portrait { + display:inherit !important + } + .hide-for-landscape, .show-for-portrait { + display:none !important + } + table.show-for-landscape, table.hide-for-portrait { + display:table + } + thead.show-for-landscape, thead.hide-for-portrait { + display:table-header-group !important + } + tbody.show-for-landscape, tbody.hide-for-portrait { + display:table-row-group !important + } + tr.show-for-landscape, tr.hide-for-portrait { + display:table-row !important + } + td.show-for-landscape, td.hide-for-portrait, th.show-for-landscape, th.hide-for-portrait { + display:table-cell !important + } +} +@media only screen and (orientation: portrait) { + .show-for-portrait, .hide-for-landscape { + display:inherit !important + } + .hide-for-portrait, .show-for-landscape { + display:none !important + } + table.show-for-portrait, table.hide-for-landscape { + display:table + } + thead.show-for-portrait, thead.hide-for-landscape { + display:table-header-group !important + } + tbody.show-for-portrait, tbody.hide-for-landscape { + display:table-row-group !important + } + tr.show-for-portrait, tr.hide-for-landscape { + display:table-row !important + } + td.show-for-portrait, td.hide-for-landscape, th.show-for-portrait, th.hide-for-landscape { + display:table-cell !important + } +} +.show-for-touch { + display:none !important +} +.hide-for-touch { + display:inherit !important +} +.touch .show-for-touch { + display:inherit !important +} +.touch .hide-for-touch { + display:none !important +} +table.hide-for-touch { + display:table +} +.touch table.show-for-touch { + display:table +} +thead.hide-for-touch { + display:table-header-group !important +} +.touch thead.show-for-touch { + display:table-header-group !important +} +tbody.hide-for-touch { + display:table-row-group !important +} +.touch tbody.show-for-touch { + display:table-row-group !important +} +tr.hide-for-touch { + display:table-row !important +} +.touch tr.show-for-touch { + display:table-row !important +} +td.hide-for-touch { + display:table-cell !important +} +.touch td.show-for-touch { + display:table-cell !important +} +th.hide-for-touch { + display:table-cell !important +} +.touch th.show-for-touch { + display:table-cell !important +} +.alignleft { + float:left +} +.alignright { + float:right +} +.aligncenter { + display:block; + margin-left:auto; + margin-right:auto; + text-align:center +} +.clear-both { + clear:both +} +.clear-none { + clear:none +} +.clear-left { + clear:left +} +.clear-right { + clear:right +} +.notice, .info, .success, .warning, .error, .alert, .clean, [class^="rtp-message-"], [class*=" rtp-message-"] { + padding:0.625rem 0.9375rem; + text-shadow:1px 0 0 #fff +} +.notice p:last-child, .info p:last-child, .success p:last-child, .warning p:last-child, .error p:last-child, .alert p:last-child, .clean p:last-child, [class^="rtp-message-"] p:last-child, [class*=" rtp-message-"] p:last-child { + margin:0 +} +.rtp-message-notice, .notice, .clean { + background-color:#eee; + border-left:4px solid #bbb +} +.rtp-message-info, .info { + background-color:#daeff7; + border-left:4px solid #2ea2cc +} +.rtp-message-success, .success { + background-color:#e4f5d6; + border-left:4px solid #7ad03a +} +.rtp-message-warning, .warning { + background-color:#fff4d6; + border-left:4px solid #ffba00 +} +.rtp-message-error, .error, .alert { + background-color:#fbe5e4; + border-left:4px solid #dd3d36 +} +.rtp-inline-block { + display:inline-block +} +.rtp-text-left { + text-align:left +} +.rtp-text-right { + text-align:right +} +.rtp-text-center { + text-align:center +} +.rtp-border-0 { + border:0 !important +} +select { + padding:0.375rem 0.625rem 0.375rem 0.125rem; + line-height:1; + height:auto +} +body { + line-height:1.75rem +} +.rtp-font-size-10 { + font-size:0.625rem +} +.rtp-font-size-11 { + font-size:0.6875rem +} +.rtp-font-size-12 { + font-size:0.75rem +} +.rtp-font-size-13 { + font-size:0.8125rem +} +.rtp-font-size-14 { + font-size:0.875rem +} +.rtp-font-size-15 { + font-size:0.9375rem +} +.rtp-font-size-16 { + font-size:1rem +} +.rtp-font-size-18 { + font-size:1.125rem +} +.rtp-font-size-20 { + font-size:1.25rem +} +.rtp-font-size-22 { + font-size:1.375rem +} +.rtp-font-size-24 { + font-size:1.5rem +} +.rtp-font-size-28 { + font-size:1.75rem +} +h4, h5, h6 { + font-weight:700 +} +.rtp-reset-line-height { + line-height:1 +} +.keystroke, kbd { + -webkit-box-shadow:0 1px rgba(203, 203, 203, 0.75), inset 0 -1px #fff; + -moz-box-shadow:0 1px rgba(203, 203, 203, 0.75), inset 0 -1px #fff; + box-shadow:0 1px rgba(203, 203, 203, 0.75), inset 0 -1px #fff +} +pre { + background:#f2f2f2; + padding:0.625rem; + -webkit-border-radius:5px; + border-radius:5px; + margin-bottom:1.75rem; + white-space:pre; + overflow-x:auto; + word-wrap:normal +} +pre code { + background:#f2f2f2 !important; + overflow:auto +} +body#tinymce { + background:#fff; + margin:0 10px; + padding:10px 5px +} +.wp-caption-dt { + border:0; + padding:0 +} +input[type=submit] { + -webkit-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + -moz-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + padding-top:1rem; + padding-right:2rem; + padding-bottom:1.0625rem; + padding-left:2rem; + font-size:1rem +} +input[type=submit] { + background-color:#446cb3; + border-radius:5px; + border:0; + color:#fff +} +input[type=submit]:hover, input[type=submit]:focus { + background-color:#3e63a4 +} +input[type=submit]:active { + background-color:#4b74bb +} +.rtp-button-success { + background-color:#7ad03a; + border-radius:5px; + border:0; + color:#fff +} +.rtp-button-success:hover, .rtp-button-success:focus { + background-color:#70c62f +} +.rtp-button-success:active { + background-color:#82d346 +} +.rtp-button-alert { + background-color:#dd3d36; + border-radius:5px; + border:0; + color:#fff +} +.rtp-button-alert:hover, .rtp-button-alert:focus { + background-color:#c02720 +} +.rtp-button-alert:active { + background-color:#e04e47 +} +.rtp-button-width-large { + min-width:13.75rem +} +.rtp-button-width-medium { + min-width:11.25rem +} +.rtp-button-width-small { + min-width:8.75rem +} +input[type="text"]+input[type="button"], input[type="text"]+input[type="submit"], input[type="text"]+button, input[type="password"]+input[type="button"], input[type="password"]+input[type="submit"], input[type="password"]+button, input[type="search"]+input[type="button"], input[type="search"]+input[type="submit"], input[type="search"]+button, input[type="email"]+input[type="button"], input[type="email"]+input[type="submit"], input[type="email"]+button, input[type="tel"]+input[type="button"], input[type="tel"]+input[type="submit"], input[type="tel"]+button, input[type="url"]+input[type="button"], input[type="url"]+input[type="submit"], input[type="url"]+button, input[type^="date"]+input[type="button"], input[type^="date"]+input[type="submit"], input[type^="date"]+button, input[type="month"]+input[type="button"], input[type="month"]+input[type="submit"], input[type="month"]+button, input[type="week"]+input[type="button"], input[type="week"]+input[type="submit"], input[type="week"]+button, input[type="time"]+input[type="button"], input[type="time"]+input[type="submit"], input[type="time"]+button, textarea+input[type="button"], textarea+input[type="submit"], textarea+button { + border-radius:0 5px 5px 0 !important +} +a { + color:#446cb3; + text-decoration:none +} +a:hover, a:focus { + color:#eb5b4c; + text-decoration:underline +} +h1 a, h2 a { + color:#333 +} +h1 a:hover, h1 a:focus, h2 a:hover, h2 a:focus { + color:#eb5b4c; + text-decoration:none +} +.rtp-main-wrapper { + overflow-x:hidden +} +.rtp-section-container { + background:#fff +} +.rtp-logo-container { + margin-bottom:1.875rem +} +.rtp-site-logo { + float:left; + font-size:2.5rem; + margin:0 1.875rem 0 0; + overflow:hidden +} +.rtp-site-logo a { + float:left +} +.rtp-site-logo img { + float:left; + margin:0 +} +.tagline { + color:#999; + float:left; + margin:1.25rem 0 0 +} +.rtp-header-wrapper-image .rtp-nav-wrapper { + margin-bottom:0 +} +.rtp-header-image { + margin-bottom:1.875rem +} +.rtp-nav-wrapper { + background-color:#444; + clear:both; + min-height:45px; + margin-bottom:1.875rem; + position:relative +} +.rtp-nav-wrapper:before, .rtp-nav-wrapper:after { + content:' '; + position:absolute; + background:#444; + top:0; + bottom:0; + width:624.9375rem +} +.rtp-nav-wrapper:before { + right:100% +} +.rtp-nav-wrapper:after { + left:100% +} +.rtp-nav-container { + margin:0; + padding:0 +} +.rtp-nav-container li { + float:left; + list-style:none; + position:relative +} +.rtp-nav-container li:hover>a { + background-color:#fff; + color:#446cb3 +} +.rtp-nav-container li:hover>ul { + display:block +} +.rtp-nav-container>li:first-child { + border-left:1px solid rgba(255, 255, 255, 0.11); + box-shadow:-1px 0 0 rgba(0, 0, 0, 0.1) +} +.rtp-nav-container>li>a { + border-right:1px solid rgba(0, 0, 0, 0.2); + box-shadow:1px 0 0 rgba(255, 255, 255, 0.15) +} +.rtp-nav-container a { + color:#fff; + font-size:0.875rem; + display:block; + height:auto; + line-height:1.5; + padding:0.75rem 1.875rem; + text-decoration:none; + word-wrap:break-word +} +.rtp-nav-container a:hover { + background-color:#fff; + color:#446cb3 +} +.rtp-nav-container ul { + background-color:#fff; + box-shadow:0 1px 1px rgba(0, 0, 0, 0.28); + display:none; + left:0; + margin:0; + padding:0; + position:absolute; + top:45px; + width:240px; + z-index:9 +} +.rtp-nav-container ul a { + color:#7d7d7d +} +.rtp-nav-container ul li { + border-bottom:1px solid #EEEEEE; + min-width:240px; + width:100% +} +.rtp-nav-container ul li:hover>a { + background-color:#fff; + color:#446cb3 +} +.rtp-nav-container ul ul { + left:100%; + top:0 +} +.rtp-nav-container .current-menu-item>a, .rtp-nav-container .current_page_ancestor>a, .rtp-nav-container .current_page_item>a { + background-color:#fff; + color:#446cb3 +} +.sidr { + display:none; + position:absolute; + position:fixed; + top:0; + height:100%; + z-index:999999; + width:260px; + overflow-x:hidden; + overflow-y:auto; + font-family:"Open Sans", sans-serif; + font-size:0.9375rem; + background:#333; + color:#fff; + -webkit-box-shadow:inset 0 0 5px 5px #222; + -moz-box-shadow:inset 0 0 5px 5px #222; + box-shadow:inset 0 0 5px 5px #222 +} +.sidr.right { + left:auto; + right:-260px +} +.sidr.left { + left:-260px; + right:auto +} +.sidr ul { + display:block; + margin:0 0 15px; + padding:0; + border-top:1px solid #1a1a1a; + border-bottom:1px solid #4d4d4d +} +.sidr ul li { + display:block; + margin:0; + line-height:48px; + border-top:1px solid #4d4d4d; + border-bottom:1px solid #1a1a1a +} +.sidr ul li:hover, .sidr ul li.active, .sidr ul li.sidr-class-current-menu-item { + border-top:none; + line-height:49px +} +.sidr ul li:hover>a, .sidr ul li:hover>span, .sidr ul li.active>a, .sidr ul li.active>span, .sidr ul li.sidr-class-current-menu-item>a, .sidr ul li.sidr-class-current-menu-item>span { + -webkit-box-shadow:inset 0 0 15px 3px #222; + -moz-box-shadow:inset 0 0 15px 3px #222; + box-shadow:inset 0 0 15px 3px #222 +} +.sidr ul li a, .sidr ul li span { + padding:0 15px; + display:block; + text-decoration:none; + color:#fff +} +.sidr ul li ul { + border-bottom:none; + margin:0 +} +.sidr ul li ul li { + line-height:40px; + font-size:-1.0625rem +} +.sidr ul li ul li:last-child { + border-bottom:none +} +.sidr ul li ul li:hover, .sidr ul li ul li.active, .sidr ul li ul li.sidr-class-current-menu-item { + border-top:none; + line-height:41px +} +.sidr ul li ul li:hover>a, .sidr ul li ul li:hover>span, .sidr ul li ul li.active>a, .sidr ul li ul li.active>span, .sidr ul li ul li.sidr-class-current-menu-item>a, .sidr ul li ul li.sidr-class-current-menu-item>span { + -webkit-box-shadow:inset 0 0 15px 3px #222; + -moz-box-shadow:inset 0 0 15px 3px #222; + box-shadow:inset 0 0 15px 3px #222 +} +.sidr ul li ul li a, .sidr ul li ul li span { + color:rgba(255, 255, 255, 0.8); + padding-left:30px +} +.sidr-inner { + padding:0 0 15px +} +a.rtp-menu-icon { + color:#fff; + font-size:1.3125rem; + display:none; + float:left; + margin-top:0.5rem +} +.hentry { + border-bottom:1px dotted #ddd; + padding-bottom:1.875rem; + padding-top:1.75rem; + position:relative +} +.hentry:first-child { + padding-top:0 +} +.hentry.sticky { + border-style:solid; + border-width:1px; + border-color:#d9d9d9; + padding:1.25rem; + background:#f2f2f2 +} +.rtp-singular .hentry, .attachment .hentry, .rtp-full-width .hentry { + padding-bottom:0.3125rem +} +.rtp-readmore { + font-size:0.875rem +} +.post-header { + margin-bottom:1rem +} +.post-title { + margin:0 0 0.3125rem +} +.rtp-main-title { + border-bottom:1px dotted #ddd; + padding-bottom:0.625rem +} +.blog .post-content p, .archive .post-content p, .search-results .post-content p { + margin-bottom:1rem +} +.rtp-not-found { + margin:1.5em 0 +} +.post-meta { + color:#999; + font-size:0.8125rem +} +.post-meta a { + color:#999; + text-decoration:none +} +.post-meta a:hover, .post-meta a:focus { + color:#eb5b4c +} +.post-meta>.rtp-meta-separator:first-child { + display:none +} +.post-meta-bottom { + padding:1em 0 0 +} +.single .post-meta-bottom { + margin:1.5em 0 0; + padding:0 +} +.rtp-post-comment-count { + margin-left:0.5rem +} +.rtp-post-comment-count a:before { + content:'\e80a'; + font-family:"rtpanel-fontello"; + font-size:0.875rem; + margin:0 0.3125rem +} +.rtp-edit-link a { + background-color:#daeff7; + border:1px solid #b8e1ef; + -webkit-border-radius:3px; + -moz-border-radius:3px; + -ms-border-radius:3px; + -o-border-radius:3px; + border-radius:3px; + color:#2ea2cc; + font-size:0.75rem; + display:inline-block; + line-height:1; + margin-right:0.375rem; + padding:0.25rem 0.5rem +} +.rtp-meta-separator { + padding:0 0.125rem +} +.post-tags { + font-size:inherit; + margin-bottom:0 +} +.rtp-sidebar-inner-wrapper { + padding-left:2.5rem +} +.widget { + margin-bottom:1.875rem; + word-wrap:break-word +} +.widget .current-menu-item>a, .widget .current_page_item>a { + color:#eb5b4c +} +.widget>ul, .widget>ol { + margin-left:1.25em +} +.widget .email-subscription-container input[type="submit"] { + -webkit-border-radius:0 5px 5px 0; + border-radius:0 5px 5px 0 +} +.widget_calendar table { + font-size:0.875rem; + margin:0 0 0.25rem; + width:100% +} +.widget_calendar th, .widget_calendar td { + border:1px solid #ddd; + color:#666; + text-align:center +} +.widget_calendar caption { + background:#ddd; + font-weight:bold; + line-height:2.5em +} +#today { + background-color:#f0f0f0; + font-weight:700 +} +tfoot #prev { + border-right:0; + text-align:left +} +tfoot #next { + border-left:0; + text-align:right +} +#prev+.pad { + border-left:0; + border-right:0 +} +.tagcloud a { + line-height:1 +} +.rtp-comment-count { + border-bottom:1px dotted #ddd; + color:#666; + padding:0.625rem 0 +} +.rtp-comment-count:empty { + display:none +} +.rtp-comment-count-container { + float:left; + line-height:1.2; + margin:0 +} +.rtp-manage-comments { + float:left; + line-height:1; + margin:0.5rem 0 0 0.625rem +} +.rtp-thoughts { + float:right; + font-size:0.875rem; + line-height:1.85 +} +.comments-container:empty { + border-top:0 +} +.comment-form { + overflow:hidden +} +.commentlist { + clear:both; + margin:0 +} +.commentlist>li:first-child { + border-top:0 +} +.commentlist .children { + margin-left:5.25rem +} +.commentlist .vcard { + border:0; + float:left; + margin:0.5rem 0.9375rem 0.1875rem 0.5rem; + padding:0 +} +.commentlist .vcard img { + -webkit-border-radius:1000px; + -moz-border-radius:1000px; + -ms-border-radius:1000px; + -o-border-radius:1000px; + border-radius:1000px; + border:2px solid #fff +} +.commentlist .fn { + font-size:1.5rem; + font-style:normal; + text-transform:capitalize +} +.commentlist .trackback, .commentlist .pingback { + overflow:hidden; + padding:0 0 0.9375rem +} +.commentlist .trackback em, .commentlist .pingback em { + color:#666; + font-size:0.75rem +} +.commentlist pre { + background-color:#EFEFEF; + padding:0.625rem +} +.comment-text { + clear:both; + padding:0.9375rem 0.9375rem 0; + overflow:hidden; + border:1px solid #ddd +} +.comment-text p { + margin:0 0 0.9375rem 0 +} +.comment-text>ol, .comment-text>ul { + margin-bottom:1.625rem +} +.comment-body { + clear:both; + margin:0.625rem 0; + position:relative +} +.comment { + list-style:none +} +code .comment { + border-top:0 +} +.comment li { + margin-bottom:0 +} +.comment-author { + padding:1.0625rem 0.3125rem 0.3125rem 0.3125rem +} +.no-gravatar { + padding:0.3125rem +} +.comment-meta { + font-size:0.875rem; + margin:0.125rem 0 0 0.9375rem +} +.comment-meta .comment-edit-link { + margin:0 0 0 0.3125rem +} +.comment-meta .comment-edit-link:hover { + text-decoration:none +} +.rtp-reply { + clear:both; + float:right; + margin:0.3125rem 0.3125rem 0 0 +} +.rtp-reply a { + display:block; + font-size:0.875rem +} +.comment-author-admin>.comment-body .comment-author, .bypostauthor>.comment-body .comment-author, .byuser>.comment-body .comment-author { + background-color:aliceblue +} +.comment-respond { + clear:both; + font-size:0.8125rem +} +.comments-container>.comment-respond { + margin-bottom:1.25rem +} +.commentlist+.comment-respond { + margin:0 0 1.5em +} +.comment-body+.comment-respond { + margin-top:0; + padding:0 0 0.8em +} +.comment .comment-respond .form-submit { + margin-bottom:0 +} +.comment-respond p { + margin:0 +} +.comment-respond .comment-notes, .comment-respond .logged-in-as { + color:#666; + margin:0.625rem 0 +} +.comment-respond .subscribe-to-comments #subscribe { + margin-bottom:0.625rem +} +.comment-respond .subscribe-to-comments label { + margin-left:0.3125rem +} +.comment-respond label { + display:inline-block; + line-height:2.692em; + margin:0 0 0.625rem 1.25rem +} +.comment-respond .required { + color:#dd3d36 +} +.comment-respond .comment-form-comment, .comment-respond .form-submit { + clear:both; + margin-bottom:0.1875rem +} +.comment-respond .form-submit { + float:left; + margin-right:1.25rem +} +.comment-respond .rtp-comment-above { + margin-bottom:0 +} +.comment-respond input[type=text], .comment-respond input[type=url], .comment-respond input[type=email] { + width:50% +} +.comment-respond textarea { + height:6.875rem; + width:98.33% +} +.comment-respond .form-allowed-tags { + background:#fafafa; + border:1px solid #ddd; + color:#666; + font-size:0.8125rem; + margin:0 0 0.875rem; + padding:0.25rem; + width:96% +} +.comment-respond .compact-comment-form { + float:left; + width:33% +} +.comment-respond .compact-comment-form label { + margin-left:0.125rem +} +.comment-respond .compact-comment-form input { + width:98% +} +.comment-respond label[for=subscribe-reloaded] { + float:left; + margin:0.625rem 0 2.5rem; + width:80% +} +.comment-respond label[for=subscribe-reloaded] span { + display:block; + line-height:1.6 +} +.comment-respond select[name=subscribe-reloaded] { + float:left; + margin-bottom:0; + margin-right:1.25rem; + width:50% +} +.comment-reply-title { + border-bottom:1px dotted #ddd; + padding-bottom:0.5rem +} +.comment-reply-title .comment-title { + font-size:1.25rem; + font-weight:700; + line-height:1 +} +.comment-reply-title small { + font-size:0.875rem; + position:relative +} +.comment-reply-title a { + color:#dd3d36; + line-height:1 +} +.rtp-comment-await { + color:#999; + font-size:0.75rem +} +.rtp-comments-header { + margin:1.875rem 0 0 +} +.commentlist+.rtp-comments-header { + margin:0.625rem 0 0 +} +.rtp-comments-header+#trackbacks { + margin:0.5rem 0 2.5rem 2.5rem +} +.rtp-comments-header+#trackbacks li { + margin-bottom:0.625rem +} +#rtAccountDiv ul { + margin:1.25rem 0 +} +.footerbar-widget:nth-child(3n+1) { + clear:left +} +#footer { + color:#666; + text-align:center +} +#footer a { + border-bottom:1px solid #ddd +} +#footer a:hover { + text-decoration:none +} +@media only screen and (max-width: 40em) { + h1 { + font-size:1.625rem + } + h2 { + font-size:1.375rem + } + h3 { + font-size:1.25rem + } + h4 { + font-size:1.125rem + } + h5 { + font-size:1rem + } + h6 { + font-size:0.875rem + } + .rtp-post-comment-count { + clear:both; + display:block; + margin-left:-0.125rem + } +} +@media only screen and (max-width: 64em) { + .rtp-mobile-nav .rtp-nav-container { + display:none + } + a.rtp-menu-icon { + display:block + } + html #wpadminbar { + position:fixed + } + .rtp-pagenavi { + margin-bottom:1.75rem + } + .rtp-sidebar-inner-wrapper { + border-top:1px dotted #ddd; + padding-left:0; + padding-top:1.75rem + } +} +@media only screen and (min-width: 64.063em) { + body { + left:auto !important; + position:relative !important; + right:auto !important; + width:auto !important + } + .sidr { + display:none !important; + right:0 !important + } +} +img.none, img.alignnone { + margin-left:0; + margin-right:1.25rem +} +img.left, img.alignleft { + margin-left:0; + margin-right:1.25rem +} +img.right, img.alignright { + margin-left:1.25rem; + margin-right:0 +} +.ie8 img { + width:auto +} +.attachment .attachment-full { + margin:0 +} +.post-content .attachment img { + margin:0 auto +} +.rtp-sibling-attachments { + padding:0; + margin:0 0 1em +} +.rtp-sibling-attachments li { + line-height:1em; + list-style:none; + margin-top:0.625rem; + margin-bottom:0.625rem; + text-align:center +} +.rtp-sibling-attachments img { + background-color:#f5f5f5; + border:1px solid #ddd; + margin:0; + padding:0.3125rem +} +.rtp-sibling-attachments img:hover { + border-color:#919191 +} +.rtp-thumbnail-container img { + margin:0 +} +.rtp-thumbnail-container a { + margin-top:0.3125rem; + margin-bottom:0.3125rem +} +.rtp-thumbnail-container a.none, .rtp-thumbnail-container a.alignnone { + display:inline-block; + margin-bottom:0.875rem; + margin-left:0; + margin-right:1.25rem +} +.rtp-thumbnail-container a.left, .rtp-thumbnail-container a.alignleft { + margin-left:0; + margin-right:1.25rem +} +.rtp-thumbnail-container a.center, .rtp-thumbnail-container a.aligncenter { + display:inline-block; + margin-bottom:0.875rem +} +.rtp-thumbnail-container a.right, .rtp-thumbnail-container a.alignright { + margin-left:1.25rem; + margin-right:0 +} +.rtp-thumbnail-shadow img { + background:#fff; + border:1px solid #ddd; + -webkit-box-shadow:0 0 4px #ccc; + -moz-box-shadow:0 0 4px #ccc; + box-shadow:0 0 4px #ccc; + padding:0.25rem +} +.wp-caption { + background-color:#f5f5f5; + margin:0.375rem 0.3125rem 0.9375rem; + max-width:100%; + overflow:hidden; + padding:0.3125rem 0.3125rem 0; + text-align:center +} +.wp-caption.alignnone, .wp-caption.alignleft { + margin-left:0; + margin-right:0.9375rem +} +.wp-caption.aligncenter { + margin-left:auto; + margin-right:auto +} +.wp-caption.alignright { + margin-left:0.9375rem; + margin-right:0 +} +.wp-caption a { + border:0; + text-decoration:none +} +.wp-caption img { + margin:0 +} +.wp-caption-text { + color:#666; + line-height:1.286em; + margin:0 0.3125rem 0.5rem +} +.rtp-image-box .wp-caption+p { + margin:1.25rem 0 0.625rem +} +.gallery[data-clearing] li { + margin-right:0 +} +.gallery-caption { + color:#666; + margin:0 0 0.625rem; + padding:0; + text-align:center +} +.rtp-navigation, .rtp-comments-pagination { + border-bottom:1px dotted #ddd; + clear:both; + margin-bottom:1.75rem; + padding-bottom:1.25rem; + padding-top:1.25rem +} +.rtp-navigation a, .rtp-comments-pagination a { + text-decoration:none +} +.rtp-navigation a:hover, .rtp-comments-pagination a:hover { + text-decoration:underline +} +.rtp-navigation .alignleft { + text-align:left +} +.rtp-navigation .alignright { + text-align:right +} +.single-attachment .rtp-navigation, .rtp-image-attachment .rtp-navigation { + margin:0.625rem 0 0; + padding-bottom:0 +} +.rtp-search-form-wrapper .rtp-search-input { + float:left; + height:37px; + width:75% +} +.breadcrumbs { + border-bottom:1px solid #ddd; + color:#666; + font-size:0.8125rem +} +.breadcrumbs>* { + float:none +} +.breadcrumbs>*:before { + content:' '; + display:none +} +.breadcrumbs+.sticky, .breadcrumbs+.rtp-main-title { + margin-top:1.25rem +} +body.woocommerce .woocommerce-breadcrumb { + display:block; + padding:0.5625rem 0.875rem 0.5625rem; + overflow:hidden; + margin-left:0; + list-style:none; + border-style:solid; + border-width:1px; + background-color:#f4f4f4; + border-color:#dcdcdc; + -webkit-border-radius:5px; + border-radius:5px; + border-bottom:1px solid #ddd; + color:#666; + font-size:0.8125rem; + text-transform:uppercase; + font-size:0.6875rem; + color:#446cb3 +} +body.woocommerce .woocommerce-breadcrumb>* { + margin:0; + float:left; + font-size:0.6875rem; + text-transform:uppercase; + float:none +} +body.woocommerce .woocommerce-breadcrumb>*:hover a, body.woocommerce .woocommerce-breadcrumb>*:focus a { + text-decoration:underline +} +body.woocommerce .woocommerce-breadcrumb>* a, body.woocommerce .woocommerce-breadcrumb>* span { + text-transform:uppercase; + color:#446cb3 +} +body.woocommerce .woocommerce-breadcrumb>*.current { + cursor:default; + color:#333 +} +body.woocommerce .woocommerce-breadcrumb>*.current a { + cursor:default; + color:#333 +} +body.woocommerce .woocommerce-breadcrumb>*.current:hover, body.woocommerce .woocommerce-breadcrumb>*.current:hover a, body.woocommerce .woocommerce-breadcrumb>*.current:focus, body.woocommerce .woocommerce-breadcrumb>*.current:focus a { + text-decoration:none +} +body.woocommerce .woocommerce-breadcrumb>*.unavailable { + color:#999 +} +body.woocommerce .woocommerce-breadcrumb>*.unavailable a { + color:#999 +} +body.woocommerce .woocommerce-breadcrumb>*.unavailable:hover, body.woocommerce .woocommerce-breadcrumb>*.unavailable:hover a, body.woocommerce .woocommerce-breadcrumb>*.unavailable:focus, body.woocommerce .woocommerce-breadcrumb>*.unavailable a:focus { + text-decoration:none; + color:#999; + cursor:default +} +body.woocommerce .woocommerce-breadcrumb>*:before { + content:"/"; + color:#aaa; + margin:0 0.75rem; + position:relative; + top:1px +} +body.woocommerce .woocommerce-breadcrumb>*:first-child:before { + content:" "; + margin:0 +} +body.woocommerce .woocommerce-breadcrumb>*:before { + content:' '; + display:none +} +body.woocommerce .woocommerce-breadcrumb>a { + color:#446cb3 +} +body.woocommerce .woocommerce-breadcrumb>a:hover { + color:#eb5b4c +} +.rtp-pagenavi ul, body.woocommerce #content nav.woocommerce-pagination ul, body.woocommerce-page #content nav.woocommerce-pagination ul { + margin:1.75rem 0 0; + overflow:hidden; + text-align:center +} +.rtp-pagenavi ul li, body.woocommerce #content nav.woocommerce-pagination ul li, body.woocommerce-page #content nav.woocommerce-pagination ul li { + float:none; + display:inline-block; + color:#222; + font-size:0.875rem; + margin-left:0.3125rem +} +.rtp-pagenavi ul li a, .rtp-pagenavi ul li span, body.woocommerce #content nav.woocommerce-pagination ul li a, body.woocommerce #content nav.woocommerce-pagination ul li span, body.woocommerce-page #content nav.woocommerce-pagination ul li a, body.woocommerce-page #content nav.woocommerce-pagination ul li span { + display:block; + padding:0.0625rem 0.625rem 0.0625rem; + color:#999; + -webkit-border-radius:5px; + border-radius:5px +} +.rtp-pagenavi ul li:hover a, .rtp-pagenavi ul li a:focus, body.woocommerce #content nav.woocommerce-pagination ul li:hover a, body.woocommerce #content nav.woocommerce-pagination ul li a:focus, body.woocommerce-page #content nav.woocommerce-pagination ul li:hover a, body.woocommerce-page #content nav.woocommerce-pagination ul li a:focus { + background:#e6e6e6 +} +.rtp-pagenavi ul li .current, .rtp-pagenavi ul li span.current, body.woocommerce #content nav.woocommerce-pagination ul li .current, body.woocommerce #content nav.woocommerce-pagination ul li span.current, body.woocommerce-page #content nav.woocommerce-pagination ul li .current, body.woocommerce-page #content nav.woocommerce-pagination ul li span.current { + background:#446cb3; + color:#fff; + font-weight:bold; + cursor:default +} +.rtp-pagenavi ul li .current:hover, .rtp-pagenavi ul li .current:focus, .rtp-pagenavi ul li span.current:hover, .rtp-pagenavi ul li span.current:focus, body.woocommerce #content nav.woocommerce-pagination ul li .current:hover, body.woocommerce #content nav.woocommerce-pagination ul li .current:focus, body.woocommerce #content nav.woocommerce-pagination ul li span.current:hover, body.woocommerce #content nav.woocommerce-pagination ul li span.current:focus, body.woocommerce-page #content nav.woocommerce-pagination ul li .current:hover, body.woocommerce-page #content nav.woocommerce-pagination ul li .current:focus, body.woocommerce-page #content nav.woocommerce-pagination ul li span.current:hover, body.woocommerce-page #content nav.woocommerce-pagination ul li span.current:focus { + background:#446cb3 +} +.bbpress .hentry { + border:0 +} +.bbpress .bbp-forum-freshness>a { + font-size:0.8125rem +} +.bbpress .bbp-forum-title { + font-size:1.125rem +} +.bbpress #bbpress-forums { + font-size:100% +} +.bbpress #bbpress-forums ul.bbp-lead-topic, .bbpress #bbpress-forums ul.bbp-topics, .bbpress #bbpress-forums ul.bbp-forums, .bbpress #bbpress-forums ul.bbp-replies { + font-size:100% +} +.bbpress #bbpress-forums p.bbp-topic-meta img.avatar, .bbpress #bbpress-forums ul.bbp-reply-revision-log img.avatar, .bbpress #bbpress-forums ul.bbp-topic-revision-log img.avatar, .bbpress #bbpress-forums div.bbp-template-notice img.avatar, .bbpress #bbpress-forums .widget_display_topics img.avatar, .bbpress #bbpress-forums .widget_display_replies img.avatar { + border:0; + margin-bottom:0 +} +.bbpress #bbpress-forums li.bbp-header { + background:#EEE +} +.bbpress #bbpress-forums .bbp-forums-list li { + display:block +} +.bbpress #bbpress-forums fieldset.bbp-form input[type="radio"], .bbpress #bbpress-forums fieldset.bbp-form input[type="checkbox"] { + margin:0 0.125rem 0.25rem +} +.bbpress #bbpress-forums .bbp-forum-info .bbp-forum-content, .bbpress #bbpress-forums p.bbp-topic-meta { + font-size:0.875rem +} +.bbpress #bbpress-forums .subscription-toggle { + float:right; + font-size:1rem +} +.bbpress #bbpress-forums .bbp-reply-author br { + display:none +} +.bbpress #bbpress-forums textarea.wp-editor-area { + border:1px solid #CCC; + height:auto +} +.bbpress #bbpress-forums .bbp-author-avatar img.avatar { + border:0; + margin:0 0.1875rem +} +.bbpress #bbpress-forums p.bbp-topic-meta img.avatar, .bbpress #bbpress-forums ul.bbp-reply-revision-log img.avatar, .bbpress #bbpress-forums ul.bbp-topic-revision-log img.avatar, .bbpress #bbpress-forums div.bbp-template-notice img.avatar, .bbpress #bbpress-forums .widget_display_topics img.avatar, .bbpress #bbpress-forums .widget_display_replies img.avatar { + border:0; + float:none; + margin:0 0.1875rem +} +.bbpress #bbpress-forums li.bbp-header, .bbpress #bbpress-forums li.bbp-footer { + font-size:1.125rem; + font-weight:400; + padding:0.625rem 1.25rem +} +.bbpress #bbpress-forums .bbp-forums-list li { + display:block +} +.bbpress #bbpress-forums #bbp-search-form #bbp_search { + float:left +} +.bbpress #bbpress-forums button, .bbpress #bbpress-forums .button { + -webkit-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + -moz-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + padding-top:0.625rem; + padding-right:1.25rem; + padding-bottom:0.6875rem; + padding-left:1.25rem; + font-size:0.6875rem +} +.bbpress #bbpress-forums button, .bbpress #bbpress-forums .button { + background-color:#446cb3; + border-radius:5px; + border:0; + color:#fff +} +.bbpress #bbpress-forums button:hover, .bbpress #bbpress-forums button:focus, .bbpress #bbpress-forums .button:hover, .bbpress #bbpress-forums .button:focus { + background-color:#3e63a4 +} +.bbpress #bbpress-forums button:active, .bbpress #bbpress-forums .button:active { + background-color:#4b74bb +} +.bbpress .bbp-meta span.bbp-admin-links a { + color:#446cb3 +} +.bbpress .bbp-meta span.bbp-admin-links a:hover { + color:#eb5b4c +} +.bbpress .bbp-meta a.bbp-forum-permalink, .bbpress .bbp-meta a.bbp-topic-permalink, .bbpress .bbp-meta a.bbp-reply-permalink { + color:#666666 +} +.bbpress .activity .info { + border-color:#cb2 +} +.bbp-login-form label { + margin-bottom:0 +} +.bbp_widget_login .logout-link:hover, .bbp_widget_login .logout-link:focus { + text-decoration:none +} +#subnav select { + width:auto +} +.message-search input { + width:auto; + padding:0.0625rem 0.3125rem 0.125rem +} +.mejs-container { + max-width:100% +} +#rtp-footer-widgets-wrapper #bbp_search, #sidebar #bbp_search { + float:left; + height:37px; + width:75% +} +#rtp-footer-widgets-wrapper #bbp_search_submit, #rtp-footer-widgets-wrapper #user-submit, #rtp-footer-widgets-wrapper .bbp_widget_login .button, #sidebar #bbp_search_submit, #sidebar #user-submit, #sidebar .bbp_widget_login .button { + font-size:0.6875rem; + padding:0.625rem 1.25rem 0.6875rem +} +#rtp-footer-widgets-wrapper .bbp_widget_login .bbp-logged-in h4, #sidebar .bbp_widget_login .bbp-logged-in h4 { + margin-bottom:0.625rem; + font-size:1rem +} +#rtp-footer-widgets-wrapper .bbp-login-form label, #sidebar .bbp-login-form label { + width:auto +} +#rtp-footer-widgets-wrapper .bbp-login-form .bbp-username, #rtp-footer-widgets-wrapper .bbp-login-form .bbp-email, #rtp-footer-widgets-wrapper .bbp-login-form .bbp-password, #rtp-footer-widgets-wrapper .bbp-login-form .bbp-remember-me, #rtp-footer-widgets-wrapper .bbp-login-form .bbp-submit-wrapper, #sidebar .bbp-login-form .bbp-username, #sidebar .bbp-login-form .bbp-email, #sidebar .bbp-login-form .bbp-password, #sidebar .bbp-login-form .bbp-remember-me, #sidebar .bbp-login-form .bbp-submit-wrapper { + margin-top:0 +} +#rtp-footer-widgets-wrapper .widget_display_stats dt, #sidebar .widget_display_stats dt { + float:left; + font-weight:normal; + width:75% +} +.buddypress #content div.item-list-tabs ul li.last select { + padding-right:0.5rem +} +.buddypress .hentry { + border-bottom:0 +} +.buddypress .standard-form textarea, .buddypress .standard-form input[type="text"], .buddypress .standard-form input[type="password"], .buddypress .standard-form input[type="search"], .buddypress .standard-form input[type="email"], .buddypress .standard-form input[type="tel"], .buddypress .standard-form input[type="url"], .buddypress .standard-form select { + width:auto +} +.buddypress .dir-search input[type="text"] { + width:auto +} +.buddypress .message-search label, .buddypress .dir-search label { + float:left +} +.buddypress #buddypress #item-header-avatar { + float:left +} +.buddypress #buddypress div#item-header div#item-header-content { + float:none +} +.buddypress #buddypress div#subnav.item-list-tabs ul li.last { + margin-top:2px +} +.buddypress #buddypress .mejs-container .mejs-controls .mejs-time { + height:auto +} +.buddypress #buddypress #group-dir-pag-top a, .buddypress #buddypress #group-dir-pag-bottom a, .buddypress #buddypress .pagination-links a { + color:#222; + font-size:0.875rem; + margin-left:0.3125rem; + text-decoration:none +} +.buddypress #buddypress #group-dir-pag-top a span, .buddypress #buddypress #group-dir-pag-bottom a span, .buddypress #buddypress .pagination-links a span { + display:block; + padding:0.0625rem 0.625rem 0.0625rem; + color:#999; + -webkit-border-radius:5px; + border-radius:5px +} +.buddypress #buddypress #group-dir-pag-top a:hover, .buddypress #buddypress #group-dir-pag-top a:focus, .buddypress #buddypress #group-dir-pag-bottom a:hover, .buddypress #buddypress #group-dir-pag-bottom a:focus, .buddypress #buddypress .pagination-links a:hover, .buddypress #buddypress .pagination-links a:focus { + background:#e6e6e6 +} +.buddypress #buddypress #group-dir-pag-top .current, .buddypress #buddypress #group-dir-pag-bottom .current, .buddypress #buddypress .pagination-links .current { + background:#446cb3; + color:#fff; + font-weight:bold; + cursor:default +} +.buddypress #buddypress #group-dir-pag-top .current:hover, .buddypress #buddypress #group-dir-pag-top .current:focus, .buddypress #buddypress #group-dir-pag-bottom .current:hover, .buddypress #buddypress #group-dir-pag-bottom .current:focus, .buddypress #buddypress .pagination-links .current:hover, .buddypress #buddypress .pagination-links .current:focus { + background:#446cb3 +} +.buddypress #buddypress div.dir-search { + margin:-2.6875rem 0 0.625rem +} +.buddypress #buddypress label { + display:inline-block; + margin:0 +} +.buddypress #buddypress button, .buddypress #buddypress .button, .buddypress #buddypress input[type="submit"], .buddypress #buddypress a.button, .buddypress #buddypress input[type="button"] { + -webkit-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + -moz-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + padding-top:0.625rem; + padding-right:1.25rem; + padding-bottom:0.6875rem; + padding-left:1.25rem; + font-size:0.6875rem; + text-shadow:none; + background-image:none; + text-decoration:none +} +.buddypress #buddypress button, .buddypress #buddypress .button, .buddypress #buddypress input[type="submit"], .buddypress #buddypress a.button, .buddypress #buddypress input[type="button"] { + background-color:#446cb3; + border-radius:5px; + border:0; + color:#fff +} +.buddypress #buddypress button:hover, .buddypress #buddypress button:focus, .buddypress #buddypress .button:hover, .buddypress #buddypress .button:focus, .buddypress #buddypress input[type="submit"]:hover, .buddypress #buddypress input[type="submit"]:focus, .buddypress #buddypress a.button:hover, .buddypress #buddypress a.button:focus, .buddypress #buddypress input[type="button"]:hover, .buddypress #buddypress input[type="button"]:focus { + background-color:#3e63a4 +} +.buddypress #buddypress button:active, .buddypress #buddypress .button:active, .buddypress #buddypress input[type="submit"]:active, .buddypress #buddypress a.button:active, .buddypress #buddypress input[type="button"]:active { + background-color:#4b74bb +} +.buddypress #buddypress button:hover, .buddypress #buddypress button:focus, .buddypress #buddypress .button:hover, .buddypress #buddypress .button:focus, .buddypress #buddypress input[type="submit"]:hover, .buddypress #buddypress input[type="submit"]:focus, .buddypress #buddypress a.button:hover, .buddypress #buddypress a.button:focus, .buddypress #buddypress input[type="button"]:hover, .buddypress #buddypress input[type="button"]:focus { + background-image:none; + border:0 +} +.buddypress #buddypress .activity-meta .button { + background:transparent; + border-radius:0; + box-shadow:0 0 0; + color:inherit; + font-size:0.875rem; + margin:0 0.625rem 0 0; + padding:0 +} +.buddypress #buddypress .activity-meta .button:before { + color:inherit; + display:inline-block; + font-family:"rtpanel-fontello"; + margin-right:0.3125rem +} +.buddypress #buddypress .activity-meta .button:hover, .buddypress #buddypress .activity-meta .button:focus { + background:transparent; + color:#446cb3 +} +.buddypress #buddypress .activity-meta .button.delete-activity:before { + content:'\e813' +} +.buddypress #buddypress .activity-meta .button.delete-activity:hover, .buddypress #buddypress .activity-meta .button.delete-activity:focus { + color:#dd3d36 +} +.buddypress #buddypress .activity-meta .button.fav:before { + content:'\e810' +} +.buddypress #buddypress .activity-meta .button.fav:hover, .buddypress #buddypress .activity-meta .button.fav:focus { + color:#7ad03a +} +.buddypress #buddypress a.bp-primary-action span, .buddypress #buddypress #reply-title small a span { + background:transparent; + color:inherit; + font-size:inherit +} +.buddypress #buddypress a.bp-primary-action span:before, .buddypress #buddypress #reply-title small a span:before { + content:'\e80a'; + display:inline-block; + font-family:"rtpanel-fontello"; + margin-right:0.3125rem +} +.buddypress #buddypress form#whats-new-form { + padding:0.625rem 0 0 !important +} +.buddypress #buddypress form#whats-new-form textarea { + margin:0; + width:100% +} +.buddypress #buddypress form#whats-new-form #whats-new-submit { + margin:0 +} +.buddypress #buddypress #whats-new-post-in { + margin-top:0 !important +} +.buddypress #buddypress #whats-new-options { + margin-top:0.75rem +} +.buddypress #buddypress input[type="text"], .buddypress #buddypress select { + display:inline-block; + margin-bottom:0; + height:2.3125rem +} +.buddypress #buddypress select { + padding:5px; + width:auto; + height:auto +} +.buddypress #buddypress .item-list-tabs { + background-color:#ddd; + padding:0.625rem 0.9375rem 0 +} +.buddypress #buddypress .item-list-tabs li a { + background:transparent +} +.buddypress #buddypress .item-list-tabs li a span { + line-height:1.8 +} +.buddypress #buddypress .item-list-tabs li.current a, .buddypress #buddypress .item-list-tabs li.selected a { + background:#fff; + border-radius:3px 3px 0 0; + opacity:1 +} +.buddypress #buddypress #subnav { + padding:0 0 0.625rem; + border-bottom:1px solid #ddd +} +.buddypress #buddypress #activity-stream p { + font-size:1rem; + line-height:1.5; + margin:0 +} +.buddypress #buddypress table.profile-fields td, .buddypress #buddypress table.profile-fields th { + padding:0 0.5rem +} +.buddypress #buddypress table td.thread-options { + padding:0; + width:14% +} +.buddypress #buddypress table p { + font-size:0.875rem +} +.buddypress #buddypress .thread-options .button { + margin-bottom:0 +} +.buddypress #buddypress .label { + color:#4c4c4c +} +.buddypress #buddypress ul.button-nav { + margin:0.9375rem 0 0 +} +.buddypress #buddypress .messages-notices tr td:last-child { + width:18% +} +.buddypress #buddypress .bp-widget.base h4 { + margin-bottom:10px +} +.buddypress #buddypress #groups_search_submit, .buddypress #buddypress #messages_search_submit, .buddypress #buddypress #members_search_submit { + border-radius:0 5px 5px 0 +} +.buddypress #buddypress #groups_search, .buddypress #buddypress #members_search, .buddypress #buddypress #messages_search { + border-radius:5px 0 0 5px +} +.buddypress #buddypress ul.item-list { + border-top:0 +} +.buddypress #buddypress #send_message_form label { + margin-bottom:0.625rem; + display:block +} +.buddypress #buddypress #send_message_form ul.acfb-holder li { + float:none +} +.buddypress #buddypress #send_message_form input, .buddypress #buddypress #send_message_form textarea { + margin-bottom:20px +} +.buddypress #buddypress #settings-form table { + margin-bottom:20px; + width:100% +} +.buddypress #buddypress #settings-form label { + display:block +} +.buddypress #buddypress #settings-form input[type="text"], .buddypress #buddypress #settings-form input[type="password"] { + margin:0.625rem 0 +} +.buddypress #buddypress #rtMedia-galary-next { + color:#446cb3 +} +.buddypress #buddypress #rtMedia-galary-next:hover { + background-color:#ddd; + color:#eb5b4c +} +.buddypress #buddypress #profile-edit-form label { + display:block +} +.buddypress #buddypress #profile-edit-form .field-visibility-settings-notoggle { + margin-top:0.625rem +} +.buddypress #buddypress #profile-edit-form .radio { + margin-bottom:0; + list-style:none; + margin-left:0 +} +.buddypress #buddypress .item-list-tabs { + padding-top:0.2rem +} +.buddypress #buddypress form#whats-new-form #whats-new-options #rtmedia-add-media-button-post-update, .buddypress #buddypress form#whats-new-form #whats-new-options select { + margin-top:0 +} +.buddypress #buddypress .activity-list li.load-more { + color:#446cb3 +} +.buddypress #buddypress .activity-list li.load-more a { + display:block; + color:#446cb3 +} +.buddypress #buddypress .activity-list li.load-more a:hover { + color:#eb5b4c +} +.buddypress #buddypress .activity-list li.load-more:hover { + background-color:#ddd +} +.buddypress #buddypress .standard-form #basic-details-section #signup_password, .buddypress #buddypress .standard-form #basic-details-section #signup_password_confirm { + width:90% +} +.buddypress #buddypress .standard-form #basic-details-section input { + margin-bottom:0.625rem +} +.buddypress #buddypress .activity-list li.mini .activity-avatar img.avatar, .buddypress #buddypress .activity-list li.mini .activity-avatar img.FB_profile_pic { + margin-top:3px +} +.buddypress #buddypress .activity-list .activity-content .activity-header img.avatar { + margin:0 10px 0 0 !important +} +.buddypress #buddypress div.wp-editor-container { + border:1px solid #cccccc +} +.buddypress #buddypress div#item-header div#item-actions h3 { + font-size:1.25rem; + margin:0 0 0.625rem +} +.buddypress #buddypress div#item-header ul img.avatar, .buddypress #buddypress div#item-header ul.avatars img.avatar { + height:auto; + width:auto +} +.buddypress #buddypress #bbpress-forums { + margin:0.625rem 0 +} +.buddypress #buddypress #bbpress-forums ul.bbp-topic-revision-log img.avatar { + margin-bottom:0 +} +.buddypress #buddypress #bbpress-forums .bbp-topic-content ul.bbp-topic-revision-log, .buddypress #buddypress #bbpress-forums .bbp-reply-content ul.bbp-topic-revision-log, .buddypress #buddypress #bbpress-forums .bbp-reply-content ul.bbp-reply-revision-log { + padding-top:0 +} +.buddypress #buddypress ul.item-list li img.avatar { + margin-top:0.25rem +} +.buddypress #buddypress #groups-list .item-desc p { + margin-bottom:0 +} +.buddypress #buddypress .bbp-meta span.bbp-admin-links a { + color:#446cb3 +} +.buddypress #buddypress .bbp-meta span.bbp-admin-links a:hover { + color:#eb5b4c +} +.buddypress #buddypress .bbp-meta a.bbp-forum-permalink, .buddypress #buddypress .bbp-meta a.bbp-topic-permalink, .buddypress #buddypress .bbp-meta a.bbp-reply-permalink { + color:#666666 +} +.buddypress #buddypress .activity .info { + border-color:#cb2 +} +.buddypress #buddypress div#message.error { + clear:both +} +.buddypress #buddypress div#message.error p { + margin-bottom:0 +} +.buddypress #buddypress #group-settings-form label { + display:block +} +.buddypress #buddypress #group-settings-form #group-name { + margin-bottom:0.625rem +} +.buddypress.settings form .columns { + width:100% +} +.buddypress .clear { + clear:both +} +.widget_bp_core_login_widget .logout { + -webkit-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + -moz-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + padding-top:0.625rem; + padding-right:1.25rem; + padding-bottom:0.6875rem; + padding-left:1.25rem; + font-size:0.6875rem +} +.widget_bp_core_login_widget .logout { + background-color:#446cb3; + border-radius:5px; + border:0; + color:#fff +} +.widget_bp_core_login_widget .logout:hover, .widget_bp_core_login_widget .logout:focus { + background-color:#3e63a4 +} +.widget_bp_core_login_widget .logout:active { + background-color:#4b74bb +} +.widget.buddypress.widget_bp_groups_widget ul, .widget.buddypress.widget_bp_core_friends_widget ul { + margin:0 +} +.widget.buddypress.widget_bp_groups_widget ul li, .widget.buddypress.widget_bp_core_friends_widget ul li { + list-style:none +} +.widget.buddypress.widget_bp_groups_widget .item-options, .widget.buddypress.widget_bp_core_friends_widget .item-options { + margin:0; + padding:0.5em 0 1em +} +.widget.buddypress.widget_bp_groups_widget .item-options .selected, .widget.buddypress.widget_bp_core_friends_widget .item-options .selected { + color:#eb5b4c; + background:#ddd +} +.widget.buddypress.widget_bp_groups_widget .item-options a, .widget.buddypress.widget_bp_core_friends_widget .item-options a { + background:#CCCCCC; + padding:0.3125rem 0.625rem +} +.widget.buddypress.widget_bp_groups_widget ul.item-list img.avatar, .widget.buddypress.widget_bp_core_friends_widget ul.item-list img.avatar { + margin-top:0.5rem +} +.buddypress.widget_bp_core_login_widget #bp-login-widget-form { + border:1px solid #ddd; + padding:1.25rem; + margin:1.25rem 0 +} +.buddypress.widget_bp_core_login_widget #bp-login-widget-form input[type="text"], .buddypress.widget_bp_core_login_widget #bp-login-widget-form input[type="password"] { + width:100% +} +.buddypress.widget_bp_core_login_widget #bp-login-widget-form #bp-login-widget-submit { + float:right; + margin-right:0 +} +.widget_bp_core_friends_widget li { + border:0 none; + margin-bottom:0; + padding:0; + width:100% +} +.widget.buddypress div.item-meta, .widget.buddypress div.item-content { + margin-left:1.875rem +} +.widget.buddypress div.item-meta span.activity, .widget.buddypress div.item-content span.activity { + font-size:0.75rem +} +.search-layout-wrapper>hr { + margin-top:0 +} +#content .gsc-control-cse { + padding:0 +} +#cse table.gstl_0 { + border-width:0; + margin:0 +} +#cse .gsc-result-info { + margin:0 +} +#cse .gs-web-image-box, #cse .gs-promotion-image-box { + padding:0.1875rem 0 0 +} +#cse .gsc-webResult.gsc-result { + border-width:0 0 1px; + border-color:#ddd; + border-style:none none dotted; + clear:both; + margin:0; + padding:0.625rem 0; + position:relative +} +#cse .gsc-result .gs-title { + height:auto; + text-decoration:none +} +#cse .gsc-result .gsc-cursor-box .gsc-cursor-page { + border:1px solid #ddd; + color:#446cb3; + display:inline-block; + float:none; + font-weight:normal; + margin:0.125rem; + padding:0.3125rem 0.625rem; + text-decoration:none +} +#cse .gsc-result .gsc-cursor-box .gsc-cursor-page:hover { + border-color:#919191; + color:#eb5b4c; + text-decoration:underline +} +#cse .gsc-result .gsc-cursor-current-page, #cse .gsc-result .gsc-cursor-current-page:hover { + border-color:#919191; + color:#333; + font-weight:normal; + text-decoration:none +} +#cse .gsc-result a.gs-title, #cse .gsc-result a.gs-title b { + color:#446cb3; + text-decoration:none +} +#cse .gsc-result a.gs-title:hover, #cse .gsc-result a.gs-title b:hover { + color:#eb5b4c +} +#cse .gsc-result img.gs-image, #cse .gsc-result img.gs-promotion-image { + margin:0 +} +#cse input.gsc-input { + border:1px solid #ddd +} +#cse input.gsc-input:hover { + border-color:#919191 +} +#cse .cse input.gsc-search-button, #cse input.gsc-search-button { + height:auto; + margin:0; + min-width:3.125rem; + padding:0.375rem 1.125rem +} +#cse .gsc-tabdActive .gsc-results .gsc-cursor { + display:block; + margin:0.9375rem 0 0.3125rem; + overflow:hidden; + text-align:center +} +.gsc-input-box .gscb_a { + line-height:25px +} +.gsc-input-box .gsst_a { + line-height:18px; + padding-top:0 +} +.gsc-input-box .gsib_b { + line-height:18px; + padding-bottom:0; + padding-top:0 +} +table.gsc-search-box td { + border-width:0 +} +table.gsc-search-box td.gsc-input { + padding-left:0 +} +table.gsc-search-box td.gsib_a { + line-height:18px; + padding-top:0 +} +.gsc-table-result { + border-width:0; + margin:0 +} +.gsc-table-result td { + border-width:0; + margin:0 +} +.gsc-table-result .gsc-thumbnail { + padding-left:0 +} +.gsc-above-wrapper-area-container { + border-width:0 +} +.gsc-result-info-container { + border-width:0; + padding:0 +} +td.gsc-clear-button { + padding-right:0 +} +input.gsc-input { + margin-left:0 +} +.gs-promotion-table, .gs-promotion-table td, .gsc-resultsHeader, .gsc-resultsHeader td { + border-width:0; + margin:0 +} +.rtp-has-promo-bar { + margin-top:2.75rem +} +.rtp-has-promo-bar.admin-bar p.demo_store { + top:2rem +} +.type-product.hentry { + border-bottom:0 +} +input.qty { + margin-bottom:0 +} +.panel.entry-content { + background:transparent; + border:0; + padding:1rem !important +} +body .woocommerce-message:before, body .woocommerce-error:before, body .woocommerce-info:before { + padding-top:0 +} +body div.pp_woocommerce .pp_nav p, body div.pp_woocommerce .pp_description { + font-size:inherit; + line-height:1.1rem +} +body div.pp_woocommerce .pp_arrow_previous, body div.pp_woocommerce .pp_arrow_next, body div.pp_woocommerce .pp_previous:before, body div.pp_woocommerce .pp_next:before { + height:1.25rem; + width:1.25rem +} +body div.pp_woocommerce .pp_close { + height:1.5625rem; + right:-0.8125rem; + text-shadow:0 1px 0 #fff; + top:-0.8125rem; + width:1.5625rem +} +body .label { + background:transparent; + line-height:2.5rem; + padding:0 +} +body .value { + padding:0 +} +.reset_variations { + display:inline-block !important; + margin-bottom:0.9375rem +} +.cart_totals table { + float:right +} +table tr.even, table tr.alt, table tr:nth-of-type(2n) { + background:transparent +} +.post-content table tr.even, .post-content table tr.alt, .post-content table tr:nth-of-type(2n) { + background:#F9F9F9 +} +.woocommerce .rtp-main-wrapper button, .woocommerce .rtp-main-wrapper .button, .woocommerce .rtp-main-wrapper input[type="submit"], .woocommerce .rtp-main-wrapper #payment #place_order, .woocommerce .rtp-main-wrapper #content-wrapper #content .button, .woocommerce-page .rtp-main-wrapper button, .woocommerce-page .rtp-main-wrapper .button, .woocommerce-page .rtp-main-wrapper input[type="submit"], .woocommerce-page .rtp-main-wrapper #payment #place_order, .woocommerce-page .rtp-main-wrapper #content-wrapper #content .button { + -webkit-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + -moz-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + padding-top:0.625rem; + padding-right:1.25rem; + padding-bottom:0.6875rem; + padding-left:1.25rem; + font-size:0.6875rem; + text-shadow:none; + background-image:none +} +.woocommerce .rtp-main-wrapper button, .woocommerce .rtp-main-wrapper .button, .woocommerce .rtp-main-wrapper input[type="submit"], .woocommerce .rtp-main-wrapper #payment #place_order, .woocommerce .rtp-main-wrapper #content-wrapper #content .button, .woocommerce-page .rtp-main-wrapper button, .woocommerce-page .rtp-main-wrapper .button, .woocommerce-page .rtp-main-wrapper input[type="submit"], .woocommerce-page .rtp-main-wrapper #payment #place_order, .woocommerce-page .rtp-main-wrapper #content-wrapper #content .button { + background-color:#446cb3; + border-radius:5px; + border:0; + color:#fff +} +.woocommerce .rtp-main-wrapper button:hover, .woocommerce .rtp-main-wrapper button:focus, .woocommerce .rtp-main-wrapper .button:hover, .woocommerce .rtp-main-wrapper .button:focus, .woocommerce .rtp-main-wrapper input[type="submit"]:hover, .woocommerce .rtp-main-wrapper input[type="submit"]:focus, .woocommerce .rtp-main-wrapper #payment #place_order:hover, .woocommerce .rtp-main-wrapper #payment #place_order:focus, .woocommerce .rtp-main-wrapper #content-wrapper #content .button:hover, .woocommerce .rtp-main-wrapper #content-wrapper #content .button:focus, .woocommerce-page .rtp-main-wrapper button:hover, .woocommerce-page .rtp-main-wrapper button:focus, .woocommerce-page .rtp-main-wrapper .button:hover, .woocommerce-page .rtp-main-wrapper .button:focus, .woocommerce-page .rtp-main-wrapper input[type="submit"]:hover, .woocommerce-page .rtp-main-wrapper input[type="submit"]:focus, .woocommerce-page .rtp-main-wrapper #payment #place_order:hover, .woocommerce-page .rtp-main-wrapper #payment #place_order:focus, .woocommerce-page .rtp-main-wrapper #content-wrapper #content .button:hover, .woocommerce-page .rtp-main-wrapper #content-wrapper #content .button:focus { + background-color:#3e63a4 +} +.woocommerce .rtp-main-wrapper button:active, .woocommerce .rtp-main-wrapper .button:active, .woocommerce .rtp-main-wrapper input[type="submit"]:active, .woocommerce .rtp-main-wrapper #payment #place_order:active, .woocommerce .rtp-main-wrapper #content-wrapper #content .button:active, .woocommerce-page .rtp-main-wrapper button:active, .woocommerce-page .rtp-main-wrapper .button:active, .woocommerce-page .rtp-main-wrapper input[type="submit"]:active, .woocommerce-page .rtp-main-wrapper #payment #place_order:active, .woocommerce-page .rtp-main-wrapper #content-wrapper #content .button:active { + background-color:#4b74bb +} +.woocommerce .rtp-main-wrapper button:hover, .woocommerce .rtp-main-wrapper button:focus, .woocommerce .rtp-main-wrapper .button:hover, .woocommerce .rtp-main-wrapper .button:focus, .woocommerce .rtp-main-wrapper input[type="submit"]:hover, .woocommerce .rtp-main-wrapper input[type="submit"]:focus, .woocommerce .rtp-main-wrapper #payment #place_order:hover, .woocommerce .rtp-main-wrapper #payment #place_order:focus, .woocommerce .rtp-main-wrapper #content-wrapper #content .button:hover, .woocommerce .rtp-main-wrapper #content-wrapper #content .button:focus, .woocommerce-page .rtp-main-wrapper button:hover, .woocommerce-page .rtp-main-wrapper button:focus, .woocommerce-page .rtp-main-wrapper .button:hover, .woocommerce-page .rtp-main-wrapper .button:focus, .woocommerce-page .rtp-main-wrapper input[type="submit"]:hover, .woocommerce-page .rtp-main-wrapper input[type="submit"]:focus, .woocommerce-page .rtp-main-wrapper #payment #place_order:hover, .woocommerce-page .rtp-main-wrapper #payment #place_order:focus, .woocommerce-page .rtp-main-wrapper #content-wrapper #content .button:hover, .woocommerce-page .rtp-main-wrapper #content-wrapper #content .button:focus { + background-image:none +} +body.woocommerce ul.products li.product .add_to_cart_button, body.woocommerce-page ul.products li.product .add_to_cart_button { + float:left +} +body.woocommerce ul.products li.product .added_to_cart, body.woocommerce-page ul.products li.product .added_to_cart { + float:left; + clear:both +} +body.woocommerce #content nav.woocommerce-pagination ul, body.woocommerce-page #content nav.woocommerce-pagination ul { + border:0 +} +body.woocommerce #content nav.woocommerce-pagination ul li, body.woocommerce-page #content nav.woocommerce-pagination ul li { + border-right:0 +} +body.woocommerce #content nav.woocommerce-pagination ul li a, body.woocommerce #content nav.woocommerce-pagination ul li span, body.woocommerce-page #content nav.woocommerce-pagination ul li a, body.woocommerce-page #content nav.woocommerce-pagination ul li span { + line-height:1.75rem +} +.widget_product_search input[type="text"] { + float:left; + height:37px; + width:75% +} +.widget_product_search input[type="submit"] { + font-size:0.6875rem; + padding:0.625rem 1.25rem 0.6875rem +} +#content-wrapper div.sharedaddy .sd-title { + font-size:1.125rem +} +.post-content .form-errors { + margin:0 +} +.post-content .form-errors .form-error-message { + background-color:#fbe5e4; + border-left:4px solid #dd3d36; + padding:0.3125rem 0.625rem; + margin:0.625rem 0 1.25rem; + list-style:none; + color:#4c4c4c +} +.contact-form .select { + width:300px +} +.gform_fields input, .gform_fields select, .gform_fields textarea.textarea { + margin:0 +} +.gform_fields .gfield { + margin-bottom:0.75rem +} +.gform_wrapper .ginput_complex ginput_left, .gform_wrapper .ginput_complex ginput_right, .gform_wrapper .ginput_complex ginput_full { + margin-bottom:0.3125rem +} +.gform_wrapper .gfield_time_hour input { + display:inline-block; + margin-right:0.25rem +} +.gform_wrapper .gfield_time_ampm.ginput_container select { + padding:0.375rem 0.125rem +} +.gfield_checkbox li input[type=checkbox], .gfield_radio li input[type=radio] { + width:auto !important; + margin:0 +} +table.gfield_list thead, table.gfield_list tfoot, table.gfield_list tr:nth-of-type(2n) { + background-color:transparent +} +input[type=submit], .button, button { + -webkit-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + -moz-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + padding-top:1rem; + padding-right:2rem; + padding-bottom:1.0625rem; + padding-left:2rem; + font-size:1rem +} +input[type=submit], .button, button { + background-color:#446cb3; + border-radius:5px; + border:0; + color:#fff +} +input[type=submit]:hover, input[type=submit]:focus, .button:hover, .button:focus, button:hover, button:focus { + background-color:#3e63a4 +} +input[type=submit]:active, .button:active, button:active { + background-color:#4b74bb +} +#content-wrapper .gform_wrapper ul.gfield_radio li input+input { + width:auto +} +.widget .gform_wrapper .top_label input.medium, .widget .gform_wrapper .top_label select.medium { + width:97% +} +.widget .gform_wrapper .gfield_time_ampm select { + height:37px +} +#content-wrapper .ninja-forms-form-wrap { + overflow:hidden +} +#content-wrapper .ninja-forms-form-wrap label { + display:inline-block; + width:30% +} +#content-wrapper .ninja-forms-form-wrap input, #content-wrapper .ninja-forms-form-wrap select, #content-wrapper .ninja-forms-form-wrap textarea { + display:inline-block; + margin:0; + width:40% +} +#content-wrapper .ninja-forms-form-wrap .label-left label { + width:29% +} +#content-wrapper .ninja-forms-form-wrap .checkbox-wrap label { + margin:0 +} +#content-wrapper .ninja-forms-form-wrap input[type="checkbox"], #content-wrapper .ninja-forms-form-wrap input[type="radio"], #content-wrapper .ninja-forms-form-wrap button, #content-wrapper .ninja-forms-form-wrap input[type="button"], #content-wrapper .ninja-forms-form-wrap input[type="reset"], #content-wrapper .ninja-forms-form-wrap input[type="submit"] { + width:auto +} +#content-wrapper .ninja-forms-form-wrap .ninja-forms-field-error, #content-wrapper .ninja-forms-form-wrap .ninja-forms-error-msg { + background-color:#fbe5e4; + border-left:4px solid #dd3d36; + padding:0.3125rem 0.625rem; + margin:0.625rem 0 1.25rem +} +#content-wrapper .ninja-forms-form-wrap .ninja-forms-field-error p, #content-wrapper .ninja-forms-form-wrap .ninja-forms-error-msg p { + margin:0 +} +#content-wrapper .ninja-forms-form-wrap .field-wrap, #content-wrapper .ninja-forms-form-wrap #ninja_forms_required_items { + margin-bottom:1.75rem +} +#content-wrapper .ninja-forms-form-wrap .wp-editor-container .wp-editor-area { + border:1px solid #cccccc; + margin-left:0; + width:100% +} +#content-wrapper .ninja-forms-form-wrap .ninja-forms-pass1, #content-wrapper .ninja-forms-form-wrap .ninja-forms-pass2 { + margin-bottom:1.75rem +} +#content-wrapper .ninja-forms-form-wrap .list-radio-wrap li, #content-wrapper .ninja-forms-form-wrap .list-checkbox-wrap li { + width:100% +} +#content-wrapper .ninja-forms-form-wrap .list-radio-wrap li .ninja-forms-field, #content-wrapper .ninja-forms-form-wrap .list-checkbox-wrap li .ninja-forms-field { + margin-right:0.625rem +} +#content-wrapper .field-wrap.label-left .ninja-forms-field { + margin-left:0 +} +#content-wrapper .wp_themeSkin table.mceLayout { + border:1px solid #CCCCCC +} +.ninja-forms-required-items { + background-color:#fff4d6; + border-left:4px solid #ffba00; + padding:0.625rem 0.9375rem; + text-shadow:1px 0 0 #fff; + margin-bottom:1.75rem +} +.ninja-forms-field-description { + overflow:hidden +} +.ninja-forms-field-description p { + left:4px; + margin-bottom:0; + margin-left:30%; + position:relative +} +#content-wrapper .widget .ninja-forms-form input[type="text"], #content-wrapper .widget .ninja-forms-form input[type="password"], #content-wrapper .widget .ninja-forms-form input[type="search"], #content-wrapper .widget .ninja-forms-form input[type="email"], #content-wrapper .widget .ninja-forms-form input[type="tel"], #content-wrapper .widget .ninja-forms-form input[type="url"], #content-wrapper .widget .ninja-forms-form input[type^="date"], #content-wrapper .widget .ninja-forms-form input[type="month"], #content-wrapper .widget .ninja-forms-form input[type="week"], #content-wrapper .widget .ninja-forms-form input[type="time"], #content-wrapper .widget .ninja-forms-form select, #content-wrapper .widget .ninja-forms-form textarea, #content-wrapper .widget .ninja-forms-form #pass-strength-result { + width:90% +} +#content-wrapper .widget .ninja-forms-form .label-left label { + width:100% +} +#content-wrapper .widget .ninja-forms-form .timed_submit-wrap button { + font-size:0.875rem; + padding:0.625rem 1.25rem 0.6875rem +} +#content-wrapper .widget .ninja-forms-form .wp-editor-wrap .wp-editor-container { + overflow:auto +} +.wpcf7-form .wpcf7-list-item { + margin-left:0 +} +.wpcf7-form div.wpcf7-validation-errors, .wpcf7-form .wpcf7-not-valid-tip { + background-color:#fbe5e4; + border-left:4px solid #dd3d36; + padding:0.3125rem 0.625rem; + margin:0.625rem 0 1.25rem; + list-style:none; + color:#4c4c4c +} +.wpcf7-form div.wpcf7-mail-sent-ok { + background-color:#e4f5d6; + border-left:4px solid #7ad03a +} +#buddypress { + position:relative +} +#buddypress .mfp-close { + border:0; + color:#333333; + font-size:1.75rem !important; + line-height:0.5; + margin-right:0.25rem; + margin-top:0.3125rem; + right:2.5% +} +#buddypress .mfp-close:hover, #buddypress .mfp-close:focus { + border:0 +} +#buddypress .mfp-close:active { + top:0 +} +#buddypress .rtmedia-container .rtmedia-item-actions { + clear:left +} +#buddypress .rtmedia-container .rtmedia-item-actions form { + margin-bottom:0.3125rem +} +#buddypress .rtmedia-container .rtmedia-item-actions .rtmedia-like { + padding-left:0.625rem; + padding-right:0.8125rem +} +#buddypress .rtmedia-container .rtmedia-item-actions .rtmedia-like span { + margin-right:0.375rem +} +#buddypress .rtmedia-container #details-tab .rt-form-select { + margin-left:1rem +} +#buddypress input[type="button"], #buddypress button, #buddypress .button, #buddypress input[type="submit"] { + -webkit-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + -moz-box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + box-shadow:inset 0 -2px rgba(0, 0, 0, 0.14); + padding-top:0.625rem; + padding-right:1.25rem; + padding-bottom:0.6875rem; + padding-left:1.25rem; + font-size:0.6875rem; + text-shadow:none; + margin-bottom:0; + background-image:none; + text-decoration:none +} +#buddypress input[type="button"], #buddypress button, #buddypress .button, #buddypress input[type="submit"] { + background-color:#446cb3; + border-radius:5px; + border:0; + color:#fff +} +#buddypress input[type="button"]:hover, #buddypress input[type="button"]:focus, #buddypress button:hover, #buddypress button:focus, #buddypress .button:hover, #buddypress .button:focus, #buddypress input[type="submit"]:hover, #buddypress input[type="submit"]:focus { + background-color:#3e63a4 +} +#buddypress input[type="button"]:active, #buddypress button:active, #buddypress .button:active, #buddypress input[type="submit"]:active { + background-color:#4b74bb +} +#buddypress input[type="button"]:hover, #buddypress input[type="button"]:focus, #buddypress button:hover, #buddypress button:focus, #buddypress .button:hover, #buddypress .button:focus, #buddypress input[type="submit"]:hover, #buddypress input[type="submit"]:focus { + background-image:none; + border:0 none +} +#buddypress .rtmedia-item-thumbnail { + margin:0 auto +} +#buddypress .rtmedia-upload-input { + margin-right:0.625rem +} +#buddypress #whats-new-options .icon-plus-sign { + margin-right:0.3125rem +} +#buddypress ul.large-block-grid-3 .rtmedia-list-item { + margin:0 !important +} +#buddypress ul.rtmedia-list .rtmedia-list-item { + height:auto +} +#buddypress ~ .rtp-readmore { + display:none +} +#buddypress .rtmedia-image-editor .imgedit-settings { + padding-left:1.25rem +} +#buddypress div.rtmedia-activity-container ul.rtmedia-list li.media-type-music .rtmedia-item-thumbnail { + margin:0 auto +} +#rtMedia-galary-next { + color:#446cb3 +} +#rtMedia-galary-next:hover { + background-color:#ddd; + color:#eb5b4c +} +.post-content .rtmedia-container { + margin-bottom:0.625rem +} +.RTMediaGalleryWidget ul { + margin:0 +} +.RTMediaGalleryWidget .media-tabs-container .rt-media-tab-panel ul li { + margin:0.625rem 0.125rem; + width:32% +} +.RTMediaGalleryWidget .media-tabs-container .rt-media-tab-panel { + padding:0.625rem +} +.RTMediaGalleryWidget .media-tabs-container>ul li { + padding:0.25rem 0 +} +.RTMediaUploaderWidget .rtmedia-upload-input.rtmedia-file { + margin-left:0.625rem +} +.RTMediaUploaderWidget .rt-form-select.privacy { + margin-top:0.9375rem; + margin-bottom:0.3125rem +} +.RTMediaUploaderWidget input[type="submit"] { + font-size:0.6875rem; + padding:0.625rem 1.25rem 0.6875rem +} +.yarpp-related { + margin-bottom:0.625rem +} +.yarpp-related .yarpp-thumbnails-horizontal .yarpp-thumbnail { + height:auto +} +.yarpp-related .yarpp-thumbnail .yarpp-thumbnail-title { + margin-top:0.625rem; + margin-bottom:0.3125rem; + margin-left:auto; + margin-right:auto; + text-align:center; + width:100%; + display:block +} diff --git a/template/css/zedapp.css b/template/css/zedapp.css new file mode 100644 index 0000000..730fd1e --- /dev/null +++ b/template/css/zedapp.css @@ -0,0 +1,145 @@ +a.install-button { + display: block; + margin: 10px; + text-align: center; + font-family: Arial, Helvetica, sans-serif; + font-size: 22px; + color: #ffffff; + padding: 10px 20px; + background: -moz-linear-gradient(top, #6b6b6b 0%, #000000); + background: -webkit-gradient(linear, left top, left bottom, from(#6b6b6b), to(#000000)); + -moz-border-radius: 30px; + -webkit-border-radius: 30px; + border-radius: 30px; + border: 1px solid #000000; + -moz-box-shadow: 0px 1px 3px rgba(000, 000, 000, 0.5), inset 0px 0px 1px rgba(255, 255, 255, 0.7); + -webkit-box-shadow: 0px 1px 3px rgba(000, 000, 000, 0.5), inset 0px 0px 1px rgba(255, 255, 255, 0.7); + box-shadow: 0px 1px 3px rgba(000, 000, 000, 0.5), inset 0px 0px 1px rgba(255, 255, 255, 0.7); + text-shadow: 0px -1px 0px rgba(000, 000, 000, 0.4), 0px 1px 0px rgba(255, 255, 255, 0.3); +} +a.install-button:hover { + text-decoration: none; +} + + + [class^="rtp-icon-"]:before, [class*=" rtp-icon-"]:before { + font-family: "Arial"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +.rtp-icon-menu:before { content: '='; } /* 'î Ž' */ + + +/* Animation junk*/ + +/* + Animation example, for spinners +*/ +.animate-spin { + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + display: inline-block; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/template/img/maxcdn_logo.png b/template/img/maxcdn_logo.png new file mode 100644 index 0000000..c94a529 Binary files /dev/null and b/template/img/maxcdn_logo.png differ diff --git a/template/img/zed-small.png b/template/img/zed-small.png new file mode 100644 index 0000000..63623e2 Binary files /dev/null and b/template/img/zed-small.png differ diff --git a/template/js/rtp.js b/template/js/rtp.js new file mode 100644 index 0000000..b94716a --- /dev/null +++ b/template/js/rtp.js @@ -0,0 +1,2190 @@ +/*! + * Concat JS libraries to single js file to reduce http request. + * This will include modernizr.js, foundation.min.js and jquery.sidr.min.js + * + * @since rtPanel 4.1.4 + */ +! function(a, b, c, d) { + "use strict"; + + function e(a) { + return ("string" == typeof a || a instanceof String) && (a = a.replace(/^[\\/'"]+|(;\s?})+|[\\/'"]+$/g, "")), a + } + 0 === a("head").has(".foundation-mq-small").length && a("head").append(''), 0 === a("head").has(".foundation-mq-medium").length && a("head").append(''), 0 === a("head").has(".foundation-mq-large").length && a("head").append(''), 0 === a("head").has(".foundation-mq-xlarge").length && a("head").append(''), 0 === a("head").has(".foundation-mq-xxlarge").length && a("head").append(''), a(function() { + "undefined" != typeof FastClick && "undefined" != typeof c.body && FastClick.attach(c.body) + }); + var f = function(b, d) { + return "string" == typeof b ? a(d ? d.querySelectorAll(b) : c.querySelectorAll(b)) : a(b, d) + }; + b.matchMedia = b.matchMedia || function(a) { + var b, c = a.documentElement, + d = c.firstElementChild || c.firstChild, + e = a.createElement("body"), + f = a.createElement("div"); + return f.id = "mq-test-1", f.style.cssText = "position:absolute;top:-100em", e.style.background = "none", e.appendChild(f), + function(a) { + return f.innerHTML = '­', c.insertBefore(e, d), b = 42 === f.offsetWidth, c.removeChild(e), { + matches: b, + media: a + } + } + }(c), + function() { + function a() { + c && (f(a), jQuery.fx.tick()) + } + for (var c, d = 0, e = ["webkit", "moz"], f = b.requestAnimationFrame, g = b.cancelAnimationFrame; d < e.length && !f; d++) f = b[e[d] + "RequestAnimationFrame"], g = g || b[e[d] + "CancelAnimationFrame"] || b[e[d] + "CancelRequestAnimationFrame"]; + f ? (b.requestAnimationFrame = f, b.cancelAnimationFrame = g, jQuery.fx.timer = function(b) { + b() && jQuery.timers.push(b) && !c && (c = !0, a()) + }, jQuery.fx.stop = function() { + c = !1 + }) : (b.requestAnimationFrame = function(a) { + var c = (new Date).getTime(), + e = Math.max(0, 16 - (c - d)), + f = b.setTimeout(function() { + a(c + e) + }, e); + return d = c + e, f + }, b.cancelAnimationFrame = function(a) { + clearTimeout(a) + }) + }(jQuery), b.Foundation = { + name: "Foundation", + version: "5.0.3", + media_queries: { + small: f(".foundation-mq-small").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""), + medium: f(".foundation-mq-medium").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""), + large: f(".foundation-mq-large").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""), + xlarge: f(".foundation-mq-xlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""), + xxlarge: f(".foundation-mq-xxlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, "") + }, + stylesheet: a("").appendTo("head")[0].sheet, + init: function(a, b, c, d, e) { + var g = [a, c, d, e], + h = []; + if (this.rtl = /rtl/i.test(f("html").attr("dir")), this.scope = a || this.scope, b && "string" == typeof b && !/reflow/i.test(b)) this.libs.hasOwnProperty(b) && h.push(this.init_lib(b, g)); + else for (var i in this.libs) h.push(this.init_lib(i, b)); + return a + }, + init_lib: function(a, b) { + return this.libs.hasOwnProperty(a) ? (this.patch(this.libs[a]), b && b.hasOwnProperty(a) ? this.libs[a].init.apply(this.libs[a], [this.scope, b[a]]) : (b = b instanceof Array ? b : Array(b), this.libs[a].init.apply(this.libs[a], b))) : function() {} + }, + patch: function(a) { + a.scope = this.scope, a.data_options = this.lib_methods.data_options, a.bindings = this.lib_methods.bindings, a.S = f, a.rtl = this.rtl + }, + inherit: function(a, b) { + for (var c = b.split(" "), d = c.length - 1; d >= 0; d--) this.lib_methods.hasOwnProperty(c[d]) && (this.libs[a.name][c[d]] = this.lib_methods[c[d]]) + }, + random_str: function(a) { + var b = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); + a || (a = Math.floor(Math.random() * b.length)); + for (var c = "", d = 0; a > d; d++) c += b[Math.floor(Math.random() * b.length)]; + return c + }, + libs: {}, + lib_methods: { + throttle: function(a, b) { + var c = null; + return function() { + var d = this, + e = arguments; + clearTimeout(c), c = setTimeout(function() { + a.apply(d, e) + }, b) + } + }, + data_options: function(b) { + function c(a) { + return !isNaN(a - 0) && null !== a && "" !== a && a !== !1 && a !== !0 + } + function d(b) { + return "string" == typeof b ? a.trim(b) : b + } + var e, f, g, h, i = {}, j = b.data("options"); + if ("object" == typeof j) return j; + for (g = (j || ":").split(";"), h = g.length, e = h - 1; e >= 0; e--) f = g[e].split(":"), /true/i.test(f[1]) && (f[1] = !0), /false/i.test(f[1]) && (f[1] = !1), c(f[1]) && (f[1] = parseInt(f[1], 10)), 2 === f.length && f[0].length > 0 && (i[d(f[0])] = d(f[1])); + return i + }, + delay: function(a, b) { + return setTimeout(a, b) + }, + empty: function(a) { + if (a.length && a.length > 0) return !1; + if (a.length && 0 === a.length) return !0; + for (var b in a) if (hasOwnProperty.call(a, b)) return !1; + return !0 + }, + register_media: function(b, c) { + Foundation.media_queries[b] === d && (a("head").append(''), Foundation.media_queries[b] = e(a("." + c).css("font-family"))) + }, + addCustomRule: function(a, b) { + if (b === d) Foundation.stylesheet.insertRule(a, Foundation.stylesheet.cssRules.length); + else { + var c = Foundation.media_queries[b]; + c !== d && Foundation.stylesheet.insertRule("@media " + Foundation.media_queries[b] + "{ " + a + " }") + } + }, + loaded: function(a, b) { + function c() { + b(a[0]) + } + function d() { + if (this.one("load", c), /MSIE (\d+\.\d+);/.test(navigator.userAgent)) { + var a = this.attr("src"), + b = a.match(/\?/) ? "&" : "?"; + b += "random=" + (new Date).getTime(), this.attr("src", a + b) + } + } + return a.attr("src") ? void(a[0].complete || 4 === a[0].readyState ? c() : d.call(a)) : void c() + }, + bindings: function(b, c) { + var d = this, + e = !f(this).data(this.name + "-init"); + return "string" == typeof b ? this[b].call(this, c) : void(f(this.scope).is("[data-" + this.name + "]") ? (f(this.scope).data(this.name + "-init", a.extend({}, this.settings, c || b, this.data_options(f(this.scope)))), e && this.events(this.scope)) : f("[data-" + this.name + "]", this.scope).each(function() { + var e = !f(this).data(d.name + "-init"); + f(this).data(d.name + "-init", a.extend({}, d.settings, c || b, d.data_options(f(this)))), e && d.events(this) + })) + } + } + }, a.fn.foundation = function() { + var a = Array.prototype.slice.call(arguments, 0); + return this.each(function() { + return Foundation.init.apply(Foundation, [this].concat(a)), this + }) + } +}(jQuery, this, this.document), +function(a, b, c) { + "use strict"; + Foundation.libs.abide = { + name: "abide", + version: "5.0.3", + settings: { + focus_on_invalid: !0, + error_labels: !0, + timeout: 1e3, + patterns: { + alpha: /[a-zA-Z]+/, + alpha_numeric: /[a-zA-Z0-9]+/, + integer: /-?\d+/, + number: /-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?/, + password: /(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/, + card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/, + cvv: /^([0-9]){3,4}$/, + email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/, + url: /(https?|ftp|file|ssh):/, + domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/, + datetime: /([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))/, + date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))/, + time: /(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}/, + dateISO: /\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/, + month_day_year: /(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d/, + color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ + } + }, + timer: null, + init: function(a, b, c) { + this.bindings(b, c) + }, + events: function(b) { + { + var c = this, + d = a(b).attr("novalidate", "novalidate"); + d.data("abide-init") + } + d.off(".abide").on("submit.fndtn.abide validate.fndtn.abide", function(b) { + var d = /ajax/i.test(a(this).attr("data-abide")); + return c.validate(a(this).find("input, textarea, select").get(), b, d) + }).find("input, textarea, select").off(".abide").on("blur.fndtn.abide change.fndtn.abide", function(a) { + c.validate([this], a) + }).on("keydown.fndtn.abide", function(b) { + var d = a(this).closest("form").data("abide-init"); + clearTimeout(c.timer), c.timer = setTimeout(function() { + c.validate([this], b) + }.bind(this), d.timeout) + }) + }, + validate: function(b, c, d) { + for (var e = this.parse_patterns(b), f = e.length, g = a(b[0]).closest("form"), h = /submit/.test(c.type), i = 0; f > i; i++) if (!e[i] && (h || d)) return this.settings.focus_on_invalid && b[i].focus(), g.trigger("invalid"), a(b[i]).closest("form").attr("data-invalid", ""), !1; + return (h || d) && g.trigger("valid"), g.removeAttr("data-invalid"), d ? !1 : !0 + }, + parse_patterns: function(a) { + for (var b = a.length, c = [], d = b - 1; d >= 0; d--) c.push(this.pattern(a[d])); + return this.check_validation_and_apply_styles(c) + }, + pattern: function(a) { + var b = a.getAttribute("type"), + c = "string" == typeof a.getAttribute("required"), + d = a.getAttribute("pattern") || ""; + return this.settings.patterns.hasOwnProperty(d) && d.length > 0 ? [a, this.settings.patterns[d], c] : d.length > 0 ? [a, new RegExp(d), c] : this.settings.patterns.hasOwnProperty(b) ? [a, this.settings.patterns[b], c] : (d = /.*/, [a, d, c]) + }, + check_validation_and_apply_styles: function(b) { + for (var c = b.length, d = [], e = c - 1; e >= 0; e--) { + var f = b[e][0], + g = b[e][2], + h = f.value, + i = f.getAttribute("data-equalto"), + j = "radio" === f.type, + k = "checkbox" === f.type, + l = a('label[for="' + f.getAttribute("id") + '"]'), + m = g ? f.value.length > 0 : !0; + j && g ? d.push(this.valid_radio(f, g)) : k && g ? d.push(this.valid_checkbox(f, g)) : i && g ? d.push(this.valid_equal(f, g)) : b[e][1].test(h) && m || !g && f.value.length < 1 ? (a(f).removeAttr("data-invalid").parent().removeClass("error"), l.length > 0 && this.settings.error_labels && l.removeClass("error"), d.push(!0)) : (a(f).attr("data-invalid", "").parent().addClass("error"), l.length > 0 && this.settings.error_labels && l.addClass("error"), d.push(!1)) + } + return d + }, + valid_checkbox: function(b, c) { + var b = a(b), + d = b.is(":checked") || !c; + return d ? b.removeAttr("data-invalid").parent().removeClass("error") : b.attr("data-invalid", "").parent().addClass("error"), d + }, + valid_radio: function(b) { + for (var d = b.getAttribute("name"), e = c.getElementsByName(d), f = e.length, g = !1, h = 0; f > h; h++) e[h].checked && (g = !0); + for (var h = 0; f > h; h++) g ? a(e[h]).removeAttr("data-invalid").parent().removeClass("error") : a(e[h]).attr("data-invalid", "").parent().addClass("error"); + return g + }, + valid_equal: function(b) { + var d = c.getElementById(b.getAttribute("data-equalto")).value, + e = b.value, + f = d === e; + return f ? a(b).removeAttr("data-invalid").parent().removeClass("error") : a(b).attr("data-invalid", "").parent().addClass("error"), f + } + } +}(jQuery, this, this.document), +function(a) { + "use strict"; + Foundation.libs.accordion = { + name: "accordion", + version: "5.0.3", + settings: { + active_class: "active", + toggleable: !0 + }, + init: function(a, b, c) { + this.bindings(b, c) + }, + events: function() { + a(this.scope).off(".accordion").on("click.fndtn.accordion", "[data-accordion] > dd > a", function(b) { + var c = a(this).parent(), + d = a("#" + this.href.split("#")[1]), + e = a("> dd > .content", d.closest("[data-accordion]")), + f = c.parent().data("accordion-init"), + g = a("> dd > .content." + f.active_class, c.parent()); + return b.preventDefault(), g[0] == d[0] && f.toggleable ? d.toggleClass(f.active_class) : (e.removeClass(f.active_class), void d.addClass(f.active_class)) + }) + }, + off: function() {}, + reflow: function() {} + } +}(jQuery, this, this.document), +function(a) { + "use strict"; + Foundation.libs.alert = { + name: "alert", + version: "5.0.3", + settings: { + animation: "fadeOut", + speed: 300, + callback: function() {} + }, + init: function(a, b, c) { + this.bindings(b, c) + }, + events: function() { + a(this.scope).off(".alert").on("click.fndtn.alert", "[data-alert] a.close", function(b) { + var c = a(this).closest("[data-alert]"), + d = c.data("alert-init") || Foundation.libs.alert.settings; + b.preventDefault(), c[d.animation](d.speed, function() { + a(this).trigger("closed").remove(), d.callback() + }) + }) + }, + reflow: function() {} + } +}(jQuery, this, this.document), +function(a, b, c, d) { + "use strict"; + Foundation.libs.clearing = { + name: "clearing", + version: "5.0.3", + settings: { + templates: { + viewing: '×' + }, + close_selectors: ".clearing-close", + init: !1, + locked: !1 + }, + init: function(b, c, d) { + var e = this; + Foundation.inherit(this, "throttle loaded"), this.bindings(c, d), a(this.scope).is("[data-clearing]") ? this.assemble(a("li", this.scope)) : a("[data-clearing]", this.scope).each(function() { + e.assemble(a("li", this)) + }) + }, + events: function(c) { + var d = this; + a(this.scope).off(".clearing").on("click.fndtn.clearing", "ul[data-clearing] li", function(b, c, e) { + var c = c || a(this), + e = e || c, + f = c.next("li"), + g = c.closest("[data-clearing]").data("clearing-init"), + h = a(b.target); + b.preventDefault(), g || (d.init(), g = c.closest("[data-clearing]").data("clearing-init")), e.hasClass("visible") && c[0] === e[0] && f.length > 0 && d.is_open(c) && (e = f, h = a("img", e)), d.open(h, c, e), d.update_paddles(e) + }).on("click.fndtn.clearing", ".clearing-main-next", function(a) { + d.nav(a, "next") + }).on("click.fndtn.clearing", ".clearing-main-prev", function(a) { + d.nav(a, "prev") + }).on("click.fndtn.clearing", this.settings.close_selectors, function(a) { + Foundation.libs.clearing.close(a, this) + }).on("keydown.fndtn.clearing", function(a) { + d.keydown(a) + }), a(b).off(".clearing").on("resize.fndtn.clearing", function() { + d.resize() + }), this.swipe_events(c) + }, + swipe_events: function() { + var b = this; + a(this.scope).on("touchstart.fndtn.clearing", ".visible-img", function(b) { + b.touches || (b = b.originalEvent); + var c = { + start_page_x: b.touches[0].pageX, + start_page_y: b.touches[0].pageY, + start_time: (new Date).getTime(), + delta_x: 0, + is_scrolling: d + }; + a(this).data("swipe-transition", c), b.stopPropagation() + }).on("touchmove.fndtn.clearing", ".visible-img", function(c) { + if (c.touches || (c = c.originalEvent), !(c.touches.length > 1 || c.scale && 1 !== c.scale)) { + var d = a(this).data("swipe-transition"); + if ("undefined" == typeof d && (d = {}), d.delta_x = c.touches[0].pageX - d.start_page_x, "undefined" == typeof d.is_scrolling && (d.is_scrolling = !! (d.is_scrolling || Math.abs(d.delta_x) < Math.abs(c.touches[0].pageY - d.start_page_y))), !d.is_scrolling && !d.active) { + c.preventDefault(); + var e = d.delta_x < 0 ? "next" : "prev"; + d.active = !0, b.nav(c, e) + } + } + }).on("touchend.fndtn.clearing", ".visible-img", function(b) { + a(this).data("swipe-transition", {}), b.stopPropagation() + }) + }, + assemble: function(b) { + var c = b.parent(); + if (!c.parent().hasClass("carousel")) { + c.after('
'); + var d = a("#foundationClearingHolder"), + e = c.data("clearing-init"), + f = c.detach(), + g = { + grid: '", + viewing: e.templates.viewing + }, h = '
' + g.viewing + g.grid + "
"; + return d.after(h).remove() + } + }, + open: function(b, c, d) { + var e = d.closest(".clearing-assembled"), + f = a("div", e).first(), + g = a(".visible-img", f), + h = a("img", g).not(b); + this.locked() || (h.attr("src", this.load(b)).css("visibility", "hidden"), this.loaded(h, function() { + h.css("visibility", "visible"), e.addClass("clearing-blackout"), f.addClass("clearing-container"), g.show(), this.fix_height(d).caption(a(".clearing-caption", g), b).center(h).shift(c, d, function() { + d.siblings().removeClass("visible"), d.addClass("visible") + }) + }.bind(this))) + }, + close: function(b, c) { + b.preventDefault(); + var d, e, f = function(a) { + return /blackout/.test(a.selector) ? a : a.closest(".clearing-blackout") + }(a(c)); + return c === b.target && f && (d = a("div", f).first(), e = a(".visible-img", d), this.settings.prev_index = 0, a("ul[data-clearing]", f).attr("style", "").closest(".clearing-blackout").removeClass("clearing-blackout"), d.removeClass("clearing-container"), e.hide()), !1 + }, + is_open: function(a) { + return a.parent().prop("style").length > 0 + }, + keydown: function(b) { + var c = a("ul[data-clearing]", ".clearing-blackout"), + d = this.rtl ? 37 : 39, + e = this.rtl ? 39 : 37, + f = 27; + b.which === d && this.go(c, "next"), b.which === e && this.go(c, "prev"), b.which === f && a("a.clearing-close").trigger("click") + }, + nav: function(b, c) { + var d = a("ul[data-clearing]", ".clearing-blackout"); + b.preventDefault(), this.go(d, c) + }, + resize: function() { + var b = a("img", ".clearing-blackout .visible-img"); + b.length && this.center(b) + }, + fix_height: function(b) { + var c = b.parent().children(); + return c.each(function() { + var b = a(this), + c = b.find("img"); + b.height() > c.outerHeight() && b.addClass("fix-height") + }).closest("ul").width(100 * c.length + "%"), this + }, + update_paddles: function(b) { + var c = b.closest(".carousel").siblings(".visible-img"); + b.next().length > 0 ? a(".clearing-main-next", c).removeClass("disabled") : a(".clearing-main-next", c).addClass("disabled"), b.prev().length > 0 ? a(".clearing-main-prev", c).removeClass("disabled") : a(".clearing-main-prev", c).addClass("disabled") + }, + center: function(a) { + return a.css(this.rtl ? { + marginRight: -(a.outerWidth() / 2), + marginTop: -(a.outerHeight() / 2), + left: "auto", + right: "50%" + } : { + marginLeft: -(a.outerWidth() / 2), + marginTop: -(a.outerHeight() / 2) + }), this + }, + load: function(a) { + if ("A" === a[0].nodeName) var b = a.attr("href"); + else var b = a.parent().attr("href"); + return this.preload(a), b ? b : a.attr("src") + }, + preload: function(a) { + this.img(a.closest("li").next()).img(a.closest("li").prev()) + }, + img: function(b) { + if (b.length) { + var c = new Image, + d = a("a", b); + c.src = d.length ? d.attr("href") : a("img", b).attr("src") + } + return this + }, + caption: function(a, b) { + var c = b.data("caption"); + return c ? a.html(c).show() : a.text("").hide(), this + }, + go: function(b, c) { + var d = a(".visible", b), + e = d[c](); + e.length && a("img", e).trigger("click", [d, e]) + }, + shift: function(a, b, c) { + var d, e = b.parent(), + f = this.settings.prev_index || b.index(), + g = this.direction(e, a, b), + h = this.rtl ? "right" : "left", + i = parseInt(e.css("left"), 10), + j = b.outerWidth(), + k = {}; + b.index() === f || /skip/.test(g) ? /skip/.test(g) && (d = b.index() - this.settings.up_count, this.lock(), d > 0 ? (k[h] = -(d * j), e.animate(k, 300, this.unlock())) : (k[h] = 0, e.animate(k, 300, this.unlock()))) : /left/.test(g) ? (this.lock(), k[h] = i + j, e.animate(k, 300, this.unlock())) : /right/.test(g) && (this.lock(), k[h] = i - j, e.animate(k, 300, this.unlock())), c() + }, + direction: function(b, c, d) { + var e, f = a("li", b), + g = f.outerWidth() + f.outerWidth() / 4, + h = Math.floor(a(".clearing-container").outerWidth() / g) - 1, + i = f.index(d); + return this.settings.up_count = h, e = this.adjacent(this.settings.prev_index, i) ? i > h && i > this.settings.prev_index ? "right" : i > h - 1 && i <= this.settings.prev_index ? "left" : !1 : "skip", this.settings.prev_index = i, e + }, + adjacent: function(a, b) { + for (var c = b + 1; c >= b - 1; c--) if (c === a) return !0; + return !1 + }, + lock: function() { + this.settings.locked = !0 + }, + unlock: function() { + this.settings.locked = !1 + }, + locked: function() { + return this.settings.locked + }, + off: function() { + a(this.scope).off(".fndtn.clearing"), a(b).off(".fndtn.clearing") + }, + reflow: function() { + this.init() + } + } +}(jQuery, this, this.document), +function(a, b) { + "use strict"; + Foundation.libs.dropdown = { + name: "dropdown", + version: "5.0.3", + settings: { + active_class: "open", + is_hover: !1, + opened: function() {}, + closed: function() {} + }, + init: function(a, b, c) { + Foundation.inherit(this, "throttle"), this.bindings(b, c) + }, + events: function() { + var c = this; + a(this.scope).off(".dropdown").on("click.fndtn.dropdown", "[data-dropdown]", function(b) { + var d = a(this).data("dropdown-init") || c.settings; + b.preventDefault(), c.closeall.call(c), (!d.is_hover || Modernizr.touch) && c.toggle(a(this)) + }).on("mouseenter.fndtn.dropdown", "[data-dropdown], [data-dropdown-content]", function(b) { + var d = a(this); + if (clearTimeout(c.timeout), d.data("dropdown")) var e = a("#" + d.data("dropdown")), + f = d; + else { + var e = d; + f = a("[data-dropdown='" + e.attr("id") + "']") + } + var g = f.data("dropdown-init") || c.settings; + a(b.target).data("dropdown") && g.is_hover && c.closeall.call(c), g.is_hover && c.open.apply(c, [e, f]) + }).on("mouseleave.fndtn.dropdown", "[data-dropdown], [data-dropdown-content]", function() { + var b = a(this); + c.timeout = setTimeout(function() { + if (b.data("dropdown")) { + var d = b.data("dropdown-init") || c.settings; + d.is_hover && c.close.call(c, a("#" + b.data("dropdown"))) + } else { + var e = a('[data-dropdown="' + a(this).attr("id") + '"]'), + d = e.data("dropdown-init") || c.settings; + d.is_hover && c.close.call(c, b) + } + }.bind(this), 150) + }).on("click.fndtn.dropdown", function(b) { + var d = a(b.target).closest("[data-dropdown-content]"); + if (!a(b.target).data("dropdown") && !a(b.target).parent().data("dropdown")) return !a(b.target).data("revealId") && d.length > 0 && (a(b.target).is("[data-dropdown-content]") || a.contains(d.first()[0], b.target)) ? void b.stopPropagation() : void c.close.call(c, a("[data-dropdown-content]")) + }).on("opened.fndtn.dropdown", "[data-dropdown-content]", function() { + c.settings.opened.call(this) + }).on("closed.fndtn.dropdown", "[data-dropdown-content]", function() { + c.settings.closed.call(this) + }), a(b).off(".dropdown").on("resize.fndtn.dropdown", c.throttle(function() { + c.resize.call(c) + }, 50)).trigger("resize") + }, + close: function(b) { + var c = this; + b.each(function() { + a(this).hasClass(c.settings.active_class) && (a(this).css(Foundation.rtl ? "right" : "left", "-99999px").removeClass(c.settings.active_class), a(this).trigger("closed")) + }) + }, + closeall: function() { + var b = this; + a.each(a("[data-dropdown-content]"), function() { + b.close.call(b, a(this)) + }) + }, + open: function(a, b) { + this.css(a.addClass(this.settings.active_class), b), a.trigger("opened") + }, + toggle: function(b) { + var c = a("#" + b.data("dropdown")); + 0 !== c.length && (this.close.call(this, a("[data-dropdown-content]").not(c)), c.hasClass(this.settings.active_class) ? this.close.call(this, c) : (this.close.call(this, a("[data-dropdown-content]")), this.open.call(this, c, b))) + }, + resize: function() { + var b = a("[data-dropdown-content].open"), + c = a("[data-dropdown='" + b.attr("id") + "']"); + b.length && c.length && this.css(b, c) + }, + css: function(c, d) { + var e = c.offsetParent(), + f = d.offset(); + if (f.top -= e.offset().top, f.left -= e.offset().left, this.small()) c.css({ + position: "absolute", + width: "95%", + "max-width": "none", + top: f.top + d.outerHeight() + }), c.css(Foundation.rtl ? "right" : "left", "2.5%"); + else { + if (!Foundation.rtl && a(b).width() > c.outerWidth() + d.offset().left) { + var g = f.left; + c.hasClass("right") && c.removeClass("right") + } else { + c.hasClass("right") || c.addClass("right"); + var g = f.left - (c.outerWidth() - d.outerWidth()) + } + c.attr("style", "").css({ + position: "absolute", + top: f.top + d.outerHeight(), + left: g + }) + } + return c + }, + small: function() { + return matchMedia(Foundation.media_queries.small).matches && !matchMedia(Foundation.media_queries.medium).matches + }, + off: function() { + a(this.scope).off(".fndtn.dropdown"), a("html, body").off(".fndtn.dropdown"), a(b).off(".fndtn.dropdown"), a("[data-dropdown-content]").off(".fndtn.dropdown"), this.settings.init = !1 + }, + reflow: function() {} + } +}(jQuery, this, this.document), +function(a, b) { + "use strict"; + Foundation.libs.interchange = { + name: "interchange", + version: "5.0.3", + cache: {}, + images_loaded: !1, + nodes_loaded: !1, + settings: { + load_attr: "interchange", + named_queries: { + "default": "only screen", + small: Foundation.media_queries.small, + medium: Foundation.media_queries.medium, + large: Foundation.media_queries.large, + xlarge: Foundation.media_queries.xlarge, + xxlarge: Foundation.media_queries.xxlarge, + landscape: "only screen and (orientation: landscape)", + portrait: "only screen and (orientation: portrait)", + retina: "only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx)" + }, + directives: { + replace: function(b, c, d) { + if (/IMG/.test(b[0].nodeName)) { + var e = b[0].src; + if (new RegExp(c, "i").test(e)) return; + return b[0].src = c, d(b[0].src) + } + var f = b.data("interchange-last-path"); + if (f != c) return a.get(c, function(a) { + b.html(a), b.data("interchange-last-path", c), d() + }) + } + } + }, + init: function(b, c, d) { + Foundation.inherit(this, "throttle"), this.data_attr = "data-" + this.settings.load_attr, a.extend(!0, this.settings, c, d), this.bindings(c, d), this.load("images"), this.load("nodes") + }, + events: function() { + var c = this; + return a(b).off(".interchange").on("resize.fndtn.interchange", c.throttle(function() { + c.resize.call(c) + }, 50)), this + }, + resize: function() { + var b = this.cache; + if (!this.images_loaded || !this.nodes_loaded) return void setTimeout(a.proxy(this.resize, this), 50); + for (var c in b) if (b.hasOwnProperty(c)) { + var d = this.results(c, b[c]); + d && this.settings.directives[d.scenario[1]](d.el, d.scenario[0], function() { + if (arguments[0] instanceof Array) var a = arguments[0]; + else var a = Array.prototype.slice.call(arguments, 0); + d.el.trigger(d.scenario[1], a) + }) + } + }, + results: function(a, b) { + var c = b.length; + if (c > 0) for (var d = this.S('[data-uuid="' + a + '"]'), e = c - 1; e >= 0; e--) { + var f, g = b[e][2]; + if (f = matchMedia(this.settings.named_queries.hasOwnProperty(g) ? this.settings.named_queries[g] : g), f.matches) return { + el: d, + scenario: b[e] + } + } + return !1 + }, + load: function(a, b) { + return ("undefined" == typeof this["cached_" + a] || b) && this["update_" + a](), this["cached_" + a] + }, + update_images: function() { + var a = this.S("img[" + this.data_attr + "]"), + b = a.length, + c = 0, + d = this.data_attr; + this.cache = {}, this.cached_images = [], this.images_loaded = 0 === b; + for (var e = b - 1; e >= 0; e--) { + if (c++, a[e]) { + var f = a[e].getAttribute(d) || ""; + f.length > 0 && this.cached_images.push(a[e]) + } + c === b && (this.images_loaded = !0, this.enhance("images")) + } + return this + }, + update_nodes: function() { + var a = this.S("[" + this.data_attr + "]").not("img"), + b = a.length, + c = 0, + d = this.data_attr; + this.cached_nodes = [], this.nodes_loaded = 0 === b; + for (var e = b - 1; e >= 0; e--) { + c++; + var f = a[e].getAttribute(d) || ""; + f.length > 0 && this.cached_nodes.push(a[e]), c === b && (this.nodes_loaded = !0, this.enhance("nodes")) + } + return this + }, + enhance: function(c) { + for (var d = this["cached_" + c].length, e = d - 1; e >= 0; e--) this.object(a(this["cached_" + c][e])); + return a(b).trigger("resize") + }, + parse_params: function(a, b, c) { + return [this.trim(a), this.convert_directive(b), this.trim(c)] + }, + convert_directive: function(a) { + var b = this.trim(a); + return b.length > 0 ? b : "replace" + }, + object: function(a) { + var b = this.parse_data_attr(a), + c = [], + d = b.length; + if (d > 0) for (var e = d - 1; e >= 0; e--) { + var f = b[e].split(/\((.*?)(\))$/); + if (f.length > 1) { + var g = f[0].split(","), + h = this.parse_params(g[0], g[1], f[1]); + c.push(h) + } + } + return this.store(a, c) + }, + uuid: function(a) { + function b() { + return (65536 * (1 + Math.random()) | 0).toString(16).substring(1) + } + var c = a || "-"; + return b() + b() + c + b() + c + b() + c + b() + c + b() + b() + b() + }, + store: function(a, b) { + var c = this.uuid(), + d = a.data("uuid"); + return this.cache[d] ? this.cache[d] : (a.attr("data-uuid", c), this.cache[c] = b) + }, + trim: function(b) { + return "string" == typeof b ? a.trim(b) : b + }, + parse_data_attr: function(a) { + for (var b = a.data(this.settings.load_attr).split(/\[(.*?)\]/), c = b.length, d = [], e = c - 1; e >= 0; e--) b[e].replace(/[\W\d]+/, "").length > 4 && d.push(b[e]); + return d + }, + reflow: function() { + this.load("images", !0), this.load("nodes", !0) + } + } +}(jQuery, this, this.document), +function(a, b, c, d) { + "use strict"; + Foundation.libs.joyride = { + name: "joyride", + version: "5.0.3", + defaults: { + expose: !1, + modal: !0, + tip_location: "bottom", + nub_position: "auto", + scroll_speed: 1500, + scroll_animation: "linear", + timer: 0, + start_timer_on_click: !0, + start_offset: 0, + next_button: !0, + tip_animation: "fade", + pause_after: [], + exposed: [], + tip_animation_fade_speed: 300, + cookie_monster: !1, + cookie_name: "joyride", + cookie_domain: !1, + cookie_expires: 365, + tip_container: "body", + tip_location_patterns: { + top: ["bottom"], + bottom: [], + left: ["right", "top", "bottom"], + right: ["left", "top", "bottom"] + }, + post_ride_callback: function() {}, + post_step_callback: function() {}, + pre_step_callback: function() {}, + pre_ride_callback: function() {}, + post_expose_callback: function() {}, + template: { + link: '×', + timer: '
', + tip: '
', + wrapper: '
', + button: '', + modal: '
', + expose: '
', + expose_cover: '
' + }, + expose_add_class: "" + }, + init: function(a, b, c) { + Foundation.inherit(this, "throttle delay"), this.settings = this.defaults, this.bindings(b, c) + }, + events: function() { + var c = this; + a(this.scope).off(".joyride").on("click.fndtn.joyride", ".joyride-next-tip, .joyride-modal-bg", function(a) { + a.preventDefault(), this.settings.$li.next().length < 1 ? this.end() : this.settings.timer > 0 ? (clearTimeout(this.settings.automate), this.hide(), this.show(), this.startTimer()) : (this.hide(), this.show()) + }.bind(this)).on("click.fndtn.joyride", ".joyride-close-tip", function(a) { + a.preventDefault(), this.end() + }.bind(this)), a(b).off(".joyride").on("resize.fndtn.joyride", c.throttle(function() { + if (a("[data-joyride]").length > 0 && c.settings.$next_tip) { + if (c.settings.exposed.length > 0) { + var b = a(c.settings.exposed); + b.each(function() { + var b = a(this); + c.un_expose(b), c.expose(b) + }) + } + c.is_phone() ? c.pos_phone() : c.pos_default(!1, !0) + } + }, 100)) + }, + start: function() { + var b = this, + c = a("[data-joyride]", this.scope), + d = ["timer", "scrollSpeed", "startOffset", "tipAnimationFadeSpeed", "cookieExpires"], + e = d.length; + !c.length > 0 || (this.settings.init || this.events(), this.settings = c.data("joyride-init"), this.settings.$content_el = c, this.settings.$body = a(this.settings.tip_container), this.settings.body_offset = a(this.settings.tip_container).position(), this.settings.$tip_content = this.settings.$content_el.find("> li"), this.settings.paused = !1, this.settings.attempts = 0, "function" != typeof a.cookie && (this.settings.cookie_monster = !1), (!this.settings.cookie_monster || this.settings.cookie_monster && !a.cookie(this.settings.cookie_name)) && (this.settings.$tip_content.each(function(c) { + var f = a(this); + this.settings = a.extend({}, b.defaults, b.data_options(f)); + for (var g = e - 1; g >= 0; g--) b.settings[d[g]] = parseInt(b.settings[d[g]], 10); + b.create({ + $li: f, + index: c + }) + }), !this.settings.start_timer_on_click && this.settings.timer > 0 ? (this.show("init"), this.startTimer()) : this.show("init"))) + }, + resume: function() { + this.set_li(), this.show() + }, + tip_template: function(b) { + var c, d; + return b.tip_class = b.tip_class || "", c = a(this.settings.template.tip).addClass(b.tip_class), d = a.trim(a(b.li).html()) + this.button_text(b.button_text) + this.settings.template.link + this.timer_instance(b.index), c.append(a(this.settings.template.wrapper)), c.first().attr("data-index", b.index), a(".joyride-content-wrapper", c).append(d), c[0] + }, + timer_instance: function(b) { + var c; + return c = 0 === b && this.settings.start_timer_on_click && this.settings.timer > 0 || 0 === this.settings.timer ? "" : a(this.settings.template.timer)[0].outerHTML + }, + button_text: function(b) { + return this.settings.next_button ? (b = a.trim(b) || "Next", b = a(this.settings.template.button).append(b)[0].outerHTML) : b = "", b + }, + create: function(b) { + var c = b.$li.attr("data-button") || b.$li.attr("data-text"), + d = b.$li.attr("class"), + e = a(this.tip_template({ + tip_class: d, + index: b.index, + button_text: c, + li: b.$li + })); + a(this.settings.tip_container).append(e) + }, + show: function(b) { + var c = null; + this.settings.$li === d || -1 === a.inArray(this.settings.$li.index(), this.settings.pause_after) ? (this.settings.paused ? this.settings.paused = !1 : this.set_li(b), this.settings.attempts = 0, this.settings.$li.length && this.settings.$target.length > 0 ? (b && (this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip), this.settings.modal && this.show_modal()), this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip), this.settings.modal && this.settings.expose && this.expose(), this.settings.tip_settings = a.extend({}, this.settings, this.data_options(this.settings.$li)), this.settings.timer = parseInt(this.settings.timer, 10), this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location], /body/i.test(this.settings.$target.selector) || this.scroll_to(), this.is_phone() ? this.pos_phone(!0) : this.pos_default(!0), c = this.settings.$next_tip.find(".joyride-timer-indicator"), /pop/i.test(this.settings.tip_animation) ? (c.width(0), this.settings.timer > 0 ? (this.settings.$next_tip.show(), this.delay(function() { + c.animate({ + width: c.parent().width() + }, this.settings.timer, "linear") + }.bind(this), this.settings.tip_animation_fade_speed)) : this.settings.$next_tip.show()) : /fade/i.test(this.settings.tip_animation) && (c.width(0), this.settings.timer > 0 ? (this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed).show(), this.delay(function() { + c.animate({ + width: c.parent().width() + }, this.settings.timer, "linear") + }.bind(this), this.settings.tip_animation_fadeSpeed)) : this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed)), this.settings.$current_tip = this.settings.$next_tip) : this.settings.$li && this.settings.$target.length < 1 ? this.show() : this.end()) : this.settings.paused = !0 + }, + is_phone: function() { + return matchMedia(Foundation.media_queries.small).matches && !matchMedia(Foundation.media_queries.medium).matches + }, + hide: function() { + this.settings.modal && this.settings.expose && this.un_expose(), this.settings.modal || a(".joyride-modal-bg").hide(), this.settings.$current_tip.css("visibility", "hidden"), setTimeout(a.proxy(function() { + this.hide(), this.css("visibility", "visible") + }, this.settings.$current_tip), 0), this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip) + }, + set_li: function(a) { + a ? (this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset), this.set_next_tip(), this.settings.$current_tip = this.settings.$next_tip) : (this.settings.$li = this.settings.$li.next(), this.set_next_tip()), this.set_target() + }, + set_next_tip: function() { + this.settings.$next_tip = a(".joyride-tip-guide").eq(this.settings.$li.index()), this.settings.$next_tip.data("closed", "") + }, + set_target: function() { + var b = this.settings.$li.attr("data-class"), + d = this.settings.$li.attr("data-id"), + e = function() { + return d ? a(c.getElementById(d)) : b ? a("." + b).first() : a("body") + }; + this.settings.$target = e() + }, + scroll_to: function() { + var c, d; + c = a(b).height() / 2, d = Math.ceil(this.settings.$target.offset().top - c + this.settings.$next_tip.outerHeight()), 0 != d && a("html, body").animate({ + scrollTop: d + }, this.settings.scroll_speed, "swing") + }, + paused: function() { + return -1 === a.inArray(this.settings.$li.index() + 1, this.settings.pause_after) + }, + restart: function() { + this.hide(), this.settings.$li = d, this.show("init") + }, + pos_default: function(c, d) { + var e = (Math.ceil(a(b).height() / 2), this.settings.$next_tip.offset(), this.settings.$next_tip.find(".joyride-nub")), + f = Math.ceil(e.outerWidth() / 2), + g = Math.ceil(e.outerHeight() / 2), + h = c || !1; + h && (this.settings.$next_tip.css("visibility", "hidden"), this.settings.$next_tip.show()), "undefined" == typeof d && (d = !1), /body/i.test(this.settings.$target.selector) ? this.settings.$li.length && this.pos_modal(e) : (this.bottom() ? (this.settings.$next_tip.css(this.rtl ? { + top: this.settings.$target.offset().top + g + this.settings.$target.outerHeight(), + left: this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + } : { + top: this.settings.$target.offset().top + g + this.settings.$target.outerHeight(), + left: this.settings.$target.offset().left + }), this.nub_position(e, this.settings.tip_settings.nub_position, "top")) : this.top() ? (this.settings.$next_tip.css(this.rtl ? { + top: this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - g, + left: this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + } : { + top: this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - g, + left: this.settings.$target.offset().left + }), this.nub_position(e, this.settings.tip_settings.nub_position, "bottom")) : this.right() ? (this.settings.$next_tip.css({ + top: this.settings.$target.offset().top, + left: this.outerWidth(this.settings.$target) + this.settings.$target.offset().left + f + }), this.nub_position(e, this.settings.tip_settings.nub_position, "left")) : this.left() && (this.settings.$next_tip.css({ + top: this.settings.$target.offset().top, + left: this.settings.$target.offset().left - this.outerWidth(this.settings.$next_tip) - f + }), this.nub_position(e, this.settings.tip_settings.nub_position, "right")), !this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length && (e.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"), this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts], this.settings.attempts++, this.pos_default())), h && (this.settings.$next_tip.hide(), this.settings.$next_tip.css("visibility", "visible")) + }, + pos_phone: function(b) { + var c = this.settings.$next_tip.outerHeight(), + d = (this.settings.$next_tip.offset(), this.settings.$target.outerHeight()), + e = a(".joyride-nub", this.settings.$next_tip), + f = Math.ceil(e.outerHeight() / 2), + g = b || !1; + e.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"), g && (this.settings.$next_tip.css("visibility", "hidden"), this.settings.$next_tip.show()), /body/i.test(this.settings.$target.selector) ? this.settings.$li.length && this.pos_modal(e) : this.top() ? (this.settings.$next_tip.offset({ + top: this.settings.$target.offset().top - c - f + }), e.addClass("bottom")) : (this.settings.$next_tip.offset({ + top: this.settings.$target.offset().top + d + f + }), e.addClass("top")), g && (this.settings.$next_tip.hide(), this.settings.$next_tip.css("visibility", "visible")) + }, + pos_modal: function(a) { + this.center(), a.hide(), this.show_modal() + }, + show_modal: function() { + if (!this.settings.$next_tip.data("closed")) { + var b = a(".joyride-modal-bg"); + b.length < 1 && a("body").append(this.settings.template.modal).show(), /pop/i.test(this.settings.tip_animation) ? b.show() : b.fadeIn(this.settings.tip_animation_fade_speed) + } + }, + expose: function() { + var c, d, e, f, g, h = "expose-" + Math.floor(1e4 * Math.random()); + if (arguments.length > 0 && arguments[0] instanceof a) e = arguments[0]; + else { + if (!this.settings.$target || /body/i.test(this.settings.$target.selector)) return !1; + e = this.settings.$target + } + return e.length < 1 ? (b.console && console.error("element not valid", e), !1) : (c = a(this.settings.template.expose), this.settings.$body.append(c), c.css({ + top: e.offset().top, + left: e.offset().left, + width: e.outerWidth(!0), + height: e.outerHeight(!0) + }), d = a(this.settings.template.expose_cover), f = { + zIndex: e.css("z-index"), + position: e.css("position") + }, g = null == e.attr("class") ? "" : e.attr("class"), e.css("z-index", parseInt(c.css("z-index")) + 1), "static" == f.position && e.css("position", "relative"), e.data("expose-css", f), e.data("orig-class", g), e.attr("class", g + " " + this.settings.expose_add_class), d.css({ + top: e.offset().top, + left: e.offset().left, + width: e.outerWidth(!0), + height: e.outerHeight(!0) + }), this.settings.modal && this.show_modal(), this.settings.$body.append(d), c.addClass(h), d.addClass(h), e.data("expose", h), this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, e), void this.add_exposed(e)) + }, + un_expose: function() { + var c, d, e, f, g, h = !1; + if (arguments.length > 0 && arguments[0] instanceof a) d = arguments[0]; + else { + if (!this.settings.$target || /body/i.test(this.settings.$target.selector)) return !1; + d = this.settings.$target + } + return d.length < 1 ? (b.console && console.error("element not valid", d), !1) : (c = d.data("expose"), e = a("." + c), arguments.length > 1 && (h = arguments[1]), h === !0 ? a(".joyride-expose-wrapper,.joyride-expose-cover").remove() : e.remove(), f = d.data("expose-css"), "auto" == f.zIndex ? d.css("z-index", "") : d.css("z-index", f.zIndex), f.position != d.css("position") && ("static" == f.position ? d.css("position", "") : d.css("position", f.position)), g = d.data("orig-class"), d.attr("class", g), d.removeData("orig-classes"), d.removeData("expose"), d.removeData("expose-z-index"), void this.remove_exposed(d)) + }, + add_exposed: function(b) { + this.settings.exposed = this.settings.exposed || [], b instanceof a || "object" == typeof b ? this.settings.exposed.push(b[0]) : "string" == typeof b && this.settings.exposed.push(b) + }, + remove_exposed: function(b) { + var c, d; + b instanceof a ? c = b[0] : "string" == typeof b && (c = b), this.settings.exposed = this.settings.exposed || [], d = this.settings.exposed.length; + for (var e = 0; d > e; e++) if (this.settings.exposed[e] == c) return void this.settings.exposed.splice(e, 1) + }, + center: function() { + var c = a(b); + return this.settings.$next_tip.css({ + top: (c.height() - this.settings.$next_tip.outerHeight()) / 2 + c.scrollTop(), + left: (c.width() - this.settings.$next_tip.outerWidth()) / 2 + c.scrollLeft() + }), !0 + }, + bottom: function() { + return /bottom/i.test(this.settings.tip_settings.tip_location) + }, + top: function() { + return /top/i.test(this.settings.tip_settings.tip_location) + }, + right: function() { + return /right/i.test(this.settings.tip_settings.tip_location) + }, + left: function() { + return /left/i.test(this.settings.tip_settings.tip_location) + }, + corners: function(c) { + var d = a(b), + e = d.height() / 2, + f = Math.ceil(this.settings.$target.offset().top - e + this.settings.$next_tip.outerHeight()), + g = d.width() + d.scrollLeft(), + h = d.height() + f, + i = d.height() + d.scrollTop(), + j = d.scrollTop(); + return j > f && (j = 0 > f ? 0 : f), h > i && (i = h), [c.offset().top < j, g < c.offset().left + c.outerWidth(), i < c.offset().top + c.outerHeight(), d.scrollLeft() > c.offset().left] + }, + visible: function(a) { + for (var b = a.length; b--;) if (a[b]) return !1; + return !0 + }, + nub_position: function(a, b, c) { + a.addClass("auto" === b ? c : b) + }, + startTimer: function() { + this.settings.$li.length ? this.settings.automate = setTimeout(function() { + this.hide(), this.show(), this.startTimer() + }.bind(this), this.settings.timer) : clearTimeout(this.settings.automate) + }, + end: function() { + this.settings.cookie_monster && a.cookie(this.settings.cookie_name, "ridden", { + expires: this.settings.cookie_expires, + domain: this.settings.cookie_domain + }), this.settings.timer > 0 && clearTimeout(this.settings.automate), this.settings.modal && this.settings.expose && this.un_expose(), this.settings.$next_tip.data("closed", !0), a(".joyride-modal-bg").hide(), this.settings.$current_tip.hide(), this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip), this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip), a(".joyride-tip-guide").remove() + }, + off: function() { + a(this.scope).off(".joyride"), a(b).off(".joyride"), a(".joyride-close-tip, .joyride-next-tip, .joyride-modal-bg").off(".joyride"), a(".joyride-tip-guide, .joyride-modal-bg").remove(), clearTimeout(this.settings.automate), this.settings = {} + }, + reflow: function() {} + } +}(jQuery, this, this.document), +function(a, b) { + "use strict"; + Foundation.libs.magellan = { + name: "magellan", + version: "5.0.3", + settings: { + active_class: "active", + threshold: 0 + }, + init: function(b, c) { + this.fixed_magellan = a("[data-magellan-expedition]"), this.magellan_placeholder = a("
").css({ + height: this.fixed_magellan.outerHeight(!0) + }).hide().insertAfter(this.fixed_magellan), this.set_threshold(), this.set_active_class(c), this.last_destination = a("[data-magellan-destination]").last(), this.events() + }, + events: function() { + var c = this; + a(this.scope).off(".magellan").on("arrival.fndtn.magellan", "[data-magellan-arrival]", function() { + var b = a(this), + d = b.closest("[data-magellan-expedition]"), + e = d.attr("data-magellan-active-class") || c.settings.active_class; + b.closest("[data-magellan-expedition]").find("[data-magellan-arrival]").not(b).removeClass(e), b.addClass(e) + }), this.fixed_magellan.off(".magellan").on("update-position.fndtn.magellan", function() { + a(this) + }).trigger("update-position"), a(b).off(".magellan").on("resize.fndtn.magellan", function() { + this.fixed_magellan.trigger("update-position") + }.bind(this)).on("scroll.fndtn.magellan", function() { + var d = a(b).scrollTop(); + c.fixed_magellan.each(function() { + var b = a(this); + "undefined" == typeof b.data("magellan-top-offset") && b.data("magellan-top-offset", b.offset().top), "undefined" == typeof b.data("magellan-fixed-position") && b.data("magellan-fixed-position", !1); + var e = d + c.settings.threshold > b.data("magellan-top-offset"), + f = b.attr("data-magellan-top-offset"); + b.data("magellan-fixed-position") != e && (b.data("magellan-fixed-position", e), e ? (b.addClass("fixed"), b.css({ + position: "fixed", + top: 0 + }), c.magellan_placeholder.show()) : (b.removeClass("fixed"), b.css({ + position: "", + top: "" + }), c.magellan_placeholder.hide()), e && "undefined" != typeof f && 0 != f && b.css({ + position: "fixed", + top: f + "px" + })) + }) + }), this.last_destination.length > 0 && a(b).on("scroll.fndtn.magellan", function() { + var d = a(b).scrollTop(), + e = d + a(b).height(), + f = Math.ceil(c.last_destination.offset().top); + a("[data-magellan-destination]").each(function() { + var b = a(this), + g = b.attr("data-magellan-destination"), + h = b.offset().top - b.outerHeight(!0) - d; + h <= c.settings.threshold && a("[data-magellan-arrival='" + g + "']").trigger("arrival"), e >= a(c.scope).height() && f > d && e > f && a("[data-magellan-arrival]").last().trigger("arrival") + }) + }) + }, + set_threshold: function() { + "number" != typeof this.settings.threshold && (this.settings.threshold = this.fixed_magellan.length > 0 ? this.fixed_magellan.outerHeight(!0) : 0) + }, + set_active_class: function(a) { + a && a.active_class && "string" == typeof a.active_class && (this.settings.active_class = a.active_class) + }, + off: function() { + a(this.scope).off(".fndtn.magellan"), a(b).off(".fndtn.magellan") + }, + reflow: function() {} + } +}(jQuery, this, this.document), +function(a) { + "use strict"; + Foundation.libs.offcanvas = { + name: "offcanvas", + version: "5.0.3", + settings: {}, + init: function() { + this.events() + }, + events: function() { + a(this.scope).off(".offcanvas").on("click.fndtn.offcanvas", ".left-off-canvas-toggle", function(b) { + b.preventDefault(), a(this).closest(".off-canvas-wrap").toggleClass("move-right") + }).on("click.fndtn.offcanvas", ".exit-off-canvas", function(b) { + b.preventDefault(), a(".off-canvas-wrap").removeClass("move-right") + }).on("click.fndtn.offcanvas", ".right-off-canvas-toggle", function(b) { + b.preventDefault(), a(this).closest(".off-canvas-wrap").toggleClass("move-left") + }).on("click.fndtn.offcanvas", ".exit-off-canvas", function(b) { + b.preventDefault(), a(".off-canvas-wrap").removeClass("move-left") + }) + }, + reflow: function() {} + } +}(jQuery, this, this.document), +function(a, b, c, d) { + "use strict"; + var e = function() {}, f = function(e, f) { + if (e.hasClass(f.slides_container_class)) return this; + var j, k, l, m, n, o, p = this, + q = e, + r = 0, + s = !1; + q.children().first().addClass(f.active_slide_class), p.update_slide_number = function(b) { + f.slide_number && (k.find("span:first").text(parseInt(b) + 1), k.find("span:last").text(q.children().length)), f.bullets && (l.children().removeClass(f.bullets_active_class), a(l.children().get(b)).addClass(f.bullets_active_class)) + }, p.update_active_link = function(b) { + var c = a('a[data-orbit-link="' + q.children().eq(b).attr("data-orbit-slide") + '"]'); + c.siblings().removeClass(f.bullets_active_class), c.addClass(f.bullets_active_class) + }, p.build_markup = function() { + q.wrap('
'), j = q.parent(), q.addClass(f.slides_container_class), f.navigation_arrows && (j.append(a('').addClass(f.prev_class)), j.append(a('').addClass(f.next_class))), f.timer && (m = a("
").addClass(f.timer_container_class), m.append(""), m.append(a("
").addClass(f.timer_progress_class)), m.addClass(f.timer_paused_class), j.append(m)), f.slide_number && (k = a("
").addClass(f.slide_number_class), k.append(" " + f.slide_number_text + " "), j.append(k)), f.bullets && (l = a("
    ").addClass(f.bullets_container_class), j.append(l), l.wrap('
    '), q.children().each(function(b) { + var c = a("
  1. ").attr("data-orbit-slide", b); + l.append(c) + })), f.stack_on_small && j.addClass(f.stack_on_small_class), p.update_slide_number(0), p.update_active_link(0) + }, p._goto = function(b, c) { + if (b === r) return !1; + "object" == typeof o && o.restart(); + var d = q.children(), + e = "next"; + if (s = !0, r > b && (e = "prev"), b >= d.length) { + if (!f.circular) return !1; + b = 0 + } else if (0 > b) { + if (!f.circular) return !1; + b = d.length - 1 + } + var g = a(d.get(r)), + h = a(d.get(b)); + g.css("zIndex", 2), g.removeClass(f.active_slide_class), h.css("zIndex", 4).addClass(f.active_slide_class), q.trigger("before-slide-change.fndtn.orbit"), f.before_slide_change(), p.update_active_link(b); + var i = function() { + var a = function() { + r = b, s = !1, c === !0 && (o = p.create_timer(), o.start()), p.update_slide_number(r), q.trigger("after-slide-change.fndtn.orbit", [{ + slide_number: r, + total_slides: d.length + }]), f.after_slide_change(r, d.length) + }; + q.height() != h.height() && f.variable_height ? q.animate({ + height: h.height() + }, 250, "linear", a) : a() + }; + if (1 === d.length) return i(), !1; + var j = function() { + "next" === e && n.next(g, h, i), "prev" === e && n.prev(g, h, i) + }; + h.height() > q.height() && f.variable_height ? q.animate({ + height: h.height() + }, 250, "linear", j) : j() + }, p.next = function(a) { + a.stopImmediatePropagation(), a.preventDefault(), p._goto(r + 1) + }, p.prev = function(a) { + a.stopImmediatePropagation(), a.preventDefault(), p._goto(r - 1) + }, p.link_custom = function(b) { + b.preventDefault(); + var c = a(this).attr("data-orbit-link"); + if ("string" == typeof c && "" != (c = a.trim(c))) { + var d = j.find("[data-orbit-slide=" + c + "]"); - 1 != d.index() && p._goto(d.index()) + } + }, p.link_bullet = function() { + var b = a(this).attr("data-orbit-slide"); + if ("string" == typeof b && "" != (b = a.trim(b))) if (isNaN(parseInt(b))) { + var c = j.find("[data-orbit-slide=" + b + "]"); - 1 != c.index() && p._goto(c.index() + 1) + } else p._goto(parseInt(b)) + }, p.timer_callback = function() { + p._goto(r + 1, !0) + }, p.compute_dimensions = function() { + var b = a(q.children().get(r)), + c = b.height(); + f.variable_height || q.children().each(function() { + a(this).height() > c && (c = a(this).height()) + }), q.height(c) + }, p.create_timer = function() { + var a = new g(j.find("." + f.timer_container_class), f, p.timer_callback); + return a + }, p.stop_timer = function() { + "object" == typeof o && o.stop() + }, p.toggle_timer = function() { + var a = j.find("." + f.timer_container_class); + a.hasClass(f.timer_paused_class) ? ("undefined" == typeof o && (o = p.create_timer()), o.start()) : "object" == typeof o && o.stop() + }, p.init = function() { + p.build_markup(), f.timer && (o = p.create_timer(), o.start()), n = new i(f, q), "slide" === f.animation && (n = new h(f, q)), j.on("click", "." + f.next_class, p.next), j.on("click", "." + f.prev_class, p.prev), j.on("click", "[data-orbit-slide]", p.link_bullet), j.on("click", p.toggle_timer), f.swipe && j.on("touchstart.fndtn.orbit", function(a) { + a.touches || (a = a.originalEvent); + var b = { + start_page_x: a.touches[0].pageX, + start_page_y: a.touches[0].pageY, + start_time: (new Date).getTime(), + delta_x: 0, + is_scrolling: d + }; + j.data("swipe-transition", b), a.stopPropagation() + }).on("touchmove.fndtn.orbit", function(a) { + if (a.touches || (a = a.originalEvent), !(a.touches.length > 1 || a.scale && 1 !== a.scale)) { + var b = j.data("swipe-transition"); + if ("undefined" == typeof b && (b = {}), b.delta_x = a.touches[0].pageX - b.start_page_x, "undefined" == typeof b.is_scrolling && (b.is_scrolling = !! (b.is_scrolling || Math.abs(b.delta_x) < Math.abs(a.touches[0].pageY - b.start_page_y))), !b.is_scrolling && !b.active) { + a.preventDefault(); + var c = b.delta_x < 0 ? r + 1 : r - 1; + b.active = !0, p._goto(c) + } + } + }).on("touchend.fndtn.orbit", function(a) { + j.data("swipe-transition", {}), a.stopPropagation() + }), j.on("mouseenter.fndtn.orbit", function() { + f.timer && f.pause_on_hover && p.stop_timer() + }).on("mouseleave.fndtn.orbit", function() { + f.timer && f.resume_on_mouseout && o.start() + }), a(c).on("click", "[data-orbit-link]", p.link_custom), a(b).on("resize", p.compute_dimensions), a(b).on("load", p.compute_dimensions), a(b).on("load", function() { + j.prev(".preloader").css("display", "none") + }), q.trigger("ready.fndtn.orbit") + }, p.init() + }, g = function(a, b, c) { + var d, e, f = this, + g = b.timer_speed, + h = a.find("." + b.timer_progress_class), + i = -1; + this.update_progress = function(a) { + var b = h.clone(); + b.attr("style", ""), b.css("width", a + "%"), h.replaceWith(b), h = b + }, this.restart = function() { + clearTimeout(e), a.addClass(b.timer_paused_class), i = -1, f.update_progress(0) + }, this.start = function() { + return a.hasClass(b.timer_paused_class) ? (i = -1 === i ? g : i, a.removeClass(b.timer_paused_class), d = (new Date).getTime(), h.animate({ + width: "100%" + }, i, "linear"), e = setTimeout(function() { + f.restart(), c() + }, i), void a.trigger("timer-started.fndtn.orbit")) : !0 + }, this.stop = function() { + if (a.hasClass(b.timer_paused_class)) return !0; + clearTimeout(e), a.addClass(b.timer_paused_class); + var c = (new Date).getTime(); + i -= c - d; + var h = 100 - i / g * 100; + f.update_progress(h), a.trigger("timer-stopped.fndtn.orbit") + } + }, h = function(b) { + var c = b.animation_speed, + d = 1 === a("html[dir=rtl]").length, + e = d ? "marginRight" : "marginLeft", + f = {}; + f[e] = "0%", this.next = function(a, b, d) { + a.animate({ + marginLeft: "-100%" + }, c), b.animate(f, c, function() { + a.css(e, "100%"), d() + }) + }, this.prev = function(a, b, d) { + a.animate({ + marginLeft: "100%" + }, c), b.css(e, "-100%"), b.animate(f, c, function() { + a.css(e, "100%"), d() + }) + } + }, i = function(b) { + { + var c = b.animation_speed; + 1 === a("html[dir=rtl]").length + } + this.next = function(a, b, d) { + b.css({ + margin: "0%", + opacity: "0.01" + }), b.animate({ + opacity: "1" + }, c, "linear", function() { + a.css("margin", "100%"), d() + }) + }, this.prev = function(a, b, d) { + b.css({ + margin: "0%", + opacity: "0.01" + }), b.animate({ + opacity: "1" + }, c, "linear", function() { + a.css("margin", "100%"), d() + }) + } + }; + Foundation.libs = Foundation.libs || {}, Foundation.libs.orbit = { + name: "orbit", + version: "5.0.3", + settings: { + animation: "slide", + timer_speed: 1e4, + pause_on_hover: !0, + resume_on_mouseout: !1, + animation_speed: 500, + stack_on_small: !1, + navigation_arrows: !0, + slide_number: !0, + slide_number_text: "of", + container_class: "orbit-container", + stack_on_small_class: "orbit-stack-on-small", + next_class: "orbit-next", + prev_class: "orbit-prev", + timer_container_class: "orbit-timer", + timer_paused_class: "paused", + timer_progress_class: "orbit-progress", + slides_container_class: "orbit-slides-container", + bullets_container_class: "orbit-bullets", + bullets_active_class: "active", + slide_number_class: "orbit-slide-number", + caption_class: "orbit-caption", + active_slide_class: "active", + orbit_transition_class: "orbit-transitioning", + bullets: !0, + circular: !0, + timer: !0, + variable_height: !1, + swipe: !0, + before_slide_change: e, + after_slide_change: e + }, + init: function(a, b, c) { + this.bindings(b, c) + }, + events: function(b) { + var c = new f(a(b), a(b).data("orbit-init")); + a(b).data(self.name + "-instance", c) + }, + reflow: function() { + var b = this; + if (a(b.scope).is("[data-orbit]")) { + var c = a(b.scope), + d = c.data(b.name + "-instance"); + d.compute_dimensions() + } else a("[data-orbit]", b.scope).each(function(c, d) { + var e = a(d), + f = (b.data_options(e), e.data(b.name + "-instance")); + f.compute_dimensions() + }) + } + } +}(jQuery, this, this.document), +function(a, b, c, d) { + "use strict"; + Foundation.libs.reveal = { + name: "reveal", + version: "5.0.3", + locked: !1, + settings: { + animation: "fadeAndPop", + animation_speed: 250, + close_on_background_click: !0, + close_on_esc: !0, + dismiss_modal_class: "close-reveal-modal", + bg_class: "reveal-modal-bg", + open: function() {}, + opened: function() {}, + close: function() {}, + closed: function() {}, + bg: a(".reveal-modal-bg"), + css: { + open: { + opacity: 0, + visibility: "visible", + display: "block" + }, + close: { + opacity: 1, + visibility: "hidden", + display: "none" + } + } + }, + init: function(b, c, d) { + Foundation.inherit(this, "delay"), a.extend(!0, this.settings, c, d), this.bindings(c, d) + }, + events: function() { + var b = this; + return a("[data-reveal-id]", this.scope).off(".reveal").on("click.fndtn.reveal", function(c) { + if (c.preventDefault(), !b.locked) { + var d = a(this), + e = d.data("reveal-ajax"); + if (b.locked = !0, "undefined" == typeof e) b.open.call(b, d); + else { + var f = e === !0 ? d.attr("href") : e; + b.open.call(b, d, { + url: f + }) + } + } + }), a(this.scope).off(".reveal"), a(c).on("click.fndtn.reveal", this.close_targets(), function(c) { + if (c.preventDefault(), !b.locked) { + var d = a("[data-reveal].open").data("reveal-init"), + e = a(c.target)[0] === a("." + d.bg_class)[0]; + if (e && !d.close_on_background_click) return; + b.locked = !0, b.close.call(b, e ? a("[data-reveal].open") : a(this).closest("[data-reveal]")) + } + }), a("[data-reveal]", this.scope).length > 0 ? a(this.scope).on("open.fndtn.reveal", this.settings.open).on("opened.fndtn.reveal", this.settings.opened).on("opened.fndtn.reveal", this.open_video).on("close.fndtn.reveal", this.settings.close).on("closed.fndtn.reveal", this.settings.closed).on("closed.fndtn.reveal", this.close_video) : a(this.scope).on("open.fndtn.reveal", "[data-reveal]", this.settings.open).on("opened.fndtn.reveal", "[data-reveal]", this.settings.opened).on("opened.fndtn.reveal", "[data-reveal]", this.open_video).on("close.fndtn.reveal", "[data-reveal]", this.settings.close).on("closed.fndtn.reveal", "[data-reveal]", this.settings.closed).on("closed.fndtn.reveal", "[data-reveal]", this.close_video), !0 + }, + key_up_on: function() { + var b = this; + return a("body").off("keyup.fndtn.reveal").on("keyup.fndtn.reveal", function(c) { + var d = a("[data-reveal].open"), + e = d.data("reveal-init"); + e && 27 === c.which && e.close_on_esc && !b.locked && b.close.call(b, d) + }), !0 + }, + key_up_off: function() { + return a("body").off("keyup.fndtn.reveal"), !0 + }, + open: function(b, c) { + var d = this; + if (b) if ("undefined" != typeof b.selector) var e = a("#" + b.data("reveal-id")); + else { + var e = a(this.scope); + c = b + } else var e = a(this.scope); + var f = e.data("reveal-init"); + if (!e.hasClass("open")) { + var g = a("[data-reveal].open"); + if ("undefined" == typeof e.data("css-top") && e.data("css-top", parseInt(e.css("top"), 10)).data("offset", this.cache_offset(e)), this.key_up_on(e), e.trigger("open"), g.length < 1 && this.toggle_bg(e), "string" == typeof c && (c = { + url: c + }), "undefined" != typeof c && c.url) { + var h = "undefined" != typeof c.success ? c.success : null; + a.extend(c, { + success: function(b, c, i) { + if (a.isFunction(h) && h(b, c, i), e.html(b), a(e).foundation("section", "reflow"), g.length > 0) { + var j = g.data("reveal-init"); + d.hide(g, j.css.close) + } + d.show(e, f.css.open) + } + }), a.ajax(c) + } else { + if (g.length > 0) { + var i = g.data("reveal-init"); + this.hide(g, i.css.close) + } + this.show(e, f.css.open) + } + } + }, + close: function(b) { + var b = b && b.length ? b : a(this.scope), + c = a("[data-reveal].open"), + d = b.data("reveal-init"); + c.length > 0 && (this.locked = !0, this.key_up_off(b), b.trigger("close"), this.toggle_bg(b), this.hide(c, d.css.close, d)) + }, + close_targets: function() { + var a = "." + this.settings.dismiss_modal_class; + return this.settings.close_on_background_click ? a + ", ." + this.settings.bg_class : a + }, + toggle_bg: function(b) { + b.data("reveal-init"); + 0 === a("." + this.settings.bg_class).length && (this.settings.bg = a("
    ", { + "class": this.settings.bg_class + }).appendTo("body")), this.settings.bg.filter(":visible").length > 0 ? this.hide(this.settings.bg) : this.show(this.settings.bg) + }, + show: function(c, d) { + if (d) { + var e = c.data("reveal-init"); + if (0 === c.parent("body").length) { + var f = c.wrap('
    ').parent(), + g = this.settings.rootElement || "body"; + c.on("closed.fndtn.reveal.wrapped", function() { + c.detach().appendTo(f), c.unwrap().unbind("closed.fndtn.reveal.wrapped") + }), c.detach().appendTo(g) + } + if (/pop/i.test(e.animation)) { + d.top = a(b).scrollTop() - c.data("offset") + "px"; + var h = { + top: a(b).scrollTop() + c.data("css-top") + "px", + opacity: 1 + }; + return this.delay(function() { + return c.css(d).animate(h, e.animation_speed, "linear", function() { + this.locked = !1, c.trigger("opened") + }.bind(this)).addClass("open") + }.bind(this), e.animation_speed / 2) + } + if (/fade/i.test(e.animation)) { + var h = { + opacity: 1 + }; + return this.delay(function() { + return c.css(d).animate(h, e.animation_speed, "linear", function() { + this.locked = !1, c.trigger("opened") + }.bind(this)).addClass("open") + }.bind(this), e.animation_speed / 2) + } + return c.css(d).show().css({ + opacity: 1 + }).addClass("open").trigger("opened") + } + var e = this.settings; + return /fade/i.test(e.animation) ? c.fadeIn(e.animation_speed / 2) : c.show() + }, + hide: function(c, d) { + if (d) { + var e = c.data("reveal-init"); + if (/pop/i.test(e.animation)) { + var f = { + top: -a(b).scrollTop() - c.data("offset") + "px", + opacity: 0 + }; + return this.delay(function() { + return c.animate(f, e.animation_speed, "linear", function() { + this.locked = !1, c.css(d).trigger("closed") + }.bind(this)).removeClass("open") + }.bind(this), e.animation_speed / 2) + } + if (/fade/i.test(e.animation)) { + var f = { + opacity: 0 + }; + return this.delay(function() { + return c.animate(f, e.animation_speed, "linear", function() { + this.locked = !1, c.css(d).trigger("closed") + }.bind(this)).removeClass("open") + }.bind(this), e.animation_speed / 2) + } + return c.hide().css(d).removeClass("open").trigger("closed") + } + var e = this.settings; + return /fade/i.test(e.animation) ? c.fadeOut(e.animation_speed / 2) : c.hide() + }, + close_video: function() { + var b = a(this).find(".flex-video"), + c = b.find("iframe"); + c.length > 0 && (c.attr("data-src", c[0].src), c.attr("src", "about:blank"), b.hide()) + }, + open_video: function() { + var b = a(this).find(".flex-video"), + c = b.find("iframe"); + if (c.length > 0) { + var e = c.attr("data-src"); + if ("string" == typeof e) c[0].src = c.attr("data-src"); + else { + var f = c[0].src; + c[0].src = d, c[0].src = f + } + b.show() + } + }, + cache_offset: function(a) { + var b = a.show().height() + parseInt(a.css("top"), 10); + return a.hide(), b + }, + off: function() { + a(this.scope).off(".fndtn.reveal") + }, + reflow: function() {} + } +}(jQuery, this, this.document), +function(a) { + "use strict"; + Foundation.libs.tab = { + name: "tab", + version: "5.0.3", + settings: { + active_class: "active", + callback: function() {} + }, + init: function(a, b, c) { + this.bindings(b, c) + }, + events: function() { + a(this.scope).off(".tab").on("click.fndtn.tab", "[data-tab] > dd > a", function(b) { + b.preventDefault(); + var c = a(this).parent(), + d = c.closest("[data-tab]"), + e = a("#" + this.href.split("#")[1]), + f = c.siblings(), + g = d.data("tab-init"); + a(this).data("tab-content") && (e = a("#" + a(this).data("tab-content").split("#")[1])), c.addClass(g.active_class).trigger("opened"), f.removeClass(g.active_class), e.siblings().removeClass(g.active_class).end().addClass(g.active_class), g.callback(c), d.trigger("toggled", [c]) + }) + }, + off: function() {}, + reflow: function() {} + } +}(jQuery, this, this.document), +function(a) { + "use strict"; + Foundation.libs.tooltip = { + name: "tooltip", + version: "5.0.3", + settings: { + additional_inheritable_classes: [], + tooltip_class: ".tooltip", + append_to: "body", + touch_close_text: "Tap To Close", + disable_for_touch: !1, + tip_template: function(a, b) { + return '' + b + '' + } + }, + cache: {}, + init: function(a, b, c) { + this.bindings(b, c) + }, + events: function() { + var b = this; + Modernizr.touch ? a(this.scope).off(".tooltip").on("click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip", "[data-tooltip]", function(c) { + var d = a.extend({}, b.settings, b.data_options(a(this))); + d.disable_for_touch || (c.preventDefault(), a(d.tooltip_class).hide(), b.showOrCreateTip(a(this))) + }).on("click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip", this.settings.tooltip_class, function(b) { + b.preventDefault(), a(this).fadeOut(150) + }) : a(this.scope).off(".tooltip").on("mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip", "[data-tooltip]", function(c) { + var d = a(this); + /enter|over/i.test(c.type) ? b.showOrCreateTip(d) : ("mouseout" === c.type || "mouseleave" === c.type) && b.hide(d) + }) + }, + showOrCreateTip: function(a) { + var b = this.getTip(a); + return b && b.length > 0 ? this.show(a) : this.create(a) + }, + getTip: function(b) { + var c = this.selector(b), + d = null; + return c && (d = a('span[data-selector="' + c + '"]' + this.settings.tooltip_class)), "object" == typeof d ? d : !1 + }, + selector: function(a) { + var b = a.attr("id"), + c = a.attr("data-tooltip") || a.attr("data-selector"); + return (b && b.length < 1 || !b) && "string" != typeof c && (c = "tooltip" + Math.random().toString(36).substring(7), a.attr("data-selector", c)), b && b.length > 0 ? b : c + }, + create: function(b) { + var c = a(this.settings.tip_template(this.selector(b), a("
    ").html(b.attr("title")).html())), + d = this.inheritable_classes(b); + c.addClass(d).appendTo(this.settings.append_to), Modernizr.touch && c.append('' + this.settings.touch_close_text + ""), b.removeAttr("title").attr("title", ""), this.show(b) + }, + reposition: function(b, c, d) { + var e, f, g, h, i; + if (c.css("visibility", "hidden").show(), e = b.data("width"), f = c.children(".nub"), g = f.outerHeight(), h = f.outerHeight(), c.css({ + width: e ? e : "auto" + }), i = function(a, b, c, d, e) { + return a.css({ + top: b ? b : "auto", + bottom: d ? d : "auto", + left: e ? e : "auto", + right: c ? c : "auto" + }).end() + }, i(c, b.offset().top + b.outerHeight() + 10, "auto", "auto", b.offset().left), this.small()) i(c, b.offset().top + b.outerHeight() + 10, "auto", "auto", 12.5, a(this.scope).width()), c.addClass("tip-override"), i(f, -g, "auto", "auto", b.offset().left); + else { + var j = b.offset().left; + Foundation.rtl && (j = b.offset().left + b.offset().width - c.outerWidth()), i(c, b.offset().top + b.outerHeight() + 10, "auto", "auto", j), c.removeClass("tip-override"), d && d.indexOf("tip-top") > -1 ? i(c, b.offset().top - c.outerHeight() - 10, "auto", "auto", j).removeClass("tip-override") : d && d.indexOf("tip-left") > -1 ? i(c, b.offset().top + b.outerHeight() / 2 - c.outerHeight() / 2, "auto", "auto", b.offset().left - c.outerWidth() - g).removeClass("tip-override") : d && d.indexOf("tip-right") > -1 && i(c, b.offset().top + b.outerHeight() / 2 - c.outerHeight() / 2, "auto", "auto", b.offset().left + b.outerWidth() + g).removeClass("tip-override") + } + c.css("visibility", "visible").hide() + }, + small: function() { + return matchMedia(Foundation.media_queries.small).matches + }, + inheritable_classes: function(b) { + var c = ["tip-top", "tip-left", "tip-bottom", "tip-right", "noradius"].concat(this.settings.additional_inheritable_classes), + d = b.attr("class"), + e = d ? a.map(d.split(" "), function(b) { + return -1 !== a.inArray(b, c) ? b : void 0 + }).join(" ") : ""; + return a.trim(e) + }, + show: function(a) { + var b = this.getTip(a); + this.reposition(a, b, a.attr("class")), b.fadeIn(150) + }, + hide: function(a) { + var b = this.getTip(a); + b.fadeOut(150) + }, + reload: function() { + var b = a(this); + return b.data("fndtn-tooltips") ? b.foundationTooltips("destroy").foundationTooltips("init") : b.foundationTooltips("init") + }, + off: function() { + a(this.scope).off(".fndtn.tooltip"), a(this.settings.tooltip_class).each(function(b) { + a("[data-tooltip]").get(b).attr("title", a(this).text()) + }).remove() + }, + reflow: function() {} + } +}(jQuery, this, this.document), +function(a, b, c) { + "use strict"; + Foundation.libs.topbar = { + name: "topbar", + version: "5.0.3", + settings: { + index: 0, + sticky_class: "sticky", + custom_back_text: !0, + back_text: "Back", + is_hover: !0, + mobile_show_parent_link: !1, + scrolltop: !0 + }, + init: function(b, c, d) { + Foundation.inherit(this, "addCustomRule register_media throttle"); + var e = this; + e.register_media("topbar", "foundation-mq-topbar"), this.bindings(c, d), a("[data-topbar]", this.scope).each(function() { + { + var b = a(this), + c = b.data("topbar-init"); + a("section", this), a("> ul", this).first() + } + b.data("index", 0); + var d = b.parent(); + d.hasClass("fixed") || d.hasClass(c.sticky_class) ? (e.settings.sticky_class = c.sticky_class, e.settings.sticky_topbar = b, b.data("height", d.outerHeight()), b.data("stickyoffset", d.offset().top)) : b.data("height", b.outerHeight()), c.assembled || e.assemble(b), c.is_hover ? a(".has-dropdown", b).addClass("not-click") : a(".has-dropdown", b).removeClass("not-click"), e.addCustomRule(".f-topbar-fixed { padding-top: " + b.data("height") + "px }"), d.hasClass("fixed") && a("body").addClass("f-topbar-fixed") + }) + }, + toggle: function(c) { + var d = this; + if (c) var e = a(c).closest("[data-topbar]"); + else var e = a("[data-topbar]"); + var f = e.data("topbar-init"), + g = a("section, .section", e); + d.breakpoint() && (d.rtl ? (g.css({ + right: "0%" + }), a(">.name", g).css({ + right: "100%" + })) : (g.css({ + left: "0%" + }), a(">.name", g).css({ + left: "100%" + })), a("li.moved", g).removeClass("moved"), e.data("index", 0), e.toggleClass("expanded").css("height", "")), f.scrolltop ? e.hasClass("expanded") ? e.parent().hasClass("fixed") && (f.scrolltop ? (e.parent().removeClass("fixed"), e.addClass("fixed"), a("body").removeClass("f-topbar-fixed"), b.scrollTo(0, 0)) : e.parent().removeClass("expanded")) : e.hasClass("fixed") && (e.parent().addClass("fixed"), e.removeClass("fixed"), a("body").addClass("f-topbar-fixed")) : (e.parent().hasClass(d.settings.sticky_class) && e.parent().addClass("fixed"), e.parent().hasClass("fixed") && (e.hasClass("expanded") ? (e.addClass("fixed"), e.parent().addClass("expanded"), a("body").addClass("f-topbar-fixed")) : (e.removeClass("fixed"), e.parent().removeClass("expanded"), d.update_sticky_positioning()))) + }, + timer: null, + events: function() { + var c = this; + a(this.scope).off(".topbar").on("click.fndtn.topbar", "[data-topbar] .toggle-topbar", function(a) { + a.preventDefault(), c.toggle(this) + }).on("click.fndtn.topbar", "[data-topbar] li.has-dropdown", function(b) { + var d = a(this), + e = a(b.target), + f = d.closest("[data-topbar]"), + g = f.data("topbar-init"); + return e.data("revealId") ? void c.toggle() : void(c.breakpoint() || (!g.is_hover || Modernizr.touch) && (b.stopImmediatePropagation(), d.hasClass("hover") ? (d.removeClass("hover").find("li").removeClass("hover"), d.parents("li.hover").removeClass("hover")) : (d.addClass("hover"), "A" === e[0].nodeName && e.parent().hasClass("has-dropdown") && b.preventDefault()))) + }).on("click.fndtn.topbar", "[data-topbar] .has-dropdown>a", function(b) { + if (c.breakpoint()) { + b.preventDefault(); + var d = a(this), + e = d.closest("[data-topbar]"), + f = e.find("section, .section"), + g = (d.next(".dropdown").outerHeight(), d.closest("li")); + e.data("index", e.data("index") + 1), g.addClass("moved"), c.rtl ? (f.css({ + right: -(100 * e.data("index")) + "%" + }), f.find(">.name").css({ + right: 100 * e.data("index") + "%" + })) : (f.css({ + left: -(100 * e.data("index")) + "%" + }), f.find(">.name").css({ + left: 100 * e.data("index") + "%" + })), e.css("height", d.siblings("ul").outerHeight(!0) + e.data("height")) + } + }), a(b).off(".topbar").on("resize.fndtn.topbar", c.throttle(function() { + c.resize.call(c) + }, 50)).trigger("resize"), a("body").off(".topbar").on("click.fndtn.topbar touchstart.fndtn.topbar", function(b) { + var c = a(b.target).closest("li").closest("li.hover"); + c.length > 0 || a("[data-topbar] li").removeClass("hover") + }), a(this.scope).on("click.fndtn.topbar", "[data-topbar] .has-dropdown .back", function(b) { + b.preventDefault(); + var d = a(this), + e = d.closest("[data-topbar]"), + f = e.find("section, .section"), + g = (e.data("topbar-init"), d.closest("li.moved")), + h = g.parent(); + e.data("index", e.data("index") - 1), c.rtl ? (f.css({ + right: -(100 * e.data("index")) + "%" + }), f.find(">.name").css({ + right: 100 * e.data("index") + "%" + })) : (f.css({ + left: -(100 * e.data("index")) + "%" + }), f.find(">.name").css({ + left: 100 * e.data("index") + "%" + })), 0 === e.data("index") ? e.css("height", "") : e.css("height", h.outerHeight(!0) + e.data("height")), setTimeout(function() { + g.removeClass("moved") + }, 300) + }) + }, + resize: function() { + var b = this; + a("[data-topbar]").each(function() { + var d, e = a(this), + f = (e.data("topbar-init"), e.parent("." + b.settings.sticky_class)); + if (!b.breakpoint()) { + var g = e.hasClass("expanded"); + e.css("height", "").removeClass("expanded").find("li").removeClass("hover"), g && b.toggle(e) + } + f.length > 0 && (f.hasClass("fixed") ? (f.removeClass("fixed"), d = f.offset().top, a(c.body).hasClass("f-topbar-fixed") && (d -= e.data("height")), e.data("stickyoffset", d), f.addClass("fixed")) : (d = f.offset().top, e.data("stickyoffset", d))) + }) + }, + breakpoint: function() { + return !matchMedia(Foundation.media_queries.topbar).matches + }, + assemble: function(b) { + { + var c = b.data("topbar-init"), + d = a("section", b); + a("> ul", b).first() + } + d.detach(), a(".has-dropdown>a", d).each(function() { + var b = a(this), + d = b.siblings(".dropdown"), + e = b.attr("href"); + if (c.mobile_show_parent_link && e && e.length > 1) var f = a('
  2. ' + b.text() + "
  3. "); + else var f = a('
  4. '); + a("h5>a", f).html(1 == c.custom_back_text ? c.back_text : "« " + b.html()), d.prepend(f) + }), d.appendTo(b), this.sticky(), this.assembled(b) + }, + assembled: function(b) { + b.data("topbar-init", a.extend({}, b.data("topbar-init"), { + assembled: !0 + })) + }, + height: function(b) { + var c = 0; + return a("> li", b).each(function() { + c += a(this).outerHeight(!0) + }), c + }, + sticky: function() { + var c = (a(b), this); + a(b).on("scroll", function() { + c.update_sticky_positioning() + }) + }, + update_sticky_positioning: function() { + var c = "." + this.settings.sticky_class, + d = a(b); + if (a(c).length > 0) { + var e = this.settings.sticky_topbar.data("stickyoffset"); + a(c).hasClass("expanded") || (d.scrollTop() > e ? a(c).hasClass("fixed") || (a(c).addClass("fixed"), a("body").addClass("f-topbar-fixed")) : d.scrollTop() <= e && a(c).hasClass("fixed") && (a(c).removeClass("fixed"), a("body").removeClass("f-topbar-fixed"))) + } + }, + off: function() { + a(this.scope).off(".fndtn.topbar"), a(b).off(".fndtn.topbar") + }, + reflow: function() {} + } +}(jQuery, this, this.document); +/*! Sidr - v1.2.1 - 2013-14 + * https://github.com/artberri/sidr + * Copyright (c) 2013 Alberto Varela; Licensed MIT */ (function(e) { + var t = false, + n = false; + var r = { + isUrl: function(e) { + var t = new RegExp("^(https?:\\/\\/)?" + "((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|" + "((\\d{1,3}\\.){3}\\d{1,3}))" + "(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*" + "(\\?[;&a-z\\d%_.~+=-]*)?" + "(\\#[-a-z\\d_]*)?$", "i"); + if (!t.test(e)) { + return false + } else { + return true + } + }, + loadContent: function(e, t) { + e.html(t) + }, + addPrefix: function(e) { + var t = e.attr("id"), + n = e.attr("class"); + if (typeof t === "string" && "" !== t) { + e.attr("id", t.replace(/([A-Za-z0-9_.\-]+)/g, "sidr-id-$1")) + } + if (typeof n === "string" && "" !== n && "sidr-inner" !== n) { + e.attr("class", n.replace(/([A-Za-z0-9_.\-]+)/g, "sidr-class-$1")) + } + e.removeAttr("style") + }, + execute: function(r, s, o) { + if (typeof s === "function") { + o = s; + s = "sidr" + } else if (!s) { + s = "sidr" + } + var u = e("#" + s), + a = e(u.data("body")), + f = e("html"), + l = u.outerWidth(true), + c = u.data("speed"), + h = u.data("side"), + p = u.data("displace"), + d = u.data("onOpen"), + v = u.data("onClose"), + m, g, y, b = s === "sidr" ? "sidr-open" : "sidr-open " + s + "-open"; + if ("open" === r || "toggle" === r && !u.is(":visible")) { + if (u.is(":visible") || t) { + return + } + if (n !== false) { + i.close(n, function() { + i.open(s) + }); + return + } + t = true; + if (h === "left") { + m = { + left: l + "px" + }; + g = { + left: "0px" + } + } else { + m = { + right: l + "px" + }; + g = { + right: "0px" + } + } + if (a.is("body")) { + y = f.scrollTop(); + f.css("overflow-x", "hidden").scrollTop(y) + } + if (p) { + a.addClass("sidr-animating").css({ + width: a.width(), + position: "absolute" + }).animate(m, c, function() { + e(this).addClass(b) + }) + } else { + setTimeout(function() { + e(this).addClass(b) + }, c) + } + u.css("display", "block").animate(g, c, function() { + t = false; + n = s; + if (typeof o === "function") { + o(s) + } + a.removeClass("sidr-animating") + }); + d() + } else { + if (!u.is(":visible") || t) { + return + } + t = true; + if (h === "left") { + m = { + left: 0 + }; + g = { + left: "-" + l + "px" + } + } else { + m = { + right: 0 + }; + g = { + right: "-" + l + "px" + } + } + if (a.is("body")) { + y = f.scrollTop(); + f.removeAttr("style").scrollTop(y) + } + a.addClass("sidr-animating").animate(m, c).removeClass(b); + u.animate(g, c, function() { + u.removeAttr("style").hide(); + a.removeAttr("style"); + e("html").removeAttr("style"); + t = false; + n = false; + if (typeof o === "function") { + o(s) + } + a.removeClass("sidr-animating") + }); + v() + } + } + }; + var i = { + open: function(e, t) { + r.execute("open", e, t) + }, + close: function(e, t) { + r.execute("close", e, t) + }, + toggle: function(e, t) { + r.execute("toggle", e, t) + }, + toogle: function(e, t) { + r.execute("toggle", e, t) + } + }; + e.sidr = function(t) { + if (i[t]) { + return i[t].apply(this, Array.prototype.slice.call(arguments, 1)) + } else if (typeof t === "function" || typeof t === "string" || !t) { + return i.toggle.apply(this, arguments) + } else { + e.error("Method " + t + " does not exist on jQuery.sidr") + } + }; + e.fn.sidr = function(t) { + var n = e.extend({ + name: "sidr", + speed: 200, + side: "left", + source: null, + renaming: true, + body: "body", + displace: true, + onOpen: function() {}, + onClose: function() {} + }, t); + var s = n.name, + o = e("#" + s); + if (o.length === 0) { + o = e("
    ").attr("id", s).appendTo(e("body")) + } + o.addClass("sidr").addClass(n.side).data({ + speed: n.speed, + side: n.side, + body: n.body, + displace: n.displace, + onOpen: n.onOpen, + onClose: n.onClose + }); + if (typeof n.source === "function") { + var u = n.source(s); + r.loadContent(o, u) + } else if (typeof n.source === "string" && r.isUrl(n.source)) { + e.get(n.source, function(e) { + r.loadContent(o, e) + }) + } else if (typeof n.source === "string") { + var a = "", + f = n.source.split(","); + e.each(f, function(t, n) { + a += '
    ' + e(n).html() + "
    " + }); + if (n.renaming) { + var l = e("
    ").html(a); + l.find("*").each(function(t, n) { + var i = e(n); + r.addPrefix(i) + }); + a = l.html() + } + r.loadContent(o, a) + } else if (n.source !== null) { + e.error("Invalid Sidr Source") + } + return this.each(function() { + var t = e(this), + n = t.data("sidr"); + if (!n) { + t.data("sidr", s); + if ("ontouchstart" in document.documentElement) { + t.bind("touchstart", function(e) { + var t = e.originalEvent.touches[0]; + this.touched = e.timeStamp + }); + t.bind("touchend", function(e) { + var t = Math.abs(e.timeStamp - this.touched); + if (t < 200) { + e.preventDefault(); + i.toggle(s) + } + }) + } else { + t.click(function(e) { + e.preventDefault(); + i.toggle(s) + }) + } + } + }) + } +})(jQuery); +/* Documentation can be found at: http://foundation.zurb.com/docs */ +jQuery(document).foundation(); + +/** + * Responsive Table JS + */ +jQuery(document).ready(function($) { + + /* WooCommerce Promo code */ + if ($('p.demo_store').length > 0) { + $('body').addClass('rtp-has-promo-bar'); + } + + /* Add parent-menu class in navigation */ + $('.rtp-page-nav-wrapper .menu > li').each(function() { + if ($(this).children().hasClass('sub-menu')) { + $(this).addClass('rtp-parent-menu'); + } + }); + + /* WP Calendar Widget */ + $('.widget_calendar table').addClass('no-responsive'); + + /* No Responsive Tables */ + var switched = false; + var updateTables = function() { + if (($(window).width() < 768) && !switched) { + switched = true; + $("table").each(function(i, element) { + if ($(this).hasClass("no-responsive")) { + return true; + } + splitTable($(element)); + }); + return true; + } else if (switched && ($(window).width() > 768)) { + switched = false; + $("table").each(function(i, element) { + if ($(this).hasClass("no-responsive")) { + return true; + } + unsplitTable($(element)); + }); + } + }; + + $(window).load(updateTables); + $(window).bind("resize", updateTables); + + function splitTable(original) { + original.wrap("
    "); + + var copy = original.clone(); + copy.find("td:not(:first-child), th:not(:first-child)").css("display", "none"); + copy.removeClass("responsive"); + + original.closest(".table-wrapper").append(copy); + copy.wrap("
    "); + original.wrap("
    "); + } + + function unsplitTable(original) { + original.closest(".table-wrapper").find(".pinned").remove(); + original.unwrap(); + original.unwrap(); + } + + /* Mobile Slide Menu */ + if ($.isFunction($.fn.sidr)) { + if ($('#rtp-primary-menu').hasClass('rtp-mobile-nav')) { + $('#rtp-primary-menu').prepend(''); + $('#rtp-mobile-menu-button').sidr({ + side: 'left', + speed: 800, + source: '.rtp-mobile-nav' + }); + } + } +}); diff --git a/template/menu.html b/template/menu.html new file mode 100644 index 0000000..70b6d0f --- /dev/null +++ b/template/menu.html @@ -0,0 +1,34 @@ + diff --git a/template/sidebar.html b/template/sidebar.html new file mode 100644 index 0000000..ae81b54 --- /dev/null +++ b/template/sidebar.html @@ -0,0 +1,29 @@ + + + + diff --git a/template/template.html b/template/template.html new file mode 100644 index 0000000..5890af5 --- /dev/null +++ b/template/template.html @@ -0,0 +1,4 @@ +{{#call-template "base.html" title=title url=url}} +

    {{ title }}

    +{{markdown content}} +{{/call-template}} diff --git a/zedconfig.json b/zedconfig.json new file mode 100644 index 0000000..ccd476e --- /dev/null +++ b/zedconfig.json @@ -0,0 +1,6 @@ +{ + "preferences": { + "gotoExclude": ["/out/*"] + }, + "packages": ["gh:zefhemel/zcms"] +}