From 5241110892d24cea571dfe43b1fcd6a87fe5aee8 Mon Sep 17 00:00:00 2001 From: flatychen Date: Wed, 14 Jan 2015 10:30:29 +0800 Subject: [PATCH 01/21] web init --- .classpath | 7 +- .project | 13 +++ pom.xml | 26 +++++- src/main/java/cn/flaty/NettyPush/Main.java | 45 --------- .../NettyPush/services/ConnPoolService.java | 2 +- .../cn/flaty/NettyPush/window/MainFrame.java | 90 ------------------ .../jdbcWrapper/JdbcTemplateWrapper.java | 4 +- .../pageSetter/MysqlPageSqlSetter.java | 2 +- .../pageSetter/OraclePageSqlSetter.java | 2 +- .../pageSetter/PageSqlSetter.java | 2 +- .../socketClient}/ClientRepository.java | 2 +- .../socketClient}/MysqlClientRepository.java | 6 +- src/main/java/cn/flaty/views/PushMessage.java | 9 ++ src/main/resources/applicationConn.xml | 34 +++---- src/main/resources/applicationContext.xml | 13 ++- src/main/resources/applicationMvc.xml | 28 ++++++ src/main/resources/server.properties | 2 +- src/main/webapp/WEB-INF/decorators.xml | 6 ++ src/main/webapp/WEB-INF/jsp/common/base.jsp | 5 + .../webapp/WEB-INF/jsp/pushMessage/new.jsp | 5 + src/main/webapp/WEB-INF/web.xml | 93 +++++++++++++++++++ src/main/webapp/index.jsp | 5 + src/main/webapp/web.xml | 0 src/test/java/base/TimerTaskTest.java | 2 +- 24 files changed, 229 insertions(+), 174 deletions(-) delete mode 100644 src/main/java/cn/flaty/NettyPush/Main.java delete mode 100644 src/main/java/cn/flaty/NettyPush/window/MainFrame.java rename src/main/java/cn/flaty/{NettyPush/clientRepo => repository}/jdbcWrapper/JdbcTemplateWrapper.java (97%) rename src/main/java/cn/flaty/{NettyPush/clientRepo => repository}/pageSetter/MysqlPageSqlSetter.java (84%) rename src/main/java/cn/flaty/{NettyPush/clientRepo => repository}/pageSetter/OraclePageSqlSetter.java (84%) rename src/main/java/cn/flaty/{NettyPush/clientRepo => repository}/pageSetter/PageSqlSetter.java (71%) rename src/main/java/cn/flaty/{NettyPush/clientRepo => repository/socketClient}/ClientRepository.java (91%) rename src/main/java/cn/flaty/{NettyPush/clientRepo => repository/socketClient}/MysqlClientRepository.java (87%) create mode 100644 src/main/java/cn/flaty/views/PushMessage.java create mode 100644 src/main/resources/applicationMvc.xml create mode 100644 src/main/webapp/WEB-INF/decorators.xml create mode 100644 src/main/webapp/WEB-INF/jsp/common/base.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp create mode 100644 src/main/webapp/WEB-INF/web.xml create mode 100644 src/main/webapp/index.jsp create mode 100644 src/main/webapp/web.xml diff --git a/.classpath b/.classpath index 6f6a38f..0880a46 100644 --- a/.classpath +++ b/.classpath @@ -17,8 +17,13 @@ + + + + + + - diff --git a/.project b/.project index b3cb18d..a4d0a9b 100644 --- a/.project +++ b/.project @@ -5,6 +5,11 @@ + + org.eclipse.wst.jsdt.core.javascriptValidator + + + org.eclipse.wst.common.project.facet.core.builder @@ -15,6 +20,11 @@ + + org.eclipse.wst.validation.validationbuilder + + + org.eclipse.m2e.core.maven2Builder @@ -22,8 +32,11 @@ + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature diff --git a/pom.xml b/pom.xml index cdb970e..03444eb 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,13 @@ cn.flaty NettyPush 0.0.1-SNAPSHOT + war - + + 1.6 + 1.6 + 1.6 + 1.4 1.7.2 @@ -13,6 +18,9 @@ 1.2.14 3.2.8.RELEASE + + 2.3.20 + 4.8.2 @@ -102,7 +110,14 @@ spring-jdbc ${org.springframework-version} - + + + org.springframework + spring-webmvc + ${org.springframework-version} + + + org.aspectj aspectjweaver @@ -122,10 +137,11 @@ 1.2.2 + - com.h2database - h2 - 1.4.184 + opensymphony + sitemesh + 2.4.2 diff --git a/src/main/java/cn/flaty/NettyPush/Main.java b/src/main/java/cn/flaty/NettyPush/Main.java deleted file mode 100644 index 4da47c9..0000000 --- a/src/main/java/cn/flaty/NettyPush/Main.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.flaty.NettyPush; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -import cn.flaty.NettyPush.server.Listener; -import cn.flaty.NettyPush.utils.beanFactoryUtils; -import cn.flaty.NettyPush.window.MainFrame; - -public class Main { - - private final String LISTENER_NAME = "listener"; - - private final String SPRING_CONFIG = "classpath:applicationContext.xml"; - - private ApplicationContext context = null; - - public static void main(String args[]) { - new Main().start(); - } - - private void start() { - - this.initSpringContext(); - - MainFrame.initFrame(); - - this.initListener(); - - - } - - private void initListener() { - - Listener listener = context.getBean(LISTENER_NAME, Listener.class); - listener.start(); - - } - - public void initSpringContext() { - context = new ClassPathXmlApplicationContext(SPRING_CONFIG); - beanFactoryUtils.setApplicationContext(context); - } - -} diff --git a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java index 0c096f3..95b8868 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java @@ -7,11 +7,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.clientRepo.ClientRepository; import cn.flaty.NettyPush.model.ClientInfo; import cn.flaty.NettyPush.server.conn.NettyConnection; import cn.flaty.NettyPush.server.conn.NettyConnectionPool; import cn.flaty.NettyPush.utils.AssertUtils; +import cn.flaty.repository.socketClient.ClientRepository; diff --git a/src/main/java/cn/flaty/NettyPush/window/MainFrame.java b/src/main/java/cn/flaty/NettyPush/window/MainFrame.java deleted file mode 100644 index 884c6b0..0000000 --- a/src/main/java/cn/flaty/NettyPush/window/MainFrame.java +++ /dev/null @@ -1,90 +0,0 @@ -package cn.flaty.NettyPush.window; - -import java.awt.BorderLayout; -import java.awt.EventQueue; -import java.awt.FlowLayout; -import java.awt.Font; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextArea; -import javax.swing.border.EmptyBorder; - -import org.apache.commons.lang.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import cn.flaty.NettyPush.services.PushService; -import cn.flaty.NettyPush.utils.beanFactoryUtils; - -public class MainFrame extends JFrame { - - - - private PushService pushService = beanFactoryUtils.getPushService(); - - private JPanel contentPane; - - private JTextArea textArea; - - /** - * Create the frame. - */ - public MainFrame() { - - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - getContentPane().setLayout(new FlowLayout()); - setTitle("发消息"); - setBounds(100, 100, 450, 300); - contentPane = new JPanel(); - contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); - setContentPane(contentPane); - contentPane.setLayout(new BorderLayout(0, 0)); - - JPanel panel = new JPanel(); - contentPane.add(panel, BorderLayout.CENTER); - panel.setLayout(null); - - JLabel lblNewLabel = new JLabel("消息"); - lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 12)); - lblNewLabel.setBounds(10, 40, 31, 15); - panel.add(lblNewLabel); - - textArea = new JTextArea(); - textArea.setText(""); - textArea.setBounds(51, 10, 363, 150); - panel.add(textArea); - - JButton btnNewButton = new JButton("发送"); - btnNewButton.setFont(new Font("宋体", Font.PLAIN, 12)); - btnNewButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - String _s = textArea.getText().trim(); - if(StringUtils.isNotEmpty(_s)){ - pushService.sendTest(_s); - } - textArea.setText(""); - } - }); - btnNewButton.setBounds(302, 175, 93, 23); - panel.add(btnNewButton); - - } - - - public static void initFrame() { - EventQueue.invokeLater(new Runnable() { - public void run() { - try { - MainFrame frame = new MainFrame(); - frame.setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } -} diff --git a/src/main/java/cn/flaty/NettyPush/clientRepo/jdbcWrapper/JdbcTemplateWrapper.java b/src/main/java/cn/flaty/repository/jdbcWrapper/JdbcTemplateWrapper.java similarity index 97% rename from src/main/java/cn/flaty/NettyPush/clientRepo/jdbcWrapper/JdbcTemplateWrapper.java rename to src/main/java/cn/flaty/repository/jdbcWrapper/JdbcTemplateWrapper.java index fb07834..102533e 100644 --- a/src/main/java/cn/flaty/NettyPush/clientRepo/jdbcWrapper/JdbcTemplateWrapper.java +++ b/src/main/java/cn/flaty/repository/jdbcWrapper/JdbcTemplateWrapper.java @@ -1,4 +1,4 @@ -package cn.flaty.NettyPush.clientRepo.jdbcWrapper; +package cn.flaty.repository.jdbcWrapper; import java.text.MessageFormat; @@ -14,7 +14,7 @@ import cn.flaty.NettyPush.base.PageBean; import cn.flaty.NettyPush.base.QueryPageObject; -import cn.flaty.NettyPush.clientRepo.pageSetter.PageSqlSetter; +import cn.flaty.repository.pageSetter.PageSqlSetter; /** diff --git a/src/main/java/cn/flaty/NettyPush/clientRepo/pageSetter/MysqlPageSqlSetter.java b/src/main/java/cn/flaty/repository/pageSetter/MysqlPageSqlSetter.java similarity index 84% rename from src/main/java/cn/flaty/NettyPush/clientRepo/pageSetter/MysqlPageSqlSetter.java rename to src/main/java/cn/flaty/repository/pageSetter/MysqlPageSqlSetter.java index ea642d1..b30c071 100644 --- a/src/main/java/cn/flaty/NettyPush/clientRepo/pageSetter/MysqlPageSqlSetter.java +++ b/src/main/java/cn/flaty/repository/pageSetter/MysqlPageSqlSetter.java @@ -1,4 +1,4 @@ -package cn.flaty.NettyPush.clientRepo.pageSetter; +package cn.flaty.repository.pageSetter; diff --git a/src/main/java/cn/flaty/NettyPush/clientRepo/pageSetter/OraclePageSqlSetter.java b/src/main/java/cn/flaty/repository/pageSetter/OraclePageSqlSetter.java similarity index 84% rename from src/main/java/cn/flaty/NettyPush/clientRepo/pageSetter/OraclePageSqlSetter.java rename to src/main/java/cn/flaty/repository/pageSetter/OraclePageSqlSetter.java index 645c167..7b2b9b8 100644 --- a/src/main/java/cn/flaty/NettyPush/clientRepo/pageSetter/OraclePageSqlSetter.java +++ b/src/main/java/cn/flaty/repository/pageSetter/OraclePageSqlSetter.java @@ -1,4 +1,4 @@ -package cn.flaty.NettyPush.clientRepo.pageSetter; +package cn.flaty.repository.pageSetter; public class OraclePageSqlSetter implements PageSqlSetter { diff --git a/src/main/java/cn/flaty/NettyPush/clientRepo/pageSetter/PageSqlSetter.java b/src/main/java/cn/flaty/repository/pageSetter/PageSqlSetter.java similarity index 71% rename from src/main/java/cn/flaty/NettyPush/clientRepo/pageSetter/PageSqlSetter.java rename to src/main/java/cn/flaty/repository/pageSetter/PageSqlSetter.java index 85446b3..ff2e537 100644 --- a/src/main/java/cn/flaty/NettyPush/clientRepo/pageSetter/PageSqlSetter.java +++ b/src/main/java/cn/flaty/repository/pageSetter/PageSqlSetter.java @@ -1,4 +1,4 @@ -package cn.flaty.NettyPush.clientRepo.pageSetter; +package cn.flaty.repository.pageSetter; public interface PageSqlSetter { diff --git a/src/main/java/cn/flaty/NettyPush/clientRepo/ClientRepository.java b/src/main/java/cn/flaty/repository/socketClient/ClientRepository.java similarity index 91% rename from src/main/java/cn/flaty/NettyPush/clientRepo/ClientRepository.java rename to src/main/java/cn/flaty/repository/socketClient/ClientRepository.java index 25acdca..1183fc8 100644 --- a/src/main/java/cn/flaty/NettyPush/clientRepo/ClientRepository.java +++ b/src/main/java/cn/flaty/repository/socketClient/ClientRepository.java @@ -1,4 +1,4 @@ -package cn.flaty.NettyPush.clientRepo; +package cn.flaty.repository.socketClient; import java.util.List; diff --git a/src/main/java/cn/flaty/NettyPush/clientRepo/MysqlClientRepository.java b/src/main/java/cn/flaty/repository/socketClient/MysqlClientRepository.java similarity index 87% rename from src/main/java/cn/flaty/NettyPush/clientRepo/MysqlClientRepository.java rename to src/main/java/cn/flaty/repository/socketClient/MysqlClientRepository.java index fde83c4..70e5440 100644 --- a/src/main/java/cn/flaty/NettyPush/clientRepo/MysqlClientRepository.java +++ b/src/main/java/cn/flaty/repository/socketClient/MysqlClientRepository.java @@ -1,15 +1,13 @@ -package cn.flaty.NettyPush.clientRepo; +package cn.flaty.repository.socketClient; -import java.util.Calendar; import java.util.Date; import java.util.List; -import org.apache.commons.lang.time.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import cn.flaty.NettyPush.clientRepo.jdbcWrapper.JdbcTemplateWrapper; import cn.flaty.NettyPush.model.ClientInfo; +import cn.flaty.repository.jdbcWrapper.JdbcTemplateWrapper; @Repository public class MysqlClientRepository implements ClientRepository { diff --git a/src/main/java/cn/flaty/views/PushMessage.java b/src/main/java/cn/flaty/views/PushMessage.java new file mode 100644 index 0000000..b673b23 --- /dev/null +++ b/src/main/java/cn/flaty/views/PushMessage.java @@ -0,0 +1,9 @@ +package cn.flaty.views; + +import org.springframework.stereotype.Controller; + + +@Controller +public class PushMessage { + +} diff --git a/src/main/resources/applicationConn.xml b/src/main/resources/applicationConn.xml index 147558d..2c34531 100644 --- a/src/main/resources/applicationConn.xml +++ b/src/main/resources/applicationConn.xml @@ -1,17 +1,17 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/main/resources/applicationContext.xml b/src/main/resources/applicationContext.xml index 7d36270..a7df034 100644 --- a/src/main/resources/applicationContext.xml +++ b/src/main/resources/applicationContext.xml @@ -7,13 +7,20 @@ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd "> + - + + + - + + + - diff --git a/src/main/resources/applicationMvc.xml b/src/main/resources/applicationMvc.xml new file mode 100644 index 0000000..b407dfc --- /dev/null +++ b/src/main/resources/applicationMvc.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/server.properties b/src/main/resources/server.properties index 614a84a..6a53ca1 100644 --- a/src/main/resources/server.properties +++ b/src/main/resources/server.properties @@ -1,2 +1,2 @@ server.port=11111 -server.host=192.168.0.10 \ No newline at end of file +server.host=192.183.3.178 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/decorators.xml b/src/main/webapp/WEB-INF/decorators.xml new file mode 100644 index 0000000..eaf5584 --- /dev/null +++ b/src/main/webapp/WEB-INF/decorators.xml @@ -0,0 +1,6 @@ + + + + /* + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/common/base.jsp b/src/main/webapp/WEB-INF/jsp/common/base.jsp new file mode 100644 index 0000000..cf433b5 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/common/base.jsp @@ -0,0 +1,5 @@ +<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> +<% + String url = "/f/index"; + response.sendRedirect(request.getContextPath() + url); +%> diff --git a/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp new file mode 100644 index 0000000..cf433b5 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp @@ -0,0 +1,5 @@ +<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> +<% + String url = "/f/index"; + response.sendRedirect(request.getContextPath() + url); +%> diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..a785653 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,93 @@ + + + + log4jConfigLocation + classpath:log4j.properties + + + contextConfigLocation + classpath:spring/spring/applicationContext.xml + + + org.springframework.web.context.ContextLoaderListener + + + encodingFilter + org.springframework.web.filter.CharacterEncodingFilter + true + + encoding + UTF-8 + + + forceEncoding + true + + + + sitemesh + com.opensymphony.sitemesh.webapp.SiteMeshFilter + true + + + + + + encodingFilter + /* + + + sitemesh + /* + + + + + + springServlet + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath:/spring/springMVC/spring_mvc_base.xml + + 1 + true + + + sitemesh-freemarker + com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet + + TemplatePath + / + + + classic_compatible + true + + + default_encoding + utf-8 + + 2 + + + + + springServlet + / + + + sitemesh-freemarker + *.htm + + + + + + + index.jsp + + \ No newline at end of file diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp new file mode 100644 index 0000000..cf433b5 --- /dev/null +++ b/src/main/webapp/index.jsp @@ -0,0 +1,5 @@ +<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> +<% + String url = "/f/index"; + response.sendRedirect(request.getContextPath() + url); +%> diff --git a/src/main/webapp/web.xml b/src/main/webapp/web.xml new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/base/TimerTaskTest.java b/src/test/java/base/TimerTaskTest.java index ddb15a1..bb327cc 100644 --- a/src/test/java/base/TimerTaskTest.java +++ b/src/test/java/base/TimerTaskTest.java @@ -8,7 +8,7 @@ import org.apache.commons.lang.time.DateUtils; import org.junit.Test; -import cn.flaty.NettyPush.clientRepo.ClientRepository; +import cn.flaty.repository.socketClient.ClientRepository; public class TimerTaskTest { From a2361842c267755f86f27fb197a45b5b3ffc4d60 Mon Sep 17 00:00:00 2001 From: flatychen Date: Thu, 15 Jan 2015 17:15:19 +0800 Subject: [PATCH 02/21] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=88=86=E6=94=AF?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.classpath b/.classpath index 0880a46..e5c0aae 100644 --- a/.classpath +++ b/.classpath @@ -22,7 +22,7 @@ - + From 57d1f7c95424e0a99f4c0efa4c65017c57663c65 Mon Sep 17 00:00:00 2001 From: flatychen Date: Thu, 22 Jan 2015 16:31:48 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E5=AE=8C=E5=96=84web=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 73 +- .../NettyPush/server/DefaultListener.java | 3 +- .../flaty/NettyPush/services/PushService.java | 51 +- .../java/cn/flaty/views/BaseDataWrapper.java | 98 + .../java/cn/flaty/views/BaseInterceptor.java | 33 + .../cn/flaty/views/DefaultListenerProxy.java | 43 + src/main/java/cn/flaty/views/PushMessage.java | 35 +- .../cn/flaty/views/PushMessageController.java | 39 + .../java/cn/flaty/views/WebConstants.java | 51 + src/main/resources/applicationContext.xml | 24 +- src/main/resources/applicationDataSource.xml | 11 +- src/main/resources/applicationMvc.xml | 19 +- ...ationConn.xml => applicationRescourse.xml} | 20 +- src/main/resources/applicationServer.xml | 14 +- src/main/resources/applicationTask.xml | 20 + src/main/webapp/WEB-INF/decorators.xml | 2 +- src/main/webapp/WEB-INF/jsp/common/base.jsp | 78 +- src/main/webapp/WEB-INF/jsp/common/menus.jsp | 27 + .../webapp/WEB-INF/jsp/pushMessage/new.jsp | 122 +- .../webapp/WEB-INF/jsp/pushMessage/query.jsp | 12 + src/main/webapp/WEB-INF/web.xml | 68 +- src/main/webapp/index.jsp | 2 +- src/main/webapp/res/amazonUi/css/admin.css | 321 + src/main/webapp/res/amazonUi/css/amazeui.css | 14134 +++++++++++++ .../webapp/res/amazonUi/css/amazeui.flat.css | 14156 +++++++++++++ .../res/amazonUi/css/amazeui.flat.min.css | 1 + .../webapp/res/amazonUi/css/amazeui.min.css | 1 + src/main/webapp/res/amazonUi/css/app.css | 1 + .../webapp/res/amazonUi/fonts/FontAwesome.otf | Bin 0 -> 85908 bytes .../amazonUi/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes .../amazonUi/fonts/fontawesome-webfont.svg | 520 + .../amazonUi/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes .../amazonUi/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes src/main/webapp/res/amazonUi/js/amazeui.js | 17549 ++++++++++++++++ .../webapp/res/amazonUi/js/amazeui.legacy.js | 7288 +++++++ .../res/amazonUi/js/amazeui.legacy.min.js | 4 + .../webapp/res/amazonUi/js/amazeui.min.js | 8 + .../res/amazonUi/js/amazeui.widgets.helper.js | 90 + .../amazonUi/js/amazeui.widgets.helper.min.js | 2 + src/main/webapp/res/amazonUi/js/app.js | 14 + .../webapp/res/amazonUi/js/handlebars.min.js | 28 + src/main/webapp/res/amazonUi/js/jquery.min.js | 4 + .../res/amazonUi/js/polyfill/rem.min.js | 7 + .../res/amazonUi/js/polyfill/respond.min.js | 6 + src/main/webapp/web.xml | 0 src/test/java/base/CommonTest.java | 25 - src/test/java/base/DateTimeUtilsTest.java | 28 - src/test/java/base/FastjsonUtilsTest.java | 28 - src/test/java/base/TimerTaskTest.java | 30 - src/test/java/conn/GuavaConnPoolTest.java | 63 - 50 files changed, 54846 insertions(+), 307 deletions(-) create mode 100644 src/main/java/cn/flaty/views/BaseDataWrapper.java create mode 100644 src/main/java/cn/flaty/views/BaseInterceptor.java create mode 100644 src/main/java/cn/flaty/views/DefaultListenerProxy.java create mode 100644 src/main/java/cn/flaty/views/PushMessageController.java create mode 100644 src/main/java/cn/flaty/views/WebConstants.java rename src/main/resources/{applicationConn.xml => applicationRescourse.xml} (51%) create mode 100644 src/main/resources/applicationTask.xml create mode 100644 src/main/webapp/WEB-INF/jsp/common/menus.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/pushMessage/query.jsp create mode 100644 src/main/webapp/res/amazonUi/css/admin.css create mode 100644 src/main/webapp/res/amazonUi/css/amazeui.css create mode 100644 src/main/webapp/res/amazonUi/css/amazeui.flat.css create mode 100644 src/main/webapp/res/amazonUi/css/amazeui.flat.min.css create mode 100644 src/main/webapp/res/amazonUi/css/amazeui.min.css create mode 100644 src/main/webapp/res/amazonUi/css/app.css create mode 100644 src/main/webapp/res/amazonUi/fonts/FontAwesome.otf create mode 100644 src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.eot create mode 100644 src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.svg create mode 100644 src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.ttf create mode 100644 src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.woff create mode 100644 src/main/webapp/res/amazonUi/js/amazeui.js create mode 100644 src/main/webapp/res/amazonUi/js/amazeui.legacy.js create mode 100644 src/main/webapp/res/amazonUi/js/amazeui.legacy.min.js create mode 100644 src/main/webapp/res/amazonUi/js/amazeui.min.js create mode 100644 src/main/webapp/res/amazonUi/js/amazeui.widgets.helper.js create mode 100644 src/main/webapp/res/amazonUi/js/amazeui.widgets.helper.min.js create mode 100644 src/main/webapp/res/amazonUi/js/app.js create mode 100644 src/main/webapp/res/amazonUi/js/handlebars.min.js create mode 100644 src/main/webapp/res/amazonUi/js/jquery.min.js create mode 100644 src/main/webapp/res/amazonUi/js/polyfill/rem.min.js create mode 100644 src/main/webapp/res/amazonUi/js/polyfill/respond.min.js delete mode 100644 src/main/webapp/web.xml delete mode 100644 src/test/java/base/CommonTest.java delete mode 100644 src/test/java/base/DateTimeUtilsTest.java delete mode 100644 src/test/java/base/FastjsonUtilsTest.java delete mode 100644 src/test/java/base/TimerTaskTest.java delete mode 100644 src/test/java/conn/GuavaConnPoolTest.java diff --git a/pom.xml b/pom.xml index 03444eb..3f9c43f 100644 --- a/pom.xml +++ b/pom.xml @@ -2,15 +2,15 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 cn.flaty - NettyPush + nettyPusher 0.0.1-SNAPSHOT war - - 1.6 - 1.6 - 1.6 - + UTF-8 + UTF-8 + 1.7 + 1.7 + 1.7 1.4 1.7.2 @@ -18,9 +18,9 @@ 1.2.14 3.2.8.RELEASE - + 2.3.20 - + 4.8.2 @@ -53,7 +53,6 @@ log4j log4j ${log4j-version} - runtime @@ -110,14 +109,14 @@ spring-jdbc ${org.springframework-version} - + org.springframework spring-webmvc ${org.springframework-version} - - + + org.aspectj aspectjweaver @@ -144,6 +143,36 @@ 2.4.2 + + + org.glassfish + javax.servlet + 3.0.1 + provided + + + + javax.servlet + jstl + 1.2 + provided + + + + + javax.validation + validation-api + 1.1.0.Final + + + + org.hibernate + hibernate-validator + 5.0.3.Final + + + + mysql mysql-connector-java @@ -164,9 +193,27 @@ ${junit-version} test + - + + + + + org.eclipse.jetty + jetty-maven-plugin + 9.2.6.v20141205 + + manual + + /${project.artifactId} + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/flaty/NettyPush/server/DefaultListener.java b/src/main/java/cn/flaty/NettyPush/server/DefaultListener.java index 6249549..8b2a969 100644 --- a/src/main/java/cn/flaty/NettyPush/server/DefaultListener.java +++ b/src/main/java/cn/flaty/NettyPush/server/DefaultListener.java @@ -29,6 +29,7 @@ * @author flaty * */ + public class DefaultListener implements Listener{ private Logger log = LoggerFactory.getLogger(DefaultListener.class); @@ -50,7 +51,7 @@ public void start() { ServerBootstrap sbs = new ServerBootstrap(); sbs.group(acceptor, worker).channel(NioServerSocketChannel.class) // .childOption(ChannelOption.SO_KEEPALIVE, true) -// .childOption(ChannelOption.TCP_NODELAY, true) + .childOption(ChannelOption.TCP_NODELAY, true) // 禁止 Nagle算法 // .childOption(ChannelOption.SO_REUSEADDR, true) .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 使用内存池 回收堆外内存 // .childOption(ChannelOption.MESSAGE_SIZE_ESTIMATOR, new MessageSizeEstimator() { diff --git a/src/main/java/cn/flaty/NettyPush/services/PushService.java b/src/main/java/cn/flaty/NettyPush/services/PushService.java index b41a04f..213c25e 100644 --- a/src/main/java/cn/flaty/NettyPush/services/PushService.java +++ b/src/main/java/cn/flaty/NettyPush/services/PushService.java @@ -1,56 +1,51 @@ package cn.flaty.NettyPush.services; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.flaty.NettyPush.model.ClientInfo; -import cn.flaty.NettyPush.model.GenericMessage; import cn.flaty.NettyPush.server.conn.NettyConnection; -import cn.flaty.NettyPush.server.conn.NettyConnectionPool; -import cn.flaty.NettyPush.utils.FastJsonUtils; - @Service -public class PushService extends ConnPoolService{ - +public class PushService extends ConnPoolService { + private Logger log = LoggerFactory.getLogger(PushService.class); - - public void send(String msg){ - List clients = super.queryClientInfo(new ClientInfo()); - NettyConnection conn = null; - for (ClientInfo clientInfo : clients) { - try { - conn = pool.get(clientInfo.getCid()); + + public void send(String msg) { + List clients = super.queryClientInfo(new ClientInfo()); + NettyConnection conn = null; + for (ClientInfo clientInfo : clients) { + try { + conn = pool.get(clientInfo.getCid()); } catch (Exception e) { e.printStackTrace(); continue; } - - if( conn != null){ - conn.writeAndFlush(msg); + + if (conn != null) { + conn.writeAndFlush(msg); } } } - - - - public void sendTest(String msg){ - Map pools = pool.asMap(); - Set> sets = pools.entrySet(); + + public void sendTest(String msg) { + if (StringUtils.isEmpty(msg)) { + return; + } + Map pools = pool.asMap(); + Set> sets = pools.entrySet(); for (Entry entry : sets) { NettyConnection conn = entry.getValue(); - conn.writeAndFlush(msg); + conn.writeAndFlush(msg); } - - + } - + } diff --git a/src/main/java/cn/flaty/views/BaseDataWrapper.java b/src/main/java/cn/flaty/views/BaseDataWrapper.java new file mode 100644 index 0000000..67f8791 --- /dev/null +++ b/src/main/java/cn/flaty/views/BaseDataWrapper.java @@ -0,0 +1,98 @@ +package cn.flaty.views; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang.StringUtils; + + +/** + * 基础数据包装器 + * + * @author flatychen + * + */ +public class BaseDataWrapper { + + /** + * 调用是否成功 + */ + private boolean success; + + /** + * 调用返回消息,如为成功可为空 + */ + private String message; + + + /** + * 调用返回数据 + */ + private Map data; + + public Map getData() { + return data; + } + + + public void setData(Map data) { + this.data = data; + } + + /** + * 初始化数据包装器大小 + * @author flatychen + * @date 2014-7-11 + * @param mapSize + * @version + */ + public BaseDataWrapper buildWrapper(int mapSize){ + if(this.data != null){ + throw new IllegalArgumentException("----> map 重复初始化! "); + } + this.data = new HashMap(mapSize); + return this; + } + + + /** + * 初始化数据包装器 + * @author flatychen + * @date 2014-7-11 + * @param mapSize + * @version + */ + public BaseDataWrapper buildWrapper(){ + return this.buildWrapper(5); + } + + public boolean isSuccess() { + return success; + } + + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getMessage() { + // 默认添加message + if( StringUtils.isBlank(message)){ + if(this.success){ + this.message = "成功!"; + }else{ + this.message = "失败!"; + } + } + return message; + } + + + public void setMessage(String message) { + this.message = message; + } + + + + +} \ No newline at end of file diff --git a/src/main/java/cn/flaty/views/BaseInterceptor.java b/src/main/java/cn/flaty/views/BaseInterceptor.java new file mode 100644 index 0000000..c4d04fc --- /dev/null +++ b/src/main/java/cn/flaty/views/BaseInterceptor.java @@ -0,0 +1,33 @@ +package cn.flaty.views; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +@Controller +public class BaseInterceptor extends HandlerInterceptorAdapter { + + @Override + public boolean preHandle(HttpServletRequest request, + HttpServletResponse response, Object handler) throws Exception { + this.addBaseContext(request); // 添加web上下文路径 + return true; + } + + private void addBaseContext(HttpServletRequest request) { + String base = request.getContextPath(); + String servletPath = request.getServletPath(); + request.setAttribute(WebConstants.BASE, request.getScheme() + "://" + + request.getServerName() + ":" + request.getServerPort() + + base); + request.setAttribute(WebConstants.WEBAPP_PATH, + request.getScheme() + "://" + request.getServerName() + ":" + + request.getServerPort()); + request.setAttribute(WebConstants.CURRENT_PATH, + request.getAttribute(WebConstants.BASE) + servletPath); + + } + +} diff --git a/src/main/java/cn/flaty/views/DefaultListenerProxy.java b/src/main/java/cn/flaty/views/DefaultListenerProxy.java new file mode 100644 index 0000000..1a0c4ae --- /dev/null +++ b/src/main/java/cn/flaty/views/DefaultListenerProxy.java @@ -0,0 +1,43 @@ +package cn.flaty.views; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.core.task.TaskExecutor; +import org.springframework.stereotype.Component; + +import cn.flaty.NettyPush.server.Listener; +import cn.flaty.NettyPush.utils.beanFactoryUtils; + +@Component +public class DefaultListenerProxy implements ApplicationListener{ + + @Autowired + private TaskExecutor exe; + + @Autowired + private Listener listener; + + @Override + public void onApplicationEvent(ContextRefreshedEvent event) { + ApplicationContext context= event.getApplicationContext(); + // 父容器启动 + if(context.getParent() == null){ + beanFactoryUtils.setApplicationContext(context); + exe.execute(new Runnable() { + @Override + public void run() { + listener.start(); + } + });; + } + + } + + + + + + +} diff --git a/src/main/java/cn/flaty/views/PushMessage.java b/src/main/java/cn/flaty/views/PushMessage.java index b673b23..1286df2 100644 --- a/src/main/java/cn/flaty/views/PushMessage.java +++ b/src/main/java/cn/flaty/views/PushMessage.java @@ -1,9 +1,40 @@ package cn.flaty.views; -import org.springframework.stereotype.Controller; +import org.hibernate.validator.constraints.NotEmpty; -@Controller public class PushMessage { + + + @NotEmpty + private String title; + + @NotEmpty + private String content; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + @Override + public String toString() { + return "PushMessage [title=" + title + ", content=" + content + "]"; + } + + } diff --git a/src/main/java/cn/flaty/views/PushMessageController.java b/src/main/java/cn/flaty/views/PushMessageController.java new file mode 100644 index 0000000..a138758 --- /dev/null +++ b/src/main/java/cn/flaty/views/PushMessageController.java @@ -0,0 +1,39 @@ +package cn.flaty.views; + +import javax.validation.Valid; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import cn.flaty.NettyPush.services.PushService; +import cn.flaty.NettyPush.utils.FastJsonUtils; + + +@Controller +@RequestMapping("/pushMessage") +public class PushMessageController { + + private static Logger log = LoggerFactory.getLogger(PushMessageController.class); + + @Autowired + private PushService pushService; + + @RequestMapping("/new") + public String news(){ + return "pushMessage/new"; + } + + + + @RequestMapping("/create") + @ResponseBody + public BaseDataWrapper create(@Valid PushMessage msg){ + log.info(msg.toString()); + pushService.sendTest(FastJsonUtils.toJsonString(msg)); + return null; + } +} diff --git a/src/main/java/cn/flaty/views/WebConstants.java b/src/main/java/cn/flaty/views/WebConstants.java new file mode 100644 index 0000000..19277fa --- /dev/null +++ b/src/main/java/cn/flaty/views/WebConstants.java @@ -0,0 +1,51 @@ +package cn.flaty.views; + +/** + * + * WEB常用的常量 + * + * @author flatychen + * + */ +public final class WebConstants { + + /** + * 验证码常量 + */ + public static final String SECURIYT_CODE = "securityCode"; + + /** + * 分页名称 + */ + public static final String PAGEBEANNAME = "pageBean"; + + /** + * token + */ + public static final String TOKENNAME = "token"; + + + /** + * web 上下文环境 + */ + public static final String BASE = "base"; + + + /** + * 当前访问URL + */ + public static final String WEBAPP_PATH = "webapp_path"; + + /** + * 当前访问URL + */ + public static final String CURRENT_PATH = "url"; + + + /** + * 企业用户session常量 + */ + public static final String USER_SESSION = "user_session"; + + +} diff --git a/src/main/resources/applicationContext.xml b/src/main/resources/applicationContext.xml index a7df034..129cdf0 100644 --- a/src/main/resources/applicationContext.xml +++ b/src/main/resources/applicationContext.xml @@ -1,26 +1,20 @@ - - - - - - + + + + - - diff --git a/src/main/resources/applicationDataSource.xml b/src/main/resources/applicationDataSource.xml index 9baaeab..0e823d3 100644 --- a/src/main/resources/applicationDataSource.xml +++ b/src/main/resources/applicationDataSource.xml @@ -1,12 +1,13 @@ - diff --git a/src/main/resources/applicationMvc.xml b/src/main/resources/applicationMvc.xml index b407dfc..d4a983f 100644 --- a/src/main/resources/applicationMvc.xml +++ b/src/main/resources/applicationMvc.xml @@ -1,10 +1,14 @@ @@ -24,5 +28,10 @@ - + + + + + + diff --git a/src/main/resources/applicationConn.xml b/src/main/resources/applicationRescourse.xml similarity index 51% rename from src/main/resources/applicationConn.xml rename to src/main/resources/applicationRescourse.xml index 2c34531..415438a 100644 --- a/src/main/resources/applicationConn.xml +++ b/src/main/resources/applicationRescourse.xml @@ -2,16 +2,20 @@ - - - - - + + + + + + + diff --git a/src/main/resources/applicationServer.xml b/src/main/resources/applicationServer.xml index 4907cd2..e321746 100644 --- a/src/main/resources/applicationServer.xml +++ b/src/main/resources/applicationServer.xml @@ -1,10 +1,11 @@ @@ -17,6 +18,9 @@ + + + @@ -24,6 +28,6 @@ - + diff --git a/src/main/resources/applicationTask.xml b/src/main/resources/applicationTask.xml new file mode 100644 index 0000000..266c7c1 --- /dev/null +++ b/src/main/resources/applicationTask.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/decorators.xml b/src/main/webapp/WEB-INF/decorators.xml index eaf5584..2ba244e 100644 --- a/src/main/webapp/WEB-INF/decorators.xml +++ b/src/main/webapp/WEB-INF/decorators.xml @@ -1,5 +1,5 @@ - + /* diff --git a/src/main/webapp/WEB-INF/jsp/common/base.jsp b/src/main/webapp/WEB-INF/jsp/common/base.jsp index cf433b5..352fc5a 100644 --- a/src/main/webapp/WEB-INF/jsp/common/base.jsp +++ b/src/main/webapp/WEB-INF/jsp/common/base.jsp @@ -1,5 +1,75 @@ <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<% - String url = "/f/index"; - response.sendRedirect(request.getContextPath() + url); -%> +<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fun" %> + + + + + + + + + + + + + + + + + +
+
+ 后台管理模板 +
+ +
+ +
+
+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ + +
+ + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/common/menus.jsp b/src/main/webapp/WEB-INF/jsp/common/menus.jsp new file mode 100644 index 0000000..0511260 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/common/menus.jsp @@ -0,0 +1,27 @@ +<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> +
+ + +
+
+

公告

+

时光静好,与君语;细水流年,与君同。—— Amaze UI

+
+
+ +
+
+

wiki

+

Welcome to the Amaze UI wiki!

+
+
+
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp index cf433b5..7b77dc8 100644 --- a/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp +++ b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp @@ -1,5 +1,119 @@ <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<% - String url = "/f/index"; - response.sendRedirect(request.getContextPath() + url); -%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fun"%> + + + + + +
+
+ 消息推送 / 新消息 +
+
+
+
+
+ 新消息 + + +
+ +
+ +
+ + +
+ + + + +

+ +

+
+
+ +
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/pushMessage/query.jsp b/src/main/webapp/WEB-INF/jsp/pushMessage/query.jsp new file mode 100644 index 0000000..a769372 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/pushMessage/query.jsp @@ -0,0 +1,12 @@ +<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fun" %> + + + + + + a test + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index a785653..a21e44a 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -1,23 +1,32 @@ - + log4jConfigLocation classpath:log4j.properties + contextConfigLocation - classpath:spring/spring/applicationContext.xml + classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener + + + + *.jsp + true + + + + encodingFilter org.springframework.web.filter.CharacterEncodingFilter - true encoding UTF-8 @@ -27,66 +36,43 @@ true + sitemesh com.opensymphony.sitemesh.webapp.SiteMeshFilter true - - - + + + encodingFilter /* + sitemesh /* - - - + + + springServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation - classpath:/spring/springMVC/spring_mvc_base.xml + classpath:applicationMvc.xml 1 - true - - sitemesh-freemarker - com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet - - TemplatePath - / - - - classic_compatible - true - - - default_encoding - utf-8 - - 2 - - - springServlet / - - sitemesh-freemarker - *.htm - - - - - + + + index.jsp diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index cf433b5..2855f6c 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -1,5 +1,5 @@ <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% - String url = "/f/index"; + String url = "/pushMessage/new"; response.sendRedirect(request.getContextPath() + url); %> diff --git a/src/main/webapp/res/amazonUi/css/admin.css b/src/main/webapp/res/amazonUi/css/admin.css new file mode 100644 index 0000000..44c19fc --- /dev/null +++ b/src/main/webapp/res/amazonUi/css/admin.css @@ -0,0 +1,321 @@ +/** + * admin.css + */ + +ul { + margin-top: 0; +} + +.admin-icon-yellow { + color: #ffbe40; +} + +.admin-header { + font-size: 1.4rem; + margin-bottom: 0; +} + +.admin-header-list a:hover :after { + content: none; +} + +.admin-main { + background: #f3f3f3; +} + +.admin-menu { + position: fixed; + bottom: 30px; + right: 20px; +} + +.admin-sidebar { + width: 260px; + min-height: 100%; + float: left; + border-right: 1px solid #cecece; +} + +.admin-sidebar-list { + margin-bottom: 0; +} + +.admin-sidebar-list li a { + color: #5c5c5c; + padding-left: 24px; +} + +.admin-sidebar-list li:first-child { + border-top: none; +} + +.admin-sidebar-sub { + margin-top: 0; + margin-bottom: 0; + box-shadow: 0 16px 8px -15px #e2e2e2 inset; + background: #ececec; + padding-left: 24px; +} + +.admin-sidebar-sub li:first-child { + border-top: 1px solid #dedede; +} + +.admin-sidebar-panel { + margin: 10px; +} + +.admin-content { + width: auto; + overflow: hidden; + height: 100%; + background: #fff; +} + +.admin-content-list { + border: 1px solid #e9ecf1; + margin-top: 0; +} + +.admin-content-list li { + border: 1px solid #e9ecf1; + border-width: 0 1px; + margin-left: -1px; +} + +.admin-content-list li:first-child { + border-left: none; +} + +.admin-content-list li:last-child { + border-right: none; +} + +.admin-content-table a { + color: #535353; +} +.admin-content-file { + margin-bottom: 0; + color: #666; +} + +.admin-content-file p { + margin: 0 0 5px 0; + font-size: 1.4rem; +} + +.admin-content-file li { + padding: 10px 0; +} + +.admin-content-file li:first-child { + border-top: none; +} + +.admin-content-file li:last-child { + border-bottom: none; +} + +.admin-content-file li .am-progress { + margin-bottom: 4px; +} + +.admin-content-file li .am-progress-bar { + line-height: 14px; +} + +.admin-content-task { + margin-bottom: 0; +} + +.admin-content-task li { + padding: 5px 0; + border-color: #eee; +} + +.admin-content-task li:first-child { + border-top: none; +} + +.admin-content-task li:last-child { + border-bottom: none; +} + +.admin-task-meta { + font-size: 1.2rem; + color: #999; +} + +.admin-task-bd { + font-size: 1.4rem; + margin-bottom: 5px; +} + +.admin-content-comment { + margin-bottom: 0; +} + +.admin-content-comment .am-comment-bd { + font-size: 1.4rem; +} + +.admin-content-pagination { + margin-bottom: 0; +} +.admin-content-pagination li a { + padding: 4px 8px; +} + +@media only screen and (min-width: 641px) { + .admin-sidebar { + display: block; + position: static; + background: none; + } + + .admin-offcanvas-bar { + position: static; + width: auto; + background: none; + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + .admin-offcanvas-bar:after { + content: none; + } +} + +@media only screen and (max-width: 640px) { + .admin-sidebar { + width: inherit; + } + + .admin-offcanvas-bar { + background: #f3f3f3; + } + + .admin-offcanvas-bar:after { + background: #BABABA; + } + + .admin-sidebar-list a:hover, .admin-sidebar-list a:active{ + -webkit-transition: background-color .3s ease; + -moz-transition: background-color .3s ease; + -ms-transition: background-color .3s ease; + -o-transition: background-color .3s ease; + transition: background-color .3s ease; + background: #E4E4E4; + } + + .admin-content-list li { + padding: 10px; + border-width: 1px 0; + margin-top: -1px; + } + + .admin-content-list li:first-child { + border-top: none; + } + + .admin-content-list li:last-child { + border-bottom: none; + } + + .admin-form-text { + text-align: left !important; + } + +} + +/* +* user.html css +*/ +.user-info { + margin-bottom: 15px; +} + +.user-info .am-progress { + margin-bottom: 4px; +} + +.user-info p { + margin: 5px; +} + +.user-info-order { + font-size: 1.4rem; +} + +/* +* errorLog.html css +*/ + +.error-log .am-pre-scrollable { + max-height: 40rem; +} + +/* +* table.html css +*/ + +.table-main { + font-size: 1.4rem; + padding: .5rem; +} + +.table-main button { + background: #fff; +} + +.table-check { + width: 30px; +} + +.table-id { + width: 50px; +} + +@media only screen and (max-width: 640px) { + .table-select { + margin-top: 10px; + margin-left: 5px; + } +} + +/* +gallery.html css +*/ + +.gallery-list li { + padding: 10px; +} + +.gallery-list a { + color: #666; +} + +.gallery-list a:hover { + color: #3bb4f2; +} + +.gallery-title { + margin-top: 6px; + font-size: 1.4rem; +} + +.gallery-desc { + font-size: 1.2rem; + margin-top: 4px; +} + +/* + 404.html css +*/ + +.page-404 { + background: #fff; + border: none; + width: 200px; + margin: 0 auto; +} diff --git a/src/main/webapp/res/amazonUi/css/amazeui.css b/src/main/webapp/res/amazonUi/css/amazeui.css new file mode 100644 index 0000000..4f7ff17 --- /dev/null +++ b/src/main/webapp/res/amazonUi/css/amazeui.css @@ -0,0 +1,14134 @@ +/*! Amaze UI v2.1.0 | by Amaze UI Team | (c) 2015 AllMobilize, Inc. | Licensed under MIT | 2015-01-13T02:01:01 UTC */ +/* ========================================================================== + Component: Base + ============================================================================ */ +/** + * Fix the flawed CSS box model - Yes, IE6's box model is better + * Browser support: IE8+ + * via: http://paulirish.com/2012/box-sizing-border-box-ftw/ + */ +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +/* normalize.css v3.0.2 | git.io/normalize */ +/* Set and to inherit the height of the viewport */ +html, +body { + min-height: 100%; +} +/** + * 1. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + * https://developer.mozilla.org/en-US/docs/Web/CSS/text-size-adjust + */ +html { + -ms-text-size-adjust: 100%; + /* 1 */ + -webkit-text-size-adjust: 100% + /* 1 */ +} +/** + * Remove default margin. + */ +body { + margin: 0; +} +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. + * Correct `block` display not defined for `main` in IE 11. + * hgroup has been removed from the HTML5 (W3C) specification + * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +main, +nav, +section, +summary { + display: block; +} +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline + /* 2 */ +} +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; +} +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ +[hidden], +template, +script { + display: none; +} +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; +} +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ +a:focus { + outline: thin dotted; +} +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ +a:active, +a:hover { + outline: 0; +} +/* Text-level semantics + ========================================================================== */ +/** + * Remove text-decoration + */ +ins, +a { + text-decoration: none; +} +/** + * Address styling not present in IE 8/9, Safari 5, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; +} +/** + * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ +b, +strong { + font-weight: bold; +} +/** + * Improve readability of pre-formatted text in all browsers. + */ +pre { + white-space: pre-wrap; +} +/** + * Set consistent quote types. + */ +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; +} +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +/* Embedded content + ========================================================================== */ +/** + * 1. Corrects max-width behavior (2.) if padding and border are used + * 2. Responsiveness: Sets a maxium width relative to the parent and auto scales the height + * 3. Remove the gap between images and the bottom of their containers + * 4. Remove border when inside `a` element in IE 8/9. + */ +img { + -webkit-box-sizing: border-box; + box-sizing: border-box; + /* 1 */ + max-width: 100%; + /* 2 */ + height: auto; + /* 2 */ + vertical-align: middle; + /* 3 */ + border: 0 + /* 4 */ +} +/** + * Correct overflow displayed oddly in IE 9. + */ +svg:not(:root) { + overflow: hidden; +} +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 0; +} +/** + * Correct font family set oddly in Safari 5 and Chrome. + */ +code, +kbd, +pre, +samp { + font-family: Monaco, Menlo, Consolas, "Courier New", "FontAwesome", monospace; + font-size: 1em; +} +/* Forms + ========================================================================== */ +/** + * Define consistent border, margin, and padding. + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +/** + * 1. Correct `color` not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0 + /* 2 */ +} +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0 + /* 3 */ +} +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; +} +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +button, +input { + line-height: normal; +} +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; +} +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer + /* 3 */ +} +/* + * 1. Improves consistency of cursor style for clickable elements + * 2. Removes excess padding in IE 8/9. + * 3. Address box sizing set to `content-box` in IE 8/9/10. + */ +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; + /*1*/ + padding: 0; + /*2*/ + -webkit-box-sizing: border-box; + box-sizing: border-box + /* 3 */ +} +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; +} +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -webkit-box-sizing: content-box; + box-sizing: content-box + /* 2 */ +} +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +/** + * 1. Remove default vertical scrollbar in IE 8/9. + * 2. Improve readability and alignment in all browsers. + */ +textarea { + overflow: auto; + /* 1 */ + vertical-align: top; + /* 2 */ + resize: vertical; +} +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; +} +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +/* AMUI Base + ========================================================================== */ +/** + * `font-size` is set in `html` element to support the `rem` unit for font-sizes + * NOTE: IE9 & IE10 do not recognize `rem` units when used with the + `font` shorthand property. + */ +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + position: relative; + background: #ffffff; + font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif; + font-weight: normal; + line-height: 1.6; + color: #333333; + font-size: 1.6rem; +} +/** + * 1. http://usabilitypost.com/2012/11/15/w-optimizelegibility-on-mobile-devices/ + * 2. http://maxvoltar.com/archive/-webkit-font-smoothing + * NOTE: http://usabilitypost.com/2012/11/05/stop-fixing-font-smoothing/ + * 3. http://maximilianhoffmann.com/posts/better-font-rendering-on-osx + * http://jaydenseric.com/blog/css-font-smoothing-for-firefox-mac + */ +body, +input, +textarea, +select, +button { + text-rendering: optimizeLegibility; + /* 1 */ + -webkit-font-smoothing: antialiased; + /* 2 */ + -moz-osx-font-smoothing: grayscale; + /* 3 Default: auto */ + -moz-font-feature-settings: "liga", "kern"; +} +/*Only phones */ +@media only screen and (max-width: 640px) { + /** + * Break strings if their length exceeds the width of their container + */ + body { + word-wrap: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; + } +} +/** + * links + */ +a { + color: #0e90d2; +} +a:hover, +a:focus { + color: #095f8a; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +/* Insert */ +ins { + background: #ffffaa; + color: #333333; +} +/** + * Mark + * Note: Addresses styling not present in IE 8/9. + */ +mark { + background: #ffffaa; + color: #333333; +} +/** + * Abbreviation and definition + */ +abbr[title], +dfn[title] { + cursor: help; +} +dfn[title] { + border-bottom: 1px dotted; + font-style: normal; +} +/* Spacing for block elements */ +p, +hr, +ul, +ol, +dl, +blockquote, +pre, +address, +fieldset, +figure { + margin: 0 0 1.6rem 0; +} +* + p, +* + hr, +* + ul, +* + ol, +* + dl, +* + blockquote, +* + pre, +* + address, +* + fieldset, +* + figure { + margin-top: 1.6rem; +} +/* Headings + ========================================================================== */ +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0 0 1.6rem 0; + font-weight: 600; + font-size: 100%; +} +h1 { + font-size: 1.5em; +} +h2 { + font-size: 1.25em; +} +* + h1, +* + h2, +* + h3, +* + h4, +* + h5, +* + h6 { + margin-top: 2em; +} +/* Ordered and unordered lists */ +ul, +ol { + padding-left: 2em; +} +/* Reset margin for nested lists */ +ul > li > ul, +ul > li > ol, +ol > li > ol, +ol > li > ul { + margin: 1em 0; +} +/* Description lists */ +dt { + font-weight: bold; +} +dt + dd { + margin-top: .5em; +} +dd { + margin-left: 0; +} +dd + dt { + margin-top: 1em; +} +/** + * Horizontal rule + * 1. Address differences between Firefox and other browsers. + */ +hr { + display: block; + padding: 0; + border: 0; + height: 0; + border-top: 1px solid #eeeeee; + /* 1 */ + -webkit-box-sizing: content-box; + box-sizing: content-box + /* 1 */ +} +/* Address */ +address { + font-style: normal; +} +/* Quotes */ +blockquote { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 15px; + border-left: 4px solid #dddddd; + font-family: Georgia, "Times New Roman", Times, Kai, "Kaiti SC", KaiTi, BiauKai, "FontAwesome", serif + /* Small print for identifying the source */ + /* Smaller margin if `small` follows */ +} +blockquote small { + display: block; + color: #999999; + font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif; + text-align: right; +} +blockquote p:last-of-type { + margin-bottom: 0; +} +/* iframe */ +iframe { + border: 0; +} +/* Forms + ========================================================================== */ +/** + * Vertical alignment + * Exclude `radio` and `checkbox` elements because the default `baseline` value aligns better with text + */ +button, +input:not([type="radio"]):not([type="checkbox"]), +select { + vertical-align: middle; +} +/** + * Fix viewport for IE10 snap mode + * http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ + * http://msdn.microsoft.com/en-us/library/ie/hh869615%28v=vs.85%29.aspx + * http://msdn.microsoft.com/zh-cn/library/ie/hh708740(v=vs.85).aspx + * @2014.01.20: 设置一下属性以后,windows Phone 8 上显示的字体过小,暂时注释掉 + * ========================================================================== */ +/* +@-ms-viewport { + width: device-width; +} +*/ +/* ========================================================================== + Component: Grid + ============================================================================ */ +.am-container { + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin-left: auto; + margin-right: auto; + padding-left: 1rem; + padding-right: 1rem; + width: 100%; + max-width: 1000px; +} +.am-container:before, +.am-container:after { + content: " "; + display: table; +} +.am-container:after { + clear: both; +} +@media only screen and (min-width:641px) { + .am-container { + padding-left: 1.5rem; + padding-right: 1.5rem; + } +} +.am-container > .am-g { + width: auto; + margin-left: -1rem; + margin-right: -1rem; +} +@media only screen and (min-width:641px) { + .am-container > .am-g { + margin-left: -1.5rem; + margin-right: -1.5rem; + } +} +.am-g { + margin: 0 auto; + width: 100%; +} +.am-g:before, +.am-g:after { + content: " "; + display: table; +} +.am-g:after { + clear: both; +} +.am-g .am-g { + margin-left: -1rem; + margin-right: -1rem; + width: auto; +} +.am-g .am-g.am-g-collapse { + margin-left: 0; + margin-right: 0; + width: auto; +} +@media only screen and (min-width:641px) { + .am-g .am-g { + margin-left: -1.5rem; + margin-right: -1.5rem; + } +} +.am-g.am-g-collapse .am-g { + margin-left: 0; + margin-right: 0; +} +.am-g-collapse [class*="am-u-"] { + padding-left: 0; + padding-right: 0; +} +.am-g-fixed { + max-width: 1000px; +} +[class*="am-u-"] { + width: 100%; + padding-left: 1rem; + padding-right: 1rem; + float: left; + position: relative; +} +[class*="am-u-"] + [class*="am-u-"]:last-child { + float: right; +} +[class*="am-u-"] + [class*="am-u-"].am-u-end { + float: left; +} +@media only screen and (min-width:641px) { + [class*="am-u-"] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } +} +[class*="am-u-pull-"] { + left: auto; +} +[class*="am-u-push-"] { + right: auto; +} +@media only screen { + .am-u-sm-1 { + width: 8.33333333%; + } + .am-u-sm-2 { + width: 16.66666667%; + } + .am-u-sm-3 { + width: 25%; + } + .am-u-sm-4 { + width: 33.33333333%; + } + .am-u-sm-5 { + width: 41.66666667%; + } + .am-u-sm-6 { + width: 50%; + } + .am-u-sm-7 { + width: 58.33333333%; + } + .am-u-sm-8 { + width: 66.66666667%; + } + .am-u-sm-9 { + width: 75%; + } + .am-u-sm-10 { + width: 83.33333333%; + } + .am-u-sm-11 { + width: 91.66666667%; + } + .am-u-sm-12 { + width: 100%; + } + .am-u-sm-pull-0 { + right: 0; + } + .am-u-sm-pull-1 { + right: 8.33333333%; + } + .am-u-sm-pull-2 { + right: 16.66666667%; + } + .am-u-sm-pull-3 { + right: 25%; + } + .am-u-sm-pull-4 { + right: 33.33333333%; + } + .am-u-sm-pull-5 { + right: 41.66666667%; + } + .am-u-sm-pull-6 { + right: 50%; + } + .am-u-sm-pull-7 { + right: 58.33333333%; + } + .am-u-sm-pull-8 { + right: 66.66666667%; + } + .am-u-sm-pull-9 { + right: 75%; + } + .am-u-sm-pull-10 { + right: 83.33333333%; + } + .am-u-sm-pull-11 { + right: 91.66666667%; + } + .am-u-sm-push-0 { + left: 0; + } + .am-u-sm-push-1 { + left: 8.33333333%; + } + .am-u-sm-push-2 { + left: 16.66666667%; + } + .am-u-sm-push-3 { + left: 25%; + } + .am-u-sm-push-4 { + left: 33.33333333%; + } + .am-u-sm-push-5 { + left: 41.66666667%; + } + .am-u-sm-push-6 { + left: 50%; + } + .am-u-sm-push-7 { + left: 58.33333333%; + } + .am-u-sm-push-8 { + left: 66.66666667%; + } + .am-u-sm-push-9 { + left: 75%; + } + .am-u-sm-push-10 { + left: 83.33333333%; + } + .am-u-sm-push-11 { + left: 91.66666667%; + } + .am-u-sm-offset-0 { + margin-left: 0; + } + .am-u-sm-offset-1 { + margin-left: 8.33333333%; + } + .am-u-sm-offset-2 { + margin-left: 16.66666667%; + } + .am-u-sm-offset-3 { + margin-left: 25%; + } + .am-u-sm-offset-4 { + margin-left: 33.33333333%; + } + .am-u-sm-offset-5 { + margin-left: 41.66666667%; + } + .am-u-sm-offset-6 { + margin-left: 50%; + } + .am-u-sm-offset-7 { + margin-left: 58.33333333%; + } + .am-u-sm-offset-8 { + margin-left: 66.66666667%; + } + .am-u-sm-offset-9 { + margin-left: 75%; + } + .am-u-sm-offset-10 { + margin-left: 83.33333333%; + } + .am-u-sm-offset-11 { + margin-left: 91.66666667%; + } + .am-u-sm-reset-order { + margin-left: 0; + margin-right: 0; + left: auto; + right: auto; + float: left; + } + [class*="am-u-"].am-u-sm-centered { + margin-left: auto; + margin-right: auto; + float: none; + } + [class*="am-u-"].am-u-sm-centered:last-child { + float: none; + } + [class*="am-u-"].am-u-sm-uncentered { + margin-left: 0; + margin-right: 0; + float: left; + } + [class*="am-u-"].am-u-sm-uncentered:last-child { + float: left; + } +} +@media only screen and (min-width:641px) { + .am-u-md-1 { + width: 8.33333333%; + } + .am-u-md-2 { + width: 16.66666667%; + } + .am-u-md-3 { + width: 25%; + } + .am-u-md-4 { + width: 33.33333333%; + } + .am-u-md-5 { + width: 41.66666667%; + } + .am-u-md-6 { + width: 50%; + } + .am-u-md-7 { + width: 58.33333333%; + } + .am-u-md-8 { + width: 66.66666667%; + } + .am-u-md-9 { + width: 75%; + } + .am-u-md-10 { + width: 83.33333333%; + } + .am-u-md-11 { + width: 91.66666667%; + } + .am-u-md-12 { + width: 100%; + } + .am-u-md-pull-0 { + right: 0; + } + .am-u-md-pull-1 { + right: 8.33333333%; + } + .am-u-md-pull-2 { + right: 16.66666667%; + } + .am-u-md-pull-3 { + right: 25%; + } + .am-u-md-pull-4 { + right: 33.33333333%; + } + .am-u-md-pull-5 { + right: 41.66666667%; + } + .am-u-md-pull-6 { + right: 50%; + } + .am-u-md-pull-7 { + right: 58.33333333%; + } + .am-u-md-pull-8 { + right: 66.66666667%; + } + .am-u-md-pull-9 { + right: 75%; + } + .am-u-md-pull-10 { + right: 83.33333333%; + } + .am-u-md-pull-11 { + right: 91.66666667%; + } + .am-u-md-push-0 { + left: 0; + } + .am-u-md-push-1 { + left: 8.33333333%; + } + .am-u-md-push-2 { + left: 16.66666667%; + } + .am-u-md-push-3 { + left: 25%; + } + .am-u-md-push-4 { + left: 33.33333333%; + } + .am-u-md-push-5 { + left: 41.66666667%; + } + .am-u-md-push-6 { + left: 50%; + } + .am-u-md-push-7 { + left: 58.33333333%; + } + .am-u-md-push-8 { + left: 66.66666667%; + } + .am-u-md-push-9 { + left: 75%; + } + .am-u-md-push-10 { + left: 83.33333333%; + } + .am-u-md-push-11 { + left: 91.66666667%; + } + .am-u-md-offset-0 { + margin-left: 0; + } + .am-u-md-offset-1 { + margin-left: 8.33333333%; + } + .am-u-md-offset-2 { + margin-left: 16.66666667%; + } + .am-u-md-offset-3 { + margin-left: 25%; + } + .am-u-md-offset-4 { + margin-left: 33.33333333%; + } + .am-u-md-offset-5 { + margin-left: 41.66666667%; + } + .am-u-md-offset-6 { + margin-left: 50%; + } + .am-u-md-offset-7 { + margin-left: 58.33333333%; + } + .am-u-md-offset-8 { + margin-left: 66.66666667%; + } + .am-u-md-offset-9 { + margin-left: 75%; + } + .am-u-md-offset-10 { + margin-left: 83.33333333%; + } + .am-u-md-offset-11 { + margin-left: 91.66666667%; + } + .am-u-md-reset-order { + margin-left: 0; + margin-right: 0; + left: auto; + right: auto; + float: left; + } + [class*="am-u-"].am-u-md-centered { + margin-left: auto; + margin-right: auto; + float: none; + } + [class*="am-u-"].am-u-md-centered:last-child { + float: none; + } + [class*="am-u-"].am-u-md-uncentered { + margin-left: 0; + margin-right: 0; + float: left; + } + [class*="am-u-"].am-u-md-uncentered:last-child { + float: left; + } +} +@media only screen and (min-width:1025px) { + .am-u-lg-1 { + width: 8.33333333%; + } + .am-u-lg-2 { + width: 16.66666667%; + } + .am-u-lg-3 { + width: 25%; + } + .am-u-lg-4 { + width: 33.33333333%; + } + .am-u-lg-5 { + width: 41.66666667%; + } + .am-u-lg-6 { + width: 50%; + } + .am-u-lg-7 { + width: 58.33333333%; + } + .am-u-lg-8 { + width: 66.66666667%; + } + .am-u-lg-9 { + width: 75%; + } + .am-u-lg-10 { + width: 83.33333333%; + } + .am-u-lg-11 { + width: 91.66666667%; + } + .am-u-lg-12 { + width: 100%; + } + .am-u-lg-pull-0 { + right: 0; + } + .am-u-lg-pull-1 { + right: 8.33333333%; + } + .am-u-lg-pull-2 { + right: 16.66666667%; + } + .am-u-lg-pull-3 { + right: 25%; + } + .am-u-lg-pull-4 { + right: 33.33333333%; + } + .am-u-lg-pull-5 { + right: 41.66666667%; + } + .am-u-lg-pull-6 { + right: 50%; + } + .am-u-lg-pull-7 { + right: 58.33333333%; + } + .am-u-lg-pull-8 { + right: 66.66666667%; + } + .am-u-lg-pull-9 { + right: 75%; + } + .am-u-lg-pull-10 { + right: 83.33333333%; + } + .am-u-lg-pull-11 { + right: 91.66666667%; + } + .am-u-lg-push-0 { + left: 0; + } + .am-u-lg-push-1 { + left: 8.33333333%; + } + .am-u-lg-push-2 { + left: 16.66666667%; + } + .am-u-lg-push-3 { + left: 25%; + } + .am-u-lg-push-4 { + left: 33.33333333%; + } + .am-u-lg-push-5 { + left: 41.66666667%; + } + .am-u-lg-push-6 { + left: 50%; + } + .am-u-lg-push-7 { + left: 58.33333333%; + } + .am-u-lg-push-8 { + left: 66.66666667%; + } + .am-u-lg-push-9 { + left: 75%; + } + .am-u-lg-push-10 { + left: 83.33333333%; + } + .am-u-lg-push-11 { + left: 91.66666667%; + } + .am-u-lg-offset-0 { + margin-left: 0; + } + .am-u-lg-offset-1 { + margin-left: 8.33333333%; + } + .am-u-lg-offset-2 { + margin-left: 16.66666667%; + } + .am-u-lg-offset-3 { + margin-left: 25%; + } + .am-u-lg-offset-4 { + margin-left: 33.33333333%; + } + .am-u-lg-offset-5 { + margin-left: 41.66666667%; + } + .am-u-lg-offset-6 { + margin-left: 50%; + } + .am-u-lg-offset-7 { + margin-left: 58.33333333%; + } + .am-u-lg-offset-8 { + margin-left: 66.66666667%; + } + .am-u-lg-offset-9 { + margin-left: 75%; + } + .am-u-lg-offset-10 { + margin-left: 83.33333333%; + } + .am-u-lg-offset-11 { + margin-left: 91.66666667%; + } + .am-u-lg-reset-order { + margin-left: 0; + margin-right: 0; + left: auto; + right: auto; + float: left; + } + [class*="am-u-"].am-u-lg-centered { + margin-left: auto; + margin-right: auto; + float: none; + } + [class*="am-u-"].am-u-lg-centered:last-child { + float: none; + } + [class*="am-u-"].am-u-lg-uncentered { + margin-left: 0; + margin-right: 0; + float: left; + } + [class*="am-u-"].am-u-lg-uncentered:last-child { + float: left; + } +} +/* ========================================================================== + Component: AVG Grid + ============================================================================ */ +[class*="am-avg-"] { + display: block; + padding: 0; + margin: 0; + list-style: none; +} +[class*="am-avg-"]:before, +[class*="am-avg-"]:after { + content: " "; + display: table; +} +[class*="am-avg-"]:after { + clear: both; +} +[class*="am-avg-"] > li { + display: block; + height: auto; + float: left; +} +@media only screen { + .am-avg-sm-1 > li { + width: 100%; + } + .am-avg-sm-1 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-1 > li:nth-of-type(1n + 1) { + clear: both; + } + .am-avg-sm-2 > li { + width: 50%; + } + .am-avg-sm-2 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-2 > li:nth-of-type(2n + 1) { + clear: both; + } + .am-avg-sm-3 > li { + width: 33.33333333%; + } + .am-avg-sm-3 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-3 > li:nth-of-type(3n + 1) { + clear: both; + } + .am-avg-sm-4 > li { + width: 25%; + } + .am-avg-sm-4 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-4 > li:nth-of-type(4n + 1) { + clear: both; + } + .am-avg-sm-5 > li { + width: 20%; + } + .am-avg-sm-5 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-5 > li:nth-of-type(5n + 1) { + clear: both; + } + .am-avg-sm-6 > li { + width: 16.66666667%; + } + .am-avg-sm-6 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-6 > li:nth-of-type(6n + 1) { + clear: both; + } + .am-avg-sm-7 > li { + width: 14.28571429%; + } + .am-avg-sm-7 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-7 > li:nth-of-type(7n + 1) { + clear: both; + } + .am-avg-sm-8 > li { + width: 12.5%; + } + .am-avg-sm-8 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-8 > li:nth-of-type(8n + 1) { + clear: both; + } + .am-avg-sm-9 > li { + width: 11.11111111%; + } + .am-avg-sm-9 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-9 > li:nth-of-type(9n + 1) { + clear: both; + } + .am-avg-sm-10 > li { + width: 10%; + } + .am-avg-sm-10 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-10 > li:nth-of-type(10n + 1) { + clear: both; + } + .am-avg-sm-11 > li { + width: 9.09090909%; + } + .am-avg-sm-11 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-11 > li:nth-of-type(11n + 1) { + clear: both; + } + .am-avg-sm-12 > li { + width: 8.33333333%; + } + .am-avg-sm-12 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-12 > li:nth-of-type(12n + 1) { + clear: both; + } +} +@media only screen and (min-width:641px) { + .am-avg-md-1 > li { + width: 100%; + } + .am-avg-md-1 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-1 > li:nth-of-type(1n + 1) { + clear: both; + } + .am-avg-md-2 > li { + width: 50%; + } + .am-avg-md-2 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-2 > li:nth-of-type(2n + 1) { + clear: both; + } + .am-avg-md-3 > li { + width: 33.33333333%; + } + .am-avg-md-3 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-3 > li:nth-of-type(3n + 1) { + clear: both; + } + .am-avg-md-4 > li { + width: 25%; + } + .am-avg-md-4 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-4 > li:nth-of-type(4n + 1) { + clear: both; + } + .am-avg-md-5 > li { + width: 20%; + } + .am-avg-md-5 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-5 > li:nth-of-type(5n + 1) { + clear: both; + } + .am-avg-md-6 > li { + width: 16.66666667%; + } + .am-avg-md-6 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-6 > li:nth-of-type(6n + 1) { + clear: both; + } + .am-avg-md-7 > li { + width: 14.28571429%; + } + .am-avg-md-7 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-7 > li:nth-of-type(7n + 1) { + clear: both; + } + .am-avg-md-8 > li { + width: 12.5%; + } + .am-avg-md-8 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-8 > li:nth-of-type(8n + 1) { + clear: both; + } + .am-avg-md-9 > li { + width: 11.11111111%; + } + .am-avg-md-9 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-9 > li:nth-of-type(9n + 1) { + clear: both; + } + .am-avg-md-10 > li { + width: 10%; + } + .am-avg-md-10 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-10 > li:nth-of-type(10n + 1) { + clear: both; + } + .am-avg-md-11 > li { + width: 9.09090909%; + } + .am-avg-md-11 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-11 > li:nth-of-type(11n + 1) { + clear: both; + } + .am-avg-md-12 > li { + width: 8.33333333%; + } + .am-avg-md-12 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-12 > li:nth-of-type(12n + 1) { + clear: both; + } +} +@media only screen and (min-width:1025px) { + .am-avg-lg-1 > li { + width: 100%; + } + .am-avg-lg-1 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-1 > li:nth-of-type(1n + 1) { + clear: both; + } + .am-avg-lg-2 > li { + width: 50%; + } + .am-avg-lg-2 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-2 > li:nth-of-type(2n + 1) { + clear: both; + } + .am-avg-lg-3 > li { + width: 33.33333333%; + } + .am-avg-lg-3 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-3 > li:nth-of-type(3n + 1) { + clear: both; + } + .am-avg-lg-4 > li { + width: 25%; + } + .am-avg-lg-4 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-4 > li:nth-of-type(4n + 1) { + clear: both; + } + .am-avg-lg-5 > li { + width: 20%; + } + .am-avg-lg-5 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-5 > li:nth-of-type(5n + 1) { + clear: both; + } + .am-avg-lg-6 > li { + width: 16.66666667%; + } + .am-avg-lg-6 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-6 > li:nth-of-type(6n + 1) { + clear: both; + } + .am-avg-lg-7 > li { + width: 14.28571429%; + } + .am-avg-lg-7 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-7 > li:nth-of-type(7n + 1) { + clear: both; + } + .am-avg-lg-8 > li { + width: 12.5%; + } + .am-avg-lg-8 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-8 > li:nth-of-type(8n + 1) { + clear: both; + } + .am-avg-lg-9 > li { + width: 11.11111111%; + } + .am-avg-lg-9 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-9 > li:nth-of-type(9n + 1) { + clear: both; + } + .am-avg-lg-10 > li { + width: 10%; + } + .am-avg-lg-10 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-10 > li:nth-of-type(10n + 1) { + clear: both; + } + .am-avg-lg-11 > li { + width: 9.09090909%; + } + .am-avg-lg-11 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-11 > li:nth-of-type(11n + 1) { + clear: both; + } + .am-avg-lg-12 > li { + width: 8.33333333%; + } + .am-avg-lg-12 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-12 > li:nth-of-type(12n + 1) { + clear: both; + } +} +/* ========================================================================== + Component: Code + ============================================================================ */ +/* Inline and block code styles */ +code, +kbd, +pre, +samp { + font-family: Monaco, Menlo, Consolas, "Courier New", "FontAwesome", monospace; +} +/* Inline code */ +code { + padding: 2px 4px; + font-size: 1.3rem; + color: #c7254e; + background-color: #f8f8f8; + white-space: nowrap; + border-radius: 0; +} +/* Code block */ +pre { + display: block; + padding: 1rem; + margin: 1rem 0; + font-size: 1.3rem; + line-height: 1.6; + word-break: break-all; + word-wrap: break-word; + color: #555555; + background-color: #f8f8f8; + border: 1px solid #dedede; + border-radius: 0; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +/* Enable scrollable blocks of code */ +.am-pre-scrollable { + max-height: 24rem; + overflow-y: scroll; +} +/* ========================================================================== + Component: Button + ============================================================================ */ +.am-btn { + display: inline-block; + margin-bottom: 0; + padding: 0.625em 1em; + vertical-align: middle; + font-size: 1.6rem; + font-weight: normal; + line-height: 1.2; + text-align: center; + white-space: nowrap; + background-image: none; + border: 1px solid transparent; + border-radius: 0; + cursor: pointer; + outline: 0; + -webkit-appearance: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transition: background-color 300ms ease-out, border-color 300ms ease-out; + transition: background-color 300ms ease-out, border-color 300ms ease-out; +} +.am-btn:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.am-btn:hover, +.am-btn:focus { + outline: 0; + color: #444444; + text-decoration: none; +} +.am-btn:active, +.am-btn.am-active { + background-image: none; + -webkit-box-shadow: inset 0 1px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 1px 8px rgba(0, 0, 0, 0.125); +} +.am-btn.am-disabled, +.am-btn[disabled], +fieldset[disabled] .am-btn { + pointer-events: none; + border-color: transparent; + cursor: not-allowed; + opacity: 0.45; + -webkit-box-shadow: none; + box-shadow: none; +} +.am-btn.am-round { + border-radius: 1000px; +} +.am-btn.am-radius { + border-radius: 2px; +} +.am-btn-default { + color: #444444; + background-color: #e6e6e6; + border-color: #e6e6e6; +} +.am-btn-default:hover, +.am-btn-default:focus, +.am-btn-default:active, +.am-btn-default.am-active, +.am-active .am-btn-default.am-dropdown-toggle { + color: #444444; + background-color: #c7c7c7; + border-color: #c7c7c7; +} +.am-btn-default:active, +.am-btn-default.am-btn-active, +.am-active .am-btn-default.am-dropdown-toggle { + background-image: none; +} +.am-btn-default.am-disabled, +.am-btn-default[disabled], +fieldset[disabled] .am-btn-default, +.am-btn-default.am-disabled:hover, +.am-btn-default[disabled]:hover, +fieldset[disabled] .am-btn-default:hover, +.am-btn-default.am-disabled:focus, +.am-btn-default[disabled]:focus, +fieldset[disabled] .am-btn-default:focus, +.am-btn-default.am-disabled:active, +.am-btn-default[disabled]:active, +fieldset[disabled] .am-btn-default:active, +.am-btn-default.am-disabled.am-btn-active, +.am-btn-default[disabled].am-btn-active, +fieldset[disabled] .am-btn-default.am-btn-active { + background-color: #e6e6e6; + border-color: #e6e6e6; +} +.am-btn-group .am-btn-default, +.am-btn-group-stacked .am-btn-default { + border-color: #d9d9d9; +} +.am-btn-primary { + color: #ffffff; + background-color: #0e90d2; + border-color: #0e90d2; +} +.am-btn-primary:hover, +.am-btn-primary:focus, +.am-btn-primary:active, +.am-btn-primary.am-active, +.am-active .am-btn-primary.am-dropdown-toggle { + color: #ffffff; + background-color: #0a6999; + border-color: #0a6999; +} +.am-btn-primary:active, +.am-btn-primary.am-btn-active, +.am-active .am-btn-primary.am-dropdown-toggle { + background-image: none; +} +.am-btn-primary.am-disabled, +.am-btn-primary[disabled], +fieldset[disabled] .am-btn-primary, +.am-btn-primary.am-disabled:hover, +.am-btn-primary[disabled]:hover, +fieldset[disabled] .am-btn-primary:hover, +.am-btn-primary.am-disabled:focus, +.am-btn-primary[disabled]:focus, +fieldset[disabled] .am-btn-primary:focus, +.am-btn-primary.am-disabled:active, +.am-btn-primary[disabled]:active, +fieldset[disabled] .am-btn-primary:active, +.am-btn-primary.am-disabled.am-btn-active, +.am-btn-primary[disabled].am-btn-active, +fieldset[disabled] .am-btn-primary.am-btn-active { + background-color: #0e90d2; + border-color: #0e90d2; +} +.am-btn-group .am-btn-primary, +.am-btn-group-stacked .am-btn-primary { + border-color: #0c80ba; +} +.am-btn-warning { + color: #ffffff; + background-color: #f37b1d; + border-color: #f37b1d; +} +.am-btn-warning:hover, +.am-btn-warning:focus, +.am-btn-warning:active, +.am-btn-warning.am-active, +.am-active .am-btn-warning.am-dropdown-toggle { + color: #ffffff; + background-color: #c85e0b; + border-color: #c85e0b; +} +.am-btn-warning:active, +.am-btn-warning.am-btn-active, +.am-active .am-btn-warning.am-dropdown-toggle { + background-image: none; +} +.am-btn-warning.am-disabled, +.am-btn-warning[disabled], +fieldset[disabled] .am-btn-warning, +.am-btn-warning.am-disabled:hover, +.am-btn-warning[disabled]:hover, +fieldset[disabled] .am-btn-warning:hover, +.am-btn-warning.am-disabled:focus, +.am-btn-warning[disabled]:focus, +fieldset[disabled] .am-btn-warning:focus, +.am-btn-warning.am-disabled:active, +.am-btn-warning[disabled]:active, +fieldset[disabled] .am-btn-warning:active, +.am-btn-warning.am-disabled.am-btn-active, +.am-btn-warning[disabled].am-btn-active, +fieldset[disabled] .am-btn-warning.am-btn-active { + background-color: #f37b1d; + border-color: #f37b1d; +} +.am-btn-group .am-btn-warning, +.am-btn-group-stacked .am-btn-warning { + border-color: #ea6e0c; +} +.am-btn-danger { + color: #ffffff; + background-color: #dd514c; + border-color: #dd514c; +} +.am-btn-danger:hover, +.am-btn-danger:focus, +.am-btn-danger:active, +.am-btn-danger.am-active, +.am-active .am-btn-danger.am-dropdown-toggle { + color: #ffffff; + background-color: #c62b26; + border-color: #c62b26; +} +.am-btn-danger:active, +.am-btn-danger.am-btn-active, +.am-active .am-btn-danger.am-dropdown-toggle { + background-image: none; +} +.am-btn-danger.am-disabled, +.am-btn-danger[disabled], +fieldset[disabled] .am-btn-danger, +.am-btn-danger.am-disabled:hover, +.am-btn-danger[disabled]:hover, +fieldset[disabled] .am-btn-danger:hover, +.am-btn-danger.am-disabled:focus, +.am-btn-danger[disabled]:focus, +fieldset[disabled] .am-btn-danger:focus, +.am-btn-danger.am-disabled:active, +.am-btn-danger[disabled]:active, +fieldset[disabled] .am-btn-danger:active, +.am-btn-danger.am-disabled.am-btn-active, +.am-btn-danger[disabled].am-btn-active, +fieldset[disabled] .am-btn-danger.am-btn-active { + background-color: #dd514c; + border-color: #dd514c; +} +.am-btn-group .am-btn-danger, +.am-btn-group-stacked .am-btn-danger { + border-color: #d93c37; +} +.am-btn-success { + color: #ffffff; + background-color: #5eb95e; + border-color: #5eb95e; +} +.am-btn-success:hover, +.am-btn-success:focus, +.am-btn-success:active, +.am-btn-success.am-active, +.am-active .am-btn-success.am-dropdown-toggle { + color: #ffffff; + background-color: #429842; + border-color: #429842; +} +.am-btn-success:active, +.am-btn-success.am-btn-active, +.am-active .am-btn-success.am-dropdown-toggle { + background-image: none; +} +.am-btn-success.am-disabled, +.am-btn-success[disabled], +fieldset[disabled] .am-btn-success, +.am-btn-success.am-disabled:hover, +.am-btn-success[disabled]:hover, +fieldset[disabled] .am-btn-success:hover, +.am-btn-success.am-disabled:focus, +.am-btn-success[disabled]:focus, +fieldset[disabled] .am-btn-success:focus, +.am-btn-success.am-disabled:active, +.am-btn-success[disabled]:active, +fieldset[disabled] .am-btn-success:active, +.am-btn-success.am-disabled.am-btn-active, +.am-btn-success[disabled].am-btn-active, +fieldset[disabled] .am-btn-success.am-btn-active { + background-color: #5eb95e; + border-color: #5eb95e; +} +.am-btn-group .am-btn-success, +.am-btn-group-stacked .am-btn-success { + border-color: #4db14d; +} +.am-btn-secondary { + color: #ffffff; + background-color: #3bb4f2; + border-color: #3bb4f2; +} +.am-btn-secondary:hover, +.am-btn-secondary:focus, +.am-btn-secondary:active, +.am-btn-secondary.am-active, +.am-active .am-btn-secondary.am-dropdown-toggle { + color: #ffffff; + background-color: #0f9ae0; + border-color: #0f9ae0; +} +.am-btn-secondary:active, +.am-btn-secondary.am-btn-active, +.am-active .am-btn-secondary.am-dropdown-toggle { + background-image: none; +} +.am-btn-secondary.am-disabled, +.am-btn-secondary[disabled], +fieldset[disabled] .am-btn-secondary, +.am-btn-secondary.am-disabled:hover, +.am-btn-secondary[disabled]:hover, +fieldset[disabled] .am-btn-secondary:hover, +.am-btn-secondary.am-disabled:focus, +.am-btn-secondary[disabled]:focus, +fieldset[disabled] .am-btn-secondary:focus, +.am-btn-secondary.am-disabled:active, +.am-btn-secondary[disabled]:active, +fieldset[disabled] .am-btn-secondary:active, +.am-btn-secondary.am-disabled.am-btn-active, +.am-btn-secondary[disabled].am-btn-active, +fieldset[disabled] .am-btn-secondary.am-btn-active { + background-color: #3bb4f2; + border-color: #3bb4f2; +} +.am-btn-group .am-btn-secondary, +.am-btn-group-stacked .am-btn-secondary { + border-color: #23abf0; +} +/* Style links like a button */ +.am-btn-link { + color: #0e90d2; + font-weight: normal; + cursor: pointer; + border-radius: 0; +} +.am-btn-link, +.am-btn-link:active, +.am-btn-link[disabled], +fieldset[disabled] .am-btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.am-btn-link, +.am-btn-link:hover, +.am-btn-link:focus, +.am-btn-link:active { + border-color: transparent; +} +.am-btn-link:hover, +.am-btn-link:focus { + color: #095f8a; + text-decoration: underline; + background-color: transparent; +} +.am-btn-link[disabled]:hover, +fieldset[disabled] .am-btn-link:hover, +.am-btn-link[disabled]:focus, +fieldset[disabled] .am-btn-link:focus { + color: #999999; + text-decoration: none; +} +/* button size */ +.am-btn-xs { + font-size: 1.2rem; +} +.am-btn-sm { + font-size: 1.4rem; +} +.am-btn-lg { + font-size: 1.8rem; +} +.am-btn-xl { + font-size: 2rem; +} +/* Block button */ +.am-btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} +/* Multiple block buttons vertically space */ +.am-btn-block + .am-btn-block { + margin-top: 5px; +} +/* Specificity overrides */ +input[type="submit"].am-btn-block, +input[type="reset"].am-btn-block, +input[type="button"].am-btn-block { + width: 100%; +} +/* Button with loading spinner */ +.am-btn.am-btn-loading .am-icon-spin { + margin-right: 5px; +} +/* ========================================================================== + Component: Table + ============================================================================ */ +table { + max-width: 100%; + background-color: transparent; + empty-cells: show; +} +table code { + white-space: normal; +} +th { + text-align: left; +} +.am-table { + width: 100%; + margin-bottom: 1.6rem; + border-spacing: 0; + border-collapse: separate; +} +.am-table > thead > tr > th, +.am-table > tbody > tr > th, +.am-table > tfoot > tr > th, +.am-table > thead > tr > td, +.am-table > tbody > tr > td, +.am-table > tfoot > tr > td { + padding: 0.7rem; + line-height: 1.6; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.am-table > thead > tr > th { + vertical-align: bottom; + border-bottom: 1px solid #dddddd; +} +.am-table > caption + thead > tr:first-child > th, +.am-table > colgroup + thead > tr:first-child > th, +.am-table > thead:first-child > tr:first-child > th, +.am-table > caption + thead > tr:first-child > td, +.am-table > colgroup + thead > tr:first-child > td, +.am-table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.am-table > tbody + tbody tr:first-child td { + border-top: 2px solid #dddddd; +} +/* Bordered version */ +.am-table-bordered { + border: 1px solid #dddddd; +} +.am-table-bordered > thead > tr > th, +.am-table-bordered > tbody > tr > th, +.am-table-bordered > tfoot > tr > th, +.am-table-bordered > thead > tr > td, +.am-table-bordered > tbody > tr > td, +.am-table-bordered > tfoot > tr > td { + border-left: 1px solid #dddddd; +} +.am-table-bordered > thead > tr > th:first-child, +.am-table-bordered > tbody > tr > th:first-child, +.am-table-bordered > tfoot > tr > th:first-child, +.am-table-bordered > thead > tr > td:first-child, +.am-table-bordered > tbody > tr > td:first-child, +.am-table-bordered > tfoot > tr > td:first-child { + border-left: none; +} +/* Border-radius version */ +.am-table-radius { + border: 1px solid #dddddd; + border-radius: 2px; +} +.am-table-radius > thead > tr:first-child > th:first-child, +.am-table-radius > thead > tr:first-child > td:first-child { + border-top-left-radius: 2px; + border-left: none; +} +.am-table-radius > thead > tr:first-child > th:last-child, +.am-table-radius > thead > tr:first-child > td:last-child { + border-top-right-radius: 2px; + border-right: none; +} +.am-table-radius > tbody > tr > th:first-child, +.am-table-radius > tbody > tr > td:first-child { + border-left: none; +} +.am-table-radius > tbody > tr > th:last-child, +.am-table-radius > tbody > tr > td:last-child { + border-right: none; +} +.am-table-radius > tbody > tr:last-child > th, +.am-table-radius > tbody > tr:last-child > td { + border-bottom: none; +} +.am-table-radius > tbody > tr:last-child > th:first-child, +.am-table-radius > tbody > tr:last-child > td:first-child { + border-bottom-left-radius: 2px; +} +.am-table-radius > tbody > tr:last-child > th:last-child, +.am-table-radius > tbody > tr:last-child > td:last-child { + border-bottom-right-radius: 2px; +} +/* Zebra-striping */ +.am-table-striped > tbody > tr:nth-child(odd) > td, +.am-table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +/* Hover effect */ +.am-table-hover > tbody > tr:hover > td, +.am-table-hover > tbody > tr:hover > th { + background-color: #e9e9e9; +} +.am-table > thead > tr > td.am-active, +.am-table > tbody > tr > td.am-active, +.am-table > tfoot > tr > td.am-active, +.am-table > thead > tr > th.am-active, +.am-table > tbody > tr > th.am-active, +.am-table > tfoot > tr > th.am-active, +.am-table > thead > tr.am-active > td, +.am-table > tbody > tr.am-active > td, +.am-table > tfoot > tr.am-active > td, +.am-table > thead > tr.am-active > th, +.am-table > tbody > tr.am-active > th, +.am-table > tfoot > tr.am-active > th { + background-color: #ffffdd; +} +.am-table > thead > tr > td.am-disabled, +.am-table > tbody > tr > td.am-disabled, +.am-table > tfoot > tr > td.am-disabled, +.am-table > thead > tr > th.am-disabled, +.am-table > tbody > tr > th.am-disabled, +.am-table > tfoot > tr > th.am-disabled, +.am-table > thead > tr.am-disabled > td, +.am-table > tbody > tr.am-disabled > td, +.am-table > tfoot > tr.am-disabled > td, +.am-table > thead > tr.am-disabled > th, +.am-table > tbody > tr.am-disabled > th, +.am-table > tfoot > tr.am-disabled > th { + color: #999999; +} +.am-table > thead > tr > td.am-primary, +.am-table > tbody > tr > td.am-primary, +.am-table > tfoot > tr > td.am-primary, +.am-table > thead > tr > th.am-primary, +.am-table > tbody > tr > th.am-primary, +.am-table > tfoot > tr > th.am-primary, +.am-table > thead > tr.am-primary > td, +.am-table > tbody > tr.am-primary > td, +.am-table > tfoot > tr.am-primary > td, +.am-table > thead > tr.am-primary > th, +.am-table > tbody > tr.am-primary > th, +.am-table > tfoot > tr.am-primary > th { + color: #0b76ac; + background-color: rgba(14, 144, 210, 0.115); +} +.am-table > thead > tr > td.am-success, +.am-table > tbody > tr > td.am-success, +.am-table > tfoot > tr > td.am-success, +.am-table > thead > tr > th.am-success, +.am-table > tbody > tr > th.am-success, +.am-table > tfoot > tr > th.am-success, +.am-table > thead > tr.am-success > td, +.am-table > tbody > tr.am-success > td, +.am-table > tfoot > tr.am-success > td, +.am-table > thead > tr.am-success > th, +.am-table > tbody > tr.am-success > th, +.am-table > tfoot > tr.am-success > th { + color: #5eb95e; + background-color: rgba(94, 185, 94, 0.115); +} +.am-table > thead > tr > td.am-warning, +.am-table > tbody > tr > td.am-warning, +.am-table > tfoot > tr > td.am-warning, +.am-table > thead > tr > th.am-warning, +.am-table > tbody > tr > th.am-warning, +.am-table > tfoot > tr > th.am-warning, +.am-table > thead > tr.am-warning > td, +.am-table > tbody > tr.am-warning > td, +.am-table > tfoot > tr.am-warning > td, +.am-table > thead > tr.am-warning > th, +.am-table > tbody > tr.am-warning > th, +.am-table > tfoot > tr.am-warning > th { + color: #f37b1d; + background-color: rgba(243, 123, 29, 0.115); +} +.am-table > thead > tr > td.am-danger, +.am-table > tbody > tr > td.am-danger, +.am-table > tfoot > tr > td.am-danger, +.am-table > thead > tr > th.am-danger, +.am-table > tbody > tr > th.am-danger, +.am-table > tfoot > tr > th.am-danger, +.am-table > thead > tr.am-danger > td, +.am-table > tbody > tr.am-danger > td, +.am-table > tfoot > tr.am-danger > td, +.am-table > thead > tr.am-danger > th, +.am-table > tbody > tr.am-danger > th, +.am-table > tfoot > tr.am-danger > th { + color: #dd514c; + background-color: rgba(221, 81, 76, 0.115); +} +/* ========================================================================== + Component: Form + ============================================================================ */ +/* Normalize */ +fieldset { + border: none; +} +legend { + display: block; + width: 100%; + margin-bottom: 2rem; + font-size: 2rem; + line-height: inherit; + color: #333333; + border-bottom: 1px solid #e5e5e5; + padding-bottom: 0.5rem; +} +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + line-height: normal; +} +input[type="file"] { + display: block; +} +select[multiple], +select[size] { + height: auto; +} +select optgroup { + font-size: inherit; + font-style: inherit; + font-family: inherit; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; +} +output { + display: block; + padding-top: 1.6rem; + font-size: 1.6rem; + line-height: 1.6; + color: #555555; + vertical-align: middle; +} +/* Common form controls */ +.am-form select, +.am-form textarea, +.am-form input[type="text"], +.am-form input[type="password"], +.am-form input[type="datetime"], +.am-form input[type="datetime-local"], +.am-form input[type="date"], +.am-form input[type="month"], +.am-form input[type="time"], +.am-form input[type="week"], +.am-form input[type="number"], +.am-form input[type="email"], +.am-form input[type="url"], +.am-form input[type="search"], +.am-form input[type="tel"], +.am-form input[type="color"], +.am-form-field { + display: block; + width: 100%; + padding: 0.625em; + font-size: 1.6rem; + line-height: 1.2; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 0; + -webkit-appearance: none; + -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.am-form select:focus, +.am-form textarea:focus, +.am-form input[type="text"]:focus, +.am-form input[type="password"]:focus, +.am-form input[type="datetime"]:focus, +.am-form input[type="datetime-local"]:focus, +.am-form input[type="date"]:focus, +.am-form input[type="month"]:focus, +.am-form input[type="time"]:focus, +.am-form input[type="week"]:focus, +.am-form input[type="number"]:focus, +.am-form input[type="email"]:focus, +.am-form input[type="url"]:focus, +.am-form input[type="search"]:focus, +.am-form input[type="tel"]:focus, +.am-form input[type="color"]:focus, +.am-form-field:focus { + outline: 0; +} +.am-form select:focus, +.am-form textarea:focus, +.am-form input[type="text"]:focus, +.am-form input[type="password"]:focus, +.am-form input[type="datetime"]:focus, +.am-form input[type="datetime-local"]:focus, +.am-form input[type="date"]:focus, +.am-form input[type="month"]:focus, +.am-form input[type="time"]:focus, +.am-form input[type="week"]:focus, +.am-form input[type="number"]:focus, +.am-form input[type="email"]:focus, +.am-form input[type="url"]:focus, +.am-form input[type="search"]:focus, +.am-form input[type="tel"]:focus, +.am-form input[type="color"]:focus, +.am-form-field:focus { + background-color: #fefffe; + border-color: #3bb4f2; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 5px rgba(59, 180, 242, 0.3); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 5px rgba(59, 180, 242, 0.3); +} +.am-form select::-webkit-input-placeholder, +.am-form textarea::-webkit-input-placeholder, +.am-form input[type="text"]::-webkit-input-placeholder, +.am-form input[type="password"]::-webkit-input-placeholder, +.am-form input[type="datetime"]::-webkit-input-placeholder, +.am-form input[type="datetime-local"]::-webkit-input-placeholder, +.am-form input[type="date"]::-webkit-input-placeholder, +.am-form input[type="month"]::-webkit-input-placeholder, +.am-form input[type="time"]::-webkit-input-placeholder, +.am-form input[type="week"]::-webkit-input-placeholder, +.am-form input[type="number"]::-webkit-input-placeholder, +.am-form input[type="email"]::-webkit-input-placeholder, +.am-form input[type="url"]::-webkit-input-placeholder, +.am-form input[type="search"]::-webkit-input-placeholder, +.am-form input[type="tel"]::-webkit-input-placeholder, +.am-form input[type="color"]::-webkit-input-placeholder, +.am-form-field::-webkit-input-placeholder { + color: #999999; +} +.am-form select::-moz-placeholder, +.am-form textarea::-moz-placeholder, +.am-form input[type="text"]::-moz-placeholder, +.am-form input[type="password"]::-moz-placeholder, +.am-form input[type="datetime"]::-moz-placeholder, +.am-form input[type="datetime-local"]::-moz-placeholder, +.am-form input[type="date"]::-moz-placeholder, +.am-form input[type="month"]::-moz-placeholder, +.am-form input[type="time"]::-moz-placeholder, +.am-form input[type="week"]::-moz-placeholder, +.am-form input[type="number"]::-moz-placeholder, +.am-form input[type="email"]::-moz-placeholder, +.am-form input[type="url"]::-moz-placeholder, +.am-form input[type="search"]::-moz-placeholder, +.am-form input[type="tel"]::-moz-placeholder, +.am-form input[type="color"]::-moz-placeholder, +.am-form-field::-moz-placeholder { + color: #999999; +} +.am-form select:-ms-input-placeholder, +.am-form textarea:-ms-input-placeholder, +.am-form input[type="text"]:-ms-input-placeholder, +.am-form input[type="password"]:-ms-input-placeholder, +.am-form input[type="datetime"]:-ms-input-placeholder, +.am-form input[type="datetime-local"]:-ms-input-placeholder, +.am-form input[type="date"]:-ms-input-placeholder, +.am-form input[type="month"]:-ms-input-placeholder, +.am-form input[type="time"]:-ms-input-placeholder, +.am-form input[type="week"]:-ms-input-placeholder, +.am-form input[type="number"]:-ms-input-placeholder, +.am-form input[type="email"]:-ms-input-placeholder, +.am-form input[type="url"]:-ms-input-placeholder, +.am-form input[type="search"]:-ms-input-placeholder, +.am-form input[type="tel"]:-ms-input-placeholder, +.am-form input[type="color"]:-ms-input-placeholder, +.am-form-field:-ms-input-placeholder { + color: #999999; +} +.am-form select::placeholder, +.am-form textarea::placeholder, +.am-form input[type="text"]::placeholder, +.am-form input[type="password"]::placeholder, +.am-form input[type="datetime"]::placeholder, +.am-form input[type="datetime-local"]::placeholder, +.am-form input[type="date"]::placeholder, +.am-form input[type="month"]::placeholder, +.am-form input[type="time"]::placeholder, +.am-form input[type="week"]::placeholder, +.am-form input[type="number"]::placeholder, +.am-form input[type="email"]::placeholder, +.am-form input[type="url"]::placeholder, +.am-form input[type="search"]::placeholder, +.am-form input[type="tel"]::placeholder, +.am-form input[type="color"]::placeholder, +.am-form-field::placeholder { + color: #999999; +} +.am-form select::-moz-placeholder, +.am-form textarea::-moz-placeholder, +.am-form input[type="text"]::-moz-placeholder, +.am-form input[type="password"]::-moz-placeholder, +.am-form input[type="datetime"]::-moz-placeholder, +.am-form input[type="datetime-local"]::-moz-placeholder, +.am-form input[type="date"]::-moz-placeholder, +.am-form input[type="month"]::-moz-placeholder, +.am-form input[type="time"]::-moz-placeholder, +.am-form input[type="week"]::-moz-placeholder, +.am-form input[type="number"]::-moz-placeholder, +.am-form input[type="email"]::-moz-placeholder, +.am-form input[type="url"]::-moz-placeholder, +.am-form input[type="search"]::-moz-placeholder, +.am-form input[type="tel"]::-moz-placeholder, +.am-form input[type="color"]::-moz-placeholder, +.am-form-field::-moz-placeholder { + opacity: 1; +} +.am-form select[disabled], +.am-form textarea[disabled], +.am-form input[type="text"][disabled], +.am-form input[type="password"][disabled], +.am-form input[type="datetime"][disabled], +.am-form input[type="datetime-local"][disabled], +.am-form input[type="date"][disabled], +.am-form input[type="month"][disabled], +.am-form input[type="time"][disabled], +.am-form input[type="week"][disabled], +.am-form input[type="number"][disabled], +.am-form input[type="email"][disabled], +.am-form input[type="url"][disabled], +.am-form input[type="search"][disabled], +.am-form input[type="tel"][disabled], +.am-form input[type="color"][disabled], +.am-form-field[disabled], +.am-form select[readonly], +.am-form textarea[readonly], +.am-form input[type="text"][readonly], +.am-form input[type="password"][readonly], +.am-form input[type="datetime"][readonly], +.am-form input[type="datetime-local"][readonly], +.am-form input[type="date"][readonly], +.am-form input[type="month"][readonly], +.am-form input[type="time"][readonly], +.am-form input[type="week"][readonly], +.am-form input[type="number"][readonly], +.am-form input[type="email"][readonly], +.am-form input[type="url"][readonly], +.am-form input[type="search"][readonly], +.am-form input[type="tel"][readonly], +.am-form input[type="color"][readonly], +.am-form-field[readonly], +fieldset[disabled] .am-form select, +fieldset[disabled] .am-form textarea, +fieldset[disabled] .am-form input[type="text"], +fieldset[disabled] .am-form input[type="password"], +fieldset[disabled] .am-form input[type="datetime"], +fieldset[disabled] .am-form input[type="datetime-local"], +fieldset[disabled] .am-form input[type="date"], +fieldset[disabled] .am-form input[type="month"], +fieldset[disabled] .am-form input[type="time"], +fieldset[disabled] .am-form input[type="week"], +fieldset[disabled] .am-form input[type="number"], +fieldset[disabled] .am-form input[type="email"], +fieldset[disabled] .am-form input[type="url"], +fieldset[disabled] .am-form input[type="search"], +fieldset[disabled] .am-form input[type="tel"], +fieldset[disabled] .am-form input[type="color"], +fieldset[disabled] .am-form-field { + cursor: not-allowed; + background-color: #eeeeee; +} +.am-form select.am-radius, +.am-form textarea.am-radius, +.am-form input[type="text"].am-radius, +.am-form input[type="password"].am-radius, +.am-form input[type="datetime"].am-radius, +.am-form input[type="datetime-local"].am-radius, +.am-form input[type="date"].am-radius, +.am-form input[type="month"].am-radius, +.am-form input[type="time"].am-radius, +.am-form input[type="week"].am-radius, +.am-form input[type="number"].am-radius, +.am-form input[type="email"].am-radius, +.am-form input[type="url"].am-radius, +.am-form input[type="search"].am-radius, +.am-form input[type="tel"].am-radius, +.am-form input[type="color"].am-radius, +.am-form-field.am-radius { + border-radius: 2px; +} +.am-form select.am-round, +.am-form textarea.am-round, +.am-form input[type="text"].am-round, +.am-form input[type="password"].am-round, +.am-form input[type="datetime"].am-round, +.am-form input[type="datetime-local"].am-round, +.am-form input[type="date"].am-round, +.am-form input[type="month"].am-round, +.am-form input[type="time"].am-round, +.am-form input[type="week"].am-round, +.am-form input[type="number"].am-round, +.am-form input[type="email"].am-round, +.am-form input[type="url"].am-round, +.am-form input[type="search"].am-round, +.am-form input[type="tel"].am-round, +.am-form input[type="color"].am-round, +.am-form-field.am-round { + border-radius: 1000px; +} +.am-form textarea, +.am-form select[multiple], +.am-form select[size] { + height: auto; +} +.am-form select { + -webkit-appearance: none !important; + -webkit-border-radius: 0; + background: #ffffff url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+') no-repeat 100% center; +} +.am-form select[multiple="multiple"] { + background-image: none; +} +/* help text */ +.am-form-help { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #999999; + font-size: 1.3rem; +} +/* form group */ +.am-form-group { + margin-bottom: 1.5rem; +} +/** + * Checkboxes and radios + * Indent the labels to position radios/checkboxes as hanging controls. +*/ +.am-radio, +.am-checkbox { + display: block; + min-height: 1.92rem; + margin-top: 10px; + margin-bottom: 10px; + padding-left: 20px; + vertical-align: middle; +} +.am-radio label, +.am-checkbox label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.am-radio input[type="radio"], +.am-radio-inline input[type="radio"], +.am-checkbox input[type="checkbox"], +.am-checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; + outline: none; +} +.am-radio + .am-radio, +.am-checkbox + .am-checkbox { + margin-top: -5px; +} +/* Radios and checkboxes inline */ +.am-radio-inline, +.am-checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.am-radio-inline + .am-radio-inline, +.am-checkbox-inline + .am-checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.am-radio[disabled], +.am-radio-inline[disabled], +.am-checkbox[disabled], +.am-checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .am-radio, +fieldset[disabled] .am-radio-inline, +fieldset[disabled] .am-checkbox, +fieldset[disabled] .am-checkbox-inline { + cursor: not-allowed; +} +/* Form field feedback states */ +.am-form-warning .am-form-help, +.am-form-warning .am-form-label, +.am-form-warning .am-radio, +.am-form-warning .am-checkbox, +.am-form-warning .am-radio-inline, +.am-form-warning .am-checkbox-inline, +.am-form-warning label { + color: #f37b1d; +} +.am-form-warning [class*="icon-"] { + color: #f37b1d; +} +.am-form-warning .am-form-field { + border-color: #f37b1d !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.am-form-warning .am-form-field:focus { + background-color: #fefffe; + border-color: #d2620b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #f8b47e !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #f8b47e !important; +} +.am-form-error .am-form-help, +.am-form-error .am-form-label, +.am-form-error .am-radio, +.am-form-error .am-checkbox, +.am-form-error .am-radio-inline, +.am-form-error .am-checkbox-inline, +.am-form-error label { + color: #dd514c; +} +.am-form-error [class*="icon-"] { + color: #dd514c; +} +.am-form-error .am-form-field, +.am-field-error { + border-color: #dd514c !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.am-form-error .am-form-field:focus, +.am-field-error:focus { + background-color: #fefffe; + border-color: #cf2d27; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #eda4a2 !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #eda4a2 !important; +} +.am-form-success .am-form-help, +.am-form-success .am-form-label, +.am-form-success .am-radio, +.am-form-success .am-checkbox, +.am-form-success .am-radio-inline, +.am-form-success .am-checkbox-inline, +.am-form-success label { + color: #5eb95e; +} +.am-form-success [class*="icon-"] { + color: #5eb95e; +} +.am-form-success .am-form-field, +.am-field-valid { + border-color: #5eb95e !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.am-form-success .am-form-field:focus, +.am-field-valid:focus { + background-color: #fefffe; + border-color: #459f45; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #a5d8a5 !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #a5d8a5 !important; +} +/* Horizontal forms */ +.am-form-horizontal .am-form-label, +.am-form-horizontal .am-radio, +.am-form-horizontal .am-checkbox, +.am-form-horizontal .am-radio-inline, +.am-form-horizontal .am-checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 0.6em; +} +.am-form-horizontal .am-form-group:before, +.am-form-horizontal .am-form-group:after { + content: " "; + display: table; +} +.am-form-horizontal .am-form-group:after { + clear: both; +} +@media only screen and (min-width:641px) { + .am-form-horizontal .am-form-label { + text-align: right; + } +} +/* Inline form elements */ +@media only screen and (min-width:641px) { + .am-form-inline .am-form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .am-form-inline .am-form-field { + display: inline-block; + width: auto; + vertical-align: middle; + } + .am-form-inline .am-input-group { + display: inline-table; + vertical-align: middle; + } + .am-form-inline .am-input-group .am-input-group-addon, + .am-form-inline .am-input-group .am-input-group-btn, + .am-form-inline .am-input-group .am-form-control { + width: auto; + } + .am-form-inline .am-input-group > .am-form-field { + width: 100%; + } + .am-form-inline .am-form-label { + margin-bottom: 0; + vertical-align: middle; + } + .am-form-inline .am-radio, + .am-form-inline .am-checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; + vertical-align: middle; + } + .am-form-inline .am-radio input[type="radio"], + .am-form-inline .am-checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + .am-form-inline .am-form-feedback .am-form-field-feedback { + top: 0; + } +} +/* Form field size */ +.am-input-sm { + font-size: 1.4rem !important; +} +.am-input-lg { + font-size: 1.8rem !important; +} +/* Form field feedback states */ +.am-form-icon { + position: relative; +} +.am-form-icon .am-form-field { + padding-left: 1.875em !important; +} +.am-form-icon [class*='am-icon-'] { + position: absolute; + left: 0.625em; + top: 50%; + display: block; + margin-top: -0.635em; + line-height: 1; + z-index: 2; +} +/* Feedback Icon */ +.am-form-feedback { + position: relative; +} +.am-form-feedback .am-form-field { + padding-left: 0.625em !important; + padding-right: 1.875em !important; +} +.am-form-feedback [class*='am-icon-'] { + right: 0.625em; + left: auto; +} +/* Form set */ +.am-form-set { + margin-bottom: 1.5rem; + padding: 0; +} +.am-form-set > input { + position: relative; + top: -1px; + border-radius: 0 !important; +} +.am-form-set > input:focus { + z-index: 2; +} +.am-form-set > input:first-child { + top: 1px; + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.am-form-set > input:last-child { + top: -2px; + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +/* ========================================================================== + Component: Image + ============================================================================ */ +/* Image thumbnails */ +.am-img-thumbnail { + display: inline-block; + padding: 2px; + line-height: 1.6; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.am-img-thumbnail.am-radius { + border-radius: 2px; +} +.am-img-responsive { + display: block; +} +/* ========================================================================== + Component: Nav + ============================================================================ */ +.am-nav { + margin-bottom: 0; + padding: 0; + list-style: none; +} +.am-nav:before, +.am-nav:after { + content: " "; + display: table; +} +.am-nav:after { + clear: both; +} +.am-nav > li { + position: relative; + display: block; +} +.am-nav > li + li { + margin-top: 5px; +} +.am-nav > li + .am-nav-header { + margin-top: 1em; +} +.am-nav > li > a { + position: relative; + display: block; + padding: 0.4em 1em; + border-radius: 0; +} +.am-nav > li > a:hover, +.am-nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.am-nav > li.am-active > a, +.am-nav > li.am-active > a:hover, +.am-nav > li.am-active > a:focus { + color: #ffffff; + background-color: #0e90d2; + cursor: default; +} +.am-nav > li.am-disabled > a { + color: #999999; +} +.am-nav > li.am-disabled > a:hover, +.am-nav > li.am-disabled > a:focus { + color: #999999; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.am-nav-header { + padding: 0.4em 1em; + text-transform: uppercase; + font-weight: bold; + font-size: 100%; + color: #555555; +} +.am-nav-divider { + margin: 15px 1em !important; + border-top: 1px solid #ddd; + -webkit-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} +.am-nav-pills > li { + float: left; +} +.am-nav-pills > li + li { + margin-left: 5px; + margin-top: 0; +} +.am-nav-tabs { + border-bottom: 1px solid #dddddd; +} +.am-nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.am-nav-tabs > li + li { + margin-top: 0; +} +.am-nav-tabs > li > a { + margin-right: 5px; + line-height: 1.6; + border: 1px solid transparent; + border-radius: 0 0 0 0; +} +.am-nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} +.am-nav-tabs > li.am-active > a, +.am-nav-tabs > li.am-active > a:hover, +.am-nav-tabs > li.am-active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.am-nav-tabs.am-nav-justify { + border-bottom: 0 + /* > li > a { + margin-right: 0; + border-radius: @global-radius; + } + + > .am-active > a { + &, + &:hover, + &:focus { + border: 1px solid @nav-tabs-justify-link-border-color; + } + }*/ +} +.am-nav-tabs.am-nav-justify > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; + border-radius: 0 0 0 0; +} +.am-nav-tabs.am-nav-justify > .am-active > a, +.am-nav-tabs.am-nav-justify > .am-active > a:hover, +.am-nav-tabs.am-nav-justify > .am-active > a:focus { + border-bottom-color: #ffffff; +} +.am-nav-justify { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-nav-justify > li { + float: none; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-nav-justify > li > a { + text-align: center; + margin-bottom: 0; +} +.lte9 .am-nav-justify > li { + display: table-cell; + width: 1%; +} +/* ========================================================================== + Component: Topbar + ============================================================================ */ +.am-topbar { + position: relative; + min-height: 50px; + margin-bottom: 1.6rem; + background: #f8f8f8; + border-width: 0 0 1px; + border-style: solid; + border-color: #dddddd; + color: #666666; +} +.am-topbar:before, +.am-topbar:after { + content: " "; + display: table; +} +.am-topbar:after { + clear: both; +} +.am-topbar a { + color: #666666; +} +.am-topbar-brand { + margin: 0; +} +@media only screen and (min-width:641px) { + .am-topbar-brand { + float: left; + } +} +.am-topbar-brand a:hover { + color: #4d4d4d; +} +.am-topbar-collapse { + width: 100%; + overflow-x: visible; + padding: 10px; + clear: both; + -webkit-overflow-scrolling: touch; +} +.am-topbar-collapse:before, +.am-topbar-collapse:after { + content: " "; + display: table; +} +.am-topbar-collapse:after { + clear: both; +} +.am-topbar-collapse.am-in { + overflow-y: auto; +} +@media only screen and (min-width:641px) { + .am-topbar-collapse { + margin-top: 0; + padding: 0; + width: auto; + clear: none; + } + .am-topbar-collapse.am-collapse { + display: block !important; + height: auto !important; + padding: 0; + overflow: visible !important; + } + .am-topbar-collapse.am-in { + overflow-y: visible; + } +} +.am-topbar-brand { + padding: 0 10px; + float: left; + font-size: 1.8rem; + height: 50px; + line-height: 50px; +} +.am-topbar-toggle { + position: relative; + float: right; + margin-right: 10px; +} +@media only screen and (min-width:641px) { + .am-topbar-toggle { + display: none; + } +} +@media only screen and (max-width: 640px) { + .am-topbar-nav { + margin-bottom: 8px; + } + .am-topbar-nav > li { + float: none; + } +} +@media only screen and (max-width: 640px) { + .am-topbar-nav > li + li { + margin-left: 0; + margin-top: 5px; + } +} +@media only screen and (min-width:641px) { + .am-topbar-nav { + float: left; + } + .am-topbar-nav > li > a { + position: relative; + line-height: 50px; + padding: 0 10px; + } + .am-topbar-nav > li > a:after { + position: absolute; + left: 50%; + margin-left: -7px; + bottom: -1px; + content: ""; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-bottom: 7px solid #f8f8f8; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-top: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + opacity: 0; + -webkit-transition: opacity .1s; + transition: opacity .1s; + } + .am-topbar-nav > li > a:hover:after { + opacity: 1; + border-bottom-color: #666666; + } + .am-topbar-nav > li.am-dropdown > a:after { + display: none; + } + .am-topbar-nav > li.am-active > a, + .am-topbar-nav > li.am-active > a:hover, + .am-topbar-nav > li.am-active > a:focus { + border-radius: 0; + color: #0e90d2; + background: none; + } + .am-topbar-nav > li.am-active > a:after { + opacity: 1; + border-bottom-color: #0e90d2; + } +} +@media only screen and (max-width: 640px) { + .am-topbar-collapse .am-dropdown.am-active .am-dropdown-content { + float: none; + position: relative; + width: 100%; + } +} +@media only screen and (min-width:641px) { + .am-topbar-left { + float: left; + } + .am-topbar-right { + float: right; + margin-right: 10px; + } +} +@media only screen and (max-width: 640px) { + .am-topbar-form .am-form-group { + margin-bottom: 5px; + } +} +@media only screen and (min-width:641px) { + .am-topbar-form { + padding: 0 10px; + margin-top: 8px; + } + .am-topbar-form .am-form-group + .am-btn { + margin-left: 5px; + } +} +.am-topbar-btn { + margin-top: 8px; +} +@media only screen and (max-width: 640px) { + .am-topbar-collapse .am-topbar-btn, + .am-topbar-collapse .am-btn { + display: block; + width: 100%; + } +} +.am-topbar-inverse { + background-color: #0e90d2; + border-color: #0b6fa2; + color: #eeeeee; +} +.am-topbar-inverse a { + color: #eeeeee; +} +.am-topbar-inverse .am-topbar-brand a { + color: #ffffff; +} +.am-topbar-inverse .am-topbar-brand a:hover, +.am-topbar-inverse .am-topbar-brand a:focus { + color: #ffffff; + background-color: transparent; +} +.am-topbar-inverse .am-topbar-nav > li > a { + color: #eeeeee; +} +.am-topbar-inverse .am-topbar-nav > li > a:hover, +.am-topbar-inverse .am-topbar-nav > li > a:focus { + color: #ffffff; + background-color: rgba(0, 0, 0, 0.05); +} +.am-topbar-inverse .am-topbar-nav > li > a:hover:after, +.am-topbar-inverse .am-topbar-nav > li > a:focus:after { + border-bottom-color: #0b6fa2; +} +.am-topbar-inverse .am-topbar-nav > li > a:after { + border-bottom-color: #0e90d2; +} +.am-topbar-inverse .am-topbar-nav > li.am-active > a, +.am-topbar-inverse .am-topbar-nav > li.am-active > a:hover, +.am-topbar-inverse .am-topbar-nav > li.am-active > a:focus { + color: #ffffff; + background-color: rgba(0, 0, 0, 0.1); +} +.am-topbar-inverse .am-topbar-nav > li.am-active > a:after, +.am-topbar-inverse .am-topbar-nav > li.am-active > a:hover:after, +.am-topbar-inverse .am-topbar-nav > li.am-active > a:focus:after { + border-bottom-color: #ffffff; +} +.am-topbar-inverse .am-topbar-nav > li .disabled > a, +.am-topbar-inverse .am-topbar-nav > li .disabled > a:hover, +.am-topbar-inverse .am-topbar-nav > li .disabled > a:focus { + color: #444444; + background-color: transparent; +} +.am-topbar-fixed-top, +.am-topbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1000; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.am-topbar-fixed-top { + top: 0; +} +.am-topbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.am-with-topbar-fixed-top { + padding-top: 51px; +} +.am-with-topbar-fixed-bottom { + padding-bottom: 51px; +} +@media only screen and (max-width: 640px) { + .am-topbar-fixed-bottom .am-topbar-collapse { + position: absolute; + bottom: 100%; + margin-bottom: 1px; + background-color: #f8f8f8; + } + .am-topbar-fixed-bottom .am-topbar-collapse .am-dropdown-content:before, + .am-topbar-fixed-bottom .am-topbar-collapse .am-dropdown-content:after { + display: none; + } + .am-topbar-fixed-bottom.am-topbar-inverse .am-topbar-collapse { + background-color: #0e90d2; + } +} +/* ========================================================================== + Component: Breadcrumb + ============================================================================ */ +.am-breadcrumb { + padding: .7em .5em; + margin-bottom: 2rem; + list-style: none; + background-color: transparent; + border-radius: 0; + font-size: 85%; +} +.am-breadcrumb > li { + display: inline-block; +} +.am-breadcrumb > li [class*="am-icon-"]:before { + color: #999999; + margin-right: 5px; +} +.am-breadcrumb > li + li:before { + content: "»\00a0"; + padding: 0 8px; + color: #cccccc; +} +.am-breadcrumb > .am-active { + color: #999999; +} +.am-breadcrumb-slash > li + li:before { + content: "/\00a0"; +} +/* ========================================================================== + Component: Pagination + ============================================================================ */ +.am-pagination { + padding-left: 0; + margin: 1.5rem 0; + list-style: none; + color: #999999; + text-align: left; +} +.am-pagination:before, +.am-pagination:after { + content: " "; + display: table; +} +.am-pagination:after { + clear: both; +} +.am-pagination > li { + display: inline-block; +} +.am-pagination > li > a, +.am-pagination > li > span { + position: relative; + display: block; + padding: 0.5em 1em; + text-decoration: none; + line-height: 1.2; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; + margin-bottom: 5px; + margin-right: 5px; +} +.am-pagination > li:last-child > a, +.am-pagination > li:last-child > span { + margin-right: 0; +} +.am-pagination > li > a:hover, +.am-pagination > li > span:hover, +.am-pagination > li > a:focus, +.am-pagination > li > span:focus { + background-color: #eeeeee; +} +.am-pagination > .am-active > a, +.am-pagination > .am-active > span, +.am-pagination > .am-active > a:hover, +.am-pagination > .am-active > span:hover, +.am-pagination > .am-active > a:focus, +.am-pagination > .am-active > span:focus { + z-index: 2; + color: #ffffff; + background-color: #0e90d2; + border-color: #0e90d2; + cursor: default; +} +.am-pagination > .am-disabled > span, +.am-pagination > .am-disabled > span:hover, +.am-pagination > .am-disabled > span:focus, +.am-pagination > .am-disabled > a, +.am-pagination > .am-disabled > a:hover, +.am-pagination > .am-disabled > a:focus { + color: #999999; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; + pointer-events: none; +} +.am-pagination .am-pagination-prev { + float: left; +} +.am-pagination .am-pagination-prev a { + border-radius: 0; +} +.am-pagination .am-pagination-next { + float: right; +} +.am-pagination .am-pagination-next a { + border-radius: 0; +} +.am-pagination-centered { + text-align: center; +} +.am-pagination-right { + text-align: right; +} +/* ========================================================================== + Component: Aniamtion + ============================================================================ */ +[class*="am-animation-"] { + -webkit-animation-duration: 0.5s; + animation-duration: 0.5s; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} +/* Hide animated element if scrollSpy is used */ +@media screen { + .cssanimations [data-am-scrollspy*="animation"] { + opacity: 0; + } +} +/* Fade */ +.am-animation-fade { + -webkit-animation-name: am-fade; + animation-name: am-fade; + -webkit-animation-duration: 0.8s; + animation-duration: 0.8s; + -webkit-animation-timing-function: linear; + animation-timing-function: linear; +} +/* Scale */ +.am-animation-scale-up { + -webkit-animation-name: am-scale-up; + animation-name: am-scale-up; +} +.am-animation-scale-down { + -webkit-animation-name: am-scale-down; + animation-name: am-scale-down; +} +/* Slide */ +.am-animation-slide-top { + -webkit-animation-name: am-slide-top; + animation-name: am-slide-top; +} +.am-animation-slide-bottom { + -webkit-animation-name: am-slide-bottom; + animation-name: am-slide-bottom; +} +.am-animation-slide-left { + -webkit-animation-name: am-slide-left; + animation-name: am-slide-left; +} +.am-animation-slide-right { + -webkit-animation-name: am-slide-right; + animation-name: am-slide-right; +} +.am-animation-slide-top-fixed { + -webkit-animation-name: am-slide-top-fixed; + animation-name: am-slide-top-fixed; +} +/* Shake */ +.am-animation-shake { + -webkit-animation-name: am-shake; + animation-name: am-shake; +} +/* Spin */ +.am-animation-spin { + -webkit-animation: am-spin 2s infinite linear; + animation: am-spin 2s infinite linear; +} +/* Spring */ +.am-animation-left-spring { + -webkit-animation: am-left-spring 0.3s ease-in-out; + animation: am-left-spring 0.3s ease-in-out; +} +.am-animation-right-spring { + -webkit-animation: am-right-spring 0.3s ease-in-out; + animation: am-right-spring 0.3s ease-in-out; +} +.am-animation-reverse { + -webkit-animation-direction: reverse; + animation-direction: reverse; +} +.am-animation-paused { + -webkit-animation-play-state: paused !important; + animation-play-state: paused !important; +} +/* Keyframes + ============================================================================ */ +/* Fade */ +@-webkit-keyframes am-fade { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes am-fade { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +/* Scale up */ +@-webkit-keyframes am-scale-up { + 0% { + opacity: 0; + -webkit-transform: scale(0.2); + transform: scale(0.2); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +@keyframes am-scale-up { + 0% { + opacity: 0; + -webkit-transform: scale(0.2); + transform: scale(0.2); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +/* Scale down */ +@-webkit-keyframes am-scale-down { + 0% { + opacity: 0; + -webkit-transform: scale(1.8); + transform: scale(1.8); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +@keyframes am-scale-down { + 0% { + opacity: 0; + -webkit-transform: scale(1.8); + transform: scale(1.8); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +/* Slide top */ +@-webkit-keyframes am-slide-top { + 0% { + opacity: 0; + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +@keyframes am-slide-top { + 0% { + opacity: 0; + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +/* Slide bottom */ +@-webkit-keyframes am-slide-bottom { + 0% { + opacity: 0; + -webkit-transform: translateY(100%); + transform: translateY(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +@keyframes am-slide-bottom { + 0% { + opacity: 0; + -webkit-transform: translateY(100%); + transform: translateY(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +/* Slide left */ +@-webkit-keyframes am-slide-left { + 0% { + opacity: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@keyframes am-slide-left { + 0% { + opacity: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +/* Slide right */ +@-webkit-keyframes am-slide-right { + 0% { + opacity: 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@keyframes am-slide-right { + 0% { + opacity: 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +/* Shake */ +@-webkit-keyframes am-shake { + 0%, + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 10% { + -webkit-transform: translateX(-9px); + transform: translateX(-9px); + } + 20% { + -webkit-transform: translateX(8px); + transform: translateX(8px); + } + 30% { + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 40% { + -webkit-transform: translateX(6px); + transform: translateX(6px); + } + 50% { + -webkit-transform: translateX(-5px); + transform: translateX(-5px); + } + 60% { + -webkit-transform: translateX(4px); + transform: translateX(4px); + } + 70% { + -webkit-transform: translateX(-3px); + transform: translateX(-3px); + } + 80% { + -webkit-transform: translateX(2px); + transform: translateX(2px); + } + 90% { + -webkit-transform: translateX(-1px); + transform: translateX(-1px); + } +} +@keyframes am-shake { + 0%, + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 10% { + -webkit-transform: translateX(-9px); + transform: translateX(-9px); + } + 20% { + -webkit-transform: translateX(8px); + transform: translateX(8px); + } + 30% { + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 40% { + -webkit-transform: translateX(6px); + transform: translateX(6px); + } + 50% { + -webkit-transform: translateX(-5px); + transform: translateX(-5px); + } + 60% { + -webkit-transform: translateX(4px); + transform: translateX(4px); + } + 70% { + -webkit-transform: translateX(-3px); + transform: translateX(-3px); + } + 80% { + -webkit-transform: translateX(2px); + transform: translateX(2px); + } + 90% { + -webkit-transform: translateX(-1px); + transform: translateX(-1px); + } +} +/* Slide top fixed */ +@-webkit-keyframes am-slide-top-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +@keyframes am-slide-top-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +/* Slide bottom fixed */ +@-webkit-keyframes am-slide-bottom-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(10px); + transform: translateY(10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +@keyframes am-slide-bottom-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(10px); + transform: translateY(10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +/* Spin */ +@-webkit-keyframes am-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes am-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +/* Spring */ +@-webkit-keyframes am-right-spring { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 50% { + -webkit-transform: translateX(-20%); + transform: translateX(-20%); + } + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@keyframes am-right-spring { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 50% { + -webkit-transform: translateX(-20%); + transform: translateX(-20%); + } + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@-webkit-keyframes am-left-spring { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 50% { + -webkit-transform: translateX(20%); + transform: translateX(20%); + } + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@keyframes am-left-spring { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 50% { + -webkit-transform: translateX(20%); + transform: translateX(20%); + } + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +/* ========================================================================== + Component: Article + ============================================================================ */ +.am-article:before, +.am-article:after { + content: " "; + display: table; +} +.am-article:after { + clear: both; +} +.am-article > :last-child { + margin-bottom: 0; +} +.am-article + .am-article { + margin-top: 2.4rem; +} +/* Sub-object `.@{ns}article-title` */ +.am-article-title { + font-size: 2.8rem; + line-height: 1.15; + font-weight: normal; +} +.am-article-title a { + color: inherit; + text-decoration: none; +} +/* Sub-object `.@{ns}article-meta` */ +.am-article-meta { + font-size: 1.2rem; + line-height: 1.5; + color: #999999; +} +/* Sub-object `.@{ns}article-lead` */ +.am-article-lead { + color: #666666; + font-size: 1.4rem; + line-height: 1.5; + border: 1px solid #dedede; + border-radius: 2px; + background: #f9f9f9; + padding: 10px; +} +/* Sub-object `.@{ns}article-divider` */ +.am-article-divider { + margin-bottom: 2.4rem; + border-color: #eeeeee; +} +* + .am-article-divider { + margin-top: 2.4rem; +} +/* Sub-object `.@{ns}article-bd` */ +.am-article-bd blockquote { + font-family: Georgia, "Times New Roman", Times, Kai, "Kaiti SC", KaiTi, BiauKai, "FontAwesome", serif; +} +/* ========================================================================== + Component: Badge + ============================================================================ */ +.am-badge { + display: inline-block; + min-width: 10px; + padding: 0.25em 0.625em; + font-size: 1.2rem; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #999999; + border-radius: 0; +} +.am-badge:empty { + display: none; +} +.am-badge.am-square { + border-radius: 0; +} +.am-badge.am-radius { + border-radius: 2px; +} +.am-badge.am-round { + border-radius: 1000px; +} +a.am-badge:hover, +a.am-badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.am-badge-primary { + background-color: #0e90d2; +} +.am-badge-secondary { + background-color: #3bb4f2; +} +.am-badge-success { + background-color: #5eb95e; +} +.am-badge-warning { + background-color: #f37b1d; +} +.am-badge-danger { + background-color: #dd514c; +} +/* ========================================================================== + Component: Comment + ============================================================================ */ +.am-comment:before, +.am-comment:after { + content: " "; + display: table; +} +.am-comment:after { + clear: both; +} +.am-comment-avatar { + float: left; + width: 32px; + height: 32px; + border-radius: 50%; + border: 1px solid transparent; +} +@media only screen and (min-width:641px) { + .am-comment-avatar { + width: 48px; + height: 48px; + } +} +.am-comment-main { + position: relative; + margin-left: 42px; + border: 1px solid #dedede; + border-radius: 0; +} +.am-comment-main:before, +.am-comment-main:after { + position: absolute; + top: 10px; + left: -8px; + right: 100%; + width: 0; + height: 0; + display: block; + content: " "; + border-color: transparent; + border-style: solid solid outset; + border-width: 8px 8px 8px 0; + pointer-events: none; +} +.am-comment-main:before { + border-right-color: #dedede; + z-index: 1; +} +.am-comment-main:after { + border-right-color: #f8f8f8; + margin-left: 1px; + z-index: 2; +} +@media only screen and (min-width:641px) { + .am-comment-main { + margin-left: 63px; + } +} +.am-comment-hd { + background: #f8f8f8; + border-bottom: 1px solid #eee; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-comment-title { + margin: 0 0 8px 0; + font-size: 1.6rem; + line-height: 1.2; +} +.am-comment-meta { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 10px 15px; + font-size: 13px; + color: #999999; + line-height: 1.2; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.am-comment-meta a { + color: #999999; +} +.am-comment-author { + font-weight: bold; + color: #999999; +} +.am-comment-bd { + padding: 15px; + overflow: hidden; +} +.am-comment-bd > :last-child { + margin-bottom: 0; +} +.am-comment-footer { + padding: 0 15px 5px; +} +.am-comment-footer .am-comment-actions a + a { + margin-left: 5px; +} +.am-comment-actions { + font-size: 13px; + color: #999999; +} +.am-comment-actions a { + display: inline-block; + padding: 10px 5px; + line-height: 1; + color: #999999; + opacity: .7; +} +.am-comment-actions a:hover { + color: #0e90d2; + opacity: 1; +} +.am-comment-hd .am-comment-actions { + padding-right: .5rem; +} +.am-comment-flip .am-comment-avatar { + float: right; +} +.am-comment-flip .am-comment-main { + margin-left: auto; + margin-right: 42px; +} +@media only screen and (min-width:641px) { + .am-comment-flip .am-comment-main { + margin-right: 63px; + } +} +.am-comment-flip .am-comment-main:before, +.am-comment-flip .am-comment-main:after { + left: auto; + right: -8px; + border-width: 8px 0 8px 8px; +} +.am-comment-flip .am-comment-main:before { + border-left-color: #dedede; +} +.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; + margin-right: 1px; + margin-left: auto; +} +.am-comment-primary .am-comment-avatar { + border-color: #0e90d2; +} +.am-comment-primary .am-comment-main { + border-color: #0e90d2; +} +.am-comment-primary .am-comment-main:before { + border-right-color: #0e90d2; +} +.am-comment-primary.am-comment-flip .am-comment-main:before { + border-left-color: #0e90d2; + border-right-color: transparent; +} +.am-comment-primary.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comment-secondary .am-comment-avatar, +.am-comment-highlight .am-comment-avatar { + border-color: #3bb4f2; +} +.am-comment-secondary .am-comment-main, +.am-comment-highlight .am-comment-main { + border-color: #3bb4f2; +} +.am-comment-secondary .am-comment-main:before, +.am-comment-highlight .am-comment-main:before { + border-right-color: #3bb4f2; +} +.am-comment-secondary.am-comment-flip .am-comment-main:before, +.am-comment-highlight.am-comment-flip .am-comment-main:before { + border-left-color: #3bb4f2; + border-right-color: transparent; +} +.am-comment-secondary.am-comment-flip .am-comment-main:after, +.am-comment-highlight.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comment-success .am-comment-avatar { + border-color: #5eb95e; +} +.am-comment-success .am-comment-main { + border-color: #5eb95e; +} +.am-comment-success .am-comment-main:before { + border-right-color: #5eb95e; +} +.am-comment-success.am-comment-flip .am-comment-main:before { + border-left-color: #5eb95e; + border-right-color: transparent; +} +.am-comment-success.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comment-warning .am-comment-avatar { + border-color: #f37b1d; +} +.am-comment-warning .am-comment-main { + border-color: #f37b1d; +} +.am-comment-warning .am-comment-main:before { + border-right-color: #f37b1d; +} +.am-comment-warning.am-comment-flip .am-comment-main:before { + border-left-color: #f37b1d; + border-right-color: transparent; +} +.am-comment-warning.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comment-danger .am-comment-avatar { + border-color: #dd514c; +} +.am-comment-danger .am-comment-main { + border-color: #dd514c; +} +.am-comment-danger .am-comment-main:before { + border-right-color: #dd514c; +} +.am-comment-danger.am-comment-flip .am-comment-main:before { + border-left-color: #dd514c; + border-right-color: transparent; +} +.am-comment-danger.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comments-list { + padding: 0; + list-style: none; +} +.am-comments-list .am-comment { + margin: 1.6rem 0 0 0; + list-style: none; +} +@media only screen and (min-width:641px) { + .am-comments-list-flip .am-comment-main { + margin-right: 64px; + } + .am-comments-list-flip .am-comment-flip .am-comment-main { + margin-left: 64px; + } +} +/* ========================================================================== + Component: Button Group + ============================================================================ */ +.am-btn-group, +.am-btn-group-stacked { + position: relative; + display: inline-block; + vertical-align: middle; +} +.am-btn-group > .am-btn, +.am-btn-group-stacked > .am-btn { + position: relative; + float: left; +} +.am-btn-group > .am-btn:hover, +.am-btn-group-stacked > .am-btn:hover, +.am-btn-group > .am-btn:focus, +.am-btn-group-stacked > .am-btn:focus, +.am-btn-group > .am-btn:active, +.am-btn-group-stacked > .am-btn:active, +.am-btn-group > .am-btn.active, +.am-btn-group-stacked > .am-btn.active { + z-index: 2; +} +.am-btn-group > .am-btn:focus, +.am-btn-group-stacked > .am-btn:focus { + outline: 0; +} +.am-btn-group .am-btn + .am-btn, +.am-btn-group .am-btn + .am-btn-group, +.am-btn-group .am-btn-group + .am-btn, +.am-btn-group .am-btn-group + .am-btn-group { + margin-left: -1px; +} +.am-btn-toolbar { + margin-left: -5px; +} +.am-btn-toolbar:before, +.am-btn-toolbar:after { + content: " "; + display: table; +} +.am-btn-toolbar:after { + clear: both; +} +.am-btn-toolbar .am-btn-group, +.am-btn-toolbar .am-input-group { + float: left; +} +.am-btn-toolbar > .am-btn, +.am-btn-toolbar > .am-btn-group, +.am-btn-toolbar > .am-input-group { + margin-left: 5px; +} +.am-btn-group > .am-btn:not(:first-child):not(:last-child):not(.am-dropdown-toggle) { + border-radius: 0; +} +.am-btn-group > .am-btn:first-child { + margin-left: 0; +} +.am-btn-group > .am-btn:first-child:not(:last-child):not(.am-dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.am-btn-group > .am-btn:last-child:not(:first-child), +.am-btn-group > .am-dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group > .am-btn-group { + float: left; +} +.am-btn-group > .am-btn-group:not(:first-child):not(:last-child) > .am-btn { + border-radius: 0; +} +.am-btn-group > .am-btn-group:first-child > .am-btn:last-child, +.am-btn-group > .am-btn-group:first-child > .am-dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.am-btn-group > .am-btn-group:last-child > .am-btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group-xs > .am-btn { + font-size: 1.2rem; +} +.am-btn-group-sm > .am-btn { + font-size: 1.4rem; +} +.am-btn-group-lg > .am-btn { + font-size: 1.8rem; +} +.am-btn-group-stacked > .am-btn, +.am-btn-group-stacked > .am-btn-group, +.am-btn-group-stacked > .am-btn-group > .am-btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.am-btn-group-stacked > .am-btn-group:before, +.am-btn-group-stacked > .am-btn-group:after { + content: " "; + display: table; +} +.am-btn-group-stacked > .am-btn-group:after { + clear: both; +} +.am-btn-group-stacked > .am-btn-group > .am-btn { + float: none; +} +.am-btn-group-stacked > .am-btn + .am-btn, +.am-btn-group-stacked > .am-btn + .am-btn-group, +.am-btn-group-stacked > .am-btn-group + .am-btn, +.am-btn-group-stacked > .am-btn-group + .am-btn-group { + margin-top: -1px; + margin-left: 0; +} +.am-btn-group-stacked > .am-btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.am-btn-group-stacked > .am-btn:first-child:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.am-btn-group-stacked > .am-btn:last-child:not(:first-child) { + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group-stacked > .am-btn-group:not(:first-child):not(:last-child) > .am-btn { + border-radius: 0; +} +.am-btn-group-stacked > .am-btn-group:first-child:not(:last-child) > .am-btn:last-child, +.am-btn-group-stacked > .am-btn-group:first-child:not(:last-child) > .am-dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.am-btn-group-stacked > .am-btn-group:last-child:not(:first-child) > .am-btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group-justify { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-btn-group-justify > .am-btn, +.am-btn-group-justify > .am-btn-group { + float: none; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-btn-group-justify > .am-btn-group .am-btn { + width: 100%; +} +.lte9 .am-btn-group-justify { + display: table; + table-layout: fixed; + border-collapse: separate; +} +.lte9 .am-btn-group-justify > .am-btn, +.lte9 .am-btn-group-justify > .am-btn-group { + float: none; + display: table-cell; + width: 1%; +} +.am-btn-group .am-dropdown { + float: left; + margin-left: -1px; +} +.am-btn-group .am-dropdown > .am-btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group .am-active .am-dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.am-btn-group .am-active .am-dropdown-toggle.am-btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.am-btn-group .am-dropdown-toggle:active, +.am-btn-group .am-active .am-dropdown-toggle { + outline: 0; +} +[data-am-button] > .am-btn > input[type="radio"], +[data-am-button] > .am-btn > input[type="checkbox"] { + position: absolute; + z-index: -1; + opacity: 0; +} +/* ========================================================================== + Component: Close + ============================================================================ */ +.am-close { + display: inline-block; + text-align: center; + width: 24px; + font-size: 20px; + font-weight: bold; + line-height: 24px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: .2; + -webkit-transition: all .3s; + transition: all .3s; +} +.am-close:hover, +.am-close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: .5; + outline: none; +} +.am-close[class*="am-icon-"] { + font-size: 16px; +} +button.am-close { + padding: 0; + cursor: pointer; + background: transparent; + /* Needed for Sarari */ + border: 0; + -webkit-appearance: none; +} +a.am-close:hover { + color: inherit; + text-decoration: none; + cursor: pointer; +} +/* Modifiers + ============================================================================ */ +.am-close-alt { + border-radius: 50%; + background: #eeeeee; + opacity: 0.7; + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25) + /* Hover */ +} +.am-close-alt:hover, +.am-close-alt:focus { + opacity: 1; +} +.am-close-spin:hover { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); +} +/* ========================================================================== + Component: Icon + ============================================================================ */ +/* Font-face +============================================================================= */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.2.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +/* Component +============================================================================= */ +[class*="am-icon-"] { + display: inline-block; +} +[class*="am-icon-"]:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.am-icon-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +[class*="am-icon-"].am-fl { + margin-right: .3em; +} +[class*="am-icon-"].am-fr { + margin-left: .3em; +} +.am-icon-sm:before { + font-size: 150%; + vertical-align: -10%; +} +.am-icon-md:before { + font-size: 200%; + vertical-align: -16%; +} +.am-icon-lg:before { + font-size: 250%; + vertical-align: -22%; +} +/* Modifier: `.am-icon-btn` +============================================================================= */ +.am-icon-btn { + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + width: 48px; + height: 48px; + font-size: 24px; + line-height: 48px; + border-radius: 50%; + background-color: #eeeeee; + color: #555555; + text-align: center + /** + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ + /* Active */ +} +.am-icon-btn:hover, +.am-icon-btn:focus { + /* 1 */ + background-color: #f5f5f5; + color: #333333; + text-decoration: none; + outline: none + /* 2 */ +} +.am-icon-btn:active { + background-color: #dddddd; + color: #333333; +} +.am-icon-btn.am-primary, +.am-icon-btn.am-secondary, +.am-icon-btn.am-success, +.am-icon-btn.am-warning, +.am-icon-btn.am-danger { + color: #ffffff; +} +.am-icon-btn.am-primary { + background-color: #0e90d2; +} +.am-icon-btn.am-secondary { + background-color: #3bb4f2; +} +.am-icon-btn.am-success { + background-color: #5eb95e; +} +.am-icon-btn.am-warning { + background-color: #f37b1d; +} +.am-icon-btn.am-danger { + background-color: #dd514c; +} +.am-icon-btn-sm { + width: 32px; + height: 32px; + font-size: 16px; + line-height: 32px; +} +.am-icon-btn-lg { + width: 64px; + height: 64px; + font-size: 28px; + line-height: 64px; +} +/* Icon mapping +============================================================================= */ +.am-icon-glass:before { + content: "\f000"; +} +.am-icon-music:before { + content: "\f001"; +} +.am-icon-search:before { + content: "\f002"; +} +.am-icon-envelope-o:before { + content: "\f003"; +} +.am-icon-heart:before { + content: "\f004"; +} +.am-icon-star:before { + content: "\f005"; +} +.am-icon-star-o:before { + content: "\f006"; +} +.am-icon-user:before { + content: "\f007"; +} +.am-icon-film:before { + content: "\f008"; +} +.am-icon-th-large:before { + content: "\f009"; +} +.am-icon-th:before { + content: "\f00a"; +} +.am-icon-th-list:before { + content: "\f00b"; +} +.am-icon-check:before { + content: "\f00c"; +} +.am-icon-remove:before, +.am-icon-close:before, +.am-icon-times:before { + content: "\f00d"; +} +.am-icon-search-plus:before { + content: "\f00e"; +} +.am-icon-search-minus:before { + content: "\f010"; +} +.am-icon-power-off:before { + content: "\f011"; +} +.am-icon-signal:before { + content: "\f012"; +} +.am-icon-gear:before, +.am-icon-cog:before { + content: "\f013"; +} +.am-icon-trash-o:before { + content: "\f014"; +} +.am-icon-home:before { + content: "\f015"; +} +.am-icon-file-o:before { + content: "\f016"; +} +.am-icon-clock-o:before { + content: "\f017"; +} +.am-icon-road:before { + content: "\f018"; +} +.am-icon-download:before { + content: "\f019"; +} +.am-icon-arrow-circle-o-down:before { + content: "\f01a"; +} +.am-icon-arrow-circle-o-up:before { + content: "\f01b"; +} +.am-icon-inbox:before { + content: "\f01c"; +} +.am-icon-play-circle-o:before { + content: "\f01d"; +} +.am-icon-rotate-right:before, +.am-icon-repeat:before { + content: "\f01e"; +} +.am-icon-refresh:before { + content: "\f021"; +} +.am-icon-list-alt:before { + content: "\f022"; +} +.am-icon-lock:before { + content: "\f023"; +} +.am-icon-flag:before { + content: "\f024"; +} +.am-icon-headphones:before { + content: "\f025"; +} +.am-icon-volume-off:before { + content: "\f026"; +} +.am-icon-volume-down:before { + content: "\f027"; +} +.am-icon-volume-up:before { + content: "\f028"; +} +.am-icon-qrcode:before { + content: "\f029"; +} +.am-icon-barcode:before { + content: "\f02a"; +} +.am-icon-tag:before { + content: "\f02b"; +} +.am-icon-tags:before { + content: "\f02c"; +} +.am-icon-book:before { + content: "\f02d"; +} +.am-icon-bookmark:before { + content: "\f02e"; +} +.am-icon-print:before { + content: "\f02f"; +} +.am-icon-camera:before { + content: "\f030"; +} +.am-icon-font:before { + content: "\f031"; +} +.am-icon-bold:before { + content: "\f032"; +} +.am-icon-italic:before { + content: "\f033"; +} +.am-icon-text-height:before { + content: "\f034"; +} +.am-icon-text-width:before { + content: "\f035"; +} +.am-icon-align-left:before { + content: "\f036"; +} +.am-icon-align-center:before { + content: "\f037"; +} +.am-icon-align-right:before { + content: "\f038"; +} +.am-icon-align-justify:before { + content: "\f039"; +} +.am-icon-list:before { + content: "\f03a"; +} +.am-icon-dedent:before, +.am-icon-outdent:before { + content: "\f03b"; +} +.am-icon-indent:before { + content: "\f03c"; +} +.am-icon-video-camera:before { + content: "\f03d"; +} +.am-icon-photo:before, +.am-icon-image:before, +.am-icon-picture-o:before { + content: "\f03e"; +} +.am-icon-pencil:before { + content: "\f040"; +} +.am-icon-map-marker:before { + content: "\f041"; +} +.am-icon-adjust:before { + content: "\f042"; +} +.am-icon-tint:before { + content: "\f043"; +} +.am-icon-edit:before, +.am-icon-pencil-square-o:before { + content: "\f044"; +} +.am-icon-share-square-o:before { + content: "\f045"; +} +.am-icon-check-square-o:before { + content: "\f046"; +} +.am-icon-arrows:before { + content: "\f047"; +} +.am-icon-step-backward:before { + content: "\f048"; +} +.am-icon-fast-backward:before { + content: "\f049"; +} +.am-icon-backward:before { + content: "\f04a"; +} +.am-icon-play:before { + content: "\f04b"; +} +.am-icon-pause:before { + content: "\f04c"; +} +.am-icon-stop:before { + content: "\f04d"; +} +.am-icon-forward:before { + content: "\f04e"; +} +.am-icon-fast-forward:before { + content: "\f050"; +} +.am-icon-step-forward:before { + content: "\f051"; +} +.am-icon-eject:before { + content: "\f052"; +} +.am-icon-chevron-left:before { + content: "\f053"; +} +.am-icon-chevron-right:before { + content: "\f054"; +} +.am-icon-plus-circle:before { + content: "\f055"; +} +.am-icon-minus-circle:before { + content: "\f056"; +} +.am-icon-times-circle:before { + content: "\f057"; +} +.am-icon-check-circle:before { + content: "\f058"; +} +.am-icon-question-circle:before { + content: "\f059"; +} +.am-icon-info-circle:before { + content: "\f05a"; +} +.am-icon-crosshairs:before { + content: "\f05b"; +} +.am-icon-times-circle-o:before { + content: "\f05c"; +} +.am-icon-check-circle-o:before { + content: "\f05d"; +} +.am-icon-ban:before { + content: "\f05e"; +} +.am-icon-arrow-left:before { + content: "\f060"; +} +.am-icon-arrow-right:before { + content: "\f061"; +} +.am-icon-arrow-up:before { + content: "\f062"; +} +.am-icon-arrow-down:before { + content: "\f063"; +} +.am-icon-mail-forward:before, +.am-icon-share:before { + content: "\f064"; +} +.am-icon-expand:before { + content: "\f065"; +} +.am-icon-compress:before { + content: "\f066"; +} +.am-icon-plus:before { + content: "\f067"; +} +.am-icon-minus:before { + content: "\f068"; +} +.am-icon-asterisk:before { + content: "\f069"; +} +.am-icon-exclamation-circle:before { + content: "\f06a"; +} +.am-icon-gift:before { + content: "\f06b"; +} +.am-icon-leaf:before { + content: "\f06c"; +} +.am-icon-fire:before { + content: "\f06d"; +} +.am-icon-eye:before { + content: "\f06e"; +} +.am-icon-eye-slash:before { + content: "\f070"; +} +.am-icon-warning:before, +.am-icon-exclamation-triangle:before { + content: "\f071"; +} +.am-icon-plane:before { + content: "\f072"; +} +.am-icon-calendar:before { + content: "\f073"; +} +.am-icon-random:before { + content: "\f074"; +} +.am-icon-comment:before { + content: "\f075"; +} +.am-icon-magnet:before { + content: "\f076"; +} +.am-icon-chevron-up:before { + content: "\f077"; +} +.am-icon-chevron-down:before { + content: "\f078"; +} +.am-icon-retweet:before { + content: "\f079"; +} +.am-icon-shopping-cart:before { + content: "\f07a"; +} +.am-icon-folder:before { + content: "\f07b"; +} +.am-icon-folder-open:before { + content: "\f07c"; +} +.am-icon-arrows-v:before { + content: "\f07d"; +} +.am-icon-arrows-h:before { + content: "\f07e"; +} +.am-icon-bar-chart-o:before, +.am-icon-bar-chart:before { + content: "\f080"; +} +.am-icon-twitter-square:before { + content: "\f081"; +} +.am-icon-facebook-square:before { + content: "\f082"; +} +.am-icon-camera-retro:before { + content: "\f083"; +} +.am-icon-key:before { + content: "\f084"; +} +.am-icon-gears:before, +.am-icon-cogs:before { + content: "\f085"; +} +.am-icon-comments:before { + content: "\f086"; +} +.am-icon-thumbs-o-up:before { + content: "\f087"; +} +.am-icon-thumbs-o-down:before { + content: "\f088"; +} +.am-icon-star-half:before { + content: "\f089"; +} +.am-icon-heart-o:before { + content: "\f08a"; +} +.am-icon-sign-out:before { + content: "\f08b"; +} +.am-icon-linkedin-square:before { + content: "\f08c"; +} +.am-icon-thumb-tack:before { + content: "\f08d"; +} +.am-icon-external-link:before { + content: "\f08e"; +} +.am-icon-sign-in:before { + content: "\f090"; +} +.am-icon-trophy:before { + content: "\f091"; +} +.am-icon-github-square:before { + content: "\f092"; +} +.am-icon-upload:before { + content: "\f093"; +} +.am-icon-lemon-o:before { + content: "\f094"; +} +.am-icon-phone:before { + content: "\f095"; +} +.am-icon-square-o:before { + content: "\f096"; +} +.am-icon-bookmark-o:before { + content: "\f097"; +} +.am-icon-phone-square:before { + content: "\f098"; +} +.am-icon-twitter:before { + content: "\f099"; +} +.am-icon-facebook:before { + content: "\f09a"; +} +.am-icon-github:before { + content: "\f09b"; +} +.am-icon-unlock:before { + content: "\f09c"; +} +.am-icon-credit-card:before { + content: "\f09d"; +} +.am-icon-rss:before { + content: "\f09e"; +} +.am-icon-hdd-o:before { + content: "\f0a0"; +} +.am-icon-bullhorn:before { + content: "\f0a1"; +} +.am-icon-bell:before { + content: "\f0f3"; +} +.am-icon-certificate:before { + content: "\f0a3"; +} +.am-icon-hand-o-right:before { + content: "\f0a4"; +} +.am-icon-hand-o-left:before { + content: "\f0a5"; +} +.am-icon-hand-o-up:before { + content: "\f0a6"; +} +.am-icon-hand-o-down:before { + content: "\f0a7"; +} +.am-icon-arrow-circle-left:before { + content: "\f0a8"; +} +.am-icon-arrow-circle-right:before { + content: "\f0a9"; +} +.am-icon-arrow-circle-up:before { + content: "\f0aa"; +} +.am-icon-arrow-circle-down:before { + content: "\f0ab"; +} +.am-icon-globe:before { + content: "\f0ac"; +} +.am-icon-wrench:before { + content: "\f0ad"; +} +.am-icon-tasks:before { + content: "\f0ae"; +} +.am-icon-filter:before { + content: "\f0b0"; +} +.am-icon-briefcase:before { + content: "\f0b1"; +} +.am-icon-arrows-alt:before { + content: "\f0b2"; +} +.am-icon-group:before, +.am-icon-users:before { + content: "\f0c0"; +} +.am-icon-chain:before, +.am-icon-link:before { + content: "\f0c1"; +} +.am-icon-cloud:before { + content: "\f0c2"; +} +.am-icon-flask:before { + content: "\f0c3"; +} +.am-icon-cut:before, +.am-icon-scissors:before { + content: "\f0c4"; +} +.am-icon-copy:before, +.am-icon-files-o:before { + content: "\f0c5"; +} +.am-icon-paperclip:before { + content: "\f0c6"; +} +.am-icon-save:before, +.am-icon-floppy-o:before { + content: "\f0c7"; +} +.am-icon-square:before { + content: "\f0c8"; +} +.am-icon-navicon:before, +.am-icon-reorder:before, +.am-icon-bars:before { + content: "\f0c9"; +} +.am-icon-list-ul:before { + content: "\f0ca"; +} +.am-icon-list-ol:before { + content: "\f0cb"; +} +.am-icon-strikethrough:before { + content: "\f0cc"; +} +.am-icon-underline:before { + content: "\f0cd"; +} +.am-icon-table:before { + content: "\f0ce"; +} +.am-icon-magic:before { + content: "\f0d0"; +} +.am-icon-truck:before { + content: "\f0d1"; +} +.am-icon-pinterest:before { + content: "\f0d2"; +} +.am-icon-pinterest-square:before { + content: "\f0d3"; +} +.am-icon-google-plus-square:before { + content: "\f0d4"; +} +.am-icon-google-plus:before { + content: "\f0d5"; +} +.am-icon-money:before { + content: "\f0d6"; +} +.am-icon-caret-down:before { + content: "\f0d7"; +} +.am-icon-caret-up:before { + content: "\f0d8"; +} +.am-icon-caret-left:before { + content: "\f0d9"; +} +.am-icon-caret-right:before { + content: "\f0da"; +} +.am-icon-columns:before { + content: "\f0db"; +} +.am-icon-unsorted:before, +.am-icon-sort:before { + content: "\f0dc"; +} +.am-icon-sort-down:before, +.am-icon-sort-desc:before { + content: "\f0dd"; +} +.am-icon-sort-up:before, +.am-icon-sort-asc:before { + content: "\f0de"; +} +.am-icon-envelope:before { + content: "\f0e0"; +} +.am-icon-linkedin:before { + content: "\f0e1"; +} +.am-icon-rotate-left:before, +.am-icon-undo:before { + content: "\f0e2"; +} +.am-icon-legal:before, +.am-icon-gavel:before { + content: "\f0e3"; +} +.am-icon-dashboard:before, +.am-icon-tachometer:before { + content: "\f0e4"; +} +.am-icon-comment-o:before { + content: "\f0e5"; +} +.am-icon-comments-o:before { + content: "\f0e6"; +} +.am-icon-flash:before, +.am-icon-bolt:before { + content: "\f0e7"; +} +.am-icon-sitemap:before { + content: "\f0e8"; +} +.am-icon-umbrella:before { + content: "\f0e9"; +} +.am-icon-paste:before, +.am-icon-clipboard:before { + content: "\f0ea"; +} +.am-icon-lightbulb-o:before { + content: "\f0eb"; +} +.am-icon-exchange:before { + content: "\f0ec"; +} +.am-icon-cloud-download:before { + content: "\f0ed"; +} +.am-icon-cloud-upload:before { + content: "\f0ee"; +} +.am-icon-user-md:before { + content: "\f0f0"; +} +.am-icon-stethoscope:before { + content: "\f0f1"; +} +.am-icon-suitcase:before { + content: "\f0f2"; +} +.am-icon-bell-o:before { + content: "\f0a2"; +} +.am-icon-coffee:before { + content: "\f0f4"; +} +.am-icon-cutlery:before { + content: "\f0f5"; +} +.am-icon-file-text-o:before { + content: "\f0f6"; +} +.am-icon-building-o:before { + content: "\f0f7"; +} +.am-icon-hospital-o:before { + content: "\f0f8"; +} +.am-icon-ambulance:before { + content: "\f0f9"; +} +.am-icon-medkit:before { + content: "\f0fa"; +} +.am-icon-fighter-jet:before { + content: "\f0fb"; +} +.am-icon-beer:before { + content: "\f0fc"; +} +.am-icon-h-square:before { + content: "\f0fd"; +} +.am-icon-plus-square:before { + content: "\f0fe"; +} +.am-icon-angle-double-left:before { + content: "\f100"; +} +.am-icon-angle-double-right:before { + content: "\f101"; +} +.am-icon-angle-double-up:before { + content: "\f102"; +} +.am-icon-angle-double-down:before { + content: "\f103"; +} +.am-icon-angle-left:before { + content: "\f104"; +} +.am-icon-angle-right:before { + content: "\f105"; +} +.am-icon-angle-up:before { + content: "\f106"; +} +.am-icon-angle-down:before { + content: "\f107"; +} +.am-icon-desktop:before { + content: "\f108"; +} +.am-icon-laptop:before { + content: "\f109"; +} +.am-icon-tablet:before { + content: "\f10a"; +} +.am-icon-mobile-phone:before, +.am-icon-mobile:before { + content: "\f10b"; +} +.am-icon-circle-o:before { + content: "\f10c"; +} +.am-icon-quote-left:before { + content: "\f10d"; +} +.am-icon-quote-right:before { + content: "\f10e"; +} +.am-icon-spinner:before { + content: "\f110"; +} +.am-icon-circle:before { + content: "\f111"; +} +.am-icon-mail-reply:before, +.am-icon-reply:before { + content: "\f112"; +} +.am-icon-github-alt:before { + content: "\f113"; +} +.am-icon-folder-o:before { + content: "\f114"; +} +.am-icon-folder-open-o:before { + content: "\f115"; +} +.am-icon-smile-o:before { + content: "\f118"; +} +.am-icon-frown-o:before { + content: "\f119"; +} +.am-icon-meh-o:before { + content: "\f11a"; +} +.am-icon-gamepad:before { + content: "\f11b"; +} +.am-icon-keyboard-o:before { + content: "\f11c"; +} +.am-icon-flag-o:before { + content: "\f11d"; +} +.am-icon-flag-checkered:before { + content: "\f11e"; +} +.am-icon-terminal:before { + content: "\f120"; +} +.am-icon-code:before { + content: "\f121"; +} +.am-icon-mail-reply-all:before, +.am-icon-reply-all:before { + content: "\f122"; +} +.am-icon-star-half-empty:before, +.am-icon-star-half-full:before, +.am-icon-star-half-o:before { + content: "\f123"; +} +.am-icon-location-arrow:before { + content: "\f124"; +} +.am-icon-crop:before { + content: "\f125"; +} +.am-icon-code-fork:before { + content: "\f126"; +} +.am-icon-unlink:before, +.am-icon-chain-broken:before { + content: "\f127"; +} +.am-icon-question:before { + content: "\f128"; +} +.am-icon-info:before { + content: "\f129"; +} +.am-icon-exclamation:before { + content: "\f12a"; +} +.am-icon-superscript:before { + content: "\f12b"; +} +.am-icon-subscript:before { + content: "\f12c"; +} +.am-icon-eraser:before { + content: "\f12d"; +} +.am-icon-puzzle-piece:before { + content: "\f12e"; +} +.am-icon-microphone:before { + content: "\f130"; +} +.am-icon-microphone-slash:before { + content: "\f131"; +} +.am-icon-shield:before { + content: "\f132"; +} +.am-icon-calendar-o:before { + content: "\f133"; +} +.am-icon-fire-extinguisher:before { + content: "\f134"; +} +.am-icon-rocket:before { + content: "\f135"; +} +.am-icon-maxcdn:before { + content: "\f136"; +} +.am-icon-chevron-circle-left:before { + content: "\f137"; +} +.am-icon-chevron-circle-right:before { + content: "\f138"; +} +.am-icon-chevron-circle-up:before { + content: "\f139"; +} +.am-icon-chevron-circle-down:before { + content: "\f13a"; +} +.am-icon-html5:before { + content: "\f13b"; +} +.am-icon-css3:before { + content: "\f13c"; +} +.am-icon-anchor:before { + content: "\f13d"; +} +.am-icon-unlock-alt:before { + content: "\f13e"; +} +.am-icon-bullseye:before { + content: "\f140"; +} +.am-icon-ellipsis-h:before { + content: "\f141"; +} +.am-icon-ellipsis-v:before { + content: "\f142"; +} +.am-icon-rss-square:before { + content: "\f143"; +} +.am-icon-play-circle:before { + content: "\f144"; +} +.am-icon-ticket:before { + content: "\f145"; +} +.am-icon-minus-square:before { + content: "\f146"; +} +.am-icon-minus-square-o:before { + content: "\f147"; +} +.am-icon-level-up:before { + content: "\f148"; +} +.am-icon-level-down:before { + content: "\f149"; +} +.am-icon-check-square:before { + content: "\f14a"; +} +.am-icon-pencil-square:before { + content: "\f14b"; +} +.am-icon-external-link-square:before { + content: "\f14c"; +} +.am-icon-share-square:before { + content: "\f14d"; +} +.am-icon-compass:before { + content: "\f14e"; +} +.am-icon-toggle-down:before, +.am-icon-caret-square-o-down:before { + content: "\f150"; +} +.am-icon-toggle-up:before, +.am-icon-caret-square-o-up:before { + content: "\f151"; +} +.am-icon-toggle-right:before, +.am-icon-caret-square-o-right:before { + content: "\f152"; +} +.am-icon-euro:before, +.am-icon-eur:before { + content: "\f153"; +} +.am-icon-gbp:before { + content: "\f154"; +} +.am-icon-dollar:before, +.am-icon-usd:before { + content: "\f155"; +} +.am-icon-rupee:before, +.am-icon-inr:before { + content: "\f156"; +} +.am-icon-cny:before, +.am-icon-rmb:before, +.am-icon-yen:before, +.am-icon-jpy:before { + content: "\f157"; +} +.am-icon-ruble:before, +.am-icon-rouble:before, +.am-icon-rub:before { + content: "\f158"; +} +.am-icon-won:before, +.am-icon-krw:before { + content: "\f159"; +} +.am-icon-bitcoin:before, +.am-icon-btc:before { + content: "\f15a"; +} +.am-icon-file:before { + content: "\f15b"; +} +.am-icon-file-text:before { + content: "\f15c"; +} +.am-icon-sort-alpha-asc:before { + content: "\f15d"; +} +.am-icon-sort-alpha-desc:before { + content: "\f15e"; +} +.am-icon-sort-amount-asc:before { + content: "\f160"; +} +.am-icon-sort-amount-desc:before { + content: "\f161"; +} +.am-icon-sort-numeric-asc:before { + content: "\f162"; +} +.am-icon-sort-numeric-desc:before { + content: "\f163"; +} +.am-icon-thumbs-up:before { + content: "\f164"; +} +.am-icon-thumbs-down:before { + content: "\f165"; +} +.am-icon-youtube-square:before { + content: "\f166"; +} +.am-icon-youtube:before { + content: "\f167"; +} +.am-icon-xing:before { + content: "\f168"; +} +.am-icon-xing-square:before { + content: "\f169"; +} +.am-icon-youtube-play:before { + content: "\f16a"; +} +.am-icon-dropbox:before { + content: "\f16b"; +} +.am-icon-stack-overflow:before { + content: "\f16c"; +} +.am-icon-instagram:before { + content: "\f16d"; +} +.am-icon-flickr:before { + content: "\f16e"; +} +.am-icon-adn:before { + content: "\f170"; +} +.am-icon-bitbucket:before { + content: "\f171"; +} +.am-icon-bitbucket-square:before { + content: "\f172"; +} +.am-icon-tumblr:before { + content: "\f173"; +} +.am-icon-tumblr-square:before { + content: "\f174"; +} +.am-icon-long-arrow-down:before { + content: "\f175"; +} +.am-icon-long-arrow-up:before { + content: "\f176"; +} +.am-icon-long-arrow-left:before { + content: "\f177"; +} +.am-icon-long-arrow-right:before { + content: "\f178"; +} +.am-icon-apple:before { + content: "\f179"; +} +.am-icon-windows:before { + content: "\f17a"; +} +.am-icon-android:before { + content: "\f17b"; +} +.am-icon-linux:before { + content: "\f17c"; +} +.am-icon-dribbble:before { + content: "\f17d"; +} +.am-icon-skype:before { + content: "\f17e"; +} +.am-icon-foursquare:before { + content: "\f180"; +} +.am-icon-trello:before { + content: "\f181"; +} +.am-icon-female:before { + content: "\f182"; +} +.am-icon-male:before { + content: "\f183"; +} +.am-icon-gittip:before { + content: "\f184"; +} +.am-icon-sun-o:before { + content: "\f185"; +} +.am-icon-moon-o:before { + content: "\f186"; +} +.am-icon-archive:before { + content: "\f187"; +} +.am-icon-bug:before { + content: "\f188"; +} +.am-icon-vk:before { + content: "\f189"; +} +.am-icon-weibo:before { + content: "\f18a"; +} +.am-icon-renren:before { + content: "\f18b"; +} +.am-icon-pagelines:before { + content: "\f18c"; +} +.am-icon-stack-exchange:before { + content: "\f18d"; +} +.am-icon-arrow-circle-o-right:before { + content: "\f18e"; +} +.am-icon-arrow-circle-o-left:before { + content: "\f190"; +} +.am-icon-toggle-left:before, +.am-icon-caret-square-o-left:before { + content: "\f191"; +} +.am-icon-dot-circle-o:before { + content: "\f192"; +} +.am-icon-wheelchair:before { + content: "\f193"; +} +.am-icon-vimeo-square:before { + content: "\f194"; +} +.am-icon-turkish-lira:before, +.am-icon-try:before { + content: "\f195"; +} +.am-icon-plus-square-o:before { + content: "\f196"; +} +.am-icon-space-shuttle:before { + content: "\f197"; +} +.am-icon-slack:before { + content: "\f198"; +} +.am-icon-envelope-square:before { + content: "\f199"; +} +.am-icon-wordpress:before { + content: "\f19a"; +} +.am-icon-openid:before { + content: "\f19b"; +} +.am-icon-institution:before, +.am-icon-bank:before, +.am-icon-university:before { + content: "\f19c"; +} +.am-icon-mortar-board:before, +.am-icon-graduation-cap:before { + content: "\f19d"; +} +.am-icon-yahoo:before { + content: "\f19e"; +} +.am-icon-google:before { + content: "\f1a0"; +} +.am-icon-reddit:before { + content: "\f1a1"; +} +.am-icon-reddit-square:before { + content: "\f1a2"; +} +.am-icon-stumbleupon-circle:before { + content: "\f1a3"; +} +.am-icon-stumbleupon:before { + content: "\f1a4"; +} +.am-icon-delicious:before { + content: "\f1a5"; +} +.am-icon-digg:before { + content: "\f1a6"; +} +.am-icon-pied-piper:before { + content: "\f1a7"; +} +.am-icon-pied-piper-alt:before { + content: "\f1a8"; +} +.am-icon-drupal:before { + content: "\f1a9"; +} +.am-icon-joomla:before { + content: "\f1aa"; +} +.am-icon-language:before { + content: "\f1ab"; +} +.am-icon-fax:before { + content: "\f1ac"; +} +.am-icon-building:before { + content: "\f1ad"; +} +.am-icon-child:before { + content: "\f1ae"; +} +.am-icon-paw:before { + content: "\f1b0"; +} +.am-icon-spoon:before { + content: "\f1b1"; +} +.am-icon-cube:before { + content: "\f1b2"; +} +.am-icon-cubes:before { + content: "\f1b3"; +} +.am-icon-behance:before { + content: "\f1b4"; +} +.am-icon-behance-square:before { + content: "\f1b5"; +} +.am-icon-steam:before { + content: "\f1b6"; +} +.am-icon-steam-square:before { + content: "\f1b7"; +} +.am-icon-recycle:before { + content: "\f1b8"; +} +.am-icon-automobile:before, +.am-icon-car:before { + content: "\f1b9"; +} +.am-icon-cab:before, +.am-icon-taxi:before { + content: "\f1ba"; +} +.am-icon-tree:before { + content: "\f1bb"; +} +.am-icon-spotify:before { + content: "\f1bc"; +} +.am-icon-deviantart:before { + content: "\f1bd"; +} +.am-icon-soundcloud:before { + content: "\f1be"; +} +.am-icon-database:before { + content: "\f1c0"; +} +.am-icon-file-pdf-o:before { + content: "\f1c1"; +} +.am-icon-file-word-o:before { + content: "\f1c2"; +} +.am-icon-file-excel-o:before { + content: "\f1c3"; +} +.am-icon-file-powerpoint-o:before { + content: "\f1c4"; +} +.am-icon-file-photo-o:before, +.am-icon-file-picture-o:before, +.am-icon-file-image-o:before { + content: "\f1c5"; +} +.am-icon-file-zip-o:before, +.am-icon-file-archive-o:before { + content: "\f1c6"; +} +.am-icon-file-sound-o:before, +.am-icon-file-audio-o:before { + content: "\f1c7"; +} +.am-icon-file-movie-o:before, +.am-icon-file-video-o:before { + content: "\f1c8"; +} +.am-icon-file-code-o:before { + content: "\f1c9"; +} +.am-icon-vine:before { + content: "\f1ca"; +} +.am-icon-codepen:before { + content: "\f1cb"; +} +.am-icon-jsfiddle:before { + content: "\f1cc"; +} +.am-icon-life-bouy:before, +.am-icon-life-buoy:before, +.am-icon-life-saver:before, +.am-icon-support:before, +.am-icon-life-ring:before { + content: "\f1cd"; +} +.am-icon-circle-o-notch:before { + content: "\f1ce"; +} +.am-icon-ra:before, +.am-icon-rebel:before { + content: "\f1d0"; +} +.am-icon-ge:before, +.am-icon-empire:before { + content: "\f1d1"; +} +.am-icon-git-square:before { + content: "\f1d2"; +} +.am-icon-git:before { + content: "\f1d3"; +} +.am-icon-hacker-news:before { + content: "\f1d4"; +} +.am-icon-tencent-weibo:before { + content: "\f1d5"; +} +.am-icon-qq:before { + content: "\f1d6"; +} +.am-icon-wechat:before, +.am-icon-weixin:before { + content: "\f1d7"; +} +.am-icon-send:before, +.am-icon-paper-plane:before { + content: "\f1d8"; +} +.am-icon-send-o:before, +.am-icon-paper-plane-o:before { + content: "\f1d9"; +} +.am-icon-history:before { + content: "\f1da"; +} +.am-icon-circle-thin:before { + content: "\f1db"; +} +.am-icon-header:before { + content: "\f1dc"; +} +.am-icon-paragraph:before { + content: "\f1dd"; +} +.am-icon-sliders:before { + content: "\f1de"; +} +.am-icon-share-alt:before { + content: "\f1e0"; +} +.am-icon-share-alt-square:before { + content: "\f1e1"; +} +.am-icon-bomb:before { + content: "\f1e2"; +} +.am-icon-soccer-ball-o:before, +.am-icon-futbol-o:before { + content: "\f1e3"; +} +.am-icon-tty:before { + content: "\f1e4"; +} +.am-icon-binoculars:before { + content: "\f1e5"; +} +.am-icon-plug:before { + content: "\f1e6"; +} +.am-icon-slideshare:before { + content: "\f1e7"; +} +.am-icon-twitch:before { + content: "\f1e8"; +} +.am-icon-yelp:before { + content: "\f1e9"; +} +.am-icon-newspaper-o:before { + content: "\f1ea"; +} +.am-icon-wifi:before { + content: "\f1eb"; +} +.am-icon-calculator:before { + content: "\f1ec"; +} +.am-icon-paypal:before { + content: "\f1ed"; +} +.am-icon-google-wallet:before { + content: "\f1ee"; +} +.am-icon-cc-visa:before { + content: "\f1f0"; +} +.am-icon-cc-mastercard:before { + content: "\f1f1"; +} +.am-icon-cc-discover:before { + content: "\f1f2"; +} +.am-icon-cc-amex:before { + content: "\f1f3"; +} +.am-icon-cc-paypal:before { + content: "\f1f4"; +} +.am-icon-cc-stripe:before { + content: "\f1f5"; +} +.am-icon-bell-slash:before { + content: "\f1f6"; +} +.am-icon-bell-slash-o:before { + content: "\f1f7"; +} +.am-icon-trash:before { + content: "\f1f8"; +} +.am-icon-copyright:before { + content: "\f1f9"; +} +.am-icon-at:before { + content: "\f1fa"; +} +.am-icon-eyedropper:before { + content: "\f1fb"; +} +.am-icon-paint-brush:before { + content: "\f1fc"; +} +.am-icon-birthday-cake:before { + content: "\f1fd"; +} +.am-icon-area-chart:before { + content: "\f1fe"; +} +.am-icon-pie-chart:before { + content: "\f200"; +} +.am-icon-line-chart:before { + content: "\f201"; +} +.am-icon-lastfm:before { + content: "\f202"; +} +.am-icon-lastfm-square:before { + content: "\f203"; +} +.am-icon-toggle-off:before { + content: "\f204"; +} +.am-icon-toggle-on:before { + content: "\f205"; +} +.am-icon-bicycle:before { + content: "\f206"; +} +.am-icon-bus:before { + content: "\f207"; +} +.am-icon-ioxhost:before { + content: "\f208"; +} +.am-icon-angellist:before { + content: "\f209"; +} +.am-icon-cc:before { + content: "\f20a"; +} +.am-icon-shekel:before, +.am-icon-sheqel:before, +.am-icon-ils:before { + content: "\f20b"; +} +.am-icon-meanpath:before { + content: "\f20c"; +} +/* Modifier: `am-icon-spin` +============================================================================= */ +@-webkit-keyframes icon-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes icon-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.am-icon-spin { + -webkit-animation: icon-spin 2s infinite linear; + animation: icon-spin 2s infinite linear; +} +.am-icon-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.am-icon-ul > li { + position: relative; +} +.am-icon-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +/* ========================================================================== + Component: Input group + ============================================================================ */ +.am-input-group { + position: relative; + display: table; + border-collapse: separate; +} +.am-input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.am-input-group .am-form-field { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.am-input-group-label, +.am-input-group-btn, +.am-input-group .am-form-field { + display: table-cell; +} +.am-input-group-label:not(:first-child):not(:last-child), +.am-input-group-btn:not(:first-child):not(:last-child), +.am-input-group .am-form-field:not(:first-child):not(:last-child) { + border-radius: 0; +} +.am-input-group-label, +.am-input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.am-input-group-label { + padding: 0.625em 1em; + font-size: 1.6rem; + font-weight: normal; + line-height: 1.2; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 0; +} +.am-input-group-label input[type="radio"], +.am-input-group-label input[type="checkbox"] { + margin-top: 0; +} +.am-input-group .am-form-field:first-child, +.am-input-group-label:first-child, +.am-input-group-btn:first-child > .am-btn, +.am-input-group-btn:first-child > .am-btn-group > .am-btn, +.am-input-group-btn:first-child > .am-dropdown-toggle, +.am-input-group-btn:last-child > .am-btn:not(:last-child):not(.dropdown-toggle), +.am-input-group-btn:last-child > .am-btn-group:not(:last-child) > .am-btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.am-input-group-label:first-child { + border-right: 0; +} +.am-input-group .am-form-field:last-child, +.am-input-group-label:last-child, +.am-input-group-btn:last-child > .am-btn, +.am-input-group-btn:last-child > .am-btn-group > .am-btn, +.am-input-group-btn:last-child > .am-dropdown-toggle, +.am-input-group-btn:first-child > .am-btn:not(:first-child), +.am-input-group-btn:first-child > .am-btn-group:not(:first-child) > .am-btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.am-input-group-label:last-child { + border-left: 0; +} +.am-input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.am-input-group-btn > .am-btn { + position: relative; + border-color: #cccccc; +} +.am-input-group-btn > .am-btn + .am-btn { + margin-left: -1px; +} +.am-input-group-btn > .am-btn:hover, +.am-input-group-btn > .am-btn:focus, +.am-input-group-btn > .am-btn:active { + z-index: 2; +} +.am-input-group-btn:first-child > .am-btn, +.am-input-group-btn:first-child > .am-btn-group { + margin-right: -2px; +} +.am-input-group-btn:last-child > .am-btn, +.am-input-group-btn:last-child > .am-btn-group { + margin-left: -1px; +} +.am-input-group-lg > .am-form-field, +.am-input-group-lg > .am-input-group-label, +.am-input-group-lg > .am-input-group-btn > .am-btn { + padding: 12px 18px !important; + font-size: 1.8rem !important; +} +.am-input-group-sm > .am-form-field, +.am-input-group-sm > .am-input-group-label, +.am-input-group-sm > .am-input-group-btn > .am-btn { + padding: 9px 14.000000000000002px !important; + font-size: 1.4rem !important; +} +.am-input-group-primary .am-input-group-label { + background: #0e90d2; + color: #ffffff; +} +.am-input-group-primary .am-input-group-label, +.am-input-group-primary .am-input-group-btn > .am-btn, +.am-input-group-primary .am-form-field { + border-color: #0e90d2; +} +.am-input-group-secondary .am-input-group-label { + background: #3bb4f2; + color: #ffffff; +} +.am-input-group-secondary .am-input-group-label, +.am-input-group-secondary .am-input-group-btn > .am-btn, +.am-input-group-secondary .am-form-field { + border-color: #3bb4f2; +} +.am-input-group-success .am-input-group-label { + background: #5eb95e; + color: #ffffff; +} +.am-input-group-success .am-input-group-label, +.am-input-group-success .am-input-group-btn > .am-btn, +.am-input-group-success .am-form-field { + border-color: #5eb95e; +} +.am-input-group-warning .am-input-group-label { + background: #f37b1d; + color: #ffffff; +} +.am-input-group-warning .am-input-group-label, +.am-input-group-warning .am-input-group-btn > .am-btn, +.am-input-group-warning .am-form-field { + border-color: #f37b1d; +} +.am-input-group-danger .am-input-group-label { + background: #dd514c; + color: #ffffff; +} +.am-input-group-danger .am-input-group-label, +.am-input-group-danger .am-input-group-btn > .am-btn, +.am-input-group-danger .am-form-field { + border-color: #dd514c; +} +/* ========================================================================== + Component: List + ============================================================================ */ +.am-list { + margin-bottom: 1.6rem; + padding-left: 0; +} +.am-list > li { + position: relative; + display: block; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dedede; + border-width: 1px 0; +} +.am-list > li > a { + display: block; + padding: 1rem 0; +} +.am-list > li > a.am-active, +.am-list > li > a.am-active:hover, +.am-list > li > a.am-active:focus { + z-index: 2; + color: #ffffff; + background-color: #0e90d2; + border-color: #0e90d2; +} +.am-list > li > a.am-active .am-list-item-heading, +.am-list > li > a.am-active:hover .am-list-item-heading, +.am-list > li > a.am-active:focus .am-list-item-heading { + color: inherit; +} +.am-list > li > a.am-active .am-list-item-text, +.am-list > li > a.am-active:hover .am-list-item-text, +.am-list > li > a.am-active:focus .am-list-item-text { + color: #b2e2fa; +} +.am-list > li > .am-badge { + float: right; +} +.am-list > li > .am-badge + .am-badge { + margin-right: 5px; +} +/* Pure text list */ +.am-list-static > li { + padding: .8rem .2rem; +} +.am-list-static.am-list-border > li { + padding: 1rem; +} +/* with border */ +.am-list-border > li { + border-width: 1px; +} +.am-list-border > li:first-child, +.am-list-border > li:first-child > a { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.am-list-border > li:last-child, +.am-list-border > li:last-child > a { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.am-list-border > li > a { + padding: 1rem; +} +.am-list-border > li > a:hover, +.am-list-border > li > a:focus { + background-color: #f5f5f5; +} +/* Striped */ +.am-list-striped > li:nth-of-type(even) { + background: #f5f5f5; +} +.am-list-item-hd { + margin-top: 0; +} +.am-list-item-text { + line-height: 1.4; + font-size: 1.3rem; + color: #999999; + margin: 0; +} +/* ========================================================================== + Component: Panel + ============================================================================ */ +.am-panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 0; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +/* Panel header */ +.am-panel-hd { + padding: 0.6rem 1.25rem; + border-bottom: 1px solid transparent; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +/* Panel content */ +.am-panel-bd { + padding: 1.25rem; +} +.am-panel-title { + margin: 0; + font-size: 100%; + color: inherit; +} +.am-panel-title > a { + color: inherit; +} +/* Panel footer */ +.am-panel-footer { + padding: 0.6rem 1.25rem; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.am-panel-default { + border-color: #dddddd; +} +.am-panel-default > .am-panel-hd { + color: #444444; + background-color: #f5f5f5; + border-color: #dddddd; +} +.am-panel-default > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #dddddd; +} +.am-panel-default > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #dddddd; +} +.am-panel-primary { + border-color: #10a0ea; +} +.am-panel-primary > .am-panel-hd { + color: #ffffff; + background-color: #0e90d2; + border-color: #10a0ea; +} +.am-panel-primary > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #10a0ea; +} +.am-panel-primary > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #10a0ea; +} +.am-panel-secondary { + border-color: #caebfb; +} +.am-panel-secondary > .am-panel-hd { + color: #14a6ef; + background-color: rgba(59, 180, 242, 0.15); + border-color: #caebfb; +} +.am-panel-secondary > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #caebfb; +} +.am-panel-secondary > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #caebfb; +} +.am-panel-success { + border-color: #c9e7c9; +} +.am-panel-success > .am-panel-hd { + color: #5eb95e; + background-color: rgba(94, 185, 94, 0.15); + border-color: #c9e7c9; +} +.am-panel-success > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #c9e7c9; +} +.am-panel-success > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #c9e7c9; +} +.am-panel-warning { + border-color: #fbd0ae; +} +.am-panel-warning > .am-panel-hd { + color: #f37b1d; + background-color: rgba(243, 123, 29, 0.15); + border-color: #fbd0ae; +} +.am-panel-warning > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #fbd0ae; +} +.am-panel-warning > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #fbd0ae; +} +.am-panel-danger { + border-color: #f5cecd; +} +.am-panel-danger > .am-panel-hd { + color: #dd514c; + background-color: rgba(221, 81, 76, 0.15); + border-color: #f5cecd; +} +.am-panel-danger > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #f5cecd; +} +.am-panel-danger > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #f5cecd; +} +.am-panel > .am-table { + margin-bottom: 0; +} +.am-panel > .am-table:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.am-panel > .am-table:first-child > thead:first-child > tr:first-child td:first-child, +.am-panel > .am-table:first-child > tbody:first-child > tr:first-child td:first-child, +.am-panel > .am-table:first-child > thead:first-child > tr:first-child th:first-child, +.am-panel > .am-table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 0; +} +.am-panel > .am-table:first-child > thead:first-child > tr:first-child td:last-child, +.am-panel > .am-table:first-child > tbody:first-child > tr:first-child td:last-child, +.am-panel > .am-table:first-child > thead:first-child > tr:first-child th:last-child, +.am-panel > .am-table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 0; +} +.am-panel > .am-table:last-child { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.am-panel > .am-table:last-child > tbody:last-child > tr:last-child td:first-child, +.am-panel > .am-table:last-child > tfoot:last-child > tr:last-child td:first-child, +.am-panel > .am-table:last-child > tbody:last-child > tr:last-child th:first-child, +.am-panel > .am-table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 0; +} +.am-panel > .am-table:last-child > tbody:last-child > tr:last-child td:last-child, +.am-panel > .am-table:last-child > tfoot:last-child > tr:last-child td:last-child, +.am-panel > .am-table:last-child > tbody:last-child > tr:last-child th:last-child, +.am-panel > .am-table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 0; +} +.am-panel > .am-panel-bd + .am-table { + border-top: 1px solid #dddddd; +} +.am-panel > .am-table > tbody:first-child > tr:first-child th, +.am-panel > .am-table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.am-panel > .am-table-bd { + border: 0; +} +.am-panel > .am-table-bd > thead > tr > th:first-child, +.am-panel > .am-table-bd > tbody > tr > th:first-child, +.am-panel > .am-table-bd > tfoot > tr > th:first-child, +.am-panel > .am-table-bd > thead > tr > td:first-child, +.am-panel > .am-table-bd > tbody > tr > td:first-child, +.am-panel > .am-table-bd > tfoot > tr > td:first-child { + border-left: 0; +} +.am-panel > .am-table-bd > thead > tr > th:last-child, +.am-panel > .am-table-bd > tbody > tr > th:last-child, +.am-panel > .am-table-bd > tfoot > tr > th:last-child, +.am-panel > .am-table-bd > thead > tr > td:last-child, +.am-panel > .am-table-bd > tbody > tr > td:last-child, +.am-panel > .am-table-bd > tfoot > tr > td:last-child { + border-right: 0; +} +.am-panel > .am-table-bd > thead > tr:first-child > td, +.am-panel > .am-table-bd > tbody > tr:first-child > td, +.am-panel > .am-table-bd > thead > tr:first-child > th, +.am-panel > .am-table-bd > tbody > tr:first-child > th { + border-bottom: 0; +} +.am-panel > .am-table-bd > tbody > tr:last-child > td, +.am-panel > .am-table-bd > tfoot > tr:last-child > td, +.am-panel > .am-table-bd > tbody > tr:last-child > th, +.am-panel > .am-table-bd > tfoot > tr:last-child > th { + border-bottom: 0; +} +/* Wrap list */ +.am-panel > .am-list { + margin: 0; +} +.am-panel > .am-list > li > a { + padding-left: 1rem; + padding-right: 1rem; +} +.am-panel > .am-list-static li { + padding-left: 1rem; + padding-right: 1rem; +} +/* Panel group */ +.am-panel-group { + margin-bottom: 2rem; +} +.am-panel-group .am-panel { + margin-bottom: 0; + border-radius: 0; +} +.am-panel-group .am-panel + .am-panel { + margin-top: 6px; +} +.am-panel-group .am-panel-hd { + border-bottom: 0; +} +.am-panel-group .am-panel-hd + .am-panel-collapse .am-panel-bd { + border-top: 1px solid #dddddd; +} +.am-panel-group .am-panel-footer { + border-top: 0; +} +.am-panel-group .am-panel-footer + .am-panel-collapse .am-panel-bd { + border-bottom: 1px solid #dddddd; +} +/* ========================================================================== + Component: Progress + ============================================================================ */ +/* Progress bar animation */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 36px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 36px 0; + } + to { + background-position: 0 0; + } +} +/* Progress container */ +.am-progress { + overflow: hidden; + height: 2rem; + margin-bottom: 2rem; + background-color: #f5f5f5; + border-radius: 0; + -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); +} +/* Progress bar */ +.am-progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 1.2rem; + line-height: 2rem; + color: #ffffff; + text-align: center; + background-color: #0e90d2; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width .6s ease; + transition: width .6s ease; +} +.am-progress-striped .am-progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 36px 36px; + background-size: 36px 36px; +} +.am-progress.am-active .am-progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.am-progress-bar[aria-valuenow="1"], +.am-progress-bar[aria-valuenow="2"] { + min-width: 30px; +} +.am-progress-bar[aria-valuenow="0"] { + color: #999999; + min-width: 30px; + background: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.am-progress-bar-secondary { + background-color: #3bb4f2; +} +.am-progress-striped .am-progress-bar-secondary { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.am-progress-bar-success { + background-color: #5eb95e; +} +.am-progress-striped .am-progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.am-progress-bar-warning { + background-color: #f37b1d; +} +.am-progress-striped .am-progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.am-progress-bar-danger { + background-color: #dd514c; +} +.am-progress-striped .am-progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.am-progress-xs { + height: 0.6rem; +} +.am-progress-sm { + height: 1.2rem; +} +/* ========================================================================== + Component: Thumbnail + ============================================================================ */ +.am-thumbnail { + display: block; + padding: 2px; + margin-bottom: 2rem; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.am-thumbnail > img, +.am-thumbnail a > img { + margin-left: auto; + margin-right: auto; + display: block; +} +.am-thumbnail a.am-thumbnail:hover, +.am-thumbnail a.am-thumbnail:focus, +.am-thumbnail a.am-thumbnail.active { + border-color: #0e90d2; + background-color: #ffffff; +} +/* Image caption */ +.am-thumbnail-caption { + margin: 0; + padding: 0.8rem; + color: #333333; + font-weight: normal; +} +.am-thumbnail-caption *:last-child { + margin-bottom: 0; +} +.am-thumbnails { + margin-left: -0.5rem; + margin-right: -0.5rem; +} +.am-thumbnails > li { + padding: 0 .5rem 1rem .5rem; +} +/* ========================================================================== + Component: Utility + ============================================================================ */ +.am-scrollable-horizontal { + width: 100%; + overflow-y: hidden; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; + -webkit-overflow-scrolling: touch; +} +.am-scrollable-vertical { + height: 240px; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + resize: vertical; +} +/* Border-radius*/ +.am-square { + border-radius: 0; +} +.am-radius { + border-radius: 2px; +} +.am-round { + border-radius: 1000px; +} +.am-circle { + border-radius: 50%; +} +/* Float blocks*/ +.am-cf:before, +.am-cf:after { + content: " "; + display: table; +} +.am-cf:after { + clear: both; +} +.am-fl { + float: left; +} +.am-fr { + float: right; +} +.am-nbfc { + overflow: hidden; +} +.am-center { + display: block; + margin-left: auto; + margin-right: auto; +} +/* Display */ +.am-block { + display: block !important; +} +.am-inline { + display: inline !important; +} +.am-inline-block { + display: inline-block !important; +} +.am-hide { + display: none !important; + visibility: hidden !important; +} +/* +* Remove whitespace between child elements when using `inline-block` +*/ +.am-vertical-align { + font-size: 0.001px; +} +/* +* The `@{ns}vertical-align` container needs a specific height +*/ +.am-vertical-align:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; +} +/* +* Sub-object which can have any height +* 1. Reset whitespace hack +*/ +.am-vertical-align-middle, +.am-vertical-align-bottom { + display: inline-block; + font-size: 1.6rem; + /* 1 */ + max-width: 100%; +} +.am-vertical-align-middle { + vertical-align: middle; +} +.am-vertical-align-bottom { + vertical-align: bottom; +} +.am-responsive-width { + -webkit-box-sizing: border-box; + box-sizing: border-box; + max-width: 100%; + height: auto; +} +/* Margin helpers */ +.am-margin { + margin: 1.6rem; +} +.am-margin-xs { + margin: 0.5rem; +} +.am-margin-sm { + margin: 1rem; +} +.am-margin-lg { + margin: 2.4rem; +} +.am-margin-xl { + margin: 3.2rem; +} +.am-margin-horizontal { + margin-left: 1.6rem; + margin-right: 1.6rem; +} +.am-margin-horizontal-xs { + margin-left: 0.5rem; + margin-right: 0.5rem; +} +.am-margin-horizontal-sm { + margin-left: 1rem; + margin-right: 1rem; +} +.am-margin-horizontal-lg { + margin-left: 2.4rem; + margin-right: 2.4rem; +} +.am-margin-horizontal-xl { + margin-left: 3.2rem; + margin-right: 3.2rem; +} +.am-margin-vertical { + margin-top: 1.6rem; + margin-bottom: 1.6rem; +} +.am-margin-vertical-xs { + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.am-margin-vertical-sm { + margin-top: 1rem; + margin-bottom: 1rem; +} +.am-margin-vertical-lg { + margin-top: 2.4rem; + margin-bottom: 2.4rem; +} +.am-margin-vertical-xl { + margin-top: 3.2rem; + margin-bottom: 3.2rem; +} +.am-margin-top { + margin-top: 1.6rem; +} +.am-margin-top-xs { + margin-top: 0.5rem; +} +.am-margin-top-sm { + margin-top: 1rem; +} +.am-margin-top-lg { + margin-top: 2.4rem; +} +.am-margin-top-xl { + margin-top: 3.2rem; +} +.am-margin-bottom { + margin-bottom: 1.6rem; +} +.am-margin-bottom-xs { + margin-bottom: 0.5rem; +} +.am-margin-bottom-sm { + margin-bottom: 1rem; +} +.am-margin-bottom-lg { + margin-bottom: 2.4rem; +} +.am-margin-bottom-xl { + margin-bottom: 3.2rem; +} +.am-margin-left { + margin-left: 1.6rem; +} +.am-margin-left-xs { + margin-left: 0.5rem; +} +.am-margin-left-sm { + margin-left: 1rem; +} +.am-margin-left-lg { + margin-left: 2.4rem; +} +.am-margin-left-xl { + margin-left: 3.2rem; +} +.am-margin-right { + margin-right: 1.6rem; +} +.am-margin-right-xs { + margin-right: 0.5rem; +} +.am-margin-right-sm { + margin-right: 1rem; +} +.am-margin-right-lg { + margin-right: 2.4rem; +} +.am-margin-right-xl { + margin-right: 3.2rem; +} +/* Padding helpers */ +.am-padding { + padding: 1.6rem; +} +.am-padding-xs { + padding: 0.5rem; +} +.am-padding-sm { + padding: 1rem; +} +.am-padding-lg { + padding: 2.4rem; +} +.am-padding-xl { + padding: 3.2rem; +} +.am-padding-horizontal { + padding-left: 1.6rem; + padding-right: 1.6rem; +} +.am-padding-horizontal-xs { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.am-padding-horizontal-sm { + padding-left: 1rem; + padding-right: 1rem; +} +.am-padding-horizontal-lg { + padding-left: 2.4rem; + padding-right: 2.4rem; +} +.am-padding-horizontal-xl { + padding-left: 3.2rem; + padding-right: 3.2rem; +} +.am-padding-vertical { + padding-top: 1.6rem; + padding-bottom: 1.6rem; +} +.am-padding-vertical-xs { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.am-padding-vertical-sm { + padding-top: 1rem; + padding-bottom: 1rem; +} +.am-padding-vertical-lg { + padding-top: 2.4rem; + padding-bottom: 2.4rem; +} +.am-padding-vertical-xl { + padding-top: 3.2rem; + padding-bottom: 3.2rem; +} +.am-padding-top { + padding-top: 1.6rem; +} +.am-padding-top-xs { + padding-top: 0.5rem; +} +.am-padding-top-sm { + padding-top: 1rem; +} +.am-padding-top-lg { + padding-top: 2.4rem; +} +.am-padding-top-xl { + padding-top: 3.2rem; +} +.am-padding-bottom { + padding-bottom: 1.6rem; +} +.am-padding-bottom-xs { + padding-bottom: 0.5rem; +} +.am-padding-bottom-sm { + padding-bottom: 1rem; +} +.am-padding-bottom-lg { + padding-bottom: 2.4rem; +} +.am-padding-bottom-xl { + padding-bottom: 3.2rem; +} +.am-padding-left { + padding-left: 1.6rem; +} +.am-padding-left-xs { + padding-left: 0.5rem; +} +.am-padding-left-sm { + padding-left: 1rem; +} +.am-padding-left-lg { + padding-left: 2.4rem; +} +.am-padding-left-xl { + padding-left: 3.2rem; +} +.am-padding-right { + padding-right: 1.6rem; +} +.am-padding-right-xs { + padding-right: 0.5rem; +} +.am-padding-right-sm { + padding-right: 1rem; +} +.am-padding-right-lg { + padding-right: 2.4rem; +} +.am-padding-right-xl { + padding-right: 3.2rem; +} +/* small displays */ +@media only screen { + .am-show-sm-only, + .am-show-sm-up, + .am-show-sm, + .am-show-sm-down, + .am-hide-md-only, + .am-hide-md-up, + .am-hide-md, + .am-show-md-down, + .am-hide-lg-only, + .am-hide-lg-up, + .am-hide-lg, + .am-show-lg-down { + display: inherit !important; + } + .am-hide-sm-only, + .am-hide-sm-up, + .am-hide-sm, + .am-hide-sm-down, + .am-show-md-only, + .am-show-md-up, + .am-show-md, + .am-hide-md-down, + .am-show-lg-only, + .am-show-lg-up, + .am-show-lg, + .am-hide-lg-down { + display: none !important; + } +} +/* medium displays */ +@media only screen and (min-width:641px) { + .am-hide-sm-only, + .am-show-sm-up, + .am-hide-sm, + .am-hide-sm-down, + .am-show-md-only, + .am-show-md-up, + .am-show-md, + .am-show-md-down, + .am-hide-lg-only, + .am-hide-lg-up, + .am-hide-lg, + .am-show-lg-down { + display: inherit !important; + } + .am-show-sm-only, + .am-hide-sm-up, + .am-show-sm, + .am-show-sm-down, + .am-hide-md-only, + .am-hide-md-up, + .am-hide-md, + .am-hide-md-down, + .am-show-lg-only, + .am-show-lg-up, + .am-show-lg, + .am-hide-lg-down { + display: none !important; + } +} +/* large displays */ +@media only screen and (min-width:1025px) { + .am-hide-sm-only, + .am-show-sm-up, + .am-hide-sm, + .am-hide-sm-down, + .am-hide-md-only, + .am-show-md-up, + .am-hide-md, + .am-hide-md-down, + .am-show-lg-only, + .am-show-lg-up, + .am-show-lg, + .am-show-lg-down { + display: inherit !important; + } + .am-show-sm-only, + .am-hide-sm-up, + .am-show-sm, + .am-show-sm-down, + .am-show-md-only, + .am-hide-md-up, + .am-show-md, + .am-show-md-down, + .am-hide-lg-only, + .am-hide-lg-up, + .am-hide-lg, + .am-hide-lg-down { + display: none !important; + } +} +@media only screen and (orientation: landscape) { + .am-show-landscape, + .am-hide-portrait { + display: inherit !important; + } + .am-hide-landscape, + .am-show-portrait { + display: none !important; + } +} +@media only screen and (orientation: portrait) { + .am-show-portrait, + .am-hide-landscape { + display: inherit !important; + } + .am-hide-portrait, + .am-show-landscape { + display: none !important; + } +} +.am-sans-serif { + font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif; +} +.am-serif { + font-family: Georgia, "Times New Roman", Times, SimSun, "FontAwesome", serif; +} +.am-kai { + font-family: Georgia, "Times New Roman", Times, Kai, "Kaiti SC", KaiTi, BiauKai, "FontAwesome", serif; +} +.am-monospace { + font-family: Monaco, Menlo, Consolas, "Courier New", "FontAwesome", monospace; +} +.am-text-primary { + color: #0e90d2; +} +.am-text-secondary { + color: #3bb4f2; +} +.am-text-success { + color: #5eb95e; +} +.am-text-warning { + color: #f37b1d; +} +.am-text-danger { + color: #dd514c; +} +.am-link-muted { + color: #666; +} +.am-link-muted a { + color: #666; +} +.am-link-muted:hover, +.am-link-muted a:hover { + color: #555; +} +.am-text-default { + font-size: 1.6rem; +} +/* +.@{ns}text-xxs { + font-size: @font-size-xxs; +} +*/ +.am-text-xs { + font-size: 1.2rem; +} +.am-text-sm { + font-size: 1.4rem; +} +.am-text-lg { + font-size: 1.8rem; +} +.am-text-xl { + font-size: 2.4rem; +} +.am-text-xxl { + font-size: 3.2rem; +} +.am-text-xxxl { + font-size: 4.2rem; +} +.am-ellipsis, +.am-text-truncate { + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-text-break { + word-wrap: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; +} +.am-text-nowrap { + white-space: nowrap; +} +[class*='am-align-'] { + margin-bottom: 1rem; +} +.am-align-left { + margin-right: 1rem; + float: left; +} +.am-align-right { + margin-left: 1rem; + float: right; +} +/** Only display content to screen readers + * See: http://a11yproject.com/posts/how-to-hide-content/ + */ +.am-sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +/* Text Image Replacement */ +.am-text-ir { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +/* Text align */ +@media only screen { + .am-text-left { + text-align: left !important; + } + .am-text-right { + text-align: right !important; + } + .am-text-center { + text-align: center !important; + } + .am-text-justify { + text-align: justify !important; + } +} +@media only screen and (max-width: 640px) { + .am-sm-only-text-left { + text-align: left !important; + } + .am-sm-only-text-right { + text-align: right !important; + } + .am-sm-only-text-center { + text-align: center !important; + } + .am-sm-only-text-justify { + text-align: justify !important; + } +} +@media only screen and (min-width:641px) and (max-width:1024px) { + .am-md-only-text-left { + text-align: left !important; + } + .am-md-only-text-right { + text-align: right !important; + } + .am-md-only-text-center { + text-align: center !important; + } + .am-md-only-text-justify { + text-align: justify !important; + } +} +@media only screen and (min-width:641px) { + .am-md-text-left { + text-align: left !important; + } + .am-md-text-right { + text-align: right !important; + } + .am-md-text-center { + text-align: center !important; + } + .am-md-text-justify { + text-align: justify !important; + } +} +@media only screen and (min-width:1025px) { + .am-lg-text-left { + text-align: left !important; + } + .am-lg-text-right { + text-align: right !important; + } + .am-lg-text-center { + text-align: center !important; + } + .am-lg-text-justify { + text-align: justify !important; + } +} +.am-text-top { + vertical-align: top !important; +} +.am-text-middle { + vertical-align: middle !important; +} +.am-text-bottom { + vertical-align: bottom !important; +} +.am-angle { + position: absolute; +} +.am-angle:before, +.am-angle:after { + position: absolute; + display: block; + content: ""; + width: 0; + height: 0; + border: 8px dashed transparent; + z-index: 1; +} +.am-angle-up { + top: 0; +} +.am-angle-up:before, +.am-angle-up:after { + border-bottom-style: solid; + border-width: 0 8px 8px; +} +.am-angle-up:before { + border-bottom-color: #dddddd; + bottom: 0; +} +.am-angle-up:after { + border-bottom-color: #ffffff; + bottom: -1px; +} +.am-angle-down { + bottom: -9px; +} +.am-angle-down:before, +.am-angle-down:after { + border-top-style: solid; + border-width: 8px 8px 0; +} +.am-angle-down:before { + border-top-color: #dddddd; + bottom: 0; +} +.am-angle-down:after { + border-top-color: #ffffff; + bottom: 1px; +} +.am-angle-left { + left: -9px; +} +.am-angle-left:before, +.am-angle-left:after { + border-right-style: solid; + border-width: 8px 8px 8px 0; +} +.am-angle-left:before { + border-right-color: #dddddd; + left: 0; +} +.am-angle-left:after { + border-right-color: #ffffff; + left: 1px; +} +.am-angle-right { + right: 0; +} +.am-angle-right:before, +.am-angle-right:after { + border-left-style: solid; + border-width: 8px 0 8px 8px; +} +.am-angle-right:before { + border-left-color: #dddddd; + left: 0; +} +.am-angle-right:after { + border-left-color: #ffffff; + left: -1px; +} +/* ========================================================================== + Component: Alert Plugin + ============================================================================ */ +.am-alert { + margin-bottom: 15px; + padding: 10px; + background: #0e90d2; + color: #ffffff; + border: 1px solid #0c7cb5; + border-radius: 0; +} +.am-alert a { + color: #ffffff; +} +.am-alert h1, +.am-alert h2, +.am-alert h3, +.am-alert h4, +.am-alert h5, +.am-alert h6 { + color: inherit; +} +.am-alert .am-close { + opacity: .4; +} +.am-alert .am-close:hover { + opacity: .6; +} +/* Add margin if adjacent element */ +* + .am-alert { + margin-top: 15px; +} +/* Remove margin from the last-child */ +.am-alert > :last-child { + margin-bottom: 0; +} +/* Close in alert */ +.am-alert > .am-close:first-child { + float: right; + height: auto; + margin: -3px -5px auto auto; +} +/* Remove margin from adjacent element */ +.am-alert > .am-close:first-child + * { + margin-top: 0; +} +.am-alert-secondary { + background-color: #eeeeee; + border-color: #dfdfdf; + color: #555555; +} +.am-alert-success { + background-color: #5eb95e; + border-color: #4bad4b; + color: #ffffff; +} +.am-alert-warning { + background-color: #f37b1d; + border-color: #e56c0c; + color: #ffffff; +} +.am-alert-danger { + background-color: #dd514c; + border-color: #d83832; + color: #ffffff; +} +.am-dropdown { + position: relative; + display: inline-block; +} +.am-dropdown-toggle:focus { + outline: 0; +} +.am-dropdown-content { + position: absolute; + top: 100%; + left: 0; + z-index: 1020; + display: none; + float: left; + min-width: 160px; + padding: 15px; + margin: 9px 0 0; + text-align: left; + line-height: 1.6; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; + -webkit-background-clip: padding-box; + background-clip: padding-box; + -webkit-animation-duration: .15s; + animation-duration: .15s; +} +.am-dropdown-content:before, +.am-dropdown-content:after { + position: absolute; + display: block; + content: ""; + width: 0; + height: 0; + border: 8px dashed transparent; + z-index: 1; +} +.am-dropdown-content:before, +.am-dropdown-content:after { + border-bottom-style: solid; + border-width: 0 8px 8px; +} +.am-dropdown-content:before { + border-bottom-color: #dddddd; + bottom: 0; +} +.am-dropdown-content:after { + border-bottom-color: #ffffff; + bottom: -1px; +} +.am-dropdown-content:before, +.am-dropdown-content:after { + left: 10px; + top: -8px; + pointer-events: none; +} +.am-dropdown-content:after { + top: -7px; +} +.am-active > .am-dropdown-content { + display: block; +} +.am-dropdown-content :first-child { + margin-top: 0; +} +.am-dropdown-up .am-dropdown-content { + top: auto; + bottom: 100%; + margin: 0 0 9px; +} +.am-dropdown-up .am-dropdown-content:before, +.am-dropdown-up .am-dropdown-content:after { + border-bottom: none; + border-top: 8px solid #dddddd; + top: auto; + bottom: -8px; +} +.am-dropdown-up .am-dropdown-content:after { + bottom: -7px; + border-top-color: #ffffff; +} +.am-dropdown-flip .am-dropdown-content { + left: auto; + right: 0; +} +.am-dropdown-flip .am-dropdown-content:before, +.am-dropdown-flip .am-dropdown-content:after { + left: auto; + right: 10px; +} +ul.am-dropdown-content { + list-style: none; + padding: 5px 0; +} +ul.am-dropdown-content.am-fr { + right: 0; + left: auto; +} +ul.am-dropdown-content .am-divider { + height: 1px; + margin: 0rem 0; + overflow: hidden; + background-color: #e5e5e5; +} +ul.am-dropdown-content > li > a { + display: block; + padding: 6px 20px; + clear: both; + font-weight: normal; + color: #333333; + white-space: nowrap; +} +ul.am-dropdown-content > li > a:hover, +ul.am-dropdown-content > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; +} +ul.am-dropdown-content > .am-active > a, +ul.am-dropdown-content > .am-active > a:hover, +ul.am-dropdown-content > .am-active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #0e90d2; +} +ul.am-dropdown-content > .am-disabled > a, +ul.am-dropdown-content > .am-disabled > a:hover, +ul.am-dropdown-content > .am-disabled > a:focus { + color: #999999; +} +ul.am-dropdown-content > .am-disabled > a:hover, +ul.am-dropdown-content > .am-disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.am-dropdown-header { + display: block; + padding: 6px 20px; + font-size: 1.2rem; + color: #999999; +} +.am-fr > .am-dropdown-content { + right: 0; + left: auto; +} +.am-fr > .am-dropdown-content:before { + right: 10px; + left: auto; +} +.am-dropdown-animation { + -webkit-animation: am-dropdown-animation 0.15s ease-out; + animation: am-dropdown-animation 0.15s ease-out; +} +@-webkit-keyframes am-dropdown-animation { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + 100% { + opacity: 0; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } +} +@keyframes am-dropdown-animation { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + 100% { + opacity: 0; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } +} +/* ========================================================================== + Component: Flex Slider Plugin + ============================================================================ */ +.am-slider a:hover, +.am-slider a:focus { + outline: none; +} +.am-slides, +.am-control-nav, +.am-direction-nav { + margin: 0; + padding: 0; + list-style: none; +} +.am-slider { + margin: 0; + padding: 0; +} +.am-slider .am-slides:before, +.am-slider .am-slides:after { + content: " "; + display: table; +} +.am-slider .am-slides:after { + clear: both; +} +.am-slider .am-slides > li { + display: none; + -webkit-backface-visibility: hidden; + position: relative; +} +.no-js .am-slider .am-slides > li:first-child { + display: block; +} +.am-slider .am-slides img { + width: 100%; + display: block; +} +.am-pauseplay span { + text-transform: capitalize; +} +.am-slider { + position: relative; +} +.am-viewport { + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.am-slider-carousel li { + margin-right: 5px; +} +/* Direction Nav */ +/* Pause/Play */ +.am-control-nav { + position: absolute; +} +.am-control-nav li { + display: inline-block; +} +.am-control-thumbs { + position: static; + overflow: hidden; +} +.am-control-thumbs img { + -webkit-transition: opacity .1s; + transition: opacity .1s; +} +/** + * Slider Theme: Default + */ +.am-slider-default { + margin: 0 0 20px; + background-color: #fff; + border-radius: 2px; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 2px rgba(0, 0, 0, 0.15) + /* Direction Nav */ + /* Pause/Play */ + /* Control Nav */ +} +.am-slider-default .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-default .am-viewport { + max-height: 300px; +} +.am-slider-default .carousel li { + margin-right: 5px; +} +.am-slider-default .am-direction-nav a { + position: absolute; + top: 50%; + z-index: 10; + display: block; + width: 36px; + height: 24px; + margin: -12px 0 0; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: rgba(0, 0, 0, 0.65); + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-default .am-direction-nav a:before { + color: #333333; + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f137"; + font-size: 24px; +} +.am-slider-default .am-direction-nav a.am-next:before { + content: "\f138"; +} +.am-slider-default .am-direction-nav .am-prev { + left: 10px; +} +.am-slider-default .am-direction-nav .am-next { + right: 10px; + text-align: right; +} +.am-slider-default .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-default:hover .am-prev { + opacity: 0.7; + left: 10px; +} +.am-slider-default:hover .am-prev:hover { + opacity: 1; +} +.am-slider-default:hover .am-next { + opacity: 0.7; + right: 10px; +} +.am-slider-default:hover .am-next:hover { + opacity: 1; +} +.am-slider-default .am-pauseplay a { + display: block; + width: 20px; + height: 20px; + position: absolute; + bottom: 5px; + left: 10px; + opacity: 0.8; + z-index: 10; + overflow: hidden; + cursor: pointer; + color: #000000; +} +.am-slider-default .am-pauseplay a::before { + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 20px; + display: inline-block; + content: "\f04c"; +} +.am-slider-default .am-pauseplay a:hover { + opacity: 1; +} +.am-slider-default .am-pauseplay a.am-play::before { + content: "\f04b"; +} +.am-slider-default .am-slider-desc { + background-color: rgba(0, 0, 0, 0.7); + position: absolute; + bottom: 0; + padding: 10px; + width: 100%; + color: #ffffff; +} +.am-slider-default .am-control-nav { + width: 100%; + position: absolute; + bottom: -15px; + text-align: center; +} +.am-slider-default .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-default .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: #666; + background-color: rgba(0, 0, 0, 0.5); + line-height: 0; + font-size: 0; + cursor: pointer; + text-indent: -9999px; + border-radius: 20px; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-default .am-control-nav li a:hover { + background-color: #333; + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-default .am-control-nav li a.am-active { + background-color: #000; + background-color: #0e90d2; + cursor: default; +} +.am-slider-default .am-control-thumbs { + margin: 5px 0 0; + position: static; + overflow: hidden; +} +.am-slider-default .am-control-thumbs li { + width: 25%; + float: left; + margin: 0; +} +.am-slider-default .am-control-thumbs img { + width: 100%; + display: block; + opacity: .7; + cursor: pointer; +} +.am-slider-default .am-control-thumbs img:hover { + opacity: 1; +} +.am-slider-default .am-control-thumbs .am-active { + opacity: 1; + cursor: default; +} +/* ========================================================================== + Component: Modal Plugin + ============================================================================ */ +.am-modal { + width: 270px; + position: fixed; + display: none; + z-index: 1110; + left: 50%; + margin-left: -135px; + margin-top: 0; + top: 50%; + text-align: center; + border-radius: 0; + opacity: 0; + -webkit-transform: translate3d(0, 0, 0) scale(1.185); + transform: translate3d(0, 0, 0) scale(1.185); + -webkit-transition-property: -webkit-transform, opacity; + transition-property: transform, opacity + /*@media @large-up { + width: @modal-lg; + margin-left: -@modal-lg/2; + }*/ +} +.am-modal:focus { + outline: 0; +} +.am-modal.am-modal-active { + opacity: 1; + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + -webkit-transform: translate3d(0, 0, 0) scale(1); + transform: translate3d(0, 0, 0) scale(1); +} +.am-modal.am-modal-out { + opacity: 0; + z-index: 1109; + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + -webkit-transform: translate3d(0, 0, 0) scale(0.815); + transform: translate3d(0, 0, 0) scale(0.815); +} +@media only screen and (min-width:641px) { + .am-modal { + width: 540px; + margin-left: -270px; + } +} +.am-modal-dialog { + border-radius: 0; + background: #f8f8f8; +} +.am-modal-hd { + padding: 15px 10px 5px 10px; + font-size: 1.8rem; + font-weight: 500; +} +.am-modal-hd + .am-modal-bd { + padding-top: 0; +} +.am-modal-hd .am-close { + position: absolute; + top: 4px; + right: 4px; +} +.am-modal-bd { + padding: 15px 10px; + text-align: center; + border-bottom: 1px solid #dedede; + border-radius: 2px 2px 0 0; +} +.am-modal-bd + .am-modal-bd { + margin-top: 5px; +} +.am-modal-prompt-input { + display: block; + margin: 5px auto 0 auto; + border-radius: 0; + padding: 5px; + line-height: 1.8rem; + width: 80%; + border: 1px solid #dedede; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} +.am-modal-prompt-input:focus { + outline: none; + border-color: #d6d6d6; +} +.am-modal-footer { + height: 44px; + overflow: hidden; + display: table; + width: 100%; + border-collapse: collapse; +} +.am-modal-btn { + display: table-cell !important; + padding: 0 5px; + height: 44px; + -webkit-box-sizing: border-box !important; + box-sizing: border-box !important; + font-size: 1.6rem; + line-height: 44px; + text-align: center; + color: #0e90d2; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + cursor: pointer; + border-right: 1px solid #dedede; +} +.am-modal-btn:first-child { + border-radius: 0 0 0 0; +} +.am-modal-btn:last-child { + border-right: none; + border-radius: 0 0 0 0; +} +.am-modal-btn:first-child:last-child { + border-radius: 0 0 0 0; +} +.am-modal-btn.am-modal-btn-bold { + font-weight: 500; +} +.am-modal-btn:active { + background: #d4d4d4; +} +.am-modal-btn + .am-modal-btn { + border-left: 1px solid #dedede; +} +.am-modal-no-btn .am-modal-dialog { + border-radius: 0; + border-bottom: none; +} +.am-modal-no-btn .am-modal-bd { + border-bottom: none; +} +.am-modal-no-btn .am-modal-footer { + display: none; +} +.am-modal-loading .am-modal-bd { + border-bottom: none; +} +.am-modal-loading .am-icon-spin { + display: inline-block; + font-size: 2.4rem; +} +.am-modal-loading .am-modal-footer { + display: none; +} +.am-modal-actions { + position: fixed; + left: 0; + bottom: 0; + z-index: 1110; + width: 100%; + text-align: center; + border-radius: 0; + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); + -webkit-transition: -webkit-transform 300ms; + transition: transform 300ms; +} +.am-modal-actions.am-modal-active { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); +} +.am-modal-actions.am-modal-out { + z-index: 1109; + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); +} +.am-modal-actions-group { + margin: 10px; +} +.am-modal-actions-group .am-list { + margin: 0; + border-radius: 0; +} +.am-modal-actions-group .am-list > li { + margin-bottom: 0; + border-bottom: none; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.015); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.015); +} +.am-modal-actions-group .am-list > li > a { + padding: 1rem; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-modal-actions-group .am-list > li:first-child { + border-top: none; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.am-modal-actions-group .am-list > li:last-child { + border-bottom: none; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.am-modal-actions-header { + padding: 1rem; + color: #999999; + font-size: 1.4rem; +} +.am-modal-actions-danger { + color: #dd514c; +} +.am-modal-actions-danger a { + color: inherit; +} +.am-popup { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 1110; + background: #fff; + display: none; + overflow: hidden; + -webkit-transition-property: -webkit-transform; + transition-property: transform; + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); +} +.am-popup.am-modal-active, +.am-popup.am-modal-out { + -webkit-transition-duration: 300ms; + transition-duration: 300ms; +} +.am-popup.am-modal-active { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); +} +.am-popup.am-modal-out { + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); +} +@media all and (min-width: 630px) and (min-height: 630px) { + .am-popup { + width: 630px; + height: 630px; + left: 50%; + top: 50%; + margin-left: -315px; + margin-top: -315px; + -webkit-transform: translateY(1024px); + -ms-transform: translateY(1024px); + transform: translateY(1024px); + } + .am-popup.am-modal-active { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + .am-popup.am-modal-out { + -webkit-transform: translateY(1024px); + -ms-transform: translateY(1024px); + transform: translateY(1024px); + } +} +.am-popup-inner { + padding-top: 44px; + height: 100%; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.am-popup-hd { + position: fixed; + top: 0; + width: 100%; + height: 43px; + border-bottom: 1px solid #dedede; + background-color: #fff; +} +.am-popup-hd .am-popup-title { + font-size: 1.8rem; + font-weight: bold; + line-height: 43px; + text-align: center; + margin: 0 30px; + color: #333333; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-popup-hd .am-close { + position: absolute; + right: 10px; + top: 8px; + cursor: pointer; + -webkit-transition: all 0.3s; + transition: all 0.3s; + color: #999999; +} +.am-popup-hd .am-close:hover { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + color: #555555; +} +.am-popup-bd { + padding: 15px; + background: #f8f8f8; + color: #555555; +} +/* ========================================================================== + Component: OffCanvas Plugin + ============================================================================ */ +/* Off-canvas overlay and bar container */ +.am-offcanvas { + display: none; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1090; + background: rgba(0, 0, 0, 0.15); +} +.am-offcanvas.am-active { + display: block; +} +/** + * .@{ns}offcanvas-page + * + * Prepares the whole HTML page to slide-out + * 1. Fix the main page and disallow scrolling + * 2. Side-out transition + */ +.am-offcanvas-page { + position: fixed; + /* 1 */ + -webkit-transition: margin-left 0.3s ease-in-out; + transition: margin-left 0.3s ease-in-out + /* 2 */ +} +/* Sub-object .@{ns}offcanvas-bar */ +.am-offcanvas-bar { + position: fixed; + top: 0; + bottom: 0; + left: 0; + z-index: 1091; + width: 270px; + max-width: 100%; + background: #333333; + overflow-y: auto; + /* scrollable */ + -webkit-overflow-scrolling: touch; + /* scrollable */ + -webkit-transition: -webkit-transform 0.3s ease-in-out; + transition: transform 0.3s ease-in-out; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); +} +.am-offcanvas-bar:after { + content: ""; + display: block; + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 1px; + background: #262626; +} +.am-offcanvas.am-active .am-offcanvas-bar.am-offcanvas-bar-active { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} +/* .@{ns}offcanvas-bar-flip */ +.am-offcanvas-bar-flip { + left: auto; + right: 0; + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); +} +.am-offcanvas-bar-flip:after { + right: auto; + left: 0; +} +.am-offcanvas-content { + padding: 15px; + color: #999; +} +.am-offcanvas-content a { + color: #ccc; +} +/* ========================================================================== + Component: Popover Plugin + ============================================================================ */ +.am-popover { + position: absolute; + top: 0; + left: 0; + margin: 0; + border-radius: 0; + background: #333333; + color: #ffffff; + border: 1px solid #333333; + display: none; + font-size: 1.6rem; + z-index: 1030; + opacity: 0; + -webkit-transition: opacity 300ms; + transition: opacity 300ms; +} +.am-popover.am-active { + display: block !important; + opacity: 1; +} +.am-popover-inner { + position: relative; + background: #333333; + padding: 8px; + z-index: 110; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.am-popover-caret { + position: absolute; + left: 5px; + top: 0; + z-index: 100; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-bottom: 8px solid #333333; + border-right: 8px solid transparent; + border-left: 8px solid transparent; + border-top: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + overflow: hidden; +} +.am-popover-top .am-popover-caret { + top: auto; + bottom: -8px; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.am-popover-bottom .am-popover-caret { + top: -8px; +} +.am-popover-left .am-popover-caret { + top: auto; + left: auto; + right: -12px; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.am-popover-right .am-popover-caret { + right: auto; + left: -12px; + -webkit-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.am-popover-sm { + font-size: 1.4rem; +} +.am-popover-sm .am-popover-inner { + padding: 5px; +} +.am-popover-lg { + font-size: 1.8rem; +} +.am-popover-secondary { + border-color: #0e90d2; +} +.am-popover-secondary .am-popover-inner { + background: #0e90d2; +} +.am-popover-secondary .am-popover-caret { + border-bottom-color: #0e90d2; +} +.am-popover-secondary { + border-color: #3bb4f2; +} +.am-popover-secondary .am-popover-inner { + background: #3bb4f2; +} +.am-popover-secondary .am-popover-caret { + border-bottom-color: #3bb4f2; +} +.am-popover-success { + border-color: #5eb95e; +} +.am-popover-success .am-popover-inner { + background: #5eb95e; +} +.am-popover-success .am-popover-caret { + border-bottom-color: #5eb95e; +} +.am-popover-warning { + border-color: #f37b1d; +} +.am-popover-warning .am-popover-inner { + background: #f37b1d; +} +.am-popover-warning .am-popover-caret { + border-bottom-color: #f37b1d; +} +.am-popover-danger { + border-color: #dd514c; +} +.am-popover-danger .am-popover-inner { + background: #dd514c; +} +.am-popover-danger .am-popover-caret { + border-bottom-color: #dd514c; +} +/* ========================================================================== + Component: Progress Plugin + ============================================================================ */ +#nprogress { + /* Make clicks pass-through */ + pointer-events: none + /* Fancy blur effect */ +} +#nprogress .nprogress-bar { + position: fixed; + top: 0; + left: 0; + z-index: 2000; + width: 100%; + height: 2px; + background: #5eb95e; +} +#nprogress .nprogress-peg { + display: block; + position: absolute; + right: 0; + width: 100px; + height: 100%; + -webkit-box-shadow: 0 0 10px #5eb95e, 0 0 5px #5eb95e; + box-shadow: 0 0 10px #5eb95e, 0 0 5px #5eb95e; + opacity: 1; + -webkit-transform: rotate(3deg) translate(0px, -4px); + -ms-transform: rotate(3deg) translate(0px, -4px); + transform: rotate(3deg) translate(0px, -4px); +} +#nprogress .nprogress-spinner { + position: fixed; + top: 15px; + right: 15px; + z-index: 2000; + display: block; +} +#nprogress .nprogress-spinner-icon { + width: 18px; + height: 18px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: solid 2px transparent; + border-top-color: #5eb95e; + border-left-color: #5eb95e; + border-radius: 50%; + -webkit-animation: nprogress-spinner 400ms linear infinite; + animation: nprogress-spinner 400ms linear infinite; +} +@-webkit-keyframes nprogress-spinner { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes nprogress-spinner { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +/* ========================================================================== + Component: Tabs Plugin + ============================================================================ */ +.am-tabs-bd { + position: relative; + overflow: hidden; + border: 1px solid #ddd; + border-top: none; + z-index: 100; + -webkit-transition: height .3s; + transition: height .3s; +} +.am-tabs-bd .am-tab-panel { + position: absolute; + top: 0; + z-index: 99; + float: left; + width: 100%; + padding: 10px 10px 15px; + visibility: hidden; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); +} +.am-tabs-bd .am-tab-panel * { + -webkit-user-drag: none; +} +.am-tabs-bd .am-tab-panel.am-active { + position: relative; + z-index: 100; + visibility: visible; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} +.am-tabs-bd .am-tab-panel.am-active ~ .am-tab-panel { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); +} +/* ========================================================================== + Component: Share Plugin + ============================================================================ */ +.am-share { + font-size: 14px; +} +.am-share-title { + padding: 10px 0 0; + margin: 0 10px; + font-weight: normal; + text-align: center; + color: #555555; + background-color: #f8f8f8; + border-bottom: 1px solid #fff; + border-top-right-radius: 2px; + border-top-left-radius: 2px; +} +.am-share-title:after { + content: ""; + display: block; + width: 100%; + height: 0; + margin-top: 10px; + border-bottom: 1px solid #dfdfdf; +} +.am-share-sns { + margin: 0 10px; + padding-top: 15px; + background-color: #f8f8f8; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.am-share-sns li { + margin-bottom: 15px; +} +.am-share-sns a { + display: block; + color: #555555; +} +.am-share-sns span { + display: block; +} +.am-share-sns [class*='am-icon'] { + background-color: #3bb4f2; + border-radius: 50%; + width: 36px; + height: 36px; + line-height: 36px; + color: #fff; + margin-bottom: 5px; + font-size: 18px; +} +.am-share-sns .am-icon-weibo { + background-color: #ea1328; +} +.am-share-sns .am-icon-qq { + background-color: #009cda; +} +.am-share-sns .am-icon-star { + background-color: #ffc028; +} +.am-share-sns .am-icon-tencent-weibo { + background-color: #23ccfe; +} +.am-share-sns .am-icon-wechat, +.am-share-sns .am-icon-weixin { + background-color: #44b549; +} +.am-share-sns .am-icon-renren { + background-color: #105ba3; +} +.am-share-sns .am-icon-comment { + background-color: #5eb95e; +} +.am-share-footer { + margin: 10px; +} +.am-share-footer .am-btn { + color: #555555; +} +.am-share-wechat-qr { + font-size: 14px; + color: #777; +} +.am-share-wechat-qr .am-modal-dialog { + background-color: #fff; + border: 1px solid #dedede; +} +.am-share-wechat-qr .am-modal-hd { + padding-top: 10px; + text-align: left; + margin-bottom: 10px; +} +.am-share-wechat-qr .am-share-wx-qr { + margin-bottom: 10px; +} +.am-share-wechat-qr .am-share-wechat-tip { + text-align: left; +} +.am-share-wechat-qr .am-share-wechat-tip em { + color: #dd514c; + font-weight: bold; + font-style: normal; + margin-left: 3px; + margin-right: 3px; +} +/* ========================================================================== + Component: PureView Plugin + ============================================================================ */ +.am-pureview { + position: fixed; + left: 0; + top: 0; + bottom: 0; + right: 0; + z-index: 1120; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.95); + display: none; + overflow: hidden; + -webkit-transition: -webkit-transform .3s; + transition: transform .3s; + -webkit-transform: translate(0, 100%); + -ms-transform: translate(0, 100%); + transform: translate(0, 100%); +} +.am-pureview.am-active { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} +.am-pureview ul, +.am-pureview ol { + list-style: none; + padding: 0; + margin: 0; + width: 100%; +} +.am-pureview-slider { + overflow: hidden; + height: 100%; +} +.am-pureview-slider li { + position: absolute; + width: 100%; + height: 100%; + top: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + vertical-align: middle; + -webkit-transition: all .3s linear; + transition: all .3s linear; + z-index: 100; + visibility: hidden; +} +.am-pureview-slider li.am-pureview-slide-prev { + -webkit-transform: translate(-100%, 0); + -ms-transform: translate(-100%, 0); + transform: translate(-100%, 0); + z-index: 109; +} +.am-pureview-slider li.am-pureview-slide-next { + -webkit-transform: translate(100%, 0); + -ms-transform: translate(100%, 0); + transform: translate(100%, 0); + z-index: 109; +} +.am-pureview-slider li.am-active { + position: relative; + z-index: 110; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); + visibility: visible; +} +.am-pureview-slider .pinch-zoom-container { + width: 100%; + z-index: 1121; +} +.am-pureview-slider .am-pinch-zoom { + position: relative; + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} +.am-pureview-slider .am-pinch-zoom:after { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f110"; + -webkit-animation: icon-spin 2s infinite linear; + animation: icon-spin 2s infinite linear; + font-size: 24px; + line-height: 24px; + color: #eee; + position: absolute; + top: 50%; + left: 50%; + margin-left: -12px; + margin-top: -12px; + z-index: 1; +} +.am-pureview-slider img { + position: relative; + display: block; + max-width: 100%; + max-height: 100%; + opacity: 0; + z-index: 200; + -webkit-user-drag: none; + -webkit-transition: opacity 0.2s ease-in; + transition: opacity 0.2s ease-in; +} +.am-pureview-slider img.am-img-loaded { + opacity: 1; +} +.am-pureview-direction { + position: absolute; + top: 50%; + width: 100%; + margin-top: -18px !important; + z-index: 1122; +} +.am-touch .am-pureview-direction, +.am-pureview-only .am-pureview-direction { + display: none; +} +.am-pureview-direction li { + position: absolute; + width: 36px; + height: 36px; +} +.am-pureview-direction a { + display: block; + height: 36px; + border: none; + color: #ccc; + opacity: 0.5; + cursor: pointer; + text-align: center; + z-index: 1125; +} +.am-pureview-direction a:before { + content: "\f137"; + line-height: 36px; + font-size: 24px; +} +.am-pureview-direction a:hover { + opacity: 1; +} +.am-pureview-direction .am-pureview-prev { + left: 15px; +} +.am-pureview-direction .am-pureview-next { + right: 15px; +} +.am-pureview-direction .am-pureview-next a:before { + content: "\f138"; +} +.am-pureview-bar { + position: absolute; + bottom: 0; + height: 45px; + width: 100%; + background-color: rgba(0, 0, 0, 0.35); + color: #eeeeee; + line-height: 45px; + padding: 0 10px; + font-size: 14px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-pureview-bar .am-pureview-title { + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + margin-left: 6px; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-pureview-bar .am-pureview-total { + font-size: 10px; + line-height: 48px; +} +.am-pureview-actions { + position: absolute; + z-index: 1130; + left: 0; + right: 0; + top: 0; + height: 45px; + background-color: rgba(0, 0, 0, 0.35); +} +.am-pureview-actions a { + position: absolute; + left: 10px; + color: #ccc; + display: block; + width: 45px; + line-height: 45px; + text-align: left; + font-size: 16px; +} +.am-pureview-actions a:hover { + color: #ffffff; +} +.am-pureview-actions [data-am-toggle="share"] { + left: auto; + right: 10px; +} +.am-pureview-bar, +.am-pureview-actions { + opacity: 0; + -webkit-transition: all .15s; + transition: all .15s; + z-index: 1130; +} +.am-pureview-bar-active .am-pureview-bar, +.am-pureview-bar-active .am-pureview-actions { + opacity: 1; +} +.am-pureview-nav { + position: absolute; + bottom: 15px; + left: 0; + right: 0; + text-align: center; + z-index: 1131; +} +.am-pureview-bar-active .am-pureview-nav { + display: none; +} +.am-pureview-nav li { + display: inline-block; + background: #ccc; + background: rgba(255, 255, 255, 0.5); + width: 8px; + height: 8px; + margin: 0 3px; + border-radius: 50%; + text-indent: -9999px; + overflow: hidden; + cursor: pointer; +} +.am-pureview-nav .am-active { + background: #fff; + background: rgba(255, 255, 255, 0.9); +} +[data-am-pureview] img { + cursor: pointer; +} +.am-pureview-active { + overflow: hidden; +} +/* ========================================================================== + Component: AddToHomeScreen Plugin + ============================================================================ */ +.ath-viewport * { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.ath-viewport { + position: relative; + z-index: 2147483641; + pointer-events: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-text-size-adjust: none; + -ms-text-size-adjust: none; + text-size-adjust: none; +} +.ath-modal { + pointer-events: auto !important; + background: rgba(0, 0, 0, 0.6); +} +.ath-mandatory { + background: #000; +} +.ath-container { + pointer-events: auto !important; + position: absolute; + z-index: 2147483641; + padding: 0.7em 0.6em; + width: 18em; + background: #eee; + -webkit-background-size: 100% auto; + background-size: 100% auto; + -webkit-box-shadow: 0 0.2em 0 #d1d1d1; + box-shadow: 0 0.2em 0 #d1d1d1; + font-family: sans-serif; + font-size: 15px; + line-height: 1.5em; + text-align: center; +} +.ath-ios.ath-phone { + bottom: 1.8em; + left: 50%; + margin-left: -9em; +} +.ath-ios6.ath-tablet { + left: 5em; + top: 1.8em; +} +.ath-ios7.ath-tablet { + left: 0.7em; + top: 1.8em; +} +.ath-ios8.ath-tablet { + right: 0.4em; + top: 1.8em; +} +.ath-android { + right: 1.5em; + top: 1.8em; +} +/* close icon */ +.ath-container:before { + content: ''; + position: relative; + display: block; + float: right; + margin: -0.7em -0.6em 0 0.5em; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAMAAABmmnOVAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAeHAAAHhwFd+hRDAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAHVQTFRFAAAAOTk5MzMzOzs7Nzc3QUFBQEBAPz8/Pj4+QUFBQEBAPz8/Pj4+QUFBQEBAPz8/QUFBPj4+Pz8/Pz8/Pj4+Pz8/Pz8/Pz8/Pj4+Pz8/Pj4+Pz8/Pz8/Pz8/Pz8/Pz8/Pj4+Pz8/Pz8/Pz8/Pz8/QEBAPz8/n3QmjwAAACZ0Uk5TAAkKDQ4zODk6OzxBQkNERUusrbG0tba7vL3Excbu8fL19fb3+PgucqJgAAACqklEQVR42sXc23LCIBAGYKy2pgft0WpP2vTA+z9i0+goCZAs7O7P3oWZTL5ZYAh7sca0MXmYG3jM7yfu4/TV1jdow01tX6cdg4UrGoN1FNM3a+GK1nBSzPYGrOJgsPZt1hrerYUrjoa9wjHgFI7B2veZWVk3tpCdWm07H30y8+4AIhedPFj7cW7wioABrggawIqIAaroGbYXzlGCUvQNnc0IUgwaQIoRA0QxagAoCAZ1BcmgrCAaVBVkg6IiwaCmSDIoKRINKopkg4IiwyCuyDIIKzINoopsg6CCYRBTsAxCCqZBRLGo2RcrtkLAwFaIGJgKIQNLIWZgKAQN2QpRg1dKoCmEDVkKcUOGQsGQrFAxJCqUDEkKNUOCQtFAVqgaiAplg69YFDAQFADDqAJiGFGADI1iF1XADAOKvqHSLApHFFBDRAE2BBVwQ0BRwOApfn8LGDxFEcOQAmeIK5CGmAJrCCvQBq8A8r9Zrw08qp6irvAGs/zpIr4XBQxf3nQsyhvwipABrQgbsIqYAamIG3CKnqH+LKDoGXbVwD84zDB4E4AZ4IqgAayIGKCKqMGYS5RiwOArlgUMnuJrWcAAUYwaAAqCQV1BMigriAZVBdmgqEgwqCmSDEqKRIOKItmgoMgwiCv6hkvaa6KKTIOoItsgqGAYxBQsg5CCaRBRsA0CCgEDWyFiYCqEDCyFmIGhEDRkK0QNmQphQ5ZC3JChUDAkK1QMiQolQ5JCzZCguNUzkBV3P4oGokLZQFKoGwgKgGFUATGMKECGQQXMYMxVTAE0RBVQQ0QBNgQVcENI8QwoBo8cUiszWYPz4OVi3bQ9cBQoQ0exblsvTDZwg6PYHNo/tE0XmvVwa4BxWBentgtnL+A8HHPxcnYaaBRoQ6twDY3iEW5oFI8Hwx/QxSE448b+MwAAAABJRU5ErkJggg==); + background-color: rgba(255, 255, 255, 0.8); + -webkit-background-size: 50% 50%; + background-size: 50%; + background-repeat: no-repeat; + background-position: 50%; + width: 2.7em; + height: 2.7em; + text-align: center; + overflow: hidden; + color: #a33; + z-index: 2147483642; +} +.ath-container.ath-icon:before { + position: absolute; + top: 0; + right: 0; + margin: 0; + float: none; +} +.ath-mandatory .ath-container:before { + display: none; +} +.ath-container.ath-android:before { + float: left; + margin: -0.7em 0.5em 0 -0.6em; +} +.ath-container.ath-android.ath-icon:before { + position: absolute; + right: auto; + left: 0; + margin: 0; + float: none; +} +/* applied only if the application icon is shown */ +.ath-action-icon { + display: inline-block; + vertical-align: middle; + background-position: 50%; + background-repeat: no-repeat; + text-indent: -9999em; + overflow: hidden; +} +.ath-android .ath-action-icon { + width: 1.2em; + height: 1.8em; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAADcBAMAAAAig/QJAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAFtDAABbQwH5xg68AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAB5QTFRFAAAA////cXFxaWlp////ZmZmnJycoaGhpqam////1D9b6wAAAAV0Uk5TAAgJERExZxYzAAAAYklEQVRYw+3WoQ2AUBAE0SsBOiBUQEIDCArA4FFoHBaJxNItFYz/x5+xz282VmwJTdM0rRzbsS1e7Pm9zdgUVn491rkFmqZpSezEjqo/Sos1HoAEjdjgFmiapiWxG7tq/igfnYteFlnOWZEAAAAASUVORK5CYII=); + -webkit-background-size: auto 100%; + background-size: auto 100%; +} +.ath-ios7 .ath-action-icon, +.ath-ios8 .ath-action-icon { + width: 1.6em; + height: 1.6em; + background-image: url(data:image/png;base64,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); + margin-top: -0.3em; + -webkit-background-size: auto 100%; + background-size: auto 100%; +} +.ath-ios6 .ath-action-icon { + width: 1.8em; + height: 1.8em; + background-image: url(data:image/png;base64,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); + margin-bottom: 0.4em; + -webkit-background-size: 100% auto; + background-size: 100% auto; +} +.ath-container p { + margin: 0; + padding: 0; + position: relative; + z-index: 2147483642; + text-shadow: 0 0.1em 0 #fff; + font-size: 1.1em; +} +.ath-ios.ath-phone:after { + content: ''; + background: #eee; + position: absolute; + width: 2em; + height: 2em; + bottom: -0.9em; + left: 50%; + margin-left: -1em; + -webkit-transform: scaleX(0.9) rotate(45deg); + -ms-transform: scaleX(0.9) rotate(45deg); + transform: scaleX(0.9) rotate(45deg); + -webkit-box-shadow: 0.2em 0.2em 0 #d1d1d1; + box-shadow: 0.2em 0.2em 0 #d1d1d1; +} +.ath-ios.ath-tablet:after { + content: ''; + background: #eee; + position: absolute; + width: 2em; + height: 2em; + top: -0.9em; + left: 50%; + margin-left: -1em; + -webkit-transform: scaleX(0.9) rotate(45deg); + -ms-transform: scaleX(0.9) rotate(45deg); + transform: scaleX(0.9) rotate(45deg); + z-index: 2147483641; +} +.ath-android:after { + content: ''; + background: #eee; + background: -webkit-linear-gradient(-45deg, rgba(238, 238, 238, 0) 0%, rgba(238, 238, 238, 0) 50%, #eeeeee 50%, #eeeeee 100%); + position: absolute; + width: 2em; + height: 2em; + top: -1.5em; + right: 0; +} +.ath-application-icon { + position: relative; + padding: 0; + border: 0; + margin: 0 auto 0.2em auto; + height: 4.8em; + width: 4.8em; + z-index: 2147483642; +} +.ath-container.ath-ios .ath-application-icon { + border-radius: 1em; + -webkit-box-shadow: 0 0.2em 0.4em rgba(0, 0, 0, 0.3), inset 0 0.07em 0 rgba(255, 255, 255, 0.5); + box-shadow: 0 0.2em 0.4em rgba(0, 0, 0, 0.3), inset 0 0.07em 0 rgba(255, 255, 255, 0.5); + margin: 0 auto 0.4em auto; +} +@media only screen and (orientation: landscape) { + .ath-container.ath-phone { + width: 24em; + } + .ath-ios.ath-phone { + margin-left: -12em; + } + .ath-ios6:after { + left: 39%; + } + .ath-ios8.ath-phone { + left: auto; + bottom: auto; + right: 0.4em; + top: 1.8em; + } + .ath-ios8.ath-phone:after { + bottom: auto; + top: -0.9em; + left: 68%; + z-index: 2147483641; + -webkit-box-shadow: none; + box-shadow: none; + } +} +/* ========================================================================== + Component: uCheck Plugin + ============================================================================ */ +.am-checkbox, +.am-radio { + margin-bottom: 12px; + padding-left: 25px; + position: relative; + -webkit-transition: color .25s linear; + transition: color .25s linear; + font-size: 14px; + line-height: 1.5; +} +label.am-checkbox, +label.am-radio { + font-weight: normal; +} +.am-ucheck-icons { + color: #999999; + display: block; + height: 20px; + top: 0; + left: 0; + position: absolute; + width: 20px; + text-align: center; + line-height: 21px; + font-size: 18px; + cursor: pointer; +} +.am-checkbox .am-icon-checked, +.am-radio .am-icon-checked, +.am-checkbox .am-icon-unchecked, +.am-radio .am-icon-unchecked { + position: absolute; + left: 0; + top: 0; + display: inline-table; + margin: 0; + background-color: transparent; + -webkit-transition: color .25s linear; + transition: color .25s linear; +} +.am-checkbox .am-icon-checked:before, +.am-radio .am-icon-checked:before, +.am-checkbox .am-icon-unchecked:before, +.am-radio .am-icon-unchecked:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.am-checkbox .am-icon-checked, +.am-radio .am-icon-checked { + opacity: 0; +} +.am-checkbox .am-icon-checked:before { + content: "\f046"; +} +.am-checkbox .am-icon-unchecked:before { + content: "\f096"; +} +.am-radio .am-icon-checked:before { + content: "\f192"; +} +.am-radio .am-icon-unchecked:before { + content: "\f10c"; +} +.am-ucheck-checkbox, +.am-ucheck-radio { + position: absolute; + left: 0; + top: 0; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + opacity: 0; + outline: none !important; +} +.am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled) + .am-ucheck-icons, +.am-ucheck-radio:hover:not(.am-nohover):not(:disabled) + .am-ucheck-icons { + color: #0e90d2; +} +.am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-ucheck-radio:checked + .am-ucheck-icons { + color: #0e90d2; +} +.am-ucheck-checkbox:checked + .am-ucheck-icons .am-icon-unchecked, +.am-ucheck-radio:checked + .am-ucheck-icons .am-icon-unchecked { + opacity: 0; +} +.am-ucheck-checkbox:checked + .am-ucheck-icons .am-icon-checked, +.am-ucheck-radio:checked + .am-ucheck-icons .am-icon-checked { + opacity: 1; +} +.am-ucheck-checkbox:disabled + .am-ucheck-icons, +.am-ucheck-radio:disabled + .am-ucheck-icons { + cursor: default; + color: #d8d8d8; +} +.am-ucheck-checkbox:disabled:checked + .am-ucheck-icons .am-icon-unchecked, +.am-ucheck-radio:disabled:checked + .am-ucheck-icons .am-icon-unchecked { + opacity: 0; +} +.am-ucheck-checkbox:disabled:checked + .am-ucheck-icons .am-icon-checked, +.am-ucheck-radio:disabled:checked + .am-ucheck-icons .am-icon-checked { + opacity: 1; + color: #d8d8d8; +} +.am-checkbox.am-secondary .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-secondary .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-checkbox.am-secondary .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-secondary .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons { + color: #3bb4f2; +} +.am-checkbox.am-secondary .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-radio.am-secondary .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-checkbox.am-secondary .am-ucheck-radio:checked + .am-ucheck-icons, +.am-radio.am-secondary .am-ucheck-radio:checked + .am-ucheck-icons { + color: #3bb4f2; +} +.am-checkbox.am-success .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-success .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-checkbox.am-success .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-success .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons { + color: #5eb95e; +} +.am-checkbox.am-success .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-radio.am-success .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-checkbox.am-success .am-ucheck-radio:checked + .am-ucheck-icons, +.am-radio.am-success .am-ucheck-radio:checked + .am-ucheck-icons { + color: #5eb95e; +} +.am-checkbox.am-warning .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-warning .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-checkbox.am-warning .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-warning .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons { + color: #f37b1d; +} +.am-checkbox.am-warning .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-radio.am-warning .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-checkbox.am-warning .am-ucheck-radio:checked + .am-ucheck-icons, +.am-radio.am-warning .am-ucheck-radio:checked + .am-ucheck-icons { + color: #f37b1d; +} +.am-checkbox.am-danger .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-danger .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-checkbox.am-danger .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-danger .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons { + color: #dd514c; +} +.am-checkbox.am-danger .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-radio.am-danger .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-checkbox.am-danger .am-ucheck-radio:checked + .am-ucheck-icons, +.am-radio.am-danger .am-ucheck-radio:checked + .am-ucheck-icons { + color: #dd514c; +} +.am-field-error + .am-ucheck-icons { + color: #dd514c; +} +.am-field-valid + .am-ucheck-icons { + color: #5eb95e; +} +.am-input-group-label .am-radio, +.am-input-group-label .am-checkbox { + margin: -2px 0; + padding-left: 15px; +} +.am-form-inline .am-checkbox, +.am-form-inline .am-radio { + padding-left: 24px; +} +/* ========================================================================== + Component: Selected Plugin + ============================================================================ */ +.am-selected-btn { + text-align: right; + width: 200px; +} +.am-selected-btn.am-btn-default { + background: none; +} +.am-selected-header { + height: 45px; + background-color: #f2f2f2; + border-bottom: 1px solid #ddd; + display: none; +} +.am-selected-status { + text-align: left; + width: 100%; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-selected-content { + padding: 10px 0; +} +.am-selected-search { + padding: 0 10px 10px; +} +.am-selected-search .am-form-field { + padding: .5em; +} +.am-selected-list { + margin: 0; + padding: 0; + list-style: none; + font-size: 1.5rem; +} +.am-selected-list li { + position: relative; + cursor: pointer; + padding: 5px 10px; + -webkit-transition: background-color 0.15s; + transition: background-color 0.15s; +} +.am-selected-list li:hover { + background-color: #f8f8f8; +} +.am-selected-list li:hover .am-icon-check { + opacity: .6; +} +.am-selected-list li.am-checked .am-icon-check { + opacity: 1; + color: #0e90d2; +} +.am-selected-list .am-selected-list-header { + margin-top: 8px; + font-size: 1.3rem; + color: #999999; + border-bottom: 1px solid #e5e5e5; + cursor: default; +} +.am-selected-list .am-selected-list-header:hover { + background: none; +} +.am-selected-list .am-selected-list-header:first-child { + margin-top: 0; +} +.am-selected-list .am-selected-text { + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + margin-right: 30px; +} +.am-selected-list .am-icon-check { + position: absolute; + right: 8px; + top: 5px; + color: #999999; + opacity: 0; + -webkit-transition: opacity .15s; + transition: opacity .15s; +} +.am-selected-hint { + line-height: 1.2; + color: #dd514c; +} +.am-selected-hint:not(:empty) { + margin-top: 10px; + border-top: 1px solid #e5e5e5; + padding: 10px 10px 0; +} +/* ========================================================================== + Component: JS Plugins helpers + ============================================================================ */ +.am-fade { + opacity: 0; + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear; +} +.am-fade.am-in { + opacity: 1; +} +.am-collapse { + display: none; +} +.am-collapse.am-in { + display: block; +} +tr.am-collapse.am-in { + display: table-row; +} +tbody.am-collapse.am-in { + display: table-row-group; +} +.am-collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height .3s ease; + transition: height .3s ease; +} +.am-sticky { + position: fixed !important; + z-index: 1010; + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; +} +[data-am-sticky][class*="am-animation-"] { + -webkit-animation-duration: .2s; + animation-duration: .2s; +} +.am-dimmer-active { + overflow: hidden; +} +.am-dimmer { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: none; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.6); + z-index: 1100; + opacity: 0; +} +.am-dimmer.am-active { + opacity: 1; +} +[data-am-collapse] { + cursor: pointer; +} +.am-datepicker { + top: 0; + left: 0; + border-radius: 0; + background: #ffffff; + -webkit-box-shadow: 0 0 10px #ccc; + box-shadow: 0 0 10px #ccc; + padding-bottom: 10px; + margin-top: 10px; + width: 238px; + color: #555555; + display: none; +} +.am-datepicker > div { + display: none; +} +.am-datepicker table { + width: 100%; +} +.am-datepicker tr.am-datepicker-header { + font-size: 1.6rem; + color: #ffffff; + background: #3bb4f2; +} +.am-datepicker td, +.am-datepicker th { + text-align: center; + font-weight: normal; + cursor: pointer; +} +.am-datepicker th { + height: 48px; +} +.am-datepicker td { + font-size: 1.4rem; +} +.am-datepicker td.am-datepicker-day { + height: 34px; + width: 34px; +} +.am-datepicker td.am-datepicker-day:hover { + background: #f0f0f0; + height: 34px; + width: 34px; +} +.am-datepicker td.am-datepicker-day.am-disabled { + cursor: no-drop; + color: #999999; + background: #fafafa; +} +.am-datepicker td.am-datepicker-old, +.am-datepicker td.am-datepicker-new { + color: #89d7ff; +} +.am-datepicker td.am-active, +.am-datepicker td.am-active:hover { + border-radius: 0; + color: #0084c7; + background: #f0f0f0; +} +.am-datepicker td span { + display: block; + width: 79.33333333px; + height: 40px; + line-height: 40px; + float: left; + cursor: pointer; +} +.am-datepicker td span:hover { + background: #f0f0f0; +} +.am-datepicker td span.am-active { + color: #0084c7; + background: #f0f0f0; +} +.am-datepicker td span.am-datepicker-old { + color: #89d7ff; +} +.am-datepicker .am-datepicker-dow { + height: 40px; + color: #0c80ba; +} +.am-datepicker-caret { + display: block!important; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-bottom: 7px solid #3bb4f2; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-top: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + position: absolute; + top: -7px; + left: 6px; +} +.am-datepicker-right .am-datepicker-caret { + left: auto; + right: 7px; +} +.am-datepicker-up .am-datepicker-caret { + top: auto; + bottom: -7px; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-top: 7px solid #ffffff; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); +} +.am-datepicker-select { + height: 34px; + line-height: 34px; + text-align: center; + -webkit-transition: background-color 300ms ease-out; + transition: background-color 300ms ease-out; +} +.am-datepicker-select:hover { + background: rgba(154, 217, 248, 0.5); + color: #0c80ba; +} +.am-datepicker-prev, +.am-datepicker-next { + width: 34px; + height: 34px; +} +.am-datepicker-prev-icon, +.am-datepicker-next-icon { + width: 34px; + height: 34px; + line-height: 34px; + display: inline-block; + -webkit-transition: background-color 300ms ease-out; + transition: background-color 300ms ease-out; +} +.am-datepicker-prev-icon:hover, +.am-datepicker-next-icon:hover { + background: rgba(154, 217, 248, 0.5); + color: #0c80ba; +} +.am-datepicker-prev-icon:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; +} +.am-datepicker-next-icon:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f054"; +} +.am-datepicker-dropdown { + position: absolute; + z-index: 1000; +} +@media only screen and (max-width: 640px) { + .am-datepicker { + width: 100%; + } + .am-datepicker td span { + width: 33.33%; + } + .am-datepicker-caret { + display: none!important; + } + .am-datepicker-prev, + .am-datepicker-next { + width: 44px; + height: 44px; + } +} +.am-datepicker-success tr.am-datepicker-header { + background: #5eb95e; +} +.am-datepicker-success td.am-datepicker-day.am-disabled { + color: #999999; +} +.am-datepicker-success td.am-datepicker-old, +.am-datepicker-success td.am-datepicker-new { + color: #94df94; +} +.am-datepicker-success td.am-active, +.am-datepicker-success td.am-active:hover { + color: #1b961b; +} +.am-datepicker-success td span.am-datepicker-old { + color: #94df94; +} +.am-datepicker-success td span.am-active { + color: #1b961b; +} +.am-datepicker-success .am-datepicker-caret { + border-bottom-color: #5eb95e; +} +.am-datepicker-success .am-datepicker-dow { + color: #367b36; +} +.am-datepicker-success .am-datepicker-select:hover, +.am-datepicker-success .am-datepicker-prev-icon:hover, +.am-datepicker-success .am-datepicker-next-icon:hover { + background: rgba(165, 216, 165, 0.5); + color: #367b36; +} +.am-datepicker-danger tr.am-datepicker-header { + background: #dd514c; +} +.am-datepicker-danger td.am-datepicker-day.am-disabled { + color: #999999; +} +.am-datepicker-danger td.am-datepicker-old, +.am-datepicker-danger td.am-datepicker-new { + color: #f59490; +} +.am-datepicker-danger td.am-active, +.am-datepicker-danger td.am-active:hover { + color: #c10802; +} +.am-datepicker-danger td span.am-datepicker-old { + color: #f59490; +} +.am-datepicker-danger td span.am-active { + color: #c10802; +} +.am-datepicker-danger .am-datepicker-caret { + border-bottom-color: #dd514c; +} +.am-datepicker-danger .am-datepicker-dow { + color: #a4241f; +} +.am-datepicker-danger .am-datepicker-select:hover, +.am-datepicker-danger .am-datepicker-prev-icon:hover, +.am-datepicker-danger .am-datepicker-next-icon:hover { + background: rgba(237, 164, 162, 0.5); + color: #a4241f; +} +.am-datepicker-warning tr.am-datepicker-header { + background: #f37b1d; +} +.am-datepicker-warning td.am-datepicker-day.am-disabled { + color: #999999; +} +.am-datepicker-warning td.am-datepicker-old, +.am-datepicker-warning td.am-datepicker-new { + color: #ffad6d; +} +.am-datepicker-warning td.am-active, +.am-datepicker-warning td.am-active:hover { + color: #aa4b00; +} +.am-datepicker-warning td span.am-datepicker-old { + color: #ffad6d; +} +.am-datepicker-warning td span.am-active { + color: #aa4b00; +} +.am-datepicker-warning .am-datepicker-caret { + border-bottom-color: #f37b1d; +} +.am-datepicker-warning .am-datepicker-dow { + color: #a14c09; +} +.am-datepicker-warning .am-datepicker-select:hover, +.am-datepicker-warning .am-datepicker-prev-icon:hover, +.am-datepicker-warning .am-datepicker-next-icon:hover { + background: rgba(248, 180, 126, 0.5); + color: #a14c09; +} +/* ========================================================================== + Component: Print + ============================================================================ */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + /* Black prints faster: h5bp.com/s */ + -webkit-box-shadow: none !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) "] "; + } + /** + * Don't show links that are fragment identifiers, + * or use the `javascript:` pseudo protocol + */ + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group + /* h5bp.com/t */ + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + margin: 0.5cm; + } + select { + background: #fff !important; + } + .am-topbar { + display: none; + } + .am-table td, + .am-table th { + background-color: #fff !important; + } + .am-table { + border-collapse: collapse !important; + } + .am-table-bordered th, + .am-table-bordered td { + border: 1px solid #ddd !important; + } +} +/* print helper classes */ +.am-print-block { + display: none !important; +} +@media print { + .am-print-block { + display: block !important; + } +} +.am-print-inline { + display: none !important; +} +@media print { + .am-print-inline { + display: inline !important; + } +} +.am-print-inline-block { + display: none !important; +} +@media print { + .am-print-inline-block { + display: inline-block !important; + } +} +@media print { + .am-print-hide { + display: none !important; + } +} +.lte9 #nprogress .nprogress-spinner { + display: none !important; +} +.lte8 .am-dimmer { + background-color: #000; + filter: alpha(opacity=60); +} +.lte8 .am-modal-actions { + display: none; +} +.lte8 .am-modal-actions.am-modal-active { + display: block; +} +.lte8 .am-offcanvas.am-active { + background: #000; +} +.lte8 .am-popover .am-popover-caret { + border: 8px solid transparent; +} +.lte8 .am-popover-top .am-popover-caret { + border-top: 8px solid #333333; + border-bottom: none; +} +.lte8 .am-popover-left .am-popover-caret { + right: -8px; + margin-top: -6px; + border-left: 8px solid #333333; + border-right: none; +} +.lte8 .am-popover-right .am-popover-caret { + left: -8px; + margin-top: -6px; + border-right: 8px solid #333333; + border-left: none; +} +.am-accordion-item { + margin: 0; +} +.am-accordion-title { + font-weight: normal; + cursor: pointer; +} +.am-accordion-bd { + margin: 0 !important; + padding: 0 !important; + border: none !important; +} +.am-accordion-content { + margin-top: 0; + padding: 0.8rem 1rem 1.2rem; + font-size: 1.4rem; +} +/** + * Accordion Theme: default + * Author: Minwe (minwe@yunshipei.com) + */ +.am-accordion-default { + margin: 1rem; + border-radius: 2px; + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); +} +.am-accordion-default .am-accordion-item { + border-top: 1px solid rgba(0, 0, 0, 0.05); +} +.am-accordion-default .am-accordion-item:first-child { + border-top: none; +} +.am-accordion-default .am-accordion-title { + color: rgba(0, 0, 0, 0.6); + -webkit-transition: background-color 0.2s ease-out; + transition: background-color 0.2s ease-out; + padding: .8rem 1rem; +} +.am-accordion-default .am-accordion-title:before { + content: "\f0da"; + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transition: -webkit-transform .2s ease; + transition: transform .2s ease; + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); + margin-right: 5px; +} +.am-accordion-default .am-accordion-title:hover { + color: #0e90d2; +} +.am-accordion-default .am-accordion-content { + color: #666666; +} +.am-accordion-default .am-active .am-accordion-title { + background-color: #eeeeee; + color: #0e90d2; +} +.am-accordion-default .am-active .am-accordion-title:before { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +/** + * Accordion Theme: basic + * Author: Minwe (minwe@yunshipei.com) + */ +.am-accordion-basic { + margin: 1rem; +} +.am-accordion-basic .am-accordion-title { + color: #333333; + -webkit-transition: background-color 0.2s ease-out; + transition: background-color 0.2s ease-out; + padding: .8rem 0 0; +} +.am-accordion-basic .am-accordion-title:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f0da"; + -webkit-transition: -webkit-transform .2s ease; + transition: transform .2s ease; + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); + margin-right: .5rem; +} +.am-accordion-basic .am-accordion-content { + color: #666666; +} +.am-accordion-basic .am-active .am-accordion-title { + color: #0e90d2; +} +.am-accordion-basic .am-active .am-accordion-title:before { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +/** + * Accordion Theme: gapped + * Author: Minwe (minwe@yunshipei.com) + */ +.am-accordion-gapped { + margin: .5rem 1rem; +} +.am-accordion-gapped .am-accordion-item { + border: 1px solid #dedede; + border-bottom: none; + margin: .5rem 0; +} +.am-accordion-gapped .am-accordion-item.am-active { + border-bottom: 1px solid #dedede; +} +.am-accordion-gapped .am-accordion-title { + color: rgba(0, 0, 0, 0.6); + -webkit-transition: background-color 0.15s ease-out; + transition: background-color 0.15s ease-out; + border-bottom: 1px solid #dedede; + padding: 0.8rem 2rem 0.8rem 1rem; + position: relative; +} +.am-accordion-gapped .am-accordion-title:after { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f105"; + -webkit-transition: -webkit-transform .2s linear; + transition: transform .2s linear; + position: absolute; + right: 10px; + top: 50%; + margin-top: -0.8rem; +} +.am-accordion-gapped .am-accordion-title:hover { + color: rgba(0, 0, 0, 0.8); +} +.am-accordion-gapped .am-accordion-content { + color: #666666; +} +.am-accordion-gapped .am-active .am-accordion-title { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.8); +} +.am-accordion-gapped .am-active .am-accordion-title:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +/** + * Accordion Theme: one + * Author: hzp (hzp@yunshipei.com) + */ +.am-accordion-one { + margin: 0 10px 0 10px; +} +.am-accordion-one .am-accordion-item { + border: 1px solid #dfdfdf; + margin: .5rem 0; + background: #ffffff; +} +.am-accordion-one .am-accordion-title { + color: #555555; + -webkit-transition: background-color 0.2s ease-out; + transition: background-color 0.2s ease-out; + padding: 0.8rem 2rem 0.8rem 1rem; + position: relative; +} +.am-accordion-one .am-accordion-title:after { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f105"; + -webkit-transition: -webkit-transform .2s linear; + transition: transform .2s linear; + position: absolute; + right: 10px; + top: 50%; + margin-top: -0.8rem; +} +.am-accordion-one .am-accordion-title:hover { + color: #15afef; +} +.am-accordion-one .am-accordion-content { + color: #666666; +} +.am-accordion-one .am-active .am-accordion-title { + background-color: #f8f8f8; + color: #15afef; +} +.am-accordion-one .am-active .am-accordion-title:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +/** + * Divider Theme: default + */ +.am-divider-default { + height: 1px; + border: none; + margin: 1.5rem auto; + overflow: hidden; + background-color: #dddddd; + clear: both; +} +/** + * Divider Theme: one + */ +.am-divider-one { + height: 10px; + border: none; + overflow: hidden; + clear: both; + margin: 0; +} +.am-figure-zoomable { + position: relative; + cursor: pointer; +} +.am-figure-zoomable:after { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f00e"; + position: absolute; + top: 1rem; + right: 1rem; + color: #999999; + font-size: 1.6rem; + -webkit-transition: all 0.2s; + transition: all 0.2s; +} +.am-figure-zoomable:hover:after { + color: #eeeeee; +} +.am-figure-default { + margin: 10px; +} +.am-figure-default img { + display: block; + max-width: 100%; + height: auto; + padding: 2px; + border: 1px solid #eeeeee; + margin: 10px auto; +} +.am-figure-default figcaption { + text-align: center; + font-size: 1.4rem; + margin-bottom: 15px; + color: #333333; +} +/** + * Figure theme: one + */ +.am-figure-one { + margin: 0 10px; + background: #ffffff; +} +.am-figure-one img { + display: block; + max-width: 100%; + height: auto; + padding: 2px; + border: 1px solid #dfdfdf; +} +.am-figure-one figcaption { + text-align: center; + font-size: 1.4rem; + padding: 10px 0; + color: #888888; +} +.am-footer { + text-align: center; + padding: 1em 0; + font-size: 1.6rem; +} +.am-footer .am-switch-mode-ysp { + cursor: pointer; +} +.am-footer .am-footer-text { + margin-top: 10px; + font-size: 14px; +} +.am-footer .am-footer-text-left { + text-align: left; + padding-left: 10px; +} +.am-modal-footer-hd { + padding-bottom: 10px; +} +/** + * Footer Theme: default + */ +.am-footer-default { + background-color: #ffffff; +} +.am-footer-default a { + color: #555555; +} +.am-footer-default .am-footer-switch { + margin-bottom: 10px; + font-weight: bold; +} +.am-footer-default .am-footer-ysp { + color: #555555; + cursor: pointer; +} +.am-footer-default .am-footer-divider { + color: #cccccc; +} +.am-footer-default .am-footer-desktop { + color: #0e90d2; +} +.am-footer-default .am-footer-miscs { + color: #999999; + font-size: 13px; +} +.am-footer-default .am-footer-miscs p { + margin: 5px 0; +} +@media only screen and (min-width:641px) { + .am-footer-default .am-footer-miscs p { + display: inline-block; + margin: 5px; + } +} +/** + * Footer Theme: one + */ +.am-footer-one a { + color: #15afef; + font-weight: bold; +} +.am-footer-one .am-footer-switch { + margin-bottom: 10px; +} +.am-footer-one .am-footer-ysp { + color: #15afef; + cursor: pointer; +} +.am-footer-one .am-footer-divider { + color: #999999; +} +.am-footer-one .am-footer-desktop { + font-weight: normal; + color: #555555; +} +.am-footer-one .am-footer-miscs { + color: #7c7c7c; + overflow: hidden; + padding: 0 10px; + font-size: 14px; +} +.am-footer-one .am-footer-miscs ul, +.am-footer-one .am-footer-miscs li { + padding-left: 0; + list-style: none; +} +.am-footer-one .am-footer-miscs p { + margin: 4px 0; +} +.am-footer-one .am-footer-miscs a { + font-weight: normal; + color: #555555; + margin: 0 1px; +} +.am-footer-one .am-footer-miscs img { + display: block; + max-width: 100%; + margin: 0 auto 2px auto; +} +@media only screen and (min-width:641px) { + .am-footer-one .am-footer-miscs p { + display: inline-block; + margin: 5px; + } +} +.am-gallery { + padding: 5px 5px 0 5px; + list-style: none; +} +.am-gallery h3 { + margin: 0; +} +[data-am-gallery*='pureview'] img { + cursor: pointer; +} +/** + * Gallery Theme: default + * Author: Minwe (minwe@yunshipei.com) + */ +.am-gallery-default > li { + padding: 5px; +} +.am-gallery-default .am-gallery-item img { + width: 100%; + height: auto; +} +.am-gallery-default .am-gallery-title { + margin-top: 10px; + font-weight: normal; + font-size: 1.4rem; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #555555; +} +.am-gallery-default .am-gallery-desc { + color: #999999; + font-size: 1.2rem; +} +/** + * Gallery Theme: overlay + * Author: Minwe (minwe@yunshipei.com) + */ +.am-gallery-overlay > li { + padding: 5px; +} +.am-gallery-overlay .am-gallery-item { + position: relative; +} +.am-gallery-overlay .am-gallery-item img { + width: 100%; + height: auto; +} +.am-gallery-overlay .am-gallery-title { + font-weight: normal; + font-size: 1.4rem; + color: #ffffff; + position: absolute; + bottom: 0; + width: 100%; + background-color: rgba(0, 0, 0, 0.5); + text-indent: 5px; + height: 30px; + line-height: 30px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-gallery-overlay .am-gallery-desc { + display: none; +} +/** + * Accordion Theme: bordered + * Author: Minwe (minwe@yunshipei.com) + */ +.am-gallery-bordered > li { + padding: 5px; +} +.am-gallery-bordered .am-gallery-item { + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.35); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.35); + padding: 5px; +} +.am-gallery-bordered .am-gallery-item img { + width: 100%; + height: auto; +} +.am-gallery-bordered .am-gallery-title { + margin-top: 10px; + font-weight: normal; + font-size: 1.4rem; + color: #555555; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-gallery-bordered .am-gallery-desc { + color: #999999; + font-size: 1.2rem; +} +/** + * Gallery Theme: imgbordered + * Author: Minwe (minwe@yunshipei.com) + */ +.am-gallery-imgbordered > li { + padding: 5px; +} +.am-gallery-imgbordered .am-gallery-item img { + width: 100%; + height: auto; + border: 3px solid #FFF; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.35); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.35); +} +.am-gallery-imgbordered .am-gallery-title { + margin-top: 10px; + font-weight: normal; + font-size: 1.4rem; + color: #555555; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-gallery-imgbordered .am-gallery-desc { + color: #999999; + font-size: 1.2rem; +} +/** + * Gallery Theme: one + * Author: hzp (hzp@yunshipei.com) + */ +.am-gallery-one { + padding: 0 5px; + background-color: #ffffff; +} +.am-gallery-one > li { + padding: 5px; +} +.am-gallery-one .am-gallery-item { + padding: 5px; +} +.am-gallery-one .am-gallery-item img { + width: 100%; + height: auto; +} +.am-gallery-one .am-gallery-title { + line-height: 34px; + font-weight: normal; + font-size: 1.4rem; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #555555; +} +.am-gallery-one .am-gallery-desc { + color: #999999; + font-size: 1.2rem; +} +.am-gallery-one .am-gallery-more { + width: 100%; +} +.am-gallery-one .am-gallery-more a { + background-color: #dfdfdf; + color: #555555; + height: 35px; + line-height: 35px; + font-size: 1.4rem; + display: block; + text-align: center; +} +.am-gotop a { + display: inline-block; + text-decoration: none; +} +/** + * Gotop Theme: default + */ +.am-gotop-default { + text-align: center; + margin: 10px 0; +} +.am-gotop-default a { + background-color: #0e90d2; + padding: .5em 1.5em; + border-radius: 0; + color: #ffffff; +} +.am-gotop-default a img { + display: none; +} +/** + * Gotop Theme: fixed + */ +.am-gotop-fixed { + position: fixed; + right: 10px; + bottom: 10px; + z-index: 1010; + opacity: 0; + width: 32px; + min-height: 32px; + overflow: hidden; + border-radius: 0; + text-align: center; +} +.am-gotop-fixed.am-active { + opacity: .9; +} +.am-gotop-fixed.am-active:hover { + opacity: 1; +} +.am-gotop-fixed a { + display: block; +} +.am-gotop-fixed .am-gotop-title { + display: none; +} +.am-gotop-fixed .am-gotop-icon-custom { + display: inline-block; + max-width: 30px; + vertical-align: middle; +} +.am-gotop-fixed .am-gotop-icon { + width: 100%; + line-height: 32px; + background-color: #555555; + vertical-align: middle; + color: #dddddd; +} +.am-gotop-fixed .am-gotop-icon:hover { + color: #ffffff; +} +.am-with-fixed-navbar .am-gotop-fixed { + bottom: 60px; +} +/** + * Gotop Theme: one + */ +.am-gotop-one { + position: fixed; + right: 10px; + bottom: 10px; + z-index: 1005; + width: 32px; + height: 32px; + background-color: #ffffff; + border-radius: 0; + border: 1px solid #15afef; + text-align: center; +} +.am-gotop-one .am-gotop-title { + display: none; +} +.am-gotop-one .am-gotop-icon { + vertical-align: middle; + display: inline-block; + color: #15afef; +} +.am-with-fixed-navbar .am-gotop-one { + bottom: 60px; +} +.am-header { + position: relative; + width: 100%; + height: 49px; + line-height: 49px; + padding: 0 10px; +} +.am-header h1 { + margin-top: 0; + margin-bottom: 0; +} +.am-header .am-header-title { + margin: 0 30%; + font-size: 2rem; + font-weight: normal; + text-align: center; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-header .am-header-title img { + margin-top: 12px; + height: 25px; + vertical-align: top; +} +.am-header .am-header-nav { + position: absolute; + top: 0; +} +.am-header .am-header-nav img { + height: 16px; + width: auto; + vertical-align: middle; +} +.am-header .am-header-left { + left: 10px; +} +.am-header .am-header-right { + right: 10px; +} +.am-header-fixed { + position: fixed; + top: 0; + left: 0; + right: 0; + width: 100%; + z-index: 1010; +} +.am-with-fixed-header { + padding-top: 49px; +} +/** + * Header Theme: default + */ +.am-header-default { + background-color: #0e90d2; +} +.am-header-default .am-header-title { + color: #ffffff; +} +.am-header-default .am-header-title a { + color: #ffffff; +} +.am-header-default .am-header-icon { + font-size: 20px; +} +.am-header-default .am-header-nav { + color: #eeeeee; +} +.am-header-default .am-header-nav > a { + display: inline-block; + min-width: 36px; + text-align: center; + color: #eeeeee; +} +.am-header-default .am-header-nav > a + a { + margin-left: 5px; +} +.am-header-default .am-header-nav .am-btn { + margin-top: 9px; + height: 31px; + padding: 0 0.5em; + line-height: 30px; + font-size: 14px; + vertical-align: top; +} +.am-header-default .am-header-nav .am-btn .am-header-icon { + font-size: inherit; +} +.am-header-default .am-header-nav .am-btn-default { + color: #999999; +} +.am-header-default .am-header-nav-title, +.am-header-default .am-header-nav-title + .am-header-icon { + font-size: 14px; +} +/** + * Header Theme: one + */ +.am-header-one { + background: #ffffff; +} +.am-header-one .am-header-title { + margin: 0 15%; + color: #333333; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-header-one .am-header-title a { + color: #333333; +} +.am-header-one .am-header-title img { + height: 34px; + width: auto; + margin-top: 8px; + vertical-align: top; +} +.am-header-one .am-header-nav > a { + color: #15afef; +} +.am-intro { + position: relative; +} +.am-intro-hd { + position: relative; + height: 45px; + line-height: 45px; +} +.am-intro-title { + font-size: 18px; + margin: 0; + font-weight: bold; +} +.am-intro-more-top { + position: absolute; + right: 10px; + top: 0; + font-size: 1.4rem; +} +.am-intro-bd { + padding-top: 15px; + padding-bottom: 15px; + font-size: 1.4rem; +} +.am-intro-bd p:last-child { + margin-bottom: 0; +} +.am-intro-more-bottom { + clear: both; + text-align: center; +} +.am-intro-more-bottom .am-btn { + font-size: 14px; +} +/** + * Intro Theme: default + */ +.am-intro-default .am-intro-hd { + background-color: #0e90d2; + color: #ffffff; + padding: 0 10px; +} +.am-intro-default .am-intro-hd a { + color: #eeeeee; +} +.am-intro-default .am-intro-right { + padding-left: 0; +} +/** + * Intro Theme: one + */ +.am-intro-one { + padding-bottom: 10px; + background-color: #ffffff; +} +.am-intro-one a { + color: #15afef; +} +.am-intro-one .am-intro-hd { + border-bottom: 1px solid #15afef; + margin-left: 10px; + margin-right: 10px; + line-height: 44px; +} +.am-intro-one .am-intro-title { + color: #333333; + padding-left: 10px; +} +.am-intro-one .am-intro-title:before { + position: absolute; + left: 1px; + top: 10px; + bottom: 10px; + content: ''; + width: 3px; + background-color: #15afef; + display: block; +} +.am-intro-one .am-intro-bd { + color: #555555; +} +.am-intro-one .am-intro-left { + float: left; + display: inline; +} +.am-intro-one .am-intro-right { + display: inline; + padding-left: 0; + font-size: 1.4rem; +} +.am-intro-one .am-intro-right p { + display: inline; + margin: 0; + padding: 0; +} +.am-list-news-hd { + padding-top: 1.2rem; + padding-bottom: 0.8rem; +} +.am-list-news-hd a { + display: block; +} +.am-list-news-hd h2 { + font-size: 1.6rem; + float: left; + margin: 0; + height: 2rem; + line-height: 2rem; +} +.am-list-news-hd h3 { + margin: 0; +} +.am-list-news-hd .am-list-news-more { + font-size: 1.3rem; + height: 2rem; + line-height: 2rem; +} +.am-list .am-list-item-dated a { + padding-right: 80px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-list .am-list-item-dated a::after { + display: none; +} +.am-list .am-list-item-desced a, +.am-list .am-list-item-thumbed a { + padding-right: 0; +} +.am-list-news .am-list-item-hd { + margin: 0; +} +.am-list-date { + position: absolute; + right: 5px; + font-size: 1.3rem; + top: 1.3rem; +} +.am-list-item-desced { + padding-bottom: 1rem; +} +.am-list-item-desced > a { + padding: 1rem 0; +} +.am-list-item-desced .am-list-date { + position: static; +} +.am-list-item-thumbed { + padding-top: 1em; +} +.am-list-news-ft { + text-align: center; +} +/** + * list_news Theme: default + */ +.am-list-news-default { + margin: 10px; +} +.am-list-news-default .am-g { + margin-left: auto; + margin-right: auto; +} +.am-list-news-default .am-list-item-hd { + font-weight: normal; +} +.am-list-news-default .am-list-date { + color: #999999; +} +.am-list-news-default .am-list > li { + border-color: #dedede; +} +.am-list-news-default .am-list .am-list-item-desced { + padding-top: 1rem; + padding-bottom: 1rem; +} +.am-list-news-default .am-list .am-list-item-desced > a { + padding: 0; +} +.am-list-news-default .am-list .am-list-item-desced .am-list-item-text { + margin-top: 0.5rem; + color: #757575; +} +.am-list-news-default .am-list .am-list-item-text { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + line-height: 1.3em; + -webkit-line-clamp: 2; + /* number of lines to show */ + max-height: 2.6em; +} +.am-list-news-default .am-list .am-list-item-thumb-top .am-list-thumb { + padding: 0; + margin-bottom: 0.8rem; +} +.am-list-news-default .am-list .am-list-item-thumb-top .am-list-main { + padding: 0; +} +.am-list-news-default .am-list .am-list-item-thumb-left .am-list-thumb { + padding-left: 0; +} +.am-list-news-default .am-list .am-list-item-desced .am-list-main { + padding: 0; +} +.am-list-news-default .am-list .am-list-item-thumb-right .am-list-thumb { + padding-right: 0; +} +.am-list-news-default .am-list .am-list-item-thumb-bottom-left .am-list-item-hd { + clear: both; + padding-bottom: 0.5rem; +} +.am-list-news-default .am-list .am-list-item-thumb-bottom-left .am-list-thumb { + padding-left: 0; +} +.am-list-news-default .am-list .am-list-item-thumb-bottom-right .am-list-item-hd { + clear: both; + padding-bottom: 0.5rem; +} +.am-list-news-default .am-list .am-list-item-thumb-bottom-right .am-list-thumb { + padding-right: 0; +} +.am-list-news-default .am-list .am-list-thumb img { + width: 100%; + display: block; +} +@media only screen and (max-width: 640px) { + .am-list-news-default .am-list-item-thumb-left .am-list-thumb, + .am-list-news-default .am-list-item-thumb-right .am-list-thumb { + max-height: 80px; + overflow: hidden; + } + .am-list-news-default .am-list-item-thumb-bottom-left .am-list-item-text, + .am-list-news-default .am-list-item-thumb-bottom-right .am-list-item-text { + -webkit-line-clamp: 3; + /* number of lines to show */ + max-height: 3.9em; + } + .am-list-news-default .am-list-item-thumb-bottom-left .am-list-thumb, + .am-list-news-default .am-list-item-thumb-bottom-right .am-list-thumb { + max-height: 60px; + overflow: hidden; + } +} +/** + * list_news Theme: one + * Author: hzp (hzp@yunshipei.com) + */ +.am-list-news-one { + margin: 0 10px; +} +.am-list-news-one .am-list-news-hd { + background: #ffffff; + height: 40px; + line-height: 40px; + border-bottom: 1px solid #15afef; + padding: 0 0 0 10px; + margin: 0; + position: relative; + color: #000000; +} +.am-list-news-one .am-list-news-hd::before { + width: 4px; + height: 30px; + background: #15afef; + display: inline-block; + content: ''; + position: absolute; + top: 5px; + left: 0; +} +.am-list-news-one .am-list-news-hd > a { + color: #000000; + display: inline; +} +.am-list-news-one .am-list-news-hd > a .am-list-news-more { + color: #888888; + padding: 0; + margin-right: 5px; + background: none; + font-size: 1.4rem; + height: 40px; + line-height: 40px; +} +.am-list-news-one .am-list-news-hd h2 { + font-weight: normal; + float: left; + line-height: 40px; + height: 40px; +} +.am-list-news-one .am-list-news-bd { + padding: 0px 5px 4px 5px; + background: #ffffff; +} +.am-list-news-one .am-list { + margin-bottom: 0; +} +.am-list-news-one .am-list > li { + margin: 0; + border: 0; + overflow: hidden; +} +.am-list-news-one .am-list > li > a { + color: #222222; + font-weight: normal; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + height: 30px; + line-height: 30px; + padding: 0; + position: relative; + text-indent: 10px; +} +.am-list-news-one .am-list > li > a:before { + width: 4px; + height: 4px; + background: #15afef; + display: inline-block; + content: ''; + position: absolute; + top: 14px; + left: 0; +} +.am-list-news-one .am-list > li .am-list-date { + color: #666666; + top: 5px; + right: 0; + display: none; +} +.am-list-news-one .am-list > li:last-child { + border-bottom: 0; +} +.am-list-news-one .am-list .am-list-item-dated > a { + color: #222222; +} +.am-list-news-one .am-list .am-list-item-desced { + padding: 3px 0; + border-bottom: 1px dashed #dfdfdf; +} +.am-list-news-one .am-list .am-list-item-desced:before { + display: none; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-item-hd { + font-weight: normal; + font-size: 1.5rem; + margin-bottom: 0; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-item-hd > a:before { + display: none; +} +.am-list-news-one .am-list .am-list-item-desced a.am-list-item-hd { + height: 34px; + line-height: 34px; + padding: 0; + color: #15afef; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + text-indent: 0; +} +.am-list-news-one .am-list .am-list-item-desced a.am-list-item-hd:before { + display: none; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-item-text { + color: #666666; + line-height: 22px; + font-size: 1.4rem; + max-height: none; + margin-bottom: 8px; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-item-text a { + color: #666666; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-main { + padding: 0 5px; + position: relative; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-date { + position: absolute; + right: 5px; + top: 3.5rem; + font-size: 1.2rem; + color: #888888; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-item-text { + max-height: 3rem; + overflow: hidden; + font-size: 1.2rem; + line-height: 18px; + color: #666666; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-item-text a { + color: #666666; +} +.am-list-news-one .am-list .am-list-item-thumbed { + border-bottom: 1px dashed #dfdfdf; + padding: 0 0 5px 0; +} +.am-list-news-one .am-list .am-list-item-thumbed:before { + content: none; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-hd { + font-weight: normal; + height: 30px; + line-height: 30px; + margin-bottom: 0; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-hd a { + font-size: 1.5rem; + color: #15afef; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + padding: 0; + text-indent: 0; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb { + padding: 0; + height: 60px; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb a { + width: 100%; + display: block; + padding: 0; + text-indent: 0; + height: 60px; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb a img { + width: 100%; + height: 60px; + vertical-align: top; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-main { + padding: 0 5px 14px 5px; + position: relative; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-date { + position: absolute; + right: 5px; + top: 3.5rem; + font-size: 1.2rem; + color: #888888; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-text { + max-height: 3rem; + overflow: hidden; + font-size: 1.2rem; + line-height: 18px; + color: #666666; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-text a { + color: #666666; +} +.am-list-news-one .am-list-news-more { + background: #dfdfdf; + color: #666666; + height: 35px; + line-height: 35px; + font-size: 1.4rem; + display: block; + border: 0; + border-radius: 0; + padding: 0; +} +@media only screen and (max-width: 640px) { + .am-list-news-one .am-list-item-thumb-left .am-list-thumb, + .am-list-news-one .am-list-item-thumb-right .am-list-thumb { + max-height: 80px; + overflow: hidden; + } + .am-list-news-one .am-list-item-thumb-bottom-left .am-list-item-text, + .am-list-news-one .am-list-item-thumb-bottom-right .am-list-item-text { + -webkit-line-clamp: 3; + /* number of lines to show */ + max-height: 3.9em; + } + .am-list-news-one .am-list-item-thumb-bottom-left .am-list-thumb, + .am-list-news-one .am-list-item-thumb-bottom-right .am-list-thumb { + max-height: 60px; + overflow: hidden; + } +} +.am-map { + width: 100%; + height: 300px; +} +/** + * Accordion Theme: default + * Author: Hzp (hzp@yunshipei.com) + */ +.am-map-default #bd-map { + width: 100%; + height: 100%; + overflow: hidden; + margin: 0; + font-size: 14px; + line-height: 1.4!important; +} +.am-map-default .BMap_bubble_title { + font-weight: bold; +} +.am-map-default #BMap_mask { + width: 100%; +} +.am-mechat { + margin: 1rem; +} +.am-mechat .section-cbox-wap .cbox-post-wap .post-action-wap .action-function-wap .function-list-wap .list-upload-wap .upload-mutual-wap { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +.am-menu { + position: relative; + padding: 0; + margin: 0; +} +.am-menu ul { + padding: 0; + margin: 0; +} +.am-menu li { + list-style: none; +} +.am-menu a:after, +.am-menu a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.am-menu-sub { + z-index: 1050; +} +.am-menu-toggle { + display: none; +} +.am-menu-toggle img { + display: inline-block; + height: 16px; + width: auto; + vertical-align: middle; +} +.am-menu-nav a { + display: block; + padding: 0.8rem 0; + -webkit-transition: all 0.45s; + transition: all 0.45s; +} +/** + * Menu Theme: default + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-default .am-menu-nav { + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-default .am-menu-nav a { + text-align: center; + height: 36px; + line-height: 36px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + padding: 0; + color: #0e90d2; +} +.am-menu-default .am-menu-nav > .am-parent > a { + position: relative; + -webkit-transition: .15s; + transition: .15s; +} +.am-menu-default .am-menu-nav > .am-parent > a:after { + content: "\f107"; + margin-left: 5px; + -webkit-transition: .15s; + transition: .15s; +} +.am-menu-default .am-menu-nav > .am-parent > a:before { + position: absolute; + top: 100%; + margin-top: -16px; + left: 50%; + margin-left: -12px; + content: "\f0d8"; + display: none; + color: #f1f1f1; + font-size: 24px; +} +.am-menu-default .am-menu-nav > .am-parent.am-open > a { + color: #095f8a; +} +.am-menu-default .am-menu-nav > .am-parent.am-open > a:before { + display: block; +} +.am-menu-default .am-menu-nav > .am-parent.am-open > a:after { + -webkit-transform: rotate(-180deg); + -ms-transform: rotate(-180deg); + transform: rotate(-180deg); +} +.am-menu-default .am-menu-sub { + position: absolute; + left: 5px; + right: 5px; + background-color: #f1f1f1; + border-radius: 0; + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-default .am-menu-sub > li > a { + color: #555555; +} +@media only screen and (min-width:641px) { + .am-menu-default .am-menu-nav li { + width: auto; + float: left; + clear: none; + display: inline; + } + .am-menu-default .am-menu-nav a { + padding-left: 1.5rem; + padding-right: .5rem; + } +} +/** +/** + * Menu Theme: dropdown1 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-dropdown1 { + position: relative + /*@media @medium-up { + .am-menu-toggle { + display: none!important; + } + + .am-menu-nav { + &.am-collapse { + display: block; + } + + .am-menu-sub { + background-color: ;//@menu-sub-bg; + display: block; + & > li { + clear: none; + + } + } + + .am-menu-lv2 { + & > li { + clear: none; + width: auto; + } + } + } + }*/ +} +.am-menu-dropdown1 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-dropdown1 a { + -webkit-transition: all .4s; + transition: all .4s; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-menu-dropdown1 .am-menu-nav { + position: absolute; + left: 0; + right: 0; + z-index: 1050; +} +.am-menu-dropdown1 .am-menu-nav a { + padding: 0.8rem; +} +.am-menu-dropdown1 .am-menu-nav > li { + width: 100%; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent > a { + position: relative; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent > a::before { + content: "\f067"; + position: absolute; + right: 1rem; + top: 1.4rem; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent.am-open > a { + background-color: #0c80ba; + border-bottom: none; + color: #ffffff; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent.am-open > a:before { + content: "\f068"; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent.am-open > a:after { + content: ""; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-top: 8px solid #0c80ba; + border-right: 8px solid transparent; + border-left: 8px solid transparent; + border-bottom: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + position: absolute; + top: 100%; + left: 50%; + margin-left: -4px; +} +.am-menu-dropdown1 .am-menu-nav > li > a { + border-bottom: 1px solid #0b76ac; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + background-color: #0e90d2; + color: #ffffff; + height: 49px; + line-height: 49px; + padding: 0; + text-indent: 10px; +} +.am-menu-dropdown1 .am-menu-sub { + background-color: #ffffff; +} +.am-menu-dropdown1 .am-menu-sub a { + color: #555555; + height: 44px; + line-height: 44px; + text-indent: 5px; + padding: 0; +} +.am-menu-dropdown1 .am-menu-sub a:before { + content: "\f105"; + color: #aaaaaa; + font-size: 16px; + margin-right: 5px; +} +/** + * Menu Theme: dropdown2 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-dropdown2 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-dropdown2 .am-menu-nav { + position: absolute; + left: 0; + right: 0; + background-color: #f5f5f5; + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); + z-index: 1050; + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-dropdown2 .am-menu-nav a { + height: 38px; + line-height: 38px; + padding: 0; + text-align: center; +} +.am-menu-dropdown2 .am-menu-nav > li > a { + color: #333333; +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent > a { + position: relative; +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent > a:after { + content: "\f107"; + margin-left: 5px; + -webkit-transition: -webkit-transform .2s; + transition: transform .2s; +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent.am-open > a { + position: relative; +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent.am-open > a:after { + color: #0e90d2; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent.am-open > a:before { + position: absolute; + top: 100%; + margin-top: -16px; + left: 50%; + margin-left: -12px; + font-size: 24px; + content: "\f0d8"; + color: rgba(0, 0, 0, 0.2); +} +.am-menu-dropdown2 .am-menu-sub { + position: absolute; + left: 5px; + right: 5px; + padding: 8px 0; + border-radius: 2px; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + background-color: #ffffff; + z-index: 1055; +} +.am-menu-dropdown2 .am-menu-sub a { + padding: 0; + height: 35px; + color: #555555; + line-height: 35px; +} +@media only screen and (min-width:641px) { + .am-menu-dropdown2 .am-menu-toggle { + display: none !important; + } + .am-menu-dropdown2 .am-menu-nav { + position: static; + display: block; + } + .am-menu-dropdown2 .am-menu-nav > li { + float: none; + width: auto; + display: inline-block; + } + .am-menu-dropdown2 .am-menu-nav > li a { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .am-menu-dropdown2 .am-menu-sub { + left: auto; + right: auto; + } + .am-menu-dropdown2 .am-menu-sub > li { + float: none; + width: auto; + } + .am-menu-dropdown2 .am-menu-sub a { + padding-left: 2rem; + padding-right: 2rem; + } +} +/** + * Menu Theme: slide1 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-slide1 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-slide1 .am-menu-nav { + background-color: #f5f5f5; + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-slide1 .am-menu-nav.am-in:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f0d8"; + font-size: 24px; + color: #f5f5f5; + position: absolute; + right: 16px; + top: -16px; +} +.am-menu-slide1 .am-menu-nav a { + line-height: 38px; + height: 38px; + display: block; + padding: 0; + text-align: center; +} +.am-menu-slide1 .am-menu-nav > li > a { + color: #333333; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-menu-slide1 .am-menu-nav > .am-parent > a { + position: relative; + -webkit-transition: .15s; + transition: .15s; +} +.am-menu-slide1 .am-menu-nav > .am-parent > a:after { + content: "\f107"; + margin-left: 5px; + -webkit-transition: .15s; + transition: .15s; +} +.am-menu-slide1 .am-menu-nav > .am-parent > a:before { + position: absolute; + top: 100%; + margin-top: -16px; + left: 50%; + margin-left: -12px; + content: "\f0d8"; + display: none; + color: #0e90d2; + font-size: 24px; +} +.am-menu-slide1 .am-menu-nav > .am-parent.am-open > a { + color: #0e90d2; +} +.am-menu-slide1 .am-menu-nav > .am-parent.am-open > a:before { + display: block; +} +.am-menu-slide1 .am-menu-nav > .am-parent.am-open > a:after { + -webkit-transform: rotate(-180deg); + -ms-transform: rotate(-180deg); + transform: rotate(-180deg); +} +.am-menu-slide1 .am-menu-sub { + position: absolute; + left: 5px; + right: 5px; + background-color: #0e90d2; + border-radius: 0; + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-slide1 .am-menu-sub > li > a { + color: #ffffff; +} +@media only screen and (min-width:641px) { + .am-menu-slide1 .am-menu-toggle { + display: none !important; + } + .am-menu-slide1 .am-menu-nav { + background-color: #f5f5f5; + display: block; + } + .am-menu-slide1 .am-menu-nav.am-in:before { + display: none; + } + .am-menu-slide1 .am-menu-nav li { + width: auto; + clear: none; + } + .am-menu-slide1 .am-menu-nav li a { + padding-left: 1.5rem; + padding-right: 1.5rem; + } +} +/** + * Menu Theme: offcanvas1 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-offcanvas1 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-offcanvas1 .am-menu-nav { + border-bottom: 1px solid rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} +.am-menu-offcanvas1 .am-menu-nav > li > a { + height: 44px; + line-height: 44px; + text-indent: 15px; + padding: 0; + position: relative; + color: #cccccc; + border-top: 1px solid rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); +} +.am-menu-offcanvas1 .am-menu-nav > .am-open > a, +.am-menu-offcanvas1 .am-menu-nav > li > a:hover, +.am-menu-offcanvas1 .am-menu-nav > li > a:focus { + background-color: #474747; + color: #ffffff; + outline: none; +} +.am-menu-offcanvas1 .am-menu-nav > .am-active > a { + background-color: #1a1a1a; + color: #ffffff; +} +.am-menu-offcanvas1 .am-menu-nav > .am-parent > a { + -webkit-transition: all .3s; + transition: all .3s; +} +.am-menu-offcanvas1 .am-menu-nav > .am-parent > a:after { + content: "\f104"; + position: absolute; + right: 1.5rem; + top: 1.3rem; +} +.am-menu-offcanvas1 .am-menu-nav > .am-parent.am-open > a:after { + content: "\f107"; +} +.am-menu-offcanvas1 .am-menu-sub { + border-top: 1px solid rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 5px 0 5px 15px; + background-color: #1a1a1a; + font-size: 1.4rem; +} +.am-menu-offcanvas1 .am-menu-sub a { + color: #eeeeee; +} +.am-menu-offcanvas1 .am-menu-sub a:hover { + color: #ffffff; +} +.am-menu-offcanvas1 .am-nav-divider { + border-top: 1px solid #1a1a1a; +} +/** + * Menu Theme: offcanvas2 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-offcanvas2 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-offcanvas2 .am-menu-nav { + padding: 10px 5px; +} +.am-menu-offcanvas2 .am-menu-nav > li { + padding: 5px; +} +.am-menu-offcanvas2 .am-menu-nav > li > a { + -webkit-transition: all 0.3s; + transition: all 0.3s; + background-color: #404040; + color: #cccccc; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + border: 1px solid rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); + height: 44px; + line-height: 44px; + padding: 0; + text-align: center; +} +.am-menu-offcanvas2 .am-menu-nav > li > a:hover, +.am-menu-offcanvas2 .am-menu-nav > li > a:focus { + background-color: #262626; + color: #ffffff; + outline: none; +} +.am-menu-offcanvas2 .am-menu-nav > .am-active > a { + background-color: #262626; + color: #ffffff; +} +/** + * Menu Theme: stack + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-stack .am-menu-nav { + border-bottom: 1px solid #dedede; + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} +.am-menu-stack .am-menu-nav > .am-parent > a { + -webkit-transition: all .3s; + transition: all .3s; +} +.am-menu-stack .am-menu-nav > .am-parent > a:after { + content: "\f105"; + position: absolute; + right: 1.5rem; + top: 1.3rem; + -webkit-transition: all .15s; + transition: all .15s; +} +.am-menu-stack .am-menu-nav > .am-parent.am-open > a:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.am-menu-stack .am-menu-nav > li > a { + position: relative; + color: #333333; + background-color: #f5f5f5; + border-top: 1px solid #dedede; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + height: 49px; + line-height: 49px; + text-indent: 10px; + padding: 0; +} +.am-menu-stack .am-menu-nav > .am-open > a, +.am-menu-stack .am-menu-nav > li > a:hover, +.am-menu-stack .am-menu-nav > li > a:focus { + background-color: #e5e5e5; + color: #222222; + outline: none; +} +.am-menu-stack .am-menu-sub { + padding: 0; + font-size: 1.4rem; + border-top: 1px solid #dedede; +} +.am-menu-stack .am-menu-sub a { + border-bottom: 1px solid #dedede; + padding-left: 2rem; + color: #444444; +} +.am-menu-stack .am-menu-sub a:hover { + color: #333333; +} +.am-menu-stack .am-menu-sub li:last-child a { + border-bottom: none; +} +.am-menu-stack .am-menu-sub > li > a { + height: 44px; + line-height: 44px; + text-indent: 15px; + padding: 0; +} +@media only screen and (min-width:641px) { + .am-menu-stack .am-menu-nav { + background-color: #f5f5f5; + } + .am-menu-stack .am-menu-nav > li { + float: left; + width: auto; + clear: none !important; + display: inline-block; + } + .am-menu-stack .am-menu-nav > li a { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .am-menu-stack .am-menu-nav > li.am-parent > a:after { + position: static; + content: "\f107"; + } + .am-menu-stack .am-menu-nav > li.am-parent.am-open a { + border-bottom: none; + } + .am-menu-stack .am-menu-nav > li.am-parent.am-open a:after { + -webkit-transform: rotateX(-180deg); + transform: rotateX(-180deg); + } + .am-menu-stack .am-menu-nav > li.am-parent.am-open .am-menu-sub { + background-color: #e5e5e5; + } + .am-menu-stack .am-menu-sub { + position: absolute; + left: 0; + right: 0; + background-color: #ddd; + border-top: none; + } + .am-menu-stack .am-menu-sub li { + width: auto; + float: left; + clear: none; + } +} +/** + * Menu Theme: one + * Author: one (hzp@yunshipei.com) + */ +.am-menu-one { + padding-left: 10px; + padding-right: 10px; + margin-bottom: 10px; + background-color: #f5f5f5; + -webkit-box-shadow: 0 2px 10px #d7d7d7; + box-shadow: 0 2px 10px #d7d7d7; + height: 40px; +} +.am-menu-one .am-menu-nav-wrap { + overflow: hidden; +} +.am-menu-one .am-menu-nav { + height: 40px; +} +.am-menu-one .am-menu-nav:before, +.am-menu-one .am-menu-nav:after { + content: " "; + display: table; +} +.am-menu-one .am-menu-nav:after { + clear: both; +} +.am-menu-one .am-menu-nav > li { + float: left; + clear: none; + width: auto; +} +.am-menu-one .am-menu-nav > li > a { + display: block; + height: 40px; + line-height: 40px; + padding: 0 10px; + color: #7d7d7d; +} +.am-menu-one .am-menu-nav .am-active > a { + color: #555555; + border-bottom: 2px solid #15afef; +} +.am-menu-one .am-menu-nav .am-open > a { + position: relative; +} +.am-menu-one .am-menu-nav .am-open > a:before { + position: absolute; + top: 100%; + left: 50%; + margin-top: -6px; + margin-left: -6px; + content: ''; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-bottom: 6px solid #15afef; + border-right: 6px solid transparent; + border-left: 6px solid transparent; + border-top: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); +} +.am-menu-one .am-menu-nav-sub-wrap { + position: relative; + z-index: 1050; +} +.am-menu-one .am-menu-sub { + position: absolute; + top: 1px; + left: -5px; + right: -5px; + background-color: #ffffff; + border-radius: 2px; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} +.am-menu-one .am-menu-sub li { + text-align: center; +} +.am-menu-one .am-menu-sub a { + padding: 0; + color: #555555; + line-height: 40px; +} +.am-navbar { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + height: 49px; + line-height: 49px; + z-index: 1010; +} +.am-navbar ul { + padding-left: 0; + margin: 0; + list-style: none; + width: 100%; +} +.am-navbar .am-navbar-nav { + padding-left: 8px; + padding-right: 8px; + text-align: center; + overflow: hidden; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-navbar .am-navbar-nav li { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + float: none; +} +.am-navbar-nav { + position: relative; + z-index: 1015; +} +.am-navbar-nav a { + display: inline-block; + width: 100%; + height: 49px; + line-height: 20px; +} +.am-navbar-nav a img { + display: block; + vertical-align: middle; + height: 24px; + width: 24px; + margin: 4px auto 0; +} +.am-navbar-nav a [class*="am-icon"] { + width: 24px; + height: 24px; + margin: 4px auto 0; + display: block; + line-height: 24px; +} +.am-navbar-nav a [class*="am-icon"]:before { + font-size: 22px; + vertical-align: middle; +} +.am-navbar-nav a .am-navbar-label { + padding-top: 2px; + line-height: 1; + font-size: 12px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-navbar-more [class*="am-icon-"] { + -webkit-transition: 0.15s; + transition: 0.15s; +} +.am-navbar-more.am-active [class*="am-icon-"] { + -webkit-transform: rotateX(-180deg); + transform: rotateX(-180deg); +} +.am-navbar-actions { + position: absolute; + bottom: 49px; + right: 0; + left: 0; + z-index: 1009; + opacity: 0; + -webkit-transition: .3s; + transition: .3s; + -webkit-transform: translate(0, 100%); + -ms-transform: translate(0, 100%); + transform: translate(0, 100%); +} +.am-navbar-actions.am-active { + opacity: 1; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} +.am-navbar-actions li { + line-height: 42px; + position: relative; +} +.am-navbar-actions li a { + display: block; + width: 100%; + height: 40px; + -webkit-box-shadow: inset 0 1px rgba(220, 220, 220, 0.25); + box-shadow: inset 0 1px rgba(220, 220, 220, 0.25); + padding-left: 20px; + padding-right: 36px; +} +.am-navbar-actions li a :after { + font-family: "FontAwesome", sans-serif; + content: "\f105"; + display: inline-block; + position: absolute; + top: 0; + right: 20px; +} +.am-navbar-actions li a img { + vertical-align: middle; + height: 20px; + width: 20px; + display: inline; +} +#am-navbar-qrcode { + width: 220px; + height: 220px; + margin-left: -110px; +} +#am-navbar-qrcode .am-modal-bd { + padding: 10px; +} +#am-navbar-qrcode canvas { + display: block; + width: 200px; + height: 200px; +} +.am-with-fixed-navbar { + padding-bottom: 54px; +} +/** + * Navbar Theme: default + * Author: hzp (hzp@yunshipei.com) + */ +.am-navbar-default a { + color: #ffffff; +} +.am-navbar-default .am-navbar-nav { + background-color: #0e90d2; +} +.am-navbar-default .am-navbar-actions { + background-color: #0d86c4; +} +.am-navbar-default .am-navbar-actions a { + border-bottom: 1px solid #0b6fa2; +} +/** + * Navbar Theme: one + * Author: hzp (hzp@yunshipei.com) + */ +.am-navbar-one a { + color: #ffffff; +} +.am-navbar-one .am-navbar-nav { + background-color: #15afef; +} +.am-navbar-one .am-navbar-actions { + background-color: #0f9fdb; +} +.am-navbar-one .am-navbar-actions a { + border-bottom: 1px solid #0d87ba; +} +.am-pagination { + position: relative; +} +/** + * Pagination Theme: default + */ +.am-pagination-default { + margin-left: 10px; + margin-right: 10px; + font-size: 1.6rem; +} +.am-pagination-default .am-pagination-prev, +.am-pagination-default .am-pagination-next { + float: none; +} +/** + * Pagination Theme: select + */ +.am-pagination-select { + margin-left: 10px; + margin-right: 10px; + font-size: 1.6rem; +} +.am-pagination-select > li > a { + line-height: 36px; + background-color: #eeeeee; + padding: 0 15px; + border: 0; + color: #555555; +} +.am-pagination-select .am-pagination-select { + position: absolute; + top: 0; + left: 50%; + margin-left: -35px; + width: 70px; + height: 36px; + text-align: center; + border-radius: 0; +} +.am-pagination-select .am-pagination-select select { + display: block; + border: 0; + line-height: 36px; + width: 70px; + height: 36px; + border-radius: 0; + color: #555555; + background-color: #eeeeee; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding-left: 18px; +} +/** + * Pagination Theme: one + */ +.am-pagination-one { + margin-left: 10px; + margin-right: 10px; + text-align: center; +} +.am-pagination-one > li > a { + line-height: 36px; + background-color: #ffffff; + padding: 0 15px; + color: #555555; +} +.am-pagination-one .am-pagination-select { + float: left; + position: absolute; + top: 0; + left: 50%; + margin-left: -25px; + width: 50px; + height: 36px; + text-align: center; +} +.am-pagination-one .am-pagination-select select { + display: block; + line-height: 36px; + width: 50px; + height: 36px; + border-radius: 0; + text-align: center; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding-left: 18px; + background: #ffffff; + border: 1px solid #dfdfdf; + color: #555555; +} +.am-paragraph p { + margin: 10px 0; +} +.am-paragraph img { + max-width: 100%; +} +.am-paragraph h1, +.am-paragraph h2, +.am-paragraph h3, +.am-paragraph h4, +.am-paragraph h5, +.am-paragraph h6 { + color: #222222; +} +.am-paragraph table { + max-width: none; +} +.am-paragraph-table-container { + overflow: hidden; + background: #eeeeee; + max-width: none; +} +.am-paragraph-table-container table { + width: 100%; + max-width: none; +} +.am-paragraph-table-container table th { + background: #bce5fb; + height: 40px; + border: 1px solid #999999; + text-align: center; +} +.am-paragraph-table-container table td { + border: 1px solid #999999; + text-align: center; + vertical-align: middle; + background: #ffffff; +} +.am-paragraph-table-container table td p { + text-indent: 0; + font-size: 1.4rem; +} +.am-paragraph-table-container table td a { + font-size: 1.4rem; +} +/** + * Paragraph Theme: default + */ +.am-paragraph-default { + margin: 0 10px; + color: #333333; + background-color: transparent; +} +.am-paragraph-default p { + font-size: 1.4rem; +} +.am-paragraph-default img { + max-width: 98%; + display: block; + margin: 5px auto; + border: 1px solid #eeeeee; + padding: 2px; +} +.am-paragraph-default a { + color: #0e90d2; +} +/** + * Paragraph Theme: one + */ +.am-paragraph-one { + color: #555555; + background: #ffffff; + margin: 0 10px; + padding: 4px; +} +.am-paragraph-one h1, +.am-paragraph-one h2, +.am-paragraph-one h3, +.am-paragraph-one h4, +.am-paragraph-one h5, +.am-paragraph-one h6 { + color: #333333; + font-weight: normal; + margin-top: 0; +} +.am-paragraph-one h1 { + font-size: 2rem; +} +.am-paragraph-one h2, +.am-paragraph-one h3 { + font-size: 1.8rem; +} +.am-paragraph-one h4, +.am-paragraph-one h5 { + font-size: 1.6rem; +} +.am-paragraph-one h6 { + font-size: 1.4rem; +} +.am-paragraph-one hr { + background: #dfdfdf; + height: 1px; + border: 0; + overflow: hidden; +} +.am-paragraph-one img { + max-width: 100%; + display: block; + margin: 5px 0; +} +.am-paragraph-one a { + color: #333333; +} +.am-paragraph-one p, +.am-paragraph-one div, +.am-paragraph-one table { + font-size: 1.4rem; + margin: 0 0 1rem 0; +} +.am-paragraph-one ul, +.am-paragraph-one ol { + padding-left: 0; +} +.am-paragraph-one li { + list-style: none; + font-size: 1.4rem; +} +/** + * Slider Theme: a1 + */ +.am-slider-a1 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a1 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a1 .am-viewport { + max-height: 300px; +} +.am-slider-a1 .am-control-nav { + width: 100%; + position: absolute; + bottom: 5px; + text-align: center; + line-height: 0; +} +.am-slider-a1 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-a1 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + border-radius: 50%; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-a1 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a1 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-a1 .am-direction-nav, +.am-slider-a1 .am-pauseplay { + display: none; +} +/** + * Slider Theme: a2 + */ +.am-slider-a2 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a2 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a2 .am-viewport { + max-height: 300px; +} +.am-slider-a2 .am-control-nav { + width: 100%; + position: absolute; + bottom: 5px; + text-align: center; + line-height: 0; +} +.am-slider-a2 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-a2 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-a2 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a2 .am-control-nav li a.am-active { + background: #0e93d7; + cursor: default; +} +.am-slider-a2 .am-direction-nav, +.am-slider-a2 .am-pauseplay { + display: none; +} +/** + * Slider Theme: a3 + */ +.am-slider-a3 { + margin-bottom: 20px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a3 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a3 .am-viewport { + max-height: 300px; +} +.am-slider-a3 .am-control-nav { + width: 100%; + position: absolute; + bottom: -20px; + text-align: center; + height: 20px; + background-color: #000000; + padding-top: 5px; + line-height: 0; +} +.am-slider-a3 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-a3 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + border-radius: 50%; + -webkit-box-shadow: inset 0 0 3px rgba(200, 200, 200, 0.3); + box-shadow: inset 0 0 3px rgba(200, 200, 200, 0.3); +} +.am-slider-a3 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a3 .am-control-nav li a.am-active { + background: #0e90d2; + cursor: default; +} +.am-slider-a3 .am-direction-nav, +.am-slider-a3 .am-pauseplay { + display: none; +} +/** + * Slider Theme: a4 + */ +.am-slider-a4 { + margin-bottom: 30px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a4 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a4 .am-viewport { + max-height: 300px; +} +.am-slider-a4 .am-control-nav { + width: 100%; + position: absolute; + bottom: -15px; + text-align: center; + line-height: 0; +} +.am-slider-a4 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-a4 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + border-radius: 50%; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-a4 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a4 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-a4 .am-direction-nav, +.am-slider-a4 .am-pauseplay { + display: none; +} +/** + * Slider Theme: a5 + */ +.am-slider-a5 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a5 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a5 .am-viewport { + max-height: 300px; +} +.am-slider-a5 .am-control-nav { + width: 100%; + position: absolute; + text-align: center; + height: 6px; + display: table; + bottom: 0; + font-size: 0; + line-height: 0; +} +.am-slider-a5 .am-control-nav li { + display: table-cell; +} +.am-slider-a5 .am-control-nav li a { + width: 100%; + height: 6px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; +} +.am-slider-a5 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a5 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-a5 .am-direction-nav, +.am-slider-a5 .am-pauseplay { + display: none; +} +/** + * Slider Theme: b1 + */ +.am-slider-b1 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-b1 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-b1 .am-viewport { + max-height: 300px; +} +.am-slider-b1 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 8px 0; + margin: -20px 0 0; + position: absolute; + top: 50%; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: #ffffff; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + background-color: rgba(0, 0, 0, 0.5); + font-size: 0; + text-align: center; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-b1 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 24px; +} +.am-slider-b1 .am-direction-nav a.am-prev { + left: 0; + padding-right: 5px; + border-bottom-right-radius: 5px; + border-top-right-radius: 5px; +} +.am-slider-b1 .am-direction-nav a.am-next { + right: 0; + padding-left: 5px; + border-bottom-left-radius: 5px; + border-top-left-radius: 5px; +} +.am-slider-b1 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-b1 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-b1:hover .am-prev { + opacity: 0.7; +} +.am-slider-b1:hover .am-prev:hover { + opacity: 1; +} +.am-slider-b1:hover .am-next { + opacity: 0.7; +} +.am-slider-b1:hover .am-next:hover { + opacity: 1; +} +.am-slider-b1 .am-control-nav, +.am-slider-b1 .am-pauseplay { + display: none; +} +/** + * Slider Theme: b2 + */ +.am-slider-b2 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-b2 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-b2 .am-viewport { + max-height: 300px; +} +.am-slider-b2 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 4px; + margin: -16px 0 0; + position: absolute; + top: 50%; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: #ffffff; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + background-color: rgba(0, 0, 0, 0.5); + font-size: 0; + text-align: center; + border-radius: 50%; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-b2 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 16px; + line-height: 24px; +} +.am-slider-b2 .am-direction-nav a.am-prev { + left: 5px; +} +.am-slider-b2 .am-direction-nav a.am-next { + right: 5px; +} +.am-slider-b2 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-b2 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-b2:hover .am-prev { + opacity: 0.7; +} +.am-slider-b2:hover .am-prev:hover { + opacity: 1; +} +.am-slider-b2:hover .am-next { + opacity: 0.7; +} +.am-slider-b2:hover .am-next:hover { + opacity: 1; +} +.am-slider-b2 .am-control-nav, +.am-slider-b2 .am-pauseplay { + display: none; +} +/** + * Slider Theme: b3 + */ +.am-slider-b3 { + margin: 15px 30px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-b3 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-b3 .am-viewport { + max-height: 300px; +} +.am-slider-b3 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 4px; + margin: -16px 0 0; + position: absolute; + top: 50%; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: #333333; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + font-size: 0; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-b3 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 24px; +} +.am-slider-b3 .am-direction-nav a.am-prev { + left: -25px; +} +.am-slider-b3 .am-direction-nav a.am-next { + right: -25px; + text-align: right; +} +.am-slider-b3 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-b3 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-b3:hover .am-prev { + opacity: 0.7; +} +.am-slider-b3:hover .am-prev:hover { + opacity: 1; +} +.am-slider-b3:hover .am-next { + opacity: 0.7; +} +.am-slider-b3:hover .am-next:hover { + opacity: 1; +} +.am-slider-b3 .am-control-nav, +.am-slider-b3 .am-pauseplay { + display: none; +} +/** + * Slider Theme: b4 + */ +.am-slider-b4 { + margin: 15px 20px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-b4 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-b4 .am-viewport { + max-height: 300px; +} +.am-slider-b4 .am-direction-nav a { + position: absolute; + top: 50%; + z-index: 10; + display: block; + -webkit-box-sizing: content-box; + box-sizing: content-box; + width: 24px; + height: 24px; + margin: -16px 0 0; + padding: 4px; + overflow: hidden; + opacity: 0.45; + background-color: rgba(0, 0, 0, 0.8); + cursor: pointer; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + font-size: 0; + border-radius: 50%; + text-align: center; + color: #ffffff; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-b4 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 20px; + line-height: 24px; +} +.am-slider-b4 .am-direction-nav a.am-prev { + left: -15px; +} +.am-slider-b4 .am-direction-nav a.am-next { + right: -15px; +} +.am-slider-b4 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-b4 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-b4:hover .am-prev { + opacity: 0.7; +} +.am-slider-b4:hover .am-prev:hover { + opacity: 0.9; +} +.am-slider-b4:hover .am-next { + opacity: 0.7; +} +.am-slider-b4:hover .am-next:hover { + opacity: 0.9; +} +.am-slider-b4 .am-control-nav, +.am-slider-b4 .am-pauseplay { + display: none; +} +/** + * Slider Theme: c1 + */ +.am-slider-c1 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-c1 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-c1 .am-viewport { + max-height: 300px; +} +.am-slider-c1 .am-control-nav { + position: absolute; + bottom: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + height: 6px; + font-size: 0; + line-height: 0; + text-align: center; +} +.am-slider-c1 .am-control-nav li { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-slider-c1 .am-control-nav li a { + width: 100%; + height: 6px; + display: block; + background-color: rgba(0, 0, 0, 0.7); + cursor: pointer; + text-indent: -9999px; +} +.am-slider-c1 .am-control-nav li a:hover { + background: rgba(0, 0, 0, 0.8); +} +.am-slider-c1 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-c1 .am-slider-desc { + background-color: rgba(0, 0, 0, 0.6); + position: absolute; + bottom: 6px; + padding: 8px; + width: 100%; + color: #ffffff; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-c1 .am-direction-nav, +.am-slider-c1 .am-pauseplay { + display: none; +} +/** + * Slider Theme: c2 + */ +.am-slider-c2 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-c2 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-c2 .am-viewport { + max-height: 300px; +} +.am-slider-c2 .am-control-nav { + position: absolute; + bottom: 15px; + right: 0; + height: 6px; + text-align: center; + font-size: 0; + line-height: 0; +} +.am-slider-c2 .am-control-nav li { + display: inline-block; + margin-right: 6px; +} +.am-slider-c2 .am-control-nav li a { + width: 6px; + height: 6px; + display: block; + background-color: rgba(255, 255, 255, 0.4); + cursor: pointer; + text-indent: -9999px; +} +.am-slider-c2 .am-control-nav li a:hover { + background: rgba(230, 230, 230, 0.4); +} +.am-slider-c2 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-c2 .am-slider-desc { + background-color: rgba(0, 0, 0, 0.6); + position: absolute; + bottom: 0; + padding: 8px 60px 8px 8px; + width: 100%; + color: #ffffff; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-c2 .am-direction-nav, +.am-slider-c2 .am-pauseplay { + display: none; +} +/** + * Slider Theme: c3 + */ +.am-slider-c3 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-c3 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-c3 .am-viewport { + max-height: 300px; +} +.am-slider-c3 .am-slider-desc { + background-color: rgba(0, 0, 0, 0.6); + position: absolute; + bottom: 10px; + right: 60px; + height: 30px; + left: 0; + padding-right: 5px; + color: #ffffff; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-c3 .am-slider-counter { + margin-right: 5px; + display: inline-block; + height: 30px; + background-color: #0e90d2; + width: 40px; + text-align: center; + line-height: 30px; + color: #eeeeee; + font-size: 1rem; +} +.am-slider-c3 .am-slider-counter .am-active { + font-size: 1.8rem; + font-weight: bold; + color: #ffffff; +} +.am-slider-c3 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 4px 0; + margin: -16px 0 0; + position: absolute; + top: 50%; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: #ffffff; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + background-color: rgba(0, 0, 0, 0.5); + font-size: 0; + text-align: center; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-c3 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 16px; + line-height: 24px; +} +.am-slider-c3 .am-direction-nav a.am-prev { + left: 0; + padding-right: 5px; +} +.am-slider-c3 .am-direction-nav a.am-next { + right: 0; + padding-left: 5px; +} +.am-slider-c3 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-c3 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-c3:hover .am-prev { + opacity: 0.7; +} +.am-slider-c3:hover .am-prev:hover { + opacity: 1; +} +.am-slider-c3:hover .am-next { + opacity: 0.7; +} +.am-slider-c3:hover .am-next:hover { + opacity: 1; +} +.am-slider-c3 .am-control-nav, +.am-slider-c3 .am-pauseplay { + display: none; +} +/** + * Slider Theme: c4 + */ +.am-slider-c4 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-c4 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-c4 .am-viewport { + max-height: 300px; +} +.am-slider-c4 .am-slider-desc { + width: 100%; + background-color: rgba(0, 0, 0, 0.6); + position: absolute; + bottom: 0; + right: 0; + left: 0; + padding: 8px 40px; + color: #ffffff; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-c4 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 4px 0; + margin: 0; + position: absolute; + bottom: 4px; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + font-size: 0; + text-align: center; + color: rgba(0, 0, 0, 0.7); + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-c4 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 24px; +} +.am-slider-c4 .am-direction-nav a.am-prev { + left: 0; + padding-right: 5px; +} +.am-slider-c4 .am-direction-nav a.am-next { + right: 0; + padding-left: 5px; +} +.am-slider-c4 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-c4 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-c4:hover .am-prev { + opacity: 0.7; +} +.am-slider-c4:hover .am-prev:hover { + opacity: 1; +} +.am-slider-c4:hover .am-next { + opacity: 0.7; +} +.am-slider-c4:hover .am-next:hover { + opacity: 1; +} +.am-slider-c4 .am-control-nav, +.am-slider-c4 .am-pauseplay { + display: none; +} +/** + * Slider Theme: d1 + */ +.am-slider-d1 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-d1 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-d1 .am-viewport { + max-height: 300px; +} +.am-slider-d1 .am-slider-desc { + padding: 8px 35px; + width: 100%; + color: #ffffff; + background-color: #0e90d2; +} +.am-slider-d1 .am-slider-title { + font-weight: normal; + margin-bottom: 2px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-d1 .am-slider-more { + color: #eeeeee; + font-size: 1.3rem; +} +.am-slider-d1 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + margin: 0; + position: absolute; + bottom: 18px; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + font-size: 0; + text-align: center; + border: 1px solid rgba(255, 255, 255, 0.9); + color: rgba(255, 255, 255, 0.9); + border-radius: 50%; + -webkit-transition: all 03s ease; + transition: all 03s ease; +} +.am-slider-d1 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 16px; + line-height: 24px; +} +.am-slider-d1 .am-direction-nav a.am-prev { + left: 5px; +} +.am-slider-d1 .am-direction-nav a.am-next { + right: 5px; +} +.am-slider-d1 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-d1 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-d1:hover .am-prev { + opacity: 0.7; +} +.am-slider-d1:hover .am-prev:hover { + opacity: 1; +} +.am-slider-d1:hover .am-next { + opacity: 0.7; +} +.am-slider-d1:hover .am-next:hover { + opacity: 1; +} +.am-slider-d1 .am-control-nav, +.am-slider-d1 .am-pauseplay { + display: none; +} +/** + * Slider Theme: d2 + */ +.am-slider-d2 { + margin-bottom: 20px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-d2 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-d2 .am-viewport { + max-height: 300px; +} +.am-slider-d2 .am-slider-desc { + position: absolute; + left: 10px; + bottom: 20px; + right: 50px; + color: #ffffff; +} +.am-slider-d2 .am-slider-content { + background-color: rgba(0, 0, 0, 0.7); + padding: 10px 6px; + margin-bottom: 10px; +} +.am-slider-d2 .am-slider-content p { + margin: 0; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + font-size: 1.4rem; +} +.am-slider-d2 .am-slider-title { + font-weight: normal; + margin-bottom: 5px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-d2 .am-slider-more { + color: #eeeeee; + font-size: 1.3rem; + background-color: #0e90d2; + padding: 2px 10px; +} +.am-slider-d2 .am-control-nav { + width: 100%; + position: absolute; + bottom: -15px; + text-align: center; +} +.am-slider-d2 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-d2 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + border-radius: 50%; + font-size: 0; + line-height: 0; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-d2 .am-control-nav li a:hover { + background: rgba(0, 0, 0, 0.5); +} +.am-slider-d2 .am-control-nav li a.am-active { + background: #0e90d2; + cursor: default; +} +.am-slider-d2 .am-direction-nav, +.am-slider-d2 .am-pauseplay { + display: none; +} +/** + * Slider Theme: d3 + */ +.am-slider-d3 { + margin-bottom: 10px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-d3 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-d3 .am-viewport { + max-height: 300px; +} +.am-slider-d3 .am-slider-desc { + position: absolute; + bottom: 0; + color: #ffffff; + width: 100%; + background-color: rgba(0, 0, 0, 0.7); + padding: 8px 5px; +} +.am-slider-d3 .am-slider-desc p { + margin: 0; + font-size: 1.3rem; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-d3 .am-slider-title { + font-weight: normal; + margin-bottom: 5px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-d3 .am-control-thumbs { + position: static; + overflow: hidden; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-slider-d3 .am-control-thumbs li { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 12px 4px 4px; + position: relative; +} +.am-slider-d3 .am-control-thumbs img { + width: 100%; + display: block; + opacity: .85; + cursor: pointer; +} +.am-slider-d3 .am-control-thumbs img:hover { + opacity: 1; +} +.am-slider-d3 .am-control-thumbs .am-active { + opacity: 1; + cursor: default; +} +.am-slider-d3 .am-control-thumbs .am-active + i { + position: absolute; + top: 0; + left: 50%; + content: ""; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-top: 8px solid rgba(0, 0, 0, 0.7); + border-right: 8px solid transparent; + border-left: 8px solid transparent; + border-bottom: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + margin-left: -4px; + -webkit-transition: all 0.2s; + transition: all 0.2s; +} +.am-slider-d3 .am-direction-nav, +.am-slider-d3 .am-pauseplay { + display: none; +} +/** + * Slider Theme: one + */ +.am-slider-one { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5); + margin: 0 10px + /* Control Nav */ +} +.am-slider-one .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-one .am-viewport { + max-height: 300px; +} +.am-slider-one .am-viewport .am-slider-desc { + position: absolute; + left: 0; + bottom: 0; + height: 26px; + width: 100%; + line-height: 26px; + background: rgba(0, 0, 0, 0.5); + color: #ffffff; +} +.am-slider-one .am-viewport .am-slider-desc .am-slider-title { + font-weight: normal; + font-size: 12px; + text-indent: 4px; + padding-right: 80px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-one .am-control-nav { + display: none; +} +.am-slider-one .am-direction-nav a { + position: absolute; + top: 50%; + z-index: 10; + display: block; + width: 24px; + height: 24px; + margin: -12px 0 0; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: rgba(0, 0, 0, 0.8); + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-one .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: rgba(0, 0, 0, 0.7); + content: "\f053"; + font-size: 24px; +} +.am-slider-one .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-one .am-direction-nav .am-prev { + left: 10px; +} +.am-slider-one .am-direction-nav .am-next { + right: 10px; + text-align: right; +} +.am-slider-one .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-one:hover .am-prev { + opacity: 0.7; + left: 10px; +} +.am-slider-one:hover .am-prev:hover { + opacity: 1; +} +.am-slider-one:hover .am-next { + opacity: 0.7; + right: 10px; +} +.am-slider-one:hover .am-next:hover { + opacity: 1; +} +.am-slider-one .am-pauseplay { + display: none; +} +[data-am-widget='tabs'] { + margin: 10px; +} +[data-am-widget='tabs'] .am-tabs-nav { + width: 100%; + padding: 0; + margin: 0; + list-style: none; + text-align: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +[data-am-widget='tabs'] .am-tabs-nav li { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +[data-am-widget='tabs'] .am-tabs-nav a { + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +/** + * Tabs Theme: default + */ +.am-tabs-default .am-tabs-nav { + line-height: 40px; + background-color: #eeeeee; +} +.am-tabs-default .am-tabs-nav a { + color: #222222; + line-height: 42px; +} +.am-tabs-default .am-tabs-nav > .am-active a { + background-color: #0e90d2; + color: #ffffff; +} +/** + * Tabs Theme: d2 + */ +.am-tabs-d2 .am-tabs-nav { + background-color: #eeeeee; +} +.am-tabs-d2 .am-tabs-nav li { + height: 42px; +} +.am-tabs-d2 .am-tabs-nav a { + color: #222222; + line-height: 42px; +} +.am-tabs-d2 .am-tabs-nav > .am-active { + position: relative; + background-color: #fcfcfc; + border-bottom: 2px solid #0e90d2; +} +.am-tabs-d2 .am-tabs-nav > .am-active a { + line-height: 40px; + color: #0e90d2; +} +.am-tabs-d2 .am-tabs-nav > .am-active:after { + position: absolute; + width: 0; + height: 0; + bottom: 0px; + left: 50%; + margin-left: -5px; + border: 6px rgba(0, 0, 0, 0) solid; + content: ""; + z-index: 1; + border-bottom-color: #0e90d2; +} +/** + * Tabs Theme: one + */ +.am-tabs-one { + background: #ffffff; +} +.am-tabs-one .am-tabs-nav { + height: 36px; + background-color: #ffffff; + font-size: 14px; + border-radius: 0; +} +.am-tabs-one .am-tabs-nav a { + line-height: 34px; + color: #15afef; +} +.am-tabs-one .am-tabs-nav li { + border: 1px solid #15afef; +} +.am-tabs-one .am-tabs-nav li:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.am-tabs-one .am-tabs-nav li:last-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.am-tabs-one .am-tabs-nav li + li { + border-left: none; +} +.am-tabs-one .am-tabs-nav .am-active a { + background-color: #15afef; + color: #ffffff; +} +.am-tabs-one .am-tabs-bd { + border: none; +} +.am-tabs-one .am-tab-panel { + padding: 15px 5px 20px; +} +.am-titlebar { + margin-top: 20px; + height: 45px; + font-size: 100%; +} +.am-titlebar h2 { + margin-top: 0; + margin-bottom: 0; + font-size: 1.6rem; +} +.am-titlebar .am-titlebar-title img { + height: 24px; + width: auto; +} +/** + * Titlebar Theme: default + */ +.am-titlebar-default { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-left: 10px; + margin-right: 10px; + background-color: transparent; + border-bottom: 1px solid #dedede; + line-height: 44px; +} +.am-titlebar-default a { + color: #0e90d2; +} +.am-titlebar-default .am-titlebar-title { + position: relative; + padding-left: 12px; + color: #0e90d2; + font-size: 1.8rem; + text-align: left; + font-weight: bold; +} +.am-titlebar-default .am-titlebar-title:before { + content: ""; + position: absolute; + left: 2px; + top: 8px; + bottom: 8px; + border-left: 3px solid #0e90d2; +} +.am-titlebar-default .am-titlebar-nav { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; +} +.am-titlebar-default .am-titlebar-nav a { + margin-right: 10px; +} +.am-titlebar-default .am-titlebar-nav a:last-child { + margin-right: 5px; +} +/** + * Titlebar Theme: multi + */ +.am-titlebar-multi { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + background-color: #f5f5f5; + border-top: 2px solid #3bb4f2; + border-bottom: 1px solid #e8e8e8; +} +.am-titlebar-multi a { + color: #0e90d2; +} +.am-titlebar-multi .am-titlebar-title { + padding-left: 10px; + color: #0e90d2; + font-size: 1.8rem; + text-align: left; + font-weight: bold; + line-height: 42px; +} +.am-titlebar-multi .am-titlebar-nav { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; + line-height: 42px; +} +.am-titlebar-multi .am-titlebar-nav a { + margin-right: 10px; +} +/** + * Titlebar Theme: cols + */ +.am-titlebar-cols { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding-left: 10px; + background-color: #f5f5f5; + color: #555555; + font-size: 18px; + border-top: 2px solid #e1e1e1; + line-height: 41px; +} +.am-titlebar-cols a { + color: #555555; +} +.am-titlebar-cols .am-titlebar-title { + color: #0e90d2; + margin-right: 15px; + border-bottom: 2px solid #0e90d2; + font-weight: bold; +} +.am-titlebar-cols .am-titlebar-title a { + color: #0e90d2; +} +.am-titlebar-cols .am-titlebar-nav { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-titlebar-cols .am-titlebar-nav a { + display: inline-block; + margin-right: 15px; + line-height: 41px; + border-bottom: 2px solid transparent; +} +.am-titlebar-cols .am-titlebar-nav a:hover { + color: #3c3c3c; + border-bottom-color: #0e90d2; +} +.am-titlebar-cols .am-titlebar-nav a:last-child { + margin-right: 10px; +} +/** + * Titlebar Theme: one + */ +.am-titlebar-one { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-left: 10px; + margin-right: 10px; + height: 45px; + line-height: 44px; + background-color: #ffffff; + overflow: hidden; + border-bottom: 1px solid #15afef; +} +.am-titlebar-one .am-titlebar-title { + padding-left: 12px; + position: relative; + color: #222222; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-titlebar-one .am-titlebar-title:before { + content: ""; + position: absolute; + left: 2px; + top: 8px; + bottom: 8px; + border-left: 3px solid #15afef; +} +.am-titlebar-one .am-titlebar-title a { + color: #222222; +} +.am-titlebar-one .am-titlebar-title img { + height: 24px; + vertical-align: top; + margin-top: 10px; +} +.am-titlebar-one .am-titlebar-title h1, +.am-titlebar-one .am-titlebar-title h2, +.am-titlebar-one .am-titlebar-title h3, +.am-titlebar-one .am-titlebar-title h4, +.am-titlebar-one .am-titlebar-title h5, +.am-titlebar-one .am-titlebar-title h6, +.am-titlebar-one .am-titlebar-title strong, +.am-titlebar-one .am-titlebar-title em { + font-style: normal; + font-weight: normal; + margin-bottom: 0; +} +.am-titlebar-one .am-titlebar-title ul, +.am-titlebar-one .am-titlebar-title li { + list-style: none; + padding-left: 0; +} +.am-titlebar-one .am-titlebar-nav { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; + padding-right: 5px; + color: #999999; + font-size: 1.4rem; +} +.am-titlebar-one .am-titlebar-nav a { + color: #999999; +} diff --git a/src/main/webapp/res/amazonUi/css/amazeui.flat.css b/src/main/webapp/res/amazonUi/css/amazeui.flat.css new file mode 100644 index 0000000..fb70e5e --- /dev/null +++ b/src/main/webapp/res/amazonUi/css/amazeui.flat.css @@ -0,0 +1,14156 @@ +/*! Amaze UI v2.1.0 | by Amaze UI Team | (c) 2015 AllMobilize, Inc. | Licensed under MIT | 2015-01-13T02:01:01 UTC */ +/* ========================================================================== + Component: Base + ============================================================================ */ +/** + * Fix the flawed CSS box model - Yes, IE6's box model is better + * Browser support: IE8+ + * via: http://paulirish.com/2012/box-sizing-border-box-ftw/ + */ +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +/* normalize.css v3.0.2 | git.io/normalize */ +/* Set and to inherit the height of the viewport */ +html, +body { + min-height: 100%; +} +/** + * 1. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + * https://developer.mozilla.org/en-US/docs/Web/CSS/text-size-adjust + */ +html { + -ms-text-size-adjust: 100%; + /* 1 */ + -webkit-text-size-adjust: 100% + /* 1 */ +} +/** + * Remove default margin. + */ +body { + margin: 0; +} +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. + * Correct `block` display not defined for `main` in IE 11. + * hgroup has been removed from the HTML5 (W3C) specification + * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +main, +nav, +section, +summary { + display: block; +} +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline + /* 2 */ +} +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; +} +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ +[hidden], +template, +script { + display: none; +} +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; +} +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ +a:focus { + outline: thin dotted; +} +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ +a:active, +a:hover { + outline: 0; +} +/* Text-level semantics + ========================================================================== */ +/** + * Remove text-decoration + */ +ins, +a { + text-decoration: none; +} +/** + * Address styling not present in IE 8/9, Safari 5, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; +} +/** + * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ +b, +strong { + font-weight: bold; +} +/** + * Improve readability of pre-formatted text in all browsers. + */ +pre { + white-space: pre-wrap; +} +/** + * Set consistent quote types. + */ +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; +} +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +/* Embedded content + ========================================================================== */ +/** + * 1. Corrects max-width behavior (2.) if padding and border are used + * 2. Responsiveness: Sets a maxium width relative to the parent and auto scales the height + * 3. Remove the gap between images and the bottom of their containers + * 4. Remove border when inside `a` element in IE 8/9. + */ +img { + -webkit-box-sizing: border-box; + box-sizing: border-box; + /* 1 */ + max-width: 100%; + /* 2 */ + height: auto; + /* 2 */ + vertical-align: middle; + /* 3 */ + border: 0 + /* 4 */ +} +/** + * Correct overflow displayed oddly in IE 9. + */ +svg:not(:root) { + overflow: hidden; +} +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 0; +} +/** + * Correct font family set oddly in Safari 5 and Chrome. + */ +code, +kbd, +pre, +samp { + font-family: Monaco, Menlo, Consolas, "Courier New", "FontAwesome", monospace; + font-size: 1em; +} +/* Forms + ========================================================================== */ +/** + * Define consistent border, margin, and padding. + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +/** + * 1. Correct `color` not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0 + /* 2 */ +} +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0 + /* 3 */ +} +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; +} +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +button, +input { + line-height: normal; +} +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; +} +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer + /* 3 */ +} +/* + * 1. Improves consistency of cursor style for clickable elements + * 2. Removes excess padding in IE 8/9. + * 3. Address box sizing set to `content-box` in IE 8/9/10. + */ +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; + /*1*/ + padding: 0; + /*2*/ + -webkit-box-sizing: border-box; + box-sizing: border-box + /* 3 */ +} +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; +} +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -webkit-box-sizing: content-box; + box-sizing: content-box + /* 2 */ +} +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +/** + * 1. Remove default vertical scrollbar in IE 8/9. + * 2. Improve readability and alignment in all browsers. + */ +textarea { + overflow: auto; + /* 1 */ + vertical-align: top; + /* 2 */ + resize: vertical; +} +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; +} +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +/* AMUI Base + ========================================================================== */ +/** + * `font-size` is set in `html` element to support the `rem` unit for font-sizes + * NOTE: IE9 & IE10 do not recognize `rem` units when used with the + `font` shorthand property. + */ +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + position: relative; + background: #ffffff; + font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif; + font-weight: normal; + line-height: 1.6; + color: #333333; + font-size: 1.6rem; +} +/** + * 1. http://usabilitypost.com/2012/11/15/w-optimizelegibility-on-mobile-devices/ + * 2. http://maxvoltar.com/archive/-webkit-font-smoothing + * NOTE: http://usabilitypost.com/2012/11/05/stop-fixing-font-smoothing/ + * 3. http://maximilianhoffmann.com/posts/better-font-rendering-on-osx + * http://jaydenseric.com/blog/css-font-smoothing-for-firefox-mac + */ +body, +input, +textarea, +select, +button { + text-rendering: optimizeLegibility; + /* 1 */ + -webkit-font-smoothing: antialiased; + /* 2 */ + -moz-osx-font-smoothing: grayscale; + /* 3 Default: auto */ + -moz-font-feature-settings: "liga", "kern"; +} +/*Only phones */ +@media only screen and (max-width: 640px) { + /** + * Break strings if their length exceeds the width of their container + */ + body { + word-wrap: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; + } +} +/** + * links + */ +a { + color: #0e90d2; +} +a:hover, +a:focus { + color: #095f8a; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +/* Insert */ +ins { + background: #ffffaa; + color: #333333; +} +/** + * Mark + * Note: Addresses styling not present in IE 8/9. + */ +mark { + background: #ffffaa; + color: #333333; +} +/** + * Abbreviation and definition + */ +abbr[title], +dfn[title] { + cursor: help; +} +dfn[title] { + border-bottom: 1px dotted; + font-style: normal; +} +/* Spacing for block elements */ +p, +hr, +ul, +ol, +dl, +blockquote, +pre, +address, +fieldset, +figure { + margin: 0 0 1.6rem 0; +} +* + p, +* + hr, +* + ul, +* + ol, +* + dl, +* + blockquote, +* + pre, +* + address, +* + fieldset, +* + figure { + margin-top: 1.6rem; +} +/* Headings + ========================================================================== */ +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0 0 1.6rem 0; + font-weight: 600; + font-size: 100%; +} +h1 { + font-size: 1.5em; +} +h2 { + font-size: 1.25em; +} +* + h1, +* + h2, +* + h3, +* + h4, +* + h5, +* + h6 { + margin-top: 2em; +} +/* Ordered and unordered lists */ +ul, +ol { + padding-left: 2em; +} +/* Reset margin for nested lists */ +ul > li > ul, +ul > li > ol, +ol > li > ol, +ol > li > ul { + margin: 1em 0; +} +/* Description lists */ +dt { + font-weight: bold; +} +dt + dd { + margin-top: .5em; +} +dd { + margin-left: 0; +} +dd + dt { + margin-top: 1em; +} +/** + * Horizontal rule + * 1. Address differences between Firefox and other browsers. + */ +hr { + display: block; + padding: 0; + border: 0; + height: 0; + border-top: 1px solid #eeeeee; + /* 1 */ + -webkit-box-sizing: content-box; + box-sizing: content-box + /* 1 */ +} +/* Address */ +address { + font-style: normal; +} +/* Quotes */ +blockquote { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 15px; + border-left: 4px solid #dddddd; + font-family: Georgia, "Times New Roman", Times, Kai, "Kaiti SC", KaiTi, BiauKai, "FontAwesome", serif + /* Small print for identifying the source */ + /* Smaller margin if `small` follows */ +} +blockquote small { + display: block; + color: #999999; + font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif; + text-align: right; +} +blockquote p:last-of-type { + margin-bottom: 0; +} +/* iframe */ +iframe { + border: 0; +} +/* Forms + ========================================================================== */ +/** + * Vertical alignment + * Exclude `radio` and `checkbox` elements because the default `baseline` value aligns better with text + */ +button, +input:not([type="radio"]):not([type="checkbox"]), +select { + vertical-align: middle; +} +/** + * Fix viewport for IE10 snap mode + * http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ + * http://msdn.microsoft.com/en-us/library/ie/hh869615%28v=vs.85%29.aspx + * http://msdn.microsoft.com/zh-cn/library/ie/hh708740(v=vs.85).aspx + * @2014.01.20: 设置一下属性以后,windows Phone 8 上显示的字体过小,暂时注释掉 + * ========================================================================== */ +/* +@-ms-viewport { + width: device-width; +} +*/ +/* ========================================================================== + Component: Grid + ============================================================================ */ +.am-container { + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin-left: auto; + margin-right: auto; + padding-left: 1rem; + padding-right: 1rem; + width: 100%; + max-width: 1000px; +} +.am-container:before, +.am-container:after { + content: " "; + display: table; +} +.am-container:after { + clear: both; +} +@media only screen and (min-width:641px) { + .am-container { + padding-left: 1.5rem; + padding-right: 1.5rem; + } +} +.am-container > .am-g { + width: auto; + margin-left: -1rem; + margin-right: -1rem; +} +@media only screen and (min-width:641px) { + .am-container > .am-g { + margin-left: -1.5rem; + margin-right: -1.5rem; + } +} +.am-g { + margin: 0 auto; + width: 100%; +} +.am-g:before, +.am-g:after { + content: " "; + display: table; +} +.am-g:after { + clear: both; +} +.am-g .am-g { + margin-left: -1rem; + margin-right: -1rem; + width: auto; +} +.am-g .am-g.am-g-collapse { + margin-left: 0; + margin-right: 0; + width: auto; +} +@media only screen and (min-width:641px) { + .am-g .am-g { + margin-left: -1.5rem; + margin-right: -1.5rem; + } +} +.am-g.am-g-collapse .am-g { + margin-left: 0; + margin-right: 0; +} +.am-g-collapse [class*="am-u-"] { + padding-left: 0; + padding-right: 0; +} +.am-g-fixed { + max-width: 1000px; +} +[class*="am-u-"] { + width: 100%; + padding-left: 1rem; + padding-right: 1rem; + float: left; + position: relative; +} +[class*="am-u-"] + [class*="am-u-"]:last-child { + float: right; +} +[class*="am-u-"] + [class*="am-u-"].am-u-end { + float: left; +} +@media only screen and (min-width:641px) { + [class*="am-u-"] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } +} +[class*="am-u-pull-"] { + left: auto; +} +[class*="am-u-push-"] { + right: auto; +} +@media only screen { + .am-u-sm-1 { + width: 8.33333333%; + } + .am-u-sm-2 { + width: 16.66666667%; + } + .am-u-sm-3 { + width: 25%; + } + .am-u-sm-4 { + width: 33.33333333%; + } + .am-u-sm-5 { + width: 41.66666667%; + } + .am-u-sm-6 { + width: 50%; + } + .am-u-sm-7 { + width: 58.33333333%; + } + .am-u-sm-8 { + width: 66.66666667%; + } + .am-u-sm-9 { + width: 75%; + } + .am-u-sm-10 { + width: 83.33333333%; + } + .am-u-sm-11 { + width: 91.66666667%; + } + .am-u-sm-12 { + width: 100%; + } + .am-u-sm-pull-0 { + right: 0; + } + .am-u-sm-pull-1 { + right: 8.33333333%; + } + .am-u-sm-pull-2 { + right: 16.66666667%; + } + .am-u-sm-pull-3 { + right: 25%; + } + .am-u-sm-pull-4 { + right: 33.33333333%; + } + .am-u-sm-pull-5 { + right: 41.66666667%; + } + .am-u-sm-pull-6 { + right: 50%; + } + .am-u-sm-pull-7 { + right: 58.33333333%; + } + .am-u-sm-pull-8 { + right: 66.66666667%; + } + .am-u-sm-pull-9 { + right: 75%; + } + .am-u-sm-pull-10 { + right: 83.33333333%; + } + .am-u-sm-pull-11 { + right: 91.66666667%; + } + .am-u-sm-push-0 { + left: 0; + } + .am-u-sm-push-1 { + left: 8.33333333%; + } + .am-u-sm-push-2 { + left: 16.66666667%; + } + .am-u-sm-push-3 { + left: 25%; + } + .am-u-sm-push-4 { + left: 33.33333333%; + } + .am-u-sm-push-5 { + left: 41.66666667%; + } + .am-u-sm-push-6 { + left: 50%; + } + .am-u-sm-push-7 { + left: 58.33333333%; + } + .am-u-sm-push-8 { + left: 66.66666667%; + } + .am-u-sm-push-9 { + left: 75%; + } + .am-u-sm-push-10 { + left: 83.33333333%; + } + .am-u-sm-push-11 { + left: 91.66666667%; + } + .am-u-sm-offset-0 { + margin-left: 0; + } + .am-u-sm-offset-1 { + margin-left: 8.33333333%; + } + .am-u-sm-offset-2 { + margin-left: 16.66666667%; + } + .am-u-sm-offset-3 { + margin-left: 25%; + } + .am-u-sm-offset-4 { + margin-left: 33.33333333%; + } + .am-u-sm-offset-5 { + margin-left: 41.66666667%; + } + .am-u-sm-offset-6 { + margin-left: 50%; + } + .am-u-sm-offset-7 { + margin-left: 58.33333333%; + } + .am-u-sm-offset-8 { + margin-left: 66.66666667%; + } + .am-u-sm-offset-9 { + margin-left: 75%; + } + .am-u-sm-offset-10 { + margin-left: 83.33333333%; + } + .am-u-sm-offset-11 { + margin-left: 91.66666667%; + } + .am-u-sm-reset-order { + margin-left: 0; + margin-right: 0; + left: auto; + right: auto; + float: left; + } + [class*="am-u-"].am-u-sm-centered { + margin-left: auto; + margin-right: auto; + float: none; + } + [class*="am-u-"].am-u-sm-centered:last-child { + float: none; + } + [class*="am-u-"].am-u-sm-uncentered { + margin-left: 0; + margin-right: 0; + float: left; + } + [class*="am-u-"].am-u-sm-uncentered:last-child { + float: left; + } +} +@media only screen and (min-width:641px) { + .am-u-md-1 { + width: 8.33333333%; + } + .am-u-md-2 { + width: 16.66666667%; + } + .am-u-md-3 { + width: 25%; + } + .am-u-md-4 { + width: 33.33333333%; + } + .am-u-md-5 { + width: 41.66666667%; + } + .am-u-md-6 { + width: 50%; + } + .am-u-md-7 { + width: 58.33333333%; + } + .am-u-md-8 { + width: 66.66666667%; + } + .am-u-md-9 { + width: 75%; + } + .am-u-md-10 { + width: 83.33333333%; + } + .am-u-md-11 { + width: 91.66666667%; + } + .am-u-md-12 { + width: 100%; + } + .am-u-md-pull-0 { + right: 0; + } + .am-u-md-pull-1 { + right: 8.33333333%; + } + .am-u-md-pull-2 { + right: 16.66666667%; + } + .am-u-md-pull-3 { + right: 25%; + } + .am-u-md-pull-4 { + right: 33.33333333%; + } + .am-u-md-pull-5 { + right: 41.66666667%; + } + .am-u-md-pull-6 { + right: 50%; + } + .am-u-md-pull-7 { + right: 58.33333333%; + } + .am-u-md-pull-8 { + right: 66.66666667%; + } + .am-u-md-pull-9 { + right: 75%; + } + .am-u-md-pull-10 { + right: 83.33333333%; + } + .am-u-md-pull-11 { + right: 91.66666667%; + } + .am-u-md-push-0 { + left: 0; + } + .am-u-md-push-1 { + left: 8.33333333%; + } + .am-u-md-push-2 { + left: 16.66666667%; + } + .am-u-md-push-3 { + left: 25%; + } + .am-u-md-push-4 { + left: 33.33333333%; + } + .am-u-md-push-5 { + left: 41.66666667%; + } + .am-u-md-push-6 { + left: 50%; + } + .am-u-md-push-7 { + left: 58.33333333%; + } + .am-u-md-push-8 { + left: 66.66666667%; + } + .am-u-md-push-9 { + left: 75%; + } + .am-u-md-push-10 { + left: 83.33333333%; + } + .am-u-md-push-11 { + left: 91.66666667%; + } + .am-u-md-offset-0 { + margin-left: 0; + } + .am-u-md-offset-1 { + margin-left: 8.33333333%; + } + .am-u-md-offset-2 { + margin-left: 16.66666667%; + } + .am-u-md-offset-3 { + margin-left: 25%; + } + .am-u-md-offset-4 { + margin-left: 33.33333333%; + } + .am-u-md-offset-5 { + margin-left: 41.66666667%; + } + .am-u-md-offset-6 { + margin-left: 50%; + } + .am-u-md-offset-7 { + margin-left: 58.33333333%; + } + .am-u-md-offset-8 { + margin-left: 66.66666667%; + } + .am-u-md-offset-9 { + margin-left: 75%; + } + .am-u-md-offset-10 { + margin-left: 83.33333333%; + } + .am-u-md-offset-11 { + margin-left: 91.66666667%; + } + .am-u-md-reset-order { + margin-left: 0; + margin-right: 0; + left: auto; + right: auto; + float: left; + } + [class*="am-u-"].am-u-md-centered { + margin-left: auto; + margin-right: auto; + float: none; + } + [class*="am-u-"].am-u-md-centered:last-child { + float: none; + } + [class*="am-u-"].am-u-md-uncentered { + margin-left: 0; + margin-right: 0; + float: left; + } + [class*="am-u-"].am-u-md-uncentered:last-child { + float: left; + } +} +@media only screen and (min-width:1025px) { + .am-u-lg-1 { + width: 8.33333333%; + } + .am-u-lg-2 { + width: 16.66666667%; + } + .am-u-lg-3 { + width: 25%; + } + .am-u-lg-4 { + width: 33.33333333%; + } + .am-u-lg-5 { + width: 41.66666667%; + } + .am-u-lg-6 { + width: 50%; + } + .am-u-lg-7 { + width: 58.33333333%; + } + .am-u-lg-8 { + width: 66.66666667%; + } + .am-u-lg-9 { + width: 75%; + } + .am-u-lg-10 { + width: 83.33333333%; + } + .am-u-lg-11 { + width: 91.66666667%; + } + .am-u-lg-12 { + width: 100%; + } + .am-u-lg-pull-0 { + right: 0; + } + .am-u-lg-pull-1 { + right: 8.33333333%; + } + .am-u-lg-pull-2 { + right: 16.66666667%; + } + .am-u-lg-pull-3 { + right: 25%; + } + .am-u-lg-pull-4 { + right: 33.33333333%; + } + .am-u-lg-pull-5 { + right: 41.66666667%; + } + .am-u-lg-pull-6 { + right: 50%; + } + .am-u-lg-pull-7 { + right: 58.33333333%; + } + .am-u-lg-pull-8 { + right: 66.66666667%; + } + .am-u-lg-pull-9 { + right: 75%; + } + .am-u-lg-pull-10 { + right: 83.33333333%; + } + .am-u-lg-pull-11 { + right: 91.66666667%; + } + .am-u-lg-push-0 { + left: 0; + } + .am-u-lg-push-1 { + left: 8.33333333%; + } + .am-u-lg-push-2 { + left: 16.66666667%; + } + .am-u-lg-push-3 { + left: 25%; + } + .am-u-lg-push-4 { + left: 33.33333333%; + } + .am-u-lg-push-5 { + left: 41.66666667%; + } + .am-u-lg-push-6 { + left: 50%; + } + .am-u-lg-push-7 { + left: 58.33333333%; + } + .am-u-lg-push-8 { + left: 66.66666667%; + } + .am-u-lg-push-9 { + left: 75%; + } + .am-u-lg-push-10 { + left: 83.33333333%; + } + .am-u-lg-push-11 { + left: 91.66666667%; + } + .am-u-lg-offset-0 { + margin-left: 0; + } + .am-u-lg-offset-1 { + margin-left: 8.33333333%; + } + .am-u-lg-offset-2 { + margin-left: 16.66666667%; + } + .am-u-lg-offset-3 { + margin-left: 25%; + } + .am-u-lg-offset-4 { + margin-left: 33.33333333%; + } + .am-u-lg-offset-5 { + margin-left: 41.66666667%; + } + .am-u-lg-offset-6 { + margin-left: 50%; + } + .am-u-lg-offset-7 { + margin-left: 58.33333333%; + } + .am-u-lg-offset-8 { + margin-left: 66.66666667%; + } + .am-u-lg-offset-9 { + margin-left: 75%; + } + .am-u-lg-offset-10 { + margin-left: 83.33333333%; + } + .am-u-lg-offset-11 { + margin-left: 91.66666667%; + } + .am-u-lg-reset-order { + margin-left: 0; + margin-right: 0; + left: auto; + right: auto; + float: left; + } + [class*="am-u-"].am-u-lg-centered { + margin-left: auto; + margin-right: auto; + float: none; + } + [class*="am-u-"].am-u-lg-centered:last-child { + float: none; + } + [class*="am-u-"].am-u-lg-uncentered { + margin-left: 0; + margin-right: 0; + float: left; + } + [class*="am-u-"].am-u-lg-uncentered:last-child { + float: left; + } +} +/* ========================================================================== + Component: AVG Grid + ============================================================================ */ +[class*="am-avg-"] { + display: block; + padding: 0; + margin: 0; + list-style: none; +} +[class*="am-avg-"]:before, +[class*="am-avg-"]:after { + content: " "; + display: table; +} +[class*="am-avg-"]:after { + clear: both; +} +[class*="am-avg-"] > li { + display: block; + height: auto; + float: left; +} +@media only screen { + .am-avg-sm-1 > li { + width: 100%; + } + .am-avg-sm-1 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-1 > li:nth-of-type(1n + 1) { + clear: both; + } + .am-avg-sm-2 > li { + width: 50%; + } + .am-avg-sm-2 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-2 > li:nth-of-type(2n + 1) { + clear: both; + } + .am-avg-sm-3 > li { + width: 33.33333333%; + } + .am-avg-sm-3 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-3 > li:nth-of-type(3n + 1) { + clear: both; + } + .am-avg-sm-4 > li { + width: 25%; + } + .am-avg-sm-4 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-4 > li:nth-of-type(4n + 1) { + clear: both; + } + .am-avg-sm-5 > li { + width: 20%; + } + .am-avg-sm-5 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-5 > li:nth-of-type(5n + 1) { + clear: both; + } + .am-avg-sm-6 > li { + width: 16.66666667%; + } + .am-avg-sm-6 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-6 > li:nth-of-type(6n + 1) { + clear: both; + } + .am-avg-sm-7 > li { + width: 14.28571429%; + } + .am-avg-sm-7 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-7 > li:nth-of-type(7n + 1) { + clear: both; + } + .am-avg-sm-8 > li { + width: 12.5%; + } + .am-avg-sm-8 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-8 > li:nth-of-type(8n + 1) { + clear: both; + } + .am-avg-sm-9 > li { + width: 11.11111111%; + } + .am-avg-sm-9 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-9 > li:nth-of-type(9n + 1) { + clear: both; + } + .am-avg-sm-10 > li { + width: 10%; + } + .am-avg-sm-10 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-10 > li:nth-of-type(10n + 1) { + clear: both; + } + .am-avg-sm-11 > li { + width: 9.09090909%; + } + .am-avg-sm-11 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-11 > li:nth-of-type(11n + 1) { + clear: both; + } + .am-avg-sm-12 > li { + width: 8.33333333%; + } + .am-avg-sm-12 > li:nth-of-type(n) { + clear: none; + } + .am-avg-sm-12 > li:nth-of-type(12n + 1) { + clear: both; + } +} +@media only screen and (min-width:641px) { + .am-avg-md-1 > li { + width: 100%; + } + .am-avg-md-1 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-1 > li:nth-of-type(1n + 1) { + clear: both; + } + .am-avg-md-2 > li { + width: 50%; + } + .am-avg-md-2 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-2 > li:nth-of-type(2n + 1) { + clear: both; + } + .am-avg-md-3 > li { + width: 33.33333333%; + } + .am-avg-md-3 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-3 > li:nth-of-type(3n + 1) { + clear: both; + } + .am-avg-md-4 > li { + width: 25%; + } + .am-avg-md-4 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-4 > li:nth-of-type(4n + 1) { + clear: both; + } + .am-avg-md-5 > li { + width: 20%; + } + .am-avg-md-5 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-5 > li:nth-of-type(5n + 1) { + clear: both; + } + .am-avg-md-6 > li { + width: 16.66666667%; + } + .am-avg-md-6 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-6 > li:nth-of-type(6n + 1) { + clear: both; + } + .am-avg-md-7 > li { + width: 14.28571429%; + } + .am-avg-md-7 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-7 > li:nth-of-type(7n + 1) { + clear: both; + } + .am-avg-md-8 > li { + width: 12.5%; + } + .am-avg-md-8 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-8 > li:nth-of-type(8n + 1) { + clear: both; + } + .am-avg-md-9 > li { + width: 11.11111111%; + } + .am-avg-md-9 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-9 > li:nth-of-type(9n + 1) { + clear: both; + } + .am-avg-md-10 > li { + width: 10%; + } + .am-avg-md-10 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-10 > li:nth-of-type(10n + 1) { + clear: both; + } + .am-avg-md-11 > li { + width: 9.09090909%; + } + .am-avg-md-11 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-11 > li:nth-of-type(11n + 1) { + clear: both; + } + .am-avg-md-12 > li { + width: 8.33333333%; + } + .am-avg-md-12 > li:nth-of-type(n) { + clear: none; + } + .am-avg-md-12 > li:nth-of-type(12n + 1) { + clear: both; + } +} +@media only screen and (min-width:1025px) { + .am-avg-lg-1 > li { + width: 100%; + } + .am-avg-lg-1 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-1 > li:nth-of-type(1n + 1) { + clear: both; + } + .am-avg-lg-2 > li { + width: 50%; + } + .am-avg-lg-2 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-2 > li:nth-of-type(2n + 1) { + clear: both; + } + .am-avg-lg-3 > li { + width: 33.33333333%; + } + .am-avg-lg-3 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-3 > li:nth-of-type(3n + 1) { + clear: both; + } + .am-avg-lg-4 > li { + width: 25%; + } + .am-avg-lg-4 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-4 > li:nth-of-type(4n + 1) { + clear: both; + } + .am-avg-lg-5 > li { + width: 20%; + } + .am-avg-lg-5 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-5 > li:nth-of-type(5n + 1) { + clear: both; + } + .am-avg-lg-6 > li { + width: 16.66666667%; + } + .am-avg-lg-6 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-6 > li:nth-of-type(6n + 1) { + clear: both; + } + .am-avg-lg-7 > li { + width: 14.28571429%; + } + .am-avg-lg-7 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-7 > li:nth-of-type(7n + 1) { + clear: both; + } + .am-avg-lg-8 > li { + width: 12.5%; + } + .am-avg-lg-8 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-8 > li:nth-of-type(8n + 1) { + clear: both; + } + .am-avg-lg-9 > li { + width: 11.11111111%; + } + .am-avg-lg-9 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-9 > li:nth-of-type(9n + 1) { + clear: both; + } + .am-avg-lg-10 > li { + width: 10%; + } + .am-avg-lg-10 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-10 > li:nth-of-type(10n + 1) { + clear: both; + } + .am-avg-lg-11 > li { + width: 9.09090909%; + } + .am-avg-lg-11 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-11 > li:nth-of-type(11n + 1) { + clear: both; + } + .am-avg-lg-12 > li { + width: 8.33333333%; + } + .am-avg-lg-12 > li:nth-of-type(n) { + clear: none; + } + .am-avg-lg-12 > li:nth-of-type(12n + 1) { + clear: both; + } +} +/* ========================================================================== + Component: Code + ============================================================================ */ +/* Inline and block code styles */ +code, +kbd, +pre, +samp { + font-family: Monaco, Menlo, Consolas, "Courier New", "FontAwesome", monospace; +} +/* Inline code */ +code { + padding: 2px 4px; + font-size: 1.3rem; + color: #c7254e; + background-color: #f8f8f8; + white-space: nowrap; + border-radius: 2px; +} +/* Code block */ +pre { + display: block; + padding: 1rem; + margin: 1rem 0; + font-size: 1.3rem; + line-height: 1.6; + word-break: break-all; + word-wrap: break-word; + color: #555555; + background-color: #f8f8f8; + border: 1px solid #dedede; + border-radius: 2px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +/* Enable scrollable blocks of code */ +.am-pre-scrollable { + max-height: 24rem; + overflow-y: scroll; +} +/* ========================================================================== + Component: Button + ============================================================================ */ +.am-btn { + display: inline-block; + margin-bottom: 0; + padding: 0.625em 1em; + vertical-align: middle; + font-size: 1.6rem; + font-weight: normal; + line-height: 1.2; + text-align: center; + white-space: nowrap; + background-image: none; + border: 1px solid transparent; + border-radius: 2px; + cursor: pointer; + outline: 0; + -webkit-appearance: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transition: background-color 300ms ease-out, border-color 300ms ease-out; + transition: background-color 300ms ease-out, border-color 300ms ease-out; +} +.am-btn.am-square { + border-radius: 0; +} +.am-btn:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.am-btn:hover, +.am-btn:focus { + outline: 0; + color: #444444; + text-decoration: none; +} +.am-btn:active, +.am-btn.am-active { + background-image: none; + -webkit-box-shadow: inset 0 1px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 1px 8px rgba(0, 0, 0, 0.125); +} +.am-btn.am-disabled, +.am-btn[disabled], +fieldset[disabled] .am-btn { + pointer-events: none; + border-color: transparent; + cursor: not-allowed; + opacity: 0.45; + -webkit-box-shadow: none; + box-shadow: none; +} +.am-btn.am-round { + border-radius: 1000px; +} +.am-btn.am-radius { + border-radius: 2px; +} +.am-btn-default { + color: #444444; + background-color: #e6e6e6; + border-color: #e6e6e6; +} +.am-btn-default:hover, +.am-btn-default:focus, +.am-btn-default:active, +.am-btn-default.am-active, +.am-active .am-btn-default.am-dropdown-toggle { + color: #444444; + background-color: #c7c7c7; + border-color: #c7c7c7; +} +.am-btn-default:active, +.am-btn-default.am-btn-active, +.am-active .am-btn-default.am-dropdown-toggle { + background-image: none; +} +.am-btn-default.am-disabled, +.am-btn-default[disabled], +fieldset[disabled] .am-btn-default, +.am-btn-default.am-disabled:hover, +.am-btn-default[disabled]:hover, +fieldset[disabled] .am-btn-default:hover, +.am-btn-default.am-disabled:focus, +.am-btn-default[disabled]:focus, +fieldset[disabled] .am-btn-default:focus, +.am-btn-default.am-disabled:active, +.am-btn-default[disabled]:active, +fieldset[disabled] .am-btn-default:active, +.am-btn-default.am-disabled.am-btn-active, +.am-btn-default[disabled].am-btn-active, +fieldset[disabled] .am-btn-default.am-btn-active { + background-color: #e6e6e6; + border-color: #e6e6e6; +} +.am-btn-group .am-btn-default, +.am-btn-group-stacked .am-btn-default { + border-color: #d9d9d9; +} +.am-btn-primary { + color: #ffffff; + background-color: #0e90d2; + border-color: #0e90d2; +} +.am-btn-primary:hover, +.am-btn-primary:focus, +.am-btn-primary:active, +.am-btn-primary.am-active, +.am-active .am-btn-primary.am-dropdown-toggle { + color: #ffffff; + background-color: #0a6999; + border-color: #0a6999; +} +.am-btn-primary:active, +.am-btn-primary.am-btn-active, +.am-active .am-btn-primary.am-dropdown-toggle { + background-image: none; +} +.am-btn-primary.am-disabled, +.am-btn-primary[disabled], +fieldset[disabled] .am-btn-primary, +.am-btn-primary.am-disabled:hover, +.am-btn-primary[disabled]:hover, +fieldset[disabled] .am-btn-primary:hover, +.am-btn-primary.am-disabled:focus, +.am-btn-primary[disabled]:focus, +fieldset[disabled] .am-btn-primary:focus, +.am-btn-primary.am-disabled:active, +.am-btn-primary[disabled]:active, +fieldset[disabled] .am-btn-primary:active, +.am-btn-primary.am-disabled.am-btn-active, +.am-btn-primary[disabled].am-btn-active, +fieldset[disabled] .am-btn-primary.am-btn-active { + background-color: #0e90d2; + border-color: #0e90d2; +} +.am-btn-group .am-btn-primary, +.am-btn-group-stacked .am-btn-primary { + border-color: #0c80ba; +} +.am-btn-warning { + color: #ffffff; + background-color: #f37b1d; + border-color: #f37b1d; +} +.am-btn-warning:hover, +.am-btn-warning:focus, +.am-btn-warning:active, +.am-btn-warning.am-active, +.am-active .am-btn-warning.am-dropdown-toggle { + color: #ffffff; + background-color: #c85e0b; + border-color: #c85e0b; +} +.am-btn-warning:active, +.am-btn-warning.am-btn-active, +.am-active .am-btn-warning.am-dropdown-toggle { + background-image: none; +} +.am-btn-warning.am-disabled, +.am-btn-warning[disabled], +fieldset[disabled] .am-btn-warning, +.am-btn-warning.am-disabled:hover, +.am-btn-warning[disabled]:hover, +fieldset[disabled] .am-btn-warning:hover, +.am-btn-warning.am-disabled:focus, +.am-btn-warning[disabled]:focus, +fieldset[disabled] .am-btn-warning:focus, +.am-btn-warning.am-disabled:active, +.am-btn-warning[disabled]:active, +fieldset[disabled] .am-btn-warning:active, +.am-btn-warning.am-disabled.am-btn-active, +.am-btn-warning[disabled].am-btn-active, +fieldset[disabled] .am-btn-warning.am-btn-active { + background-color: #f37b1d; + border-color: #f37b1d; +} +.am-btn-group .am-btn-warning, +.am-btn-group-stacked .am-btn-warning { + border-color: #ea6e0c; +} +.am-btn-danger { + color: #ffffff; + background-color: #dd514c; + border-color: #dd514c; +} +.am-btn-danger:hover, +.am-btn-danger:focus, +.am-btn-danger:active, +.am-btn-danger.am-active, +.am-active .am-btn-danger.am-dropdown-toggle { + color: #ffffff; + background-color: #c62b26; + border-color: #c62b26; +} +.am-btn-danger:active, +.am-btn-danger.am-btn-active, +.am-active .am-btn-danger.am-dropdown-toggle { + background-image: none; +} +.am-btn-danger.am-disabled, +.am-btn-danger[disabled], +fieldset[disabled] .am-btn-danger, +.am-btn-danger.am-disabled:hover, +.am-btn-danger[disabled]:hover, +fieldset[disabled] .am-btn-danger:hover, +.am-btn-danger.am-disabled:focus, +.am-btn-danger[disabled]:focus, +fieldset[disabled] .am-btn-danger:focus, +.am-btn-danger.am-disabled:active, +.am-btn-danger[disabled]:active, +fieldset[disabled] .am-btn-danger:active, +.am-btn-danger.am-disabled.am-btn-active, +.am-btn-danger[disabled].am-btn-active, +fieldset[disabled] .am-btn-danger.am-btn-active { + background-color: #dd514c; + border-color: #dd514c; +} +.am-btn-group .am-btn-danger, +.am-btn-group-stacked .am-btn-danger { + border-color: #d93c37; +} +.am-btn-success { + color: #ffffff; + background-color: #5eb95e; + border-color: #5eb95e; +} +.am-btn-success:hover, +.am-btn-success:focus, +.am-btn-success:active, +.am-btn-success.am-active, +.am-active .am-btn-success.am-dropdown-toggle { + color: #ffffff; + background-color: #429842; + border-color: #429842; +} +.am-btn-success:active, +.am-btn-success.am-btn-active, +.am-active .am-btn-success.am-dropdown-toggle { + background-image: none; +} +.am-btn-success.am-disabled, +.am-btn-success[disabled], +fieldset[disabled] .am-btn-success, +.am-btn-success.am-disabled:hover, +.am-btn-success[disabled]:hover, +fieldset[disabled] .am-btn-success:hover, +.am-btn-success.am-disabled:focus, +.am-btn-success[disabled]:focus, +fieldset[disabled] .am-btn-success:focus, +.am-btn-success.am-disabled:active, +.am-btn-success[disabled]:active, +fieldset[disabled] .am-btn-success:active, +.am-btn-success.am-disabled.am-btn-active, +.am-btn-success[disabled].am-btn-active, +fieldset[disabled] .am-btn-success.am-btn-active { + background-color: #5eb95e; + border-color: #5eb95e; +} +.am-btn-group .am-btn-success, +.am-btn-group-stacked .am-btn-success { + border-color: #4db14d; +} +.am-btn-secondary { + color: #ffffff; + background-color: #3bb4f2; + border-color: #3bb4f2; +} +.am-btn-secondary:hover, +.am-btn-secondary:focus, +.am-btn-secondary:active, +.am-btn-secondary.am-active, +.am-active .am-btn-secondary.am-dropdown-toggle { + color: #ffffff; + background-color: #0f9ae0; + border-color: #0f9ae0; +} +.am-btn-secondary:active, +.am-btn-secondary.am-btn-active, +.am-active .am-btn-secondary.am-dropdown-toggle { + background-image: none; +} +.am-btn-secondary.am-disabled, +.am-btn-secondary[disabled], +fieldset[disabled] .am-btn-secondary, +.am-btn-secondary.am-disabled:hover, +.am-btn-secondary[disabled]:hover, +fieldset[disabled] .am-btn-secondary:hover, +.am-btn-secondary.am-disabled:focus, +.am-btn-secondary[disabled]:focus, +fieldset[disabled] .am-btn-secondary:focus, +.am-btn-secondary.am-disabled:active, +.am-btn-secondary[disabled]:active, +fieldset[disabled] .am-btn-secondary:active, +.am-btn-secondary.am-disabled.am-btn-active, +.am-btn-secondary[disabled].am-btn-active, +fieldset[disabled] .am-btn-secondary.am-btn-active { + background-color: #3bb4f2; + border-color: #3bb4f2; +} +.am-btn-group .am-btn-secondary, +.am-btn-group-stacked .am-btn-secondary { + border-color: #23abf0; +} +/* Style links like a button */ +.am-btn-link { + color: #0e90d2; + font-weight: normal; + cursor: pointer; + border-radius: 0; +} +.am-btn-link, +.am-btn-link:active, +.am-btn-link[disabled], +fieldset[disabled] .am-btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.am-btn-link, +.am-btn-link:hover, +.am-btn-link:focus, +.am-btn-link:active { + border-color: transparent; +} +.am-btn-link:hover, +.am-btn-link:focus { + color: #095f8a; + text-decoration: underline; + background-color: transparent; +} +.am-btn-link[disabled]:hover, +fieldset[disabled] .am-btn-link:hover, +.am-btn-link[disabled]:focus, +fieldset[disabled] .am-btn-link:focus { + color: #999999; + text-decoration: none; +} +/* button size */ +.am-btn-xs { + font-size: 1.2rem; +} +.am-btn-sm { + font-size: 1.4rem; +} +.am-btn-lg { + font-size: 1.8rem; +} +.am-btn-xl { + font-size: 2rem; +} +/* Block button */ +.am-btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} +/* Multiple block buttons vertically space */ +.am-btn-block + .am-btn-block { + margin-top: 5px; +} +/* Specificity overrides */ +input[type="submit"].am-btn-block, +input[type="reset"].am-btn-block, +input[type="button"].am-btn-block { + width: 100%; +} +/* Button with loading spinner */ +.am-btn.am-btn-loading .am-icon-spin { + margin-right: 5px; +} +/* ========================================================================== + Component: Table + ============================================================================ */ +table { + max-width: 100%; + background-color: transparent; + empty-cells: show; +} +table code { + white-space: normal; +} +th { + text-align: left; +} +.am-table { + width: 100%; + margin-bottom: 1.6rem; + border-spacing: 0; + border-collapse: separate; +} +.am-table > thead > tr > th, +.am-table > tbody > tr > th, +.am-table > tfoot > tr > th, +.am-table > thead > tr > td, +.am-table > tbody > tr > td, +.am-table > tfoot > tr > td { + padding: 0.7rem; + line-height: 1.6; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.am-table > thead > tr > th { + vertical-align: bottom; + border-bottom: 1px solid #dddddd; +} +.am-table > caption + thead > tr:first-child > th, +.am-table > colgroup + thead > tr:first-child > th, +.am-table > thead:first-child > tr:first-child > th, +.am-table > caption + thead > tr:first-child > td, +.am-table > colgroup + thead > tr:first-child > td, +.am-table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.am-table > tbody + tbody tr:first-child td { + border-top: 2px solid #dddddd; +} +/* Bordered version */ +.am-table-bordered { + border: 1px solid #dddddd; +} +.am-table-bordered > thead > tr > th, +.am-table-bordered > tbody > tr > th, +.am-table-bordered > tfoot > tr > th, +.am-table-bordered > thead > tr > td, +.am-table-bordered > tbody > tr > td, +.am-table-bordered > tfoot > tr > td { + border-left: 1px solid #dddddd; +} +.am-table-bordered > thead > tr > th:first-child, +.am-table-bordered > tbody > tr > th:first-child, +.am-table-bordered > tfoot > tr > th:first-child, +.am-table-bordered > thead > tr > td:first-child, +.am-table-bordered > tbody > tr > td:first-child, +.am-table-bordered > tfoot > tr > td:first-child { + border-left: none; +} +/* Border-radius version */ +.am-table-radius { + border: 1px solid #dddddd; + border-radius: 2px; +} +.am-table-radius > thead > tr:first-child > th:first-child, +.am-table-radius > thead > tr:first-child > td:first-child { + border-top-left-radius: 2px; + border-left: none; +} +.am-table-radius > thead > tr:first-child > th:last-child, +.am-table-radius > thead > tr:first-child > td:last-child { + border-top-right-radius: 2px; + border-right: none; +} +.am-table-radius > tbody > tr > th:first-child, +.am-table-radius > tbody > tr > td:first-child { + border-left: none; +} +.am-table-radius > tbody > tr > th:last-child, +.am-table-radius > tbody > tr > td:last-child { + border-right: none; +} +.am-table-radius > tbody > tr:last-child > th, +.am-table-radius > tbody > tr:last-child > td { + border-bottom: none; +} +.am-table-radius > tbody > tr:last-child > th:first-child, +.am-table-radius > tbody > tr:last-child > td:first-child { + border-bottom-left-radius: 2px; +} +.am-table-radius > tbody > tr:last-child > th:last-child, +.am-table-radius > tbody > tr:last-child > td:last-child { + border-bottom-right-radius: 2px; +} +/* Zebra-striping */ +.am-table-striped > tbody > tr:nth-child(odd) > td, +.am-table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +/* Hover effect */ +.am-table-hover > tbody > tr:hover > td, +.am-table-hover > tbody > tr:hover > th { + background-color: #e9e9e9; +} +.am-table > thead > tr > td.am-active, +.am-table > tbody > tr > td.am-active, +.am-table > tfoot > tr > td.am-active, +.am-table > thead > tr > th.am-active, +.am-table > tbody > tr > th.am-active, +.am-table > tfoot > tr > th.am-active, +.am-table > thead > tr.am-active > td, +.am-table > tbody > tr.am-active > td, +.am-table > tfoot > tr.am-active > td, +.am-table > thead > tr.am-active > th, +.am-table > tbody > tr.am-active > th, +.am-table > tfoot > tr.am-active > th { + background-color: #ffffdd; +} +.am-table > thead > tr > td.am-disabled, +.am-table > tbody > tr > td.am-disabled, +.am-table > tfoot > tr > td.am-disabled, +.am-table > thead > tr > th.am-disabled, +.am-table > tbody > tr > th.am-disabled, +.am-table > tfoot > tr > th.am-disabled, +.am-table > thead > tr.am-disabled > td, +.am-table > tbody > tr.am-disabled > td, +.am-table > tfoot > tr.am-disabled > td, +.am-table > thead > tr.am-disabled > th, +.am-table > tbody > tr.am-disabled > th, +.am-table > tfoot > tr.am-disabled > th { + color: #999999; +} +.am-table > thead > tr > td.am-primary, +.am-table > tbody > tr > td.am-primary, +.am-table > tfoot > tr > td.am-primary, +.am-table > thead > tr > th.am-primary, +.am-table > tbody > tr > th.am-primary, +.am-table > tfoot > tr > th.am-primary, +.am-table > thead > tr.am-primary > td, +.am-table > tbody > tr.am-primary > td, +.am-table > tfoot > tr.am-primary > td, +.am-table > thead > tr.am-primary > th, +.am-table > tbody > tr.am-primary > th, +.am-table > tfoot > tr.am-primary > th { + color: #0b76ac; + background-color: rgba(14, 144, 210, 0.115); +} +.am-table > thead > tr > td.am-success, +.am-table > tbody > tr > td.am-success, +.am-table > tfoot > tr > td.am-success, +.am-table > thead > tr > th.am-success, +.am-table > tbody > tr > th.am-success, +.am-table > tfoot > tr > th.am-success, +.am-table > thead > tr.am-success > td, +.am-table > tbody > tr.am-success > td, +.am-table > tfoot > tr.am-success > td, +.am-table > thead > tr.am-success > th, +.am-table > tbody > tr.am-success > th, +.am-table > tfoot > tr.am-success > th { + color: #5eb95e; + background-color: rgba(94, 185, 94, 0.115); +} +.am-table > thead > tr > td.am-warning, +.am-table > tbody > tr > td.am-warning, +.am-table > tfoot > tr > td.am-warning, +.am-table > thead > tr > th.am-warning, +.am-table > tbody > tr > th.am-warning, +.am-table > tfoot > tr > th.am-warning, +.am-table > thead > tr.am-warning > td, +.am-table > tbody > tr.am-warning > td, +.am-table > tfoot > tr.am-warning > td, +.am-table > thead > tr.am-warning > th, +.am-table > tbody > tr.am-warning > th, +.am-table > tfoot > tr.am-warning > th { + color: #f37b1d; + background-color: rgba(243, 123, 29, 0.115); +} +.am-table > thead > tr > td.am-danger, +.am-table > tbody > tr > td.am-danger, +.am-table > tfoot > tr > td.am-danger, +.am-table > thead > tr > th.am-danger, +.am-table > tbody > tr > th.am-danger, +.am-table > tfoot > tr > th.am-danger, +.am-table > thead > tr.am-danger > td, +.am-table > tbody > tr.am-danger > td, +.am-table > tfoot > tr.am-danger > td, +.am-table > thead > tr.am-danger > th, +.am-table > tbody > tr.am-danger > th, +.am-table > tfoot > tr.am-danger > th { + color: #dd514c; + background-color: rgba(221, 81, 76, 0.115); +} +/* ========================================================================== + Component: Form + ============================================================================ */ +/* Normalize */ +fieldset { + border: none; +} +legend { + display: block; + width: 100%; + margin-bottom: 2rem; + font-size: 2rem; + line-height: inherit; + color: #333333; + border-bottom: 1px solid #e5e5e5; + padding-bottom: 0.5rem; +} +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + line-height: normal; +} +input[type="file"] { + display: block; +} +select[multiple], +select[size] { + height: auto; +} +select optgroup { + font-size: inherit; + font-style: inherit; + font-family: inherit; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; +} +output { + display: block; + padding-top: 1.6rem; + font-size: 1.6rem; + line-height: 1.6; + color: #555555; + vertical-align: middle; +} +/* Common form controls */ +.am-form select, +.am-form textarea, +.am-form input[type="text"], +.am-form input[type="password"], +.am-form input[type="datetime"], +.am-form input[type="datetime-local"], +.am-form input[type="date"], +.am-form input[type="month"], +.am-form input[type="time"], +.am-form input[type="week"], +.am-form input[type="number"], +.am-form input[type="email"], +.am-form input[type="url"], +.am-form input[type="search"], +.am-form input[type="tel"], +.am-form input[type="color"], +.am-form-field { + display: block; + width: 100%; + padding: 0.625em; + font-size: 1.6rem; + line-height: 1.2; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 2px; + -webkit-appearance: none; + -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.am-form select.am-square, +.am-form textarea.am-square, +.am-form input[type="text"].am-square, +.am-form input[type="password"].am-square, +.am-form input[type="datetime"].am-square, +.am-form input[type="datetime-local"].am-square, +.am-form input[type="date"].am-square, +.am-form input[type="month"].am-square, +.am-form input[type="time"].am-square, +.am-form input[type="week"].am-square, +.am-form input[type="number"].am-square, +.am-form input[type="email"].am-square, +.am-form input[type="url"].am-square, +.am-form input[type="search"].am-square, +.am-form input[type="tel"].am-square, +.am-form input[type="color"].am-square, +.am-form-field.am-square { + border-radius: 0; +} +.am-form select:focus, +.am-form textarea:focus, +.am-form input[type="text"]:focus, +.am-form input[type="password"]:focus, +.am-form input[type="datetime"]:focus, +.am-form input[type="datetime-local"]:focus, +.am-form input[type="date"]:focus, +.am-form input[type="month"]:focus, +.am-form input[type="time"]:focus, +.am-form input[type="week"]:focus, +.am-form input[type="number"]:focus, +.am-form input[type="email"]:focus, +.am-form input[type="url"]:focus, +.am-form input[type="search"]:focus, +.am-form input[type="tel"]:focus, +.am-form input[type="color"]:focus, +.am-form-field:focus { + outline: 0; +} +.am-form select:focus, +.am-form textarea:focus, +.am-form input[type="text"]:focus, +.am-form input[type="password"]:focus, +.am-form input[type="datetime"]:focus, +.am-form input[type="datetime-local"]:focus, +.am-form input[type="date"]:focus, +.am-form input[type="month"]:focus, +.am-form input[type="time"]:focus, +.am-form input[type="week"]:focus, +.am-form input[type="number"]:focus, +.am-form input[type="email"]:focus, +.am-form input[type="url"]:focus, +.am-form input[type="search"]:focus, +.am-form input[type="tel"]:focus, +.am-form input[type="color"]:focus, +.am-form-field:focus { + background-color: #fefffe; + border-color: #3bb4f2; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 5px rgba(59, 180, 242, 0.3); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 5px rgba(59, 180, 242, 0.3); +} +.am-form select::-webkit-input-placeholder, +.am-form textarea::-webkit-input-placeholder, +.am-form input[type="text"]::-webkit-input-placeholder, +.am-form input[type="password"]::-webkit-input-placeholder, +.am-form input[type="datetime"]::-webkit-input-placeholder, +.am-form input[type="datetime-local"]::-webkit-input-placeholder, +.am-form input[type="date"]::-webkit-input-placeholder, +.am-form input[type="month"]::-webkit-input-placeholder, +.am-form input[type="time"]::-webkit-input-placeholder, +.am-form input[type="week"]::-webkit-input-placeholder, +.am-form input[type="number"]::-webkit-input-placeholder, +.am-form input[type="email"]::-webkit-input-placeholder, +.am-form input[type="url"]::-webkit-input-placeholder, +.am-form input[type="search"]::-webkit-input-placeholder, +.am-form input[type="tel"]::-webkit-input-placeholder, +.am-form input[type="color"]::-webkit-input-placeholder, +.am-form-field::-webkit-input-placeholder { + color: #999999; +} +.am-form select::-moz-placeholder, +.am-form textarea::-moz-placeholder, +.am-form input[type="text"]::-moz-placeholder, +.am-form input[type="password"]::-moz-placeholder, +.am-form input[type="datetime"]::-moz-placeholder, +.am-form input[type="datetime-local"]::-moz-placeholder, +.am-form input[type="date"]::-moz-placeholder, +.am-form input[type="month"]::-moz-placeholder, +.am-form input[type="time"]::-moz-placeholder, +.am-form input[type="week"]::-moz-placeholder, +.am-form input[type="number"]::-moz-placeholder, +.am-form input[type="email"]::-moz-placeholder, +.am-form input[type="url"]::-moz-placeholder, +.am-form input[type="search"]::-moz-placeholder, +.am-form input[type="tel"]::-moz-placeholder, +.am-form input[type="color"]::-moz-placeholder, +.am-form-field::-moz-placeholder { + color: #999999; +} +.am-form select:-ms-input-placeholder, +.am-form textarea:-ms-input-placeholder, +.am-form input[type="text"]:-ms-input-placeholder, +.am-form input[type="password"]:-ms-input-placeholder, +.am-form input[type="datetime"]:-ms-input-placeholder, +.am-form input[type="datetime-local"]:-ms-input-placeholder, +.am-form input[type="date"]:-ms-input-placeholder, +.am-form input[type="month"]:-ms-input-placeholder, +.am-form input[type="time"]:-ms-input-placeholder, +.am-form input[type="week"]:-ms-input-placeholder, +.am-form input[type="number"]:-ms-input-placeholder, +.am-form input[type="email"]:-ms-input-placeholder, +.am-form input[type="url"]:-ms-input-placeholder, +.am-form input[type="search"]:-ms-input-placeholder, +.am-form input[type="tel"]:-ms-input-placeholder, +.am-form input[type="color"]:-ms-input-placeholder, +.am-form-field:-ms-input-placeholder { + color: #999999; +} +.am-form select::placeholder, +.am-form textarea::placeholder, +.am-form input[type="text"]::placeholder, +.am-form input[type="password"]::placeholder, +.am-form input[type="datetime"]::placeholder, +.am-form input[type="datetime-local"]::placeholder, +.am-form input[type="date"]::placeholder, +.am-form input[type="month"]::placeholder, +.am-form input[type="time"]::placeholder, +.am-form input[type="week"]::placeholder, +.am-form input[type="number"]::placeholder, +.am-form input[type="email"]::placeholder, +.am-form input[type="url"]::placeholder, +.am-form input[type="search"]::placeholder, +.am-form input[type="tel"]::placeholder, +.am-form input[type="color"]::placeholder, +.am-form-field::placeholder { + color: #999999; +} +.am-form select::-moz-placeholder, +.am-form textarea::-moz-placeholder, +.am-form input[type="text"]::-moz-placeholder, +.am-form input[type="password"]::-moz-placeholder, +.am-form input[type="datetime"]::-moz-placeholder, +.am-form input[type="datetime-local"]::-moz-placeholder, +.am-form input[type="date"]::-moz-placeholder, +.am-form input[type="month"]::-moz-placeholder, +.am-form input[type="time"]::-moz-placeholder, +.am-form input[type="week"]::-moz-placeholder, +.am-form input[type="number"]::-moz-placeholder, +.am-form input[type="email"]::-moz-placeholder, +.am-form input[type="url"]::-moz-placeholder, +.am-form input[type="search"]::-moz-placeholder, +.am-form input[type="tel"]::-moz-placeholder, +.am-form input[type="color"]::-moz-placeholder, +.am-form-field::-moz-placeholder { + opacity: 1; +} +.am-form select[disabled], +.am-form textarea[disabled], +.am-form input[type="text"][disabled], +.am-form input[type="password"][disabled], +.am-form input[type="datetime"][disabled], +.am-form input[type="datetime-local"][disabled], +.am-form input[type="date"][disabled], +.am-form input[type="month"][disabled], +.am-form input[type="time"][disabled], +.am-form input[type="week"][disabled], +.am-form input[type="number"][disabled], +.am-form input[type="email"][disabled], +.am-form input[type="url"][disabled], +.am-form input[type="search"][disabled], +.am-form input[type="tel"][disabled], +.am-form input[type="color"][disabled], +.am-form-field[disabled], +.am-form select[readonly], +.am-form textarea[readonly], +.am-form input[type="text"][readonly], +.am-form input[type="password"][readonly], +.am-form input[type="datetime"][readonly], +.am-form input[type="datetime-local"][readonly], +.am-form input[type="date"][readonly], +.am-form input[type="month"][readonly], +.am-form input[type="time"][readonly], +.am-form input[type="week"][readonly], +.am-form input[type="number"][readonly], +.am-form input[type="email"][readonly], +.am-form input[type="url"][readonly], +.am-form input[type="search"][readonly], +.am-form input[type="tel"][readonly], +.am-form input[type="color"][readonly], +.am-form-field[readonly], +fieldset[disabled] .am-form select, +fieldset[disabled] .am-form textarea, +fieldset[disabled] .am-form input[type="text"], +fieldset[disabled] .am-form input[type="password"], +fieldset[disabled] .am-form input[type="datetime"], +fieldset[disabled] .am-form input[type="datetime-local"], +fieldset[disabled] .am-form input[type="date"], +fieldset[disabled] .am-form input[type="month"], +fieldset[disabled] .am-form input[type="time"], +fieldset[disabled] .am-form input[type="week"], +fieldset[disabled] .am-form input[type="number"], +fieldset[disabled] .am-form input[type="email"], +fieldset[disabled] .am-form input[type="url"], +fieldset[disabled] .am-form input[type="search"], +fieldset[disabled] .am-form input[type="tel"], +fieldset[disabled] .am-form input[type="color"], +fieldset[disabled] .am-form-field { + cursor: not-allowed; + background-color: #eeeeee; +} +.am-form select.am-radius, +.am-form textarea.am-radius, +.am-form input[type="text"].am-radius, +.am-form input[type="password"].am-radius, +.am-form input[type="datetime"].am-radius, +.am-form input[type="datetime-local"].am-radius, +.am-form input[type="date"].am-radius, +.am-form input[type="month"].am-radius, +.am-form input[type="time"].am-radius, +.am-form input[type="week"].am-radius, +.am-form input[type="number"].am-radius, +.am-form input[type="email"].am-radius, +.am-form input[type="url"].am-radius, +.am-form input[type="search"].am-radius, +.am-form input[type="tel"].am-radius, +.am-form input[type="color"].am-radius, +.am-form-field.am-radius { + border-radius: 2px; +} +.am-form select.am-round, +.am-form textarea.am-round, +.am-form input[type="text"].am-round, +.am-form input[type="password"].am-round, +.am-form input[type="datetime"].am-round, +.am-form input[type="datetime-local"].am-round, +.am-form input[type="date"].am-round, +.am-form input[type="month"].am-round, +.am-form input[type="time"].am-round, +.am-form input[type="week"].am-round, +.am-form input[type="number"].am-round, +.am-form input[type="email"].am-round, +.am-form input[type="url"].am-round, +.am-form input[type="search"].am-round, +.am-form input[type="tel"].am-round, +.am-form input[type="color"].am-round, +.am-form-field.am-round { + border-radius: 1000px; +} +.am-form textarea, +.am-form select[multiple], +.am-form select[size] { + height: auto; +} +.am-form select { + -webkit-appearance: none !important; + -webkit-border-radius: 2px; + background: #ffffff url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+') no-repeat 100% center; +} +.am-form select[multiple="multiple"] { + background-image: none; +} +/* help text */ +.am-form-help { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #999999; + font-size: 1.3rem; +} +/* form group */ +.am-form-group { + margin-bottom: 1.5rem; +} +/** + * Checkboxes and radios + * Indent the labels to position radios/checkboxes as hanging controls. +*/ +.am-radio, +.am-checkbox { + display: block; + min-height: 1.92rem; + margin-top: 10px; + margin-bottom: 10px; + padding-left: 20px; + vertical-align: middle; +} +.am-radio label, +.am-checkbox label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.am-radio input[type="radio"], +.am-radio-inline input[type="radio"], +.am-checkbox input[type="checkbox"], +.am-checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; + outline: none; +} +.am-radio + .am-radio, +.am-checkbox + .am-checkbox { + margin-top: -5px; +} +/* Radios and checkboxes inline */ +.am-radio-inline, +.am-checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.am-radio-inline + .am-radio-inline, +.am-checkbox-inline + .am-checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.am-radio[disabled], +.am-radio-inline[disabled], +.am-checkbox[disabled], +.am-checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .am-radio, +fieldset[disabled] .am-radio-inline, +fieldset[disabled] .am-checkbox, +fieldset[disabled] .am-checkbox-inline { + cursor: not-allowed; +} +/* Form field feedback states */ +.am-form-warning .am-form-help, +.am-form-warning .am-form-label, +.am-form-warning .am-radio, +.am-form-warning .am-checkbox, +.am-form-warning .am-radio-inline, +.am-form-warning .am-checkbox-inline, +.am-form-warning label { + color: #f37b1d; +} +.am-form-warning [class*="icon-"] { + color: #f37b1d; +} +.am-form-warning .am-form-field { + border-color: #f37b1d !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.am-form-warning .am-form-field:focus { + background-color: #fefffe; + border-color: #d2620b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #f8b47e !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #f8b47e !important; +} +.am-form-error .am-form-help, +.am-form-error .am-form-label, +.am-form-error .am-radio, +.am-form-error .am-checkbox, +.am-form-error .am-radio-inline, +.am-form-error .am-checkbox-inline, +.am-form-error label { + color: #dd514c; +} +.am-form-error [class*="icon-"] { + color: #dd514c; +} +.am-form-error .am-form-field, +.am-field-error { + border-color: #dd514c !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.am-form-error .am-form-field:focus, +.am-field-error:focus { + background-color: #fefffe; + border-color: #cf2d27; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #eda4a2 !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #eda4a2 !important; +} +.am-form-success .am-form-help, +.am-form-success .am-form-label, +.am-form-success .am-radio, +.am-form-success .am-checkbox, +.am-form-success .am-radio-inline, +.am-form-success .am-checkbox-inline, +.am-form-success label { + color: #5eb95e; +} +.am-form-success [class*="icon-"] { + color: #5eb95e; +} +.am-form-success .am-form-field, +.am-field-valid { + border-color: #5eb95e !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.am-form-success .am-form-field:focus, +.am-field-valid:focus { + background-color: #fefffe; + border-color: #459f45; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #a5d8a5 !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px #a5d8a5 !important; +} +/* Horizontal forms */ +.am-form-horizontal .am-form-label, +.am-form-horizontal .am-radio, +.am-form-horizontal .am-checkbox, +.am-form-horizontal .am-radio-inline, +.am-form-horizontal .am-checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 0.6em; +} +.am-form-horizontal .am-form-group:before, +.am-form-horizontal .am-form-group:after { + content: " "; + display: table; +} +.am-form-horizontal .am-form-group:after { + clear: both; +} +@media only screen and (min-width:641px) { + .am-form-horizontal .am-form-label { + text-align: right; + } +} +/* Inline form elements */ +@media only screen and (min-width:641px) { + .am-form-inline .am-form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .am-form-inline .am-form-field { + display: inline-block; + width: auto; + vertical-align: middle; + } + .am-form-inline .am-input-group { + display: inline-table; + vertical-align: middle; + } + .am-form-inline .am-input-group .am-input-group-addon, + .am-form-inline .am-input-group .am-input-group-btn, + .am-form-inline .am-input-group .am-form-control { + width: auto; + } + .am-form-inline .am-input-group > .am-form-field { + width: 100%; + } + .am-form-inline .am-form-label { + margin-bottom: 0; + vertical-align: middle; + } + .am-form-inline .am-radio, + .am-form-inline .am-checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; + vertical-align: middle; + } + .am-form-inline .am-radio input[type="radio"], + .am-form-inline .am-checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + .am-form-inline .am-form-feedback .am-form-field-feedback { + top: 0; + } +} +/* Form field size */ +.am-input-sm { + font-size: 1.4rem !important; +} +.am-input-lg { + font-size: 1.8rem !important; +} +/* Form field feedback states */ +.am-form-icon { + position: relative; +} +.am-form-icon .am-form-field { + padding-left: 1.875em !important; +} +.am-form-icon [class*='am-icon-'] { + position: absolute; + left: 0.625em; + top: 50%; + display: block; + margin-top: -0.635em; + line-height: 1; + z-index: 2; +} +/* Feedback Icon */ +.am-form-feedback { + position: relative; +} +.am-form-feedback .am-form-field { + padding-left: 0.625em !important; + padding-right: 1.875em !important; +} +.am-form-feedback [class*='am-icon-'] { + right: 0.625em; + left: auto; +} +/* Form set */ +.am-form-set { + margin-bottom: 1.5rem; + padding: 0; +} +.am-form-set > input { + position: relative; + top: -1px; + border-radius: 0 !important; +} +.am-form-set > input:focus { + z-index: 2; +} +.am-form-set > input:first-child { + top: 1px; + border-top-right-radius: 2px !important; + border-top-left-radius: 2px !important; +} +.am-form-set > input:last-child { + top: -2px; + border-bottom-right-radius: 2px !important; + border-bottom-left-radius: 2px !important; +} +/* ========================================================================== + Component: Image + ============================================================================ */ +/* Image thumbnails */ +.am-img-thumbnail { + display: inline-block; + padding: 2px; + line-height: 1.6; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 2px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.am-img-thumbnail.am-radius { + border-radius: 2px; +} +.am-img-responsive { + display: block; +} +/* ========================================================================== + Component: Nav + ============================================================================ */ +.am-nav { + margin-bottom: 0; + padding: 0; + list-style: none; +} +.am-nav:before, +.am-nav:after { + content: " "; + display: table; +} +.am-nav:after { + clear: both; +} +.am-nav > li { + position: relative; + display: block; +} +.am-nav > li + li { + margin-top: 5px; +} +.am-nav > li + .am-nav-header { + margin-top: 1em; +} +.am-nav > li > a { + position: relative; + display: block; + padding: 0.4em 1em; + border-radius: 2px; +} +.am-nav > li > a:hover, +.am-nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.am-nav > li.am-active > a, +.am-nav > li.am-active > a:hover, +.am-nav > li.am-active > a:focus { + color: #ffffff; + background-color: #0e90d2; + cursor: default; +} +.am-nav > li.am-disabled > a { + color: #999999; +} +.am-nav > li.am-disabled > a:hover, +.am-nav > li.am-disabled > a:focus { + color: #999999; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.am-nav-header { + padding: 0.4em 1em; + text-transform: uppercase; + font-weight: bold; + font-size: 100%; + color: #555555; +} +.am-nav-divider { + margin: 15px 1em !important; + border-top: 1px solid #ddd; + -webkit-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} +.am-nav-pills > li { + float: left; +} +.am-nav-pills > li + li { + margin-left: 5px; + margin-top: 0; +} +.am-nav-tabs { + border-bottom: 1px solid #dddddd; +} +.am-nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.am-nav-tabs > li + li { + margin-top: 0; +} +.am-nav-tabs > li > a { + margin-right: 5px; + line-height: 1.6; + border: 1px solid transparent; + border-radius: 2px 2px 0 0; +} +.am-nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} +.am-nav-tabs > li.am-active > a, +.am-nav-tabs > li.am-active > a:hover, +.am-nav-tabs > li.am-active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.am-nav-tabs.am-nav-justify { + border-bottom: 0 + /* > li > a { + margin-right: 0; + border-radius: @global-radius; + } + + > .am-active > a { + &, + &:hover, + &:focus { + border: 1px solid @nav-tabs-justify-link-border-color; + } + }*/ +} +.am-nav-tabs.am-nav-justify > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; + border-radius: 2px 2px 0 0; +} +.am-nav-tabs.am-nav-justify > .am-active > a, +.am-nav-tabs.am-nav-justify > .am-active > a:hover, +.am-nav-tabs.am-nav-justify > .am-active > a:focus { + border-bottom-color: #ffffff; +} +.am-nav-justify { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-nav-justify > li { + float: none; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-nav-justify > li > a { + text-align: center; + margin-bottom: 0; +} +.lte9 .am-nav-justify > li { + display: table-cell; + width: 1%; +} +/* ========================================================================== + Component: Topbar + ============================================================================ */ +.am-topbar { + position: relative; + min-height: 50px; + margin-bottom: 1.6rem; + background: #f8f8f8; + border-width: 0 0 1px; + border-style: solid; + border-color: #dddddd; + color: #666666; +} +.am-topbar:before, +.am-topbar:after { + content: " "; + display: table; +} +.am-topbar:after { + clear: both; +} +.am-topbar a { + color: #666666; +} +.am-topbar-brand { + margin: 0; +} +@media only screen and (min-width:641px) { + .am-topbar-brand { + float: left; + } +} +.am-topbar-brand a:hover { + color: #4d4d4d; +} +.am-topbar-collapse { + width: 100%; + overflow-x: visible; + padding: 10px; + clear: both; + -webkit-overflow-scrolling: touch; +} +.am-topbar-collapse:before, +.am-topbar-collapse:after { + content: " "; + display: table; +} +.am-topbar-collapse:after { + clear: both; +} +.am-topbar-collapse.am-in { + overflow-y: auto; +} +@media only screen and (min-width:641px) { + .am-topbar-collapse { + margin-top: 0; + padding: 0; + width: auto; + clear: none; + } + .am-topbar-collapse.am-collapse { + display: block !important; + height: auto !important; + padding: 0; + overflow: visible !important; + } + .am-topbar-collapse.am-in { + overflow-y: visible; + } +} +.am-topbar-brand { + padding: 0 10px; + float: left; + font-size: 1.8rem; + height: 50px; + line-height: 50px; +} +.am-topbar-toggle { + position: relative; + float: right; + margin-right: 10px; +} +@media only screen and (min-width:641px) { + .am-topbar-toggle { + display: none; + } +} +@media only screen and (max-width: 640px) { + .am-topbar-nav { + margin-bottom: 8px; + } + .am-topbar-nav > li { + float: none; + } +} +@media only screen and (max-width: 640px) { + .am-topbar-nav > li + li { + margin-left: 0; + margin-top: 5px; + } +} +@media only screen and (min-width:641px) { + .am-topbar-nav { + float: left; + } + .am-topbar-nav > li > a { + position: relative; + line-height: 50px; + padding: 0 10px; + } + .am-topbar-nav > li > a:after { + position: absolute; + left: 50%; + margin-left: -7px; + bottom: -1px; + content: ""; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-bottom: 7px solid #f8f8f8; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-top: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + opacity: 0; + -webkit-transition: opacity .1s; + transition: opacity .1s; + } + .am-topbar-nav > li > a:hover:after { + opacity: 1; + border-bottom-color: #666666; + } + .am-topbar-nav > li.am-dropdown > a:after { + display: none; + } + .am-topbar-nav > li.am-active > a, + .am-topbar-nav > li.am-active > a:hover, + .am-topbar-nav > li.am-active > a:focus { + border-radius: 0; + color: #0e90d2; + background: none; + } + .am-topbar-nav > li.am-active > a:after { + opacity: 1; + border-bottom-color: #0e90d2; + } +} +@media only screen and (max-width: 640px) { + .am-topbar-collapse .am-dropdown.am-active .am-dropdown-content { + float: none; + position: relative; + width: 100%; + } +} +@media only screen and (min-width:641px) { + .am-topbar-left { + float: left; + } + .am-topbar-right { + float: right; + margin-right: 10px; + } +} +@media only screen and (max-width: 640px) { + .am-topbar-form .am-form-group { + margin-bottom: 5px; + } +} +@media only screen and (min-width:641px) { + .am-topbar-form { + padding: 0 10px; + margin-top: 8px; + } + .am-topbar-form .am-form-group + .am-btn { + margin-left: 5px; + } +} +.am-topbar-btn { + margin-top: 8px; +} +@media only screen and (max-width: 640px) { + .am-topbar-collapse .am-topbar-btn, + .am-topbar-collapse .am-btn { + display: block; + width: 100%; + } +} +.am-topbar-inverse { + background-color: #0e90d2; + border-color: #0b6fa2; + color: #eeeeee; +} +.am-topbar-inverse a { + color: #eeeeee; +} +.am-topbar-inverse .am-topbar-brand a { + color: #ffffff; +} +.am-topbar-inverse .am-topbar-brand a:hover, +.am-topbar-inverse .am-topbar-brand a:focus { + color: #ffffff; + background-color: transparent; +} +.am-topbar-inverse .am-topbar-nav > li > a { + color: #eeeeee; +} +.am-topbar-inverse .am-topbar-nav > li > a:hover, +.am-topbar-inverse .am-topbar-nav > li > a:focus { + color: #ffffff; + background-color: rgba(0, 0, 0, 0.05); +} +.am-topbar-inverse .am-topbar-nav > li > a:hover:after, +.am-topbar-inverse .am-topbar-nav > li > a:focus:after { + border-bottom-color: #0b6fa2; +} +.am-topbar-inverse .am-topbar-nav > li > a:after { + border-bottom-color: #0e90d2; +} +.am-topbar-inverse .am-topbar-nav > li.am-active > a, +.am-topbar-inverse .am-topbar-nav > li.am-active > a:hover, +.am-topbar-inverse .am-topbar-nav > li.am-active > a:focus { + color: #ffffff; + background-color: rgba(0, 0, 0, 0.1); +} +.am-topbar-inverse .am-topbar-nav > li.am-active > a:after, +.am-topbar-inverse .am-topbar-nav > li.am-active > a:hover:after, +.am-topbar-inverse .am-topbar-nav > li.am-active > a:focus:after { + border-bottom-color: #ffffff; +} +.am-topbar-inverse .am-topbar-nav > li .disabled > a, +.am-topbar-inverse .am-topbar-nav > li .disabled > a:hover, +.am-topbar-inverse .am-topbar-nav > li .disabled > a:focus { + color: #444444; + background-color: transparent; +} +.am-topbar-fixed-top, +.am-topbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1000; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.am-topbar-fixed-top { + top: 0; +} +.am-topbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.am-with-topbar-fixed-top { + padding-top: 51px; +} +.am-with-topbar-fixed-bottom { + padding-bottom: 51px; +} +@media only screen and (max-width: 640px) { + .am-topbar-fixed-bottom .am-topbar-collapse { + position: absolute; + bottom: 100%; + margin-bottom: 1px; + background-color: #f8f8f8; + } + .am-topbar-fixed-bottom .am-topbar-collapse .am-dropdown-content:before, + .am-topbar-fixed-bottom .am-topbar-collapse .am-dropdown-content:after { + display: none; + } + .am-topbar-fixed-bottom.am-topbar-inverse .am-topbar-collapse { + background-color: #0e90d2; + } +} +/* ========================================================================== + Component: Breadcrumb + ============================================================================ */ +.am-breadcrumb { + padding: .7em .5em; + margin-bottom: 2rem; + list-style: none; + background-color: transparent; + border-radius: 2px; + font-size: 85%; +} +.am-breadcrumb > li { + display: inline-block; +} +.am-breadcrumb > li [class*="am-icon-"]:before { + color: #999999; + margin-right: 5px; +} +.am-breadcrumb > li + li:before { + content: "»\00a0"; + padding: 0 8px; + color: #cccccc; +} +.am-breadcrumb > .am-active { + color: #999999; +} +.am-breadcrumb-slash > li + li:before { + content: "/\00a0"; +} +/* ========================================================================== + Component: Pagination + ============================================================================ */ +.am-pagination { + padding-left: 0; + margin: 1.5rem 0; + list-style: none; + color: #999999; + text-align: left; +} +.am-pagination:before, +.am-pagination:after { + content: " "; + display: table; +} +.am-pagination:after { + clear: both; +} +.am-pagination > li { + display: inline-block; +} +.am-pagination > li > a, +.am-pagination > li > span { + position: relative; + display: block; + padding: 0.5em 1em; + text-decoration: none; + line-height: 1.2; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 2px; + margin-bottom: 5px; + margin-right: 5px; +} +.am-pagination > li:last-child > a, +.am-pagination > li:last-child > span { + margin-right: 0; +} +.am-pagination > li > a:hover, +.am-pagination > li > span:hover, +.am-pagination > li > a:focus, +.am-pagination > li > span:focus { + background-color: #eeeeee; +} +.am-pagination > .am-active > a, +.am-pagination > .am-active > span, +.am-pagination > .am-active > a:hover, +.am-pagination > .am-active > span:hover, +.am-pagination > .am-active > a:focus, +.am-pagination > .am-active > span:focus { + z-index: 2; + color: #ffffff; + background-color: #0e90d2; + border-color: #0e90d2; + cursor: default; +} +.am-pagination > .am-disabled > span, +.am-pagination > .am-disabled > span:hover, +.am-pagination > .am-disabled > span:focus, +.am-pagination > .am-disabled > a, +.am-pagination > .am-disabled > a:hover, +.am-pagination > .am-disabled > a:focus { + color: #999999; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; + pointer-events: none; +} +.am-pagination .am-pagination-prev { + float: left; +} +.am-pagination .am-pagination-prev a { + border-radius: 2px; +} +.am-pagination .am-pagination-next { + float: right; +} +.am-pagination .am-pagination-next a { + border-radius: 2px; +} +.am-pagination-centered { + text-align: center; +} +.am-pagination-right { + text-align: right; +} +/* ========================================================================== + Component: Aniamtion + ============================================================================ */ +[class*="am-animation-"] { + -webkit-animation-duration: 0.5s; + animation-duration: 0.5s; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} +/* Hide animated element if scrollSpy is used */ +@media screen { + .cssanimations [data-am-scrollspy*="animation"] { + opacity: 0; + } +} +/* Fade */ +.am-animation-fade { + -webkit-animation-name: am-fade; + animation-name: am-fade; + -webkit-animation-duration: 0.8s; + animation-duration: 0.8s; + -webkit-animation-timing-function: linear; + animation-timing-function: linear; +} +/* Scale */ +.am-animation-scale-up { + -webkit-animation-name: am-scale-up; + animation-name: am-scale-up; +} +.am-animation-scale-down { + -webkit-animation-name: am-scale-down; + animation-name: am-scale-down; +} +/* Slide */ +.am-animation-slide-top { + -webkit-animation-name: am-slide-top; + animation-name: am-slide-top; +} +.am-animation-slide-bottom { + -webkit-animation-name: am-slide-bottom; + animation-name: am-slide-bottom; +} +.am-animation-slide-left { + -webkit-animation-name: am-slide-left; + animation-name: am-slide-left; +} +.am-animation-slide-right { + -webkit-animation-name: am-slide-right; + animation-name: am-slide-right; +} +.am-animation-slide-top-fixed { + -webkit-animation-name: am-slide-top-fixed; + animation-name: am-slide-top-fixed; +} +/* Shake */ +.am-animation-shake { + -webkit-animation-name: am-shake; + animation-name: am-shake; +} +/* Spin */ +.am-animation-spin { + -webkit-animation: am-spin 2s infinite linear; + animation: am-spin 2s infinite linear; +} +/* Spring */ +.am-animation-left-spring { + -webkit-animation: am-left-spring 0.3s ease-in-out; + animation: am-left-spring 0.3s ease-in-out; +} +.am-animation-right-spring { + -webkit-animation: am-right-spring 0.3s ease-in-out; + animation: am-right-spring 0.3s ease-in-out; +} +.am-animation-reverse { + -webkit-animation-direction: reverse; + animation-direction: reverse; +} +.am-animation-paused { + -webkit-animation-play-state: paused !important; + animation-play-state: paused !important; +} +/* Keyframes + ============================================================================ */ +/* Fade */ +@-webkit-keyframes am-fade { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes am-fade { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +/* Scale up */ +@-webkit-keyframes am-scale-up { + 0% { + opacity: 0; + -webkit-transform: scale(0.2); + transform: scale(0.2); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +@keyframes am-scale-up { + 0% { + opacity: 0; + -webkit-transform: scale(0.2); + transform: scale(0.2); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +/* Scale down */ +@-webkit-keyframes am-scale-down { + 0% { + opacity: 0; + -webkit-transform: scale(1.8); + transform: scale(1.8); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +@keyframes am-scale-down { + 0% { + opacity: 0; + -webkit-transform: scale(1.8); + transform: scale(1.8); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +/* Slide top */ +@-webkit-keyframes am-slide-top { + 0% { + opacity: 0; + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +@keyframes am-slide-top { + 0% { + opacity: 0; + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +/* Slide bottom */ +@-webkit-keyframes am-slide-bottom { + 0% { + opacity: 0; + -webkit-transform: translateY(100%); + transform: translateY(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +@keyframes am-slide-bottom { + 0% { + opacity: 0; + -webkit-transform: translateY(100%); + transform: translateY(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +/* Slide left */ +@-webkit-keyframes am-slide-left { + 0% { + opacity: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@keyframes am-slide-left { + 0% { + opacity: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +/* Slide right */ +@-webkit-keyframes am-slide-right { + 0% { + opacity: 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@keyframes am-slide-right { + 0% { + opacity: 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +/* Shake */ +@-webkit-keyframes am-shake { + 0%, + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 10% { + -webkit-transform: translateX(-9px); + transform: translateX(-9px); + } + 20% { + -webkit-transform: translateX(8px); + transform: translateX(8px); + } + 30% { + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 40% { + -webkit-transform: translateX(6px); + transform: translateX(6px); + } + 50% { + -webkit-transform: translateX(-5px); + transform: translateX(-5px); + } + 60% { + -webkit-transform: translateX(4px); + transform: translateX(4px); + } + 70% { + -webkit-transform: translateX(-3px); + transform: translateX(-3px); + } + 80% { + -webkit-transform: translateX(2px); + transform: translateX(2px); + } + 90% { + -webkit-transform: translateX(-1px); + transform: translateX(-1px); + } +} +@keyframes am-shake { + 0%, + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 10% { + -webkit-transform: translateX(-9px); + transform: translateX(-9px); + } + 20% { + -webkit-transform: translateX(8px); + transform: translateX(8px); + } + 30% { + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 40% { + -webkit-transform: translateX(6px); + transform: translateX(6px); + } + 50% { + -webkit-transform: translateX(-5px); + transform: translateX(-5px); + } + 60% { + -webkit-transform: translateX(4px); + transform: translateX(4px); + } + 70% { + -webkit-transform: translateX(-3px); + transform: translateX(-3px); + } + 80% { + -webkit-transform: translateX(2px); + transform: translateX(2px); + } + 90% { + -webkit-transform: translateX(-1px); + transform: translateX(-1px); + } +} +/* Slide top fixed */ +@-webkit-keyframes am-slide-top-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +@keyframes am-slide-top-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +/* Slide bottom fixed */ +@-webkit-keyframes am-slide-bottom-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(10px); + transform: translateY(10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +@keyframes am-slide-bottom-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(10px); + transform: translateY(10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} +/* Spin */ +@-webkit-keyframes am-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes am-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +/* Spring */ +@-webkit-keyframes am-right-spring { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 50% { + -webkit-transform: translateX(-20%); + transform: translateX(-20%); + } + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@keyframes am-right-spring { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 50% { + -webkit-transform: translateX(-20%); + transform: translateX(-20%); + } + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@-webkit-keyframes am-left-spring { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 50% { + -webkit-transform: translateX(20%); + transform: translateX(20%); + } + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@keyframes am-left-spring { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 50% { + -webkit-transform: translateX(20%); + transform: translateX(20%); + } + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +/* ========================================================================== + Component: Article + ============================================================================ */ +.am-article:before, +.am-article:after { + content: " "; + display: table; +} +.am-article:after { + clear: both; +} +.am-article > :last-child { + margin-bottom: 0; +} +.am-article + .am-article { + margin-top: 2.4rem; +} +/* Sub-object `.@{ns}article-title` */ +.am-article-title { + font-size: 2.8rem; + line-height: 1.15; + font-weight: normal; +} +.am-article-title a { + color: inherit; + text-decoration: none; +} +/* Sub-object `.@{ns}article-meta` */ +.am-article-meta { + font-size: 1.2rem; + line-height: 1.5; + color: #999999; +} +/* Sub-object `.@{ns}article-lead` */ +.am-article-lead { + color: #666666; + font-size: 1.4rem; + line-height: 1.5; + border: 1px solid #dedede; + border-radius: 2px; + background: #f9f9f9; + padding: 10px; +} +/* Sub-object `.@{ns}article-divider` */ +.am-article-divider { + margin-bottom: 2.4rem; + border-color: #eeeeee; +} +* + .am-article-divider { + margin-top: 2.4rem; +} +/* Sub-object `.@{ns}article-bd` */ +.am-article-bd blockquote { + font-family: Georgia, "Times New Roman", Times, Kai, "Kaiti SC", KaiTi, BiauKai, "FontAwesome", serif; +} +/* ========================================================================== + Component: Badge + ============================================================================ */ +.am-badge { + display: inline-block; + min-width: 10px; + padding: 0.25em 0.625em; + font-size: 1.2rem; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #999999; + border-radius: 0; +} +.am-badge:empty { + display: none; +} +.am-badge.am-square { + border-radius: 0; +} +.am-badge.am-radius { + border-radius: 2px; +} +.am-badge.am-round { + border-radius: 1000px; +} +a.am-badge:hover, +a.am-badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.am-badge-primary { + background-color: #0e90d2; +} +.am-badge-secondary { + background-color: #3bb4f2; +} +.am-badge-success { + background-color: #5eb95e; +} +.am-badge-warning { + background-color: #f37b1d; +} +.am-badge-danger { + background-color: #dd514c; +} +/* ========================================================================== + Component: Comment + ============================================================================ */ +.am-comment:before, +.am-comment:after { + content: " "; + display: table; +} +.am-comment:after { + clear: both; +} +.am-comment-avatar { + float: left; + width: 32px; + height: 32px; + border-radius: 50%; + border: 1px solid transparent; +} +@media only screen and (min-width:641px) { + .am-comment-avatar { + width: 48px; + height: 48px; + } +} +.am-comment-main { + position: relative; + margin-left: 42px; + border: 1px solid #dedede; + border-radius: 2px; +} +.am-comment-main:before, +.am-comment-main:after { + position: absolute; + top: 10px; + left: -8px; + right: 100%; + width: 0; + height: 0; + display: block; + content: " "; + border-color: transparent; + border-style: solid solid outset; + border-width: 8px 8px 8px 0; + pointer-events: none; +} +.am-comment-main:before { + border-right-color: #dedede; + z-index: 1; +} +.am-comment-main:after { + border-right-color: #f8f8f8; + margin-left: 1px; + z-index: 2; +} +@media only screen and (min-width:641px) { + .am-comment-main { + margin-left: 63px; + } +} +.am-comment-hd { + background: #f8f8f8; + border-bottom: 1px solid #eee; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-comment-title { + margin: 0 0 8px 0; + font-size: 1.6rem; + line-height: 1.2; +} +.am-comment-meta { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 10px 15px; + font-size: 13px; + color: #999999; + line-height: 1.2; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.am-comment-meta a { + color: #999999; +} +.am-comment-author { + font-weight: bold; + color: #999999; +} +.am-comment-bd { + padding: 15px; + overflow: hidden; +} +.am-comment-bd > :last-child { + margin-bottom: 0; +} +.am-comment-footer { + padding: 0 15px 5px; +} +.am-comment-footer .am-comment-actions a + a { + margin-left: 5px; +} +.am-comment-actions { + font-size: 13px; + color: #999999; +} +.am-comment-actions a { + display: inline-block; + padding: 10px 5px; + line-height: 1; + color: #999999; + opacity: .7; +} +.am-comment-actions a:hover { + color: #0e90d2; + opacity: 1; +} +.am-comment-hd .am-comment-actions { + padding-right: .5rem; +} +.am-comment-flip .am-comment-avatar { + float: right; +} +.am-comment-flip .am-comment-main { + margin-left: auto; + margin-right: 42px; +} +@media only screen and (min-width:641px) { + .am-comment-flip .am-comment-main { + margin-right: 63px; + } +} +.am-comment-flip .am-comment-main:before, +.am-comment-flip .am-comment-main:after { + left: auto; + right: -8px; + border-width: 8px 0 8px 8px; +} +.am-comment-flip .am-comment-main:before { + border-left-color: #dedede; +} +.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; + margin-right: 1px; + margin-left: auto; +} +.am-comment-primary .am-comment-avatar { + border-color: #0e90d2; +} +.am-comment-primary .am-comment-main { + border-color: #0e90d2; +} +.am-comment-primary .am-comment-main:before { + border-right-color: #0e90d2; +} +.am-comment-primary.am-comment-flip .am-comment-main:before { + border-left-color: #0e90d2; + border-right-color: transparent; +} +.am-comment-primary.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comment-secondary .am-comment-avatar, +.am-comment-highlight .am-comment-avatar { + border-color: #3bb4f2; +} +.am-comment-secondary .am-comment-main, +.am-comment-highlight .am-comment-main { + border-color: #3bb4f2; +} +.am-comment-secondary .am-comment-main:before, +.am-comment-highlight .am-comment-main:before { + border-right-color: #3bb4f2; +} +.am-comment-secondary.am-comment-flip .am-comment-main:before, +.am-comment-highlight.am-comment-flip .am-comment-main:before { + border-left-color: #3bb4f2; + border-right-color: transparent; +} +.am-comment-secondary.am-comment-flip .am-comment-main:after, +.am-comment-highlight.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comment-success .am-comment-avatar { + border-color: #5eb95e; +} +.am-comment-success .am-comment-main { + border-color: #5eb95e; +} +.am-comment-success .am-comment-main:before { + border-right-color: #5eb95e; +} +.am-comment-success.am-comment-flip .am-comment-main:before { + border-left-color: #5eb95e; + border-right-color: transparent; +} +.am-comment-success.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comment-warning .am-comment-avatar { + border-color: #f37b1d; +} +.am-comment-warning .am-comment-main { + border-color: #f37b1d; +} +.am-comment-warning .am-comment-main:before { + border-right-color: #f37b1d; +} +.am-comment-warning.am-comment-flip .am-comment-main:before { + border-left-color: #f37b1d; + border-right-color: transparent; +} +.am-comment-warning.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comment-danger .am-comment-avatar { + border-color: #dd514c; +} +.am-comment-danger .am-comment-main { + border-color: #dd514c; +} +.am-comment-danger .am-comment-main:before { + border-right-color: #dd514c; +} +.am-comment-danger.am-comment-flip .am-comment-main:before { + border-left-color: #dd514c; + border-right-color: transparent; +} +.am-comment-danger.am-comment-flip .am-comment-main:after { + border-left-color: #f8f8f8; +} +.am-comments-list { + padding: 0; + list-style: none; +} +.am-comments-list .am-comment { + margin: 1.6rem 0 0 0; + list-style: none; +} +@media only screen and (min-width:641px) { + .am-comments-list-flip .am-comment-main { + margin-right: 64px; + } + .am-comments-list-flip .am-comment-flip .am-comment-main { + margin-left: 64px; + } +} +/* ========================================================================== + Component: Button Group + ============================================================================ */ +.am-btn-group, +.am-btn-group-stacked { + position: relative; + display: inline-block; + vertical-align: middle; +} +.am-btn-group > .am-btn, +.am-btn-group-stacked > .am-btn { + position: relative; + float: left; +} +.am-btn-group > .am-btn:hover, +.am-btn-group-stacked > .am-btn:hover, +.am-btn-group > .am-btn:focus, +.am-btn-group-stacked > .am-btn:focus, +.am-btn-group > .am-btn:active, +.am-btn-group-stacked > .am-btn:active, +.am-btn-group > .am-btn.active, +.am-btn-group-stacked > .am-btn.active { + z-index: 2; +} +.am-btn-group > .am-btn:focus, +.am-btn-group-stacked > .am-btn:focus { + outline: 0; +} +.am-btn-group .am-btn + .am-btn, +.am-btn-group .am-btn + .am-btn-group, +.am-btn-group .am-btn-group + .am-btn, +.am-btn-group .am-btn-group + .am-btn-group { + margin-left: -1px; +} +.am-btn-toolbar { + margin-left: -5px; +} +.am-btn-toolbar:before, +.am-btn-toolbar:after { + content: " "; + display: table; +} +.am-btn-toolbar:after { + clear: both; +} +.am-btn-toolbar .am-btn-group, +.am-btn-toolbar .am-input-group { + float: left; +} +.am-btn-toolbar > .am-btn, +.am-btn-toolbar > .am-btn-group, +.am-btn-toolbar > .am-input-group { + margin-left: 5px; +} +.am-btn-group > .am-btn:not(:first-child):not(:last-child):not(.am-dropdown-toggle) { + border-radius: 0; +} +.am-btn-group > .am-btn:first-child { + margin-left: 0; +} +.am-btn-group > .am-btn:first-child:not(:last-child):not(.am-dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.am-btn-group > .am-btn:last-child:not(:first-child), +.am-btn-group > .am-dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group > .am-btn-group { + float: left; +} +.am-btn-group > .am-btn-group:not(:first-child):not(:last-child) > .am-btn { + border-radius: 0; +} +.am-btn-group > .am-btn-group:first-child > .am-btn:last-child, +.am-btn-group > .am-btn-group:first-child > .am-dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.am-btn-group > .am-btn-group:last-child > .am-btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group-xs > .am-btn { + font-size: 1.2rem; +} +.am-btn-group-sm > .am-btn { + font-size: 1.4rem; +} +.am-btn-group-lg > .am-btn { + font-size: 1.8rem; +} +.am-btn-group-stacked > .am-btn, +.am-btn-group-stacked > .am-btn-group, +.am-btn-group-stacked > .am-btn-group > .am-btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.am-btn-group-stacked > .am-btn-group:before, +.am-btn-group-stacked > .am-btn-group:after { + content: " "; + display: table; +} +.am-btn-group-stacked > .am-btn-group:after { + clear: both; +} +.am-btn-group-stacked > .am-btn-group > .am-btn { + float: none; +} +.am-btn-group-stacked > .am-btn + .am-btn, +.am-btn-group-stacked > .am-btn + .am-btn-group, +.am-btn-group-stacked > .am-btn-group + .am-btn, +.am-btn-group-stacked > .am-btn-group + .am-btn-group { + margin-top: -1px; + margin-left: 0; +} +.am-btn-group-stacked > .am-btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.am-btn-group-stacked > .am-btn:first-child:not(:last-child) { + border-top-right-radius: 2px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.am-btn-group-stacked > .am-btn:last-child:not(:first-child) { + border-bottom-left-radius: 2px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group-stacked > .am-btn-group:not(:first-child):not(:last-child) > .am-btn { + border-radius: 0; +} +.am-btn-group-stacked > .am-btn-group:first-child:not(:last-child) > .am-btn:last-child, +.am-btn-group-stacked > .am-btn-group:first-child:not(:last-child) > .am-dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.am-btn-group-stacked > .am-btn-group:last-child:not(:first-child) > .am-btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group-justify { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-btn-group-justify > .am-btn, +.am-btn-group-justify > .am-btn-group { + float: none; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-btn-group-justify > .am-btn-group .am-btn { + width: 100%; +} +.lte9 .am-btn-group-justify { + display: table; + table-layout: fixed; + border-collapse: separate; +} +.lte9 .am-btn-group-justify > .am-btn, +.lte9 .am-btn-group-justify > .am-btn-group { + float: none; + display: table-cell; + width: 1%; +} +.am-btn-group .am-dropdown { + float: left; + margin-left: -1px; +} +.am-btn-group .am-dropdown > .am-btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.am-btn-group .am-active .am-dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.am-btn-group .am-active .am-dropdown-toggle.am-btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.am-btn-group .am-dropdown-toggle:active, +.am-btn-group .am-active .am-dropdown-toggle { + outline: 0; +} +[data-am-button] > .am-btn > input[type="radio"], +[data-am-button] > .am-btn > input[type="checkbox"] { + position: absolute; + z-index: -1; + opacity: 0; +} +/* ========================================================================== + Component: Close + ============================================================================ */ +.am-close { + display: inline-block; + text-align: center; + width: 24px; + font-size: 20px; + font-weight: bold; + line-height: 24px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: .2; + -webkit-transition: all .3s; + transition: all .3s; +} +.am-close:hover, +.am-close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: .5; + outline: none; +} +.am-close[class*="am-icon-"] { + font-size: 16px; +} +button.am-close { + padding: 0; + cursor: pointer; + background: transparent; + /* Needed for Sarari */ + border: 0; + -webkit-appearance: none; +} +a.am-close:hover { + color: inherit; + text-decoration: none; + cursor: pointer; +} +/* Modifiers + ============================================================================ */ +.am-close-alt { + border-radius: 50%; + background: #eeeeee; + opacity: 0.7; + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25) + /* Hover */ +} +.am-close-alt:hover, +.am-close-alt:focus { + opacity: 1; +} +.am-close-spin:hover { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); +} +/* ========================================================================== + Component: Icon + ============================================================================ */ +/* Font-face +============================================================================= */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.2.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +/* Component +============================================================================= */ +[class*="am-icon-"] { + display: inline-block; +} +[class*="am-icon-"]:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.am-icon-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +[class*="am-icon-"].am-fl { + margin-right: .3em; +} +[class*="am-icon-"].am-fr { + margin-left: .3em; +} +.am-icon-sm:before { + font-size: 150%; + vertical-align: -10%; +} +.am-icon-md:before { + font-size: 200%; + vertical-align: -16%; +} +.am-icon-lg:before { + font-size: 250%; + vertical-align: -22%; +} +/* Modifier: `.am-icon-btn` +============================================================================= */ +.am-icon-btn { + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + width: 48px; + height: 48px; + font-size: 24px; + line-height: 48px; + border-radius: 50%; + background-color: #eeeeee; + color: #555555; + text-align: center + /** + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ + /* Active */ +} +.am-icon-btn:hover, +.am-icon-btn:focus { + /* 1 */ + background-color: #f5f5f5; + color: #333333; + text-decoration: none; + outline: none + /* 2 */ +} +.am-icon-btn:active { + background-color: #dddddd; + color: #333333; +} +.am-icon-btn.am-primary, +.am-icon-btn.am-secondary, +.am-icon-btn.am-success, +.am-icon-btn.am-warning, +.am-icon-btn.am-danger { + color: #ffffff; +} +.am-icon-btn.am-primary { + background-color: #0e90d2; +} +.am-icon-btn.am-secondary { + background-color: #3bb4f2; +} +.am-icon-btn.am-success { + background-color: #5eb95e; +} +.am-icon-btn.am-warning { + background-color: #f37b1d; +} +.am-icon-btn.am-danger { + background-color: #dd514c; +} +.am-icon-btn-sm { + width: 32px; + height: 32px; + font-size: 16px; + line-height: 32px; +} +.am-icon-btn-lg { + width: 64px; + height: 64px; + font-size: 28px; + line-height: 64px; +} +/* Icon mapping +============================================================================= */ +.am-icon-glass:before { + content: "\f000"; +} +.am-icon-music:before { + content: "\f001"; +} +.am-icon-search:before { + content: "\f002"; +} +.am-icon-envelope-o:before { + content: "\f003"; +} +.am-icon-heart:before { + content: "\f004"; +} +.am-icon-star:before { + content: "\f005"; +} +.am-icon-star-o:before { + content: "\f006"; +} +.am-icon-user:before { + content: "\f007"; +} +.am-icon-film:before { + content: "\f008"; +} +.am-icon-th-large:before { + content: "\f009"; +} +.am-icon-th:before { + content: "\f00a"; +} +.am-icon-th-list:before { + content: "\f00b"; +} +.am-icon-check:before { + content: "\f00c"; +} +.am-icon-remove:before, +.am-icon-close:before, +.am-icon-times:before { + content: "\f00d"; +} +.am-icon-search-plus:before { + content: "\f00e"; +} +.am-icon-search-minus:before { + content: "\f010"; +} +.am-icon-power-off:before { + content: "\f011"; +} +.am-icon-signal:before { + content: "\f012"; +} +.am-icon-gear:before, +.am-icon-cog:before { + content: "\f013"; +} +.am-icon-trash-o:before { + content: "\f014"; +} +.am-icon-home:before { + content: "\f015"; +} +.am-icon-file-o:before { + content: "\f016"; +} +.am-icon-clock-o:before { + content: "\f017"; +} +.am-icon-road:before { + content: "\f018"; +} +.am-icon-download:before { + content: "\f019"; +} +.am-icon-arrow-circle-o-down:before { + content: "\f01a"; +} +.am-icon-arrow-circle-o-up:before { + content: "\f01b"; +} +.am-icon-inbox:before { + content: "\f01c"; +} +.am-icon-play-circle-o:before { + content: "\f01d"; +} +.am-icon-rotate-right:before, +.am-icon-repeat:before { + content: "\f01e"; +} +.am-icon-refresh:before { + content: "\f021"; +} +.am-icon-list-alt:before { + content: "\f022"; +} +.am-icon-lock:before { + content: "\f023"; +} +.am-icon-flag:before { + content: "\f024"; +} +.am-icon-headphones:before { + content: "\f025"; +} +.am-icon-volume-off:before { + content: "\f026"; +} +.am-icon-volume-down:before { + content: "\f027"; +} +.am-icon-volume-up:before { + content: "\f028"; +} +.am-icon-qrcode:before { + content: "\f029"; +} +.am-icon-barcode:before { + content: "\f02a"; +} +.am-icon-tag:before { + content: "\f02b"; +} +.am-icon-tags:before { + content: "\f02c"; +} +.am-icon-book:before { + content: "\f02d"; +} +.am-icon-bookmark:before { + content: "\f02e"; +} +.am-icon-print:before { + content: "\f02f"; +} +.am-icon-camera:before { + content: "\f030"; +} +.am-icon-font:before { + content: "\f031"; +} +.am-icon-bold:before { + content: "\f032"; +} +.am-icon-italic:before { + content: "\f033"; +} +.am-icon-text-height:before { + content: "\f034"; +} +.am-icon-text-width:before { + content: "\f035"; +} +.am-icon-align-left:before { + content: "\f036"; +} +.am-icon-align-center:before { + content: "\f037"; +} +.am-icon-align-right:before { + content: "\f038"; +} +.am-icon-align-justify:before { + content: "\f039"; +} +.am-icon-list:before { + content: "\f03a"; +} +.am-icon-dedent:before, +.am-icon-outdent:before { + content: "\f03b"; +} +.am-icon-indent:before { + content: "\f03c"; +} +.am-icon-video-camera:before { + content: "\f03d"; +} +.am-icon-photo:before, +.am-icon-image:before, +.am-icon-picture-o:before { + content: "\f03e"; +} +.am-icon-pencil:before { + content: "\f040"; +} +.am-icon-map-marker:before { + content: "\f041"; +} +.am-icon-adjust:before { + content: "\f042"; +} +.am-icon-tint:before { + content: "\f043"; +} +.am-icon-edit:before, +.am-icon-pencil-square-o:before { + content: "\f044"; +} +.am-icon-share-square-o:before { + content: "\f045"; +} +.am-icon-check-square-o:before { + content: "\f046"; +} +.am-icon-arrows:before { + content: "\f047"; +} +.am-icon-step-backward:before { + content: "\f048"; +} +.am-icon-fast-backward:before { + content: "\f049"; +} +.am-icon-backward:before { + content: "\f04a"; +} +.am-icon-play:before { + content: "\f04b"; +} +.am-icon-pause:before { + content: "\f04c"; +} +.am-icon-stop:before { + content: "\f04d"; +} +.am-icon-forward:before { + content: "\f04e"; +} +.am-icon-fast-forward:before { + content: "\f050"; +} +.am-icon-step-forward:before { + content: "\f051"; +} +.am-icon-eject:before { + content: "\f052"; +} +.am-icon-chevron-left:before { + content: "\f053"; +} +.am-icon-chevron-right:before { + content: "\f054"; +} +.am-icon-plus-circle:before { + content: "\f055"; +} +.am-icon-minus-circle:before { + content: "\f056"; +} +.am-icon-times-circle:before { + content: "\f057"; +} +.am-icon-check-circle:before { + content: "\f058"; +} +.am-icon-question-circle:before { + content: "\f059"; +} +.am-icon-info-circle:before { + content: "\f05a"; +} +.am-icon-crosshairs:before { + content: "\f05b"; +} +.am-icon-times-circle-o:before { + content: "\f05c"; +} +.am-icon-check-circle-o:before { + content: "\f05d"; +} +.am-icon-ban:before { + content: "\f05e"; +} +.am-icon-arrow-left:before { + content: "\f060"; +} +.am-icon-arrow-right:before { + content: "\f061"; +} +.am-icon-arrow-up:before { + content: "\f062"; +} +.am-icon-arrow-down:before { + content: "\f063"; +} +.am-icon-mail-forward:before, +.am-icon-share:before { + content: "\f064"; +} +.am-icon-expand:before { + content: "\f065"; +} +.am-icon-compress:before { + content: "\f066"; +} +.am-icon-plus:before { + content: "\f067"; +} +.am-icon-minus:before { + content: "\f068"; +} +.am-icon-asterisk:before { + content: "\f069"; +} +.am-icon-exclamation-circle:before { + content: "\f06a"; +} +.am-icon-gift:before { + content: "\f06b"; +} +.am-icon-leaf:before { + content: "\f06c"; +} +.am-icon-fire:before { + content: "\f06d"; +} +.am-icon-eye:before { + content: "\f06e"; +} +.am-icon-eye-slash:before { + content: "\f070"; +} +.am-icon-warning:before, +.am-icon-exclamation-triangle:before { + content: "\f071"; +} +.am-icon-plane:before { + content: "\f072"; +} +.am-icon-calendar:before { + content: "\f073"; +} +.am-icon-random:before { + content: "\f074"; +} +.am-icon-comment:before { + content: "\f075"; +} +.am-icon-magnet:before { + content: "\f076"; +} +.am-icon-chevron-up:before { + content: "\f077"; +} +.am-icon-chevron-down:before { + content: "\f078"; +} +.am-icon-retweet:before { + content: "\f079"; +} +.am-icon-shopping-cart:before { + content: "\f07a"; +} +.am-icon-folder:before { + content: "\f07b"; +} +.am-icon-folder-open:before { + content: "\f07c"; +} +.am-icon-arrows-v:before { + content: "\f07d"; +} +.am-icon-arrows-h:before { + content: "\f07e"; +} +.am-icon-bar-chart-o:before, +.am-icon-bar-chart:before { + content: "\f080"; +} +.am-icon-twitter-square:before { + content: "\f081"; +} +.am-icon-facebook-square:before { + content: "\f082"; +} +.am-icon-camera-retro:before { + content: "\f083"; +} +.am-icon-key:before { + content: "\f084"; +} +.am-icon-gears:before, +.am-icon-cogs:before { + content: "\f085"; +} +.am-icon-comments:before { + content: "\f086"; +} +.am-icon-thumbs-o-up:before { + content: "\f087"; +} +.am-icon-thumbs-o-down:before { + content: "\f088"; +} +.am-icon-star-half:before { + content: "\f089"; +} +.am-icon-heart-o:before { + content: "\f08a"; +} +.am-icon-sign-out:before { + content: "\f08b"; +} +.am-icon-linkedin-square:before { + content: "\f08c"; +} +.am-icon-thumb-tack:before { + content: "\f08d"; +} +.am-icon-external-link:before { + content: "\f08e"; +} +.am-icon-sign-in:before { + content: "\f090"; +} +.am-icon-trophy:before { + content: "\f091"; +} +.am-icon-github-square:before { + content: "\f092"; +} +.am-icon-upload:before { + content: "\f093"; +} +.am-icon-lemon-o:before { + content: "\f094"; +} +.am-icon-phone:before { + content: "\f095"; +} +.am-icon-square-o:before { + content: "\f096"; +} +.am-icon-bookmark-o:before { + content: "\f097"; +} +.am-icon-phone-square:before { + content: "\f098"; +} +.am-icon-twitter:before { + content: "\f099"; +} +.am-icon-facebook:before { + content: "\f09a"; +} +.am-icon-github:before { + content: "\f09b"; +} +.am-icon-unlock:before { + content: "\f09c"; +} +.am-icon-credit-card:before { + content: "\f09d"; +} +.am-icon-rss:before { + content: "\f09e"; +} +.am-icon-hdd-o:before { + content: "\f0a0"; +} +.am-icon-bullhorn:before { + content: "\f0a1"; +} +.am-icon-bell:before { + content: "\f0f3"; +} +.am-icon-certificate:before { + content: "\f0a3"; +} +.am-icon-hand-o-right:before { + content: "\f0a4"; +} +.am-icon-hand-o-left:before { + content: "\f0a5"; +} +.am-icon-hand-o-up:before { + content: "\f0a6"; +} +.am-icon-hand-o-down:before { + content: "\f0a7"; +} +.am-icon-arrow-circle-left:before { + content: "\f0a8"; +} +.am-icon-arrow-circle-right:before { + content: "\f0a9"; +} +.am-icon-arrow-circle-up:before { + content: "\f0aa"; +} +.am-icon-arrow-circle-down:before { + content: "\f0ab"; +} +.am-icon-globe:before { + content: "\f0ac"; +} +.am-icon-wrench:before { + content: "\f0ad"; +} +.am-icon-tasks:before { + content: "\f0ae"; +} +.am-icon-filter:before { + content: "\f0b0"; +} +.am-icon-briefcase:before { + content: "\f0b1"; +} +.am-icon-arrows-alt:before { + content: "\f0b2"; +} +.am-icon-group:before, +.am-icon-users:before { + content: "\f0c0"; +} +.am-icon-chain:before, +.am-icon-link:before { + content: "\f0c1"; +} +.am-icon-cloud:before { + content: "\f0c2"; +} +.am-icon-flask:before { + content: "\f0c3"; +} +.am-icon-cut:before, +.am-icon-scissors:before { + content: "\f0c4"; +} +.am-icon-copy:before, +.am-icon-files-o:before { + content: "\f0c5"; +} +.am-icon-paperclip:before { + content: "\f0c6"; +} +.am-icon-save:before, +.am-icon-floppy-o:before { + content: "\f0c7"; +} +.am-icon-square:before { + content: "\f0c8"; +} +.am-icon-navicon:before, +.am-icon-reorder:before, +.am-icon-bars:before { + content: "\f0c9"; +} +.am-icon-list-ul:before { + content: "\f0ca"; +} +.am-icon-list-ol:before { + content: "\f0cb"; +} +.am-icon-strikethrough:before { + content: "\f0cc"; +} +.am-icon-underline:before { + content: "\f0cd"; +} +.am-icon-table:before { + content: "\f0ce"; +} +.am-icon-magic:before { + content: "\f0d0"; +} +.am-icon-truck:before { + content: "\f0d1"; +} +.am-icon-pinterest:before { + content: "\f0d2"; +} +.am-icon-pinterest-square:before { + content: "\f0d3"; +} +.am-icon-google-plus-square:before { + content: "\f0d4"; +} +.am-icon-google-plus:before { + content: "\f0d5"; +} +.am-icon-money:before { + content: "\f0d6"; +} +.am-icon-caret-down:before { + content: "\f0d7"; +} +.am-icon-caret-up:before { + content: "\f0d8"; +} +.am-icon-caret-left:before { + content: "\f0d9"; +} +.am-icon-caret-right:before { + content: "\f0da"; +} +.am-icon-columns:before { + content: "\f0db"; +} +.am-icon-unsorted:before, +.am-icon-sort:before { + content: "\f0dc"; +} +.am-icon-sort-down:before, +.am-icon-sort-desc:before { + content: "\f0dd"; +} +.am-icon-sort-up:before, +.am-icon-sort-asc:before { + content: "\f0de"; +} +.am-icon-envelope:before { + content: "\f0e0"; +} +.am-icon-linkedin:before { + content: "\f0e1"; +} +.am-icon-rotate-left:before, +.am-icon-undo:before { + content: "\f0e2"; +} +.am-icon-legal:before, +.am-icon-gavel:before { + content: "\f0e3"; +} +.am-icon-dashboard:before, +.am-icon-tachometer:before { + content: "\f0e4"; +} +.am-icon-comment-o:before { + content: "\f0e5"; +} +.am-icon-comments-o:before { + content: "\f0e6"; +} +.am-icon-flash:before, +.am-icon-bolt:before { + content: "\f0e7"; +} +.am-icon-sitemap:before { + content: "\f0e8"; +} +.am-icon-umbrella:before { + content: "\f0e9"; +} +.am-icon-paste:before, +.am-icon-clipboard:before { + content: "\f0ea"; +} +.am-icon-lightbulb-o:before { + content: "\f0eb"; +} +.am-icon-exchange:before { + content: "\f0ec"; +} +.am-icon-cloud-download:before { + content: "\f0ed"; +} +.am-icon-cloud-upload:before { + content: "\f0ee"; +} +.am-icon-user-md:before { + content: "\f0f0"; +} +.am-icon-stethoscope:before { + content: "\f0f1"; +} +.am-icon-suitcase:before { + content: "\f0f2"; +} +.am-icon-bell-o:before { + content: "\f0a2"; +} +.am-icon-coffee:before { + content: "\f0f4"; +} +.am-icon-cutlery:before { + content: "\f0f5"; +} +.am-icon-file-text-o:before { + content: "\f0f6"; +} +.am-icon-building-o:before { + content: "\f0f7"; +} +.am-icon-hospital-o:before { + content: "\f0f8"; +} +.am-icon-ambulance:before { + content: "\f0f9"; +} +.am-icon-medkit:before { + content: "\f0fa"; +} +.am-icon-fighter-jet:before { + content: "\f0fb"; +} +.am-icon-beer:before { + content: "\f0fc"; +} +.am-icon-h-square:before { + content: "\f0fd"; +} +.am-icon-plus-square:before { + content: "\f0fe"; +} +.am-icon-angle-double-left:before { + content: "\f100"; +} +.am-icon-angle-double-right:before { + content: "\f101"; +} +.am-icon-angle-double-up:before { + content: "\f102"; +} +.am-icon-angle-double-down:before { + content: "\f103"; +} +.am-icon-angle-left:before { + content: "\f104"; +} +.am-icon-angle-right:before { + content: "\f105"; +} +.am-icon-angle-up:before { + content: "\f106"; +} +.am-icon-angle-down:before { + content: "\f107"; +} +.am-icon-desktop:before { + content: "\f108"; +} +.am-icon-laptop:before { + content: "\f109"; +} +.am-icon-tablet:before { + content: "\f10a"; +} +.am-icon-mobile-phone:before, +.am-icon-mobile:before { + content: "\f10b"; +} +.am-icon-circle-o:before { + content: "\f10c"; +} +.am-icon-quote-left:before { + content: "\f10d"; +} +.am-icon-quote-right:before { + content: "\f10e"; +} +.am-icon-spinner:before { + content: "\f110"; +} +.am-icon-circle:before { + content: "\f111"; +} +.am-icon-mail-reply:before, +.am-icon-reply:before { + content: "\f112"; +} +.am-icon-github-alt:before { + content: "\f113"; +} +.am-icon-folder-o:before { + content: "\f114"; +} +.am-icon-folder-open-o:before { + content: "\f115"; +} +.am-icon-smile-o:before { + content: "\f118"; +} +.am-icon-frown-o:before { + content: "\f119"; +} +.am-icon-meh-o:before { + content: "\f11a"; +} +.am-icon-gamepad:before { + content: "\f11b"; +} +.am-icon-keyboard-o:before { + content: "\f11c"; +} +.am-icon-flag-o:before { + content: "\f11d"; +} +.am-icon-flag-checkered:before { + content: "\f11e"; +} +.am-icon-terminal:before { + content: "\f120"; +} +.am-icon-code:before { + content: "\f121"; +} +.am-icon-mail-reply-all:before, +.am-icon-reply-all:before { + content: "\f122"; +} +.am-icon-star-half-empty:before, +.am-icon-star-half-full:before, +.am-icon-star-half-o:before { + content: "\f123"; +} +.am-icon-location-arrow:before { + content: "\f124"; +} +.am-icon-crop:before { + content: "\f125"; +} +.am-icon-code-fork:before { + content: "\f126"; +} +.am-icon-unlink:before, +.am-icon-chain-broken:before { + content: "\f127"; +} +.am-icon-question:before { + content: "\f128"; +} +.am-icon-info:before { + content: "\f129"; +} +.am-icon-exclamation:before { + content: "\f12a"; +} +.am-icon-superscript:before { + content: "\f12b"; +} +.am-icon-subscript:before { + content: "\f12c"; +} +.am-icon-eraser:before { + content: "\f12d"; +} +.am-icon-puzzle-piece:before { + content: "\f12e"; +} +.am-icon-microphone:before { + content: "\f130"; +} +.am-icon-microphone-slash:before { + content: "\f131"; +} +.am-icon-shield:before { + content: "\f132"; +} +.am-icon-calendar-o:before { + content: "\f133"; +} +.am-icon-fire-extinguisher:before { + content: "\f134"; +} +.am-icon-rocket:before { + content: "\f135"; +} +.am-icon-maxcdn:before { + content: "\f136"; +} +.am-icon-chevron-circle-left:before { + content: "\f137"; +} +.am-icon-chevron-circle-right:before { + content: "\f138"; +} +.am-icon-chevron-circle-up:before { + content: "\f139"; +} +.am-icon-chevron-circle-down:before { + content: "\f13a"; +} +.am-icon-html5:before { + content: "\f13b"; +} +.am-icon-css3:before { + content: "\f13c"; +} +.am-icon-anchor:before { + content: "\f13d"; +} +.am-icon-unlock-alt:before { + content: "\f13e"; +} +.am-icon-bullseye:before { + content: "\f140"; +} +.am-icon-ellipsis-h:before { + content: "\f141"; +} +.am-icon-ellipsis-v:before { + content: "\f142"; +} +.am-icon-rss-square:before { + content: "\f143"; +} +.am-icon-play-circle:before { + content: "\f144"; +} +.am-icon-ticket:before { + content: "\f145"; +} +.am-icon-minus-square:before { + content: "\f146"; +} +.am-icon-minus-square-o:before { + content: "\f147"; +} +.am-icon-level-up:before { + content: "\f148"; +} +.am-icon-level-down:before { + content: "\f149"; +} +.am-icon-check-square:before { + content: "\f14a"; +} +.am-icon-pencil-square:before { + content: "\f14b"; +} +.am-icon-external-link-square:before { + content: "\f14c"; +} +.am-icon-share-square:before { + content: "\f14d"; +} +.am-icon-compass:before { + content: "\f14e"; +} +.am-icon-toggle-down:before, +.am-icon-caret-square-o-down:before { + content: "\f150"; +} +.am-icon-toggle-up:before, +.am-icon-caret-square-o-up:before { + content: "\f151"; +} +.am-icon-toggle-right:before, +.am-icon-caret-square-o-right:before { + content: "\f152"; +} +.am-icon-euro:before, +.am-icon-eur:before { + content: "\f153"; +} +.am-icon-gbp:before { + content: "\f154"; +} +.am-icon-dollar:before, +.am-icon-usd:before { + content: "\f155"; +} +.am-icon-rupee:before, +.am-icon-inr:before { + content: "\f156"; +} +.am-icon-cny:before, +.am-icon-rmb:before, +.am-icon-yen:before, +.am-icon-jpy:before { + content: "\f157"; +} +.am-icon-ruble:before, +.am-icon-rouble:before, +.am-icon-rub:before { + content: "\f158"; +} +.am-icon-won:before, +.am-icon-krw:before { + content: "\f159"; +} +.am-icon-bitcoin:before, +.am-icon-btc:before { + content: "\f15a"; +} +.am-icon-file:before { + content: "\f15b"; +} +.am-icon-file-text:before { + content: "\f15c"; +} +.am-icon-sort-alpha-asc:before { + content: "\f15d"; +} +.am-icon-sort-alpha-desc:before { + content: "\f15e"; +} +.am-icon-sort-amount-asc:before { + content: "\f160"; +} +.am-icon-sort-amount-desc:before { + content: "\f161"; +} +.am-icon-sort-numeric-asc:before { + content: "\f162"; +} +.am-icon-sort-numeric-desc:before { + content: "\f163"; +} +.am-icon-thumbs-up:before { + content: "\f164"; +} +.am-icon-thumbs-down:before { + content: "\f165"; +} +.am-icon-youtube-square:before { + content: "\f166"; +} +.am-icon-youtube:before { + content: "\f167"; +} +.am-icon-xing:before { + content: "\f168"; +} +.am-icon-xing-square:before { + content: "\f169"; +} +.am-icon-youtube-play:before { + content: "\f16a"; +} +.am-icon-dropbox:before { + content: "\f16b"; +} +.am-icon-stack-overflow:before { + content: "\f16c"; +} +.am-icon-instagram:before { + content: "\f16d"; +} +.am-icon-flickr:before { + content: "\f16e"; +} +.am-icon-adn:before { + content: "\f170"; +} +.am-icon-bitbucket:before { + content: "\f171"; +} +.am-icon-bitbucket-square:before { + content: "\f172"; +} +.am-icon-tumblr:before { + content: "\f173"; +} +.am-icon-tumblr-square:before { + content: "\f174"; +} +.am-icon-long-arrow-down:before { + content: "\f175"; +} +.am-icon-long-arrow-up:before { + content: "\f176"; +} +.am-icon-long-arrow-left:before { + content: "\f177"; +} +.am-icon-long-arrow-right:before { + content: "\f178"; +} +.am-icon-apple:before { + content: "\f179"; +} +.am-icon-windows:before { + content: "\f17a"; +} +.am-icon-android:before { + content: "\f17b"; +} +.am-icon-linux:before { + content: "\f17c"; +} +.am-icon-dribbble:before { + content: "\f17d"; +} +.am-icon-skype:before { + content: "\f17e"; +} +.am-icon-foursquare:before { + content: "\f180"; +} +.am-icon-trello:before { + content: "\f181"; +} +.am-icon-female:before { + content: "\f182"; +} +.am-icon-male:before { + content: "\f183"; +} +.am-icon-gittip:before { + content: "\f184"; +} +.am-icon-sun-o:before { + content: "\f185"; +} +.am-icon-moon-o:before { + content: "\f186"; +} +.am-icon-archive:before { + content: "\f187"; +} +.am-icon-bug:before { + content: "\f188"; +} +.am-icon-vk:before { + content: "\f189"; +} +.am-icon-weibo:before { + content: "\f18a"; +} +.am-icon-renren:before { + content: "\f18b"; +} +.am-icon-pagelines:before { + content: "\f18c"; +} +.am-icon-stack-exchange:before { + content: "\f18d"; +} +.am-icon-arrow-circle-o-right:before { + content: "\f18e"; +} +.am-icon-arrow-circle-o-left:before { + content: "\f190"; +} +.am-icon-toggle-left:before, +.am-icon-caret-square-o-left:before { + content: "\f191"; +} +.am-icon-dot-circle-o:before { + content: "\f192"; +} +.am-icon-wheelchair:before { + content: "\f193"; +} +.am-icon-vimeo-square:before { + content: "\f194"; +} +.am-icon-turkish-lira:before, +.am-icon-try:before { + content: "\f195"; +} +.am-icon-plus-square-o:before { + content: "\f196"; +} +.am-icon-space-shuttle:before { + content: "\f197"; +} +.am-icon-slack:before { + content: "\f198"; +} +.am-icon-envelope-square:before { + content: "\f199"; +} +.am-icon-wordpress:before { + content: "\f19a"; +} +.am-icon-openid:before { + content: "\f19b"; +} +.am-icon-institution:before, +.am-icon-bank:before, +.am-icon-university:before { + content: "\f19c"; +} +.am-icon-mortar-board:before, +.am-icon-graduation-cap:before { + content: "\f19d"; +} +.am-icon-yahoo:before { + content: "\f19e"; +} +.am-icon-google:before { + content: "\f1a0"; +} +.am-icon-reddit:before { + content: "\f1a1"; +} +.am-icon-reddit-square:before { + content: "\f1a2"; +} +.am-icon-stumbleupon-circle:before { + content: "\f1a3"; +} +.am-icon-stumbleupon:before { + content: "\f1a4"; +} +.am-icon-delicious:before { + content: "\f1a5"; +} +.am-icon-digg:before { + content: "\f1a6"; +} +.am-icon-pied-piper:before { + content: "\f1a7"; +} +.am-icon-pied-piper-alt:before { + content: "\f1a8"; +} +.am-icon-drupal:before { + content: "\f1a9"; +} +.am-icon-joomla:before { + content: "\f1aa"; +} +.am-icon-language:before { + content: "\f1ab"; +} +.am-icon-fax:before { + content: "\f1ac"; +} +.am-icon-building:before { + content: "\f1ad"; +} +.am-icon-child:before { + content: "\f1ae"; +} +.am-icon-paw:before { + content: "\f1b0"; +} +.am-icon-spoon:before { + content: "\f1b1"; +} +.am-icon-cube:before { + content: "\f1b2"; +} +.am-icon-cubes:before { + content: "\f1b3"; +} +.am-icon-behance:before { + content: "\f1b4"; +} +.am-icon-behance-square:before { + content: "\f1b5"; +} +.am-icon-steam:before { + content: "\f1b6"; +} +.am-icon-steam-square:before { + content: "\f1b7"; +} +.am-icon-recycle:before { + content: "\f1b8"; +} +.am-icon-automobile:before, +.am-icon-car:before { + content: "\f1b9"; +} +.am-icon-cab:before, +.am-icon-taxi:before { + content: "\f1ba"; +} +.am-icon-tree:before { + content: "\f1bb"; +} +.am-icon-spotify:before { + content: "\f1bc"; +} +.am-icon-deviantart:before { + content: "\f1bd"; +} +.am-icon-soundcloud:before { + content: "\f1be"; +} +.am-icon-database:before { + content: "\f1c0"; +} +.am-icon-file-pdf-o:before { + content: "\f1c1"; +} +.am-icon-file-word-o:before { + content: "\f1c2"; +} +.am-icon-file-excel-o:before { + content: "\f1c3"; +} +.am-icon-file-powerpoint-o:before { + content: "\f1c4"; +} +.am-icon-file-photo-o:before, +.am-icon-file-picture-o:before, +.am-icon-file-image-o:before { + content: "\f1c5"; +} +.am-icon-file-zip-o:before, +.am-icon-file-archive-o:before { + content: "\f1c6"; +} +.am-icon-file-sound-o:before, +.am-icon-file-audio-o:before { + content: "\f1c7"; +} +.am-icon-file-movie-o:before, +.am-icon-file-video-o:before { + content: "\f1c8"; +} +.am-icon-file-code-o:before { + content: "\f1c9"; +} +.am-icon-vine:before { + content: "\f1ca"; +} +.am-icon-codepen:before { + content: "\f1cb"; +} +.am-icon-jsfiddle:before { + content: "\f1cc"; +} +.am-icon-life-bouy:before, +.am-icon-life-buoy:before, +.am-icon-life-saver:before, +.am-icon-support:before, +.am-icon-life-ring:before { + content: "\f1cd"; +} +.am-icon-circle-o-notch:before { + content: "\f1ce"; +} +.am-icon-ra:before, +.am-icon-rebel:before { + content: "\f1d0"; +} +.am-icon-ge:before, +.am-icon-empire:before { + content: "\f1d1"; +} +.am-icon-git-square:before { + content: "\f1d2"; +} +.am-icon-git:before { + content: "\f1d3"; +} +.am-icon-hacker-news:before { + content: "\f1d4"; +} +.am-icon-tencent-weibo:before { + content: "\f1d5"; +} +.am-icon-qq:before { + content: "\f1d6"; +} +.am-icon-wechat:before, +.am-icon-weixin:before { + content: "\f1d7"; +} +.am-icon-send:before, +.am-icon-paper-plane:before { + content: "\f1d8"; +} +.am-icon-send-o:before, +.am-icon-paper-plane-o:before { + content: "\f1d9"; +} +.am-icon-history:before { + content: "\f1da"; +} +.am-icon-circle-thin:before { + content: "\f1db"; +} +.am-icon-header:before { + content: "\f1dc"; +} +.am-icon-paragraph:before { + content: "\f1dd"; +} +.am-icon-sliders:before { + content: "\f1de"; +} +.am-icon-share-alt:before { + content: "\f1e0"; +} +.am-icon-share-alt-square:before { + content: "\f1e1"; +} +.am-icon-bomb:before { + content: "\f1e2"; +} +.am-icon-soccer-ball-o:before, +.am-icon-futbol-o:before { + content: "\f1e3"; +} +.am-icon-tty:before { + content: "\f1e4"; +} +.am-icon-binoculars:before { + content: "\f1e5"; +} +.am-icon-plug:before { + content: "\f1e6"; +} +.am-icon-slideshare:before { + content: "\f1e7"; +} +.am-icon-twitch:before { + content: "\f1e8"; +} +.am-icon-yelp:before { + content: "\f1e9"; +} +.am-icon-newspaper-o:before { + content: "\f1ea"; +} +.am-icon-wifi:before { + content: "\f1eb"; +} +.am-icon-calculator:before { + content: "\f1ec"; +} +.am-icon-paypal:before { + content: "\f1ed"; +} +.am-icon-google-wallet:before { + content: "\f1ee"; +} +.am-icon-cc-visa:before { + content: "\f1f0"; +} +.am-icon-cc-mastercard:before { + content: "\f1f1"; +} +.am-icon-cc-discover:before { + content: "\f1f2"; +} +.am-icon-cc-amex:before { + content: "\f1f3"; +} +.am-icon-cc-paypal:before { + content: "\f1f4"; +} +.am-icon-cc-stripe:before { + content: "\f1f5"; +} +.am-icon-bell-slash:before { + content: "\f1f6"; +} +.am-icon-bell-slash-o:before { + content: "\f1f7"; +} +.am-icon-trash:before { + content: "\f1f8"; +} +.am-icon-copyright:before { + content: "\f1f9"; +} +.am-icon-at:before { + content: "\f1fa"; +} +.am-icon-eyedropper:before { + content: "\f1fb"; +} +.am-icon-paint-brush:before { + content: "\f1fc"; +} +.am-icon-birthday-cake:before { + content: "\f1fd"; +} +.am-icon-area-chart:before { + content: "\f1fe"; +} +.am-icon-pie-chart:before { + content: "\f200"; +} +.am-icon-line-chart:before { + content: "\f201"; +} +.am-icon-lastfm:before { + content: "\f202"; +} +.am-icon-lastfm-square:before { + content: "\f203"; +} +.am-icon-toggle-off:before { + content: "\f204"; +} +.am-icon-toggle-on:before { + content: "\f205"; +} +.am-icon-bicycle:before { + content: "\f206"; +} +.am-icon-bus:before { + content: "\f207"; +} +.am-icon-ioxhost:before { + content: "\f208"; +} +.am-icon-angellist:before { + content: "\f209"; +} +.am-icon-cc:before { + content: "\f20a"; +} +.am-icon-shekel:before, +.am-icon-sheqel:before, +.am-icon-ils:before { + content: "\f20b"; +} +.am-icon-meanpath:before { + content: "\f20c"; +} +/* Modifier: `am-icon-spin` +============================================================================= */ +@-webkit-keyframes icon-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes icon-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.am-icon-spin { + -webkit-animation: icon-spin 2s infinite linear; + animation: icon-spin 2s infinite linear; +} +.am-icon-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.am-icon-ul > li { + position: relative; +} +.am-icon-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +/* ========================================================================== + Component: Input group + ============================================================================ */ +.am-input-group { + position: relative; + display: table; + border-collapse: separate; +} +.am-input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.am-input-group .am-form-field { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.am-input-group-label, +.am-input-group-btn, +.am-input-group .am-form-field { + display: table-cell; +} +.am-input-group-label:not(:first-child):not(:last-child), +.am-input-group-btn:not(:first-child):not(:last-child), +.am-input-group .am-form-field:not(:first-child):not(:last-child) { + border-radius: 0; +} +.am-input-group-label, +.am-input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.am-input-group-label { + padding: 0.625em 1em; + font-size: 1.6rem; + font-weight: normal; + line-height: 1.2; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 2px; +} +.am-input-group-label input[type="radio"], +.am-input-group-label input[type="checkbox"] { + margin-top: 0; +} +.am-input-group .am-form-field:first-child, +.am-input-group-label:first-child, +.am-input-group-btn:first-child > .am-btn, +.am-input-group-btn:first-child > .am-btn-group > .am-btn, +.am-input-group-btn:first-child > .am-dropdown-toggle, +.am-input-group-btn:last-child > .am-btn:not(:last-child):not(.dropdown-toggle), +.am-input-group-btn:last-child > .am-btn-group:not(:last-child) > .am-btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.am-input-group-label:first-child { + border-right: 0; +} +.am-input-group .am-form-field:last-child, +.am-input-group-label:last-child, +.am-input-group-btn:last-child > .am-btn, +.am-input-group-btn:last-child > .am-btn-group > .am-btn, +.am-input-group-btn:last-child > .am-dropdown-toggle, +.am-input-group-btn:first-child > .am-btn:not(:first-child), +.am-input-group-btn:first-child > .am-btn-group:not(:first-child) > .am-btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.am-input-group-label:last-child { + border-left: 0; +} +.am-input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.am-input-group-btn > .am-btn { + position: relative; + border-color: #cccccc; +} +.am-input-group-btn > .am-btn + .am-btn { + margin-left: -1px; +} +.am-input-group-btn > .am-btn:hover, +.am-input-group-btn > .am-btn:focus, +.am-input-group-btn > .am-btn:active { + z-index: 2; +} +.am-input-group-btn:first-child > .am-btn, +.am-input-group-btn:first-child > .am-btn-group { + margin-right: -2px; +} +.am-input-group-btn:last-child > .am-btn, +.am-input-group-btn:last-child > .am-btn-group { + margin-left: -1px; +} +.am-input-group-lg > .am-form-field, +.am-input-group-lg > .am-input-group-label, +.am-input-group-lg > .am-input-group-btn > .am-btn { + padding: 12px 18px !important; + font-size: 1.8rem !important; +} +.am-input-group-sm > .am-form-field, +.am-input-group-sm > .am-input-group-label, +.am-input-group-sm > .am-input-group-btn > .am-btn { + padding: 9px 14.000000000000002px !important; + font-size: 1.4rem !important; +} +.am-input-group-primary .am-input-group-label { + background: #0e90d2; + color: #ffffff; +} +.am-input-group-primary .am-input-group-label, +.am-input-group-primary .am-input-group-btn > .am-btn, +.am-input-group-primary .am-form-field { + border-color: #0e90d2; +} +.am-input-group-secondary .am-input-group-label { + background: #3bb4f2; + color: #ffffff; +} +.am-input-group-secondary .am-input-group-label, +.am-input-group-secondary .am-input-group-btn > .am-btn, +.am-input-group-secondary .am-form-field { + border-color: #3bb4f2; +} +.am-input-group-success .am-input-group-label { + background: #5eb95e; + color: #ffffff; +} +.am-input-group-success .am-input-group-label, +.am-input-group-success .am-input-group-btn > .am-btn, +.am-input-group-success .am-form-field { + border-color: #5eb95e; +} +.am-input-group-warning .am-input-group-label { + background: #f37b1d; + color: #ffffff; +} +.am-input-group-warning .am-input-group-label, +.am-input-group-warning .am-input-group-btn > .am-btn, +.am-input-group-warning .am-form-field { + border-color: #f37b1d; +} +.am-input-group-danger .am-input-group-label { + background: #dd514c; + color: #ffffff; +} +.am-input-group-danger .am-input-group-label, +.am-input-group-danger .am-input-group-btn > .am-btn, +.am-input-group-danger .am-form-field { + border-color: #dd514c; +} +/* ========================================================================== + Component: List + ============================================================================ */ +.am-list { + margin-bottom: 1.6rem; + padding-left: 0; +} +.am-list > li { + position: relative; + display: block; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dedede; + border-width: 1px 0; +} +.am-list > li > a { + display: block; + padding: 1rem 0; +} +.am-list > li > a.am-active, +.am-list > li > a.am-active:hover, +.am-list > li > a.am-active:focus { + z-index: 2; + color: #ffffff; + background-color: #0e90d2; + border-color: #0e90d2; +} +.am-list > li > a.am-active .am-list-item-heading, +.am-list > li > a.am-active:hover .am-list-item-heading, +.am-list > li > a.am-active:focus .am-list-item-heading { + color: inherit; +} +.am-list > li > a.am-active .am-list-item-text, +.am-list > li > a.am-active:hover .am-list-item-text, +.am-list > li > a.am-active:focus .am-list-item-text { + color: #b2e2fa; +} +.am-list > li > .am-badge { + float: right; +} +.am-list > li > .am-badge + .am-badge { + margin-right: 5px; +} +/* Pure text list */ +.am-list-static > li { + padding: .8rem .2rem; +} +.am-list-static.am-list-border > li { + padding: 1rem; +} +/* with border */ +.am-list-border > li { + border-width: 1px; +} +.am-list-border > li:first-child, +.am-list-border > li:first-child > a { + border-top-right-radius: 2px; + border-top-left-radius: 2px; +} +.am-list-border > li:last-child, +.am-list-border > li:last-child > a { + margin-bottom: 0; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.am-list-border > li > a { + padding: 1rem; +} +.am-list-border > li > a:hover, +.am-list-border > li > a:focus { + background-color: #f5f5f5; +} +/* Striped */ +.am-list-striped > li:nth-of-type(even) { + background: #f5f5f5; +} +.am-list-item-hd { + margin-top: 0; +} +.am-list-item-text { + line-height: 1.4; + font-size: 1.3rem; + color: #999999; + margin: 0; +} +/* ========================================================================== + Component: Panel + ============================================================================ */ +.am-panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 2px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +/* Panel header */ +.am-panel-hd { + padding: 0.6rem 1.25rem; + border-bottom: 1px solid transparent; + border-top-right-radius: 2px; + border-top-left-radius: 2px; +} +/* Panel content */ +.am-panel-bd { + padding: 1.25rem; +} +.am-panel-title { + margin: 0; + font-size: 100%; + color: inherit; +} +.am-panel-title > a { + color: inherit; +} +/* Panel footer */ +.am-panel-footer { + padding: 0.6rem 1.25rem; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.am-panel-default { + border-color: #dddddd; +} +.am-panel-default > .am-panel-hd { + color: #444444; + background-color: #f5f5f5; + border-color: #dddddd; +} +.am-panel-default > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #dddddd; +} +.am-panel-default > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #dddddd; +} +.am-panel-primary { + border-color: #10a0ea; +} +.am-panel-primary > .am-panel-hd { + color: #ffffff; + background-color: #0e90d2; + border-color: #10a0ea; +} +.am-panel-primary > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #10a0ea; +} +.am-panel-primary > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #10a0ea; +} +.am-panel-secondary { + border-color: #caebfb; +} +.am-panel-secondary > .am-panel-hd { + color: #14a6ef; + background-color: rgba(59, 180, 242, 0.15); + border-color: #caebfb; +} +.am-panel-secondary > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #caebfb; +} +.am-panel-secondary > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #caebfb; +} +.am-panel-success { + border-color: #c9e7c9; +} +.am-panel-success > .am-panel-hd { + color: #5eb95e; + background-color: rgba(94, 185, 94, 0.15); + border-color: #c9e7c9; +} +.am-panel-success > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #c9e7c9; +} +.am-panel-success > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #c9e7c9; +} +.am-panel-warning { + border-color: #fbd0ae; +} +.am-panel-warning > .am-panel-hd { + color: #f37b1d; + background-color: rgba(243, 123, 29, 0.15); + border-color: #fbd0ae; +} +.am-panel-warning > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #fbd0ae; +} +.am-panel-warning > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #fbd0ae; +} +.am-panel-danger { + border-color: #f5cecd; +} +.am-panel-danger > .am-panel-hd { + color: #dd514c; + background-color: rgba(221, 81, 76, 0.15); + border-color: #f5cecd; +} +.am-panel-danger > .am-panel-hd + .am-panel-collapse > .am-panel-bd { + border-top-color: #f5cecd; +} +.am-panel-danger > .am-panel-footer + .am-panel-collapse > .am-panel-bd { + border-bottom-color: #f5cecd; +} +.am-panel > .am-table { + margin-bottom: 0; +} +.am-panel > .am-table:first-child { + border-top-right-radius: 2px; + border-top-left-radius: 2px; +} +.am-panel > .am-table:first-child > thead:first-child > tr:first-child td:first-child, +.am-panel > .am-table:first-child > tbody:first-child > tr:first-child td:first-child, +.am-panel > .am-table:first-child > thead:first-child > tr:first-child th:first-child, +.am-panel > .am-table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 2px; +} +.am-panel > .am-table:first-child > thead:first-child > tr:first-child td:last-child, +.am-panel > .am-table:first-child > tbody:first-child > tr:first-child td:last-child, +.am-panel > .am-table:first-child > thead:first-child > tr:first-child th:last-child, +.am-panel > .am-table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 2px; +} +.am-panel > .am-table:last-child { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.am-panel > .am-table:last-child > tbody:last-child > tr:last-child td:first-child, +.am-panel > .am-table:last-child > tfoot:last-child > tr:last-child td:first-child, +.am-panel > .am-table:last-child > tbody:last-child > tr:last-child th:first-child, +.am-panel > .am-table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 2px; +} +.am-panel > .am-table:last-child > tbody:last-child > tr:last-child td:last-child, +.am-panel > .am-table:last-child > tfoot:last-child > tr:last-child td:last-child, +.am-panel > .am-table:last-child > tbody:last-child > tr:last-child th:last-child, +.am-panel > .am-table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 2px; +} +.am-panel > .am-panel-bd + .am-table { + border-top: 1px solid #dddddd; +} +.am-panel > .am-table > tbody:first-child > tr:first-child th, +.am-panel > .am-table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.am-panel > .am-table-bd { + border: 0; +} +.am-panel > .am-table-bd > thead > tr > th:first-child, +.am-panel > .am-table-bd > tbody > tr > th:first-child, +.am-panel > .am-table-bd > tfoot > tr > th:first-child, +.am-panel > .am-table-bd > thead > tr > td:first-child, +.am-panel > .am-table-bd > tbody > tr > td:first-child, +.am-panel > .am-table-bd > tfoot > tr > td:first-child { + border-left: 0; +} +.am-panel > .am-table-bd > thead > tr > th:last-child, +.am-panel > .am-table-bd > tbody > tr > th:last-child, +.am-panel > .am-table-bd > tfoot > tr > th:last-child, +.am-panel > .am-table-bd > thead > tr > td:last-child, +.am-panel > .am-table-bd > tbody > tr > td:last-child, +.am-panel > .am-table-bd > tfoot > tr > td:last-child { + border-right: 0; +} +.am-panel > .am-table-bd > thead > tr:first-child > td, +.am-panel > .am-table-bd > tbody > tr:first-child > td, +.am-panel > .am-table-bd > thead > tr:first-child > th, +.am-panel > .am-table-bd > tbody > tr:first-child > th { + border-bottom: 0; +} +.am-panel > .am-table-bd > tbody > tr:last-child > td, +.am-panel > .am-table-bd > tfoot > tr:last-child > td, +.am-panel > .am-table-bd > tbody > tr:last-child > th, +.am-panel > .am-table-bd > tfoot > tr:last-child > th { + border-bottom: 0; +} +/* Wrap list */ +.am-panel > .am-list { + margin: 0; +} +.am-panel > .am-list > li > a { + padding-left: 1rem; + padding-right: 1rem; +} +.am-panel > .am-list-static li { + padding-left: 1rem; + padding-right: 1rem; +} +/* Panel group */ +.am-panel-group { + margin-bottom: 2rem; +} +.am-panel-group .am-panel { + margin-bottom: 0; + border-radius: 2px; +} +.am-panel-group .am-panel + .am-panel { + margin-top: 6px; +} +.am-panel-group .am-panel-hd { + border-bottom: 0; +} +.am-panel-group .am-panel-hd + .am-panel-collapse .am-panel-bd { + border-top: 1px solid #dddddd; +} +.am-panel-group .am-panel-footer { + border-top: 0; +} +.am-panel-group .am-panel-footer + .am-panel-collapse .am-panel-bd { + border-bottom: 1px solid #dddddd; +} +/* ========================================================================== + Component: Progress + ============================================================================ */ +/* Progress bar animation */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 36px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 36px 0; + } + to { + background-position: 0 0; + } +} +/* Progress container */ +.am-progress { + overflow: hidden; + height: 2rem; + margin-bottom: 2rem; + background-color: #f5f5f5; + border-radius: 2px; + -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); +} +/* Progress bar */ +.am-progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 1.2rem; + line-height: 2rem; + color: #ffffff; + text-align: center; + background-color: #0e90d2; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width .6s ease; + transition: width .6s ease; +} +.am-progress-striped .am-progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 36px 36px; + background-size: 36px 36px; +} +.am-progress.am-active .am-progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.am-progress-bar[aria-valuenow="1"], +.am-progress-bar[aria-valuenow="2"] { + min-width: 30px; +} +.am-progress-bar[aria-valuenow="0"] { + color: #999999; + min-width: 30px; + background: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.am-progress-bar-secondary { + background-color: #3bb4f2; +} +.am-progress-striped .am-progress-bar-secondary { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.am-progress-bar-success { + background-color: #5eb95e; +} +.am-progress-striped .am-progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.am-progress-bar-warning { + background-color: #f37b1d; +} +.am-progress-striped .am-progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.am-progress-bar-danger { + background-color: #dd514c; +} +.am-progress-striped .am-progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.am-progress-xs { + height: 0.6rem; +} +.am-progress-sm { + height: 1.2rem; +} +/* ========================================================================== + Component: Thumbnail + ============================================================================ */ +.am-thumbnail { + display: block; + padding: 2px; + margin-bottom: 2rem; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 2px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.am-thumbnail > img, +.am-thumbnail a > img { + margin-left: auto; + margin-right: auto; + display: block; +} +.am-thumbnail a.am-thumbnail:hover, +.am-thumbnail a.am-thumbnail:focus, +.am-thumbnail a.am-thumbnail.active { + border-color: #0e90d2; + background-color: #ffffff; +} +/* Image caption */ +.am-thumbnail-caption { + margin: 0; + padding: 0.8rem; + color: #333333; + font-weight: normal; +} +.am-thumbnail-caption *:last-child { + margin-bottom: 0; +} +.am-thumbnails { + margin-left: -0.5rem; + margin-right: -0.5rem; +} +.am-thumbnails > li { + padding: 0 .5rem 1rem .5rem; +} +/* ========================================================================== + Component: Utility + ============================================================================ */ +.am-scrollable-horizontal { + width: 100%; + overflow-y: hidden; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; + -webkit-overflow-scrolling: touch; +} +.am-scrollable-vertical { + height: 240px; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + resize: vertical; +} +/* Border-radius*/ +.am-square { + border-radius: 0; +} +.am-radius { + border-radius: 2px; +} +.am-round { + border-radius: 1000px; +} +.am-circle { + border-radius: 50%; +} +/* Float blocks*/ +.am-cf:before, +.am-cf:after { + content: " "; + display: table; +} +.am-cf:after { + clear: both; +} +.am-fl { + float: left; +} +.am-fr { + float: right; +} +.am-nbfc { + overflow: hidden; +} +.am-center { + display: block; + margin-left: auto; + margin-right: auto; +} +/* Display */ +.am-block { + display: block !important; +} +.am-inline { + display: inline !important; +} +.am-inline-block { + display: inline-block !important; +} +.am-hide { + display: none !important; + visibility: hidden !important; +} +/* +* Remove whitespace between child elements when using `inline-block` +*/ +.am-vertical-align { + font-size: 0.001px; +} +/* +* The `@{ns}vertical-align` container needs a specific height +*/ +.am-vertical-align:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; +} +/* +* Sub-object which can have any height +* 1. Reset whitespace hack +*/ +.am-vertical-align-middle, +.am-vertical-align-bottom { + display: inline-block; + font-size: 1.6rem; + /* 1 */ + max-width: 100%; +} +.am-vertical-align-middle { + vertical-align: middle; +} +.am-vertical-align-bottom { + vertical-align: bottom; +} +.am-responsive-width { + -webkit-box-sizing: border-box; + box-sizing: border-box; + max-width: 100%; + height: auto; +} +/* Margin helpers */ +.am-margin { + margin: 1.6rem; +} +.am-margin-xs { + margin: 0.5rem; +} +.am-margin-sm { + margin: 1rem; +} +.am-margin-lg { + margin: 2.4rem; +} +.am-margin-xl { + margin: 3.2rem; +} +.am-margin-horizontal { + margin-left: 1.6rem; + margin-right: 1.6rem; +} +.am-margin-horizontal-xs { + margin-left: 0.5rem; + margin-right: 0.5rem; +} +.am-margin-horizontal-sm { + margin-left: 1rem; + margin-right: 1rem; +} +.am-margin-horizontal-lg { + margin-left: 2.4rem; + margin-right: 2.4rem; +} +.am-margin-horizontal-xl { + margin-left: 3.2rem; + margin-right: 3.2rem; +} +.am-margin-vertical { + margin-top: 1.6rem; + margin-bottom: 1.6rem; +} +.am-margin-vertical-xs { + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.am-margin-vertical-sm { + margin-top: 1rem; + margin-bottom: 1rem; +} +.am-margin-vertical-lg { + margin-top: 2.4rem; + margin-bottom: 2.4rem; +} +.am-margin-vertical-xl { + margin-top: 3.2rem; + margin-bottom: 3.2rem; +} +.am-margin-top { + margin-top: 1.6rem; +} +.am-margin-top-xs { + margin-top: 0.5rem; +} +.am-margin-top-sm { + margin-top: 1rem; +} +.am-margin-top-lg { + margin-top: 2.4rem; +} +.am-margin-top-xl { + margin-top: 3.2rem; +} +.am-margin-bottom { + margin-bottom: 1.6rem; +} +.am-margin-bottom-xs { + margin-bottom: 0.5rem; +} +.am-margin-bottom-sm { + margin-bottom: 1rem; +} +.am-margin-bottom-lg { + margin-bottom: 2.4rem; +} +.am-margin-bottom-xl { + margin-bottom: 3.2rem; +} +.am-margin-left { + margin-left: 1.6rem; +} +.am-margin-left-xs { + margin-left: 0.5rem; +} +.am-margin-left-sm { + margin-left: 1rem; +} +.am-margin-left-lg { + margin-left: 2.4rem; +} +.am-margin-left-xl { + margin-left: 3.2rem; +} +.am-margin-right { + margin-right: 1.6rem; +} +.am-margin-right-xs { + margin-right: 0.5rem; +} +.am-margin-right-sm { + margin-right: 1rem; +} +.am-margin-right-lg { + margin-right: 2.4rem; +} +.am-margin-right-xl { + margin-right: 3.2rem; +} +/* Padding helpers */ +.am-padding { + padding: 1.6rem; +} +.am-padding-xs { + padding: 0.5rem; +} +.am-padding-sm { + padding: 1rem; +} +.am-padding-lg { + padding: 2.4rem; +} +.am-padding-xl { + padding: 3.2rem; +} +.am-padding-horizontal { + padding-left: 1.6rem; + padding-right: 1.6rem; +} +.am-padding-horizontal-xs { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.am-padding-horizontal-sm { + padding-left: 1rem; + padding-right: 1rem; +} +.am-padding-horizontal-lg { + padding-left: 2.4rem; + padding-right: 2.4rem; +} +.am-padding-horizontal-xl { + padding-left: 3.2rem; + padding-right: 3.2rem; +} +.am-padding-vertical { + padding-top: 1.6rem; + padding-bottom: 1.6rem; +} +.am-padding-vertical-xs { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.am-padding-vertical-sm { + padding-top: 1rem; + padding-bottom: 1rem; +} +.am-padding-vertical-lg { + padding-top: 2.4rem; + padding-bottom: 2.4rem; +} +.am-padding-vertical-xl { + padding-top: 3.2rem; + padding-bottom: 3.2rem; +} +.am-padding-top { + padding-top: 1.6rem; +} +.am-padding-top-xs { + padding-top: 0.5rem; +} +.am-padding-top-sm { + padding-top: 1rem; +} +.am-padding-top-lg { + padding-top: 2.4rem; +} +.am-padding-top-xl { + padding-top: 3.2rem; +} +.am-padding-bottom { + padding-bottom: 1.6rem; +} +.am-padding-bottom-xs { + padding-bottom: 0.5rem; +} +.am-padding-bottom-sm { + padding-bottom: 1rem; +} +.am-padding-bottom-lg { + padding-bottom: 2.4rem; +} +.am-padding-bottom-xl { + padding-bottom: 3.2rem; +} +.am-padding-left { + padding-left: 1.6rem; +} +.am-padding-left-xs { + padding-left: 0.5rem; +} +.am-padding-left-sm { + padding-left: 1rem; +} +.am-padding-left-lg { + padding-left: 2.4rem; +} +.am-padding-left-xl { + padding-left: 3.2rem; +} +.am-padding-right { + padding-right: 1.6rem; +} +.am-padding-right-xs { + padding-right: 0.5rem; +} +.am-padding-right-sm { + padding-right: 1rem; +} +.am-padding-right-lg { + padding-right: 2.4rem; +} +.am-padding-right-xl { + padding-right: 3.2rem; +} +/* small displays */ +@media only screen { + .am-show-sm-only, + .am-show-sm-up, + .am-show-sm, + .am-show-sm-down, + .am-hide-md-only, + .am-hide-md-up, + .am-hide-md, + .am-show-md-down, + .am-hide-lg-only, + .am-hide-lg-up, + .am-hide-lg, + .am-show-lg-down { + display: inherit !important; + } + .am-hide-sm-only, + .am-hide-sm-up, + .am-hide-sm, + .am-hide-sm-down, + .am-show-md-only, + .am-show-md-up, + .am-show-md, + .am-hide-md-down, + .am-show-lg-only, + .am-show-lg-up, + .am-show-lg, + .am-hide-lg-down { + display: none !important; + } +} +/* medium displays */ +@media only screen and (min-width:641px) { + .am-hide-sm-only, + .am-show-sm-up, + .am-hide-sm, + .am-hide-sm-down, + .am-show-md-only, + .am-show-md-up, + .am-show-md, + .am-show-md-down, + .am-hide-lg-only, + .am-hide-lg-up, + .am-hide-lg, + .am-show-lg-down { + display: inherit !important; + } + .am-show-sm-only, + .am-hide-sm-up, + .am-show-sm, + .am-show-sm-down, + .am-hide-md-only, + .am-hide-md-up, + .am-hide-md, + .am-hide-md-down, + .am-show-lg-only, + .am-show-lg-up, + .am-show-lg, + .am-hide-lg-down { + display: none !important; + } +} +/* large displays */ +@media only screen and (min-width:1025px) { + .am-hide-sm-only, + .am-show-sm-up, + .am-hide-sm, + .am-hide-sm-down, + .am-hide-md-only, + .am-show-md-up, + .am-hide-md, + .am-hide-md-down, + .am-show-lg-only, + .am-show-lg-up, + .am-show-lg, + .am-show-lg-down { + display: inherit !important; + } + .am-show-sm-only, + .am-hide-sm-up, + .am-show-sm, + .am-show-sm-down, + .am-show-md-only, + .am-hide-md-up, + .am-show-md, + .am-show-md-down, + .am-hide-lg-only, + .am-hide-lg-up, + .am-hide-lg, + .am-hide-lg-down { + display: none !important; + } +} +@media only screen and (orientation: landscape) { + .am-show-landscape, + .am-hide-portrait { + display: inherit !important; + } + .am-hide-landscape, + .am-show-portrait { + display: none !important; + } +} +@media only screen and (orientation: portrait) { + .am-show-portrait, + .am-hide-landscape { + display: inherit !important; + } + .am-hide-portrait, + .am-show-landscape { + display: none !important; + } +} +.am-sans-serif { + font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", "FontAwesome", sans-serif; +} +.am-serif { + font-family: Georgia, "Times New Roman", Times, SimSun, "FontAwesome", serif; +} +.am-kai { + font-family: Georgia, "Times New Roman", Times, Kai, "Kaiti SC", KaiTi, BiauKai, "FontAwesome", serif; +} +.am-monospace { + font-family: Monaco, Menlo, Consolas, "Courier New", "FontAwesome", monospace; +} +.am-text-primary { + color: #0e90d2; +} +.am-text-secondary { + color: #3bb4f2; +} +.am-text-success { + color: #5eb95e; +} +.am-text-warning { + color: #f37b1d; +} +.am-text-danger { + color: #dd514c; +} +.am-link-muted { + color: #666; +} +.am-link-muted a { + color: #666; +} +.am-link-muted:hover, +.am-link-muted a:hover { + color: #555; +} +.am-text-default { + font-size: 1.6rem; +} +/* +.@{ns}text-xxs { + font-size: @font-size-xxs; +} +*/ +.am-text-xs { + font-size: 1.2rem; +} +.am-text-sm { + font-size: 1.4rem; +} +.am-text-lg { + font-size: 1.8rem; +} +.am-text-xl { + font-size: 2.4rem; +} +.am-text-xxl { + font-size: 3.2rem; +} +.am-text-xxxl { + font-size: 4.2rem; +} +.am-ellipsis, +.am-text-truncate { + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-text-break { + word-wrap: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; +} +.am-text-nowrap { + white-space: nowrap; +} +[class*='am-align-'] { + margin-bottom: 1rem; +} +.am-align-left { + margin-right: 1rem; + float: left; +} +.am-align-right { + margin-left: 1rem; + float: right; +} +/** Only display content to screen readers + * See: http://a11yproject.com/posts/how-to-hide-content/ + */ +.am-sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +/* Text Image Replacement */ +.am-text-ir { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +/* Text align */ +@media only screen { + .am-text-left { + text-align: left !important; + } + .am-text-right { + text-align: right !important; + } + .am-text-center { + text-align: center !important; + } + .am-text-justify { + text-align: justify !important; + } +} +@media only screen and (max-width: 640px) { + .am-sm-only-text-left { + text-align: left !important; + } + .am-sm-only-text-right { + text-align: right !important; + } + .am-sm-only-text-center { + text-align: center !important; + } + .am-sm-only-text-justify { + text-align: justify !important; + } +} +@media only screen and (min-width:641px) and (max-width:1024px) { + .am-md-only-text-left { + text-align: left !important; + } + .am-md-only-text-right { + text-align: right !important; + } + .am-md-only-text-center { + text-align: center !important; + } + .am-md-only-text-justify { + text-align: justify !important; + } +} +@media only screen and (min-width:641px) { + .am-md-text-left { + text-align: left !important; + } + .am-md-text-right { + text-align: right !important; + } + .am-md-text-center { + text-align: center !important; + } + .am-md-text-justify { + text-align: justify !important; + } +} +@media only screen and (min-width:1025px) { + .am-lg-text-left { + text-align: left !important; + } + .am-lg-text-right { + text-align: right !important; + } + .am-lg-text-center { + text-align: center !important; + } + .am-lg-text-justify { + text-align: justify !important; + } +} +.am-text-top { + vertical-align: top !important; +} +.am-text-middle { + vertical-align: middle !important; +} +.am-text-bottom { + vertical-align: bottom !important; +} +.am-angle { + position: absolute; +} +.am-angle:before, +.am-angle:after { + position: absolute; + display: block; + content: ""; + width: 0; + height: 0; + border: 8px dashed transparent; + z-index: 1; +} +.am-angle-up { + top: 0; +} +.am-angle-up:before, +.am-angle-up:after { + border-bottom-style: solid; + border-width: 0 8px 8px; +} +.am-angle-up:before { + border-bottom-color: #dddddd; + bottom: 0; +} +.am-angle-up:after { + border-bottom-color: #ffffff; + bottom: -1px; +} +.am-angle-down { + bottom: -9px; +} +.am-angle-down:before, +.am-angle-down:after { + border-top-style: solid; + border-width: 8px 8px 0; +} +.am-angle-down:before { + border-top-color: #dddddd; + bottom: 0; +} +.am-angle-down:after { + border-top-color: #ffffff; + bottom: 1px; +} +.am-angle-left { + left: -9px; +} +.am-angle-left:before, +.am-angle-left:after { + border-right-style: solid; + border-width: 8px 8px 8px 0; +} +.am-angle-left:before { + border-right-color: #dddddd; + left: 0; +} +.am-angle-left:after { + border-right-color: #ffffff; + left: 1px; +} +.am-angle-right { + right: 0; +} +.am-angle-right:before, +.am-angle-right:after { + border-left-style: solid; + border-width: 8px 0 8px 8px; +} +.am-angle-right:before { + border-left-color: #dddddd; + left: 0; +} +.am-angle-right:after { + border-left-color: #ffffff; + left: -1px; +} +/* ========================================================================== + Component: Alert Plugin + ============================================================================ */ +.am-alert { + margin-bottom: 15px; + padding: 10px; + background: #0e90d2; + color: #ffffff; + border: 1px solid #0c7cb5; + border-radius: 2px; +} +.am-alert a { + color: #ffffff; +} +.am-alert h1, +.am-alert h2, +.am-alert h3, +.am-alert h4, +.am-alert h5, +.am-alert h6 { + color: inherit; +} +.am-alert .am-close { + opacity: .4; +} +.am-alert .am-close:hover { + opacity: .6; +} +/* Add margin if adjacent element */ +* + .am-alert { + margin-top: 15px; +} +/* Remove margin from the last-child */ +.am-alert > :last-child { + margin-bottom: 0; +} +/* Close in alert */ +.am-alert > .am-close:first-child { + float: right; + height: auto; + margin: -3px -5px auto auto; +} +/* Remove margin from adjacent element */ +.am-alert > .am-close:first-child + * { + margin-top: 0; +} +.am-alert-secondary { + background-color: #eeeeee; + border-color: #dfdfdf; + color: #555555; +} +.am-alert-success { + background-color: #5eb95e; + border-color: #4bad4b; + color: #ffffff; +} +.am-alert-warning { + background-color: #f37b1d; + border-color: #e56c0c; + color: #ffffff; +} +.am-alert-danger { + background-color: #dd514c; + border-color: #d83832; + color: #ffffff; +} +.am-dropdown { + position: relative; + display: inline-block; +} +.am-dropdown-toggle:focus { + outline: 0; +} +.am-dropdown-content { + position: absolute; + top: 100%; + left: 0; + z-index: 1020; + display: none; + float: left; + min-width: 160px; + padding: 15px; + margin: 9px 0 0; + text-align: left; + line-height: 1.6; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 2px; + -webkit-background-clip: padding-box; + background-clip: padding-box; + -webkit-animation-duration: .15s; + animation-duration: .15s; +} +.am-dropdown-content:before, +.am-dropdown-content:after { + position: absolute; + display: block; + content: ""; + width: 0; + height: 0; + border: 8px dashed transparent; + z-index: 1; +} +.am-dropdown-content:before, +.am-dropdown-content:after { + border-bottom-style: solid; + border-width: 0 8px 8px; +} +.am-dropdown-content:before { + border-bottom-color: #dddddd; + bottom: 0; +} +.am-dropdown-content:after { + border-bottom-color: #ffffff; + bottom: -1px; +} +.am-dropdown-content:before, +.am-dropdown-content:after { + left: 10px; + top: -8px; + pointer-events: none; +} +.am-dropdown-content:after { + top: -7px; +} +.am-active > .am-dropdown-content { + display: block; +} +.am-dropdown-content :first-child { + margin-top: 0; +} +.am-dropdown-up .am-dropdown-content { + top: auto; + bottom: 100%; + margin: 0 0 9px; +} +.am-dropdown-up .am-dropdown-content:before, +.am-dropdown-up .am-dropdown-content:after { + border-bottom: none; + border-top: 8px solid #dddddd; + top: auto; + bottom: -8px; +} +.am-dropdown-up .am-dropdown-content:after { + bottom: -7px; + border-top-color: #ffffff; +} +.am-dropdown-flip .am-dropdown-content { + left: auto; + right: 0; +} +.am-dropdown-flip .am-dropdown-content:before, +.am-dropdown-flip .am-dropdown-content:after { + left: auto; + right: 10px; +} +ul.am-dropdown-content { + list-style: none; + padding: 5px 0; +} +ul.am-dropdown-content.am-fr { + right: 0; + left: auto; +} +ul.am-dropdown-content .am-divider { + height: 1px; + margin: 0rem 0; + overflow: hidden; + background-color: #e5e5e5; +} +ul.am-dropdown-content > li > a { + display: block; + padding: 6px 20px; + clear: both; + font-weight: normal; + color: #333333; + white-space: nowrap; +} +ul.am-dropdown-content > li > a:hover, +ul.am-dropdown-content > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; +} +ul.am-dropdown-content > .am-active > a, +ul.am-dropdown-content > .am-active > a:hover, +ul.am-dropdown-content > .am-active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #0e90d2; +} +ul.am-dropdown-content > .am-disabled > a, +ul.am-dropdown-content > .am-disabled > a:hover, +ul.am-dropdown-content > .am-disabled > a:focus { + color: #999999; +} +ul.am-dropdown-content > .am-disabled > a:hover, +ul.am-dropdown-content > .am-disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.am-dropdown-header { + display: block; + padding: 6px 20px; + font-size: 1.2rem; + color: #999999; +} +.am-fr > .am-dropdown-content { + right: 0; + left: auto; +} +.am-fr > .am-dropdown-content:before { + right: 10px; + left: auto; +} +.am-dropdown-animation { + -webkit-animation: am-dropdown-animation 0.15s ease-out; + animation: am-dropdown-animation 0.15s ease-out; +} +@-webkit-keyframes am-dropdown-animation { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + 100% { + opacity: 0; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } +} +@keyframes am-dropdown-animation { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + 100% { + opacity: 0; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } +} +/* ========================================================================== + Component: Flex Slider Plugin + ============================================================================ */ +.am-slider a:hover, +.am-slider a:focus { + outline: none; +} +.am-slides, +.am-control-nav, +.am-direction-nav { + margin: 0; + padding: 0; + list-style: none; +} +.am-slider { + margin: 0; + padding: 0; +} +.am-slider .am-slides:before, +.am-slider .am-slides:after { + content: " "; + display: table; +} +.am-slider .am-slides:after { + clear: both; +} +.am-slider .am-slides > li { + display: none; + -webkit-backface-visibility: hidden; + position: relative; +} +.no-js .am-slider .am-slides > li:first-child { + display: block; +} +.am-slider .am-slides img { + width: 100%; + display: block; +} +.am-pauseplay span { + text-transform: capitalize; +} +.am-slider { + position: relative; +} +.am-viewport { + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.am-slider-carousel li { + margin-right: 5px; +} +/* Direction Nav */ +/* Pause/Play */ +.am-control-nav { + position: absolute; +} +.am-control-nav li { + display: inline-block; +} +.am-control-thumbs { + position: static; + overflow: hidden; +} +.am-control-thumbs img { + -webkit-transition: opacity .1s; + transition: opacity .1s; +} +/** + * Slider Theme: Default + */ +.am-slider-default { + margin: 0 0 20px; + background-color: #fff; + border-radius: 2px; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 2px rgba(0, 0, 0, 0.15) + /* Direction Nav */ + /* Pause/Play */ + /* Control Nav */ +} +.am-slider-default .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-default .am-viewport { + max-height: 300px; +} +.am-slider-default .carousel li { + margin-right: 5px; +} +.am-slider-default .am-direction-nav a { + position: absolute; + top: 50%; + z-index: 10; + display: block; + width: 36px; + height: 24px; + margin: -12px 0 0; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: rgba(0, 0, 0, 0.65); + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-default .am-direction-nav a:before { + color: #333333; + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f137"; + font-size: 24px; +} +.am-slider-default .am-direction-nav a.am-next:before { + content: "\f138"; +} +.am-slider-default .am-direction-nav .am-prev { + left: 10px; +} +.am-slider-default .am-direction-nav .am-next { + right: 10px; + text-align: right; +} +.am-slider-default .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-default:hover .am-prev { + opacity: 0.7; + left: 10px; +} +.am-slider-default:hover .am-prev:hover { + opacity: 1; +} +.am-slider-default:hover .am-next { + opacity: 0.7; + right: 10px; +} +.am-slider-default:hover .am-next:hover { + opacity: 1; +} +.am-slider-default .am-pauseplay a { + display: block; + width: 20px; + height: 20px; + position: absolute; + bottom: 5px; + left: 10px; + opacity: 0.8; + z-index: 10; + overflow: hidden; + cursor: pointer; + color: #000000; +} +.am-slider-default .am-pauseplay a::before { + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 20px; + display: inline-block; + content: "\f04c"; +} +.am-slider-default .am-pauseplay a:hover { + opacity: 1; +} +.am-slider-default .am-pauseplay a.am-play::before { + content: "\f04b"; +} +.am-slider-default .am-slider-desc { + background-color: rgba(0, 0, 0, 0.7); + position: absolute; + bottom: 0; + padding: 10px; + width: 100%; + color: #ffffff; +} +.am-slider-default .am-control-nav { + width: 100%; + position: absolute; + bottom: -15px; + text-align: center; +} +.am-slider-default .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-default .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: #666; + background-color: rgba(0, 0, 0, 0.5); + line-height: 0; + font-size: 0; + cursor: pointer; + text-indent: -9999px; + border-radius: 20px; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-default .am-control-nav li a:hover { + background-color: #333; + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-default .am-control-nav li a.am-active { + background-color: #000; + background-color: #0e90d2; + cursor: default; +} +.am-slider-default .am-control-thumbs { + margin: 5px 0 0; + position: static; + overflow: hidden; +} +.am-slider-default .am-control-thumbs li { + width: 25%; + float: left; + margin: 0; +} +.am-slider-default .am-control-thumbs img { + width: 100%; + display: block; + opacity: .7; + cursor: pointer; +} +.am-slider-default .am-control-thumbs img:hover { + opacity: 1; +} +.am-slider-default .am-control-thumbs .am-active { + opacity: 1; + cursor: default; +} +/* ========================================================================== + Component: Modal Plugin + ============================================================================ */ +.am-modal { + width: 270px; + position: fixed; + display: none; + z-index: 1110; + left: 50%; + margin-left: -135px; + margin-top: 0; + top: 50%; + text-align: center; + border-radius: 2px; + opacity: 0; + -webkit-transform: translate3d(0, 0, 0) scale(1.185); + transform: translate3d(0, 0, 0) scale(1.185); + -webkit-transition-property: -webkit-transform, opacity; + transition-property: transform, opacity + /*@media @large-up { + width: @modal-lg; + margin-left: -@modal-lg/2; + }*/ +} +.am-modal:focus { + outline: 0; +} +.am-modal.am-modal-active { + opacity: 1; + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + -webkit-transform: translate3d(0, 0, 0) scale(1); + transform: translate3d(0, 0, 0) scale(1); +} +.am-modal.am-modal-out { + opacity: 0; + z-index: 1109; + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + -webkit-transform: translate3d(0, 0, 0) scale(0.815); + transform: translate3d(0, 0, 0) scale(0.815); +} +@media only screen and (min-width:641px) { + .am-modal { + width: 540px; + margin-left: -270px; + } +} +.am-modal-dialog { + border-radius: 2px; + background: #f8f8f8; +} +.am-modal-hd { + padding: 15px 10px 5px 10px; + font-size: 1.8rem; + font-weight: 500; +} +.am-modal-hd + .am-modal-bd { + padding-top: 0; +} +.am-modal-hd .am-close { + position: absolute; + top: 4px; + right: 4px; +} +.am-modal-bd { + padding: 15px 10px; + text-align: center; + border-bottom: 1px solid #dedede; + border-radius: 2px 2px 0 0; +} +.am-modal-bd + .am-modal-bd { + margin-top: 5px; +} +.am-modal-prompt-input { + display: block; + margin: 5px auto 0 auto; + border-radius: 2px; + padding: 5px; + line-height: 1.8rem; + width: 80%; + border: 1px solid #dedede; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} +.am-modal-prompt-input:focus { + outline: none; + border-color: #d6d6d6; +} +.am-modal-footer { + height: 44px; + overflow: hidden; + display: table; + width: 100%; + border-collapse: collapse; +} +.am-modal-btn { + display: table-cell !important; + padding: 0 5px; + height: 44px; + -webkit-box-sizing: border-box !important; + box-sizing: border-box !important; + font-size: 1.6rem; + line-height: 44px; + text-align: center; + color: #0e90d2; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + cursor: pointer; + border-right: 1px solid #dedede; +} +.am-modal-btn:first-child { + border-radius: 0 0 0 2px; +} +.am-modal-btn:last-child { + border-right: none; + border-radius: 0 0 2px 0; +} +.am-modal-btn:first-child:last-child { + border-radius: 0 0 2px 2px; +} +.am-modal-btn.am-modal-btn-bold { + font-weight: 500; +} +.am-modal-btn:active { + background: #d4d4d4; +} +.am-modal-btn + .am-modal-btn { + border-left: 1px solid #dedede; +} +.am-modal-no-btn .am-modal-dialog { + border-radius: 2px; + border-bottom: none; +} +.am-modal-no-btn .am-modal-bd { + border-bottom: none; +} +.am-modal-no-btn .am-modal-footer { + display: none; +} +.am-modal-loading .am-modal-bd { + border-bottom: none; +} +.am-modal-loading .am-icon-spin { + display: inline-block; + font-size: 2.4rem; +} +.am-modal-loading .am-modal-footer { + display: none; +} +.am-modal-actions { + position: fixed; + left: 0; + bottom: 0; + z-index: 1110; + width: 100%; + text-align: center; + border-radius: 2px; + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); + -webkit-transition: -webkit-transform 300ms; + transition: transform 300ms; +} +.am-modal-actions.am-modal-active { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); +} +.am-modal-actions.am-modal-out { + z-index: 1109; + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); +} +.am-modal-actions-group { + margin: 10px; +} +.am-modal-actions-group .am-list { + margin: 0; + border-radius: 2px; +} +.am-modal-actions-group .am-list > li { + margin-bottom: 0; + border-bottom: none; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.015); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.015); +} +.am-modal-actions-group .am-list > li > a { + padding: 1rem; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-modal-actions-group .am-list > li:first-child { + border-top: none; + border-top-right-radius: 2px; + border-top-left-radius: 2px; +} +.am-modal-actions-group .am-list > li:last-child { + border-bottom: none; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.am-modal-actions-header { + padding: 1rem; + color: #999999; + font-size: 1.4rem; +} +.am-modal-actions-danger { + color: #dd514c; +} +.am-modal-actions-danger a { + color: inherit; +} +.am-popup { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 1110; + background: #fff; + display: none; + overflow: hidden; + -webkit-transition-property: -webkit-transform; + transition-property: transform; + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); +} +.am-popup.am-modal-active, +.am-popup.am-modal-out { + -webkit-transition-duration: 300ms; + transition-duration: 300ms; +} +.am-popup.am-modal-active { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); +} +.am-popup.am-modal-out { + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); +} +@media all and (min-width: 630px) and (min-height: 630px) { + .am-popup { + width: 630px; + height: 630px; + left: 50%; + top: 50%; + margin-left: -315px; + margin-top: -315px; + -webkit-transform: translateY(1024px); + -ms-transform: translateY(1024px); + transform: translateY(1024px); + } + .am-popup.am-modal-active { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + .am-popup.am-modal-out { + -webkit-transform: translateY(1024px); + -ms-transform: translateY(1024px); + transform: translateY(1024px); + } +} +.am-popup-inner { + padding-top: 44px; + height: 100%; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.am-popup-hd { + position: fixed; + top: 0; + width: 100%; + height: 43px; + border-bottom: 1px solid #dedede; + background-color: #fff; +} +.am-popup-hd .am-popup-title { + font-size: 1.8rem; + font-weight: bold; + line-height: 43px; + text-align: center; + margin: 0 30px; + color: #333333; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-popup-hd .am-close { + position: absolute; + right: 10px; + top: 8px; + cursor: pointer; + -webkit-transition: all 0.3s; + transition: all 0.3s; + color: #999999; +} +.am-popup-hd .am-close:hover { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + color: #555555; +} +.am-popup-bd { + padding: 15px; + background: #f8f8f8; + color: #555555; +} +/* ========================================================================== + Component: OffCanvas Plugin + ============================================================================ */ +/* Off-canvas overlay and bar container */ +.am-offcanvas { + display: none; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1090; + background: rgba(0, 0, 0, 0.15); +} +.am-offcanvas.am-active { + display: block; +} +/** + * .@{ns}offcanvas-page + * + * Prepares the whole HTML page to slide-out + * 1. Fix the main page and disallow scrolling + * 2. Side-out transition + */ +.am-offcanvas-page { + position: fixed; + /* 1 */ + -webkit-transition: margin-left 0.3s ease-in-out; + transition: margin-left 0.3s ease-in-out + /* 2 */ +} +/* Sub-object .@{ns}offcanvas-bar */ +.am-offcanvas-bar { + position: fixed; + top: 0; + bottom: 0; + left: 0; + z-index: 1091; + width: 270px; + max-width: 100%; + background: #333333; + overflow-y: auto; + /* scrollable */ + -webkit-overflow-scrolling: touch; + /* scrollable */ + -webkit-transition: -webkit-transform 0.3s ease-in-out; + transition: transform 0.3s ease-in-out; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); +} +.am-offcanvas-bar:after { + content: ""; + display: block; + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 1px; + background: #262626; +} +.am-offcanvas.am-active .am-offcanvas-bar.am-offcanvas-bar-active { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} +/* .@{ns}offcanvas-bar-flip */ +.am-offcanvas-bar-flip { + left: auto; + right: 0; + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); +} +.am-offcanvas-bar-flip:after { + right: auto; + left: 0; +} +.am-offcanvas-content { + padding: 15px; + color: #999; +} +.am-offcanvas-content a { + color: #ccc; +} +/* ========================================================================== + Component: Popover Plugin + ============================================================================ */ +.am-popover { + position: absolute; + top: 0; + left: 0; + margin: 0; + border-radius: 2px; + background: #333333; + color: #ffffff; + border: 1px solid #333333; + display: none; + font-size: 1.6rem; + z-index: 1030; + opacity: 0; + -webkit-transition: opacity 300ms; + transition: opacity 300ms; +} +.am-popover.am-active { + display: block !important; + opacity: 1; +} +.am-popover-inner { + position: relative; + background: #333333; + padding: 8px; + z-index: 110; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.am-popover-caret { + position: absolute; + left: 5px; + top: 0; + z-index: 100; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-bottom: 8px solid #333333; + border-right: 8px solid transparent; + border-left: 8px solid transparent; + border-top: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + overflow: hidden; +} +.am-popover-top .am-popover-caret { + top: auto; + bottom: -8px; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.am-popover-bottom .am-popover-caret { + top: -8px; +} +.am-popover-left .am-popover-caret { + top: auto; + left: auto; + right: -12px; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.am-popover-right .am-popover-caret { + right: auto; + left: -12px; + -webkit-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.am-popover-sm { + font-size: 1.4rem; +} +.am-popover-sm .am-popover-inner { + padding: 5px; +} +.am-popover-lg { + font-size: 1.8rem; +} +.am-popover-secondary { + border-color: #0e90d2; +} +.am-popover-secondary .am-popover-inner { + background: #0e90d2; +} +.am-popover-secondary .am-popover-caret { + border-bottom-color: #0e90d2; +} +.am-popover-secondary { + border-color: #3bb4f2; +} +.am-popover-secondary .am-popover-inner { + background: #3bb4f2; +} +.am-popover-secondary .am-popover-caret { + border-bottom-color: #3bb4f2; +} +.am-popover-success { + border-color: #5eb95e; +} +.am-popover-success .am-popover-inner { + background: #5eb95e; +} +.am-popover-success .am-popover-caret { + border-bottom-color: #5eb95e; +} +.am-popover-warning { + border-color: #f37b1d; +} +.am-popover-warning .am-popover-inner { + background: #f37b1d; +} +.am-popover-warning .am-popover-caret { + border-bottom-color: #f37b1d; +} +.am-popover-danger { + border-color: #dd514c; +} +.am-popover-danger .am-popover-inner { + background: #dd514c; +} +.am-popover-danger .am-popover-caret { + border-bottom-color: #dd514c; +} +/* ========================================================================== + Component: Progress Plugin + ============================================================================ */ +#nprogress { + /* Make clicks pass-through */ + pointer-events: none + /* Fancy blur effect */ +} +#nprogress .nprogress-bar { + position: fixed; + top: 0; + left: 0; + z-index: 2000; + width: 100%; + height: 2px; + background: #5eb95e; +} +#nprogress .nprogress-peg { + display: block; + position: absolute; + right: 0; + width: 100px; + height: 100%; + -webkit-box-shadow: 0 0 10px #5eb95e, 0 0 5px #5eb95e; + box-shadow: 0 0 10px #5eb95e, 0 0 5px #5eb95e; + opacity: 1; + -webkit-transform: rotate(3deg) translate(0px, -4px); + -ms-transform: rotate(3deg) translate(0px, -4px); + transform: rotate(3deg) translate(0px, -4px); +} +#nprogress .nprogress-spinner { + position: fixed; + top: 15px; + right: 15px; + z-index: 2000; + display: block; +} +#nprogress .nprogress-spinner-icon { + width: 18px; + height: 18px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: solid 2px transparent; + border-top-color: #5eb95e; + border-left-color: #5eb95e; + border-radius: 50%; + -webkit-animation: nprogress-spinner 400ms linear infinite; + animation: nprogress-spinner 400ms linear infinite; +} +@-webkit-keyframes nprogress-spinner { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes nprogress-spinner { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +/* ========================================================================== + Component: Tabs Plugin + ============================================================================ */ +.am-tabs-bd { + position: relative; + overflow: hidden; + border: 1px solid #ddd; + border-top: none; + z-index: 100; + -webkit-transition: height .3s; + transition: height .3s; +} +.am-tabs-bd .am-tab-panel { + position: absolute; + top: 0; + z-index: 99; + float: left; + width: 100%; + padding: 10px 10px 15px; + visibility: hidden; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); +} +.am-tabs-bd .am-tab-panel * { + -webkit-user-drag: none; +} +.am-tabs-bd .am-tab-panel.am-active { + position: relative; + z-index: 100; + visibility: visible; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} +.am-tabs-bd .am-tab-panel.am-active ~ .am-tab-panel { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); +} +/* ========================================================================== + Component: Share Plugin + ============================================================================ */ +.am-share { + font-size: 14px; +} +.am-share-title { + padding: 10px 0 0; + margin: 0 10px; + font-weight: normal; + text-align: center; + color: #555555; + background-color: #f8f8f8; + border-bottom: 1px solid #fff; + border-top-right-radius: 2px; + border-top-left-radius: 2px; +} +.am-share-title:after { + content: ""; + display: block; + width: 100%; + height: 0; + margin-top: 10px; + border-bottom: 1px solid #dfdfdf; +} +.am-share-sns { + margin: 0 10px; + padding-top: 15px; + background-color: #f8f8f8; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.am-share-sns li { + margin-bottom: 15px; +} +.am-share-sns a { + display: block; + color: #555555; +} +.am-share-sns span { + display: block; +} +.am-share-sns [class*='am-icon'] { + background-color: #3bb4f2; + border-radius: 50%; + width: 36px; + height: 36px; + line-height: 36px; + color: #fff; + margin-bottom: 5px; + font-size: 18px; +} +.am-share-sns .am-icon-weibo { + background-color: #ea1328; +} +.am-share-sns .am-icon-qq { + background-color: #009cda; +} +.am-share-sns .am-icon-star { + background-color: #ffc028; +} +.am-share-sns .am-icon-tencent-weibo { + background-color: #23ccfe; +} +.am-share-sns .am-icon-wechat, +.am-share-sns .am-icon-weixin { + background-color: #44b549; +} +.am-share-sns .am-icon-renren { + background-color: #105ba3; +} +.am-share-sns .am-icon-comment { + background-color: #5eb95e; +} +.am-share-footer { + margin: 10px; +} +.am-share-footer .am-btn { + color: #555555; +} +.am-share-wechat-qr { + font-size: 14px; + color: #777; +} +.am-share-wechat-qr .am-modal-dialog { + background-color: #fff; + border: 1px solid #dedede; +} +.am-share-wechat-qr .am-modal-hd { + padding-top: 10px; + text-align: left; + margin-bottom: 10px; +} +.am-share-wechat-qr .am-share-wx-qr { + margin-bottom: 10px; +} +.am-share-wechat-qr .am-share-wechat-tip { + text-align: left; +} +.am-share-wechat-qr .am-share-wechat-tip em { + color: #dd514c; + font-weight: bold; + font-style: normal; + margin-left: 3px; + margin-right: 3px; +} +/* ========================================================================== + Component: PureView Plugin + ============================================================================ */ +.am-pureview { + position: fixed; + left: 0; + top: 0; + bottom: 0; + right: 0; + z-index: 1120; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.95); + display: none; + overflow: hidden; + -webkit-transition: -webkit-transform .3s; + transition: transform .3s; + -webkit-transform: translate(0, 100%); + -ms-transform: translate(0, 100%); + transform: translate(0, 100%); +} +.am-pureview.am-active { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} +.am-pureview ul, +.am-pureview ol { + list-style: none; + padding: 0; + margin: 0; + width: 100%; +} +.am-pureview-slider { + overflow: hidden; + height: 100%; +} +.am-pureview-slider li { + position: absolute; + width: 100%; + height: 100%; + top: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + vertical-align: middle; + -webkit-transition: all .3s linear; + transition: all .3s linear; + z-index: 100; + visibility: hidden; +} +.am-pureview-slider li.am-pureview-slide-prev { + -webkit-transform: translate(-100%, 0); + -ms-transform: translate(-100%, 0); + transform: translate(-100%, 0); + z-index: 109; +} +.am-pureview-slider li.am-pureview-slide-next { + -webkit-transform: translate(100%, 0); + -ms-transform: translate(100%, 0); + transform: translate(100%, 0); + z-index: 109; +} +.am-pureview-slider li.am-active { + position: relative; + z-index: 110; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); + visibility: visible; +} +.am-pureview-slider .pinch-zoom-container { + width: 100%; + z-index: 1121; +} +.am-pureview-slider .am-pinch-zoom { + position: relative; + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} +.am-pureview-slider .am-pinch-zoom:after { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f110"; + -webkit-animation: icon-spin 2s infinite linear; + animation: icon-spin 2s infinite linear; + font-size: 24px; + line-height: 24px; + color: #eee; + position: absolute; + top: 50%; + left: 50%; + margin-left: -12px; + margin-top: -12px; + z-index: 1; +} +.am-pureview-slider img { + position: relative; + display: block; + max-width: 100%; + max-height: 100%; + opacity: 0; + z-index: 200; + -webkit-user-drag: none; + -webkit-transition: opacity 0.2s ease-in; + transition: opacity 0.2s ease-in; +} +.am-pureview-slider img.am-img-loaded { + opacity: 1; +} +.am-pureview-direction { + position: absolute; + top: 50%; + width: 100%; + margin-top: -18px !important; + z-index: 1122; +} +.am-touch .am-pureview-direction, +.am-pureview-only .am-pureview-direction { + display: none; +} +.am-pureview-direction li { + position: absolute; + width: 36px; + height: 36px; +} +.am-pureview-direction a { + display: block; + height: 36px; + border: none; + color: #ccc; + opacity: 0.5; + cursor: pointer; + text-align: center; + z-index: 1125; +} +.am-pureview-direction a:before { + content: "\f137"; + line-height: 36px; + font-size: 24px; +} +.am-pureview-direction a:hover { + opacity: 1; +} +.am-pureview-direction .am-pureview-prev { + left: 15px; +} +.am-pureview-direction .am-pureview-next { + right: 15px; +} +.am-pureview-direction .am-pureview-next a:before { + content: "\f138"; +} +.am-pureview-bar { + position: absolute; + bottom: 0; + height: 45px; + width: 100%; + background-color: rgba(0, 0, 0, 0.35); + color: #eeeeee; + line-height: 45px; + padding: 0 10px; + font-size: 14px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-pureview-bar .am-pureview-title { + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + margin-left: 6px; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-pureview-bar .am-pureview-total { + font-size: 10px; + line-height: 48px; +} +.am-pureview-actions { + position: absolute; + z-index: 1130; + left: 0; + right: 0; + top: 0; + height: 45px; + background-color: rgba(0, 0, 0, 0.35); +} +.am-pureview-actions a { + position: absolute; + left: 10px; + color: #ccc; + display: block; + width: 45px; + line-height: 45px; + text-align: left; + font-size: 16px; +} +.am-pureview-actions a:hover { + color: #ffffff; +} +.am-pureview-actions [data-am-toggle="share"] { + left: auto; + right: 10px; +} +.am-pureview-bar, +.am-pureview-actions { + opacity: 0; + -webkit-transition: all .15s; + transition: all .15s; + z-index: 1130; +} +.am-pureview-bar-active .am-pureview-bar, +.am-pureview-bar-active .am-pureview-actions { + opacity: 1; +} +.am-pureview-nav { + position: absolute; + bottom: 15px; + left: 0; + right: 0; + text-align: center; + z-index: 1131; +} +.am-pureview-bar-active .am-pureview-nav { + display: none; +} +.am-pureview-nav li { + display: inline-block; + background: #ccc; + background: rgba(255, 255, 255, 0.5); + width: 8px; + height: 8px; + margin: 0 3px; + border-radius: 50%; + text-indent: -9999px; + overflow: hidden; + cursor: pointer; +} +.am-pureview-nav .am-active { + background: #fff; + background: rgba(255, 255, 255, 0.9); +} +[data-am-pureview] img { + cursor: pointer; +} +.am-pureview-active { + overflow: hidden; +} +/* ========================================================================== + Component: AddToHomeScreen Plugin + ============================================================================ */ +.ath-viewport * { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.ath-viewport { + position: relative; + z-index: 2147483641; + pointer-events: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-text-size-adjust: none; + -ms-text-size-adjust: none; + text-size-adjust: none; +} +.ath-modal { + pointer-events: auto !important; + background: rgba(0, 0, 0, 0.6); +} +.ath-mandatory { + background: #000; +} +.ath-container { + pointer-events: auto !important; + position: absolute; + z-index: 2147483641; + padding: 0.7em 0.6em; + width: 18em; + background: #eee; + -webkit-background-size: 100% auto; + background-size: 100% auto; + -webkit-box-shadow: 0 0.2em 0 #d1d1d1; + box-shadow: 0 0.2em 0 #d1d1d1; + font-family: sans-serif; + font-size: 15px; + line-height: 1.5em; + text-align: center; +} +.ath-ios.ath-phone { + bottom: 1.8em; + left: 50%; + margin-left: -9em; +} +.ath-ios6.ath-tablet { + left: 5em; + top: 1.8em; +} +.ath-ios7.ath-tablet { + left: 0.7em; + top: 1.8em; +} +.ath-ios8.ath-tablet { + right: 0.4em; + top: 1.8em; +} +.ath-android { + right: 1.5em; + top: 1.8em; +} +/* close icon */ +.ath-container:before { + content: ''; + position: relative; + display: block; + float: right; + margin: -0.7em -0.6em 0 0.5em; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAMAAABmmnOVAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAeHAAAHhwFd+hRDAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAHVQTFRFAAAAOTk5MzMzOzs7Nzc3QUFBQEBAPz8/Pj4+QUFBQEBAPz8/Pj4+QUFBQEBAPz8/QUFBPj4+Pz8/Pz8/Pj4+Pz8/Pz8/Pz8/Pj4+Pz8/Pj4+Pz8/Pz8/Pz8/Pz8/Pz8/Pj4+Pz8/Pz8/Pz8/Pz8/QEBAPz8/n3QmjwAAACZ0Uk5TAAkKDQ4zODk6OzxBQkNERUusrbG0tba7vL3Excbu8fL19fb3+PgucqJgAAACqklEQVR42sXc23LCIBAGYKy2pgft0WpP2vTA+z9i0+goCZAs7O7P3oWZTL5ZYAh7sca0MXmYG3jM7yfu4/TV1jdow01tX6cdg4UrGoN1FNM3a+GK1nBSzPYGrOJgsPZt1hrerYUrjoa9wjHgFI7B2veZWVk3tpCdWm07H30y8+4AIhedPFj7cW7wioABrggawIqIAaroGbYXzlGCUvQNnc0IUgwaQIoRA0QxagAoCAZ1BcmgrCAaVBVkg6IiwaCmSDIoKRINKopkg4IiwyCuyDIIKzINoopsg6CCYRBTsAxCCqZBRLGo2RcrtkLAwFaIGJgKIQNLIWZgKAQN2QpRg1dKoCmEDVkKcUOGQsGQrFAxJCqUDEkKNUOCQtFAVqgaiAplg69YFDAQFADDqAJiGFGADI1iF1XADAOKvqHSLApHFFBDRAE2BBVwQ0BRwOApfn8LGDxFEcOQAmeIK5CGmAJrCCvQBq8A8r9Zrw08qp6irvAGs/zpIr4XBQxf3nQsyhvwipABrQgbsIqYAamIG3CKnqH+LKDoGXbVwD84zDB4E4AZ4IqgAayIGKCKqMGYS5RiwOArlgUMnuJrWcAAUYwaAAqCQV1BMigriAZVBdmgqEgwqCmSDEqKRIOKItmgoMgwiCv6hkvaa6KKTIOoItsgqGAYxBQsg5CCaRBRsA0CCgEDWyFiYCqEDCyFmIGhEDRkK0QNmQphQ5ZC3JChUDAkK1QMiQolQ5JCzZCguNUzkBV3P4oGokLZQFKoGwgKgGFUATGMKECGQQXMYMxVTAE0RBVQQ0QBNgQVcENI8QwoBo8cUiszWYPz4OVi3bQ9cBQoQ0exblsvTDZwg6PYHNo/tE0XmvVwa4BxWBentgtnL+A8HHPxcnYaaBRoQ6twDY3iEW5oFI8Hwx/QxSE448b+MwAAAABJRU5ErkJggg==); + background-color: rgba(255, 255, 255, 0.8); + -webkit-background-size: 50% 50%; + background-size: 50%; + background-repeat: no-repeat; + background-position: 50%; + width: 2.7em; + height: 2.7em; + text-align: center; + overflow: hidden; + color: #a33; + z-index: 2147483642; +} +.ath-container.ath-icon:before { + position: absolute; + top: 0; + right: 0; + margin: 0; + float: none; +} +.ath-mandatory .ath-container:before { + display: none; +} +.ath-container.ath-android:before { + float: left; + margin: -0.7em 0.5em 0 -0.6em; +} +.ath-container.ath-android.ath-icon:before { + position: absolute; + right: auto; + left: 0; + margin: 0; + float: none; +} +/* applied only if the application icon is shown */ +.ath-action-icon { + display: inline-block; + vertical-align: middle; + background-position: 50%; + background-repeat: no-repeat; + text-indent: -9999em; + overflow: hidden; +} +.ath-android .ath-action-icon { + width: 1.2em; + height: 1.8em; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAADcBAMAAAAig/QJAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAFtDAABbQwH5xg68AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAB5QTFRFAAAA////cXFxaWlp////ZmZmnJycoaGhpqam////1D9b6wAAAAV0Uk5TAAgJERExZxYzAAAAYklEQVRYw+3WoQ2AUBAE0SsBOiBUQEIDCArA4FFoHBaJxNItFYz/x5+xz282VmwJTdM0rRzbsS1e7Pm9zdgUVn491rkFmqZpSezEjqo/Sos1HoAEjdjgFmiapiWxG7tq/igfnYteFlnOWZEAAAAASUVORK5CYII=); + -webkit-background-size: auto 100%; + background-size: auto 100%; +} +.ath-ios7 .ath-action-icon, +.ath-ios8 .ath-action-icon { + width: 1.6em; + height: 1.6em; + background-image: url(data:image/png;base64,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); + margin-top: -0.3em; + -webkit-background-size: auto 100%; + background-size: auto 100%; +} +.ath-ios6 .ath-action-icon { + width: 1.8em; + height: 1.8em; + background-image: url(data:image/png;base64,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); + margin-bottom: 0.4em; + -webkit-background-size: 100% auto; + background-size: 100% auto; +} +.ath-container p { + margin: 0; + padding: 0; + position: relative; + z-index: 2147483642; + text-shadow: 0 0.1em 0 #fff; + font-size: 1.1em; +} +.ath-ios.ath-phone:after { + content: ''; + background: #eee; + position: absolute; + width: 2em; + height: 2em; + bottom: -0.9em; + left: 50%; + margin-left: -1em; + -webkit-transform: scaleX(0.9) rotate(45deg); + -ms-transform: scaleX(0.9) rotate(45deg); + transform: scaleX(0.9) rotate(45deg); + -webkit-box-shadow: 0.2em 0.2em 0 #d1d1d1; + box-shadow: 0.2em 0.2em 0 #d1d1d1; +} +.ath-ios.ath-tablet:after { + content: ''; + background: #eee; + position: absolute; + width: 2em; + height: 2em; + top: -0.9em; + left: 50%; + margin-left: -1em; + -webkit-transform: scaleX(0.9) rotate(45deg); + -ms-transform: scaleX(0.9) rotate(45deg); + transform: scaleX(0.9) rotate(45deg); + z-index: 2147483641; +} +.ath-android:after { + content: ''; + background: #eee; + background: -webkit-linear-gradient(-45deg, rgba(238, 238, 238, 0) 0%, rgba(238, 238, 238, 0) 50%, #eeeeee 50%, #eeeeee 100%); + position: absolute; + width: 2em; + height: 2em; + top: -1.5em; + right: 0; +} +.ath-application-icon { + position: relative; + padding: 0; + border: 0; + margin: 0 auto 0.2em auto; + height: 4.8em; + width: 4.8em; + z-index: 2147483642; +} +.ath-container.ath-ios .ath-application-icon { + border-radius: 1em; + -webkit-box-shadow: 0 0.2em 0.4em rgba(0, 0, 0, 0.3), inset 0 0.07em 0 rgba(255, 255, 255, 0.5); + box-shadow: 0 0.2em 0.4em rgba(0, 0, 0, 0.3), inset 0 0.07em 0 rgba(255, 255, 255, 0.5); + margin: 0 auto 0.4em auto; +} +@media only screen and (orientation: landscape) { + .ath-container.ath-phone { + width: 24em; + } + .ath-ios.ath-phone { + margin-left: -12em; + } + .ath-ios6:after { + left: 39%; + } + .ath-ios8.ath-phone { + left: auto; + bottom: auto; + right: 0.4em; + top: 1.8em; + } + .ath-ios8.ath-phone:after { + bottom: auto; + top: -0.9em; + left: 68%; + z-index: 2147483641; + -webkit-box-shadow: none; + box-shadow: none; + } +} +/* ========================================================================== + Component: uCheck Plugin + ============================================================================ */ +.am-checkbox, +.am-radio { + margin-bottom: 12px; + padding-left: 25px; + position: relative; + -webkit-transition: color .25s linear; + transition: color .25s linear; + font-size: 14px; + line-height: 1.5; +} +label.am-checkbox, +label.am-radio { + font-weight: normal; +} +.am-ucheck-icons { + color: #999999; + display: block; + height: 20px; + top: 0; + left: 0; + position: absolute; + width: 20px; + text-align: center; + line-height: 21px; + font-size: 18px; + cursor: pointer; +} +.am-checkbox .am-icon-checked, +.am-radio .am-icon-checked, +.am-checkbox .am-icon-unchecked, +.am-radio .am-icon-unchecked { + position: absolute; + left: 0; + top: 0; + display: inline-table; + margin: 0; + background-color: transparent; + -webkit-transition: color .25s linear; + transition: color .25s linear; +} +.am-checkbox .am-icon-checked:before, +.am-radio .am-icon-checked:before, +.am-checkbox .am-icon-unchecked:before, +.am-radio .am-icon-unchecked:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.am-checkbox .am-icon-checked, +.am-radio .am-icon-checked { + opacity: 0; +} +.am-checkbox .am-icon-checked:before { + content: "\f046"; +} +.am-checkbox .am-icon-unchecked:before { + content: "\f096"; +} +.am-radio .am-icon-checked:before { + content: "\f192"; +} +.am-radio .am-icon-unchecked:before { + content: "\f10c"; +} +.am-ucheck-checkbox, +.am-ucheck-radio { + position: absolute; + left: 0; + top: 0; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + opacity: 0; + outline: none !important; +} +.am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled) + .am-ucheck-icons, +.am-ucheck-radio:hover:not(.am-nohover):not(:disabled) + .am-ucheck-icons { + color: #0e90d2; +} +.am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-ucheck-radio:checked + .am-ucheck-icons { + color: #0e90d2; +} +.am-ucheck-checkbox:checked + .am-ucheck-icons .am-icon-unchecked, +.am-ucheck-radio:checked + .am-ucheck-icons .am-icon-unchecked { + opacity: 0; +} +.am-ucheck-checkbox:checked + .am-ucheck-icons .am-icon-checked, +.am-ucheck-radio:checked + .am-ucheck-icons .am-icon-checked { + opacity: 1; +} +.am-ucheck-checkbox:disabled + .am-ucheck-icons, +.am-ucheck-radio:disabled + .am-ucheck-icons { + cursor: default; + color: #d8d8d8; +} +.am-ucheck-checkbox:disabled:checked + .am-ucheck-icons .am-icon-unchecked, +.am-ucheck-radio:disabled:checked + .am-ucheck-icons .am-icon-unchecked { + opacity: 0; +} +.am-ucheck-checkbox:disabled:checked + .am-ucheck-icons .am-icon-checked, +.am-ucheck-radio:disabled:checked + .am-ucheck-icons .am-icon-checked { + opacity: 1; + color: #d8d8d8; +} +.am-checkbox.am-secondary .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-secondary .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-checkbox.am-secondary .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-secondary .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons { + color: #3bb4f2; +} +.am-checkbox.am-secondary .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-radio.am-secondary .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-checkbox.am-secondary .am-ucheck-radio:checked + .am-ucheck-icons, +.am-radio.am-secondary .am-ucheck-radio:checked + .am-ucheck-icons { + color: #3bb4f2; +} +.am-checkbox.am-success .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-success .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-checkbox.am-success .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-success .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons { + color: #5eb95e; +} +.am-checkbox.am-success .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-radio.am-success .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-checkbox.am-success .am-ucheck-radio:checked + .am-ucheck-icons, +.am-radio.am-success .am-ucheck-radio:checked + .am-ucheck-icons { + color: #5eb95e; +} +.am-checkbox.am-warning .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-warning .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-checkbox.am-warning .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-warning .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons { + color: #f37b1d; +} +.am-checkbox.am-warning .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-radio.am-warning .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-checkbox.am-warning .am-ucheck-radio:checked + .am-ucheck-icons, +.am-radio.am-warning .am-ucheck-radio:checked + .am-ucheck-icons { + color: #f37b1d; +} +.am-checkbox.am-danger .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-danger .am-ucheck-checkbox:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-checkbox.am-danger .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons, +.am-radio.am-danger .am-ucheck-radio:hover:not( .am-nohover):not(:disabled) + .am-ucheck-icons { + color: #dd514c; +} +.am-checkbox.am-danger .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-radio.am-danger .am-ucheck-checkbox:checked + .am-ucheck-icons, +.am-checkbox.am-danger .am-ucheck-radio:checked + .am-ucheck-icons, +.am-radio.am-danger .am-ucheck-radio:checked + .am-ucheck-icons { + color: #dd514c; +} +.am-field-error + .am-ucheck-icons { + color: #dd514c; +} +.am-field-valid + .am-ucheck-icons { + color: #5eb95e; +} +.am-input-group-label .am-radio, +.am-input-group-label .am-checkbox { + margin: -2px 0; + padding-left: 15px; +} +.am-form-inline .am-checkbox, +.am-form-inline .am-radio { + padding-left: 24px; +} +/* ========================================================================== + Component: Selected Plugin + ============================================================================ */ +.am-selected-btn { + text-align: right; + width: 200px; +} +.am-selected-btn.am-btn-default { + background: none; +} +.am-selected-header { + height: 45px; + background-color: #f2f2f2; + border-bottom: 1px solid #ddd; + display: none; +} +.am-selected-status { + text-align: left; + width: 100%; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-selected-content { + padding: 10px 0; +} +.am-selected-search { + padding: 0 10px 10px; +} +.am-selected-search .am-form-field { + padding: .5em; +} +.am-selected-list { + margin: 0; + padding: 0; + list-style: none; + font-size: 1.5rem; +} +.am-selected-list li { + position: relative; + cursor: pointer; + padding: 5px 10px; + -webkit-transition: background-color 0.15s; + transition: background-color 0.15s; +} +.am-selected-list li:hover { + background-color: #f8f8f8; +} +.am-selected-list li:hover .am-icon-check { + opacity: .6; +} +.am-selected-list li.am-checked .am-icon-check { + opacity: 1; + color: #0e90d2; +} +.am-selected-list .am-selected-list-header { + margin-top: 8px; + font-size: 1.3rem; + color: #999999; + border-bottom: 1px solid #e5e5e5; + cursor: default; +} +.am-selected-list .am-selected-list-header:hover { + background: none; +} +.am-selected-list .am-selected-list-header:first-child { + margin-top: 0; +} +.am-selected-list .am-selected-text { + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + margin-right: 30px; +} +.am-selected-list .am-icon-check { + position: absolute; + right: 8px; + top: 5px; + color: #999999; + opacity: 0; + -webkit-transition: opacity .15s; + transition: opacity .15s; +} +.am-selected-hint { + line-height: 1.2; + color: #dd514c; +} +.am-selected-hint:not(:empty) { + margin-top: 10px; + border-top: 1px solid #e5e5e5; + padding: 10px 10px 0; +} +/* ========================================================================== + Component: JS Plugins helpers + ============================================================================ */ +.am-fade { + opacity: 0; + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear; +} +.am-fade.am-in { + opacity: 1; +} +.am-collapse { + display: none; +} +.am-collapse.am-in { + display: block; +} +tr.am-collapse.am-in { + display: table-row; +} +tbody.am-collapse.am-in { + display: table-row-group; +} +.am-collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height .3s ease; + transition: height .3s ease; +} +.am-sticky { + position: fixed !important; + z-index: 1010; + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; +} +[data-am-sticky][class*="am-animation-"] { + -webkit-animation-duration: .2s; + animation-duration: .2s; +} +.am-dimmer-active { + overflow: hidden; +} +.am-dimmer { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: none; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.6); + z-index: 1100; + opacity: 0; +} +.am-dimmer.am-active { + opacity: 1; +} +[data-am-collapse] { + cursor: pointer; +} +.am-datepicker { + top: 0; + left: 0; + border-radius: 2px; + background: #ffffff; + -webkit-box-shadow: 0 0 10px #ccc; + box-shadow: 0 0 10px #ccc; + padding-bottom: 10px; + margin-top: 10px; + width: 238px; + color: #555555; + display: none; +} +.am-datepicker > div { + display: none; +} +.am-datepicker table { + width: 100%; +} +.am-datepicker tr.am-datepicker-header { + font-size: 1.6rem; + color: #ffffff; + background: #3bb4f2; +} +.am-datepicker td, +.am-datepicker th { + text-align: center; + font-weight: normal; + cursor: pointer; +} +.am-datepicker th { + height: 48px; +} +.am-datepicker td { + font-size: 1.4rem; +} +.am-datepicker td.am-datepicker-day { + height: 34px; + width: 34px; +} +.am-datepicker td.am-datepicker-day:hover { + background: #f0f0f0; + height: 34px; + width: 34px; +} +.am-datepicker td.am-datepicker-day.am-disabled { + cursor: no-drop; + color: #999999; + background: #fafafa; +} +.am-datepicker td.am-datepicker-old, +.am-datepicker td.am-datepicker-new { + color: #89d7ff; +} +.am-datepicker td.am-active, +.am-datepicker td.am-active:hover { + border-radius: 2px; + color: #0084c7; + background: #f0f0f0; +} +.am-datepicker td span { + display: block; + width: 79.33333333px; + height: 40px; + line-height: 40px; + float: left; + cursor: pointer; +} +.am-datepicker td span:hover { + background: #f0f0f0; +} +.am-datepicker td span.am-active { + color: #0084c7; + background: #f0f0f0; +} +.am-datepicker td span.am-datepicker-old { + color: #89d7ff; +} +.am-datepicker .am-datepicker-dow { + height: 40px; + color: #0c80ba; +} +.am-datepicker-caret { + display: block!important; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-bottom: 7px solid #3bb4f2; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-top: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + position: absolute; + top: -7px; + left: 6px; +} +.am-datepicker-right .am-datepicker-caret { + left: auto; + right: 7px; +} +.am-datepicker-up .am-datepicker-caret { + top: auto; + bottom: -7px; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-top: 7px solid #ffffff; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); +} +.am-datepicker-select { + height: 34px; + line-height: 34px; + text-align: center; + -webkit-transition: background-color 300ms ease-out; + transition: background-color 300ms ease-out; +} +.am-datepicker-select:hover { + background: rgba(154, 217, 248, 0.5); + color: #0c80ba; +} +.am-datepicker-prev, +.am-datepicker-next { + width: 34px; + height: 34px; +} +.am-datepicker-prev-icon, +.am-datepicker-next-icon { + width: 34px; + height: 34px; + line-height: 34px; + display: inline-block; + -webkit-transition: background-color 300ms ease-out; + transition: background-color 300ms ease-out; +} +.am-datepicker-prev-icon:hover, +.am-datepicker-next-icon:hover { + background: rgba(154, 217, 248, 0.5); + color: #0c80ba; +} +.am-datepicker-prev-icon:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; +} +.am-datepicker-next-icon:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f054"; +} +.am-datepicker-dropdown { + position: absolute; + z-index: 1000; +} +@media only screen and (max-width: 640px) { + .am-datepicker { + width: 100%; + } + .am-datepicker td span { + width: 33.33%; + } + .am-datepicker-caret { + display: none!important; + } + .am-datepicker-prev, + .am-datepicker-next { + width: 44px; + height: 44px; + } +} +.am-datepicker-success tr.am-datepicker-header { + background: #5eb95e; +} +.am-datepicker-success td.am-datepicker-day.am-disabled { + color: #999999; +} +.am-datepicker-success td.am-datepicker-old, +.am-datepicker-success td.am-datepicker-new { + color: #94df94; +} +.am-datepicker-success td.am-active, +.am-datepicker-success td.am-active:hover { + color: #1b961b; +} +.am-datepicker-success td span.am-datepicker-old { + color: #94df94; +} +.am-datepicker-success td span.am-active { + color: #1b961b; +} +.am-datepicker-success .am-datepicker-caret { + border-bottom-color: #5eb95e; +} +.am-datepicker-success .am-datepicker-dow { + color: #367b36; +} +.am-datepicker-success .am-datepicker-select:hover, +.am-datepicker-success .am-datepicker-prev-icon:hover, +.am-datepicker-success .am-datepicker-next-icon:hover { + background: rgba(165, 216, 165, 0.5); + color: #367b36; +} +.am-datepicker-danger tr.am-datepicker-header { + background: #dd514c; +} +.am-datepicker-danger td.am-datepicker-day.am-disabled { + color: #999999; +} +.am-datepicker-danger td.am-datepicker-old, +.am-datepicker-danger td.am-datepicker-new { + color: #f59490; +} +.am-datepicker-danger td.am-active, +.am-datepicker-danger td.am-active:hover { + color: #c10802; +} +.am-datepicker-danger td span.am-datepicker-old { + color: #f59490; +} +.am-datepicker-danger td span.am-active { + color: #c10802; +} +.am-datepicker-danger .am-datepicker-caret { + border-bottom-color: #dd514c; +} +.am-datepicker-danger .am-datepicker-dow { + color: #a4241f; +} +.am-datepicker-danger .am-datepicker-select:hover, +.am-datepicker-danger .am-datepicker-prev-icon:hover, +.am-datepicker-danger .am-datepicker-next-icon:hover { + background: rgba(237, 164, 162, 0.5); + color: #a4241f; +} +.am-datepicker-warning tr.am-datepicker-header { + background: #f37b1d; +} +.am-datepicker-warning td.am-datepicker-day.am-disabled { + color: #999999; +} +.am-datepicker-warning td.am-datepicker-old, +.am-datepicker-warning td.am-datepicker-new { + color: #ffad6d; +} +.am-datepicker-warning td.am-active, +.am-datepicker-warning td.am-active:hover { + color: #aa4b00; +} +.am-datepicker-warning td span.am-datepicker-old { + color: #ffad6d; +} +.am-datepicker-warning td span.am-active { + color: #aa4b00; +} +.am-datepicker-warning .am-datepicker-caret { + border-bottom-color: #f37b1d; +} +.am-datepicker-warning .am-datepicker-dow { + color: #a14c09; +} +.am-datepicker-warning .am-datepicker-select:hover, +.am-datepicker-warning .am-datepicker-prev-icon:hover, +.am-datepicker-warning .am-datepicker-next-icon:hover { + background: rgba(248, 180, 126, 0.5); + color: #a14c09; +} +/* ========================================================================== + Component: Print + ============================================================================ */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + /* Black prints faster: h5bp.com/s */ + -webkit-box-shadow: none !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) "] "; + } + /** + * Don't show links that are fragment identifiers, + * or use the `javascript:` pseudo protocol + */ + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group + /* h5bp.com/t */ + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + margin: 0.5cm; + } + select { + background: #fff !important; + } + .am-topbar { + display: none; + } + .am-table td, + .am-table th { + background-color: #fff !important; + } + .am-table { + border-collapse: collapse !important; + } + .am-table-bordered th, + .am-table-bordered td { + border: 1px solid #ddd !important; + } +} +/* print helper classes */ +.am-print-block { + display: none !important; +} +@media print { + .am-print-block { + display: block !important; + } +} +.am-print-inline { + display: none !important; +} +@media print { + .am-print-inline { + display: inline !important; + } +} +.am-print-inline-block { + display: none !important; +} +@media print { + .am-print-inline-block { + display: inline-block !important; + } +} +@media print { + .am-print-hide { + display: none !important; + } +} +.lte9 #nprogress .nprogress-spinner { + display: none !important; +} +.lte8 .am-dimmer { + background-color: #000; + filter: alpha(opacity=60); +} +.lte8 .am-modal-actions { + display: none; +} +.lte8 .am-modal-actions.am-modal-active { + display: block; +} +.lte8 .am-offcanvas.am-active { + background: #000; +} +.lte8 .am-popover .am-popover-caret { + border: 8px solid transparent; +} +.lte8 .am-popover-top .am-popover-caret { + border-top: 8px solid #333333; + border-bottom: none; +} +.lte8 .am-popover-left .am-popover-caret { + right: -8px; + margin-top: -6px; + border-left: 8px solid #333333; + border-right: none; +} +.lte8 .am-popover-right .am-popover-caret { + left: -8px; + margin-top: -6px; + border-right: 8px solid #333333; + border-left: none; +} +.am-accordion-item { + margin: 0; +} +.am-accordion-title { + font-weight: normal; + cursor: pointer; +} +.am-accordion-bd { + margin: 0 !important; + padding: 0 !important; + border: none !important; +} +.am-accordion-content { + margin-top: 0; + padding: 0.8rem 1rem 1.2rem; + font-size: 1.4rem; +} +/** + * Accordion Theme: default + * Author: Minwe (minwe@yunshipei.com) + */ +.am-accordion-default { + margin: 1rem; + border-radius: 2px; + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); +} +.am-accordion-default .am-accordion-item { + border-top: 1px solid rgba(0, 0, 0, 0.05); +} +.am-accordion-default .am-accordion-item:first-child { + border-top: none; +} +.am-accordion-default .am-accordion-title { + color: rgba(0, 0, 0, 0.6); + -webkit-transition: background-color 0.2s ease-out; + transition: background-color 0.2s ease-out; + padding: .8rem 1rem; +} +.am-accordion-default .am-accordion-title:before { + content: "\f0da"; + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transition: -webkit-transform .2s ease; + transition: transform .2s ease; + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); + margin-right: 5px; +} +.am-accordion-default .am-accordion-title:hover { + color: #0e90d2; +} +.am-accordion-default .am-accordion-content { + color: #666666; +} +.am-accordion-default .am-active .am-accordion-title { + background-color: #eeeeee; + color: #0e90d2; +} +.am-accordion-default .am-active .am-accordion-title:before { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +/** + * Accordion Theme: basic + * Author: Minwe (minwe@yunshipei.com) + */ +.am-accordion-basic { + margin: 1rem; +} +.am-accordion-basic .am-accordion-title { + color: #333333; + -webkit-transition: background-color 0.2s ease-out; + transition: background-color 0.2s ease-out; + padding: .8rem 0 0; +} +.am-accordion-basic .am-accordion-title:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f0da"; + -webkit-transition: -webkit-transform .2s ease; + transition: transform .2s ease; + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); + margin-right: .5rem; +} +.am-accordion-basic .am-accordion-content { + color: #666666; +} +.am-accordion-basic .am-active .am-accordion-title { + color: #0e90d2; +} +.am-accordion-basic .am-active .am-accordion-title:before { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +/** + * Accordion Theme: gapped + * Author: Minwe (minwe@yunshipei.com) + */ +.am-accordion-gapped { + margin: .5rem 1rem; +} +.am-accordion-gapped .am-accordion-item { + border: 1px solid #dedede; + border-bottom: none; + margin: .5rem 0; +} +.am-accordion-gapped .am-accordion-item.am-active { + border-bottom: 1px solid #dedede; +} +.am-accordion-gapped .am-accordion-title { + color: rgba(0, 0, 0, 0.6); + -webkit-transition: background-color 0.15s ease-out; + transition: background-color 0.15s ease-out; + border-bottom: 1px solid #dedede; + padding: 0.8rem 2rem 0.8rem 1rem; + position: relative; +} +.am-accordion-gapped .am-accordion-title:after { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f105"; + -webkit-transition: -webkit-transform .2s linear; + transition: transform .2s linear; + position: absolute; + right: 10px; + top: 50%; + margin-top: -0.8rem; +} +.am-accordion-gapped .am-accordion-title:hover { + color: rgba(0, 0, 0, 0.8); +} +.am-accordion-gapped .am-accordion-content { + color: #666666; +} +.am-accordion-gapped .am-active .am-accordion-title { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.8); +} +.am-accordion-gapped .am-active .am-accordion-title:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +/** + * Accordion Theme: one + * Author: hzp (hzp@yunshipei.com) + */ +.am-accordion-one { + margin: 0 10px 0 10px; +} +.am-accordion-one .am-accordion-item { + border: 1px solid #dfdfdf; + margin: .5rem 0; + background: #ffffff; +} +.am-accordion-one .am-accordion-title { + color: #555555; + -webkit-transition: background-color 0.2s ease-out; + transition: background-color 0.2s ease-out; + padding: 0.8rem 2rem 0.8rem 1rem; + position: relative; +} +.am-accordion-one .am-accordion-title:after { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f105"; + -webkit-transition: -webkit-transform .2s linear; + transition: transform .2s linear; + position: absolute; + right: 10px; + top: 50%; + margin-top: -0.8rem; +} +.am-accordion-one .am-accordion-title:hover { + color: #15afef; +} +.am-accordion-one .am-accordion-content { + color: #666666; +} +.am-accordion-one .am-active .am-accordion-title { + background-color: #f8f8f8; + color: #15afef; +} +.am-accordion-one .am-active .am-accordion-title:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +/** + * Divider Theme: default + */ +.am-divider-default { + height: 1px; + border: none; + margin: 1.5rem auto; + overflow: hidden; + background-color: #dddddd; + clear: both; +} +/** + * Divider Theme: one + */ +.am-divider-one { + height: 10px; + border: none; + overflow: hidden; + clear: both; + margin: 0; +} +.am-figure-zoomable { + position: relative; + cursor: pointer; +} +.am-figure-zoomable:after { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f00e"; + position: absolute; + top: 1rem; + right: 1rem; + color: #999999; + font-size: 1.6rem; + -webkit-transition: all 0.2s; + transition: all 0.2s; +} +.am-figure-zoomable:hover:after { + color: #eeeeee; +} +.am-figure-default { + margin: 10px; +} +.am-figure-default img { + display: block; + max-width: 100%; + height: auto; + padding: 2px; + border: 1px solid #eeeeee; + margin: 10px auto; +} +.am-figure-default figcaption { + text-align: center; + font-size: 1.4rem; + margin-bottom: 15px; + color: #333333; +} +/** + * Figure theme: one + */ +.am-figure-one { + margin: 0 10px; + background: #ffffff; +} +.am-figure-one img { + display: block; + max-width: 100%; + height: auto; + padding: 2px; + border: 1px solid #dfdfdf; +} +.am-figure-one figcaption { + text-align: center; + font-size: 1.4rem; + padding: 10px 0; + color: #888888; +} +.am-footer { + text-align: center; + padding: 1em 0; + font-size: 1.6rem; +} +.am-footer .am-switch-mode-ysp { + cursor: pointer; +} +.am-footer .am-footer-text { + margin-top: 10px; + font-size: 14px; +} +.am-footer .am-footer-text-left { + text-align: left; + padding-left: 10px; +} +.am-modal-footer-hd { + padding-bottom: 10px; +} +/** + * Footer Theme: default + */ +.am-footer-default { + background-color: #ffffff; +} +.am-footer-default a { + color: #555555; +} +.am-footer-default .am-footer-switch { + margin-bottom: 10px; + font-weight: bold; +} +.am-footer-default .am-footer-ysp { + color: #555555; + cursor: pointer; +} +.am-footer-default .am-footer-divider { + color: #cccccc; +} +.am-footer-default .am-footer-desktop { + color: #0e90d2; +} +.am-footer-default .am-footer-miscs { + color: #999999; + font-size: 13px; +} +.am-footer-default .am-footer-miscs p { + margin: 5px 0; +} +@media only screen and (min-width:641px) { + .am-footer-default .am-footer-miscs p { + display: inline-block; + margin: 5px; + } +} +/** + * Footer Theme: one + */ +.am-footer-one a { + color: #15afef; + font-weight: bold; +} +.am-footer-one .am-footer-switch { + margin-bottom: 10px; +} +.am-footer-one .am-footer-ysp { + color: #15afef; + cursor: pointer; +} +.am-footer-one .am-footer-divider { + color: #999999; +} +.am-footer-one .am-footer-desktop { + font-weight: normal; + color: #555555; +} +.am-footer-one .am-footer-miscs { + color: #7c7c7c; + overflow: hidden; + padding: 0 10px; + font-size: 14px; +} +.am-footer-one .am-footer-miscs ul, +.am-footer-one .am-footer-miscs li { + padding-left: 0; + list-style: none; +} +.am-footer-one .am-footer-miscs p { + margin: 4px 0; +} +.am-footer-one .am-footer-miscs a { + font-weight: normal; + color: #555555; + margin: 0 1px; +} +.am-footer-one .am-footer-miscs img { + display: block; + max-width: 100%; + margin: 0 auto 2px auto; +} +@media only screen and (min-width:641px) { + .am-footer-one .am-footer-miscs p { + display: inline-block; + margin: 5px; + } +} +.am-gallery { + padding: 5px 5px 0 5px; + list-style: none; +} +.am-gallery h3 { + margin: 0; +} +[data-am-gallery*='pureview'] img { + cursor: pointer; +} +/** + * Gallery Theme: default + * Author: Minwe (minwe@yunshipei.com) + */ +.am-gallery-default > li { + padding: 5px; +} +.am-gallery-default .am-gallery-item img { + width: 100%; + height: auto; +} +.am-gallery-default .am-gallery-title { + margin-top: 10px; + font-weight: normal; + font-size: 1.4rem; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #555555; +} +.am-gallery-default .am-gallery-desc { + color: #999999; + font-size: 1.2rem; +} +/** + * Gallery Theme: overlay + * Author: Minwe (minwe@yunshipei.com) + */ +.am-gallery-overlay > li { + padding: 5px; +} +.am-gallery-overlay .am-gallery-item { + position: relative; +} +.am-gallery-overlay .am-gallery-item img { + width: 100%; + height: auto; +} +.am-gallery-overlay .am-gallery-title { + font-weight: normal; + font-size: 1.4rem; + color: #ffffff; + position: absolute; + bottom: 0; + width: 100%; + background-color: rgba(0, 0, 0, 0.5); + text-indent: 5px; + height: 30px; + line-height: 30px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-gallery-overlay .am-gallery-desc { + display: none; +} +/** + * Accordion Theme: bordered + * Author: Minwe (minwe@yunshipei.com) + */ +.am-gallery-bordered > li { + padding: 5px; +} +.am-gallery-bordered .am-gallery-item { + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.35); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.35); + padding: 5px; +} +.am-gallery-bordered .am-gallery-item img { + width: 100%; + height: auto; +} +.am-gallery-bordered .am-gallery-title { + margin-top: 10px; + font-weight: normal; + font-size: 1.4rem; + color: #555555; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-gallery-bordered .am-gallery-desc { + color: #999999; + font-size: 1.2rem; +} +/** + * Gallery Theme: imgbordered + * Author: Minwe (minwe@yunshipei.com) + */ +.am-gallery-imgbordered > li { + padding: 5px; +} +.am-gallery-imgbordered .am-gallery-item img { + width: 100%; + height: auto; + border: 3px solid #FFF; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.35); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.35); +} +.am-gallery-imgbordered .am-gallery-title { + margin-top: 10px; + font-weight: normal; + font-size: 1.4rem; + color: #555555; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-gallery-imgbordered .am-gallery-desc { + color: #999999; + font-size: 1.2rem; +} +/** + * Gallery Theme: one + * Author: hzp (hzp@yunshipei.com) + */ +.am-gallery-one { + padding: 0 5px; + background-color: #ffffff; +} +.am-gallery-one > li { + padding: 5px; +} +.am-gallery-one .am-gallery-item { + padding: 5px; +} +.am-gallery-one .am-gallery-item img { + width: 100%; + height: auto; +} +.am-gallery-one .am-gallery-title { + line-height: 34px; + font-weight: normal; + font-size: 1.4rem; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #555555; +} +.am-gallery-one .am-gallery-desc { + color: #999999; + font-size: 1.2rem; +} +.am-gallery-one .am-gallery-more { + width: 100%; +} +.am-gallery-one .am-gallery-more a { + background-color: #dfdfdf; + color: #555555; + height: 35px; + line-height: 35px; + font-size: 1.4rem; + display: block; + text-align: center; +} +.am-gotop a { + display: inline-block; + text-decoration: none; +} +/** + * Gotop Theme: default + */ +.am-gotop-default { + text-align: center; + margin: 10px 0; +} +.am-gotop-default a { + background-color: #0e90d2; + padding: .5em 1.5em; + border-radius: 2px; + color: #ffffff; +} +.am-gotop-default a img { + display: none; +} +/** + * Gotop Theme: fixed + */ +.am-gotop-fixed { + position: fixed; + right: 10px; + bottom: 10px; + z-index: 1010; + opacity: 0; + width: 32px; + min-height: 32px; + overflow: hidden; + border-radius: 2px; + text-align: center; +} +.am-gotop-fixed.am-active { + opacity: .9; +} +.am-gotop-fixed.am-active:hover { + opacity: 1; +} +.am-gotop-fixed a { + display: block; +} +.am-gotop-fixed .am-gotop-title { + display: none; +} +.am-gotop-fixed .am-gotop-icon-custom { + display: inline-block; + max-width: 30px; + vertical-align: middle; +} +.am-gotop-fixed .am-gotop-icon { + width: 100%; + line-height: 32px; + background-color: #555555; + vertical-align: middle; + color: #dddddd; +} +.am-gotop-fixed .am-gotop-icon:hover { + color: #ffffff; +} +.am-with-fixed-navbar .am-gotop-fixed { + bottom: 60px; +} +/** + * Gotop Theme: one + */ +.am-gotop-one { + position: fixed; + right: 10px; + bottom: 10px; + z-index: 1005; + width: 32px; + height: 32px; + background-color: #ffffff; + border-radius: 2px; + border: 1px solid #15afef; + text-align: center; +} +.am-gotop-one .am-gotop-title { + display: none; +} +.am-gotop-one .am-gotop-icon { + vertical-align: middle; + display: inline-block; + color: #15afef; +} +.am-with-fixed-navbar .am-gotop-one { + bottom: 60px; +} +.am-header { + position: relative; + width: 100%; + height: 49px; + line-height: 49px; + padding: 0 10px; +} +.am-header h1 { + margin-top: 0; + margin-bottom: 0; +} +.am-header .am-header-title { + margin: 0 30%; + font-size: 2rem; + font-weight: normal; + text-align: center; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-header .am-header-title img { + margin-top: 12px; + height: 25px; + vertical-align: top; +} +.am-header .am-header-nav { + position: absolute; + top: 0; +} +.am-header .am-header-nav img { + height: 16px; + width: auto; + vertical-align: middle; +} +.am-header .am-header-left { + left: 10px; +} +.am-header .am-header-right { + right: 10px; +} +.am-header-fixed { + position: fixed; + top: 0; + left: 0; + right: 0; + width: 100%; + z-index: 1010; +} +.am-with-fixed-header { + padding-top: 49px; +} +/** + * Header Theme: default + */ +.am-header-default { + background-color: #0e90d2; +} +.am-header-default .am-header-title { + color: #ffffff; +} +.am-header-default .am-header-title a { + color: #ffffff; +} +.am-header-default .am-header-icon { + font-size: 20px; +} +.am-header-default .am-header-nav { + color: #eeeeee; +} +.am-header-default .am-header-nav > a { + display: inline-block; + min-width: 36px; + text-align: center; + color: #eeeeee; +} +.am-header-default .am-header-nav > a + a { + margin-left: 5px; +} +.am-header-default .am-header-nav .am-btn { + margin-top: 9px; + height: 31px; + padding: 0 0.5em; + line-height: 30px; + font-size: 14px; + vertical-align: top; +} +.am-header-default .am-header-nav .am-btn .am-header-icon { + font-size: inherit; +} +.am-header-default .am-header-nav .am-btn-default { + color: #999999; +} +.am-header-default .am-header-nav-title, +.am-header-default .am-header-nav-title + .am-header-icon { + font-size: 14px; +} +/** + * Header Theme: one + */ +.am-header-one { + background: #ffffff; +} +.am-header-one .am-header-title { + margin: 0 15%; + color: #333333; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-header-one .am-header-title a { + color: #333333; +} +.am-header-one .am-header-title img { + height: 34px; + width: auto; + margin-top: 8px; + vertical-align: top; +} +.am-header-one .am-header-nav > a { + color: #15afef; +} +.am-intro { + position: relative; +} +.am-intro-hd { + position: relative; + height: 45px; + line-height: 45px; +} +.am-intro-title { + font-size: 18px; + margin: 0; + font-weight: bold; +} +.am-intro-more-top { + position: absolute; + right: 10px; + top: 0; + font-size: 1.4rem; +} +.am-intro-bd { + padding-top: 15px; + padding-bottom: 15px; + font-size: 1.4rem; +} +.am-intro-bd p:last-child { + margin-bottom: 0; +} +.am-intro-more-bottom { + clear: both; + text-align: center; +} +.am-intro-more-bottom .am-btn { + font-size: 14px; +} +/** + * Intro Theme: default + */ +.am-intro-default .am-intro-hd { + background-color: #0e90d2; + color: #ffffff; + padding: 0 10px; +} +.am-intro-default .am-intro-hd a { + color: #eeeeee; +} +.am-intro-default .am-intro-right { + padding-left: 0; +} +/** + * Intro Theme: one + */ +.am-intro-one { + padding-bottom: 10px; + background-color: #ffffff; +} +.am-intro-one a { + color: #15afef; +} +.am-intro-one .am-intro-hd { + border-bottom: 1px solid #15afef; + margin-left: 10px; + margin-right: 10px; + line-height: 44px; +} +.am-intro-one .am-intro-title { + color: #333333; + padding-left: 10px; +} +.am-intro-one .am-intro-title:before { + position: absolute; + left: 1px; + top: 10px; + bottom: 10px; + content: ''; + width: 3px; + background-color: #15afef; + display: block; +} +.am-intro-one .am-intro-bd { + color: #555555; +} +.am-intro-one .am-intro-left { + float: left; + display: inline; +} +.am-intro-one .am-intro-right { + display: inline; + padding-left: 0; + font-size: 1.4rem; +} +.am-intro-one .am-intro-right p { + display: inline; + margin: 0; + padding: 0; +} +.am-list-news-hd { + padding-top: 1.2rem; + padding-bottom: 0.8rem; +} +.am-list-news-hd a { + display: block; +} +.am-list-news-hd h2 { + font-size: 1.6rem; + float: left; + margin: 0; + height: 2rem; + line-height: 2rem; +} +.am-list-news-hd h3 { + margin: 0; +} +.am-list-news-hd .am-list-news-more { + font-size: 1.3rem; + height: 2rem; + line-height: 2rem; +} +.am-list .am-list-item-dated a { + padding-right: 80px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-list .am-list-item-dated a::after { + display: none; +} +.am-list .am-list-item-desced a, +.am-list .am-list-item-thumbed a { + padding-right: 0; +} +.am-list-news .am-list-item-hd { + margin: 0; +} +.am-list-date { + position: absolute; + right: 5px; + font-size: 1.3rem; + top: 1.3rem; +} +.am-list-item-desced { + padding-bottom: 1rem; +} +.am-list-item-desced > a { + padding: 1rem 0; +} +.am-list-item-desced .am-list-date { + position: static; +} +.am-list-item-thumbed { + padding-top: 1em; +} +.am-list-news-ft { + text-align: center; +} +/** + * list_news Theme: default + */ +.am-list-news-default { + margin: 10px; +} +.am-list-news-default .am-g { + margin-left: auto; + margin-right: auto; +} +.am-list-news-default .am-list-item-hd { + font-weight: normal; +} +.am-list-news-default .am-list-date { + color: #999999; +} +.am-list-news-default .am-list > li { + border-color: #dedede; +} +.am-list-news-default .am-list .am-list-item-desced { + padding-top: 1rem; + padding-bottom: 1rem; +} +.am-list-news-default .am-list .am-list-item-desced > a { + padding: 0; +} +.am-list-news-default .am-list .am-list-item-desced .am-list-item-text { + margin-top: 0.5rem; + color: #757575; +} +.am-list-news-default .am-list .am-list-item-text { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + line-height: 1.3em; + -webkit-line-clamp: 2; + /* number of lines to show */ + max-height: 2.6em; +} +.am-list-news-default .am-list .am-list-item-thumb-top .am-list-thumb { + padding: 0; + margin-bottom: 0.8rem; +} +.am-list-news-default .am-list .am-list-item-thumb-top .am-list-main { + padding: 0; +} +.am-list-news-default .am-list .am-list-item-thumb-left .am-list-thumb { + padding-left: 0; +} +.am-list-news-default .am-list .am-list-item-desced .am-list-main { + padding: 0; +} +.am-list-news-default .am-list .am-list-item-thumb-right .am-list-thumb { + padding-right: 0; +} +.am-list-news-default .am-list .am-list-item-thumb-bottom-left .am-list-item-hd { + clear: both; + padding-bottom: 0.5rem; +} +.am-list-news-default .am-list .am-list-item-thumb-bottom-left .am-list-thumb { + padding-left: 0; +} +.am-list-news-default .am-list .am-list-item-thumb-bottom-right .am-list-item-hd { + clear: both; + padding-bottom: 0.5rem; +} +.am-list-news-default .am-list .am-list-item-thumb-bottom-right .am-list-thumb { + padding-right: 0; +} +.am-list-news-default .am-list .am-list-thumb img { + width: 100%; + display: block; +} +@media only screen and (max-width: 640px) { + .am-list-news-default .am-list-item-thumb-left .am-list-thumb, + .am-list-news-default .am-list-item-thumb-right .am-list-thumb { + max-height: 80px; + overflow: hidden; + } + .am-list-news-default .am-list-item-thumb-bottom-left .am-list-item-text, + .am-list-news-default .am-list-item-thumb-bottom-right .am-list-item-text { + -webkit-line-clamp: 3; + /* number of lines to show */ + max-height: 3.9em; + } + .am-list-news-default .am-list-item-thumb-bottom-left .am-list-thumb, + .am-list-news-default .am-list-item-thumb-bottom-right .am-list-thumb { + max-height: 60px; + overflow: hidden; + } +} +/** + * list_news Theme: one + * Author: hzp (hzp@yunshipei.com) + */ +.am-list-news-one { + margin: 0 10px; +} +.am-list-news-one .am-list-news-hd { + background: #ffffff; + height: 40px; + line-height: 40px; + border-bottom: 1px solid #15afef; + padding: 0 0 0 10px; + margin: 0; + position: relative; + color: #000000; +} +.am-list-news-one .am-list-news-hd::before { + width: 4px; + height: 30px; + background: #15afef; + display: inline-block; + content: ''; + position: absolute; + top: 5px; + left: 0; +} +.am-list-news-one .am-list-news-hd > a { + color: #000000; + display: inline; +} +.am-list-news-one .am-list-news-hd > a .am-list-news-more { + color: #888888; + padding: 0; + margin-right: 5px; + background: none; + font-size: 1.4rem; + height: 40px; + line-height: 40px; +} +.am-list-news-one .am-list-news-hd h2 { + font-weight: normal; + float: left; + line-height: 40px; + height: 40px; +} +.am-list-news-one .am-list-news-bd { + padding: 0px 5px 4px 5px; + background: #ffffff; +} +.am-list-news-one .am-list { + margin-bottom: 0; +} +.am-list-news-one .am-list > li { + margin: 0; + border: 0; + overflow: hidden; +} +.am-list-news-one .am-list > li > a { + color: #222222; + font-weight: normal; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + height: 30px; + line-height: 30px; + padding: 0; + position: relative; + text-indent: 10px; +} +.am-list-news-one .am-list > li > a:before { + width: 4px; + height: 4px; + background: #15afef; + display: inline-block; + content: ''; + position: absolute; + top: 14px; + left: 0; +} +.am-list-news-one .am-list > li .am-list-date { + color: #666666; + top: 5px; + right: 0; + display: none; +} +.am-list-news-one .am-list > li:last-child { + border-bottom: 0; +} +.am-list-news-one .am-list .am-list-item-dated > a { + color: #222222; +} +.am-list-news-one .am-list .am-list-item-desced { + padding: 3px 0; + border-bottom: 1px dashed #dfdfdf; +} +.am-list-news-one .am-list .am-list-item-desced:before { + display: none; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-item-hd { + font-weight: normal; + font-size: 1.5rem; + margin-bottom: 0; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-item-hd > a:before { + display: none; +} +.am-list-news-one .am-list .am-list-item-desced a.am-list-item-hd { + height: 34px; + line-height: 34px; + padding: 0; + color: #15afef; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + text-indent: 0; +} +.am-list-news-one .am-list .am-list-item-desced a.am-list-item-hd:before { + display: none; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-item-text { + color: #666666; + line-height: 22px; + font-size: 1.4rem; + max-height: none; + margin-bottom: 8px; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-item-text a { + color: #666666; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-main { + padding: 0 5px; + position: relative; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-date { + position: absolute; + right: 5px; + top: 3.5rem; + font-size: 1.2rem; + color: #888888; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-item-text { + max-height: 3rem; + overflow: hidden; + font-size: 1.2rem; + line-height: 18px; + color: #666666; +} +.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-item-text a { + color: #666666; +} +.am-list-news-one .am-list .am-list-item-thumbed { + border-bottom: 1px dashed #dfdfdf; + padding: 0 0 5px 0; +} +.am-list-news-one .am-list .am-list-item-thumbed:before { + content: none; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-hd { + font-weight: normal; + height: 30px; + line-height: 30px; + margin-bottom: 0; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-hd a { + font-size: 1.5rem; + color: #15afef; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + padding: 0; + text-indent: 0; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb { + padding: 0; + height: 60px; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb a { + width: 100%; + display: block; + padding: 0; + text-indent: 0; + height: 60px; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb a img { + width: 100%; + height: 60px; + vertical-align: top; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-main { + padding: 0 5px 14px 5px; + position: relative; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-date { + position: absolute; + right: 5px; + top: 3.5rem; + font-size: 1.2rem; + color: #888888; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-text { + max-height: 3rem; + overflow: hidden; + font-size: 1.2rem; + line-height: 18px; + color: #666666; +} +.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-text a { + color: #666666; +} +.am-list-news-one .am-list-news-more { + background: #dfdfdf; + color: #666666; + height: 35px; + line-height: 35px; + font-size: 1.4rem; + display: block; + border: 0; + border-radius: 0; + padding: 0; +} +@media only screen and (max-width: 640px) { + .am-list-news-one .am-list-item-thumb-left .am-list-thumb, + .am-list-news-one .am-list-item-thumb-right .am-list-thumb { + max-height: 80px; + overflow: hidden; + } + .am-list-news-one .am-list-item-thumb-bottom-left .am-list-item-text, + .am-list-news-one .am-list-item-thumb-bottom-right .am-list-item-text { + -webkit-line-clamp: 3; + /* number of lines to show */ + max-height: 3.9em; + } + .am-list-news-one .am-list-item-thumb-bottom-left .am-list-thumb, + .am-list-news-one .am-list-item-thumb-bottom-right .am-list-thumb { + max-height: 60px; + overflow: hidden; + } +} +.am-map { + width: 100%; + height: 300px; +} +/** + * Accordion Theme: default + * Author: Hzp (hzp@yunshipei.com) + */ +.am-map-default #bd-map { + width: 100%; + height: 100%; + overflow: hidden; + margin: 0; + font-size: 14px; + line-height: 1.4!important; +} +.am-map-default .BMap_bubble_title { + font-weight: bold; +} +.am-map-default #BMap_mask { + width: 100%; +} +.am-mechat { + margin: 1rem; +} +.am-mechat .section-cbox-wap .cbox-post-wap .post-action-wap .action-function-wap .function-list-wap .list-upload-wap .upload-mutual-wap { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +.am-menu { + position: relative; + padding: 0; + margin: 0; +} +.am-menu ul { + padding: 0; + margin: 0; +} +.am-menu li { + list-style: none; +} +.am-menu a:after, +.am-menu a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.am-menu-sub { + z-index: 1050; +} +.am-menu-toggle { + display: none; +} +.am-menu-toggle img { + display: inline-block; + height: 16px; + width: auto; + vertical-align: middle; +} +.am-menu-nav a { + display: block; + padding: 0.8rem 0; + -webkit-transition: all 0.45s; + transition: all 0.45s; +} +/** + * Menu Theme: default + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-default .am-menu-nav { + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-default .am-menu-nav a { + text-align: center; + height: 36px; + line-height: 36px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + padding: 0; + color: #0e90d2; +} +.am-menu-default .am-menu-nav > .am-parent > a { + position: relative; + -webkit-transition: .15s; + transition: .15s; +} +.am-menu-default .am-menu-nav > .am-parent > a:after { + content: "\f107"; + margin-left: 5px; + -webkit-transition: .15s; + transition: .15s; +} +.am-menu-default .am-menu-nav > .am-parent > a:before { + position: absolute; + top: 100%; + margin-top: -16px; + left: 50%; + margin-left: -12px; + content: "\f0d8"; + display: none; + color: #f1f1f1; + font-size: 24px; +} +.am-menu-default .am-menu-nav > .am-parent.am-open > a { + color: #095f8a; +} +.am-menu-default .am-menu-nav > .am-parent.am-open > a:before { + display: block; +} +.am-menu-default .am-menu-nav > .am-parent.am-open > a:after { + -webkit-transform: rotate(-180deg); + -ms-transform: rotate(-180deg); + transform: rotate(-180deg); +} +.am-menu-default .am-menu-sub { + position: absolute; + left: 5px; + right: 5px; + background-color: #f1f1f1; + border-radius: 2px; + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-default .am-menu-sub > li > a { + color: #555555; +} +@media only screen and (min-width:641px) { + .am-menu-default .am-menu-nav li { + width: auto; + float: left; + clear: none; + display: inline; + } + .am-menu-default .am-menu-nav a { + padding-left: 1.5rem; + padding-right: .5rem; + } +} +/** +/** + * Menu Theme: dropdown1 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-dropdown1 { + position: relative + /*@media @medium-up { + .am-menu-toggle { + display: none!important; + } + + .am-menu-nav { + &.am-collapse { + display: block; + } + + .am-menu-sub { + background-color: ;//@menu-sub-bg; + display: block; + & > li { + clear: none; + + } + } + + .am-menu-lv2 { + & > li { + clear: none; + width: auto; + } + } + } + }*/ +} +.am-menu-dropdown1 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-dropdown1 a { + -webkit-transition: all .4s; + transition: all .4s; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-menu-dropdown1 .am-menu-nav { + position: absolute; + left: 0; + right: 0; + z-index: 1050; +} +.am-menu-dropdown1 .am-menu-nav a { + padding: 0.8rem; +} +.am-menu-dropdown1 .am-menu-nav > li { + width: 100%; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent > a { + position: relative; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent > a::before { + content: "\f067"; + position: absolute; + right: 1rem; + top: 1.4rem; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent.am-open > a { + background-color: #0c80ba; + border-bottom: none; + color: #ffffff; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent.am-open > a:before { + content: "\f068"; +} +.am-menu-dropdown1 .am-menu-nav > li.am-parent.am-open > a:after { + content: ""; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-top: 8px solid #0c80ba; + border-right: 8px solid transparent; + border-left: 8px solid transparent; + border-bottom: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + position: absolute; + top: 100%; + left: 50%; + margin-left: -4px; +} +.am-menu-dropdown1 .am-menu-nav > li > a { + border-bottom: 1px solid #0b76ac; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + background-color: #0e90d2; + color: #ffffff; + height: 49px; + line-height: 49px; + padding: 0; + text-indent: 10px; +} +.am-menu-dropdown1 .am-menu-sub { + background-color: #ffffff; +} +.am-menu-dropdown1 .am-menu-sub a { + color: #555555; + height: 44px; + line-height: 44px; + text-indent: 5px; + padding: 0; +} +.am-menu-dropdown1 .am-menu-sub a:before { + content: "\f105"; + color: #aaaaaa; + font-size: 16px; + margin-right: 5px; +} +/** + * Menu Theme: dropdown2 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-dropdown2 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-dropdown2 .am-menu-nav { + position: absolute; + left: 0; + right: 0; + background-color: #f5f5f5; + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); + z-index: 1050; + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-dropdown2 .am-menu-nav a { + height: 38px; + line-height: 38px; + padding: 0; + text-align: center; +} +.am-menu-dropdown2 .am-menu-nav > li > a { + color: #333333; +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent > a { + position: relative; +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent > a:after { + content: "\f107"; + margin-left: 5px; + -webkit-transition: -webkit-transform .2s; + transition: transform .2s; +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent.am-open > a { + position: relative; +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent.am-open > a:after { + color: #0e90d2; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.am-menu-dropdown2 .am-menu-nav > li.am-parent.am-open > a:before { + position: absolute; + top: 100%; + margin-top: -16px; + left: 50%; + margin-left: -12px; + font-size: 24px; + content: "\f0d8"; + color: rgba(0, 0, 0, 0.2); +} +.am-menu-dropdown2 .am-menu-sub { + position: absolute; + left: 5px; + right: 5px; + padding: 8px 0; + border-radius: 2px; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + background-color: #ffffff; + z-index: 1055; +} +.am-menu-dropdown2 .am-menu-sub a { + padding: 0; + height: 35px; + color: #555555; + line-height: 35px; +} +@media only screen and (min-width:641px) { + .am-menu-dropdown2 .am-menu-toggle { + display: none !important; + } + .am-menu-dropdown2 .am-menu-nav { + position: static; + display: block; + } + .am-menu-dropdown2 .am-menu-nav > li { + float: none; + width: auto; + display: inline-block; + } + .am-menu-dropdown2 .am-menu-nav > li a { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .am-menu-dropdown2 .am-menu-sub { + left: auto; + right: auto; + } + .am-menu-dropdown2 .am-menu-sub > li { + float: none; + width: auto; + } + .am-menu-dropdown2 .am-menu-sub a { + padding-left: 2rem; + padding-right: 2rem; + } +} +/** + * Menu Theme: slide1 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-slide1 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-slide1 .am-menu-nav { + background-color: #f5f5f5; + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-slide1 .am-menu-nav.am-in:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f0d8"; + font-size: 24px; + color: #f5f5f5; + position: absolute; + right: 16px; + top: -16px; +} +.am-menu-slide1 .am-menu-nav a { + line-height: 38px; + height: 38px; + display: block; + padding: 0; + text-align: center; +} +.am-menu-slide1 .am-menu-nav > li > a { + color: #333333; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-menu-slide1 .am-menu-nav > .am-parent > a { + position: relative; + -webkit-transition: .15s; + transition: .15s; +} +.am-menu-slide1 .am-menu-nav > .am-parent > a:after { + content: "\f107"; + margin-left: 5px; + -webkit-transition: .15s; + transition: .15s; +} +.am-menu-slide1 .am-menu-nav > .am-parent > a:before { + position: absolute; + top: 100%; + margin-top: -16px; + left: 50%; + margin-left: -12px; + content: "\f0d8"; + display: none; + color: #0e90d2; + font-size: 24px; +} +.am-menu-slide1 .am-menu-nav > .am-parent.am-open > a { + color: #0e90d2; +} +.am-menu-slide1 .am-menu-nav > .am-parent.am-open > a:before { + display: block; +} +.am-menu-slide1 .am-menu-nav > .am-parent.am-open > a:after { + -webkit-transform: rotate(-180deg); + -ms-transform: rotate(-180deg); + transform: rotate(-180deg); +} +.am-menu-slide1 .am-menu-sub { + position: absolute; + left: 5px; + right: 5px; + background-color: #0e90d2; + border-radius: 2px; + padding-top: 8px; + padding-bottom: 8px; +} +.am-menu-slide1 .am-menu-sub > li > a { + color: #ffffff; +} +@media only screen and (min-width:641px) { + .am-menu-slide1 .am-menu-toggle { + display: none !important; + } + .am-menu-slide1 .am-menu-nav { + background-color: #f5f5f5; + display: block; + } + .am-menu-slide1 .am-menu-nav.am-in:before { + display: none; + } + .am-menu-slide1 .am-menu-nav li { + width: auto; + clear: none; + } + .am-menu-slide1 .am-menu-nav li a { + padding-left: 1.5rem; + padding-right: 1.5rem; + } +} +/** + * Menu Theme: offcanvas1 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-offcanvas1 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-offcanvas1 .am-menu-nav { + border-bottom: 1px solid rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} +.am-menu-offcanvas1 .am-menu-nav > li > a { + height: 44px; + line-height: 44px; + text-indent: 15px; + padding: 0; + position: relative; + color: #cccccc; + border-top: 1px solid rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); +} +.am-menu-offcanvas1 .am-menu-nav > .am-open > a, +.am-menu-offcanvas1 .am-menu-nav > li > a:hover, +.am-menu-offcanvas1 .am-menu-nav > li > a:focus { + background-color: #474747; + color: #ffffff; + outline: none; +} +.am-menu-offcanvas1 .am-menu-nav > .am-active > a { + background-color: #1a1a1a; + color: #ffffff; +} +.am-menu-offcanvas1 .am-menu-nav > .am-parent > a { + -webkit-transition: all .3s; + transition: all .3s; +} +.am-menu-offcanvas1 .am-menu-nav > .am-parent > a:after { + content: "\f104"; + position: absolute; + right: 1.5rem; + top: 1.3rem; +} +.am-menu-offcanvas1 .am-menu-nav > .am-parent.am-open > a:after { + content: "\f107"; +} +.am-menu-offcanvas1 .am-menu-sub { + border-top: 1px solid rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 5px 0 5px 15px; + background-color: #1a1a1a; + font-size: 1.4rem; +} +.am-menu-offcanvas1 .am-menu-sub a { + color: #eeeeee; +} +.am-menu-offcanvas1 .am-menu-sub a:hover { + color: #ffffff; +} +.am-menu-offcanvas1 .am-nav-divider { + border-top: 1px solid #1a1a1a; +} +/** + * Menu Theme: offcanvas2 + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-offcanvas2 .am-menu-toggle { + position: absolute; + right: 5px; + top: -47px; + display: block; + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + color: #ffffff; +} +.am-menu-offcanvas2 .am-menu-nav { + padding: 10px 5px; +} +.am-menu-offcanvas2 .am-menu-nav > li { + padding: 5px; +} +.am-menu-offcanvas2 .am-menu-nav > li > a { + -webkit-transition: all 0.3s; + transition: all 0.3s; + background-color: #404040; + color: #cccccc; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + border: 1px solid rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); + height: 44px; + line-height: 44px; + padding: 0; + text-align: center; +} +.am-menu-offcanvas2 .am-menu-nav > li > a:hover, +.am-menu-offcanvas2 .am-menu-nav > li > a:focus { + background-color: #262626; + color: #ffffff; + outline: none; +} +.am-menu-offcanvas2 .am-menu-nav > .am-active > a { + background-color: #262626; + color: #ffffff; +} +/** + * Menu Theme: stack + * Author: Minwe (minwe@yunshipei.com) + */ +.am-menu-stack .am-menu-nav { + border-bottom: 1px solid #dedede; + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} +.am-menu-stack .am-menu-nav > .am-parent > a { + -webkit-transition: all .3s; + transition: all .3s; +} +.am-menu-stack .am-menu-nav > .am-parent > a:after { + content: "\f105"; + position: absolute; + right: 1.5rem; + top: 1.3rem; + -webkit-transition: all .15s; + transition: all .15s; +} +.am-menu-stack .am-menu-nav > .am-parent.am-open > a:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.am-menu-stack .am-menu-nav > li > a { + position: relative; + color: #333333; + background-color: #f5f5f5; + border-top: 1px solid #dedede; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + height: 49px; + line-height: 49px; + text-indent: 10px; + padding: 0; +} +.am-menu-stack .am-menu-nav > .am-open > a, +.am-menu-stack .am-menu-nav > li > a:hover, +.am-menu-stack .am-menu-nav > li > a:focus { + background-color: #e5e5e5; + color: #222222; + outline: none; +} +.am-menu-stack .am-menu-sub { + padding: 0; + font-size: 1.4rem; + border-top: 1px solid #dedede; +} +.am-menu-stack .am-menu-sub a { + border-bottom: 1px solid #dedede; + padding-left: 2rem; + color: #444444; +} +.am-menu-stack .am-menu-sub a:hover { + color: #333333; +} +.am-menu-stack .am-menu-sub li:last-child a { + border-bottom: none; +} +.am-menu-stack .am-menu-sub > li > a { + height: 44px; + line-height: 44px; + text-indent: 15px; + padding: 0; +} +@media only screen and (min-width:641px) { + .am-menu-stack .am-menu-nav { + background-color: #f5f5f5; + } + .am-menu-stack .am-menu-nav > li { + float: left; + width: auto; + clear: none !important; + display: inline-block; + } + .am-menu-stack .am-menu-nav > li a { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .am-menu-stack .am-menu-nav > li.am-parent > a:after { + position: static; + content: "\f107"; + } + .am-menu-stack .am-menu-nav > li.am-parent.am-open a { + border-bottom: none; + } + .am-menu-stack .am-menu-nav > li.am-parent.am-open a:after { + -webkit-transform: rotateX(-180deg); + transform: rotateX(-180deg); + } + .am-menu-stack .am-menu-nav > li.am-parent.am-open .am-menu-sub { + background-color: #e5e5e5; + } + .am-menu-stack .am-menu-sub { + position: absolute; + left: 0; + right: 0; + background-color: #ddd; + border-top: none; + } + .am-menu-stack .am-menu-sub li { + width: auto; + float: left; + clear: none; + } +} +/** + * Menu Theme: one + * Author: one (hzp@yunshipei.com) + */ +.am-menu-one { + padding-left: 10px; + padding-right: 10px; + margin-bottom: 10px; + background-color: #f5f5f5; + -webkit-box-shadow: 0 2px 10px #d7d7d7; + box-shadow: 0 2px 10px #d7d7d7; + height: 40px; +} +.am-menu-one .am-menu-nav-wrap { + overflow: hidden; +} +.am-menu-one .am-menu-nav { + height: 40px; +} +.am-menu-one .am-menu-nav:before, +.am-menu-one .am-menu-nav:after { + content: " "; + display: table; +} +.am-menu-one .am-menu-nav:after { + clear: both; +} +.am-menu-one .am-menu-nav > li { + float: left; + clear: none; + width: auto; +} +.am-menu-one .am-menu-nav > li > a { + display: block; + height: 40px; + line-height: 40px; + padding: 0 10px; + color: #7d7d7d; +} +.am-menu-one .am-menu-nav .am-active > a { + color: #555555; + border-bottom: 2px solid #15afef; +} +.am-menu-one .am-menu-nav .am-open > a { + position: relative; +} +.am-menu-one .am-menu-nav .am-open > a:before { + position: absolute; + top: 100%; + left: 50%; + margin-top: -6px; + margin-left: -6px; + content: ''; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-bottom: 6px solid #15afef; + border-right: 6px solid transparent; + border-left: 6px solid transparent; + border-top: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); +} +.am-menu-one .am-menu-nav-sub-wrap { + position: relative; + z-index: 1050; +} +.am-menu-one .am-menu-sub { + position: absolute; + top: 1px; + left: -5px; + right: -5px; + background-color: #ffffff; + border-radius: 2px; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} +.am-menu-one .am-menu-sub li { + text-align: center; +} +.am-menu-one .am-menu-sub a { + padding: 0; + color: #555555; + line-height: 40px; +} +.am-navbar { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + height: 49px; + line-height: 49px; + z-index: 1010; +} +.am-navbar ul { + padding-left: 0; + margin: 0; + list-style: none; + width: 100%; +} +.am-navbar .am-navbar-nav { + padding-left: 8px; + padding-right: 8px; + text-align: center; + overflow: hidden; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-navbar .am-navbar-nav li { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + float: none; +} +.am-navbar-nav { + position: relative; + z-index: 1015; +} +.am-navbar-nav a { + display: inline-block; + width: 100%; + height: 49px; + line-height: 20px; +} +.am-navbar-nav a img { + display: block; + vertical-align: middle; + height: 24px; + width: 24px; + margin: 4px auto 0; +} +.am-navbar-nav a [class*="am-icon"] { + width: 24px; + height: 24px; + margin: 4px auto 0; + display: block; + line-height: 24px; +} +.am-navbar-nav a [class*="am-icon"]:before { + font-size: 22px; + vertical-align: middle; +} +.am-navbar-nav a .am-navbar-label { + padding-top: 2px; + line-height: 1; + font-size: 12px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-navbar-more [class*="am-icon-"] { + -webkit-transition: 0.15s; + transition: 0.15s; +} +.am-navbar-more.am-active [class*="am-icon-"] { + -webkit-transform: rotateX(-180deg); + transform: rotateX(-180deg); +} +.am-navbar-actions { + position: absolute; + bottom: 49px; + right: 0; + left: 0; + z-index: 1009; + opacity: 0; + -webkit-transition: .3s; + transition: .3s; + -webkit-transform: translate(0, 100%); + -ms-transform: translate(0, 100%); + transform: translate(0, 100%); +} +.am-navbar-actions.am-active { + opacity: 1; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} +.am-navbar-actions li { + line-height: 42px; + position: relative; +} +.am-navbar-actions li a { + display: block; + width: 100%; + height: 40px; + -webkit-box-shadow: inset 0 1px rgba(220, 220, 220, 0.25); + box-shadow: inset 0 1px rgba(220, 220, 220, 0.25); + padding-left: 20px; + padding-right: 36px; +} +.am-navbar-actions li a :after { + font-family: "FontAwesome", sans-serif; + content: "\f105"; + display: inline-block; + position: absolute; + top: 0; + right: 20px; +} +.am-navbar-actions li a img { + vertical-align: middle; + height: 20px; + width: 20px; + display: inline; +} +#am-navbar-qrcode { + width: 220px; + height: 220px; + margin-left: -110px; +} +#am-navbar-qrcode .am-modal-bd { + padding: 10px; +} +#am-navbar-qrcode canvas { + display: block; + width: 200px; + height: 200px; +} +.am-with-fixed-navbar { + padding-bottom: 54px; +} +/** + * Navbar Theme: default + * Author: hzp (hzp@yunshipei.com) + */ +.am-navbar-default a { + color: #ffffff; +} +.am-navbar-default .am-navbar-nav { + background-color: #0e90d2; +} +.am-navbar-default .am-navbar-actions { + background-color: #0d86c4; +} +.am-navbar-default .am-navbar-actions a { + border-bottom: 1px solid #0b6fa2; +} +/** + * Navbar Theme: one + * Author: hzp (hzp@yunshipei.com) + */ +.am-navbar-one a { + color: #ffffff; +} +.am-navbar-one .am-navbar-nav { + background-color: #15afef; +} +.am-navbar-one .am-navbar-actions { + background-color: #0f9fdb; +} +.am-navbar-one .am-navbar-actions a { + border-bottom: 1px solid #0d87ba; +} +.am-pagination { + position: relative; +} +/** + * Pagination Theme: default + */ +.am-pagination-default { + margin-left: 10px; + margin-right: 10px; + font-size: 1.6rem; +} +.am-pagination-default .am-pagination-prev, +.am-pagination-default .am-pagination-next { + float: none; +} +/** + * Pagination Theme: select + */ +.am-pagination-select { + margin-left: 10px; + margin-right: 10px; + font-size: 1.6rem; +} +.am-pagination-select > li > a { + line-height: 36px; + background-color: #eeeeee; + padding: 0 15px; + border: 0; + color: #555555; +} +.am-pagination-select .am-pagination-select { + position: absolute; + top: 0; + left: 50%; + margin-left: -35px; + width: 70px; + height: 36px; + text-align: center; + border-radius: 2px; +} +.am-pagination-select .am-pagination-select select { + display: block; + border: 0; + line-height: 36px; + width: 70px; + height: 36px; + border-radius: 2px; + color: #555555; + background-color: #eeeeee; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding-left: 18px; +} +/** + * Pagination Theme: one + */ +.am-pagination-one { + margin-left: 10px; + margin-right: 10px; + text-align: center; +} +.am-pagination-one > li > a { + line-height: 36px; + background-color: #ffffff; + padding: 0 15px; + color: #555555; +} +.am-pagination-one .am-pagination-select { + float: left; + position: absolute; + top: 0; + left: 50%; + margin-left: -25px; + width: 50px; + height: 36px; + text-align: center; +} +.am-pagination-one .am-pagination-select select { + display: block; + line-height: 36px; + width: 50px; + height: 36px; + border-radius: 2px; + text-align: center; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding-left: 18px; + background: #ffffff; + border: 1px solid #dfdfdf; + color: #555555; +} +.am-paragraph p { + margin: 10px 0; +} +.am-paragraph img { + max-width: 100%; +} +.am-paragraph h1, +.am-paragraph h2, +.am-paragraph h3, +.am-paragraph h4, +.am-paragraph h5, +.am-paragraph h6 { + color: #222222; +} +.am-paragraph table { + max-width: none; +} +.am-paragraph-table-container { + overflow: hidden; + background: #eeeeee; + max-width: none; +} +.am-paragraph-table-container table { + width: 100%; + max-width: none; +} +.am-paragraph-table-container table th { + background: #bce5fb; + height: 40px; + border: 1px solid #999999; + text-align: center; +} +.am-paragraph-table-container table td { + border: 1px solid #999999; + text-align: center; + vertical-align: middle; + background: #ffffff; +} +.am-paragraph-table-container table td p { + text-indent: 0; + font-size: 1.4rem; +} +.am-paragraph-table-container table td a { + font-size: 1.4rem; +} +/** + * Paragraph Theme: default + */ +.am-paragraph-default { + margin: 0 10px; + color: #333333; + background-color: transparent; +} +.am-paragraph-default p { + font-size: 1.4rem; +} +.am-paragraph-default img { + max-width: 98%; + display: block; + margin: 5px auto; + border: 1px solid #eeeeee; + padding: 2px; +} +.am-paragraph-default a { + color: #0e90d2; +} +/** + * Paragraph Theme: one + */ +.am-paragraph-one { + color: #555555; + background: #ffffff; + margin: 0 10px; + padding: 4px; +} +.am-paragraph-one h1, +.am-paragraph-one h2, +.am-paragraph-one h3, +.am-paragraph-one h4, +.am-paragraph-one h5, +.am-paragraph-one h6 { + color: #333333; + font-weight: normal; + margin-top: 0; +} +.am-paragraph-one h1 { + font-size: 2rem; +} +.am-paragraph-one h2, +.am-paragraph-one h3 { + font-size: 1.8rem; +} +.am-paragraph-one h4, +.am-paragraph-one h5 { + font-size: 1.6rem; +} +.am-paragraph-one h6 { + font-size: 1.4rem; +} +.am-paragraph-one hr { + background: #dfdfdf; + height: 1px; + border: 0; + overflow: hidden; +} +.am-paragraph-one img { + max-width: 100%; + display: block; + margin: 5px 0; +} +.am-paragraph-one a { + color: #333333; +} +.am-paragraph-one p, +.am-paragraph-one div, +.am-paragraph-one table { + font-size: 1.4rem; + margin: 0 0 1rem 0; +} +.am-paragraph-one ul, +.am-paragraph-one ol { + padding-left: 0; +} +.am-paragraph-one li { + list-style: none; + font-size: 1.4rem; +} +/** + * Slider Theme: a1 + */ +.am-slider-a1 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a1 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a1 .am-viewport { + max-height: 300px; +} +.am-slider-a1 .am-control-nav { + width: 100%; + position: absolute; + bottom: 5px; + text-align: center; + line-height: 0; +} +.am-slider-a1 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-a1 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + border-radius: 50%; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-a1 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a1 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-a1 .am-direction-nav, +.am-slider-a1 .am-pauseplay { + display: none; +} +/** + * Slider Theme: a2 + */ +.am-slider-a2 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a2 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a2 .am-viewport { + max-height: 300px; +} +.am-slider-a2 .am-control-nav { + width: 100%; + position: absolute; + bottom: 5px; + text-align: center; + line-height: 0; +} +.am-slider-a2 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-a2 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-a2 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a2 .am-control-nav li a.am-active { + background: #0e93d7; + cursor: default; +} +.am-slider-a2 .am-direction-nav, +.am-slider-a2 .am-pauseplay { + display: none; +} +/** + * Slider Theme: a3 + */ +.am-slider-a3 { + margin-bottom: 20px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a3 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a3 .am-viewport { + max-height: 300px; +} +.am-slider-a3 .am-control-nav { + width: 100%; + position: absolute; + bottom: -20px; + text-align: center; + height: 20px; + background-color: #000000; + padding-top: 5px; + line-height: 0; +} +.am-slider-a3 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-a3 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + border-radius: 50%; + -webkit-box-shadow: inset 0 0 3px rgba(200, 200, 200, 0.3); + box-shadow: inset 0 0 3px rgba(200, 200, 200, 0.3); +} +.am-slider-a3 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a3 .am-control-nav li a.am-active { + background: #0e90d2; + cursor: default; +} +.am-slider-a3 .am-direction-nav, +.am-slider-a3 .am-pauseplay { + display: none; +} +/** + * Slider Theme: a4 + */ +.am-slider-a4 { + margin-bottom: 30px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a4 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a4 .am-viewport { + max-height: 300px; +} +.am-slider-a4 .am-control-nav { + width: 100%; + position: absolute; + bottom: -15px; + text-align: center; + line-height: 0; +} +.am-slider-a4 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-a4 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + border-radius: 50%; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-a4 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a4 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-a4 .am-direction-nav, +.am-slider-a4 .am-pauseplay { + display: none; +} +/** + * Slider Theme: a5 + */ +.am-slider-a5 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-a5 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-a5 .am-viewport { + max-height: 300px; +} +.am-slider-a5 .am-control-nav { + width: 100%; + position: absolute; + text-align: center; + height: 6px; + display: table; + bottom: 0; + font-size: 0; + line-height: 0; +} +.am-slider-a5 .am-control-nav li { + display: table-cell; +} +.am-slider-a5 .am-control-nav li a { + width: 100%; + height: 6px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; +} +.am-slider-a5 .am-control-nav li a:hover { + background-color: rgba(0, 0, 0, 0.7); +} +.am-slider-a5 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-a5 .am-direction-nav, +.am-slider-a5 .am-pauseplay { + display: none; +} +/** + * Slider Theme: b1 + */ +.am-slider-b1 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-b1 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-b1 .am-viewport { + max-height: 300px; +} +.am-slider-b1 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 8px 0; + margin: -20px 0 0; + position: absolute; + top: 50%; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: #ffffff; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + background-color: rgba(0, 0, 0, 0.5); + font-size: 0; + text-align: center; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-b1 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 24px; +} +.am-slider-b1 .am-direction-nav a.am-prev { + left: 0; + padding-right: 5px; + border-bottom-right-radius: 5px; + border-top-right-radius: 5px; +} +.am-slider-b1 .am-direction-nav a.am-next { + right: 0; + padding-left: 5px; + border-bottom-left-radius: 5px; + border-top-left-radius: 5px; +} +.am-slider-b1 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-b1 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-b1:hover .am-prev { + opacity: 0.7; +} +.am-slider-b1:hover .am-prev:hover { + opacity: 1; +} +.am-slider-b1:hover .am-next { + opacity: 0.7; +} +.am-slider-b1:hover .am-next:hover { + opacity: 1; +} +.am-slider-b1 .am-control-nav, +.am-slider-b1 .am-pauseplay { + display: none; +} +/** + * Slider Theme: b2 + */ +.am-slider-b2 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-b2 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-b2 .am-viewport { + max-height: 300px; +} +.am-slider-b2 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 4px; + margin: -16px 0 0; + position: absolute; + top: 50%; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: #ffffff; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + background-color: rgba(0, 0, 0, 0.5); + font-size: 0; + text-align: center; + border-radius: 50%; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-b2 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 16px; + line-height: 24px; +} +.am-slider-b2 .am-direction-nav a.am-prev { + left: 5px; +} +.am-slider-b2 .am-direction-nav a.am-next { + right: 5px; +} +.am-slider-b2 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-b2 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-b2:hover .am-prev { + opacity: 0.7; +} +.am-slider-b2:hover .am-prev:hover { + opacity: 1; +} +.am-slider-b2:hover .am-next { + opacity: 0.7; +} +.am-slider-b2:hover .am-next:hover { + opacity: 1; +} +.am-slider-b2 .am-control-nav, +.am-slider-b2 .am-pauseplay { + display: none; +} +/** + * Slider Theme: b3 + */ +.am-slider-b3 { + margin: 15px 30px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-b3 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-b3 .am-viewport { + max-height: 300px; +} +.am-slider-b3 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 4px; + margin: -16px 0 0; + position: absolute; + top: 50%; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: #333333; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + font-size: 0; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-b3 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 24px; +} +.am-slider-b3 .am-direction-nav a.am-prev { + left: -25px; +} +.am-slider-b3 .am-direction-nav a.am-next { + right: -25px; + text-align: right; +} +.am-slider-b3 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-b3 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-b3:hover .am-prev { + opacity: 0.7; +} +.am-slider-b3:hover .am-prev:hover { + opacity: 1; +} +.am-slider-b3:hover .am-next { + opacity: 0.7; +} +.am-slider-b3:hover .am-next:hover { + opacity: 1; +} +.am-slider-b3 .am-control-nav, +.am-slider-b3 .am-pauseplay { + display: none; +} +/** + * Slider Theme: b4 + */ +.am-slider-b4 { + margin: 15px 20px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-b4 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-b4 .am-viewport { + max-height: 300px; +} +.am-slider-b4 .am-direction-nav a { + position: absolute; + top: 50%; + z-index: 10; + display: block; + -webkit-box-sizing: content-box; + box-sizing: content-box; + width: 24px; + height: 24px; + margin: -16px 0 0; + padding: 4px; + overflow: hidden; + opacity: 0.45; + background-color: rgba(0, 0, 0, 0.8); + cursor: pointer; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + font-size: 0; + border-radius: 50%; + text-align: center; + color: #ffffff; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-b4 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 20px; + line-height: 24px; +} +.am-slider-b4 .am-direction-nav a.am-prev { + left: -15px; +} +.am-slider-b4 .am-direction-nav a.am-next { + right: -15px; +} +.am-slider-b4 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-b4 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-b4:hover .am-prev { + opacity: 0.7; +} +.am-slider-b4:hover .am-prev:hover { + opacity: 0.9; +} +.am-slider-b4:hover .am-next { + opacity: 0.7; +} +.am-slider-b4:hover .am-next:hover { + opacity: 0.9; +} +.am-slider-b4 .am-control-nav, +.am-slider-b4 .am-pauseplay { + display: none; +} +/** + * Slider Theme: c1 + */ +.am-slider-c1 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-c1 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-c1 .am-viewport { + max-height: 300px; +} +.am-slider-c1 .am-control-nav { + position: absolute; + bottom: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + height: 6px; + font-size: 0; + line-height: 0; + text-align: center; +} +.am-slider-c1 .am-control-nav li { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-slider-c1 .am-control-nav li a { + width: 100%; + height: 6px; + display: block; + background-color: rgba(0, 0, 0, 0.7); + cursor: pointer; + text-indent: -9999px; +} +.am-slider-c1 .am-control-nav li a:hover { + background: rgba(0, 0, 0, 0.8); +} +.am-slider-c1 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-c1 .am-slider-desc { + background-color: rgba(0, 0, 0, 0.6); + position: absolute; + bottom: 6px; + padding: 8px; + width: 100%; + color: #ffffff; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-c1 .am-direction-nav, +.am-slider-c1 .am-pauseplay { + display: none; +} +/** + * Slider Theme: c2 + */ +.am-slider-c2 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-c2 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-c2 .am-viewport { + max-height: 300px; +} +.am-slider-c2 .am-control-nav { + position: absolute; + bottom: 15px; + right: 0; + height: 6px; + text-align: center; + font-size: 0; + line-height: 0; +} +.am-slider-c2 .am-control-nav li { + display: inline-block; + margin-right: 6px; +} +.am-slider-c2 .am-control-nav li a { + width: 6px; + height: 6px; + display: block; + background-color: rgba(255, 255, 255, 0.4); + cursor: pointer; + text-indent: -9999px; +} +.am-slider-c2 .am-control-nav li a:hover { + background: rgba(230, 230, 230, 0.4); +} +.am-slider-c2 .am-control-nav li a.am-active { + background-color: #0e90d2; + cursor: default; +} +.am-slider-c2 .am-slider-desc { + background-color: rgba(0, 0, 0, 0.6); + position: absolute; + bottom: 0; + padding: 8px 60px 8px 8px; + width: 100%; + color: #ffffff; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-c2 .am-direction-nav, +.am-slider-c2 .am-pauseplay { + display: none; +} +/** + * Slider Theme: c3 + */ +.am-slider-c3 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-c3 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-c3 .am-viewport { + max-height: 300px; +} +.am-slider-c3 .am-slider-desc { + background-color: rgba(0, 0, 0, 0.6); + position: absolute; + bottom: 10px; + right: 60px; + height: 30px; + left: 0; + padding-right: 5px; + color: #ffffff; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-c3 .am-slider-counter { + margin-right: 5px; + display: inline-block; + height: 30px; + background-color: #0e90d2; + width: 40px; + text-align: center; + line-height: 30px; + color: #eeeeee; + font-size: 1rem; +} +.am-slider-c3 .am-slider-counter .am-active { + font-size: 1.8rem; + font-weight: bold; + color: #ffffff; +} +.am-slider-c3 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 4px 0; + margin: -16px 0 0; + position: absolute; + top: 50%; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: #ffffff; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + background-color: rgba(0, 0, 0, 0.5); + font-size: 0; + text-align: center; + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-c3 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 16px; + line-height: 24px; +} +.am-slider-c3 .am-direction-nav a.am-prev { + left: 0; + padding-right: 5px; +} +.am-slider-c3 .am-direction-nav a.am-next { + right: 0; + padding-left: 5px; +} +.am-slider-c3 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-c3 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-c3:hover .am-prev { + opacity: 0.7; +} +.am-slider-c3:hover .am-prev:hover { + opacity: 1; +} +.am-slider-c3:hover .am-next { + opacity: 0.7; +} +.am-slider-c3:hover .am-next:hover { + opacity: 1; +} +.am-slider-c3 .am-control-nav, +.am-slider-c3 .am-pauseplay { + display: none; +} +/** + * Slider Theme: c4 + */ +.am-slider-c4 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-c4 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-c4 .am-viewport { + max-height: 300px; +} +.am-slider-c4 .am-slider-desc { + width: 100%; + background-color: rgba(0, 0, 0, 0.6); + position: absolute; + bottom: 0; + right: 0; + left: 0; + padding: 8px 40px; + color: #ffffff; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-c4 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + padding: 4px 0; + margin: 0; + position: absolute; + bottom: 4px; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + font-size: 0; + text-align: center; + color: rgba(0, 0, 0, 0.7); + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-c4 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 24px; +} +.am-slider-c4 .am-direction-nav a.am-prev { + left: 0; + padding-right: 5px; +} +.am-slider-c4 .am-direction-nav a.am-next { + right: 0; + padding-left: 5px; +} +.am-slider-c4 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-c4 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-c4:hover .am-prev { + opacity: 0.7; +} +.am-slider-c4:hover .am-prev:hover { + opacity: 1; +} +.am-slider-c4:hover .am-next { + opacity: 0.7; +} +.am-slider-c4:hover .am-next:hover { + opacity: 1; +} +.am-slider-c4 .am-control-nav, +.am-slider-c4 .am-pauseplay { + display: none; +} +/** + * Slider Theme: d1 + */ +.am-slider-d1 { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Direction Nav */ +} +.am-slider-d1 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-d1 .am-viewport { + max-height: 300px; +} +.am-slider-d1 .am-slider-desc { + padding: 8px 35px; + width: 100%; + color: #ffffff; + background-color: #0e90d2; +} +.am-slider-d1 .am-slider-title { + font-weight: normal; + margin-bottom: 2px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-d1 .am-slider-more { + color: #eeeeee; + font-size: 1.3rem; +} +.am-slider-d1 .am-direction-nav a { + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 24px; + height: 24px; + margin: 0; + position: absolute; + bottom: 18px; + z-index: 10; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + font-size: 0; + text-align: center; + border: 1px solid rgba(255, 255, 255, 0.9); + color: rgba(255, 255, 255, 0.9); + border-radius: 50%; + -webkit-transition: all 03s ease; + transition: all 03s ease; +} +.am-slider-d1 .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f053"; + font-size: 16px; + line-height: 24px; +} +.am-slider-d1 .am-direction-nav a.am-prev { + left: 5px; +} +.am-slider-d1 .am-direction-nav a.am-next { + right: 5px; +} +.am-slider-d1 .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-d1 .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-d1:hover .am-prev { + opacity: 0.7; +} +.am-slider-d1:hover .am-prev:hover { + opacity: 1; +} +.am-slider-d1:hover .am-next { + opacity: 0.7; +} +.am-slider-d1:hover .am-next:hover { + opacity: 1; +} +.am-slider-d1 .am-control-nav, +.am-slider-d1 .am-pauseplay { + display: none; +} +/** + * Slider Theme: d2 + */ +.am-slider-d2 { + margin-bottom: 20px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-d2 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-d2 .am-viewport { + max-height: 300px; +} +.am-slider-d2 .am-slider-desc { + position: absolute; + left: 10px; + bottom: 20px; + right: 50px; + color: #ffffff; +} +.am-slider-d2 .am-slider-content { + background-color: rgba(0, 0, 0, 0.7); + padding: 10px 6px; + margin-bottom: 10px; +} +.am-slider-d2 .am-slider-content p { + margin: 0; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + font-size: 1.4rem; +} +.am-slider-d2 .am-slider-title { + font-weight: normal; + margin-bottom: 5px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-d2 .am-slider-more { + color: #eeeeee; + font-size: 1.3rem; + background-color: #0e90d2; + padding: 2px 10px; +} +.am-slider-d2 .am-control-nav { + width: 100%; + position: absolute; + bottom: -15px; + text-align: center; +} +.am-slider-d2 .am-control-nav li { + margin: 0 6px; + display: inline-block; +} +.am-slider-d2 .am-control-nav li a { + width: 8px; + height: 8px; + display: block; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + text-indent: -9999px; + border-radius: 50%; + font-size: 0; + line-height: 0; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.3); +} +.am-slider-d2 .am-control-nav li a:hover { + background: rgba(0, 0, 0, 0.5); +} +.am-slider-d2 .am-control-nav li a.am-active { + background: #0e90d2; + cursor: default; +} +.am-slider-d2 .am-direction-nav, +.am-slider-d2 .am-pauseplay { + display: none; +} +/** + * Slider Theme: d3 + */ +.am-slider-d3 { + margin-bottom: 10px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) + /* Control Nav */ +} +.am-slider-d3 .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-d3 .am-viewport { + max-height: 300px; +} +.am-slider-d3 .am-slider-desc { + position: absolute; + bottom: 0; + color: #ffffff; + width: 100%; + background-color: rgba(0, 0, 0, 0.7); + padding: 8px 5px; +} +.am-slider-d3 .am-slider-desc p { + margin: 0; + font-size: 1.3rem; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-d3 .am-slider-title { + font-weight: normal; + margin-bottom: 5px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-d3 .am-control-thumbs { + position: static; + overflow: hidden; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.am-slider-d3 .am-control-thumbs li { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 12px 4px 4px; + position: relative; +} +.am-slider-d3 .am-control-thumbs img { + width: 100%; + display: block; + opacity: .85; + cursor: pointer; +} +.am-slider-d3 .am-control-thumbs img:hover { + opacity: 1; +} +.am-slider-d3 .am-control-thumbs .am-active { + opacity: 1; + cursor: default; +} +.am-slider-d3 .am-control-thumbs .am-active + i { + position: absolute; + top: 0; + left: 50%; + content: ""; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-top: 8px solid rgba(0, 0, 0, 0.7); + border-right: 8px solid transparent; + border-left: 8px solid transparent; + border-bottom: 0 dotted; + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + margin-left: -4px; + -webkit-transition: all 0.2s; + transition: all 0.2s; +} +.am-slider-d3 .am-direction-nav, +.am-slider-d3 .am-pauseplay { + display: none; +} +/** + * Slider Theme: one + */ +.am-slider-one { + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5); + margin: 0 10px + /* Control Nav */ +} +.am-slider-one .am-viewport { + max-height: 2000px; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.loading .am-slider-one .am-viewport { + max-height: 300px; +} +.am-slider-one .am-viewport .am-slider-desc { + position: absolute; + left: 0; + bottom: 0; + height: 26px; + width: 100%; + line-height: 26px; + background: rgba(0, 0, 0, 0.5); + color: #ffffff; +} +.am-slider-one .am-viewport .am-slider-desc .am-slider-title { + font-weight: normal; + font-size: 12px; + text-indent: 4px; + padding-right: 80px; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-slider-one .am-control-nav { + display: none; +} +.am-slider-one .am-direction-nav a { + position: absolute; + top: 50%; + z-index: 10; + display: block; + width: 24px; + height: 24px; + margin: -12px 0 0; + overflow: hidden; + opacity: 0.45; + cursor: pointer; + color: rgba(0, 0, 0, 0.8); + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); + -webkit-transition: all .3s ease; + transition: all .3s ease; +} +.am-slider-one .am-direction-nav a:before { + display: inline-block; + font-family: "FontAwesome", sans-serif; + font-weight: normal; + font-style: normal; + vertical-align: baseline; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: rgba(0, 0, 0, 0.7); + content: "\f053"; + font-size: 24px; +} +.am-slider-one .am-direction-nav a.am-next:before { + content: "\f054"; +} +.am-slider-one .am-direction-nav .am-prev { + left: 10px; +} +.am-slider-one .am-direction-nav .am-next { + right: 10px; + text-align: right; +} +.am-slider-one .am-direction-nav .am-disabled { + opacity: 0!important; + cursor: default; +} +.am-slider-one:hover .am-prev { + opacity: 0.7; + left: 10px; +} +.am-slider-one:hover .am-prev:hover { + opacity: 1; +} +.am-slider-one:hover .am-next { + opacity: 0.7; + right: 10px; +} +.am-slider-one:hover .am-next:hover { + opacity: 1; +} +.am-slider-one .am-pauseplay { + display: none; +} +[data-am-widget='tabs'] { + margin: 10px; +} +[data-am-widget='tabs'] .am-tabs-nav { + width: 100%; + padding: 0; + margin: 0; + list-style: none; + text-align: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +[data-am-widget='tabs'] .am-tabs-nav li { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +[data-am-widget='tabs'] .am-tabs-nav a { + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +/** + * Tabs Theme: default + */ +.am-tabs-default .am-tabs-nav { + line-height: 40px; + background-color: #eeeeee; +} +.am-tabs-default .am-tabs-nav a { + color: #222222; + line-height: 42px; +} +.am-tabs-default .am-tabs-nav > .am-active a { + background-color: #0e90d2; + color: #ffffff; +} +/** + * Tabs Theme: d2 + */ +.am-tabs-d2 .am-tabs-nav { + background-color: #eeeeee; +} +.am-tabs-d2 .am-tabs-nav li { + height: 42px; +} +.am-tabs-d2 .am-tabs-nav a { + color: #222222; + line-height: 42px; +} +.am-tabs-d2 .am-tabs-nav > .am-active { + position: relative; + background-color: #fcfcfc; + border-bottom: 2px solid #0e90d2; +} +.am-tabs-d2 .am-tabs-nav > .am-active a { + line-height: 40px; + color: #0e90d2; +} +.am-tabs-d2 .am-tabs-nav > .am-active:after { + position: absolute; + width: 0; + height: 0; + bottom: 0px; + left: 50%; + margin-left: -5px; + border: 6px rgba(0, 0, 0, 0) solid; + content: ""; + z-index: 1; + border-bottom-color: #0e90d2; +} +/** + * Tabs Theme: one + */ +.am-tabs-one { + background: #ffffff; +} +.am-tabs-one .am-tabs-nav { + height: 36px; + background-color: #ffffff; + font-size: 14px; + border-radius: 2px; +} +.am-tabs-one .am-tabs-nav a { + line-height: 34px; + color: #15afef; +} +.am-tabs-one .am-tabs-nav li { + border: 1px solid #15afef; +} +.am-tabs-one .am-tabs-nav li:first-child { + border-bottom-left-radius: 2px; + border-top-left-radius: 2px; +} +.am-tabs-one .am-tabs-nav li:last-child { + border-bottom-right-radius: 2px; + border-top-right-radius: 2px; +} +.am-tabs-one .am-tabs-nav li + li { + border-left: none; +} +.am-tabs-one .am-tabs-nav .am-active a { + background-color: #15afef; + color: #ffffff; +} +.am-tabs-one .am-tabs-bd { + border: none; +} +.am-tabs-one .am-tab-panel { + padding: 15px 5px 20px; +} +.am-titlebar { + margin-top: 20px; + height: 45px; + font-size: 100%; +} +.am-titlebar h2 { + margin-top: 0; + margin-bottom: 0; + font-size: 1.6rem; +} +.am-titlebar .am-titlebar-title img { + height: 24px; + width: auto; +} +/** + * Titlebar Theme: default + */ +.am-titlebar-default { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-left: 10px; + margin-right: 10px; + background-color: transparent; + border-bottom: 1px solid #dedede; + line-height: 44px; +} +.am-titlebar-default a { + color: #0e90d2; +} +.am-titlebar-default .am-titlebar-title { + position: relative; + padding-left: 12px; + color: #0e90d2; + font-size: 1.8rem; + text-align: left; + font-weight: bold; +} +.am-titlebar-default .am-titlebar-title:before { + content: ""; + position: absolute; + left: 2px; + top: 8px; + bottom: 8px; + border-left: 3px solid #0e90d2; +} +.am-titlebar-default .am-titlebar-nav { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; +} +.am-titlebar-default .am-titlebar-nav a { + margin-right: 10px; +} +.am-titlebar-default .am-titlebar-nav a:last-child { + margin-right: 5px; +} +/** + * Titlebar Theme: multi + */ +.am-titlebar-multi { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + background-color: #f5f5f5; + border-top: 2px solid #3bb4f2; + border-bottom: 1px solid #e8e8e8; +} +.am-titlebar-multi a { + color: #0e90d2; +} +.am-titlebar-multi .am-titlebar-title { + padding-left: 10px; + color: #0e90d2; + font-size: 1.8rem; + text-align: left; + font-weight: bold; + line-height: 42px; +} +.am-titlebar-multi .am-titlebar-nav { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; + line-height: 42px; +} +.am-titlebar-multi .am-titlebar-nav a { + margin-right: 10px; +} +/** + * Titlebar Theme: cols + */ +.am-titlebar-cols { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding-left: 10px; + background-color: #f5f5f5; + color: #555555; + font-size: 18px; + border-top: 2px solid #e1e1e1; + line-height: 41px; +} +.am-titlebar-cols a { + color: #555555; +} +.am-titlebar-cols .am-titlebar-title { + color: #0e90d2; + margin-right: 15px; + border-bottom: 2px solid #0e90d2; + font-weight: bold; +} +.am-titlebar-cols .am-titlebar-title a { + color: #0e90d2; +} +.am-titlebar-cols .am-titlebar-nav { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.am-titlebar-cols .am-titlebar-nav a { + display: inline-block; + margin-right: 15px; + line-height: 41px; + border-bottom: 2px solid transparent; +} +.am-titlebar-cols .am-titlebar-nav a:hover { + color: #3c3c3c; + border-bottom-color: #0e90d2; +} +.am-titlebar-cols .am-titlebar-nav a:last-child { + margin-right: 10px; +} +/** + * Titlebar Theme: one + */ +.am-titlebar-one { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-left: 10px; + margin-right: 10px; + height: 45px; + line-height: 44px; + background-color: #ffffff; + overflow: hidden; + border-bottom: 1px solid #15afef; +} +.am-titlebar-one .am-titlebar-title { + padding-left: 12px; + position: relative; + color: #222222; + display: block; + word-wrap: normal; + /* for IE */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.am-titlebar-one .am-titlebar-title:before { + content: ""; + position: absolute; + left: 2px; + top: 8px; + bottom: 8px; + border-left: 3px solid #15afef; +} +.am-titlebar-one .am-titlebar-title a { + color: #222222; +} +.am-titlebar-one .am-titlebar-title img { + height: 24px; + vertical-align: top; + margin-top: 10px; +} +.am-titlebar-one .am-titlebar-title h1, +.am-titlebar-one .am-titlebar-title h2, +.am-titlebar-one .am-titlebar-title h3, +.am-titlebar-one .am-titlebar-title h4, +.am-titlebar-one .am-titlebar-title h5, +.am-titlebar-one .am-titlebar-title h6, +.am-titlebar-one .am-titlebar-title strong, +.am-titlebar-one .am-titlebar-title em { + font-style: normal; + font-weight: normal; + margin-bottom: 0; +} +.am-titlebar-one .am-titlebar-title ul, +.am-titlebar-one .am-titlebar-title li { + list-style: none; + padding-left: 0; +} +.am-titlebar-one .am-titlebar-nav { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; + padding-right: 5px; + color: #999999; + font-size: 1.4rem; +} +.am-titlebar-one .am-titlebar-nav a { + color: #999999; +} diff --git a/src/main/webapp/res/amazonUi/css/amazeui.flat.min.css b/src/main/webapp/res/amazonUi/css/amazeui.flat.min.css new file mode 100644 index 0000000..45451a6 --- /dev/null +++ b/src/main/webapp/res/amazonUi/css/amazeui.flat.min.css @@ -0,0 +1 @@ +/*! Amaze UI v2.1.0 | by Amaze UI Team | (c) 2015 AllMobilize, Inc. | Licensed under MIT | 2015-01-13T02:01:01 UTC */*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box}html,body{min-height:100%}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template,script{display:none}a{background-color:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}ins,a{text-decoration:none}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}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:-.5em}sub{bottom:-.25em}img{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:100%;height:auto;vertical-align:middle;border:0}svg:not(:root){overflow:hidden}figure{margin:0}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",FontAwesome,monospace;font-size:1em}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}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}input[type=radio],input[type=checkbox]{cursor:pointer;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-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}textarea{overflow:auto;vertical-align:top;resize:vertical}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:62.5%;-webkit-tap-highlight-color:transparent}body{position:relative;background:#fff;font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3",FontAwesome,sans-serif;font-weight:400;line-height:1.6;color:#333;font-size:1.6rem}body,input,textarea,select,button{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga","kern"}@media only screen and (max-width:640px){body{word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;-moz-hyphens:auto;hyphens:auto}}a{color:#0e90d2}a:hover,a:focus{color:#095f8a}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}ins{background:#ffa;color:#333}mark{background:#ffa;color:#333}abbr[title],dfn[title]{cursor:help}dfn[title]{border-bottom:1px dotted;font-style:normal}p,hr,ul,ol,dl,blockquote,pre,address,fieldset,figure{margin:0 0 1.6rem 0}*+p,*+hr,*+ul,*+ol,*+dl,*+blockquote,*+pre,*+address,*+fieldset,*+figure{margin-top:1.6rem}h1,h2,h3,h4,h5,h6{margin:0 0 1.6rem 0;font-weight:600;font-size:100%}h1{font-size:1.5em}h2{font-size:1.25em}*+h1,*+h2,*+h3,*+h4,*+h5,*+h6{margin-top:2em}ul,ol{padding-left:2em}ul>li>ul,ul>li>ol,ol>li>ol,ol>li>ul{margin:1em 0}dt{font-weight:700}dt+dd{margin-top:.5em}dd{margin-left:0}dd+dt{margin-top:1em}hr{display:block;padding:0;border:0;height:0;border-top:1px solid #eee;-webkit-box-sizing:content-box;box-sizing:content-box}address{font-style:normal}blockquote{padding-top:5px;padding-bottom:5px;padding-left:15px;border-left:4px solid #ddd;font-family:Georgia,"Times New Roman",Times,Kai,"Kaiti SC",KaiTi,BiauKai,FontAwesome,serif}blockquote small{display:block;color:#999;font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3",FontAwesome,sans-serif;text-align:right}blockquote p:last-of-type{margin-bottom:0}iframe{border:0}button,input:not([type=radio]):not([type=checkbox]),select{vertical-align:middle}.am-container{-webkit-box-sizing:border-box;box-sizing:border-box;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem;width:100%;max-width:1000px}.am-container:before,.am-container:after{content:" ";display:table}.am-container:after{clear:both}@media only screen and (min-width:641px){.am-container{padding-left:1.5rem;padding-right:1.5rem}}.am-container>.am-g{width:auto;margin-left:-1rem;margin-right:-1rem}@media only screen and (min-width:641px){.am-container>.am-g{margin-left:-1.5rem;margin-right:-1.5rem}}.am-g{margin:0 auto;width:100%}.am-g:before,.am-g:after{content:" ";display:table}.am-g:after{clear:both}.am-g .am-g{margin-left:-1rem;margin-right:-1rem;width:auto}.am-g .am-g.am-g-collapse{margin-left:0;margin-right:0;width:auto}@media only screen and (min-width:641px){.am-g .am-g{margin-left:-1.5rem;margin-right:-1.5rem}}.am-g.am-g-collapse .am-g{margin-left:0;margin-right:0}.am-g-collapse [class*=am-u-]{padding-left:0;padding-right:0}.am-g-fixed{max-width:1000px}[class*=am-u-]{width:100%;padding-left:1rem;padding-right:1rem;float:left;position:relative}[class*=am-u-]+[class*=am-u-]:last-child{float:right}[class*=am-u-]+[class*=am-u-].am-u-end{float:left}@media only screen and (min-width:641px){[class*=am-u-]{padding-left:1.5rem;padding-right:1.5rem}}[class*=am-u-pull-]{left:auto}[class*=am-u-push-]{right:auto}@media only screen{.am-u-sm-1{width:8.33333333%}.am-u-sm-2{width:16.66666667%}.am-u-sm-3{width:25%}.am-u-sm-4{width:33.33333333%}.am-u-sm-5{width:41.66666667%}.am-u-sm-6{width:50%}.am-u-sm-7{width:58.33333333%}.am-u-sm-8{width:66.66666667%}.am-u-sm-9{width:75%}.am-u-sm-10{width:83.33333333%}.am-u-sm-11{width:91.66666667%}.am-u-sm-12{width:100%}.am-u-sm-pull-0{right:0}.am-u-sm-pull-1{right:8.33333333%}.am-u-sm-pull-2{right:16.66666667%}.am-u-sm-pull-3{right:25%}.am-u-sm-pull-4{right:33.33333333%}.am-u-sm-pull-5{right:41.66666667%}.am-u-sm-pull-6{right:50%}.am-u-sm-pull-7{right:58.33333333%}.am-u-sm-pull-8{right:66.66666667%}.am-u-sm-pull-9{right:75%}.am-u-sm-pull-10{right:83.33333333%}.am-u-sm-pull-11{right:91.66666667%}.am-u-sm-push-0{left:0}.am-u-sm-push-1{left:8.33333333%}.am-u-sm-push-2{left:16.66666667%}.am-u-sm-push-3{left:25%}.am-u-sm-push-4{left:33.33333333%}.am-u-sm-push-5{left:41.66666667%}.am-u-sm-push-6{left:50%}.am-u-sm-push-7{left:58.33333333%}.am-u-sm-push-8{left:66.66666667%}.am-u-sm-push-9{left:75%}.am-u-sm-push-10{left:83.33333333%}.am-u-sm-push-11{left:91.66666667%}.am-u-sm-offset-0{margin-left:0}.am-u-sm-offset-1{margin-left:8.33333333%}.am-u-sm-offset-2{margin-left:16.66666667%}.am-u-sm-offset-3{margin-left:25%}.am-u-sm-offset-4{margin-left:33.33333333%}.am-u-sm-offset-5{margin-left:41.66666667%}.am-u-sm-offset-6{margin-left:50%}.am-u-sm-offset-7{margin-left:58.33333333%}.am-u-sm-offset-8{margin-left:66.66666667%}.am-u-sm-offset-9{margin-left:75%}.am-u-sm-offset-10{margin-left:83.33333333%}.am-u-sm-offset-11{margin-left:91.66666667%}.am-u-sm-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}[class*=am-u-].am-u-sm-centered{margin-left:auto;margin-right:auto;float:none}[class*=am-u-].am-u-sm-centered:last-child{float:none}[class*=am-u-].am-u-sm-uncentered{margin-left:0;margin-right:0;float:left}[class*=am-u-].am-u-sm-uncentered:last-child{float:left}}@media only screen and (min-width:641px){.am-u-md-1{width:8.33333333%}.am-u-md-2{width:16.66666667%}.am-u-md-3{width:25%}.am-u-md-4{width:33.33333333%}.am-u-md-5{width:41.66666667%}.am-u-md-6{width:50%}.am-u-md-7{width:58.33333333%}.am-u-md-8{width:66.66666667%}.am-u-md-9{width:75%}.am-u-md-10{width:83.33333333%}.am-u-md-11{width:91.66666667%}.am-u-md-12{width:100%}.am-u-md-pull-0{right:0}.am-u-md-pull-1{right:8.33333333%}.am-u-md-pull-2{right:16.66666667%}.am-u-md-pull-3{right:25%}.am-u-md-pull-4{right:33.33333333%}.am-u-md-pull-5{right:41.66666667%}.am-u-md-pull-6{right:50%}.am-u-md-pull-7{right:58.33333333%}.am-u-md-pull-8{right:66.66666667%}.am-u-md-pull-9{right:75%}.am-u-md-pull-10{right:83.33333333%}.am-u-md-pull-11{right:91.66666667%}.am-u-md-push-0{left:0}.am-u-md-push-1{left:8.33333333%}.am-u-md-push-2{left:16.66666667%}.am-u-md-push-3{left:25%}.am-u-md-push-4{left:33.33333333%}.am-u-md-push-5{left:41.66666667%}.am-u-md-push-6{left:50%}.am-u-md-push-7{left:58.33333333%}.am-u-md-push-8{left:66.66666667%}.am-u-md-push-9{left:75%}.am-u-md-push-10{left:83.33333333%}.am-u-md-push-11{left:91.66666667%}.am-u-md-offset-0{margin-left:0}.am-u-md-offset-1{margin-left:8.33333333%}.am-u-md-offset-2{margin-left:16.66666667%}.am-u-md-offset-3{margin-left:25%}.am-u-md-offset-4{margin-left:33.33333333%}.am-u-md-offset-5{margin-left:41.66666667%}.am-u-md-offset-6{margin-left:50%}.am-u-md-offset-7{margin-left:58.33333333%}.am-u-md-offset-8{margin-left:66.66666667%}.am-u-md-offset-9{margin-left:75%}.am-u-md-offset-10{margin-left:83.33333333%}.am-u-md-offset-11{margin-left:91.66666667%}.am-u-md-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}[class*=am-u-].am-u-md-centered{margin-left:auto;margin-right:auto;float:none}[class*=am-u-].am-u-md-centered:last-child{float:none}[class*=am-u-].am-u-md-uncentered{margin-left:0;margin-right:0;float:left}[class*=am-u-].am-u-md-uncentered:last-child{float:left}}@media only screen and (min-width:1025px){.am-u-lg-1{width:8.33333333%}.am-u-lg-2{width:16.66666667%}.am-u-lg-3{width:25%}.am-u-lg-4{width:33.33333333%}.am-u-lg-5{width:41.66666667%}.am-u-lg-6{width:50%}.am-u-lg-7{width:58.33333333%}.am-u-lg-8{width:66.66666667%}.am-u-lg-9{width:75%}.am-u-lg-10{width:83.33333333%}.am-u-lg-11{width:91.66666667%}.am-u-lg-12{width:100%}.am-u-lg-pull-0{right:0}.am-u-lg-pull-1{right:8.33333333%}.am-u-lg-pull-2{right:16.66666667%}.am-u-lg-pull-3{right:25%}.am-u-lg-pull-4{right:33.33333333%}.am-u-lg-pull-5{right:41.66666667%}.am-u-lg-pull-6{right:50%}.am-u-lg-pull-7{right:58.33333333%}.am-u-lg-pull-8{right:66.66666667%}.am-u-lg-pull-9{right:75%}.am-u-lg-pull-10{right:83.33333333%}.am-u-lg-pull-11{right:91.66666667%}.am-u-lg-push-0{left:0}.am-u-lg-push-1{left:8.33333333%}.am-u-lg-push-2{left:16.66666667%}.am-u-lg-push-3{left:25%}.am-u-lg-push-4{left:33.33333333%}.am-u-lg-push-5{left:41.66666667%}.am-u-lg-push-6{left:50%}.am-u-lg-push-7{left:58.33333333%}.am-u-lg-push-8{left:66.66666667%}.am-u-lg-push-9{left:75%}.am-u-lg-push-10{left:83.33333333%}.am-u-lg-push-11{left:91.66666667%}.am-u-lg-offset-0{margin-left:0}.am-u-lg-offset-1{margin-left:8.33333333%}.am-u-lg-offset-2{margin-left:16.66666667%}.am-u-lg-offset-3{margin-left:25%}.am-u-lg-offset-4{margin-left:33.33333333%}.am-u-lg-offset-5{margin-left:41.66666667%}.am-u-lg-offset-6{margin-left:50%}.am-u-lg-offset-7{margin-left:58.33333333%}.am-u-lg-offset-8{margin-left:66.66666667%}.am-u-lg-offset-9{margin-left:75%}.am-u-lg-offset-10{margin-left:83.33333333%}.am-u-lg-offset-11{margin-left:91.66666667%}.am-u-lg-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}[class*=am-u-].am-u-lg-centered{margin-left:auto;margin-right:auto;float:none}[class*=am-u-].am-u-lg-centered:last-child{float:none}[class*=am-u-].am-u-lg-uncentered{margin-left:0;margin-right:0;float:left}[class*=am-u-].am-u-lg-uncentered:last-child{float:left}}[class*=am-avg-]{display:block;padding:0;margin:0;list-style:none}[class*=am-avg-]:before,[class*=am-avg-]:after{content:" ";display:table}[class*=am-avg-]:after{clear:both}[class*=am-avg-]>li{display:block;height:auto;float:left}@media only screen{.am-avg-sm-1>li{width:100%}.am-avg-sm-1>li:nth-of-type(n){clear:none}.am-avg-sm-1>li:nth-of-type(1n+1){clear:both}.am-avg-sm-2>li{width:50%}.am-avg-sm-2>li:nth-of-type(n){clear:none}.am-avg-sm-2>li:nth-of-type(2n+1){clear:both}.am-avg-sm-3>li{width:33.33333333%}.am-avg-sm-3>li:nth-of-type(n){clear:none}.am-avg-sm-3>li:nth-of-type(3n+1){clear:both}.am-avg-sm-4>li{width:25%}.am-avg-sm-4>li:nth-of-type(n){clear:none}.am-avg-sm-4>li:nth-of-type(4n+1){clear:both}.am-avg-sm-5>li{width:20%}.am-avg-sm-5>li:nth-of-type(n){clear:none}.am-avg-sm-5>li:nth-of-type(5n+1){clear:both}.am-avg-sm-6>li{width:16.66666667%}.am-avg-sm-6>li:nth-of-type(n){clear:none}.am-avg-sm-6>li:nth-of-type(6n+1){clear:both}.am-avg-sm-7>li{width:14.28571429%}.am-avg-sm-7>li:nth-of-type(n){clear:none}.am-avg-sm-7>li:nth-of-type(7n+1){clear:both}.am-avg-sm-8>li{width:12.5%}.am-avg-sm-8>li:nth-of-type(n){clear:none}.am-avg-sm-8>li:nth-of-type(8n+1){clear:both}.am-avg-sm-9>li{width:11.11111111%}.am-avg-sm-9>li:nth-of-type(n){clear:none}.am-avg-sm-9>li:nth-of-type(9n+1){clear:both}.am-avg-sm-10>li{width:10%}.am-avg-sm-10>li:nth-of-type(n){clear:none}.am-avg-sm-10>li:nth-of-type(10n+1){clear:both}.am-avg-sm-11>li{width:9.09090909%}.am-avg-sm-11>li:nth-of-type(n){clear:none}.am-avg-sm-11>li:nth-of-type(11n+1){clear:both}.am-avg-sm-12>li{width:8.33333333%}.am-avg-sm-12>li:nth-of-type(n){clear:none}.am-avg-sm-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width:641px){.am-avg-md-1>li{width:100%}.am-avg-md-1>li:nth-of-type(n){clear:none}.am-avg-md-1>li:nth-of-type(1n+1){clear:both}.am-avg-md-2>li{width:50%}.am-avg-md-2>li:nth-of-type(n){clear:none}.am-avg-md-2>li:nth-of-type(2n+1){clear:both}.am-avg-md-3>li{width:33.33333333%}.am-avg-md-3>li:nth-of-type(n){clear:none}.am-avg-md-3>li:nth-of-type(3n+1){clear:both}.am-avg-md-4>li{width:25%}.am-avg-md-4>li:nth-of-type(n){clear:none}.am-avg-md-4>li:nth-of-type(4n+1){clear:both}.am-avg-md-5>li{width:20%}.am-avg-md-5>li:nth-of-type(n){clear:none}.am-avg-md-5>li:nth-of-type(5n+1){clear:both}.am-avg-md-6>li{width:16.66666667%}.am-avg-md-6>li:nth-of-type(n){clear:none}.am-avg-md-6>li:nth-of-type(6n+1){clear:both}.am-avg-md-7>li{width:14.28571429%}.am-avg-md-7>li:nth-of-type(n){clear:none}.am-avg-md-7>li:nth-of-type(7n+1){clear:both}.am-avg-md-8>li{width:12.5%}.am-avg-md-8>li:nth-of-type(n){clear:none}.am-avg-md-8>li:nth-of-type(8n+1){clear:both}.am-avg-md-9>li{width:11.11111111%}.am-avg-md-9>li:nth-of-type(n){clear:none}.am-avg-md-9>li:nth-of-type(9n+1){clear:both}.am-avg-md-10>li{width:10%}.am-avg-md-10>li:nth-of-type(n){clear:none}.am-avg-md-10>li:nth-of-type(10n+1){clear:both}.am-avg-md-11>li{width:9.09090909%}.am-avg-md-11>li:nth-of-type(n){clear:none}.am-avg-md-11>li:nth-of-type(11n+1){clear:both}.am-avg-md-12>li{width:8.33333333%}.am-avg-md-12>li:nth-of-type(n){clear:none}.am-avg-md-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width:1025px){.am-avg-lg-1>li{width:100%}.am-avg-lg-1>li:nth-of-type(n){clear:none}.am-avg-lg-1>li:nth-of-type(1n+1){clear:both}.am-avg-lg-2>li{width:50%}.am-avg-lg-2>li:nth-of-type(n){clear:none}.am-avg-lg-2>li:nth-of-type(2n+1){clear:both}.am-avg-lg-3>li{width:33.33333333%}.am-avg-lg-3>li:nth-of-type(n){clear:none}.am-avg-lg-3>li:nth-of-type(3n+1){clear:both}.am-avg-lg-4>li{width:25%}.am-avg-lg-4>li:nth-of-type(n){clear:none}.am-avg-lg-4>li:nth-of-type(4n+1){clear:both}.am-avg-lg-5>li{width:20%}.am-avg-lg-5>li:nth-of-type(n){clear:none}.am-avg-lg-5>li:nth-of-type(5n+1){clear:both}.am-avg-lg-6>li{width:16.66666667%}.am-avg-lg-6>li:nth-of-type(n){clear:none}.am-avg-lg-6>li:nth-of-type(6n+1){clear:both}.am-avg-lg-7>li{width:14.28571429%}.am-avg-lg-7>li:nth-of-type(n){clear:none}.am-avg-lg-7>li:nth-of-type(7n+1){clear:both}.am-avg-lg-8>li{width:12.5%}.am-avg-lg-8>li:nth-of-type(n){clear:none}.am-avg-lg-8>li:nth-of-type(8n+1){clear:both}.am-avg-lg-9>li{width:11.11111111%}.am-avg-lg-9>li:nth-of-type(n){clear:none}.am-avg-lg-9>li:nth-of-type(9n+1){clear:both}.am-avg-lg-10>li{width:10%}.am-avg-lg-10>li:nth-of-type(n){clear:none}.am-avg-lg-10>li:nth-of-type(10n+1){clear:both}.am-avg-lg-11>li{width:9.09090909%}.am-avg-lg-11>li:nth-of-type(n){clear:none}.am-avg-lg-11>li:nth-of-type(11n+1){clear:both}.am-avg-lg-12>li{width:8.33333333%}.am-avg-lg-12>li:nth-of-type(n){clear:none}.am-avg-lg-12>li:nth-of-type(12n+1){clear:both}}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",FontAwesome,monospace}code{padding:2px 4px;font-size:1.3rem;color:#c7254e;background-color:#f8f8f8;white-space:nowrap;border-radius:2px}pre{display:block;padding:1rem;margin:1rem 0;font-size:1.3rem;line-height:1.6;word-break:break-all;word-wrap:break-word;color:#555;background-color:#f8f8f8;border:1px solid #dedede;border-radius:2px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.am-pre-scrollable{max-height:24rem;overflow-y:scroll}.am-btn{display:inline-block;margin-bottom:0;padding:.625em 1em;vertical-align:middle;font-size:1.6rem;font-weight:400;line-height:1.2;text-align:center;white-space:nowrap;background-image:none;border:1px solid transparent;border-radius:2px;cursor:pointer;outline:0;-webkit-appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:background-color 300ms ease-out,border-color 300ms ease-out;transition:background-color 300ms ease-out,border-color 300ms ease-out}.am-btn.am-square{border-radius:0}.am-btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.am-btn:hover,.am-btn:focus{outline:0;color:#444;text-decoration:none}.am-btn:active,.am-btn.am-active{background-image:none;-webkit-box-shadow:inset 0 1px 8px rgba(0,0,0,.125);box-shadow:inset 0 1px 8px rgba(0,0,0,.125)}.am-btn.am-disabled,.am-btn[disabled],fieldset[disabled] .am-btn{pointer-events:none;border-color:transparent;cursor:not-allowed;opacity:.45;-webkit-box-shadow:none;box-shadow:none}.am-btn.am-round{border-radius:1000px}.am-btn.am-radius{border-radius:2px}.am-btn-default{color:#444;background-color:#e6e6e6;border-color:#e6e6e6}.am-btn-default:hover,.am-btn-default:focus,.am-btn-default:active,.am-btn-default.am-active,.am-active .am-btn-default.am-dropdown-toggle{color:#444;background-color:#c7c7c7;border-color:#c7c7c7}.am-btn-default:active,.am-btn-default.am-btn-active,.am-active .am-btn-default.am-dropdown-toggle{background-image:none}.am-btn-default.am-disabled,.am-btn-default[disabled],fieldset[disabled] .am-btn-default,.am-btn-default.am-disabled:hover,.am-btn-default[disabled]:hover,fieldset[disabled] .am-btn-default:hover,.am-btn-default.am-disabled:focus,.am-btn-default[disabled]:focus,fieldset[disabled] .am-btn-default:focus,.am-btn-default.am-disabled:active,.am-btn-default[disabled]:active,fieldset[disabled] .am-btn-default:active,.am-btn-default.am-disabled.am-btn-active,.am-btn-default[disabled].am-btn-active,fieldset[disabled] .am-btn-default.am-btn-active{background-color:#e6e6e6;border-color:#e6e6e6}.am-btn-group .am-btn-default,.am-btn-group-stacked .am-btn-default{border-color:#d9d9d9}.am-btn-primary{color:#fff;background-color:#0e90d2;border-color:#0e90d2}.am-btn-primary:hover,.am-btn-primary:focus,.am-btn-primary:active,.am-btn-primary.am-active,.am-active .am-btn-primary.am-dropdown-toggle{color:#fff;background-color:#0a6999;border-color:#0a6999}.am-btn-primary:active,.am-btn-primary.am-btn-active,.am-active .am-btn-primary.am-dropdown-toggle{background-image:none}.am-btn-primary.am-disabled,.am-btn-primary[disabled],fieldset[disabled] .am-btn-primary,.am-btn-primary.am-disabled:hover,.am-btn-primary[disabled]:hover,fieldset[disabled] .am-btn-primary:hover,.am-btn-primary.am-disabled:focus,.am-btn-primary[disabled]:focus,fieldset[disabled] .am-btn-primary:focus,.am-btn-primary.am-disabled:active,.am-btn-primary[disabled]:active,fieldset[disabled] .am-btn-primary:active,.am-btn-primary.am-disabled.am-btn-active,.am-btn-primary[disabled].am-btn-active,fieldset[disabled] .am-btn-primary.am-btn-active{background-color:#0e90d2;border-color:#0e90d2}.am-btn-group .am-btn-primary,.am-btn-group-stacked .am-btn-primary{border-color:#0c80ba}.am-btn-warning{color:#fff;background-color:#f37b1d;border-color:#f37b1d}.am-btn-warning:hover,.am-btn-warning:focus,.am-btn-warning:active,.am-btn-warning.am-active,.am-active .am-btn-warning.am-dropdown-toggle{color:#fff;background-color:#c85e0b;border-color:#c85e0b}.am-btn-warning:active,.am-btn-warning.am-btn-active,.am-active .am-btn-warning.am-dropdown-toggle{background-image:none}.am-btn-warning.am-disabled,.am-btn-warning[disabled],fieldset[disabled] .am-btn-warning,.am-btn-warning.am-disabled:hover,.am-btn-warning[disabled]:hover,fieldset[disabled] .am-btn-warning:hover,.am-btn-warning.am-disabled:focus,.am-btn-warning[disabled]:focus,fieldset[disabled] .am-btn-warning:focus,.am-btn-warning.am-disabled:active,.am-btn-warning[disabled]:active,fieldset[disabled] .am-btn-warning:active,.am-btn-warning.am-disabled.am-btn-active,.am-btn-warning[disabled].am-btn-active,fieldset[disabled] .am-btn-warning.am-btn-active{background-color:#f37b1d;border-color:#f37b1d}.am-btn-group .am-btn-warning,.am-btn-group-stacked .am-btn-warning{border-color:#ea6e0c}.am-btn-danger{color:#fff;background-color:#dd514c;border-color:#dd514c}.am-btn-danger:hover,.am-btn-danger:focus,.am-btn-danger:active,.am-btn-danger.am-active,.am-active .am-btn-danger.am-dropdown-toggle{color:#fff;background-color:#c62b26;border-color:#c62b26}.am-btn-danger:active,.am-btn-danger.am-btn-active,.am-active .am-btn-danger.am-dropdown-toggle{background-image:none}.am-btn-danger.am-disabled,.am-btn-danger[disabled],fieldset[disabled] .am-btn-danger,.am-btn-danger.am-disabled:hover,.am-btn-danger[disabled]:hover,fieldset[disabled] .am-btn-danger:hover,.am-btn-danger.am-disabled:focus,.am-btn-danger[disabled]:focus,fieldset[disabled] .am-btn-danger:focus,.am-btn-danger.am-disabled:active,.am-btn-danger[disabled]:active,fieldset[disabled] .am-btn-danger:active,.am-btn-danger.am-disabled.am-btn-active,.am-btn-danger[disabled].am-btn-active,fieldset[disabled] .am-btn-danger.am-btn-active{background-color:#dd514c;border-color:#dd514c}.am-btn-group .am-btn-danger,.am-btn-group-stacked .am-btn-danger{border-color:#d93c37}.am-btn-success{color:#fff;background-color:#5eb95e;border-color:#5eb95e}.am-btn-success:hover,.am-btn-success:focus,.am-btn-success:active,.am-btn-success.am-active,.am-active .am-btn-success.am-dropdown-toggle{color:#fff;background-color:#429842;border-color:#429842}.am-btn-success:active,.am-btn-success.am-btn-active,.am-active .am-btn-success.am-dropdown-toggle{background-image:none}.am-btn-success.am-disabled,.am-btn-success[disabled],fieldset[disabled] .am-btn-success,.am-btn-success.am-disabled:hover,.am-btn-success[disabled]:hover,fieldset[disabled] .am-btn-success:hover,.am-btn-success.am-disabled:focus,.am-btn-success[disabled]:focus,fieldset[disabled] .am-btn-success:focus,.am-btn-success.am-disabled:active,.am-btn-success[disabled]:active,fieldset[disabled] .am-btn-success:active,.am-btn-success.am-disabled.am-btn-active,.am-btn-success[disabled].am-btn-active,fieldset[disabled] .am-btn-success.am-btn-active{background-color:#5eb95e;border-color:#5eb95e}.am-btn-group .am-btn-success,.am-btn-group-stacked .am-btn-success{border-color:#4db14d}.am-btn-secondary{color:#fff;background-color:#3bb4f2;border-color:#3bb4f2}.am-btn-secondary:hover,.am-btn-secondary:focus,.am-btn-secondary:active,.am-btn-secondary.am-active,.am-active .am-btn-secondary.am-dropdown-toggle{color:#fff;background-color:#0f9ae0;border-color:#0f9ae0}.am-btn-secondary:active,.am-btn-secondary.am-btn-active,.am-active .am-btn-secondary.am-dropdown-toggle{background-image:none}.am-btn-secondary.am-disabled,.am-btn-secondary[disabled],fieldset[disabled] .am-btn-secondary,.am-btn-secondary.am-disabled:hover,.am-btn-secondary[disabled]:hover,fieldset[disabled] .am-btn-secondary:hover,.am-btn-secondary.am-disabled:focus,.am-btn-secondary[disabled]:focus,fieldset[disabled] .am-btn-secondary:focus,.am-btn-secondary.am-disabled:active,.am-btn-secondary[disabled]:active,fieldset[disabled] .am-btn-secondary:active,.am-btn-secondary.am-disabled.am-btn-active,.am-btn-secondary[disabled].am-btn-active,fieldset[disabled] .am-btn-secondary.am-btn-active{background-color:#3bb4f2;border-color:#3bb4f2}.am-btn-group .am-btn-secondary,.am-btn-group-stacked .am-btn-secondary{border-color:#23abf0}.am-btn-link{color:#0e90d2;font-weight:400;cursor:pointer;border-radius:0}.am-btn-link,.am-btn-link:active,.am-btn-link[disabled],fieldset[disabled] .am-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.am-btn-link,.am-btn-link:hover,.am-btn-link:focus,.am-btn-link:active{border-color:transparent}.am-btn-link:hover,.am-btn-link:focus{color:#095f8a;text-decoration:underline;background-color:transparent}.am-btn-link[disabled]:hover,fieldset[disabled] .am-btn-link:hover,.am-btn-link[disabled]:focus,fieldset[disabled] .am-btn-link:focus{color:#999;text-decoration:none}.am-btn-xs{font-size:1.2rem}.am-btn-sm{font-size:1.4rem}.am-btn-lg{font-size:1.8rem}.am-btn-xl{font-size:2rem}.am-btn-block{display:block;width:100%;padding-left:0;padding-right:0}.am-btn-block+.am-btn-block{margin-top:5px}input[type=submit].am-btn-block,input[type=reset].am-btn-block,input[type=button].am-btn-block{width:100%}.am-btn.am-btn-loading .am-icon-spin{margin-right:5px}table{max-width:100%;background-color:transparent;empty-cells:show}table code{white-space:normal}th{text-align:left}.am-table{width:100%;margin-bottom:1.6rem;border-spacing:0;border-collapse:separate}.am-table>thead>tr>th,.am-table>tbody>tr>th,.am-table>tfoot>tr>th,.am-table>thead>tr>td,.am-table>tbody>tr>td,.am-table>tfoot>tr>td{padding:.7rem;line-height:1.6;vertical-align:top;border-top:1px solid #ddd}.am-table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.am-table>caption+thead>tr:first-child>th,.am-table>colgroup+thead>tr:first-child>th,.am-table>thead:first-child>tr:first-child>th,.am-table>caption+thead>tr:first-child>td,.am-table>colgroup+thead>tr:first-child>td,.am-table>thead:first-child>tr:first-child>td{border-top:0}.am-table>tbody+tbody tr:first-child td{border-top:2px solid #ddd}.am-table-bordered{border:1px solid #ddd}.am-table-bordered>thead>tr>th,.am-table-bordered>tbody>tr>th,.am-table-bordered>tfoot>tr>th,.am-table-bordered>thead>tr>td,.am-table-bordered>tbody>tr>td,.am-table-bordered>tfoot>tr>td{border-left:1px solid #ddd}.am-table-bordered>thead>tr>th:first-child,.am-table-bordered>tbody>tr>th:first-child,.am-table-bordered>tfoot>tr>th:first-child,.am-table-bordered>thead>tr>td:first-child,.am-table-bordered>tbody>tr>td:first-child,.am-table-bordered>tfoot>tr>td:first-child{border-left:none}.am-table-radius{border:1px solid #ddd;border-radius:2px}.am-table-radius>thead>tr:first-child>th:first-child,.am-table-radius>thead>tr:first-child>td:first-child{border-top-left-radius:2px;border-left:none}.am-table-radius>thead>tr:first-child>th:last-child,.am-table-radius>thead>tr:first-child>td:last-child{border-top-right-radius:2px;border-right:none}.am-table-radius>tbody>tr>th:first-child,.am-table-radius>tbody>tr>td:first-child{border-left:none}.am-table-radius>tbody>tr>th:last-child,.am-table-radius>tbody>tr>td:last-child{border-right:none}.am-table-radius>tbody>tr:last-child>th,.am-table-radius>tbody>tr:last-child>td{border-bottom:none}.am-table-radius>tbody>tr:last-child>th:first-child,.am-table-radius>tbody>tr:last-child>td:first-child{border-bottom-left-radius:2px}.am-table-radius>tbody>tr:last-child>th:last-child,.am-table-radius>tbody>tr:last-child>td:last-child{border-bottom-right-radius:2px}.am-table-striped>tbody>tr:nth-child(odd)>td,.am-table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.am-table-hover>tbody>tr:hover>td,.am-table-hover>tbody>tr:hover>th{background-color:#e9e9e9}.am-table>thead>tr>td.am-active,.am-table>tbody>tr>td.am-active,.am-table>tfoot>tr>td.am-active,.am-table>thead>tr>th.am-active,.am-table>tbody>tr>th.am-active,.am-table>tfoot>tr>th.am-active,.am-table>thead>tr.am-active>td,.am-table>tbody>tr.am-active>td,.am-table>tfoot>tr.am-active>td,.am-table>thead>tr.am-active>th,.am-table>tbody>tr.am-active>th,.am-table>tfoot>tr.am-active>th{background-color:#ffd}.am-table>thead>tr>td.am-disabled,.am-table>tbody>tr>td.am-disabled,.am-table>tfoot>tr>td.am-disabled,.am-table>thead>tr>th.am-disabled,.am-table>tbody>tr>th.am-disabled,.am-table>tfoot>tr>th.am-disabled,.am-table>thead>tr.am-disabled>td,.am-table>tbody>tr.am-disabled>td,.am-table>tfoot>tr.am-disabled>td,.am-table>thead>tr.am-disabled>th,.am-table>tbody>tr.am-disabled>th,.am-table>tfoot>tr.am-disabled>th{color:#999}.am-table>thead>tr>td.am-primary,.am-table>tbody>tr>td.am-primary,.am-table>tfoot>tr>td.am-primary,.am-table>thead>tr>th.am-primary,.am-table>tbody>tr>th.am-primary,.am-table>tfoot>tr>th.am-primary,.am-table>thead>tr.am-primary>td,.am-table>tbody>tr.am-primary>td,.am-table>tfoot>tr.am-primary>td,.am-table>thead>tr.am-primary>th,.am-table>tbody>tr.am-primary>th,.am-table>tfoot>tr.am-primary>th{color:#0b76ac;background-color:rgba(14,144,210,.115)}.am-table>thead>tr>td.am-success,.am-table>tbody>tr>td.am-success,.am-table>tfoot>tr>td.am-success,.am-table>thead>tr>th.am-success,.am-table>tbody>tr>th.am-success,.am-table>tfoot>tr>th.am-success,.am-table>thead>tr.am-success>td,.am-table>tbody>tr.am-success>td,.am-table>tfoot>tr.am-success>td,.am-table>thead>tr.am-success>th,.am-table>tbody>tr.am-success>th,.am-table>tfoot>tr.am-success>th{color:#5eb95e;background-color:rgba(94,185,94,.115)}.am-table>thead>tr>td.am-warning,.am-table>tbody>tr>td.am-warning,.am-table>tfoot>tr>td.am-warning,.am-table>thead>tr>th.am-warning,.am-table>tbody>tr>th.am-warning,.am-table>tfoot>tr>th.am-warning,.am-table>thead>tr.am-warning>td,.am-table>tbody>tr.am-warning>td,.am-table>tfoot>tr.am-warning>td,.am-table>thead>tr.am-warning>th,.am-table>tbody>tr.am-warning>th,.am-table>tfoot>tr.am-warning>th{color:#f37b1d;background-color:rgba(243,123,29,.115)}.am-table>thead>tr>td.am-danger,.am-table>tbody>tr>td.am-danger,.am-table>tfoot>tr>td.am-danger,.am-table>thead>tr>th.am-danger,.am-table>tbody>tr>th.am-danger,.am-table>tfoot>tr>th.am-danger,.am-table>thead>tr.am-danger>td,.am-table>tbody>tr.am-danger>td,.am-table>tfoot>tr.am-danger>td,.am-table>thead>tr.am-danger>th,.am-table>tbody>tr.am-danger>th,.am-table>tfoot>tr.am-danger>th{color:#dd514c;background-color:rgba(221,81,76,.115)}fieldset{border:none}legend{display:block;width:100%;margin-bottom:2rem;font-size:2rem;line-height:inherit;color:#333;border-bottom:1px solid #e5e5e5;padding-bottom:.5rem}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-size:inherit;font-style:inherit;font-family:inherit}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{height:auto}output{display:block;padding-top:1.6rem;font-size:1.6rem;line-height:1.6;color:#555;vertical-align:middle}.am-form select,.am-form textarea,.am-form input[type=text],.am-form input[type=password],.am-form input[type=datetime],.am-form input[type=datetime-local],.am-form input[type=date],.am-form input[type=month],.am-form input[type=time],.am-form input[type=week],.am-form input[type=number],.am-form input[type=email],.am-form input[type=url],.am-form input[type=search],.am-form input[type=tel],.am-form input[type=color],.am-form-field{display:block;width:100%;padding:.625em;font-size:1.6rem;line-height:1.2;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:2px;-webkit-appearance:none;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.am-form select.am-square,.am-form textarea.am-square,.am-form input[type=text].am-square,.am-form input[type=password].am-square,.am-form input[type=datetime].am-square,.am-form input[type=datetime-local].am-square,.am-form input[type=date].am-square,.am-form input[type=month].am-square,.am-form input[type=time].am-square,.am-form input[type=week].am-square,.am-form input[type=number].am-square,.am-form input[type=email].am-square,.am-form input[type=url].am-square,.am-form input[type=search].am-square,.am-form input[type=tel].am-square,.am-form input[type=color].am-square,.am-form-field.am-square{border-radius:0}.am-form select:focus,.am-form textarea:focus,.am-form input[type=text]:focus,.am-form input[type=password]:focus,.am-form input[type=datetime]:focus,.am-form input[type=datetime-local]:focus,.am-form input[type=date]:focus,.am-form input[type=month]:focus,.am-form input[type=time]:focus,.am-form input[type=week]:focus,.am-form input[type=number]:focus,.am-form input[type=email]:focus,.am-form input[type=url]:focus,.am-form input[type=search]:focus,.am-form input[type=tel]:focus,.am-form input[type=color]:focus,.am-form-field:focus{outline:0}.am-form select:focus,.am-form textarea:focus,.am-form input[type=text]:focus,.am-form input[type=password]:focus,.am-form input[type=datetime]:focus,.am-form input[type=datetime-local]:focus,.am-form input[type=date]:focus,.am-form input[type=month]:focus,.am-form input[type=time]:focus,.am-form input[type=week]:focus,.am-form input[type=number]:focus,.am-form input[type=email]:focus,.am-form input[type=url]:focus,.am-form input[type=search]:focus,.am-form input[type=tel]:focus,.am-form input[type=color]:focus,.am-form-field:focus{background-color:#fefffe;border-color:#3bb4f2;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px rgba(59,180,242,.3);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px rgba(59,180,242,.3)}.am-form select::-webkit-input-placeholder,.am-form textarea::-webkit-input-placeholder,.am-form input[type=text]::-webkit-input-placeholder,.am-form input[type=password]::-webkit-input-placeholder,.am-form input[type=datetime]::-webkit-input-placeholder,.am-form input[type=datetime-local]::-webkit-input-placeholder,.am-form input[type=date]::-webkit-input-placeholder,.am-form input[type=month]::-webkit-input-placeholder,.am-form input[type=time]::-webkit-input-placeholder,.am-form input[type=week]::-webkit-input-placeholder,.am-form input[type=number]::-webkit-input-placeholder,.am-form input[type=email]::-webkit-input-placeholder,.am-form input[type=url]::-webkit-input-placeholder,.am-form input[type=search]::-webkit-input-placeholder,.am-form input[type=tel]::-webkit-input-placeholder,.am-form input[type=color]::-webkit-input-placeholder,.am-form-field::-webkit-input-placeholder{color:#999}.am-form select::-moz-placeholder,.am-form textarea::-moz-placeholder,.am-form input[type=text]::-moz-placeholder,.am-form input[type=password]::-moz-placeholder,.am-form input[type=datetime]::-moz-placeholder,.am-form input[type=datetime-local]::-moz-placeholder,.am-form input[type=date]::-moz-placeholder,.am-form input[type=month]::-moz-placeholder,.am-form input[type=time]::-moz-placeholder,.am-form input[type=week]::-moz-placeholder,.am-form input[type=number]::-moz-placeholder,.am-form input[type=email]::-moz-placeholder,.am-form input[type=url]::-moz-placeholder,.am-form input[type=search]::-moz-placeholder,.am-form input[type=tel]::-moz-placeholder,.am-form input[type=color]::-moz-placeholder,.am-form-field::-moz-placeholder{color:#999}.am-form select:-ms-input-placeholder,.am-form textarea:-ms-input-placeholder,.am-form input[type=text]:-ms-input-placeholder,.am-form input[type=password]:-ms-input-placeholder,.am-form input[type=datetime]:-ms-input-placeholder,.am-form input[type=datetime-local]:-ms-input-placeholder,.am-form input[type=date]:-ms-input-placeholder,.am-form input[type=month]:-ms-input-placeholder,.am-form input[type=time]:-ms-input-placeholder,.am-form input[type=week]:-ms-input-placeholder,.am-form input[type=number]:-ms-input-placeholder,.am-form input[type=email]:-ms-input-placeholder,.am-form input[type=url]:-ms-input-placeholder,.am-form input[type=search]:-ms-input-placeholder,.am-form input[type=tel]:-ms-input-placeholder,.am-form input[type=color]:-ms-input-placeholder,.am-form-field:-ms-input-placeholder{color:#999}.am-form select::placeholder,.am-form textarea::placeholder,.am-form input[type=text]::placeholder,.am-form input[type=password]::placeholder,.am-form input[type=datetime]::placeholder,.am-form input[type=datetime-local]::placeholder,.am-form input[type=date]::placeholder,.am-form input[type=month]::placeholder,.am-form input[type=time]::placeholder,.am-form input[type=week]::placeholder,.am-form input[type=number]::placeholder,.am-form input[type=email]::placeholder,.am-form input[type=url]::placeholder,.am-form input[type=search]::placeholder,.am-form input[type=tel]::placeholder,.am-form input[type=color]::placeholder,.am-form-field::placeholder{color:#999}.am-form select::-moz-placeholder,.am-form textarea::-moz-placeholder,.am-form input[type=text]::-moz-placeholder,.am-form input[type=password]::-moz-placeholder,.am-form input[type=datetime]::-moz-placeholder,.am-form input[type=datetime-local]::-moz-placeholder,.am-form input[type=date]::-moz-placeholder,.am-form input[type=month]::-moz-placeholder,.am-form input[type=time]::-moz-placeholder,.am-form input[type=week]::-moz-placeholder,.am-form input[type=number]::-moz-placeholder,.am-form input[type=email]::-moz-placeholder,.am-form input[type=url]::-moz-placeholder,.am-form input[type=search]::-moz-placeholder,.am-form input[type=tel]::-moz-placeholder,.am-form input[type=color]::-moz-placeholder,.am-form-field::-moz-placeholder{opacity:1}.am-form select[disabled],.am-form textarea[disabled],.am-form input[type=text][disabled],.am-form input[type=password][disabled],.am-form input[type=datetime][disabled],.am-form input[type=datetime-local][disabled],.am-form input[type=date][disabled],.am-form input[type=month][disabled],.am-form input[type=time][disabled],.am-form input[type=week][disabled],.am-form input[type=number][disabled],.am-form input[type=email][disabled],.am-form input[type=url][disabled],.am-form input[type=search][disabled],.am-form input[type=tel][disabled],.am-form input[type=color][disabled],.am-form-field[disabled],.am-form select[readonly],.am-form textarea[readonly],.am-form input[type=text][readonly],.am-form input[type=password][readonly],.am-form input[type=datetime][readonly],.am-form input[type=datetime-local][readonly],.am-form input[type=date][readonly],.am-form input[type=month][readonly],.am-form input[type=time][readonly],.am-form input[type=week][readonly],.am-form input[type=number][readonly],.am-form input[type=email][readonly],.am-form input[type=url][readonly],.am-form input[type=search][readonly],.am-form input[type=tel][readonly],.am-form input[type=color][readonly],.am-form-field[readonly],fieldset[disabled] .am-form select,fieldset[disabled] .am-form textarea,fieldset[disabled] .am-form input[type=text],fieldset[disabled] .am-form input[type=password],fieldset[disabled] .am-form input[type=datetime],fieldset[disabled] .am-form input[type=datetime-local],fieldset[disabled] .am-form input[type=date],fieldset[disabled] .am-form input[type=month],fieldset[disabled] .am-form input[type=time],fieldset[disabled] .am-form input[type=week],fieldset[disabled] .am-form input[type=number],fieldset[disabled] .am-form input[type=email],fieldset[disabled] .am-form input[type=url],fieldset[disabled] .am-form input[type=search],fieldset[disabled] .am-form input[type=tel],fieldset[disabled] .am-form input[type=color],fieldset[disabled] .am-form-field{cursor:not-allowed;background-color:#eee}.am-form select.am-radius,.am-form textarea.am-radius,.am-form input[type=text].am-radius,.am-form input[type=password].am-radius,.am-form input[type=datetime].am-radius,.am-form input[type=datetime-local].am-radius,.am-form input[type=date].am-radius,.am-form input[type=month].am-radius,.am-form input[type=time].am-radius,.am-form input[type=week].am-radius,.am-form input[type=number].am-radius,.am-form input[type=email].am-radius,.am-form input[type=url].am-radius,.am-form input[type=search].am-radius,.am-form input[type=tel].am-radius,.am-form input[type=color].am-radius,.am-form-field.am-radius{border-radius:2px}.am-form select.am-round,.am-form textarea.am-round,.am-form input[type=text].am-round,.am-form input[type=password].am-round,.am-form input[type=datetime].am-round,.am-form input[type=datetime-local].am-round,.am-form input[type=date].am-round,.am-form input[type=month].am-round,.am-form input[type=time].am-round,.am-form input[type=week].am-round,.am-form input[type=number].am-round,.am-form input[type=email].am-round,.am-form input[type=url].am-round,.am-form input[type=search].am-round,.am-form input[type=tel].am-round,.am-form input[type=color].am-round,.am-form-field.am-round{border-radius:1000px}.am-form textarea,.am-form select[multiple],.am-form select[size]{height:auto}.am-form select{-webkit-appearance:none!important;-webkit-border-radius:2px;background:#fff url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+) no-repeat 100% center}.am-form select[multiple=multiple]{background-image:none}.am-form-help{display:block;margin-top:5px;margin-bottom:10px;color:#999;font-size:1.3rem}.am-form-group{margin-bottom:1.5rem}.am-radio,.am-checkbox{display:block;min-height:1.92rem;margin-top:10px;margin-bottom:10px;padding-left:20px;vertical-align:middle}.am-radio label,.am-checkbox label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.am-radio input[type=radio],.am-radio-inline input[type=radio],.am-checkbox input[type=checkbox],.am-checkbox-inline input[type=checkbox]{float:left;margin-left:-20px;outline:0}.am-radio+.am-radio,.am-checkbox+.am-checkbox{margin-top:-5px}.am-radio-inline,.am-checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.am-radio-inline+.am-radio-inline,.am-checkbox-inline+.am-checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.am-radio[disabled],.am-radio-inline[disabled],.am-checkbox[disabled],.am-checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .am-radio,fieldset[disabled] .am-radio-inline,fieldset[disabled] .am-checkbox,fieldset[disabled] .am-checkbox-inline{cursor:not-allowed}.am-form-warning .am-form-help,.am-form-warning .am-form-label,.am-form-warning .am-radio,.am-form-warning .am-checkbox,.am-form-warning .am-radio-inline,.am-form-warning .am-checkbox-inline,.am-form-warning label{color:#f37b1d}.am-form-warning [class*=icon-]{color:#f37b1d}.am-form-warning .am-form-field{border-color:#f37b1d!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.am-form-warning .am-form-field:focus{background-color:#fefffe;border-color:#d2620b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #f8b47e!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #f8b47e!important}.am-form-error .am-form-help,.am-form-error .am-form-label,.am-form-error .am-radio,.am-form-error .am-checkbox,.am-form-error .am-radio-inline,.am-form-error .am-checkbox-inline,.am-form-error label{color:#dd514c}.am-form-error [class*=icon-]{color:#dd514c}.am-form-error .am-form-field,.am-field-error{border-color:#dd514c!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.am-form-error .am-form-field:focus,.am-field-error:focus{background-color:#fefffe;border-color:#cf2d27;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #eda4a2!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #eda4a2!important}.am-form-success .am-form-help,.am-form-success .am-form-label,.am-form-success .am-radio,.am-form-success .am-checkbox,.am-form-success .am-radio-inline,.am-form-success .am-checkbox-inline,.am-form-success label{color:#5eb95e}.am-form-success [class*=icon-]{color:#5eb95e}.am-form-success .am-form-field,.am-field-valid{border-color:#5eb95e!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.am-form-success .am-form-field:focus,.am-field-valid:focus{background-color:#fefffe;border-color:#459f45;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #a5d8a5!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #a5d8a5!important}.am-form-horizontal .am-form-label,.am-form-horizontal .am-radio,.am-form-horizontal .am-checkbox,.am-form-horizontal .am-radio-inline,.am-form-horizontal .am-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:.6em}.am-form-horizontal .am-form-group:before,.am-form-horizontal .am-form-group:after{content:" ";display:table}.am-form-horizontal .am-form-group:after{clear:both}@media only screen and (min-width:641px){.am-form-horizontal .am-form-label{text-align:right}}@media only screen and (min-width:641px){.am-form-inline .am-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.am-form-inline .am-form-field{display:inline-block;width:auto;vertical-align:middle}.am-form-inline .am-input-group{display:inline-table;vertical-align:middle}.am-form-inline .am-input-group .am-input-group-addon,.am-form-inline .am-input-group .am-input-group-btn,.am-form-inline .am-input-group .am-form-control{width:auto}.am-form-inline .am-input-group>.am-form-field{width:100%}.am-form-inline .am-form-label{margin-bottom:0;vertical-align:middle}.am-form-inline .am-radio,.am-form-inline .am-checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.am-form-inline .am-radio input[type=radio],.am-form-inline .am-checkbox input[type=checkbox]{float:none;margin-left:0}.am-form-inline .am-form-feedback .am-form-field-feedback{top:0}}.am-input-sm{font-size:1.4rem!important}.am-input-lg{font-size:1.8rem!important}.am-form-icon{position:relative}.am-form-icon .am-form-field{padding-left:1.875em!important}.am-form-icon [class*=am-icon-]{position:absolute;left:.625em;top:50%;display:block;margin-top:-.635em;line-height:1;z-index:2}.am-form-feedback{position:relative}.am-form-feedback .am-form-field{padding-left:.625em!important;padding-right:1.875em!important}.am-form-feedback [class*=am-icon-]{right:.625em;left:auto}.am-form-set{margin-bottom:1.5rem;padding:0}.am-form-set>input{position:relative;top:-1px;border-radius:0!important}.am-form-set>input:focus{z-index:2}.am-form-set>input:first-child{top:1px;border-top-right-radius:2px!important;border-top-left-radius:2px!important}.am-form-set>input:last-child{top:-2px;border-bottom-right-radius:2px!important;border-bottom-left-radius:2px!important}.am-img-thumbnail{display:inline-block;padding:2px;line-height:1.6;background-color:#fff;border:1px solid #ddd;border-radius:2px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.am-img-thumbnail.am-radius{border-radius:2px}.am-img-responsive{display:block}.am-nav{margin-bottom:0;padding:0;list-style:none}.am-nav:before,.am-nav:after{content:" ";display:table}.am-nav:after{clear:both}.am-nav>li{position:relative;display:block}.am-nav>li+li{margin-top:5px}.am-nav>li+.am-nav-header{margin-top:1em}.am-nav>li>a{position:relative;display:block;padding:.4em 1em;border-radius:2px}.am-nav>li>a:hover,.am-nav>li>a:focus{text-decoration:none;background-color:#eee}.am-nav>li.am-active>a,.am-nav>li.am-active>a:hover,.am-nav>li.am-active>a:focus{color:#fff;background-color:#0e90d2;cursor:default}.am-nav>li.am-disabled>a{color:#999}.am-nav>li.am-disabled>a:hover,.am-nav>li.am-disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.am-nav-header{padding:.4em 1em;text-transform:uppercase;font-weight:700;font-size:100%;color:#555}.am-nav-divider{margin:15px 1em!important;border-top:1px solid #ddd;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.am-nav-pills>li{float:left}.am-nav-pills>li+li{margin-left:5px;margin-top:0}.am-nav-tabs{border-bottom:1px solid #ddd}.am-nav-tabs>li{float:left;margin-bottom:-1px}.am-nav-tabs>li+li{margin-top:0}.am-nav-tabs>li>a{margin-right:5px;line-height:1.6;border:1px solid transparent;border-radius:2px 2px 0 0}.am-nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.am-nav-tabs>li.am-active>a,.am-nav-tabs>li.am-active>a:hover,.am-nav-tabs>li.am-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.am-nav-tabs.am-nav-justify{border-bottom:0}.am-nav-tabs.am-nav-justify>li>a{margin-right:0;border-bottom:1px solid #ddd;border-radius:2px 2px 0 0}.am-nav-tabs.am-nav-justify>.am-active>a,.am-nav-tabs.am-nav-justify>.am-active>a:hover,.am-nav-tabs.am-nav-justify>.am-active>a:focus{border-bottom-color:#fff}.am-nav-justify{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-nav-justify>li{float:none;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-nav-justify>li>a{text-align:center;margin-bottom:0}.lte9 .am-nav-justify>li{display:table-cell;width:1%}.am-topbar{position:relative;min-height:50px;margin-bottom:1.6rem;background:#f8f8f8;border-width:0 0 1px;border-style:solid;border-color:#ddd;color:#666}.am-topbar:before,.am-topbar:after{content:" ";display:table}.am-topbar:after{clear:both}.am-topbar a{color:#666}.am-topbar-brand{margin:0}@media only screen and (min-width:641px){.am-topbar-brand{float:left}}.am-topbar-brand a:hover{color:#4d4d4d}.am-topbar-collapse{width:100%;overflow-x:visible;padding:10px;clear:both;-webkit-overflow-scrolling:touch}.am-topbar-collapse:before,.am-topbar-collapse:after{content:" ";display:table}.am-topbar-collapse:after{clear:both}.am-topbar-collapse.am-in{overflow-y:auto}@media only screen and (min-width:641px){.am-topbar-collapse{margin-top:0;padding:0;width:auto;clear:none}.am-topbar-collapse.am-collapse{display:block!important;height:auto!important;padding:0;overflow:visible!important}.am-topbar-collapse.am-in{overflow-y:visible}}.am-topbar-brand{padding:0 10px;float:left;font-size:1.8rem;height:50px;line-height:50px}.am-topbar-toggle{position:relative;float:right;margin-right:10px}@media only screen and (min-width:641px){.am-topbar-toggle{display:none}}@media only screen and (max-width:640px){.am-topbar-nav{margin-bottom:8px}.am-topbar-nav>li{float:none}}@media only screen and (max-width:640px){.am-topbar-nav>li+li{margin-left:0;margin-top:5px}}@media only screen and (min-width:641px){.am-topbar-nav{float:left}.am-topbar-nav>li>a{position:relative;line-height:50px;padding:0 10px}.am-topbar-nav>li>a:after{position:absolute;left:50%;margin-left:-7px;bottom:-1px;content:"";display:inline-block;width:0;height:0;vertical-align:middle;border-bottom:7px solid #f8f8f8;border-right:7px solid transparent;border-left:7px solid transparent;border-top:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);opacity:0;-webkit-transition:opacity .1s;transition:opacity .1s}.am-topbar-nav>li>a:hover:after{opacity:1;border-bottom-color:#666}.am-topbar-nav>li.am-dropdown>a:after{display:none}.am-topbar-nav>li.am-active>a,.am-topbar-nav>li.am-active>a:hover,.am-topbar-nav>li.am-active>a:focus{border-radius:0;color:#0e90d2;background:0 0}.am-topbar-nav>li.am-active>a:after{opacity:1;border-bottom-color:#0e90d2}}@media only screen and (max-width:640px){.am-topbar-collapse .am-dropdown.am-active .am-dropdown-content{float:none;position:relative;width:100%}}@media only screen and (min-width:641px){.am-topbar-left{float:left}.am-topbar-right{float:right;margin-right:10px}}@media only screen and (max-width:640px){.am-topbar-form .am-form-group{margin-bottom:5px}}@media only screen and (min-width:641px){.am-topbar-form{padding:0 10px;margin-top:8px}.am-topbar-form .am-form-group+.am-btn{margin-left:5px}}.am-topbar-btn{margin-top:8px}@media only screen and (max-width:640px){.am-topbar-collapse .am-topbar-btn,.am-topbar-collapse .am-btn{display:block;width:100%}}.am-topbar-inverse{background-color:#0e90d2;border-color:#0b6fa2;color:#eee}.am-topbar-inverse a{color:#eee}.am-topbar-inverse .am-topbar-brand a{color:#fff}.am-topbar-inverse .am-topbar-brand a:hover,.am-topbar-inverse .am-topbar-brand a:focus{color:#fff;background-color:transparent}.am-topbar-inverse .am-topbar-nav>li>a{color:#eee}.am-topbar-inverse .am-topbar-nav>li>a:hover,.am-topbar-inverse .am-topbar-nav>li>a:focus{color:#fff;background-color:rgba(0,0,0,.05)}.am-topbar-inverse .am-topbar-nav>li>a:hover:after,.am-topbar-inverse .am-topbar-nav>li>a:focus:after{border-bottom-color:#0b6fa2}.am-topbar-inverse .am-topbar-nav>li>a:after{border-bottom-color:#0e90d2}.am-topbar-inverse .am-topbar-nav>li.am-active>a,.am-topbar-inverse .am-topbar-nav>li.am-active>a:hover,.am-topbar-inverse .am-topbar-nav>li.am-active>a:focus{color:#fff;background-color:rgba(0,0,0,.1)}.am-topbar-inverse .am-topbar-nav>li.am-active>a:after,.am-topbar-inverse .am-topbar-nav>li.am-active>a:hover:after,.am-topbar-inverse .am-topbar-nav>li.am-active>a:focus:after{border-bottom-color:#fff}.am-topbar-inverse .am-topbar-nav>li .disabled>a,.am-topbar-inverse .am-topbar-nav>li .disabled>a:hover,.am-topbar-inverse .am-topbar-nav>li .disabled>a:focus{color:#444;background-color:transparent}.am-topbar-fixed-top,.am-topbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1000;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.am-topbar-fixed-top{top:0}.am-topbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.am-with-topbar-fixed-top{padding-top:51px}.am-with-topbar-fixed-bottom{padding-bottom:51px}@media only screen and (max-width:640px){.am-topbar-fixed-bottom .am-topbar-collapse{position:absolute;bottom:100%;margin-bottom:1px;background-color:#f8f8f8}.am-topbar-fixed-bottom .am-topbar-collapse .am-dropdown-content:before,.am-topbar-fixed-bottom .am-topbar-collapse .am-dropdown-content:after{display:none}.am-topbar-fixed-bottom.am-topbar-inverse .am-topbar-collapse{background-color:#0e90d2}}.am-breadcrumb{padding:.7em .5em;margin-bottom:2rem;list-style:none;background-color:transparent;border-radius:2px;font-size:85%}.am-breadcrumb>li{display:inline-block}.am-breadcrumb>li [class*=am-icon-]:before{color:#999;margin-right:5px}.am-breadcrumb>li+li:before{content:"»\00a0";padding:0 8px;color:#ccc}.am-breadcrumb>.am-active{color:#999}.am-breadcrumb-slash>li+li:before{content:"/\00a0"}.am-pagination{padding-left:0;margin:1.5rem 0;list-style:none;color:#999;text-align:left}.am-pagination:before,.am-pagination:after{content:" ";display:table}.am-pagination:after{clear:both}.am-pagination>li{display:inline-block}.am-pagination>li>a,.am-pagination>li>span{position:relative;display:block;padding:.5em 1em;text-decoration:none;line-height:1.2;background-color:#fff;border:1px solid #ddd;border-radius:2px;margin-bottom:5px;margin-right:5px}.am-pagination>li:last-child>a,.am-pagination>li:last-child>span{margin-right:0}.am-pagination>li>a:hover,.am-pagination>li>span:hover,.am-pagination>li>a:focus,.am-pagination>li>span:focus{background-color:#eee}.am-pagination>.am-active>a,.am-pagination>.am-active>span,.am-pagination>.am-active>a:hover,.am-pagination>.am-active>span:hover,.am-pagination>.am-active>a:focus,.am-pagination>.am-active>span:focus{z-index:2;color:#fff;background-color:#0e90d2;border-color:#0e90d2;cursor:default}.am-pagination>.am-disabled>span,.am-pagination>.am-disabled>span:hover,.am-pagination>.am-disabled>span:focus,.am-pagination>.am-disabled>a,.am-pagination>.am-disabled>a:hover,.am-pagination>.am-disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed;pointer-events:none}.am-pagination .am-pagination-prev{float:left}.am-pagination .am-pagination-prev a{border-radius:2px}.am-pagination .am-pagination-next{float:right}.am-pagination .am-pagination-next a{border-radius:2px}.am-pagination-centered{text-align:center}.am-pagination-right{text-align:right}[class*=am-animation-]{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}@media screen{.cssanimations [data-am-scrollspy*=animation]{opacity:0}}.am-animation-fade{-webkit-animation-name:am-fade;animation-name:am-fade;-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-timing-function:linear;animation-timing-function:linear}.am-animation-scale-up{-webkit-animation-name:am-scale-up;animation-name:am-scale-up}.am-animation-scale-down{-webkit-animation-name:am-scale-down;animation-name:am-scale-down}.am-animation-slide-top{-webkit-animation-name:am-slide-top;animation-name:am-slide-top}.am-animation-slide-bottom{-webkit-animation-name:am-slide-bottom;animation-name:am-slide-bottom}.am-animation-slide-left{-webkit-animation-name:am-slide-left;animation-name:am-slide-left}.am-animation-slide-right{-webkit-animation-name:am-slide-right;animation-name:am-slide-right}.am-animation-slide-top-fixed{-webkit-animation-name:am-slide-top-fixed;animation-name:am-slide-top-fixed}.am-animation-shake{-webkit-animation-name:am-shake;animation-name:am-shake}.am-animation-spin{-webkit-animation:am-spin 2s infinite linear;animation:am-spin 2s infinite linear}.am-animation-left-spring{-webkit-animation:am-left-spring .3s ease-in-out;animation:am-left-spring .3s ease-in-out}.am-animation-right-spring{-webkit-animation:am-right-spring .3s ease-in-out;animation:am-right-spring .3s ease-in-out}.am-animation-reverse{-webkit-animation-direction:reverse;animation-direction:reverse}.am-animation-paused{-webkit-animation-play-state:paused!important;animation-play-state:paused!important}@-webkit-keyframes am-fade{0%{opacity:0}100%{opacity:1}}@keyframes am-fade{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes am-scale-up{0%{opacity:0;-webkit-transform:scale(0.2);transform:scale(0.2)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes am-scale-up{0%{opacity:0;-webkit-transform:scale(0.2);transform:scale(0.2)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes am-scale-down{0%{opacity:0;-webkit-transform:scale(1.8);transform:scale(1.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes am-scale-down{0%{opacity:0;-webkit-transform:scale(1.8);transform:scale(1.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes am-slide-top{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes am-slide-top{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes am-slide-bottom{0%{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes am-slide-bottom{0%{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes am-slide-left{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes am-slide-left{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes am-slide-right{0%{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes am-slide-right{0%{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes am-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%{-webkit-transform:translateX(-9px);transform:translateX(-9px)}20%{-webkit-transform:translateX(8px);transform:translateX(8px)}30%{-webkit-transform:translateX(-7px);transform:translateX(-7px)}40%{-webkit-transform:translateX(6px);transform:translateX(6px)}50%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}60%{-webkit-transform:translateX(4px);transform:translateX(4px)}70%{-webkit-transform:translateX(-3px);transform:translateX(-3px)}80%{-webkit-transform:translateX(2px);transform:translateX(2px)}90%{-webkit-transform:translateX(-1px);transform:translateX(-1px)}}@keyframes am-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%{-webkit-transform:translateX(-9px);transform:translateX(-9px)}20%{-webkit-transform:translateX(8px);transform:translateX(8px)}30%{-webkit-transform:translateX(-7px);transform:translateX(-7px)}40%{-webkit-transform:translateX(6px);transform:translateX(6px)}50%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}60%{-webkit-transform:translateX(4px);transform:translateX(4px)}70%{-webkit-transform:translateX(-3px);transform:translateX(-3px)}80%{-webkit-transform:translateX(2px);transform:translateX(2px)}90%{-webkit-transform:translateX(-1px);transform:translateX(-1px)}}@-webkit-keyframes am-slide-top-fixed{0%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes am-slide-top-fixed{0%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes am-slide-bottom-fixed{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes am-slide-bottom-fixed{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes am-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes am-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes am-right-spring{0%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(-20%);transform:translateX(-20%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes am-right-spring{0%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(-20%);transform:translateX(-20%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes am-left-spring{0%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(20%);transform:translateX(20%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes am-left-spring{0%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(20%);transform:translateX(20%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.am-article:before,.am-article:after{content:" ";display:table}.am-article:after{clear:both}.am-article>:last-child{margin-bottom:0}.am-article+.am-article{margin-top:2.4rem}.am-article-title{font-size:2.8rem;line-height:1.15;font-weight:400}.am-article-title a{color:inherit;text-decoration:none}.am-article-meta{font-size:1.2rem;line-height:1.5;color:#999}.am-article-lead{color:#666;font-size:1.4rem;line-height:1.5;border:1px solid #dedede;border-radius:2px;background:#f9f9f9;padding:10px}.am-article-divider{margin-bottom:2.4rem;border-color:#eee}*+.am-article-divider{margin-top:2.4rem}.am-article-bd blockquote{font-family:Georgia,"Times New Roman",Times,Kai,"Kaiti SC",KaiTi,BiauKai,FontAwesome,serif}.am-badge{display:inline-block;min-width:10px;padding:.25em .625em;font-size:1.2rem;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:0}.am-badge:empty{display:none}.am-badge.am-square{border-radius:0}.am-badge.am-radius{border-radius:2px}.am-badge.am-round{border-radius:1000px}a.am-badge:hover,a.am-badge:focus{color:#fff;text-decoration:none;cursor:pointer}.am-badge-primary{background-color:#0e90d2}.am-badge-secondary{background-color:#3bb4f2}.am-badge-success{background-color:#5eb95e}.am-badge-warning{background-color:#f37b1d}.am-badge-danger{background-color:#dd514c}.am-comment:before,.am-comment:after{content:" ";display:table}.am-comment:after{clear:both}.am-comment-avatar{float:left;width:32px;height:32px;border-radius:50%;border:1px solid transparent}@media only screen and (min-width:641px){.am-comment-avatar{width:48px;height:48px}}.am-comment-main{position:relative;margin-left:42px;border:1px solid #dedede;border-radius:2px}.am-comment-main:before,.am-comment-main:after{position:absolute;top:10px;left:-8px;right:100%;width:0;height:0;display:block;content:" ";border-color:transparent;border-style:solid solid outset;border-width:8px 8px 8px 0;pointer-events:none}.am-comment-main:before{border-right-color:#dedede;z-index:1}.am-comment-main:after{border-right-color:#f8f8f8;margin-left:1px;z-index:2}@media only screen and (min-width:641px){.am-comment-main{margin-left:63px}}.am-comment-hd{background:#f8f8f8;border-bottom:1px solid #eee;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-comment-title{margin:0 0 8px 0;font-size:1.6rem;line-height:1.2}.am-comment-meta{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding:10px 15px;font-size:13px;color:#999;line-height:1.2;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.am-comment-meta a{color:#999}.am-comment-author{font-weight:700;color:#999}.am-comment-bd{padding:15px;overflow:hidden}.am-comment-bd>:last-child{margin-bottom:0}.am-comment-footer{padding:0 15px 5px}.am-comment-footer .am-comment-actions a+a{margin-left:5px}.am-comment-actions{font-size:13px;color:#999}.am-comment-actions a{display:inline-block;padding:10px 5px;line-height:1;color:#999;opacity:.7}.am-comment-actions a:hover{color:#0e90d2;opacity:1}.am-comment-hd .am-comment-actions{padding-right:.5rem}.am-comment-flip .am-comment-avatar{float:right}.am-comment-flip .am-comment-main{margin-left:auto;margin-right:42px}@media only screen and (min-width:641px){.am-comment-flip .am-comment-main{margin-right:63px}}.am-comment-flip .am-comment-main:before,.am-comment-flip .am-comment-main:after{left:auto;right:-8px;border-width:8px 0 8px 8px}.am-comment-flip .am-comment-main:before{border-left-color:#dedede}.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8;margin-right:1px;margin-left:auto}.am-comment-primary .am-comment-avatar{border-color:#0e90d2}.am-comment-primary .am-comment-main{border-color:#0e90d2}.am-comment-primary .am-comment-main:before{border-right-color:#0e90d2}.am-comment-primary.am-comment-flip .am-comment-main:before{border-left-color:#0e90d2;border-right-color:transparent}.am-comment-primary.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comment-secondary .am-comment-avatar,.am-comment-highlight .am-comment-avatar{border-color:#3bb4f2}.am-comment-secondary .am-comment-main,.am-comment-highlight .am-comment-main{border-color:#3bb4f2}.am-comment-secondary .am-comment-main:before,.am-comment-highlight .am-comment-main:before{border-right-color:#3bb4f2}.am-comment-secondary.am-comment-flip .am-comment-main:before,.am-comment-highlight.am-comment-flip .am-comment-main:before{border-left-color:#3bb4f2;border-right-color:transparent}.am-comment-secondary.am-comment-flip .am-comment-main:after,.am-comment-highlight.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comment-success .am-comment-avatar{border-color:#5eb95e}.am-comment-success .am-comment-main{border-color:#5eb95e}.am-comment-success .am-comment-main:before{border-right-color:#5eb95e}.am-comment-success.am-comment-flip .am-comment-main:before{border-left-color:#5eb95e;border-right-color:transparent}.am-comment-success.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comment-warning .am-comment-avatar{border-color:#f37b1d}.am-comment-warning .am-comment-main{border-color:#f37b1d}.am-comment-warning .am-comment-main:before{border-right-color:#f37b1d}.am-comment-warning.am-comment-flip .am-comment-main:before{border-left-color:#f37b1d;border-right-color:transparent}.am-comment-warning.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comment-danger .am-comment-avatar{border-color:#dd514c}.am-comment-danger .am-comment-main{border-color:#dd514c}.am-comment-danger .am-comment-main:before{border-right-color:#dd514c}.am-comment-danger.am-comment-flip .am-comment-main:before{border-left-color:#dd514c;border-right-color:transparent}.am-comment-danger.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comments-list{padding:0;list-style:none}.am-comments-list .am-comment{margin:1.6rem 0 0 0;list-style:none}@media only screen and (min-width:641px){.am-comments-list-flip .am-comment-main{margin-right:64px}.am-comments-list-flip .am-comment-flip .am-comment-main{margin-left:64px}}.am-btn-group,.am-btn-group-stacked{position:relative;display:inline-block;vertical-align:middle}.am-btn-group>.am-btn,.am-btn-group-stacked>.am-btn{position:relative;float:left}.am-btn-group>.am-btn:hover,.am-btn-group-stacked>.am-btn:hover,.am-btn-group>.am-btn:focus,.am-btn-group-stacked>.am-btn:focus,.am-btn-group>.am-btn:active,.am-btn-group-stacked>.am-btn:active,.am-btn-group>.am-btn.active,.am-btn-group-stacked>.am-btn.active{z-index:2}.am-btn-group>.am-btn:focus,.am-btn-group-stacked>.am-btn:focus{outline:0}.am-btn-group .am-btn+.am-btn,.am-btn-group .am-btn+.am-btn-group,.am-btn-group .am-btn-group+.am-btn,.am-btn-group .am-btn-group+.am-btn-group{margin-left:-1px}.am-btn-toolbar{margin-left:-5px}.am-btn-toolbar:before,.am-btn-toolbar:after{content:" ";display:table}.am-btn-toolbar:after{clear:both}.am-btn-toolbar .am-btn-group,.am-btn-toolbar .am-input-group{float:left}.am-btn-toolbar>.am-btn,.am-btn-toolbar>.am-btn-group,.am-btn-toolbar>.am-input-group{margin-left:5px}.am-btn-group>.am-btn:not(:first-child):not(:last-child):not(.am-dropdown-toggle){border-radius:0}.am-btn-group>.am-btn:first-child{margin-left:0}.am-btn-group>.am-btn:first-child:not(:last-child):not(.am-dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.am-btn-group>.am-btn:last-child:not(:first-child),.am-btn-group>.am-dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.am-btn-group>.am-btn-group{float:left}.am-btn-group>.am-btn-group:not(:first-child):not(:last-child)>.am-btn{border-radius:0}.am-btn-group>.am-btn-group:first-child>.am-btn:last-child,.am-btn-group>.am-btn-group:first-child>.am-dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.am-btn-group>.am-btn-group:last-child>.am-btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.am-btn-group-xs>.am-btn{font-size:1.2rem}.am-btn-group-sm>.am-btn{font-size:1.4rem}.am-btn-group-lg>.am-btn{font-size:1.8rem}.am-btn-group-stacked>.am-btn,.am-btn-group-stacked>.am-btn-group,.am-btn-group-stacked>.am-btn-group>.am-btn{display:block;float:none;width:100%;max-width:100%}.am-btn-group-stacked>.am-btn-group:before,.am-btn-group-stacked>.am-btn-group:after{content:" ";display:table}.am-btn-group-stacked>.am-btn-group:after{clear:both}.am-btn-group-stacked>.am-btn-group>.am-btn{float:none}.am-btn-group-stacked>.am-btn+.am-btn,.am-btn-group-stacked>.am-btn+.am-btn-group,.am-btn-group-stacked>.am-btn-group+.am-btn,.am-btn-group-stacked>.am-btn-group+.am-btn-group{margin-top:-1px;margin-left:0}.am-btn-group-stacked>.am-btn:not(:first-child):not(:last-child){border-radius:0}.am-btn-group-stacked>.am-btn:first-child:not(:last-child){border-top-right-radius:2px;border-bottom-right-radius:0;border-bottom-left-radius:0}.am-btn-group-stacked>.am-btn:last-child:not(:first-child){border-bottom-left-radius:2px;border-top-right-radius:0;border-top-left-radius:0}.am-btn-group-stacked>.am-btn-group:not(:first-child):not(:last-child)>.am-btn{border-radius:0}.am-btn-group-stacked>.am-btn-group:first-child:not(:last-child)>.am-btn:last-child,.am-btn-group-stacked>.am-btn-group:first-child:not(:last-child)>.am-dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.am-btn-group-stacked>.am-btn-group:last-child:not(:first-child)>.am-btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.am-btn-group-justify{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-btn-group-justify>.am-btn,.am-btn-group-justify>.am-btn-group{float:none;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-btn-group-justify>.am-btn-group .am-btn{width:100%}.lte9 .am-btn-group-justify{display:table;table-layout:fixed;border-collapse:separate}.lte9 .am-btn-group-justify>.am-btn,.lte9 .am-btn-group-justify>.am-btn-group{float:none;display:table-cell;width:1%}.am-btn-group .am-dropdown{float:left;margin-left:-1px}.am-btn-group .am-dropdown>.am-btn{border-bottom-left-radius:0;border-top-left-radius:0}.am-btn-group .am-active .am-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.am-btn-group .am-active .am-dropdown-toggle.am-btn-link{-webkit-box-shadow:none;box-shadow:none}.am-btn-group .am-dropdown-toggle:active,.am-btn-group .am-active .am-dropdown-toggle{outline:0}[data-am-button]>.am-btn>input[type=radio],[data-am-button]>.am-btn>input[type=checkbox]{position:absolute;z-index:-1;opacity:0}.am-close{display:inline-block;text-align:center;width:24px;font-size:20px;font-weight:700;line-height:24px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;-webkit-transition:all .3s;transition:all .3s}.am-close:hover,.am-close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;outline:0}.am-close[class*=am-icon-]{font-size:16px}button.am-close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}a.am-close:hover{color:inherit;text-decoration:none;cursor:pointer}.am-close-alt{border-radius:50%;background:#eee;opacity:.7;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.25);box-shadow:0 0 0 1px rgba(0,0,0,.25)}.am-close-alt:hover,.am-close-alt:focus{opacity:1}.am-close-spin:hover{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.2.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff?v=4.2.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.2.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}[class*=am-icon-]{display:inline-block}[class*=am-icon-]:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.am-icon-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}[class*=am-icon-].am-fl{margin-right:.3em}[class*=am-icon-].am-fr{margin-left:.3em}.am-icon-sm:before{font-size:150%;vertical-align:-10%}.am-icon-md:before{font-size:200%;vertical-align:-16%}.am-icon-lg:before{font-size:250%;vertical-align:-22%}.am-icon-btn{-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;width:48px;height:48px;font-size:24px;line-height:48px;border-radius:50%;background-color:#eee;color:#555;text-align:center}.am-icon-btn:hover,.am-icon-btn:focus{background-color:#f5f5f5;color:#333;text-decoration:none;outline:0}.am-icon-btn:active{background-color:#ddd;color:#333}.am-icon-btn.am-primary,.am-icon-btn.am-secondary,.am-icon-btn.am-success,.am-icon-btn.am-warning,.am-icon-btn.am-danger{color:#fff}.am-icon-btn.am-primary{background-color:#0e90d2}.am-icon-btn.am-secondary{background-color:#3bb4f2}.am-icon-btn.am-success{background-color:#5eb95e}.am-icon-btn.am-warning{background-color:#f37b1d}.am-icon-btn.am-danger{background-color:#dd514c}.am-icon-btn-sm{width:32px;height:32px;font-size:16px;line-height:32px}.am-icon-btn-lg{width:64px;height:64px;font-size:28px;line-height:64px}.am-icon-glass:before{content:"\f000"}.am-icon-music:before{content:"\f001"}.am-icon-search:before{content:"\f002"}.am-icon-envelope-o:before{content:"\f003"}.am-icon-heart:before{content:"\f004"}.am-icon-star:before{content:"\f005"}.am-icon-star-o:before{content:"\f006"}.am-icon-user:before{content:"\f007"}.am-icon-film:before{content:"\f008"}.am-icon-th-large:before{content:"\f009"}.am-icon-th:before{content:"\f00a"}.am-icon-th-list:before{content:"\f00b"}.am-icon-check:before{content:"\f00c"}.am-icon-remove:before,.am-icon-close:before,.am-icon-times:before{content:"\f00d"}.am-icon-search-plus:before{content:"\f00e"}.am-icon-search-minus:before{content:"\f010"}.am-icon-power-off:before{content:"\f011"}.am-icon-signal:before{content:"\f012"}.am-icon-gear:before,.am-icon-cog:before{content:"\f013"}.am-icon-trash-o:before{content:"\f014"}.am-icon-home:before{content:"\f015"}.am-icon-file-o:before{content:"\f016"}.am-icon-clock-o:before{content:"\f017"}.am-icon-road:before{content:"\f018"}.am-icon-download:before{content:"\f019"}.am-icon-arrow-circle-o-down:before{content:"\f01a"}.am-icon-arrow-circle-o-up:before{content:"\f01b"}.am-icon-inbox:before{content:"\f01c"}.am-icon-play-circle-o:before{content:"\f01d"}.am-icon-rotate-right:before,.am-icon-repeat:before{content:"\f01e"}.am-icon-refresh:before{content:"\f021"}.am-icon-list-alt:before{content:"\f022"}.am-icon-lock:before{content:"\f023"}.am-icon-flag:before{content:"\f024"}.am-icon-headphones:before{content:"\f025"}.am-icon-volume-off:before{content:"\f026"}.am-icon-volume-down:before{content:"\f027"}.am-icon-volume-up:before{content:"\f028"}.am-icon-qrcode:before{content:"\f029"}.am-icon-barcode:before{content:"\f02a"}.am-icon-tag:before{content:"\f02b"}.am-icon-tags:before{content:"\f02c"}.am-icon-book:before{content:"\f02d"}.am-icon-bookmark:before{content:"\f02e"}.am-icon-print:before{content:"\f02f"}.am-icon-camera:before{content:"\f030"}.am-icon-font:before{content:"\f031"}.am-icon-bold:before{content:"\f032"}.am-icon-italic:before{content:"\f033"}.am-icon-text-height:before{content:"\f034"}.am-icon-text-width:before{content:"\f035"}.am-icon-align-left:before{content:"\f036"}.am-icon-align-center:before{content:"\f037"}.am-icon-align-right:before{content:"\f038"}.am-icon-align-justify:before{content:"\f039"}.am-icon-list:before{content:"\f03a"}.am-icon-dedent:before,.am-icon-outdent:before{content:"\f03b"}.am-icon-indent:before{content:"\f03c"}.am-icon-video-camera:before{content:"\f03d"}.am-icon-photo:before,.am-icon-image:before,.am-icon-picture-o:before{content:"\f03e"}.am-icon-pencil:before{content:"\f040"}.am-icon-map-marker:before{content:"\f041"}.am-icon-adjust:before{content:"\f042"}.am-icon-tint:before{content:"\f043"}.am-icon-edit:before,.am-icon-pencil-square-o:before{content:"\f044"}.am-icon-share-square-o:before{content:"\f045"}.am-icon-check-square-o:before{content:"\f046"}.am-icon-arrows:before{content:"\f047"}.am-icon-step-backward:before{content:"\f048"}.am-icon-fast-backward:before{content:"\f049"}.am-icon-backward:before{content:"\f04a"}.am-icon-play:before{content:"\f04b"}.am-icon-pause:before{content:"\f04c"}.am-icon-stop:before{content:"\f04d"}.am-icon-forward:before{content:"\f04e"}.am-icon-fast-forward:before{content:"\f050"}.am-icon-step-forward:before{content:"\f051"}.am-icon-eject:before{content:"\f052"}.am-icon-chevron-left:before{content:"\f053"}.am-icon-chevron-right:before{content:"\f054"}.am-icon-plus-circle:before{content:"\f055"}.am-icon-minus-circle:before{content:"\f056"}.am-icon-times-circle:before{content:"\f057"}.am-icon-check-circle:before{content:"\f058"}.am-icon-question-circle:before{content:"\f059"}.am-icon-info-circle:before{content:"\f05a"}.am-icon-crosshairs:before{content:"\f05b"}.am-icon-times-circle-o:before{content:"\f05c"}.am-icon-check-circle-o:before{content:"\f05d"}.am-icon-ban:before{content:"\f05e"}.am-icon-arrow-left:before{content:"\f060"}.am-icon-arrow-right:before{content:"\f061"}.am-icon-arrow-up:before{content:"\f062"}.am-icon-arrow-down:before{content:"\f063"}.am-icon-mail-forward:before,.am-icon-share:before{content:"\f064"}.am-icon-expand:before{content:"\f065"}.am-icon-compress:before{content:"\f066"}.am-icon-plus:before{content:"\f067"}.am-icon-minus:before{content:"\f068"}.am-icon-asterisk:before{content:"\f069"}.am-icon-exclamation-circle:before{content:"\f06a"}.am-icon-gift:before{content:"\f06b"}.am-icon-leaf:before{content:"\f06c"}.am-icon-fire:before{content:"\f06d"}.am-icon-eye:before{content:"\f06e"}.am-icon-eye-slash:before{content:"\f070"}.am-icon-warning:before,.am-icon-exclamation-triangle:before{content:"\f071"}.am-icon-plane:before{content:"\f072"}.am-icon-calendar:before{content:"\f073"}.am-icon-random:before{content:"\f074"}.am-icon-comment:before{content:"\f075"}.am-icon-magnet:before{content:"\f076"}.am-icon-chevron-up:before{content:"\f077"}.am-icon-chevron-down:before{content:"\f078"}.am-icon-retweet:before{content:"\f079"}.am-icon-shopping-cart:before{content:"\f07a"}.am-icon-folder:before{content:"\f07b"}.am-icon-folder-open:before{content:"\f07c"}.am-icon-arrows-v:before{content:"\f07d"}.am-icon-arrows-h:before{content:"\f07e"}.am-icon-bar-chart-o:before,.am-icon-bar-chart:before{content:"\f080"}.am-icon-twitter-square:before{content:"\f081"}.am-icon-facebook-square:before{content:"\f082"}.am-icon-camera-retro:before{content:"\f083"}.am-icon-key:before{content:"\f084"}.am-icon-gears:before,.am-icon-cogs:before{content:"\f085"}.am-icon-comments:before{content:"\f086"}.am-icon-thumbs-o-up:before{content:"\f087"}.am-icon-thumbs-o-down:before{content:"\f088"}.am-icon-star-half:before{content:"\f089"}.am-icon-heart-o:before{content:"\f08a"}.am-icon-sign-out:before{content:"\f08b"}.am-icon-linkedin-square:before{content:"\f08c"}.am-icon-thumb-tack:before{content:"\f08d"}.am-icon-external-link:before{content:"\f08e"}.am-icon-sign-in:before{content:"\f090"}.am-icon-trophy:before{content:"\f091"}.am-icon-github-square:before{content:"\f092"}.am-icon-upload:before{content:"\f093"}.am-icon-lemon-o:before{content:"\f094"}.am-icon-phone:before{content:"\f095"}.am-icon-square-o:before{content:"\f096"}.am-icon-bookmark-o:before{content:"\f097"}.am-icon-phone-square:before{content:"\f098"}.am-icon-twitter:before{content:"\f099"}.am-icon-facebook:before{content:"\f09a"}.am-icon-github:before{content:"\f09b"}.am-icon-unlock:before{content:"\f09c"}.am-icon-credit-card:before{content:"\f09d"}.am-icon-rss:before{content:"\f09e"}.am-icon-hdd-o:before{content:"\f0a0"}.am-icon-bullhorn:before{content:"\f0a1"}.am-icon-bell:before{content:"\f0f3"}.am-icon-certificate:before{content:"\f0a3"}.am-icon-hand-o-right:before{content:"\f0a4"}.am-icon-hand-o-left:before{content:"\f0a5"}.am-icon-hand-o-up:before{content:"\f0a6"}.am-icon-hand-o-down:before{content:"\f0a7"}.am-icon-arrow-circle-left:before{content:"\f0a8"}.am-icon-arrow-circle-right:before{content:"\f0a9"}.am-icon-arrow-circle-up:before{content:"\f0aa"}.am-icon-arrow-circle-down:before{content:"\f0ab"}.am-icon-globe:before{content:"\f0ac"}.am-icon-wrench:before{content:"\f0ad"}.am-icon-tasks:before{content:"\f0ae"}.am-icon-filter:before{content:"\f0b0"}.am-icon-briefcase:before{content:"\f0b1"}.am-icon-arrows-alt:before{content:"\f0b2"}.am-icon-group:before,.am-icon-users:before{content:"\f0c0"}.am-icon-chain:before,.am-icon-link:before{content:"\f0c1"}.am-icon-cloud:before{content:"\f0c2"}.am-icon-flask:before{content:"\f0c3"}.am-icon-cut:before,.am-icon-scissors:before{content:"\f0c4"}.am-icon-copy:before,.am-icon-files-o:before{content:"\f0c5"}.am-icon-paperclip:before{content:"\f0c6"}.am-icon-save:before,.am-icon-floppy-o:before{content:"\f0c7"}.am-icon-square:before{content:"\f0c8"}.am-icon-navicon:before,.am-icon-reorder:before,.am-icon-bars:before{content:"\f0c9"}.am-icon-list-ul:before{content:"\f0ca"}.am-icon-list-ol:before{content:"\f0cb"}.am-icon-strikethrough:before{content:"\f0cc"}.am-icon-underline:before{content:"\f0cd"}.am-icon-table:before{content:"\f0ce"}.am-icon-magic:before{content:"\f0d0"}.am-icon-truck:before{content:"\f0d1"}.am-icon-pinterest:before{content:"\f0d2"}.am-icon-pinterest-square:before{content:"\f0d3"}.am-icon-google-plus-square:before{content:"\f0d4"}.am-icon-google-plus:before{content:"\f0d5"}.am-icon-money:before{content:"\f0d6"}.am-icon-caret-down:before{content:"\f0d7"}.am-icon-caret-up:before{content:"\f0d8"}.am-icon-caret-left:before{content:"\f0d9"}.am-icon-caret-right:before{content:"\f0da"}.am-icon-columns:before{content:"\f0db"}.am-icon-unsorted:before,.am-icon-sort:before{content:"\f0dc"}.am-icon-sort-down:before,.am-icon-sort-desc:before{content:"\f0dd"}.am-icon-sort-up:before,.am-icon-sort-asc:before{content:"\f0de"}.am-icon-envelope:before{content:"\f0e0"}.am-icon-linkedin:before{content:"\f0e1"}.am-icon-rotate-left:before,.am-icon-undo:before{content:"\f0e2"}.am-icon-legal:before,.am-icon-gavel:before{content:"\f0e3"}.am-icon-dashboard:before,.am-icon-tachometer:before{content:"\f0e4"}.am-icon-comment-o:before{content:"\f0e5"}.am-icon-comments-o:before{content:"\f0e6"}.am-icon-flash:before,.am-icon-bolt:before{content:"\f0e7"}.am-icon-sitemap:before{content:"\f0e8"}.am-icon-umbrella:before{content:"\f0e9"}.am-icon-paste:before,.am-icon-clipboard:before{content:"\f0ea"}.am-icon-lightbulb-o:before{content:"\f0eb"}.am-icon-exchange:before{content:"\f0ec"}.am-icon-cloud-download:before{content:"\f0ed"}.am-icon-cloud-upload:before{content:"\f0ee"}.am-icon-user-md:before{content:"\f0f0"}.am-icon-stethoscope:before{content:"\f0f1"}.am-icon-suitcase:before{content:"\f0f2"}.am-icon-bell-o:before{content:"\f0a2"}.am-icon-coffee:before{content:"\f0f4"}.am-icon-cutlery:before{content:"\f0f5"}.am-icon-file-text-o:before{content:"\f0f6"}.am-icon-building-o:before{content:"\f0f7"}.am-icon-hospital-o:before{content:"\f0f8"}.am-icon-ambulance:before{content:"\f0f9"}.am-icon-medkit:before{content:"\f0fa"}.am-icon-fighter-jet:before{content:"\f0fb"}.am-icon-beer:before{content:"\f0fc"}.am-icon-h-square:before{content:"\f0fd"}.am-icon-plus-square:before{content:"\f0fe"}.am-icon-angle-double-left:before{content:"\f100"}.am-icon-angle-double-right:before{content:"\f101"}.am-icon-angle-double-up:before{content:"\f102"}.am-icon-angle-double-down:before{content:"\f103"}.am-icon-angle-left:before{content:"\f104"}.am-icon-angle-right:before{content:"\f105"}.am-icon-angle-up:before{content:"\f106"}.am-icon-angle-down:before{content:"\f107"}.am-icon-desktop:before{content:"\f108"}.am-icon-laptop:before{content:"\f109"}.am-icon-tablet:before{content:"\f10a"}.am-icon-mobile-phone:before,.am-icon-mobile:before{content:"\f10b"}.am-icon-circle-o:before{content:"\f10c"}.am-icon-quote-left:before{content:"\f10d"}.am-icon-quote-right:before{content:"\f10e"}.am-icon-spinner:before{content:"\f110"}.am-icon-circle:before{content:"\f111"}.am-icon-mail-reply:before,.am-icon-reply:before{content:"\f112"}.am-icon-github-alt:before{content:"\f113"}.am-icon-folder-o:before{content:"\f114"}.am-icon-folder-open-o:before{content:"\f115"}.am-icon-smile-o:before{content:"\f118"}.am-icon-frown-o:before{content:"\f119"}.am-icon-meh-o:before{content:"\f11a"}.am-icon-gamepad:before{content:"\f11b"}.am-icon-keyboard-o:before{content:"\f11c"}.am-icon-flag-o:before{content:"\f11d"}.am-icon-flag-checkered:before{content:"\f11e"}.am-icon-terminal:before{content:"\f120"}.am-icon-code:before{content:"\f121"}.am-icon-mail-reply-all:before,.am-icon-reply-all:before{content:"\f122"}.am-icon-star-half-empty:before,.am-icon-star-half-full:before,.am-icon-star-half-o:before{content:"\f123"}.am-icon-location-arrow:before{content:"\f124"}.am-icon-crop:before{content:"\f125"}.am-icon-code-fork:before{content:"\f126"}.am-icon-unlink:before,.am-icon-chain-broken:before{content:"\f127"}.am-icon-question:before{content:"\f128"}.am-icon-info:before{content:"\f129"}.am-icon-exclamation:before{content:"\f12a"}.am-icon-superscript:before{content:"\f12b"}.am-icon-subscript:before{content:"\f12c"}.am-icon-eraser:before{content:"\f12d"}.am-icon-puzzle-piece:before{content:"\f12e"}.am-icon-microphone:before{content:"\f130"}.am-icon-microphone-slash:before{content:"\f131"}.am-icon-shield:before{content:"\f132"}.am-icon-calendar-o:before{content:"\f133"}.am-icon-fire-extinguisher:before{content:"\f134"}.am-icon-rocket:before{content:"\f135"}.am-icon-maxcdn:before{content:"\f136"}.am-icon-chevron-circle-left:before{content:"\f137"}.am-icon-chevron-circle-right:before{content:"\f138"}.am-icon-chevron-circle-up:before{content:"\f139"}.am-icon-chevron-circle-down:before{content:"\f13a"}.am-icon-html5:before{content:"\f13b"}.am-icon-css3:before{content:"\f13c"}.am-icon-anchor:before{content:"\f13d"}.am-icon-unlock-alt:before{content:"\f13e"}.am-icon-bullseye:before{content:"\f140"}.am-icon-ellipsis-h:before{content:"\f141"}.am-icon-ellipsis-v:before{content:"\f142"}.am-icon-rss-square:before{content:"\f143"}.am-icon-play-circle:before{content:"\f144"}.am-icon-ticket:before{content:"\f145"}.am-icon-minus-square:before{content:"\f146"}.am-icon-minus-square-o:before{content:"\f147"}.am-icon-level-up:before{content:"\f148"}.am-icon-level-down:before{content:"\f149"}.am-icon-check-square:before{content:"\f14a"}.am-icon-pencil-square:before{content:"\f14b"}.am-icon-external-link-square:before{content:"\f14c"}.am-icon-share-square:before{content:"\f14d"}.am-icon-compass:before{content:"\f14e"}.am-icon-toggle-down:before,.am-icon-caret-square-o-down:before{content:"\f150"}.am-icon-toggle-up:before,.am-icon-caret-square-o-up:before{content:"\f151"}.am-icon-toggle-right:before,.am-icon-caret-square-o-right:before{content:"\f152"}.am-icon-euro:before,.am-icon-eur:before{content:"\f153"}.am-icon-gbp:before{content:"\f154"}.am-icon-dollar:before,.am-icon-usd:before{content:"\f155"}.am-icon-rupee:before,.am-icon-inr:before{content:"\f156"}.am-icon-cny:before,.am-icon-rmb:before,.am-icon-yen:before,.am-icon-jpy:before{content:"\f157"}.am-icon-ruble:before,.am-icon-rouble:before,.am-icon-rub:before{content:"\f158"}.am-icon-won:before,.am-icon-krw:before{content:"\f159"}.am-icon-bitcoin:before,.am-icon-btc:before{content:"\f15a"}.am-icon-file:before{content:"\f15b"}.am-icon-file-text:before{content:"\f15c"}.am-icon-sort-alpha-asc:before{content:"\f15d"}.am-icon-sort-alpha-desc:before{content:"\f15e"}.am-icon-sort-amount-asc:before{content:"\f160"}.am-icon-sort-amount-desc:before{content:"\f161"}.am-icon-sort-numeric-asc:before{content:"\f162"}.am-icon-sort-numeric-desc:before{content:"\f163"}.am-icon-thumbs-up:before{content:"\f164"}.am-icon-thumbs-down:before{content:"\f165"}.am-icon-youtube-square:before{content:"\f166"}.am-icon-youtube:before{content:"\f167"}.am-icon-xing:before{content:"\f168"}.am-icon-xing-square:before{content:"\f169"}.am-icon-youtube-play:before{content:"\f16a"}.am-icon-dropbox:before{content:"\f16b"}.am-icon-stack-overflow:before{content:"\f16c"}.am-icon-instagram:before{content:"\f16d"}.am-icon-flickr:before{content:"\f16e"}.am-icon-adn:before{content:"\f170"}.am-icon-bitbucket:before{content:"\f171"}.am-icon-bitbucket-square:before{content:"\f172"}.am-icon-tumblr:before{content:"\f173"}.am-icon-tumblr-square:before{content:"\f174"}.am-icon-long-arrow-down:before{content:"\f175"}.am-icon-long-arrow-up:before{content:"\f176"}.am-icon-long-arrow-left:before{content:"\f177"}.am-icon-long-arrow-right:before{content:"\f178"}.am-icon-apple:before{content:"\f179"}.am-icon-windows:before{content:"\f17a"}.am-icon-android:before{content:"\f17b"}.am-icon-linux:before{content:"\f17c"}.am-icon-dribbble:before{content:"\f17d"}.am-icon-skype:before{content:"\f17e"}.am-icon-foursquare:before{content:"\f180"}.am-icon-trello:before{content:"\f181"}.am-icon-female:before{content:"\f182"}.am-icon-male:before{content:"\f183"}.am-icon-gittip:before{content:"\f184"}.am-icon-sun-o:before{content:"\f185"}.am-icon-moon-o:before{content:"\f186"}.am-icon-archive:before{content:"\f187"}.am-icon-bug:before{content:"\f188"}.am-icon-vk:before{content:"\f189"}.am-icon-weibo:before{content:"\f18a"}.am-icon-renren:before{content:"\f18b"}.am-icon-pagelines:before{content:"\f18c"}.am-icon-stack-exchange:before{content:"\f18d"}.am-icon-arrow-circle-o-right:before{content:"\f18e"}.am-icon-arrow-circle-o-left:before{content:"\f190"}.am-icon-toggle-left:before,.am-icon-caret-square-o-left:before{content:"\f191"}.am-icon-dot-circle-o:before{content:"\f192"}.am-icon-wheelchair:before{content:"\f193"}.am-icon-vimeo-square:before{content:"\f194"}.am-icon-turkish-lira:before,.am-icon-try:before{content:"\f195"}.am-icon-plus-square-o:before{content:"\f196"}.am-icon-space-shuttle:before{content:"\f197"}.am-icon-slack:before{content:"\f198"}.am-icon-envelope-square:before{content:"\f199"}.am-icon-wordpress:before{content:"\f19a"}.am-icon-openid:before{content:"\f19b"}.am-icon-institution:before,.am-icon-bank:before,.am-icon-university:before{content:"\f19c"}.am-icon-mortar-board:before,.am-icon-graduation-cap:before{content:"\f19d"}.am-icon-yahoo:before{content:"\f19e"}.am-icon-google:before{content:"\f1a0"}.am-icon-reddit:before{content:"\f1a1"}.am-icon-reddit-square:before{content:"\f1a2"}.am-icon-stumbleupon-circle:before{content:"\f1a3"}.am-icon-stumbleupon:before{content:"\f1a4"}.am-icon-delicious:before{content:"\f1a5"}.am-icon-digg:before{content:"\f1a6"}.am-icon-pied-piper:before{content:"\f1a7"}.am-icon-pied-piper-alt:before{content:"\f1a8"}.am-icon-drupal:before{content:"\f1a9"}.am-icon-joomla:before{content:"\f1aa"}.am-icon-language:before{content:"\f1ab"}.am-icon-fax:before{content:"\f1ac"}.am-icon-building:before{content:"\f1ad"}.am-icon-child:before{content:"\f1ae"}.am-icon-paw:before{content:"\f1b0"}.am-icon-spoon:before{content:"\f1b1"}.am-icon-cube:before{content:"\f1b2"}.am-icon-cubes:before{content:"\f1b3"}.am-icon-behance:before{content:"\f1b4"}.am-icon-behance-square:before{content:"\f1b5"}.am-icon-steam:before{content:"\f1b6"}.am-icon-steam-square:before{content:"\f1b7"}.am-icon-recycle:before{content:"\f1b8"}.am-icon-automobile:before,.am-icon-car:before{content:"\f1b9"}.am-icon-cab:before,.am-icon-taxi:before{content:"\f1ba"}.am-icon-tree:before{content:"\f1bb"}.am-icon-spotify:before{content:"\f1bc"}.am-icon-deviantart:before{content:"\f1bd"}.am-icon-soundcloud:before{content:"\f1be"}.am-icon-database:before{content:"\f1c0"}.am-icon-file-pdf-o:before{content:"\f1c1"}.am-icon-file-word-o:before{content:"\f1c2"}.am-icon-file-excel-o:before{content:"\f1c3"}.am-icon-file-powerpoint-o:before{content:"\f1c4"}.am-icon-file-photo-o:before,.am-icon-file-picture-o:before,.am-icon-file-image-o:before{content:"\f1c5"}.am-icon-file-zip-o:before,.am-icon-file-archive-o:before{content:"\f1c6"}.am-icon-file-sound-o:before,.am-icon-file-audio-o:before{content:"\f1c7"}.am-icon-file-movie-o:before,.am-icon-file-video-o:before{content:"\f1c8"}.am-icon-file-code-o:before{content:"\f1c9"}.am-icon-vine:before{content:"\f1ca"}.am-icon-codepen:before{content:"\f1cb"}.am-icon-jsfiddle:before{content:"\f1cc"}.am-icon-life-bouy:before,.am-icon-life-buoy:before,.am-icon-life-saver:before,.am-icon-support:before,.am-icon-life-ring:before{content:"\f1cd"}.am-icon-circle-o-notch:before{content:"\f1ce"}.am-icon-ra:before,.am-icon-rebel:before{content:"\f1d0"}.am-icon-ge:before,.am-icon-empire:before{content:"\f1d1"}.am-icon-git-square:before{content:"\f1d2"}.am-icon-git:before{content:"\f1d3"}.am-icon-hacker-news:before{content:"\f1d4"}.am-icon-tencent-weibo:before{content:"\f1d5"}.am-icon-qq:before{content:"\f1d6"}.am-icon-wechat:before,.am-icon-weixin:before{content:"\f1d7"}.am-icon-send:before,.am-icon-paper-plane:before{content:"\f1d8"}.am-icon-send-o:before,.am-icon-paper-plane-o:before{content:"\f1d9"}.am-icon-history:before{content:"\f1da"}.am-icon-circle-thin:before{content:"\f1db"}.am-icon-header:before{content:"\f1dc"}.am-icon-paragraph:before{content:"\f1dd"}.am-icon-sliders:before{content:"\f1de"}.am-icon-share-alt:before{content:"\f1e0"}.am-icon-share-alt-square:before{content:"\f1e1"}.am-icon-bomb:before{content:"\f1e2"}.am-icon-soccer-ball-o:before,.am-icon-futbol-o:before{content:"\f1e3"}.am-icon-tty:before{content:"\f1e4"}.am-icon-binoculars:before{content:"\f1e5"}.am-icon-plug:before{content:"\f1e6"}.am-icon-slideshare:before{content:"\f1e7"}.am-icon-twitch:before{content:"\f1e8"}.am-icon-yelp:before{content:"\f1e9"}.am-icon-newspaper-o:before{content:"\f1ea"}.am-icon-wifi:before{content:"\f1eb"}.am-icon-calculator:before{content:"\f1ec"}.am-icon-paypal:before{content:"\f1ed"}.am-icon-google-wallet:before{content:"\f1ee"}.am-icon-cc-visa:before{content:"\f1f0"}.am-icon-cc-mastercard:before{content:"\f1f1"}.am-icon-cc-discover:before{content:"\f1f2"}.am-icon-cc-amex:before{content:"\f1f3"}.am-icon-cc-paypal:before{content:"\f1f4"}.am-icon-cc-stripe:before{content:"\f1f5"}.am-icon-bell-slash:before{content:"\f1f6"}.am-icon-bell-slash-o:before{content:"\f1f7"}.am-icon-trash:before{content:"\f1f8"}.am-icon-copyright:before{content:"\f1f9"}.am-icon-at:before{content:"\f1fa"}.am-icon-eyedropper:before{content:"\f1fb"}.am-icon-paint-brush:before{content:"\f1fc"}.am-icon-birthday-cake:before{content:"\f1fd"}.am-icon-area-chart:before{content:"\f1fe"}.am-icon-pie-chart:before{content:"\f200"}.am-icon-line-chart:before{content:"\f201"}.am-icon-lastfm:before{content:"\f202"}.am-icon-lastfm-square:before{content:"\f203"}.am-icon-toggle-off:before{content:"\f204"}.am-icon-toggle-on:before{content:"\f205"}.am-icon-bicycle:before{content:"\f206"}.am-icon-bus:before{content:"\f207"}.am-icon-ioxhost:before{content:"\f208"}.am-icon-angellist:before{content:"\f209"}.am-icon-cc:before{content:"\f20a"}.am-icon-shekel:before,.am-icon-sheqel:before,.am-icon-ils:before{content:"\f20b"}.am-icon-meanpath:before{content:"\f20c"}@-webkit-keyframes icon-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes icon-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.am-icon-spin{-webkit-animation:icon-spin 2s infinite linear;animation:icon-spin 2s infinite linear}.am-icon-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.am-icon-ul>li{position:relative}.am-icon-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.am-input-group{position:relative;display:table;border-collapse:separate}.am-input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.am-input-group .am-form-field{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.am-input-group-label,.am-input-group-btn,.am-input-group .am-form-field{display:table-cell}.am-input-group-label:not(:first-child):not(:last-child),.am-input-group-btn:not(:first-child):not(:last-child),.am-input-group .am-form-field:not(:first-child):not(:last-child){border-radius:0}.am-input-group-label,.am-input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.am-input-group-label{padding:.625em 1em;font-size:1.6rem;font-weight:400;line-height:1.2;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:2px}.am-input-group-label input[type=radio],.am-input-group-label input[type=checkbox]{margin-top:0}.am-input-group .am-form-field:first-child,.am-input-group-label:first-child,.am-input-group-btn:first-child>.am-btn,.am-input-group-btn:first-child>.am-btn-group>.am-btn,.am-input-group-btn:first-child>.am-dropdown-toggle,.am-input-group-btn:last-child>.am-btn:not(:last-child):not(.dropdown-toggle),.am-input-group-btn:last-child>.am-btn-group:not(:last-child)>.am-btn{border-bottom-right-radius:0;border-top-right-radius:0}.am-input-group-label:first-child{border-right:0}.am-input-group .am-form-field:last-child,.am-input-group-label:last-child,.am-input-group-btn:last-child>.am-btn,.am-input-group-btn:last-child>.am-btn-group>.am-btn,.am-input-group-btn:last-child>.am-dropdown-toggle,.am-input-group-btn:first-child>.am-btn:not(:first-child),.am-input-group-btn:first-child>.am-btn-group:not(:first-child)>.am-btn{border-bottom-left-radius:0;border-top-left-radius:0}.am-input-group-label:last-child{border-left:0}.am-input-group-btn{position:relative;font-size:0;white-space:nowrap}.am-input-group-btn>.am-btn{position:relative;border-color:#ccc}.am-input-group-btn>.am-btn+.am-btn{margin-left:-1px}.am-input-group-btn>.am-btn:hover,.am-input-group-btn>.am-btn:focus,.am-input-group-btn>.am-btn:active{z-index:2}.am-input-group-btn:first-child>.am-btn,.am-input-group-btn:first-child>.am-btn-group{margin-right:-2px}.am-input-group-btn:last-child>.am-btn,.am-input-group-btn:last-child>.am-btn-group{margin-left:-1px}.am-input-group-lg>.am-form-field,.am-input-group-lg>.am-input-group-label,.am-input-group-lg>.am-input-group-btn>.am-btn{padding:12px 18px!important;font-size:1.8rem!important}.am-input-group-sm>.am-form-field,.am-input-group-sm>.am-input-group-label,.am-input-group-sm>.am-input-group-btn>.am-btn{padding:9px 14px!important;font-size:1.4rem!important}.am-input-group-primary .am-input-group-label{background:#0e90d2;color:#fff}.am-input-group-primary .am-input-group-label,.am-input-group-primary .am-input-group-btn>.am-btn,.am-input-group-primary .am-form-field{border-color:#0e90d2}.am-input-group-secondary .am-input-group-label{background:#3bb4f2;color:#fff}.am-input-group-secondary .am-input-group-label,.am-input-group-secondary .am-input-group-btn>.am-btn,.am-input-group-secondary .am-form-field{border-color:#3bb4f2}.am-input-group-success .am-input-group-label{background:#5eb95e;color:#fff}.am-input-group-success .am-input-group-label,.am-input-group-success .am-input-group-btn>.am-btn,.am-input-group-success .am-form-field{border-color:#5eb95e}.am-input-group-warning .am-input-group-label{background:#f37b1d;color:#fff}.am-input-group-warning .am-input-group-label,.am-input-group-warning .am-input-group-btn>.am-btn,.am-input-group-warning .am-form-field{border-color:#f37b1d}.am-input-group-danger .am-input-group-label{background:#dd514c;color:#fff}.am-input-group-danger .am-input-group-label,.am-input-group-danger .am-input-group-btn>.am-btn,.am-input-group-danger .am-form-field{border-color:#dd514c}.am-list{margin-bottom:1.6rem;padding-left:0}.am-list>li{position:relative;display:block;margin-bottom:-1px;background-color:#fff;border:1px solid #dedede;border-width:1px 0}.am-list>li>a{display:block;padding:1rem 0}.am-list>li>a.am-active,.am-list>li>a.am-active:hover,.am-list>li>a.am-active:focus{z-index:2;color:#fff;background-color:#0e90d2;border-color:#0e90d2}.am-list>li>a.am-active .am-list-item-heading,.am-list>li>a.am-active:hover .am-list-item-heading,.am-list>li>a.am-active:focus .am-list-item-heading{color:inherit}.am-list>li>a.am-active .am-list-item-text,.am-list>li>a.am-active:hover .am-list-item-text,.am-list>li>a.am-active:focus .am-list-item-text{color:#b2e2fa}.am-list>li>.am-badge{float:right}.am-list>li>.am-badge+.am-badge{margin-right:5px}.am-list-static>li{padding:.8rem .2rem}.am-list-static.am-list-border>li{padding:1rem}.am-list-border>li{border-width:1px}.am-list-border>li:first-child,.am-list-border>li:first-child>a{border-top-right-radius:2px;border-top-left-radius:2px}.am-list-border>li:last-child,.am-list-border>li:last-child>a{margin-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.am-list-border>li>a{padding:1rem}.am-list-border>li>a:hover,.am-list-border>li>a:focus{background-color:#f5f5f5}.am-list-striped>li:nth-of-type(even){background:#f5f5f5}.am-list-item-hd{margin-top:0}.am-list-item-text{line-height:1.4;font-size:1.3rem;color:#999;margin:0}.am-panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:2px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.am-panel-hd{padding:.6rem 1.25rem;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px}.am-panel-bd{padding:1.25rem}.am-panel-title{margin:0;font-size:100%;color:inherit}.am-panel-title>a{color:inherit}.am-panel-footer{padding:.6rem 1.25rem;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.am-panel-default{border-color:#ddd}.am-panel-default>.am-panel-hd{color:#444;background-color:#f5f5f5;border-color:#ddd}.am-panel-default>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#ddd}.am-panel-default>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#ddd}.am-panel-primary{border-color:#10a0ea}.am-panel-primary>.am-panel-hd{color:#fff;background-color:#0e90d2;border-color:#10a0ea}.am-panel-primary>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#10a0ea}.am-panel-primary>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#10a0ea}.am-panel-secondary{border-color:#caebfb}.am-panel-secondary>.am-panel-hd{color:#14a6ef;background-color:rgba(59,180,242,.15);border-color:#caebfb}.am-panel-secondary>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#caebfb}.am-panel-secondary>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#caebfb}.am-panel-success{border-color:#c9e7c9}.am-panel-success>.am-panel-hd{color:#5eb95e;background-color:rgba(94,185,94,.15);border-color:#c9e7c9}.am-panel-success>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#c9e7c9}.am-panel-success>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#c9e7c9}.am-panel-warning{border-color:#fbd0ae}.am-panel-warning>.am-panel-hd{color:#f37b1d;background-color:rgba(243,123,29,.15);border-color:#fbd0ae}.am-panel-warning>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#fbd0ae}.am-panel-warning>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#fbd0ae}.am-panel-danger{border-color:#f5cecd}.am-panel-danger>.am-panel-hd{color:#dd514c;background-color:rgba(221,81,76,.15);border-color:#f5cecd}.am-panel-danger>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#f5cecd}.am-panel-danger>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#f5cecd}.am-panel>.am-table{margin-bottom:0}.am-panel>.am-table:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.am-panel>.am-table:first-child>thead:first-child>tr:first-child td:first-child,.am-panel>.am-table:first-child>tbody:first-child>tr:first-child td:first-child,.am-panel>.am-table:first-child>thead:first-child>tr:first-child th:first-child,.am-panel>.am-table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:2px}.am-panel>.am-table:first-child>thead:first-child>tr:first-child td:last-child,.am-panel>.am-table:first-child>tbody:first-child>tr:first-child td:last-child,.am-panel>.am-table:first-child>thead:first-child>tr:first-child th:last-child,.am-panel>.am-table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:2px}.am-panel>.am-table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.am-panel>.am-table:last-child>tbody:last-child>tr:last-child td:first-child,.am-panel>.am-table:last-child>tfoot:last-child>tr:last-child td:first-child,.am-panel>.am-table:last-child>tbody:last-child>tr:last-child th:first-child,.am-panel>.am-table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:2px}.am-panel>.am-table:last-child>tbody:last-child>tr:last-child td:last-child,.am-panel>.am-table:last-child>tfoot:last-child>tr:last-child td:last-child,.am-panel>.am-table:last-child>tbody:last-child>tr:last-child th:last-child,.am-panel>.am-table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:2px}.am-panel>.am-panel-bd+.am-table{border-top:1px solid #ddd}.am-panel>.am-table>tbody:first-child>tr:first-child th,.am-panel>.am-table>tbody:first-child>tr:first-child td{border-top:0}.am-panel>.am-table-bd{border:0}.am-panel>.am-table-bd>thead>tr>th:first-child,.am-panel>.am-table-bd>tbody>tr>th:first-child,.am-panel>.am-table-bd>tfoot>tr>th:first-child,.am-panel>.am-table-bd>thead>tr>td:first-child,.am-panel>.am-table-bd>tbody>tr>td:first-child,.am-panel>.am-table-bd>tfoot>tr>td:first-child{border-left:0}.am-panel>.am-table-bd>thead>tr>th:last-child,.am-panel>.am-table-bd>tbody>tr>th:last-child,.am-panel>.am-table-bd>tfoot>tr>th:last-child,.am-panel>.am-table-bd>thead>tr>td:last-child,.am-panel>.am-table-bd>tbody>tr>td:last-child,.am-panel>.am-table-bd>tfoot>tr>td:last-child{border-right:0}.am-panel>.am-table-bd>thead>tr:first-child>td,.am-panel>.am-table-bd>tbody>tr:first-child>td,.am-panel>.am-table-bd>thead>tr:first-child>th,.am-panel>.am-table-bd>tbody>tr:first-child>th{border-bottom:0}.am-panel>.am-table-bd>tbody>tr:last-child>td,.am-panel>.am-table-bd>tfoot>tr:last-child>td,.am-panel>.am-table-bd>tbody>tr:last-child>th,.am-panel>.am-table-bd>tfoot>tr:last-child>th{border-bottom:0}.am-panel>.am-list{margin:0}.am-panel>.am-list>li>a{padding-left:1rem;padding-right:1rem}.am-panel>.am-list-static li{padding-left:1rem;padding-right:1rem}.am-panel-group{margin-bottom:2rem}.am-panel-group .am-panel{margin-bottom:0;border-radius:2px}.am-panel-group .am-panel+.am-panel{margin-top:6px}.am-panel-group .am-panel-hd{border-bottom:0}.am-panel-group .am-panel-hd+.am-panel-collapse .am-panel-bd{border-top:1px solid #ddd}.am-panel-group .am-panel-footer{border-top:0}.am-panel-group .am-panel-footer+.am-panel-collapse .am-panel-bd{border-bottom:1px solid #ddd}@-webkit-keyframes progress-bar-stripes{from{background-position:36px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:36px 0}to{background-position:0 0}}.am-progress{overflow:hidden;height:2rem;margin-bottom:2rem;background-color:#f5f5f5;border-radius:2px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.am-progress-bar{float:left;width:0;height:100%;font-size:1.2rem;line-height:2rem;color:#fff;text-align:center;background-color:#0e90d2;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.am-progress-striped .am-progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:36px 36px;background-size:36px 36px}.am-progress.am-active .am-progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.am-progress-bar[aria-valuenow="1"],.am-progress-bar[aria-valuenow="2"]{min-width:30px}.am-progress-bar[aria-valuenow="0"]{color:#999;min-width:30px;background:0 0;-webkit-box-shadow:none;box-shadow:none}.am-progress-bar-secondary{background-color:#3bb4f2}.am-progress-striped .am-progress-bar-secondary{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.am-progress-bar-success{background-color:#5eb95e}.am-progress-striped .am-progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.am-progress-bar-warning{background-color:#f37b1d}.am-progress-striped .am-progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.am-progress-bar-danger{background-color:#dd514c}.am-progress-striped .am-progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.am-progress-xs{height:.6rem}.am-progress-sm{height:1.2rem}.am-thumbnail{display:block;padding:2px;margin-bottom:2rem;background-color:#fff;border:1px solid #ddd;border-radius:2px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.am-thumbnail>img,.am-thumbnail a>img{margin-left:auto;margin-right:auto;display:block}.am-thumbnail a.am-thumbnail:hover,.am-thumbnail a.am-thumbnail:focus,.am-thumbnail a.am-thumbnail.active{border-color:#0e90d2;background-color:#fff}.am-thumbnail-caption{margin:0;padding:.8rem;color:#333;font-weight:400}.am-thumbnail-caption :last-child{margin-bottom:0}.am-thumbnails{margin-left:-.5rem;margin-right:-.5rem}.am-thumbnails>li{padding:0 .5rem 1rem .5rem}.am-scrollable-horizontal{width:100%;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.am-scrollable-vertical{height:240px;overflow-y:scroll;-webkit-overflow-scrolling:touch;resize:vertical}.am-square{border-radius:0}.am-radius{border-radius:2px}.am-round{border-radius:1000px}.am-circle{border-radius:50%}.am-cf:before,.am-cf:after{content:" ";display:table}.am-cf:after{clear:both}.am-fl{float:left}.am-fr{float:right}.am-nbfc{overflow:hidden}.am-center{display:block;margin-left:auto;margin-right:auto}.am-block{display:block!important}.am-inline{display:inline!important}.am-inline-block{display:inline-block!important}.am-hide{display:none!important;visibility:hidden!important}.am-vertical-align{font-size:0}.am-vertical-align:before{content:'';display:inline-block;height:100%;vertical-align:middle}.am-vertical-align-middle,.am-vertical-align-bottom{display:inline-block;font-size:1.6rem;max-width:100%}.am-vertical-align-middle{vertical-align:middle}.am-vertical-align-bottom{vertical-align:bottom}.am-responsive-width{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:100%;height:auto}.am-margin{margin:1.6rem}.am-margin-xs{margin:.5rem}.am-margin-sm{margin:1rem}.am-margin-lg{margin:2.4rem}.am-margin-xl{margin:3.2rem}.am-margin-horizontal{margin-left:1.6rem;margin-right:1.6rem}.am-margin-horizontal-xs{margin-left:.5rem;margin-right:.5rem}.am-margin-horizontal-sm{margin-left:1rem;margin-right:1rem}.am-margin-horizontal-lg{margin-left:2.4rem;margin-right:2.4rem}.am-margin-horizontal-xl{margin-left:3.2rem;margin-right:3.2rem}.am-margin-vertical{margin-top:1.6rem;margin-bottom:1.6rem}.am-margin-vertical-xs{margin-top:.5rem;margin-bottom:.5rem}.am-margin-vertical-sm{margin-top:1rem;margin-bottom:1rem}.am-margin-vertical-lg{margin-top:2.4rem;margin-bottom:2.4rem}.am-margin-vertical-xl{margin-top:3.2rem;margin-bottom:3.2rem}.am-margin-top{margin-top:1.6rem}.am-margin-top-xs{margin-top:.5rem}.am-margin-top-sm{margin-top:1rem}.am-margin-top-lg{margin-top:2.4rem}.am-margin-top-xl{margin-top:3.2rem}.am-margin-bottom{margin-bottom:1.6rem}.am-margin-bottom-xs{margin-bottom:.5rem}.am-margin-bottom-sm{margin-bottom:1rem}.am-margin-bottom-lg{margin-bottom:2.4rem}.am-margin-bottom-xl{margin-bottom:3.2rem}.am-margin-left{margin-left:1.6rem}.am-margin-left-xs{margin-left:.5rem}.am-margin-left-sm{margin-left:1rem}.am-margin-left-lg{margin-left:2.4rem}.am-margin-left-xl{margin-left:3.2rem}.am-margin-right{margin-right:1.6rem}.am-margin-right-xs{margin-right:.5rem}.am-margin-right-sm{margin-right:1rem}.am-margin-right-lg{margin-right:2.4rem}.am-margin-right-xl{margin-right:3.2rem}.am-padding{padding:1.6rem}.am-padding-xs{padding:.5rem}.am-padding-sm{padding:1rem}.am-padding-lg{padding:2.4rem}.am-padding-xl{padding:3.2rem}.am-padding-horizontal{padding-left:1.6rem;padding-right:1.6rem}.am-padding-horizontal-xs{padding-left:.5rem;padding-right:.5rem}.am-padding-horizontal-sm{padding-left:1rem;padding-right:1rem}.am-padding-horizontal-lg{padding-left:2.4rem;padding-right:2.4rem}.am-padding-horizontal-xl{padding-left:3.2rem;padding-right:3.2rem}.am-padding-vertical{padding-top:1.6rem;padding-bottom:1.6rem}.am-padding-vertical-xs{padding-top:.5rem;padding-bottom:.5rem}.am-padding-vertical-sm{padding-top:1rem;padding-bottom:1rem}.am-padding-vertical-lg{padding-top:2.4rem;padding-bottom:2.4rem}.am-padding-vertical-xl{padding-top:3.2rem;padding-bottom:3.2rem}.am-padding-top{padding-top:1.6rem}.am-padding-top-xs{padding-top:.5rem}.am-padding-top-sm{padding-top:1rem}.am-padding-top-lg{padding-top:2.4rem}.am-padding-top-xl{padding-top:3.2rem}.am-padding-bottom{padding-bottom:1.6rem}.am-padding-bottom-xs{padding-bottom:.5rem}.am-padding-bottom-sm{padding-bottom:1rem}.am-padding-bottom-lg{padding-bottom:2.4rem}.am-padding-bottom-xl{padding-bottom:3.2rem}.am-padding-left{padding-left:1.6rem}.am-padding-left-xs{padding-left:.5rem}.am-padding-left-sm{padding-left:1rem}.am-padding-left-lg{padding-left:2.4rem}.am-padding-left-xl{padding-left:3.2rem}.am-padding-right{padding-right:1.6rem}.am-padding-right-xs{padding-right:.5rem}.am-padding-right-sm{padding-right:1rem}.am-padding-right-lg{padding-right:2.4rem}.am-padding-right-xl{padding-right:3.2rem}@media only screen{.am-show-sm-only,.am-show-sm-up,.am-show-sm,.am-show-sm-down,.am-hide-md-only,.am-hide-md-up,.am-hide-md,.am-show-md-down,.am-hide-lg-only,.am-hide-lg-up,.am-hide-lg,.am-show-lg-down{display:inherit!important}.am-hide-sm-only,.am-hide-sm-up,.am-hide-sm,.am-hide-sm-down,.am-show-md-only,.am-show-md-up,.am-show-md,.am-hide-md-down,.am-show-lg-only,.am-show-lg-up,.am-show-lg,.am-hide-lg-down{display:none!important}}@media only screen and (min-width:641px){.am-hide-sm-only,.am-show-sm-up,.am-hide-sm,.am-hide-sm-down,.am-show-md-only,.am-show-md-up,.am-show-md,.am-show-md-down,.am-hide-lg-only,.am-hide-lg-up,.am-hide-lg,.am-show-lg-down{display:inherit!important}.am-show-sm-only,.am-hide-sm-up,.am-show-sm,.am-show-sm-down,.am-hide-md-only,.am-hide-md-up,.am-hide-md,.am-hide-md-down,.am-show-lg-only,.am-show-lg-up,.am-show-lg,.am-hide-lg-down{display:none!important}}@media only screen and (min-width:1025px){.am-hide-sm-only,.am-show-sm-up,.am-hide-sm,.am-hide-sm-down,.am-hide-md-only,.am-show-md-up,.am-hide-md,.am-hide-md-down,.am-show-lg-only,.am-show-lg-up,.am-show-lg,.am-show-lg-down{display:inherit!important}.am-show-sm-only,.am-hide-sm-up,.am-show-sm,.am-show-sm-down,.am-show-md-only,.am-hide-md-up,.am-show-md,.am-show-md-down,.am-hide-lg-only,.am-hide-lg-up,.am-hide-lg,.am-hide-lg-down{display:none!important}}@media only screen and (orientation:landscape){.am-show-landscape,.am-hide-portrait{display:inherit!important}.am-hide-landscape,.am-show-portrait{display:none!important}}@media only screen and (orientation:portrait){.am-show-portrait,.am-hide-landscape{display:inherit!important}.am-hide-portrait,.am-show-landscape{display:none!important}}.am-sans-serif{font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3",FontAwesome,sans-serif}.am-serif{font-family:Georgia,"Times New Roman",Times,SimSun,FontAwesome,serif}.am-kai{font-family:Georgia,"Times New Roman",Times,Kai,"Kaiti SC",KaiTi,BiauKai,FontAwesome,serif}.am-monospace{font-family:Monaco,Menlo,Consolas,"Courier New",FontAwesome,monospace}.am-text-primary{color:#0e90d2}.am-text-secondary{color:#3bb4f2}.am-text-success{color:#5eb95e}.am-text-warning{color:#f37b1d}.am-text-danger{color:#dd514c}.am-link-muted{color:#666}.am-link-muted a{color:#666}.am-link-muted:hover,.am-link-muted a:hover{color:#555}.am-text-default{font-size:1.6rem}.am-text-xs{font-size:1.2rem}.am-text-sm{font-size:1.4rem}.am-text-lg{font-size:1.8rem}.am-text-xl{font-size:2.4rem}.am-text-xxl{font-size:3.2rem}.am-text-xxxl{font-size:4.2rem}.am-ellipsis,.am-text-truncate{word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-text-break{word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;-moz-hyphens:auto;hyphens:auto}.am-text-nowrap{white-space:nowrap}[class*=am-align-]{margin-bottom:1rem}.am-align-left{margin-right:1rem;float:left}.am-align-right{margin-left:1rem;float:right}.am-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.am-text-ir{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@media only screen{.am-text-left{text-align:left!important}.am-text-right{text-align:right!important}.am-text-center{text-align:center!important}.am-text-justify{text-align:justify!important}}@media only screen and (max-width:640px){.am-sm-only-text-left{text-align:left!important}.am-sm-only-text-right{text-align:right!important}.am-sm-only-text-center{text-align:center!important}.am-sm-only-text-justify{text-align:justify!important}}@media only screen and (min-width:641px) and (max-width:1024px){.am-md-only-text-left{text-align:left!important}.am-md-only-text-right{text-align:right!important}.am-md-only-text-center{text-align:center!important}.am-md-only-text-justify{text-align:justify!important}}@media only screen and (min-width:641px){.am-md-text-left{text-align:left!important}.am-md-text-right{text-align:right!important}.am-md-text-center{text-align:center!important}.am-md-text-justify{text-align:justify!important}}@media only screen and (min-width:1025px){.am-lg-text-left{text-align:left!important}.am-lg-text-right{text-align:right!important}.am-lg-text-center{text-align:center!important}.am-lg-text-justify{text-align:justify!important}}.am-text-top{vertical-align:top!important}.am-text-middle{vertical-align:middle!important}.am-text-bottom{vertical-align:bottom!important}.am-angle{position:absolute}.am-angle:before,.am-angle:after{position:absolute;display:block;content:"";width:0;height:0;border:8px dashed transparent;z-index:1}.am-angle-up{top:0}.am-angle-up:before,.am-angle-up:after{border-bottom-style:solid;border-width:0 8px 8px}.am-angle-up:before{border-bottom-color:#ddd;bottom:0}.am-angle-up:after{border-bottom-color:#fff;bottom:-1px}.am-angle-down{bottom:-9px}.am-angle-down:before,.am-angle-down:after{border-top-style:solid;border-width:8px 8px 0}.am-angle-down:before{border-top-color:#ddd;bottom:0}.am-angle-down:after{border-top-color:#fff;bottom:1px}.am-angle-left{left:-9px}.am-angle-left:before,.am-angle-left:after{border-right-style:solid;border-width:8px 8px 8px 0}.am-angle-left:before{border-right-color:#ddd;left:0}.am-angle-left:after{border-right-color:#fff;left:1px}.am-angle-right{right:0}.am-angle-right:before,.am-angle-right:after{border-left-style:solid;border-width:8px 0 8px 8px}.am-angle-right:before{border-left-color:#ddd;left:0}.am-angle-right:after{border-left-color:#fff;left:-1px}.am-alert{margin-bottom:15px;padding:10px;background:#0e90d2;color:#fff;border:1px solid #0c7cb5;border-radius:2px}.am-alert a{color:#fff}.am-alert h1,.am-alert h2,.am-alert h3,.am-alert h4,.am-alert h5,.am-alert h6{color:inherit}.am-alert .am-close{opacity:.4}.am-alert .am-close:hover{opacity:.6}*+.am-alert{margin-top:15px}.am-alert>:last-child{margin-bottom:0}.am-alert>.am-close:first-child{float:right;height:auto;margin:-3px -5px auto auto}.am-alert>.am-close:first-child+*{margin-top:0}.am-alert-secondary{background-color:#eee;border-color:#dfdfdf;color:#555}.am-alert-success{background-color:#5eb95e;border-color:#4bad4b;color:#fff}.am-alert-warning{background-color:#f37b1d;border-color:#e56c0c;color:#fff}.am-alert-danger{background-color:#dd514c;border-color:#d83832;color:#fff}.am-dropdown{position:relative;display:inline-block}.am-dropdown-toggle:focus{outline:0}.am-dropdown-content{position:absolute;top:100%;left:0;z-index:1020;display:none;float:left;min-width:160px;padding:15px;margin:9px 0 0;text-align:left;line-height:1.6;background-color:#fff;border:1px solid #ddd;border-radius:2px;-webkit-background-clip:padding-box;background-clip:padding-box;-webkit-animation-duration:.15s;animation-duration:.15s}.am-dropdown-content:before,.am-dropdown-content:after{position:absolute;display:block;content:"";width:0;height:0;border:8px dashed transparent;z-index:1}.am-dropdown-content:before,.am-dropdown-content:after{border-bottom-style:solid;border-width:0 8px 8px}.am-dropdown-content:before{border-bottom-color:#ddd;bottom:0}.am-dropdown-content:after{border-bottom-color:#fff;bottom:-1px}.am-dropdown-content:before,.am-dropdown-content:after{left:10px;top:-8px;pointer-events:none}.am-dropdown-content:after{top:-7px}.am-active>.am-dropdown-content{display:block}.am-dropdown-content :first-child{margin-top:0}.am-dropdown-up .am-dropdown-content{top:auto;bottom:100%;margin:0 0 9px}.am-dropdown-up .am-dropdown-content:before,.am-dropdown-up .am-dropdown-content:after{border-bottom:none;border-top:8px solid #ddd;top:auto;bottom:-8px}.am-dropdown-up .am-dropdown-content:after{bottom:-7px;border-top-color:#fff}.am-dropdown-flip .am-dropdown-content{left:auto;right:0}.am-dropdown-flip .am-dropdown-content:before,.am-dropdown-flip .am-dropdown-content:after{left:auto;right:10px}ul.am-dropdown-content{list-style:none;padding:5px 0}ul.am-dropdown-content.am-fr{right:0;left:auto}ul.am-dropdown-content .am-divider{height:1px;margin:0 0;overflow:hidden;background-color:#e5e5e5}ul.am-dropdown-content>li>a{display:block;padding:6px 20px;clear:both;font-weight:400;color:#333;white-space:nowrap}ul.am-dropdown-content>li>a:hover,ul.am-dropdown-content>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}ul.am-dropdown-content>.am-active>a,ul.am-dropdown-content>.am-active>a:hover,ul.am-dropdown-content>.am-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#0e90d2}ul.am-dropdown-content>.am-disabled>a,ul.am-dropdown-content>.am-disabled>a:hover,ul.am-dropdown-content>.am-disabled>a:focus{color:#999}ul.am-dropdown-content>.am-disabled>a:hover,ul.am-dropdown-content>.am-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.am-dropdown-header{display:block;padding:6px 20px;font-size:1.2rem;color:#999}.am-fr>.am-dropdown-content{right:0;left:auto}.am-fr>.am-dropdown-content:before{right:10px;left:auto}.am-dropdown-animation{-webkit-animation:am-dropdown-animation .15s ease-out;animation:am-dropdown-animation .15s ease-out}@-webkit-keyframes am-dropdown-animation{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}}@keyframes am-dropdown-animation{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}}.am-slider a:hover,.am-slider a:focus{outline:0}.am-slides,.am-control-nav,.am-direction-nav{margin:0;padding:0;list-style:none}.am-slider{margin:0;padding:0}.am-slider .am-slides:before,.am-slider .am-slides:after{content:" ";display:table}.am-slider .am-slides:after{clear:both}.am-slider .am-slides>li{display:none;-webkit-backface-visibility:hidden;position:relative}.no-js .am-slider .am-slides>li:first-child{display:block}.am-slider .am-slides img{width:100%;display:block}.am-pauseplay span{text-transform:capitalize}.am-slider{position:relative}.am-viewport{-webkit-transition:all 1s ease;transition:all 1s ease}.am-slider-carousel li{margin-right:5px}.am-control-nav{position:absolute}.am-control-nav li{display:inline-block}.am-control-thumbs{position:static;overflow:hidden}.am-control-thumbs img{-webkit-transition:opacity .1s;transition:opacity .1s}.am-slider-default{margin:0 0 20px;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 0 2px rgba(0,0,0,.15);box-shadow:0 0 2px rgba(0,0,0,.15)}.am-slider-default .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-default .am-viewport{max-height:300px}.am-slider-default .carousel li{margin-right:5px}.am-slider-default .am-direction-nav a{position:absolute;top:50%;z-index:10;display:block;width:36px;height:24px;margin:-12px 0 0;overflow:hidden;opacity:.45;cursor:pointer;color:rgba(0,0,0,.65);-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-default .am-direction-nav a:before{color:#333;display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f137";font-size:24px}.am-slider-default .am-direction-nav a.am-next:before{content:"\f138"}.am-slider-default .am-direction-nav .am-prev{left:10px}.am-slider-default .am-direction-nav .am-next{right:10px;text-align:right}.am-slider-default .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-default:hover .am-prev{opacity:.7;left:10px}.am-slider-default:hover .am-prev:hover{opacity:1}.am-slider-default:hover .am-next{opacity:.7;right:10px}.am-slider-default:hover .am-next:hover{opacity:1}.am-slider-default .am-pauseplay a{display:block;width:20px;height:20px;position:absolute;bottom:5px;left:10px;opacity:.8;z-index:10;overflow:hidden;cursor:pointer;color:#000}.am-slider-default .am-pauseplay a::before{font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:20px;display:inline-block;content:"\f04c"}.am-slider-default .am-pauseplay a:hover{opacity:1}.am-slider-default .am-pauseplay a.am-play::before{content:"\f04b"}.am-slider-default .am-slider-desc{background-color:rgba(0,0,0,.7);position:absolute;bottom:0;padding:10px;width:100%;color:#fff}.am-slider-default .am-control-nav{width:100%;position:absolute;bottom:-15px;text-align:center}.am-slider-default .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-default .am-control-nav li a{width:8px;height:8px;display:block;background-color:#666;background-color:rgba(0,0,0,.5);line-height:0;font-size:0;cursor:pointer;text-indent:-9999px;border-radius:20px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-default .am-control-nav li a:hover{background-color:#333;background-color:rgba(0,0,0,.7)}.am-slider-default .am-control-nav li a.am-active{background-color:#000;background-color:#0e90d2;cursor:default}.am-slider-default .am-control-thumbs{margin:5px 0 0;position:static;overflow:hidden}.am-slider-default .am-control-thumbs li{width:25%;float:left;margin:0}.am-slider-default .am-control-thumbs img{width:100%;display:block;opacity:.7;cursor:pointer}.am-slider-default .am-control-thumbs img:hover{opacity:1}.am-slider-default .am-control-thumbs .am-active{opacity:1;cursor:default}.am-modal{width:270px;position:fixed;display:none;z-index:1110;left:50%;margin-left:-135px;margin-top:0;top:50%;text-align:center;border-radius:2px;opacity:0;-webkit-transform:translate3d(0,0,0) scale(1.185);transform:translate3d(0,0,0) scale(1.185);-webkit-transition-property:-webkit-transform,opacity;transition-property:transform,opacity}.am-modal:focus{outline:0}.am-modal.am-modal-active{opacity:1;-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-transform:translate3d(0,0,0) scale(1);transform:translate3d(0,0,0) scale(1)}.am-modal.am-modal-out{opacity:0;z-index:1109;-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-transform:translate3d(0,0,0) scale(0.815);transform:translate3d(0,0,0) scale(0.815)}@media only screen and (min-width:641px){.am-modal{width:540px;margin-left:-270px}}.am-modal-dialog{border-radius:2px;background:#f8f8f8}.am-modal-hd{padding:15px 10px 5px 10px;font-size:1.8rem;font-weight:500}.am-modal-hd+.am-modal-bd{padding-top:0}.am-modal-hd .am-close{position:absolute;top:4px;right:4px}.am-modal-bd{padding:15px 10px;text-align:center;border-bottom:1px solid #dedede;border-radius:2px 2px 0 0}.am-modal-bd+.am-modal-bd{margin-top:5px}.am-modal-prompt-input{display:block;margin:5px auto 0 auto;border-radius:2px;padding:5px;line-height:1.8rem;width:80%;border:1px solid #dedede;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none}.am-modal-prompt-input:focus{outline:0;border-color:#d6d6d6}.am-modal-footer{height:44px;overflow:hidden;display:table;width:100%;border-collapse:collapse}.am-modal-btn{display:table-cell!important;padding:0 5px;height:44px;-webkit-box-sizing:border-box!important;box-sizing:border-box!important;font-size:1.6rem;line-height:44px;text-align:center;color:#0e90d2;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;cursor:pointer;border-right:1px solid #dedede}.am-modal-btn:first-child{border-radius:0 0 0 2px}.am-modal-btn:last-child{border-right:none;border-radius:0 0 2px 0}.am-modal-btn:first-child:last-child{border-radius:0 0 2px 2px}.am-modal-btn.am-modal-btn-bold{font-weight:500}.am-modal-btn:active{background:#d4d4d4}.am-modal-btn+.am-modal-btn{border-left:1px solid #dedede}.am-modal-no-btn .am-modal-dialog{border-radius:2px;border-bottom:none}.am-modal-no-btn .am-modal-bd{border-bottom:none}.am-modal-no-btn .am-modal-footer{display:none}.am-modal-loading .am-modal-bd{border-bottom:none}.am-modal-loading .am-icon-spin{display:inline-block;font-size:2.4rem}.am-modal-loading .am-modal-footer{display:none}.am-modal-actions{position:fixed;left:0;bottom:0;z-index:1110;width:100%;text-align:center;border-radius:2px;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 300ms;transition:transform 300ms}.am-modal-actions.am-modal-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.am-modal-actions.am-modal-out{z-index:1109;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.am-modal-actions-group{margin:10px}.am-modal-actions-group .am-list{margin:0;border-radius:2px}.am-modal-actions-group .am-list>li{margin-bottom:0;border-bottom:none;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.015);box-shadow:inset 0 1px 0 rgba(0,0,0,.015)}.am-modal-actions-group .am-list>li>a{padding:1rem;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-modal-actions-group .am-list>li:first-child{border-top:none;border-top-right-radius:2px;border-top-left-radius:2px}.am-modal-actions-group .am-list>li:last-child{border-bottom:none;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.am-modal-actions-header{padding:1rem;color:#999;font-size:1.4rem}.am-modal-actions-danger{color:#dd514c}.am-modal-actions-danger a{color:inherit}.am-popup{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1110;background:#fff;display:none;overflow:hidden;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.am-popup.am-modal-active,.am-popup.am-modal-out{-webkit-transition-duration:300ms;transition-duration:300ms}.am-popup.am-modal-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.am-popup.am-modal-out{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}@media all and (min-width:630px) and (min-height:630px){.am-popup{width:630px;height:630px;left:50%;top:50%;margin-left:-315px;margin-top:-315px;-webkit-transform:translateY(1024px);-ms-transform:translateY(1024px);transform:translateY(1024px)}.am-popup.am-modal-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.am-popup.am-modal-out{-webkit-transform:translateY(1024px);-ms-transform:translateY(1024px);transform:translateY(1024px)}}.am-popup-inner{padding-top:44px;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.am-popup-hd{position:fixed;top:0;width:100%;height:43px;border-bottom:1px solid #dedede;background-color:#fff}.am-popup-hd .am-popup-title{font-size:1.8rem;font-weight:700;line-height:43px;text-align:center;margin:0 30px;color:#333;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-popup-hd .am-close{position:absolute;right:10px;top:8px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.am-popup-hd .am-close:hover{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);color:#555}.am-popup-bd{padding:15px;background:#f8f8f8;color:#555}.am-offcanvas{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1090;background:rgba(0,0,0,.15)}.am-offcanvas.am-active{display:block}.am-offcanvas-page{position:fixed;-webkit-transition:margin-left .3s ease-in-out;transition:margin-left .3s ease-in-out}.am-offcanvas-bar{position:fixed;top:0;bottom:0;left:0;z-index:1091;width:270px;max-width:100%;background:#333;overflow-y:auto;-webkit-overflow-scrolling:touch;-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.am-offcanvas-bar:after{content:"";display:block;position:absolute;top:0;bottom:0;right:0;width:1px;background:#262626}.am-offcanvas.am-active .am-offcanvas-bar.am-offcanvas-bar-active{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.am-offcanvas-bar-flip{left:auto;right:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.am-offcanvas-bar-flip:after{right:auto;left:0}.am-offcanvas-content{padding:15px;color:#999}.am-offcanvas-content a{color:#ccc}.am-popover{position:absolute;top:0;left:0;margin:0;border-radius:2px;background:#333;color:#fff;border:1px solid #333;display:none;font-size:1.6rem;z-index:1030;opacity:0;-webkit-transition:opacity 300ms;transition:opacity 300ms}.am-popover.am-active{display:block!important;opacity:1}.am-popover-inner{position:relative;background:#333;padding:8px;z-index:110;overflow:auto;-webkit-overflow-scrolling:touch}.am-popover-caret{position:absolute;left:5px;top:0;z-index:100;display:inline-block;width:0;height:0;vertical-align:middle;border-bottom:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;border-top:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);overflow:hidden}.am-popover-top .am-popover-caret{top:auto;bottom:-8px;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.am-popover-bottom .am-popover-caret{top:-8px}.am-popover-left .am-popover-caret{top:auto;left:auto;right:-12px;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-popover-right .am-popover-caret{right:auto;left:-12px;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.am-popover-sm{font-size:1.4rem}.am-popover-sm .am-popover-inner{padding:5px}.am-popover-lg{font-size:1.8rem}.am-popover-secondary{border-color:#0e90d2}.am-popover-secondary .am-popover-inner{background:#0e90d2}.am-popover-secondary .am-popover-caret{border-bottom-color:#0e90d2}.am-popover-secondary{border-color:#3bb4f2}.am-popover-secondary .am-popover-inner{background:#3bb4f2}.am-popover-secondary .am-popover-caret{border-bottom-color:#3bb4f2}.am-popover-success{border-color:#5eb95e}.am-popover-success .am-popover-inner{background:#5eb95e}.am-popover-success .am-popover-caret{border-bottom-color:#5eb95e}.am-popover-warning{border-color:#f37b1d}.am-popover-warning .am-popover-inner{background:#f37b1d}.am-popover-warning .am-popover-caret{border-bottom-color:#f37b1d}.am-popover-danger{border-color:#dd514c}.am-popover-danger .am-popover-inner{background:#dd514c}.am-popover-danger .am-popover-caret{border-bottom-color:#dd514c}#nprogress{pointer-events:none}#nprogress .nprogress-bar{position:fixed;top:0;left:0;z-index:2000;width:100%;height:2px;background:#5eb95e}#nprogress .nprogress-peg{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #5eb95e,0 0 5px #5eb95e;box-shadow:0 0 10px #5eb95e,0 0 5px #5eb95e;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px)}#nprogress .nprogress-spinner{position:fixed;top:15px;right:15px;z-index:2000;display:block}#nprogress .nprogress-spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:solid 2px transparent;border-top-color:#5eb95e;border-left-color:#5eb95e;border-radius:50%;-webkit-animation:nprogress-spinner 400ms linear infinite;animation:nprogress-spinner 400ms linear infinite}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.am-tabs-bd{position:relative;overflow:hidden;border:1px solid #ddd;border-top:none;z-index:100;-webkit-transition:height .3s;transition:height .3s}.am-tabs-bd .am-tab-panel{position:absolute;top:0;z-index:99;float:left;width:100%;padding:10px 10px 15px;visibility:hidden;-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.am-tabs-bd .am-tab-panel *{-webkit-user-drag:none}.am-tabs-bd .am-tab-panel.am-active{position:relative;z-index:100;visibility:visible;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.am-tabs-bd .am-tab-panel.am-active~.am-tab-panel{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.am-share{font-size:14px}.am-share-title{padding:10px 0 0;margin:0 10px;font-weight:400;text-align:center;color:#555;background-color:#f8f8f8;border-bottom:1px solid #fff;border-top-right-radius:2px;border-top-left-radius:2px}.am-share-title:after{content:"";display:block;width:100%;height:0;margin-top:10px;border-bottom:1px solid #dfdfdf}.am-share-sns{margin:0 10px;padding-top:15px;background-color:#f8f8f8;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.am-share-sns li{margin-bottom:15px}.am-share-sns a{display:block;color:#555}.am-share-sns span{display:block}.am-share-sns [class*=am-icon]{background-color:#3bb4f2;border-radius:50%;width:36px;height:36px;line-height:36px;color:#fff;margin-bottom:5px;font-size:18px}.am-share-sns .am-icon-weibo{background-color:#ea1328}.am-share-sns .am-icon-qq{background-color:#009cda}.am-share-sns .am-icon-star{background-color:#ffc028}.am-share-sns .am-icon-tencent-weibo{background-color:#23ccfe}.am-share-sns .am-icon-wechat,.am-share-sns .am-icon-weixin{background-color:#44b549}.am-share-sns .am-icon-renren{background-color:#105ba3}.am-share-sns .am-icon-comment{background-color:#5eb95e}.am-share-footer{margin:10px}.am-share-footer .am-btn{color:#555}.am-share-wechat-qr{font-size:14px;color:#777}.am-share-wechat-qr .am-modal-dialog{background-color:#fff;border:1px solid #dedede}.am-share-wechat-qr .am-modal-hd{padding-top:10px;text-align:left;margin-bottom:10px}.am-share-wechat-qr .am-share-wx-qr{margin-bottom:10px}.am-share-wechat-qr .am-share-wechat-tip{text-align:left}.am-share-wechat-qr .am-share-wechat-tip em{color:#dd514c;font-weight:700;font-style:normal;margin-left:3px;margin-right:3px}.am-pureview{position:fixed;left:0;top:0;bottom:0;right:0;z-index:1120;width:100%;height:100%;background:rgba(0,0,0,.95);display:none;overflow:hidden;-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate(0,100%);-ms-transform:translate(0,100%);transform:translate(0,100%)}.am-pureview.am-active{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.am-pureview ul,.am-pureview ol{list-style:none;padding:0;margin:0;width:100%}.am-pureview-slider{overflow:hidden;height:100%}.am-pureview-slider li{position:absolute;width:100%;height:100%;top:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;vertical-align:middle;-webkit-transition:all .3s linear;transition:all .3s linear;z-index:100;visibility:hidden}.am-pureview-slider li.am-pureview-slide-prev{-webkit-transform:translate(-100%,0);-ms-transform:translate(-100%,0);transform:translate(-100%,0);z-index:109}.am-pureview-slider li.am-pureview-slide-next{-webkit-transform:translate(100%,0);-ms-transform:translate(100%,0);transform:translate(100%,0);z-index:109}.am-pureview-slider li.am-active{position:relative;z-index:110;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);visibility:visible}.am-pureview-slider .pinch-zoom-container{width:100%;z-index:1121}.am-pureview-slider .am-pinch-zoom{position:relative;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.am-pureview-slider .am-pinch-zoom:after{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f110";-webkit-animation:icon-spin 2s infinite linear;animation:icon-spin 2s infinite linear;font-size:24px;line-height:24px;color:#eee;position:absolute;top:50%;left:50%;margin-left:-12px;margin-top:-12px;z-index:1}.am-pureview-slider img{position:relative;display:block;max-width:100%;max-height:100%;opacity:0;z-index:200;-webkit-user-drag:none;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.am-pureview-slider img.am-img-loaded{opacity:1}.am-pureview-direction{position:absolute;top:50%;width:100%;margin-top:-18px!important;z-index:1122}.am-touch .am-pureview-direction,.am-pureview-only .am-pureview-direction{display:none}.am-pureview-direction li{position:absolute;width:36px;height:36px}.am-pureview-direction a{display:block;height:36px;border:none;color:#ccc;opacity:.5;cursor:pointer;text-align:center;z-index:1125}.am-pureview-direction a:before{content:"\f137";line-height:36px;font-size:24px}.am-pureview-direction a:hover{opacity:1}.am-pureview-direction .am-pureview-prev{left:15px}.am-pureview-direction .am-pureview-next{right:15px}.am-pureview-direction .am-pureview-next a:before{content:"\f138"}.am-pureview-bar{position:absolute;bottom:0;height:45px;width:100%;background-color:rgba(0,0,0,.35);color:#eee;line-height:45px;padding:0 10px;font-size:14px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-pureview-bar .am-pureview-title{display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-left:6px;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-pureview-bar .am-pureview-total{font-size:10px;line-height:48px}.am-pureview-actions{position:absolute;z-index:1130;left:0;right:0;top:0;height:45px;background-color:rgba(0,0,0,.35)}.am-pureview-actions a{position:absolute;left:10px;color:#ccc;display:block;width:45px;line-height:45px;text-align:left;font-size:16px}.am-pureview-actions a:hover{color:#fff}.am-pureview-actions [data-am-toggle=share]{left:auto;right:10px}.am-pureview-bar,.am-pureview-actions{opacity:0;-webkit-transition:all .15s;transition:all .15s;z-index:1130}.am-pureview-bar-active .am-pureview-bar,.am-pureview-bar-active .am-pureview-actions{opacity:1}.am-pureview-nav{position:absolute;bottom:15px;left:0;right:0;text-align:center;z-index:1131}.am-pureview-bar-active .am-pureview-nav{display:none}.am-pureview-nav li{display:inline-block;background:#ccc;background:rgba(255,255,255,.5);width:8px;height:8px;margin:0 3px;border-radius:50%;text-indent:-9999px;overflow:hidden;cursor:pointer}.am-pureview-nav .am-active{background:#fff;background:rgba(255,255,255,.9)}[data-am-pureview] img{cursor:pointer}.am-pureview-active{overflow:hidden}.ath-viewport *{-webkit-box-sizing:border-box;box-sizing:border-box}.ath-viewport{position:relative;z-index:2147483641;pointer-events:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}.ath-modal{pointer-events:auto!important;background:rgba(0,0,0,.6)}.ath-mandatory{background:#000}.ath-container{pointer-events:auto!important;position:absolute;z-index:2147483641;padding:.7em .6em;width:18em;background:#eee;-webkit-background-size:100% auto;background-size:100% auto;-webkit-box-shadow:0 .2em 0 #d1d1d1;box-shadow:0 .2em 0 #d1d1d1;font-family:sans-serif;font-size:15px;line-height:1.5em;text-align:center}.ath-ios.ath-phone{bottom:1.8em;left:50%;margin-left:-9em}.ath-ios6.ath-tablet{left:5em;top:1.8em}.ath-ios7.ath-tablet{left:.7em;top:1.8em}.ath-ios8.ath-tablet{right:.4em;top:1.8em}.ath-android{right:1.5em;top:1.8em}.ath-container:before{content:'';position:relative;display:block;float:right;margin:-.7em -.6em 0 .5em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAMAAABmmnOVAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAeHAAAHhwFd+hRDAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAHVQTFRFAAAAOTk5MzMzOzs7Nzc3QUFBQEBAPz8/Pj4+QUFBQEBAPz8/Pj4+QUFBQEBAPz8/QUFBPj4+Pz8/Pz8/Pj4+Pz8/Pz8/Pz8/Pj4+Pz8/Pj4+Pz8/Pz8/Pz8/Pz8/Pz8/Pj4+Pz8/Pz8/Pz8/Pz8/QEBAPz8/n3QmjwAAACZ0Uk5TAAkKDQ4zODk6OzxBQkNERUusrbG0tba7vL3Excbu8fL19fb3+PgucqJgAAACqklEQVR42sXc23LCIBAGYKy2pgft0WpP2vTA+z9i0+goCZAs7O7P3oWZTL5ZYAh7sca0MXmYG3jM7yfu4/TV1jdow01tX6cdg4UrGoN1FNM3a+GK1nBSzPYGrOJgsPZt1hrerYUrjoa9wjHgFI7B2veZWVk3tpCdWm07H30y8+4AIhedPFj7cW7wioABrggawIqIAaroGbYXzlGCUvQNnc0IUgwaQIoRA0QxagAoCAZ1BcmgrCAaVBVkg6IiwaCmSDIoKRINKopkg4IiwyCuyDIIKzINoopsg6CCYRBTsAxCCqZBRLGo2RcrtkLAwFaIGJgKIQNLIWZgKAQN2QpRg1dKoCmEDVkKcUOGQsGQrFAxJCqUDEkKNUOCQtFAVqgaiAplg69YFDAQFADDqAJiGFGADI1iF1XADAOKvqHSLApHFFBDRAE2BBVwQ0BRwOApfn8LGDxFEcOQAmeIK5CGmAJrCCvQBq8A8r9Zrw08qp6irvAGs/zpIr4XBQxf3nQsyhvwipABrQgbsIqYAamIG3CKnqH+LKDoGXbVwD84zDB4E4AZ4IqgAayIGKCKqMGYS5RiwOArlgUMnuJrWcAAUYwaAAqCQV1BMigriAZVBdmgqEgwqCmSDEqKRIOKItmgoMgwiCv6hkvaa6KKTIOoItsgqGAYxBQsg5CCaRBRsA0CCgEDWyFiYCqEDCyFmIGhEDRkK0QNmQphQ5ZC3JChUDAkK1QMiQolQ5JCzZCguNUzkBV3P4oGokLZQFKoGwgKgGFUATGMKECGQQXMYMxVTAE0RBVQQ0QBNgQVcENI8QwoBo8cUiszWYPz4OVi3bQ9cBQoQ0exblsvTDZwg6PYHNo/tE0XmvVwa4BxWBentgtnL+A8HHPxcnYaaBRoQ6twDY3iEW5oFI8Hwx/QxSE448b+MwAAAABJRU5ErkJggg==);background-color:rgba(255,255,255,.8);-webkit-background-size:50% 50%;background-size:50%;background-repeat:no-repeat;background-position:50%;width:2.7em;height:2.7em;text-align:center;overflow:hidden;color:#a33;z-index:2147483642}.ath-container.ath-icon:before{position:absolute;top:0;right:0;margin:0;float:none}.ath-mandatory .ath-container:before{display:none}.ath-container.ath-android:before{float:left;margin:-.7em .5em 0 -.6em}.ath-container.ath-android.ath-icon:before{position:absolute;right:auto;left:0;margin:0;float:none}.ath-action-icon{display:inline-block;vertical-align:middle;background-position:50%;background-repeat:no-repeat;text-indent:-9999em;overflow:hidden}.ath-android .ath-action-icon{width:1.2em;height:1.8em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAADcBAMAAAAig/QJAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAFtDAABbQwH5xg68AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAB5QTFRFAAAA////cXFxaWlp////ZmZmnJycoaGhpqam////1D9b6wAAAAV0Uk5TAAgJERExZxYzAAAAYklEQVRYw+3WoQ2AUBAE0SsBOiBUQEIDCArA4FFoHBaJxNItFYz/x5+xz282VmwJTdM0rRzbsS1e7Pm9zdgUVn491rkFmqZpSezEjqo/Sos1HoAEjdjgFmiapiWxG7tq/igfnYteFlnOWZEAAAAASUVORK5CYII=);-webkit-background-size:auto 100%;background-size:auto 100%}.ath-ios7 .ath-action-icon,.ath-ios8 .ath-action-icon{width:1.6em;height:1.6em;background-image:url(data:image/png;base64,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);margin-top:-.3em;-webkit-background-size:auto 100%;background-size:auto 100%}.ath-ios6 .ath-action-icon{width:1.8em;height:1.8em;background-image:url(data:image/png;base64,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);margin-bottom:.4em;-webkit-background-size:100% auto;background-size:100% auto}.ath-container p{margin:0;padding:0;position:relative;z-index:2147483642;text-shadow:0 .1em 0 #fff;font-size:1.1em}.ath-ios.ath-phone:after{content:'';background:#eee;position:absolute;width:2em;height:2em;bottom:-.9em;left:50%;margin-left:-1em;-webkit-transform:scaleX(0.9) rotate(45deg);-ms-transform:scaleX(0.9) rotate(45deg);transform:scaleX(0.9) rotate(45deg);-webkit-box-shadow:.2em .2em 0 #d1d1d1;box-shadow:.2em .2em 0 #d1d1d1}.ath-ios.ath-tablet:after{content:'';background:#eee;position:absolute;width:2em;height:2em;top:-.9em;left:50%;margin-left:-1em;-webkit-transform:scaleX(0.9) rotate(45deg);-ms-transform:scaleX(0.9) rotate(45deg);transform:scaleX(0.9) rotate(45deg);z-index:2147483641}.ath-android:after{content:'';background:#eee;background:-webkit-linear-gradient(-45deg,rgba(238,238,238,0) 0,rgba(238,238,238,0) 50%,#eee 50%,#eee 100%);position:absolute;width:2em;height:2em;top:-1.5em;right:0}.ath-application-icon{position:relative;padding:0;border:0;margin:0 auto .2em auto;height:4.8em;width:4.8em;z-index:2147483642}.ath-container.ath-ios .ath-application-icon{border-radius:1em;-webkit-box-shadow:0 .2em .4em rgba(0,0,0,.3),inset 0 .07em 0 rgba(255,255,255,.5);box-shadow:0 .2em .4em rgba(0,0,0,.3),inset 0 .07em 0 rgba(255,255,255,.5);margin:0 auto .4em auto}@media only screen and (orientation:landscape){.ath-container.ath-phone{width:24em}.ath-ios.ath-phone{margin-left:-12em}.ath-ios6:after{left:39%}.ath-ios8.ath-phone{left:auto;bottom:auto;right:.4em;top:1.8em}.ath-ios8.ath-phone:after{bottom:auto;top:-.9em;left:68%;z-index:2147483641;-webkit-box-shadow:none;box-shadow:none}}.am-checkbox,.am-radio{margin-bottom:12px;padding-left:25px;position:relative;-webkit-transition:color .25s linear;transition:color .25s linear;font-size:14px;line-height:1.5}label.am-checkbox,label.am-radio{font-weight:400}.am-ucheck-icons{color:#999;display:block;height:20px;top:0;left:0;position:absolute;width:20px;text-align:center;line-height:21px;font-size:18px;cursor:pointer}.am-checkbox .am-icon-checked,.am-radio .am-icon-checked,.am-checkbox .am-icon-unchecked,.am-radio .am-icon-unchecked{position:absolute;left:0;top:0;display:inline-table;margin:0;background-color:transparent;-webkit-transition:color .25s linear;transition:color .25s linear}.am-checkbox .am-icon-checked:before,.am-radio .am-icon-checked:before,.am-checkbox .am-icon-unchecked:before,.am-radio .am-icon-unchecked:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.am-checkbox .am-icon-checked,.am-radio .am-icon-checked{opacity:0}.am-checkbox .am-icon-checked:before{content:"\f046"}.am-checkbox .am-icon-unchecked:before{content:"\f096"}.am-radio .am-icon-checked:before{content:"\f192"}.am-radio .am-icon-unchecked:before{content:"\f10c"}.am-ucheck-checkbox,.am-ucheck-radio{position:absolute;left:0;top:0;margin:0;padding:0;width:20px;height:20px;opacity:0;outline:0!important}.am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#0e90d2}.am-ucheck-checkbox:checked+.am-ucheck-icons,.am-ucheck-radio:checked+.am-ucheck-icons{color:#0e90d2}.am-ucheck-checkbox:checked+.am-ucheck-icons .am-icon-unchecked,.am-ucheck-radio:checked+.am-ucheck-icons .am-icon-unchecked{opacity:0}.am-ucheck-checkbox:checked+.am-ucheck-icons .am-icon-checked,.am-ucheck-radio:checked+.am-ucheck-icons .am-icon-checked{opacity:1}.am-ucheck-checkbox:disabled+.am-ucheck-icons,.am-ucheck-radio:disabled+.am-ucheck-icons{cursor:default;color:#d8d8d8}.am-ucheck-checkbox:disabled:checked+.am-ucheck-icons .am-icon-unchecked,.am-ucheck-radio:disabled:checked+.am-ucheck-icons .am-icon-unchecked{opacity:0}.am-ucheck-checkbox:disabled:checked+.am-ucheck-icons .am-icon-checked,.am-ucheck-radio:disabled:checked+.am-ucheck-icons .am-icon-checked{opacity:1;color:#d8d8d8}.am-checkbox.am-secondary .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-secondary .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-checkbox.am-secondary .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-secondary .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#3bb4f2}.am-checkbox.am-secondary .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-radio.am-secondary .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-checkbox.am-secondary .am-ucheck-radio:checked+.am-ucheck-icons,.am-radio.am-secondary .am-ucheck-radio:checked+.am-ucheck-icons{color:#3bb4f2}.am-checkbox.am-success .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-success .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-checkbox.am-success .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-success .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#5eb95e}.am-checkbox.am-success .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-radio.am-success .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-checkbox.am-success .am-ucheck-radio:checked+.am-ucheck-icons,.am-radio.am-success .am-ucheck-radio:checked+.am-ucheck-icons{color:#5eb95e}.am-checkbox.am-warning .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-warning .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-checkbox.am-warning .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-warning .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#f37b1d}.am-checkbox.am-warning .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-radio.am-warning .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-checkbox.am-warning .am-ucheck-radio:checked+.am-ucheck-icons,.am-radio.am-warning .am-ucheck-radio:checked+.am-ucheck-icons{color:#f37b1d}.am-checkbox.am-danger .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-danger .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-checkbox.am-danger .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-danger .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#dd514c}.am-checkbox.am-danger .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-radio.am-danger .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-checkbox.am-danger .am-ucheck-radio:checked+.am-ucheck-icons,.am-radio.am-danger .am-ucheck-radio:checked+.am-ucheck-icons{color:#dd514c}.am-field-error+.am-ucheck-icons{color:#dd514c}.am-field-valid+.am-ucheck-icons{color:#5eb95e}.am-input-group-label .am-radio,.am-input-group-label .am-checkbox{margin:-2px 0;padding-left:15px}.am-form-inline .am-checkbox,.am-form-inline .am-radio{padding-left:24px}.am-selected-btn{text-align:right;width:200px}.am-selected-btn.am-btn-default{background:0 0}.am-selected-header{height:45px;background-color:#f2f2f2;border-bottom:1px solid #ddd;display:none}.am-selected-status{text-align:left;width:100%;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-selected-content{padding:10px 0}.am-selected-search{padding:0 10px 10px}.am-selected-search .am-form-field{padding:.5em}.am-selected-list{margin:0;padding:0;list-style:none;font-size:1.5rem}.am-selected-list li{position:relative;cursor:pointer;padding:5px 10px;-webkit-transition:background-color .15s;transition:background-color .15s}.am-selected-list li:hover{background-color:#f8f8f8}.am-selected-list li:hover .am-icon-check{opacity:.6}.am-selected-list li.am-checked .am-icon-check{opacity:1;color:#0e90d2}.am-selected-list .am-selected-list-header{margin-top:8px;font-size:1.3rem;color:#999;border-bottom:1px solid #e5e5e5;cursor:default}.am-selected-list .am-selected-list-header:hover{background:0 0}.am-selected-list .am-selected-list-header:first-child{margin-top:0}.am-selected-list .am-selected-text{display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-right:30px}.am-selected-list .am-icon-check{position:absolute;right:8px;top:5px;color:#999;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s}.am-selected-hint{line-height:1.2;color:#dd514c}.am-selected-hint:not(:empty){margin-top:10px;border-top:1px solid #e5e5e5;padding:10px 10px 0}.am-fade{opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.am-fade.am-in{opacity:1}.am-collapse{display:none}.am-collapse.am-in{display:block}tr.am-collapse.am-in{display:table-row}tbody.am-collapse.am-in{display:table-row-group}.am-collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .3s ease;transition:height .3s ease}.am-sticky{position:fixed!important;z-index:1010;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}[data-am-sticky][class*=am-animation-]{-webkit-animation-duration:.2s;animation-duration:.2s}.am-dimmer-active{overflow:hidden}.am-dimmer{position:fixed;top:0;right:0;bottom:0;left:0;display:none;width:100%;height:100%;background-color:rgba(0,0,0,.6);z-index:1100;opacity:0}.am-dimmer.am-active{opacity:1}[data-am-collapse]{cursor:pointer}.am-datepicker{top:0;left:0;border-radius:2px;background:#fff;-webkit-box-shadow:0 0 10px #ccc;box-shadow:0 0 10px #ccc;padding-bottom:10px;margin-top:10px;width:238px;color:#555;display:none}.am-datepicker>div{display:none}.am-datepicker table{width:100%}.am-datepicker tr.am-datepicker-header{font-size:1.6rem;color:#fff;background:#3bb4f2}.am-datepicker td,.am-datepicker th{text-align:center;font-weight:400;cursor:pointer}.am-datepicker th{height:48px}.am-datepicker td{font-size:1.4rem}.am-datepicker td.am-datepicker-day{height:34px;width:34px}.am-datepicker td.am-datepicker-day:hover{background:#f0f0f0;height:34px;width:34px}.am-datepicker td.am-datepicker-day.am-disabled{cursor:no-drop;color:#999;background:#fafafa}.am-datepicker td.am-datepicker-old,.am-datepicker td.am-datepicker-new{color:#89d7ff}.am-datepicker td.am-active,.am-datepicker td.am-active:hover{border-radius:2px;color:#0084c7;background:#f0f0f0}.am-datepicker td span{display:block;width:79.33px;height:40px;line-height:40px;float:left;cursor:pointer}.am-datepicker td span:hover{background:#f0f0f0}.am-datepicker td span.am-active{color:#0084c7;background:#f0f0f0}.am-datepicker td span.am-datepicker-old{color:#89d7ff}.am-datepicker .am-datepicker-dow{height:40px;color:#0c80ba}.am-datepicker-caret{display:block!important;display:inline-block;width:0;height:0;vertical-align:middle;border-bottom:7px solid #3bb4f2;border-right:7px solid transparent;border-left:7px solid transparent;border-top:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);position:absolute;top:-7px;left:6px}.am-datepicker-right .am-datepicker-caret{left:auto;right:7px}.am-datepicker-up .am-datepicker-caret{top:auto;bottom:-7px;display:inline-block;width:0;height:0;vertical-align:middle;border-top:7px solid #fff;border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.am-datepicker-select{height:34px;line-height:34px;text-align:center;-webkit-transition:background-color 300ms ease-out;transition:background-color 300ms ease-out}.am-datepicker-select:hover{background:rgba(154,217,248,.5);color:#0c80ba}.am-datepicker-prev,.am-datepicker-next{width:34px;height:34px}.am-datepicker-prev-icon,.am-datepicker-next-icon{width:34px;height:34px;line-height:34px;display:inline-block;-webkit-transition:background-color 300ms ease-out;transition:background-color 300ms ease-out}.am-datepicker-prev-icon:hover,.am-datepicker-next-icon:hover{background:rgba(154,217,248,.5);color:#0c80ba}.am-datepicker-prev-icon:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053"}.am-datepicker-next-icon:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f054"}.am-datepicker-dropdown{position:absolute;z-index:1000}@media only screen and (max-width:640px){.am-datepicker{width:100%}.am-datepicker td span{width:33.33%}.am-datepicker-caret{display:none!important}.am-datepicker-prev,.am-datepicker-next{width:44px;height:44px}}.am-datepicker-success tr.am-datepicker-header{background:#5eb95e}.am-datepicker-success td.am-datepicker-day.am-disabled{color:#999}.am-datepicker-success td.am-datepicker-old,.am-datepicker-success td.am-datepicker-new{color:#94df94}.am-datepicker-success td.am-active,.am-datepicker-success td.am-active:hover{color:#1b961b}.am-datepicker-success td span.am-datepicker-old{color:#94df94}.am-datepicker-success td span.am-active{color:#1b961b}.am-datepicker-success .am-datepicker-caret{border-bottom-color:#5eb95e}.am-datepicker-success .am-datepicker-dow{color:#367b36}.am-datepicker-success .am-datepicker-select:hover,.am-datepicker-success .am-datepicker-prev-icon:hover,.am-datepicker-success .am-datepicker-next-icon:hover{background:rgba(165,216,165,.5);color:#367b36}.am-datepicker-danger tr.am-datepicker-header{background:#dd514c}.am-datepicker-danger td.am-datepicker-day.am-disabled{color:#999}.am-datepicker-danger td.am-datepicker-old,.am-datepicker-danger td.am-datepicker-new{color:#f59490}.am-datepicker-danger td.am-active,.am-datepicker-danger td.am-active:hover{color:#c10802}.am-datepicker-danger td span.am-datepicker-old{color:#f59490}.am-datepicker-danger td span.am-active{color:#c10802}.am-datepicker-danger .am-datepicker-caret{border-bottom-color:#dd514c}.am-datepicker-danger .am-datepicker-dow{color:#a4241f}.am-datepicker-danger .am-datepicker-select:hover,.am-datepicker-danger .am-datepicker-prev-icon:hover,.am-datepicker-danger .am-datepicker-next-icon:hover{background:rgba(237,164,162,.5);color:#a4241f}.am-datepicker-warning tr.am-datepicker-header{background:#f37b1d}.am-datepicker-warning td.am-datepicker-day.am-disabled{color:#999}.am-datepicker-warning td.am-datepicker-old,.am-datepicker-warning td.am-datepicker-new{color:#ffad6d}.am-datepicker-warning td.am-active,.am-datepicker-warning td.am-active:hover{color:#aa4b00}.am-datepicker-warning td span.am-datepicker-old{color:#ffad6d}.am-datepicker-warning td span.am-active{color:#aa4b00}.am-datepicker-warning .am-datepicker-caret{border-bottom-color:#f37b1d}.am-datepicker-warning .am-datepicker-dow{color:#a14c09}.am-datepicker-warning .am-datepicker-select:hover,.am-datepicker-warning .am-datepicker-prev-icon:hover,.am-datepicker-warning .am-datepicker-next-icon:hover{background:rgba(248,180,126,.5);color:#a14c09}@media print{*,:before,:after{background:transparent!important;color:#000!important;-webkit-box-shadow:none!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) "] "}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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{margin:.5cm}select{background:#fff!important}.am-topbar{display:none}.am-table td,.am-table th{background-color:#fff!important}.am-table{border-collapse:collapse!important}.am-table-bordered th,.am-table-bordered td{border:1px solid #ddd!important}}.am-print-block{display:none!important}@media print{.am-print-block{display:block!important}}.am-print-inline{display:none!important}@media print{.am-print-inline{display:inline!important}}.am-print-inline-block{display:none!important}@media print{.am-print-inline-block{display:inline-block!important}}@media print{.am-print-hide{display:none!important}}.lte9 #nprogress .nprogress-spinner{display:none!important}.lte8 .am-dimmer{background-color:#000;filter:alpha(opacity=60)}.lte8 .am-modal-actions{display:none}.lte8 .am-modal-actions.am-modal-active{display:block}.lte8 .am-offcanvas.am-active{background:#000}.lte8 .am-popover .am-popover-caret{border:8px solid transparent}.lte8 .am-popover-top .am-popover-caret{border-top:8px solid #333;border-bottom:none}.lte8 .am-popover-left .am-popover-caret{right:-8px;margin-top:-6px;border-left:8px solid #333;border-right:none}.lte8 .am-popover-right .am-popover-caret{left:-8px;margin-top:-6px;border-right:8px solid #333;border-left:none}.am-accordion-item{margin:0}.am-accordion-title{font-weight:400;cursor:pointer}.am-accordion-bd{margin:0!important;padding:0!important;border:none!important}.am-accordion-content{margin-top:0;padding:.8rem 1rem 1.2rem;font-size:1.4rem}.am-accordion-default{margin:1rem;border-radius:2px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1)}.am-accordion-default .am-accordion-item{border-top:1px solid rgba(0,0,0,.05)}.am-accordion-default .am-accordion-item:first-child{border-top:none}.am-accordion-default .am-accordion-title{color:rgba(0,0,0,.6);-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out;padding:.8rem 1rem}.am-accordion-default .am-accordion-title:before{content:"\f0da";display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:-webkit-transform .2s ease;transition:transform .2s ease;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);margin-right:5px}.am-accordion-default .am-accordion-title:hover{color:#0e90d2}.am-accordion-default .am-accordion-content{color:#666}.am-accordion-default .am-active .am-accordion-title{background-color:#eee;color:#0e90d2}.am-accordion-default .am-active .am-accordion-title:before{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-accordion-basic{margin:1rem}.am-accordion-basic .am-accordion-title{color:#333;-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out;padding:.8rem 0 0}.am-accordion-basic .am-accordion-title:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f0da";-webkit-transition:-webkit-transform .2s ease;transition:transform .2s ease;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);margin-right:.5rem}.am-accordion-basic .am-accordion-content{color:#666}.am-accordion-basic .am-active .am-accordion-title{color:#0e90d2}.am-accordion-basic .am-active .am-accordion-title:before{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-accordion-gapped{margin:.5rem 1rem}.am-accordion-gapped .am-accordion-item{border:1px solid #dedede;border-bottom:none;margin:.5rem 0}.am-accordion-gapped .am-accordion-item.am-active{border-bottom:1px solid #dedede}.am-accordion-gapped .am-accordion-title{color:rgba(0,0,0,.6);-webkit-transition:background-color .15s ease-out;transition:background-color .15s ease-out;border-bottom:1px solid #dedede;padding:.8rem 2rem .8rem 1rem;position:relative}.am-accordion-gapped .am-accordion-title:after{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f105";-webkit-transition:-webkit-transform .2s linear;transition:transform .2s linear;position:absolute;right:10px;top:50%;margin-top:-.8rem}.am-accordion-gapped .am-accordion-title:hover{color:rgba(0,0,0,.8)}.am-accordion-gapped .am-accordion-content{color:#666}.am-accordion-gapped .am-active .am-accordion-title{background-color:#f5f5f5;color:rgba(0,0,0,.8)}.am-accordion-gapped .am-active .am-accordion-title:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-accordion-one{margin:0 10px 0 10px}.am-accordion-one .am-accordion-item{border:1px solid #dfdfdf;margin:.5rem 0;background:#fff}.am-accordion-one .am-accordion-title{color:#555;-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out;padding:.8rem 2rem .8rem 1rem;position:relative}.am-accordion-one .am-accordion-title:after{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f105";-webkit-transition:-webkit-transform .2s linear;transition:transform .2s linear;position:absolute;right:10px;top:50%;margin-top:-.8rem}.am-accordion-one .am-accordion-title:hover{color:#15afef}.am-accordion-one .am-accordion-content{color:#666}.am-accordion-one .am-active .am-accordion-title{background-color:#f8f8f8;color:#15afef}.am-accordion-one .am-active .am-accordion-title:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-divider-default{height:1px;border:none;margin:1.5rem auto;overflow:hidden;background-color:#ddd;clear:both}.am-divider-one{height:10px;border:none;overflow:hidden;clear:both;margin:0}.am-figure-zoomable{position:relative;cursor:pointer}.am-figure-zoomable:after{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f00e";position:absolute;top:1rem;right:1rem;color:#999;font-size:1.6rem;-webkit-transition:all .2s;transition:all .2s}.am-figure-zoomable:hover:after{color:#eee}.am-figure-default{margin:10px}.am-figure-default img{display:block;max-width:100%;height:auto;padding:2px;border:1px solid #eee;margin:10px auto}.am-figure-default figcaption{text-align:center;font-size:1.4rem;margin-bottom:15px;color:#333}.am-figure-one{margin:0 10px;background:#fff}.am-figure-one img{display:block;max-width:100%;height:auto;padding:2px;border:1px solid #dfdfdf}.am-figure-one figcaption{text-align:center;font-size:1.4rem;padding:10px 0;color:#888}.am-footer{text-align:center;padding:1em 0;font-size:1.6rem}.am-footer .am-switch-mode-ysp{cursor:pointer}.am-footer .am-footer-text{margin-top:10px;font-size:14px}.am-footer .am-footer-text-left{text-align:left;padding-left:10px}.am-modal-footer-hd{padding-bottom:10px}.am-footer-default{background-color:#fff}.am-footer-default a{color:#555}.am-footer-default .am-footer-switch{margin-bottom:10px;font-weight:700}.am-footer-default .am-footer-ysp{color:#555;cursor:pointer}.am-footer-default .am-footer-divider{color:#ccc}.am-footer-default .am-footer-desktop{color:#0e90d2}.am-footer-default .am-footer-miscs{color:#999;font-size:13px}.am-footer-default .am-footer-miscs p{margin:5px 0}@media only screen and (min-width:641px){.am-footer-default .am-footer-miscs p{display:inline-block;margin:5px}}.am-footer-one a{color:#15afef;font-weight:700}.am-footer-one .am-footer-switch{margin-bottom:10px}.am-footer-one .am-footer-ysp{color:#15afef;cursor:pointer}.am-footer-one .am-footer-divider{color:#999}.am-footer-one .am-footer-desktop{font-weight:400;color:#555}.am-footer-one .am-footer-miscs{color:#7c7c7c;overflow:hidden;padding:0 10px;font-size:14px}.am-footer-one .am-footer-miscs ul,.am-footer-one .am-footer-miscs li{padding-left:0;list-style:none}.am-footer-one .am-footer-miscs p{margin:4px 0}.am-footer-one .am-footer-miscs a{font-weight:400;color:#555;margin:0 1px}.am-footer-one .am-footer-miscs img{display:block;max-width:100%;margin:0 auto 2px auto}@media only screen and (min-width:641px){.am-footer-one .am-footer-miscs p{display:inline-block;margin:5px}}.am-gallery{padding:5px 5px 0 5px;list-style:none}.am-gallery h3{margin:0}[data-am-gallery*=pureview] img{cursor:pointer}.am-gallery-default>li{padding:5px}.am-gallery-default .am-gallery-item img{width:100%;height:auto}.am-gallery-default .am-gallery-title{margin-top:10px;font-weight:400;font-size:1.4rem;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#555}.am-gallery-default .am-gallery-desc{color:#999;font-size:1.2rem}.am-gallery-overlay>li{padding:5px}.am-gallery-overlay .am-gallery-item{position:relative}.am-gallery-overlay .am-gallery-item img{width:100%;height:auto}.am-gallery-overlay .am-gallery-title{font-weight:400;font-size:1.4rem;color:#fff;position:absolute;bottom:0;width:100%;background-color:rgba(0,0,0,.5);text-indent:5px;height:30px;line-height:30px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-gallery-overlay .am-gallery-desc{display:none}.am-gallery-bordered>li{padding:5px}.am-gallery-bordered .am-gallery-item{-webkit-box-shadow:0 0 3px rgba(0,0,0,.35);box-shadow:0 0 3px rgba(0,0,0,.35);padding:5px}.am-gallery-bordered .am-gallery-item img{width:100%;height:auto}.am-gallery-bordered .am-gallery-title{margin-top:10px;font-weight:400;font-size:1.4rem;color:#555;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-gallery-bordered .am-gallery-desc{color:#999;font-size:1.2rem}.am-gallery-imgbordered>li{padding:5px}.am-gallery-imgbordered .am-gallery-item img{width:100%;height:auto;border:3px solid #FFF;-webkit-box-shadow:0 0 3px rgba(0,0,0,.35);box-shadow:0 0 3px rgba(0,0,0,.35)}.am-gallery-imgbordered .am-gallery-title{margin-top:10px;font-weight:400;font-size:1.4rem;color:#555;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-gallery-imgbordered .am-gallery-desc{color:#999;font-size:1.2rem}.am-gallery-one{padding:0 5px;background-color:#fff}.am-gallery-one>li{padding:5px}.am-gallery-one .am-gallery-item{padding:5px}.am-gallery-one .am-gallery-item img{width:100%;height:auto}.am-gallery-one .am-gallery-title{line-height:34px;font-weight:400;font-size:1.4rem;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#555}.am-gallery-one .am-gallery-desc{color:#999;font-size:1.2rem}.am-gallery-one .am-gallery-more{width:100%}.am-gallery-one .am-gallery-more a{background-color:#dfdfdf;color:#555;height:35px;line-height:35px;font-size:1.4rem;display:block;text-align:center}.am-gotop a{display:inline-block;text-decoration:none}.am-gotop-default{text-align:center;margin:10px 0}.am-gotop-default a{background-color:#0e90d2;padding:.5em 1.5em;border-radius:2px;color:#fff}.am-gotop-default a img{display:none}.am-gotop-fixed{position:fixed;right:10px;bottom:10px;z-index:1010;opacity:0;width:32px;min-height:32px;overflow:hidden;border-radius:2px;text-align:center}.am-gotop-fixed.am-active{opacity:.9}.am-gotop-fixed.am-active:hover{opacity:1}.am-gotop-fixed a{display:block}.am-gotop-fixed .am-gotop-title{display:none}.am-gotop-fixed .am-gotop-icon-custom{display:inline-block;max-width:30px;vertical-align:middle}.am-gotop-fixed .am-gotop-icon{width:100%;line-height:32px;background-color:#555;vertical-align:middle;color:#ddd}.am-gotop-fixed .am-gotop-icon:hover{color:#fff}.am-with-fixed-navbar .am-gotop-fixed{bottom:60px}.am-gotop-one{position:fixed;right:10px;bottom:10px;z-index:1005;width:32px;height:32px;background-color:#fff;border-radius:2px;border:1px solid #15afef;text-align:center}.am-gotop-one .am-gotop-title{display:none}.am-gotop-one .am-gotop-icon{vertical-align:middle;display:inline-block;color:#15afef}.am-with-fixed-navbar .am-gotop-one{bottom:60px}.am-header{position:relative;width:100%;height:49px;line-height:49px;padding:0 10px}.am-header h1{margin-top:0;margin-bottom:0}.am-header .am-header-title{margin:0 30%;font-size:2rem;font-weight:400;text-align:center;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-header .am-header-title img{margin-top:12px;height:25px;vertical-align:top}.am-header .am-header-nav{position:absolute;top:0}.am-header .am-header-nav img{height:16px;width:auto;vertical-align:middle}.am-header .am-header-left{left:10px}.am-header .am-header-right{right:10px}.am-header-fixed{position:fixed;top:0;left:0;right:0;width:100%;z-index:1010}.am-with-fixed-header{padding-top:49px}.am-header-default{background-color:#0e90d2}.am-header-default .am-header-title{color:#fff}.am-header-default .am-header-title a{color:#fff}.am-header-default .am-header-icon{font-size:20px}.am-header-default .am-header-nav{color:#eee}.am-header-default .am-header-nav>a{display:inline-block;min-width:36px;text-align:center;color:#eee}.am-header-default .am-header-nav>a+a{margin-left:5px}.am-header-default .am-header-nav .am-btn{margin-top:9px;height:31px;padding:0 .5em;line-height:30px;font-size:14px;vertical-align:top}.am-header-default .am-header-nav .am-btn .am-header-icon{font-size:inherit}.am-header-default .am-header-nav .am-btn-default{color:#999}.am-header-default .am-header-nav-title,.am-header-default .am-header-nav-title+.am-header-icon{font-size:14px}.am-header-one{background:#fff}.am-header-one .am-header-title{margin:0 15%;color:#333;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-header-one .am-header-title a{color:#333}.am-header-one .am-header-title img{height:34px;width:auto;margin-top:8px;vertical-align:top}.am-header-one .am-header-nav>a{color:#15afef}.am-intro{position:relative}.am-intro-hd{position:relative;height:45px;line-height:45px}.am-intro-title{font-size:18px;margin:0;font-weight:700}.am-intro-more-top{position:absolute;right:10px;top:0;font-size:1.4rem}.am-intro-bd{padding-top:15px;padding-bottom:15px;font-size:1.4rem}.am-intro-bd p:last-child{margin-bottom:0}.am-intro-more-bottom{clear:both;text-align:center}.am-intro-more-bottom .am-btn{font-size:14px}.am-intro-default .am-intro-hd{background-color:#0e90d2;color:#fff;padding:0 10px}.am-intro-default .am-intro-hd a{color:#eee}.am-intro-default .am-intro-right{padding-left:0}.am-intro-one{padding-bottom:10px;background-color:#fff}.am-intro-one a{color:#15afef}.am-intro-one .am-intro-hd{border-bottom:1px solid #15afef;margin-left:10px;margin-right:10px;line-height:44px}.am-intro-one .am-intro-title{color:#333;padding-left:10px}.am-intro-one .am-intro-title:before{position:absolute;left:1px;top:10px;bottom:10px;content:'';width:3px;background-color:#15afef;display:block}.am-intro-one .am-intro-bd{color:#555}.am-intro-one .am-intro-left{float:left;display:inline}.am-intro-one .am-intro-right{display:inline;padding-left:0;font-size:1.4rem}.am-intro-one .am-intro-right p{display:inline;margin:0;padding:0}.am-list-news-hd{padding-top:1.2rem;padding-bottom:.8rem}.am-list-news-hd a{display:block}.am-list-news-hd h2{font-size:1.6rem;float:left;margin:0;height:2rem;line-height:2rem}.am-list-news-hd h3{margin:0}.am-list-news-hd .am-list-news-more{font-size:1.3rem;height:2rem;line-height:2rem}.am-list .am-list-item-dated a{padding-right:80px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-list .am-list-item-dated a::after{display:none}.am-list .am-list-item-desced a,.am-list .am-list-item-thumbed a{padding-right:0}.am-list-news .am-list-item-hd{margin:0}.am-list-date{position:absolute;right:5px;font-size:1.3rem;top:1.3rem}.am-list-item-desced{padding-bottom:1rem}.am-list-item-desced>a{padding:1rem 0}.am-list-item-desced .am-list-date{position:static}.am-list-item-thumbed{padding-top:1em}.am-list-news-ft{text-align:center}.am-list-news-default{margin:10px}.am-list-news-default .am-g{margin-left:auto;margin-right:auto}.am-list-news-default .am-list-item-hd{font-weight:400}.am-list-news-default .am-list-date{color:#999}.am-list-news-default .am-list>li{border-color:#dedede}.am-list-news-default .am-list .am-list-item-desced{padding-top:1rem;padding-bottom:1rem}.am-list-news-default .am-list .am-list-item-desced>a{padding:0}.am-list-news-default .am-list .am-list-item-desced .am-list-item-text{margin-top:.5rem;color:#757575}.am-list-news-default .am-list .am-list-item-text{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;line-height:1.3em;-webkit-line-clamp:2;max-height:2.6em}.am-list-news-default .am-list .am-list-item-thumb-top .am-list-thumb{padding:0;margin-bottom:.8rem}.am-list-news-default .am-list .am-list-item-thumb-top .am-list-main{padding:0}.am-list-news-default .am-list .am-list-item-thumb-left .am-list-thumb{padding-left:0}.am-list-news-default .am-list .am-list-item-desced .am-list-main{padding:0}.am-list-news-default .am-list .am-list-item-thumb-right .am-list-thumb{padding-right:0}.am-list-news-default .am-list .am-list-item-thumb-bottom-left .am-list-item-hd{clear:both;padding-bottom:.5rem}.am-list-news-default .am-list .am-list-item-thumb-bottom-left .am-list-thumb{padding-left:0}.am-list-news-default .am-list .am-list-item-thumb-bottom-right .am-list-item-hd{clear:both;padding-bottom:.5rem}.am-list-news-default .am-list .am-list-item-thumb-bottom-right .am-list-thumb{padding-right:0}.am-list-news-default .am-list .am-list-thumb img{width:100%;display:block}@media only screen and (max-width:640px){.am-list-news-default .am-list-item-thumb-left .am-list-thumb,.am-list-news-default .am-list-item-thumb-right .am-list-thumb{max-height:80px;overflow:hidden}.am-list-news-default .am-list-item-thumb-bottom-left .am-list-item-text,.am-list-news-default .am-list-item-thumb-bottom-right .am-list-item-text{-webkit-line-clamp:3;max-height:3.9em}.am-list-news-default .am-list-item-thumb-bottom-left .am-list-thumb,.am-list-news-default .am-list-item-thumb-bottom-right .am-list-thumb{max-height:60px;overflow:hidden}}.am-list-news-one{margin:0 10px}.am-list-news-one .am-list-news-hd{background:#fff;height:40px;line-height:40px;border-bottom:1px solid #15afef;padding:0 0 0 10px;margin:0;position:relative;color:#000}.am-list-news-one .am-list-news-hd::before{width:4px;height:30px;background:#15afef;display:inline-block;content:'';position:absolute;top:5px;left:0}.am-list-news-one .am-list-news-hd>a{color:#000;display:inline}.am-list-news-one .am-list-news-hd>a .am-list-news-more{color:#888;padding:0;margin-right:5px;background:0 0;font-size:1.4rem;height:40px;line-height:40px}.am-list-news-one .am-list-news-hd h2{font-weight:400;float:left;line-height:40px;height:40px}.am-list-news-one .am-list-news-bd{padding:0 5px 4px 5px;background:#fff}.am-list-news-one .am-list{margin-bottom:0}.am-list-news-one .am-list>li{margin:0;border:0;overflow:hidden}.am-list-news-one .am-list>li>a{color:#222;font-weight:400;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:30px;line-height:30px;padding:0;position:relative;text-indent:10px}.am-list-news-one .am-list>li>a:before{width:4px;height:4px;background:#15afef;display:inline-block;content:'';position:absolute;top:14px;left:0}.am-list-news-one .am-list>li .am-list-date{color:#666;top:5px;right:0;display:none}.am-list-news-one .am-list>li:last-child{border-bottom:0}.am-list-news-one .am-list .am-list-item-dated>a{color:#222}.am-list-news-one .am-list .am-list-item-desced{padding:3px 0;border-bottom:1px dashed #dfdfdf}.am-list-news-one .am-list .am-list-item-desced:before{display:none}.am-list-news-one .am-list .am-list-item-desced .am-list-item-hd{font-weight:400;font-size:1.5rem;margin-bottom:0}.am-list-news-one .am-list .am-list-item-desced .am-list-item-hd>a:before{display:none}.am-list-news-one .am-list .am-list-item-desced a.am-list-item-hd{height:34px;line-height:34px;padding:0;color:#15afef;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-indent:0}.am-list-news-one .am-list .am-list-item-desced a.am-list-item-hd:before{display:none}.am-list-news-one .am-list .am-list-item-desced .am-list-item-text{color:#666;line-height:22px;font-size:1.4rem;max-height:none;margin-bottom:8px}.am-list-news-one .am-list .am-list-item-desced .am-list-item-text a{color:#666}.am-list-news-one .am-list .am-list-item-desced .am-list-main{padding:0 5px;position:relative}.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-date{position:absolute;right:5px;top:3.5rem;font-size:1.2rem;color:#888}.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-item-text{max-height:3rem;overflow:hidden;font-size:1.2rem;line-height:18px;color:#666}.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-item-text a{color:#666}.am-list-news-one .am-list .am-list-item-thumbed{border-bottom:1px dashed #dfdfdf;padding:0 0 5px 0}.am-list-news-one .am-list .am-list-item-thumbed:before{content:none}.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-hd{font-weight:400;height:30px;line-height:30px;margin-bottom:0}.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-hd a{font-size:1.5rem;color:#15afef;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0;text-indent:0}.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb{padding:0;height:60px}.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb a{width:100%;display:block;padding:0;text-indent:0;height:60px}.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb a img{width:100%;height:60px;vertical-align:top}.am-list-news-one .am-list .am-list-item-thumbed .am-list-main{padding:0 5px 14px 5px;position:relative}.am-list-news-one .am-list .am-list-item-thumbed .am-list-date{position:absolute;right:5px;top:3.5rem;font-size:1.2rem;color:#888}.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-text{max-height:3rem;overflow:hidden;font-size:1.2rem;line-height:18px;color:#666}.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-text a{color:#666}.am-list-news-one .am-list-news-more{background:#dfdfdf;color:#666;height:35px;line-height:35px;font-size:1.4rem;display:block;border:0;border-radius:0;padding:0}@media only screen and (max-width:640px){.am-list-news-one .am-list-item-thumb-left .am-list-thumb,.am-list-news-one .am-list-item-thumb-right .am-list-thumb{max-height:80px;overflow:hidden}.am-list-news-one .am-list-item-thumb-bottom-left .am-list-item-text,.am-list-news-one .am-list-item-thumb-bottom-right .am-list-item-text{-webkit-line-clamp:3;max-height:3.9em}.am-list-news-one .am-list-item-thumb-bottom-left .am-list-thumb,.am-list-news-one .am-list-item-thumb-bottom-right .am-list-thumb{max-height:60px;overflow:hidden}}.am-map{width:100%;height:300px}.am-map-default #bd-map{width:100%;height:100%;overflow:hidden;margin:0;font-size:14px;line-height:1.4!important}.am-map-default .BMap_bubble_title{font-weight:700}.am-map-default #BMap_mask{width:100%}.am-mechat{margin:1rem}.am-mechat .section-cbox-wap .cbox-post-wap .post-action-wap .action-function-wap .function-list-wap .list-upload-wap .upload-mutual-wap{-webkit-box-sizing:content-box;box-sizing:content-box}.am-menu{position:relative;padding:0;margin:0}.am-menu ul{padding:0;margin:0}.am-menu li{list-style:none}.am-menu a:after,.am-menu a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.am-menu-sub{z-index:1050}.am-menu-toggle{display:none}.am-menu-toggle img{display:inline-block;height:16px;width:auto;vertical-align:middle}.am-menu-nav a{display:block;padding:.8rem 0;-webkit-transition:all .45s;transition:all .45s}.am-menu-default .am-menu-nav{padding-top:8px;padding-bottom:8px}.am-menu-default .am-menu-nav a{text-align:center;height:36px;line-height:36px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0;color:#0e90d2}.am-menu-default .am-menu-nav>.am-parent>a{position:relative;-webkit-transition:.15s;transition:.15s}.am-menu-default .am-menu-nav>.am-parent>a:after{content:"\f107";margin-left:5px;-webkit-transition:.15s;transition:.15s}.am-menu-default .am-menu-nav>.am-parent>a:before{position:absolute;top:100%;margin-top:-16px;left:50%;margin-left:-12px;content:"\f0d8";display:none;color:#f1f1f1;font-size:24px}.am-menu-default .am-menu-nav>.am-parent.am-open>a{color:#095f8a}.am-menu-default .am-menu-nav>.am-parent.am-open>a:before{display:block}.am-menu-default .am-menu-nav>.am-parent.am-open>a:after{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.am-menu-default .am-menu-sub{position:absolute;left:5px;right:5px;background-color:#f1f1f1;border-radius:2px;padding-top:8px;padding-bottom:8px}.am-menu-default .am-menu-sub>li>a{color:#555}@media only screen and (min-width:641px){.am-menu-default .am-menu-nav li{width:auto;float:left;clear:none;display:inline}.am-menu-default .am-menu-nav a{padding-left:1.5rem;padding-right:.5rem}}.am-menu-dropdown1{position:relative}.am-menu-dropdown1 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-dropdown1 a{-webkit-transition:all .4s;transition:all .4s;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-menu-dropdown1 .am-menu-nav{position:absolute;left:0;right:0;z-index:1050}.am-menu-dropdown1 .am-menu-nav a{padding:.8rem}.am-menu-dropdown1 .am-menu-nav>li{width:100%}.am-menu-dropdown1 .am-menu-nav>li.am-parent>a{position:relative}.am-menu-dropdown1 .am-menu-nav>li.am-parent>a::before{content:"\f067";position:absolute;right:1rem;top:1.4rem}.am-menu-dropdown1 .am-menu-nav>li.am-parent.am-open>a{background-color:#0c80ba;border-bottom:none;color:#fff}.am-menu-dropdown1 .am-menu-nav>li.am-parent.am-open>a:before{content:"\f068"}.am-menu-dropdown1 .am-menu-nav>li.am-parent.am-open>a:after{content:"";display:inline-block;width:0;height:0;vertical-align:middle;border-top:8px solid #0c80ba;border-right:8px solid transparent;border-left:8px solid transparent;border-bottom:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);position:absolute;top:100%;left:50%;margin-left:-4px}.am-menu-dropdown1 .am-menu-nav>li>a{border-bottom:1px solid #0b76ac;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);background-color:#0e90d2;color:#fff;height:49px;line-height:49px;padding:0;text-indent:10px}.am-menu-dropdown1 .am-menu-sub{background-color:#fff}.am-menu-dropdown1 .am-menu-sub a{color:#555;height:44px;line-height:44px;text-indent:5px;padding:0}.am-menu-dropdown1 .am-menu-sub a:before{content:"\f105";color:#aaa;font-size:16px;margin-right:5px}.am-menu-dropdown2 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-dropdown2 .am-menu-nav{position:absolute;left:0;right:0;background-color:#f5f5f5;-webkit-box-shadow:0 0 5px rgba(0,0,0,.2);box-shadow:0 0 5px rgba(0,0,0,.2);z-index:1050;padding-top:8px;padding-bottom:8px}.am-menu-dropdown2 .am-menu-nav a{height:38px;line-height:38px;padding:0;text-align:center}.am-menu-dropdown2 .am-menu-nav>li>a{color:#333}.am-menu-dropdown2 .am-menu-nav>li.am-parent>a{position:relative}.am-menu-dropdown2 .am-menu-nav>li.am-parent>a:after{content:"\f107";margin-left:5px;-webkit-transition:-webkit-transform .2s;transition:transform .2s}.am-menu-dropdown2 .am-menu-nav>li.am-parent.am-open>a{position:relative}.am-menu-dropdown2 .am-menu-nav>li.am-parent.am-open>a:after{color:#0e90d2;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.am-menu-dropdown2 .am-menu-nav>li.am-parent.am-open>a:before{position:absolute;top:100%;margin-top:-16px;left:50%;margin-left:-12px;font-size:24px;content:"\f0d8";color:rgba(0,0,0,.2)}.am-menu-dropdown2 .am-menu-sub{position:absolute;left:5px;right:5px;padding:8px 0;border-radius:2px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15);background-color:#fff;z-index:1055}.am-menu-dropdown2 .am-menu-sub a{padding:0;height:35px;color:#555;line-height:35px}@media only screen and (min-width:641px){.am-menu-dropdown2 .am-menu-toggle{display:none!important}.am-menu-dropdown2 .am-menu-nav{position:static;display:block}.am-menu-dropdown2 .am-menu-nav>li{float:none;width:auto;display:inline-block}.am-menu-dropdown2 .am-menu-nav>li a{padding-left:1.5rem;padding-right:1.5rem}.am-menu-dropdown2 .am-menu-sub{left:auto;right:auto}.am-menu-dropdown2 .am-menu-sub>li{float:none;width:auto}.am-menu-dropdown2 .am-menu-sub a{padding-left:2rem;padding-right:2rem}}.am-menu-slide1 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-slide1 .am-menu-nav{background-color:#f5f5f5;padding-top:8px;padding-bottom:8px}.am-menu-slide1 .am-menu-nav.am-in:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f0d8";font-size:24px;color:#f5f5f5;position:absolute;right:16px;top:-16px}.am-menu-slide1 .am-menu-nav a{line-height:38px;height:38px;display:block;padding:0;text-align:center}.am-menu-slide1 .am-menu-nav>li>a{color:#333;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-menu-slide1 .am-menu-nav>.am-parent>a{position:relative;-webkit-transition:.15s;transition:.15s}.am-menu-slide1 .am-menu-nav>.am-parent>a:after{content:"\f107";margin-left:5px;-webkit-transition:.15s;transition:.15s}.am-menu-slide1 .am-menu-nav>.am-parent>a:before{position:absolute;top:100%;margin-top:-16px;left:50%;margin-left:-12px;content:"\f0d8";display:none;color:#0e90d2;font-size:24px}.am-menu-slide1 .am-menu-nav>.am-parent.am-open>a{color:#0e90d2}.am-menu-slide1 .am-menu-nav>.am-parent.am-open>a:before{display:block}.am-menu-slide1 .am-menu-nav>.am-parent.am-open>a:after{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.am-menu-slide1 .am-menu-sub{position:absolute;left:5px;right:5px;background-color:#0e90d2;border-radius:2px;padding-top:8px;padding-bottom:8px}.am-menu-slide1 .am-menu-sub>li>a{color:#fff}@media only screen and (min-width:641px){.am-menu-slide1 .am-menu-toggle{display:none!important}.am-menu-slide1 .am-menu-nav{background-color:#f5f5f5;display:block}.am-menu-slide1 .am-menu-nav.am-in:before{display:none}.am-menu-slide1 .am-menu-nav li{width:auto;clear:none}.am-menu-slide1 .am-menu-nav li a{padding-left:1.5rem;padding-right:1.5rem}}.am-menu-offcanvas1 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-offcanvas1 .am-menu-nav{border-bottom:1px solid rgba(0,0,0,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}.am-menu-offcanvas1 .am-menu-nav>li>a{height:44px;line-height:44px;text-indent:15px;padding:0;position:relative;color:#ccc;border-top:1px solid rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);text-shadow:0 1px 0 rgba(0,0,0,.5)}.am-menu-offcanvas1 .am-menu-nav>.am-open>a,.am-menu-offcanvas1 .am-menu-nav>li>a:hover,.am-menu-offcanvas1 .am-menu-nav>li>a:focus{background-color:#474747;color:#fff;outline:0}.am-menu-offcanvas1 .am-menu-nav>.am-active>a{background-color:#1a1a1a;color:#fff}.am-menu-offcanvas1 .am-menu-nav>.am-parent>a{-webkit-transition:all .3s;transition:all .3s}.am-menu-offcanvas1 .am-menu-nav>.am-parent>a:after{content:"\f104";position:absolute;right:1.5rem;top:1.3rem}.am-menu-offcanvas1 .am-menu-nav>.am-parent.am-open>a:after{content:"\f107"}.am-menu-offcanvas1 .am-menu-sub{border-top:1px solid rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);padding:5px 0 5px 15px;background-color:#1a1a1a;font-size:1.4rem}.am-menu-offcanvas1 .am-menu-sub a{color:#eee}.am-menu-offcanvas1 .am-menu-sub a:hover{color:#fff}.am-menu-offcanvas1 .am-nav-divider{border-top:1px solid #1a1a1a}.am-menu-offcanvas2 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-offcanvas2 .am-menu-nav{padding:10px 5px}.am-menu-offcanvas2 .am-menu-nav>li{padding:5px}.am-menu-offcanvas2 .am-menu-nav>li>a{-webkit-transition:all .3s;transition:all .3s;background-color:#404040;color:#ccc;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border:1px solid rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);text-shadow:0 1px 0 rgba(0,0,0,.5);height:44px;line-height:44px;padding:0;text-align:center}.am-menu-offcanvas2 .am-menu-nav>li>a:hover,.am-menu-offcanvas2 .am-menu-nav>li>a:focus{background-color:#262626;color:#fff;outline:0}.am-menu-offcanvas2 .am-menu-nav>.am-active>a{background-color:#262626;color:#fff}.am-menu-stack .am-menu-nav{border-bottom:1px solid #dedede;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}.am-menu-stack .am-menu-nav>.am-parent>a{-webkit-transition:all .3s;transition:all .3s}.am-menu-stack .am-menu-nav>.am-parent>a:after{content:"\f105";position:absolute;right:1.5rem;top:1.3rem;-webkit-transition:all .15s;transition:all .15s}.am-menu-stack .am-menu-nav>.am-parent.am-open>a:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-menu-stack .am-menu-nav>li>a{position:relative;color:#333;background-color:#f5f5f5;border-top:1px solid #dedede;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);height:49px;line-height:49px;text-indent:10px;padding:0}.am-menu-stack .am-menu-nav>.am-open>a,.am-menu-stack .am-menu-nav>li>a:hover,.am-menu-stack .am-menu-nav>li>a:focus{background-color:#e5e5e5;color:#222;outline:0}.am-menu-stack .am-menu-sub{padding:0;font-size:1.4rem;border-top:1px solid #dedede}.am-menu-stack .am-menu-sub a{border-bottom:1px solid #dedede;padding-left:2rem;color:#444}.am-menu-stack .am-menu-sub a:hover{color:#333}.am-menu-stack .am-menu-sub li:last-child a{border-bottom:none}.am-menu-stack .am-menu-sub>li>a{height:44px;line-height:44px;text-indent:15px;padding:0}@media only screen and (min-width:641px){.am-menu-stack .am-menu-nav{background-color:#f5f5f5}.am-menu-stack .am-menu-nav>li{float:left;width:auto;clear:none!important;display:inline-block}.am-menu-stack .am-menu-nav>li a{padding-left:1.5rem;padding-right:1.5rem}.am-menu-stack .am-menu-nav>li.am-parent>a:after{position:static;content:"\f107"}.am-menu-stack .am-menu-nav>li.am-parent.am-open a{border-bottom:none}.am-menu-stack .am-menu-nav>li.am-parent.am-open a:after{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.am-menu-stack .am-menu-nav>li.am-parent.am-open .am-menu-sub{background-color:#e5e5e5}.am-menu-stack .am-menu-sub{position:absolute;left:0;right:0;background-color:#ddd;border-top:none}.am-menu-stack .am-menu-sub li{width:auto;float:left;clear:none}}.am-menu-one{padding-left:10px;padding-right:10px;margin-bottom:10px;background-color:#f5f5f5;-webkit-box-shadow:0 2px 10px #d7d7d7;box-shadow:0 2px 10px #d7d7d7;height:40px}.am-menu-one .am-menu-nav-wrap{overflow:hidden}.am-menu-one .am-menu-nav{height:40px}.am-menu-one .am-menu-nav:before,.am-menu-one .am-menu-nav:after{content:" ";display:table}.am-menu-one .am-menu-nav:after{clear:both}.am-menu-one .am-menu-nav>li{float:left;clear:none;width:auto}.am-menu-one .am-menu-nav>li>a{display:block;height:40px;line-height:40px;padding:0 10px;color:#7d7d7d}.am-menu-one .am-menu-nav .am-active>a{color:#555;border-bottom:2px solid #15afef}.am-menu-one .am-menu-nav .am-open>a{position:relative}.am-menu-one .am-menu-nav .am-open>a:before{position:absolute;top:100%;left:50%;margin-top:-6px;margin-left:-6px;content:'';display:inline-block;width:0;height:0;vertical-align:middle;border-bottom:6px solid #15afef;border-right:6px solid transparent;border-left:6px solid transparent;border-top:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.am-menu-one .am-menu-nav-sub-wrap{position:relative;z-index:1050}.am-menu-one .am-menu-sub{position:absolute;top:1px;left:-5px;right:-5px;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.am-menu-one .am-menu-sub li{text-align:center}.am-menu-one .am-menu-sub a{padding:0;color:#555;line-height:40px}.am-navbar{position:fixed;left:0;bottom:0;width:100%;height:49px;line-height:49px;z-index:1010}.am-navbar ul{padding-left:0;margin:0;list-style:none;width:100%}.am-navbar .am-navbar-nav{padding-left:8px;padding-right:8px;text-align:center;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-navbar .am-navbar-nav li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;float:none}.am-navbar-nav{position:relative;z-index:1015}.am-navbar-nav a{display:inline-block;width:100%;height:49px;line-height:20px}.am-navbar-nav a img{display:block;vertical-align:middle;height:24px;width:24px;margin:4px auto 0}.am-navbar-nav a [class*=am-icon]{width:24px;height:24px;margin:4px auto 0;display:block;line-height:24px}.am-navbar-nav a [class*=am-icon]:before{font-size:22px;vertical-align:middle}.am-navbar-nav a .am-navbar-label{padding-top:2px;line-height:1;font-size:12px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-navbar-more [class*=am-icon-]{-webkit-transition:.15s;transition:.15s}.am-navbar-more.am-active [class*=am-icon-]{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.am-navbar-actions{position:absolute;bottom:49px;right:0;left:0;z-index:1009;opacity:0;-webkit-transition:.3s;transition:.3s;-webkit-transform:translate(0,100%);-ms-transform:translate(0,100%);transform:translate(0,100%)}.am-navbar-actions.am-active{opacity:1;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.am-navbar-actions li{line-height:42px;position:relative}.am-navbar-actions li a{display:block;width:100%;height:40px;-webkit-box-shadow:inset 0 1px rgba(220,220,220,.25);box-shadow:inset 0 1px rgba(220,220,220,.25);padding-left:20px;padding-right:36px}.am-navbar-actions li a :after{font-family:FontAwesome,sans-serif;content:"\f105";display:inline-block;position:absolute;top:0;right:20px}.am-navbar-actions li a img{vertical-align:middle;height:20px;width:20px;display:inline}#am-navbar-qrcode{width:220px;height:220px;margin-left:-110px}#am-navbar-qrcode .am-modal-bd{padding:10px}#am-navbar-qrcode canvas{display:block;width:200px;height:200px}.am-with-fixed-navbar{padding-bottom:54px}.am-navbar-default a{color:#fff}.am-navbar-default .am-navbar-nav{background-color:#0e90d2}.am-navbar-default .am-navbar-actions{background-color:#0d86c4}.am-navbar-default .am-navbar-actions a{border-bottom:1px solid #0b6fa2}.am-navbar-one a{color:#fff}.am-navbar-one .am-navbar-nav{background-color:#15afef}.am-navbar-one .am-navbar-actions{background-color:#0f9fdb}.am-navbar-one .am-navbar-actions a{border-bottom:1px solid #0d87ba}.am-pagination{position:relative}.am-pagination-default{margin-left:10px;margin-right:10px;font-size:1.6rem}.am-pagination-default .am-pagination-prev,.am-pagination-default .am-pagination-next{float:none}.am-pagination-select{margin-left:10px;margin-right:10px;font-size:1.6rem}.am-pagination-select>li>a{line-height:36px;background-color:#eee;padding:0 15px;border:0;color:#555}.am-pagination-select .am-pagination-select{position:absolute;top:0;left:50%;margin-left:-35px;width:70px;height:36px;text-align:center;border-radius:2px}.am-pagination-select .am-pagination-select select{display:block;border:0;line-height:36px;width:70px;height:36px;border-radius:2px;color:#555;background-color:#eee;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-left:18px}.am-pagination-one{margin-left:10px;margin-right:10px;text-align:center}.am-pagination-one>li>a{line-height:36px;background-color:#fff;padding:0 15px;color:#555}.am-pagination-one .am-pagination-select{float:left;position:absolute;top:0;left:50%;margin-left:-25px;width:50px;height:36px;text-align:center}.am-pagination-one .am-pagination-select select{display:block;line-height:36px;width:50px;height:36px;border-radius:2px;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-left:18px;background:#fff;border:1px solid #dfdfdf;color:#555}.am-paragraph p{margin:10px 0}.am-paragraph img{max-width:100%}.am-paragraph h1,.am-paragraph h2,.am-paragraph h3,.am-paragraph h4,.am-paragraph h5,.am-paragraph h6{color:#222}.am-paragraph table{max-width:none}.am-paragraph-table-container{overflow:hidden;background:#eee;max-width:none}.am-paragraph-table-container table{width:100%;max-width:none}.am-paragraph-table-container table th{background:#bce5fb;height:40px;border:1px solid #999;text-align:center}.am-paragraph-table-container table td{border:1px solid #999;text-align:center;vertical-align:middle;background:#fff}.am-paragraph-table-container table td p{text-indent:0;font-size:1.4rem}.am-paragraph-table-container table td a{font-size:1.4rem}.am-paragraph-default{margin:0 10px;color:#333;background-color:transparent}.am-paragraph-default p{font-size:1.4rem}.am-paragraph-default img{max-width:98%;display:block;margin:5px auto;border:1px solid #eee;padding:2px}.am-paragraph-default a{color:#0e90d2}.am-paragraph-one{color:#555;background:#fff;margin:0 10px;padding:4px}.am-paragraph-one h1,.am-paragraph-one h2,.am-paragraph-one h3,.am-paragraph-one h4,.am-paragraph-one h5,.am-paragraph-one h6{color:#333;font-weight:400;margin-top:0}.am-paragraph-one h1{font-size:2rem}.am-paragraph-one h2,.am-paragraph-one h3{font-size:1.8rem}.am-paragraph-one h4,.am-paragraph-one h5{font-size:1.6rem}.am-paragraph-one h6{font-size:1.4rem}.am-paragraph-one hr{background:#dfdfdf;height:1px;border:0;overflow:hidden}.am-paragraph-one img{max-width:100%;display:block;margin:5px 0}.am-paragraph-one a{color:#333}.am-paragraph-one p,.am-paragraph-one div,.am-paragraph-one table{font-size:1.4rem;margin:0 0 1rem 0}.am-paragraph-one ul,.am-paragraph-one ol{padding-left:0}.am-paragraph-one li{list-style:none;font-size:1.4rem}.am-slider-a1{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a1 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a1 .am-viewport{max-height:300px}.am-slider-a1 .am-control-nav{width:100%;position:absolute;bottom:5px;text-align:center;line-height:0}.am-slider-a1 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-a1 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;border-radius:50%;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-a1 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a1 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-a1 .am-direction-nav,.am-slider-a1 .am-pauseplay{display:none}.am-slider-a2{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a2 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a2 .am-viewport{max-height:300px}.am-slider-a2 .am-control-nav{width:100%;position:absolute;bottom:5px;text-align:center;line-height:0}.am-slider-a2 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-a2 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-a2 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a2 .am-control-nav li a.am-active{background:#0e93d7;cursor:default}.am-slider-a2 .am-direction-nav,.am-slider-a2 .am-pauseplay{display:none}.am-slider-a3{margin-bottom:20px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a3 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a3 .am-viewport{max-height:300px}.am-slider-a3 .am-control-nav{width:100%;position:absolute;bottom:-20px;text-align:center;height:20px;background-color:#000;padding-top:5px;line-height:0}.am-slider-a3 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-a3 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;border-radius:50%;-webkit-box-shadow:inset 0 0 3px rgba(200,200,200,.3);box-shadow:inset 0 0 3px rgba(200,200,200,.3)}.am-slider-a3 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a3 .am-control-nav li a.am-active{background:#0e90d2;cursor:default}.am-slider-a3 .am-direction-nav,.am-slider-a3 .am-pauseplay{display:none}.am-slider-a4{margin-bottom:30px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a4 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a4 .am-viewport{max-height:300px}.am-slider-a4 .am-control-nav{width:100%;position:absolute;bottom:-15px;text-align:center;line-height:0}.am-slider-a4 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-a4 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;border-radius:50%;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-a4 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a4 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-a4 .am-direction-nav,.am-slider-a4 .am-pauseplay{display:none}.am-slider-a5{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a5 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a5 .am-viewport{max-height:300px}.am-slider-a5 .am-control-nav{width:100%;position:absolute;text-align:center;height:6px;display:table;bottom:0;font-size:0;line-height:0}.am-slider-a5 .am-control-nav li{display:table-cell}.am-slider-a5 .am-control-nav li a{width:100%;height:6px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px}.am-slider-a5 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a5 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-a5 .am-direction-nav,.am-slider-a5 .am-pauseplay{display:none}.am-slider-b1{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-b1 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-b1 .am-viewport{max-height:300px}.am-slider-b1 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:8px 0;margin:-20px 0 0;position:absolute;top:50%;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;color:#fff;text-shadow:1px 1px 0 rgba(255,255,255,.3);background-color:rgba(0,0,0,.5);font-size:0;text-align:center;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-b1 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:24px}.am-slider-b1 .am-direction-nav a.am-prev{left:0;padding-right:5px;border-bottom-right-radius:5px;border-top-right-radius:5px}.am-slider-b1 .am-direction-nav a.am-next{right:0;padding-left:5px;border-bottom-left-radius:5px;border-top-left-radius:5px}.am-slider-b1 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-b1 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-b1:hover .am-prev{opacity:.7}.am-slider-b1:hover .am-prev:hover{opacity:1}.am-slider-b1:hover .am-next{opacity:.7}.am-slider-b1:hover .am-next:hover{opacity:1}.am-slider-b1 .am-control-nav,.am-slider-b1 .am-pauseplay{display:none}.am-slider-b2{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-b2 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-b2 .am-viewport{max-height:300px}.am-slider-b2 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:4px;margin:-16px 0 0;position:absolute;top:50%;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;color:#fff;text-shadow:1px 1px 0 rgba(255,255,255,.3);background-color:rgba(0,0,0,.5);font-size:0;text-align:center;border-radius:50%;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-b2 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:16px;line-height:24px}.am-slider-b2 .am-direction-nav a.am-prev{left:5px}.am-slider-b2 .am-direction-nav a.am-next{right:5px}.am-slider-b2 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-b2 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-b2:hover .am-prev{opacity:.7}.am-slider-b2:hover .am-prev:hover{opacity:1}.am-slider-b2:hover .am-next{opacity:.7}.am-slider-b2:hover .am-next:hover{opacity:1}.am-slider-b2 .am-control-nav,.am-slider-b2 .am-pauseplay{display:none}.am-slider-b3{margin:15px 30px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-b3 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-b3 .am-viewport{max-height:300px}.am-slider-b3 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:4px;margin:-16px 0 0;position:absolute;top:50%;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;color:#333;text-shadow:1px 1px 0 rgba(255,255,255,.3);font-size:0;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-b3 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:24px}.am-slider-b3 .am-direction-nav a.am-prev{left:-25px}.am-slider-b3 .am-direction-nav a.am-next{right:-25px;text-align:right}.am-slider-b3 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-b3 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-b3:hover .am-prev{opacity:.7}.am-slider-b3:hover .am-prev:hover{opacity:1}.am-slider-b3:hover .am-next{opacity:.7}.am-slider-b3:hover .am-next:hover{opacity:1}.am-slider-b3 .am-control-nav,.am-slider-b3 .am-pauseplay{display:none}.am-slider-b4{margin:15px 20px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-b4 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-b4 .am-viewport{max-height:300px}.am-slider-b4 .am-direction-nav a{position:absolute;top:50%;z-index:10;display:block;-webkit-box-sizing:content-box;box-sizing:content-box;width:24px;height:24px;margin:-16px 0 0;padding:4px;overflow:hidden;opacity:.45;background-color:rgba(0,0,0,.8);cursor:pointer;text-shadow:1px 1px 0 rgba(255,255,255,.3);font-size:0;border-radius:50%;text-align:center;color:#fff;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-b4 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:20px;line-height:24px}.am-slider-b4 .am-direction-nav a.am-prev{left:-15px}.am-slider-b4 .am-direction-nav a.am-next{right:-15px}.am-slider-b4 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-b4 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-b4:hover .am-prev{opacity:.7}.am-slider-b4:hover .am-prev:hover{opacity:.9}.am-slider-b4:hover .am-next{opacity:.7}.am-slider-b4:hover .am-next:hover{opacity:.9}.am-slider-b4 .am-control-nav,.am-slider-b4 .am-pauseplay{display:none}.am-slider-c1{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-c1 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-c1 .am-viewport{max-height:300px}.am-slider-c1 .am-control-nav{position:absolute;bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:6px;font-size:0;line-height:0;text-align:center}.am-slider-c1 .am-control-nav li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-slider-c1 .am-control-nav li a{width:100%;height:6px;display:block;background-color:rgba(0,0,0,.7);cursor:pointer;text-indent:-9999px}.am-slider-c1 .am-control-nav li a:hover{background:rgba(0,0,0,.8)}.am-slider-c1 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-c1 .am-slider-desc{background-color:rgba(0,0,0,.6);position:absolute;bottom:6px;padding:8px;width:100%;color:#fff;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-c1 .am-direction-nav,.am-slider-c1 .am-pauseplay{display:none}.am-slider-c2{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-c2 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-c2 .am-viewport{max-height:300px}.am-slider-c2 .am-control-nav{position:absolute;bottom:15px;right:0;height:6px;text-align:center;font-size:0;line-height:0}.am-slider-c2 .am-control-nav li{display:inline-block;margin-right:6px}.am-slider-c2 .am-control-nav li a{width:6px;height:6px;display:block;background-color:rgba(255,255,255,.4);cursor:pointer;text-indent:-9999px}.am-slider-c2 .am-control-nav li a:hover{background:rgba(230,230,230,.4)}.am-slider-c2 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-c2 .am-slider-desc{background-color:rgba(0,0,0,.6);position:absolute;bottom:0;padding:8px 60px 8px 8px;width:100%;color:#fff;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-c2 .am-direction-nav,.am-slider-c2 .am-pauseplay{display:none}.am-slider-c3{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-c3 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-c3 .am-viewport{max-height:300px}.am-slider-c3 .am-slider-desc{background-color:rgba(0,0,0,.6);position:absolute;bottom:10px;right:60px;height:30px;left:0;padding-right:5px;color:#fff;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-c3 .am-slider-counter{margin-right:5px;display:inline-block;height:30px;background-color:#0e90d2;width:40px;text-align:center;line-height:30px;color:#eee;font-size:1rem}.am-slider-c3 .am-slider-counter .am-active{font-size:1.8rem;font-weight:700;color:#fff}.am-slider-c3 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:4px 0;margin:-16px 0 0;position:absolute;top:50%;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;color:#fff;text-shadow:1px 1px 0 rgba(255,255,255,.3);background-color:rgba(0,0,0,.5);font-size:0;text-align:center;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-c3 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:16px;line-height:24px}.am-slider-c3 .am-direction-nav a.am-prev{left:0;padding-right:5px}.am-slider-c3 .am-direction-nav a.am-next{right:0;padding-left:5px}.am-slider-c3 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-c3 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-c3:hover .am-prev{opacity:.7}.am-slider-c3:hover .am-prev:hover{opacity:1}.am-slider-c3:hover .am-next{opacity:.7}.am-slider-c3:hover .am-next:hover{opacity:1}.am-slider-c3 .am-control-nav,.am-slider-c3 .am-pauseplay{display:none}.am-slider-c4{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-c4 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-c4 .am-viewport{max-height:300px}.am-slider-c4 .am-slider-desc{width:100%;background-color:rgba(0,0,0,.6);position:absolute;bottom:0;right:0;left:0;padding:8px 40px;color:#fff;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-c4 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:4px 0;margin:0;position:absolute;bottom:4px;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;text-shadow:1px 1px 0 rgba(255,255,255,.3);font-size:0;text-align:center;color:rgba(0,0,0,.7);-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-c4 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:24px}.am-slider-c4 .am-direction-nav a.am-prev{left:0;padding-right:5px}.am-slider-c4 .am-direction-nav a.am-next{right:0;padding-left:5px}.am-slider-c4 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-c4 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-c4:hover .am-prev{opacity:.7}.am-slider-c4:hover .am-prev:hover{opacity:1}.am-slider-c4:hover .am-next{opacity:.7}.am-slider-c4:hover .am-next:hover{opacity:1}.am-slider-c4 .am-control-nav,.am-slider-c4 .am-pauseplay{display:none}.am-slider-d1{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-d1 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-d1 .am-viewport{max-height:300px}.am-slider-d1 .am-slider-desc{padding:8px 35px;width:100%;color:#fff;background-color:#0e90d2}.am-slider-d1 .am-slider-title{font-weight:400;margin-bottom:2px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-d1 .am-slider-more{color:#eee;font-size:1.3rem}.am-slider-d1 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;margin:0;position:absolute;bottom:18px;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;text-shadow:1px 1px 0 rgba(255,255,255,.3);font-size:0;text-align:center;border:1px solid rgba(255,255,255,.9);color:rgba(255,255,255,.9);border-radius:50%;-webkit-transition:all 3s ease;transition:all 3s ease}.am-slider-d1 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:16px;line-height:24px}.am-slider-d1 .am-direction-nav a.am-prev{left:5px}.am-slider-d1 .am-direction-nav a.am-next{right:5px}.am-slider-d1 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-d1 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-d1:hover .am-prev{opacity:.7}.am-slider-d1:hover .am-prev:hover{opacity:1}.am-slider-d1:hover .am-next{opacity:.7}.am-slider-d1:hover .am-next:hover{opacity:1}.am-slider-d1 .am-control-nav,.am-slider-d1 .am-pauseplay{display:none}.am-slider-d2{margin-bottom:20px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-d2 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-d2 .am-viewport{max-height:300px}.am-slider-d2 .am-slider-desc{position:absolute;left:10px;bottom:20px;right:50px;color:#fff}.am-slider-d2 .am-slider-content{background-color:rgba(0,0,0,.7);padding:10px 6px;margin-bottom:10px}.am-slider-d2 .am-slider-content p{margin:0;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-size:1.4rem}.am-slider-d2 .am-slider-title{font-weight:400;margin-bottom:5px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-d2 .am-slider-more{color:#eee;font-size:1.3rem;background-color:#0e90d2;padding:2px 10px}.am-slider-d2 .am-control-nav{width:100%;position:absolute;bottom:-15px;text-align:center}.am-slider-d2 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-d2 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;border-radius:50%;font-size:0;line-height:0;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-d2 .am-control-nav li a:hover{background:rgba(0,0,0,.5)}.am-slider-d2 .am-control-nav li a.am-active{background:#0e90d2;cursor:default}.am-slider-d2 .am-direction-nav,.am-slider-d2 .am-pauseplay{display:none}.am-slider-d3{margin-bottom:10px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-d3 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-d3 .am-viewport{max-height:300px}.am-slider-d3 .am-slider-desc{position:absolute;bottom:0;color:#fff;width:100%;background-color:rgba(0,0,0,.7);padding:8px 5px}.am-slider-d3 .am-slider-desc p{margin:0;font-size:1.3rem;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-d3 .am-slider-title{font-weight:400;margin-bottom:5px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-d3 .am-control-thumbs{position:static;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-slider-d3 .am-control-thumbs li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding:12px 4px 4px;position:relative}.am-slider-d3 .am-control-thumbs img{width:100%;display:block;opacity:.85;cursor:pointer}.am-slider-d3 .am-control-thumbs img:hover{opacity:1}.am-slider-d3 .am-control-thumbs .am-active{opacity:1;cursor:default}.am-slider-d3 .am-control-thumbs .am-active+i{position:absolute;top:0;left:50%;content:"";display:inline-block;width:0;height:0;vertical-align:middle;border-top:8px solid rgba(0,0,0,.7);border-right:8px solid transparent;border-left:8px solid transparent;border-bottom:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);margin-left:-4px;-webkit-transition:all .2s;transition:all .2s}.am-slider-d3 .am-direction-nav,.am-slider-d3 .am-pauseplay{display:none}.am-slider-one{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.5);box-shadow:0 1px 4px rgba(0,0,0,.5);margin:0 10px}.am-slider-one .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-one .am-viewport{max-height:300px}.am-slider-one .am-viewport .am-slider-desc{position:absolute;left:0;bottom:0;height:26px;width:100%;line-height:26px;background:rgba(0,0,0,.5);color:#fff}.am-slider-one .am-viewport .am-slider-desc .am-slider-title{font-weight:400;font-size:12px;text-indent:4px;padding-right:80px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-one .am-control-nav{display:none}.am-slider-one .am-direction-nav a{position:absolute;top:50%;z-index:10;display:block;width:24px;height:24px;margin:-12px 0 0;overflow:hidden;opacity:.45;cursor:pointer;color:rgba(0,0,0,.8);text-shadow:1px 1px 0 rgba(255,255,255,.3);-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-one .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:rgba(0,0,0,.7);content:"\f053";font-size:24px}.am-slider-one .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-one .am-direction-nav .am-prev{left:10px}.am-slider-one .am-direction-nav .am-next{right:10px;text-align:right}.am-slider-one .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-one:hover .am-prev{opacity:.7;left:10px}.am-slider-one:hover .am-prev:hover{opacity:1}.am-slider-one:hover .am-next{opacity:.7;right:10px}.am-slider-one:hover .am-next:hover{opacity:1}.am-slider-one .am-pauseplay{display:none}[data-am-widget=tabs]{margin:10px}[data-am-widget=tabs] .am-tabs-nav{width:100%;padding:0;margin:0;list-style:none;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}[data-am-widget=tabs] .am-tabs-nav li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}[data-am-widget=tabs] .am-tabs-nav a{display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-tabs-default .am-tabs-nav{line-height:40px;background-color:#eee}.am-tabs-default .am-tabs-nav a{color:#222;line-height:42px}.am-tabs-default .am-tabs-nav>.am-active a{background-color:#0e90d2;color:#fff}.am-tabs-d2 .am-tabs-nav{background-color:#eee}.am-tabs-d2 .am-tabs-nav li{height:42px}.am-tabs-d2 .am-tabs-nav a{color:#222;line-height:42px}.am-tabs-d2 .am-tabs-nav>.am-active{position:relative;background-color:#fcfcfc;border-bottom:2px solid #0e90d2}.am-tabs-d2 .am-tabs-nav>.am-active a{line-height:40px;color:#0e90d2}.am-tabs-d2 .am-tabs-nav>.am-active:after{position:absolute;width:0;height:0;bottom:0;left:50%;margin-left:-5px;border:6px transparent solid;content:"";z-index:1;border-bottom-color:#0e90d2}.am-tabs-one{background:#fff}.am-tabs-one .am-tabs-nav{height:36px;background-color:#fff;font-size:14px;border-radius:2px}.am-tabs-one .am-tabs-nav a{line-height:34px;color:#15afef}.am-tabs-one .am-tabs-nav li{border:1px solid #15afef}.am-tabs-one .am-tabs-nav li:first-child{border-bottom-left-radius:2px;border-top-left-radius:2px}.am-tabs-one .am-tabs-nav li:last-child{border-bottom-right-radius:2px;border-top-right-radius:2px}.am-tabs-one .am-tabs-nav li+li{border-left:none}.am-tabs-one .am-tabs-nav .am-active a{background-color:#15afef;color:#fff}.am-tabs-one .am-tabs-bd{border:none}.am-tabs-one .am-tab-panel{padding:15px 5px 20px}.am-titlebar{margin-top:20px;height:45px;font-size:100%}.am-titlebar h2{margin-top:0;margin-bottom:0;font-size:1.6rem}.am-titlebar .am-titlebar-title img{height:24px;width:auto}.am-titlebar-default{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:10px;margin-right:10px;background-color:transparent;border-bottom:1px solid #dedede;line-height:44px}.am-titlebar-default a{color:#0e90d2}.am-titlebar-default .am-titlebar-title{position:relative;padding-left:12px;color:#0e90d2;font-size:1.8rem;text-align:left;font-weight:700}.am-titlebar-default .am-titlebar-title:before{content:"";position:absolute;left:2px;top:8px;bottom:8px;border-left:3px solid #0e90d2}.am-titlebar-default .am-titlebar-nav{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;text-align:right}.am-titlebar-default .am-titlebar-nav a{margin-right:10px}.am-titlebar-default .am-titlebar-nav a:last-child{margin-right:5px}.am-titlebar-multi{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#f5f5f5;border-top:2px solid #3bb4f2;border-bottom:1px solid #e8e8e8}.am-titlebar-multi a{color:#0e90d2}.am-titlebar-multi .am-titlebar-title{padding-left:10px;color:#0e90d2;font-size:1.8rem;text-align:left;font-weight:700;line-height:42px}.am-titlebar-multi .am-titlebar-nav{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;text-align:right;line-height:42px}.am-titlebar-multi .am-titlebar-nav a{margin-right:10px}.am-titlebar-cols{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:10px;background-color:#f5f5f5;color:#555;font-size:18px;border-top:2px solid #e1e1e1;line-height:41px}.am-titlebar-cols a{color:#555}.am-titlebar-cols .am-titlebar-title{color:#0e90d2;margin-right:15px;border-bottom:2px solid #0e90d2;font-weight:700}.am-titlebar-cols .am-titlebar-title a{color:#0e90d2}.am-titlebar-cols .am-titlebar-nav{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-titlebar-cols .am-titlebar-nav a{display:inline-block;margin-right:15px;line-height:41px;border-bottom:2px solid transparent}.am-titlebar-cols .am-titlebar-nav a:hover{color:#3c3c3c;border-bottom-color:#0e90d2}.am-titlebar-cols .am-titlebar-nav a:last-child{margin-right:10px}.am-titlebar-one{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:10px;margin-right:10px;height:45px;line-height:44px;background-color:#fff;overflow:hidden;border-bottom:1px solid #15afef}.am-titlebar-one .am-titlebar-title{padding-left:12px;position:relative;color:#222;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-titlebar-one .am-titlebar-title:before{content:"";position:absolute;left:2px;top:8px;bottom:8px;border-left:3px solid #15afef}.am-titlebar-one .am-titlebar-title a{color:#222}.am-titlebar-one .am-titlebar-title img{height:24px;vertical-align:top;margin-top:10px}.am-titlebar-one .am-titlebar-title h1,.am-titlebar-one .am-titlebar-title h2,.am-titlebar-one .am-titlebar-title h3,.am-titlebar-one .am-titlebar-title h4,.am-titlebar-one .am-titlebar-title h5,.am-titlebar-one .am-titlebar-title h6,.am-titlebar-one .am-titlebar-title strong,.am-titlebar-one .am-titlebar-title em{font-style:normal;font-weight:400;margin-bottom:0}.am-titlebar-one .am-titlebar-title ul,.am-titlebar-one .am-titlebar-title li{list-style:none;padding-left:0}.am-titlebar-one .am-titlebar-nav{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;text-align:right;padding-right:5px;color:#999;font-size:1.4rem}.am-titlebar-one .am-titlebar-nav a{color:#999} \ No newline at end of file diff --git a/src/main/webapp/res/amazonUi/css/amazeui.min.css b/src/main/webapp/res/amazonUi/css/amazeui.min.css new file mode 100644 index 0000000..7210996 --- /dev/null +++ b/src/main/webapp/res/amazonUi/css/amazeui.min.css @@ -0,0 +1 @@ +/*! Amaze UI v2.1.0 | by Amaze UI Team | (c) 2015 AllMobilize, Inc. | Licensed under MIT | 2015-01-13T02:01:01 UTC */*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box}html,body{min-height:100%}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template,script{display:none}a{background-color:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}ins,a{text-decoration:none}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}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:-.5em}sub{bottom:-.25em}img{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:100%;height:auto;vertical-align:middle;border:0}svg:not(:root){overflow:hidden}figure{margin:0}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",FontAwesome,monospace;font-size:1em}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}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}input[type=radio],input[type=checkbox]{cursor:pointer;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-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}textarea{overflow:auto;vertical-align:top;resize:vertical}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:62.5%;-webkit-tap-highlight-color:transparent}body{position:relative;background:#fff;font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3",FontAwesome,sans-serif;font-weight:400;line-height:1.6;color:#333;font-size:1.6rem}body,input,textarea,select,button{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga","kern"}@media only screen and (max-width:640px){body{word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;-moz-hyphens:auto;hyphens:auto}}a{color:#0e90d2}a:hover,a:focus{color:#095f8a}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}ins{background:#ffa;color:#333}mark{background:#ffa;color:#333}abbr[title],dfn[title]{cursor:help}dfn[title]{border-bottom:1px dotted;font-style:normal}p,hr,ul,ol,dl,blockquote,pre,address,fieldset,figure{margin:0 0 1.6rem 0}*+p,*+hr,*+ul,*+ol,*+dl,*+blockquote,*+pre,*+address,*+fieldset,*+figure{margin-top:1.6rem}h1,h2,h3,h4,h5,h6{margin:0 0 1.6rem 0;font-weight:600;font-size:100%}h1{font-size:1.5em}h2{font-size:1.25em}*+h1,*+h2,*+h3,*+h4,*+h5,*+h6{margin-top:2em}ul,ol{padding-left:2em}ul>li>ul,ul>li>ol,ol>li>ol,ol>li>ul{margin:1em 0}dt{font-weight:700}dt+dd{margin-top:.5em}dd{margin-left:0}dd+dt{margin-top:1em}hr{display:block;padding:0;border:0;height:0;border-top:1px solid #eee;-webkit-box-sizing:content-box;box-sizing:content-box}address{font-style:normal}blockquote{padding-top:5px;padding-bottom:5px;padding-left:15px;border-left:4px solid #ddd;font-family:Georgia,"Times New Roman",Times,Kai,"Kaiti SC",KaiTi,BiauKai,FontAwesome,serif}blockquote small{display:block;color:#999;font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3",FontAwesome,sans-serif;text-align:right}blockquote p:last-of-type{margin-bottom:0}iframe{border:0}button,input:not([type=radio]):not([type=checkbox]),select{vertical-align:middle}.am-container{-webkit-box-sizing:border-box;box-sizing:border-box;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem;width:100%;max-width:1000px}.am-container:before,.am-container:after{content:" ";display:table}.am-container:after{clear:both}@media only screen and (min-width:641px){.am-container{padding-left:1.5rem;padding-right:1.5rem}}.am-container>.am-g{width:auto;margin-left:-1rem;margin-right:-1rem}@media only screen and (min-width:641px){.am-container>.am-g{margin-left:-1.5rem;margin-right:-1.5rem}}.am-g{margin:0 auto;width:100%}.am-g:before,.am-g:after{content:" ";display:table}.am-g:after{clear:both}.am-g .am-g{margin-left:-1rem;margin-right:-1rem;width:auto}.am-g .am-g.am-g-collapse{margin-left:0;margin-right:0;width:auto}@media only screen and (min-width:641px){.am-g .am-g{margin-left:-1.5rem;margin-right:-1.5rem}}.am-g.am-g-collapse .am-g{margin-left:0;margin-right:0}.am-g-collapse [class*=am-u-]{padding-left:0;padding-right:0}.am-g-fixed{max-width:1000px}[class*=am-u-]{width:100%;padding-left:1rem;padding-right:1rem;float:left;position:relative}[class*=am-u-]+[class*=am-u-]:last-child{float:right}[class*=am-u-]+[class*=am-u-].am-u-end{float:left}@media only screen and (min-width:641px){[class*=am-u-]{padding-left:1.5rem;padding-right:1.5rem}}[class*=am-u-pull-]{left:auto}[class*=am-u-push-]{right:auto}@media only screen{.am-u-sm-1{width:8.33333333%}.am-u-sm-2{width:16.66666667%}.am-u-sm-3{width:25%}.am-u-sm-4{width:33.33333333%}.am-u-sm-5{width:41.66666667%}.am-u-sm-6{width:50%}.am-u-sm-7{width:58.33333333%}.am-u-sm-8{width:66.66666667%}.am-u-sm-9{width:75%}.am-u-sm-10{width:83.33333333%}.am-u-sm-11{width:91.66666667%}.am-u-sm-12{width:100%}.am-u-sm-pull-0{right:0}.am-u-sm-pull-1{right:8.33333333%}.am-u-sm-pull-2{right:16.66666667%}.am-u-sm-pull-3{right:25%}.am-u-sm-pull-4{right:33.33333333%}.am-u-sm-pull-5{right:41.66666667%}.am-u-sm-pull-6{right:50%}.am-u-sm-pull-7{right:58.33333333%}.am-u-sm-pull-8{right:66.66666667%}.am-u-sm-pull-9{right:75%}.am-u-sm-pull-10{right:83.33333333%}.am-u-sm-pull-11{right:91.66666667%}.am-u-sm-push-0{left:0}.am-u-sm-push-1{left:8.33333333%}.am-u-sm-push-2{left:16.66666667%}.am-u-sm-push-3{left:25%}.am-u-sm-push-4{left:33.33333333%}.am-u-sm-push-5{left:41.66666667%}.am-u-sm-push-6{left:50%}.am-u-sm-push-7{left:58.33333333%}.am-u-sm-push-8{left:66.66666667%}.am-u-sm-push-9{left:75%}.am-u-sm-push-10{left:83.33333333%}.am-u-sm-push-11{left:91.66666667%}.am-u-sm-offset-0{margin-left:0}.am-u-sm-offset-1{margin-left:8.33333333%}.am-u-sm-offset-2{margin-left:16.66666667%}.am-u-sm-offset-3{margin-left:25%}.am-u-sm-offset-4{margin-left:33.33333333%}.am-u-sm-offset-5{margin-left:41.66666667%}.am-u-sm-offset-6{margin-left:50%}.am-u-sm-offset-7{margin-left:58.33333333%}.am-u-sm-offset-8{margin-left:66.66666667%}.am-u-sm-offset-9{margin-left:75%}.am-u-sm-offset-10{margin-left:83.33333333%}.am-u-sm-offset-11{margin-left:91.66666667%}.am-u-sm-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}[class*=am-u-].am-u-sm-centered{margin-left:auto;margin-right:auto;float:none}[class*=am-u-].am-u-sm-centered:last-child{float:none}[class*=am-u-].am-u-sm-uncentered{margin-left:0;margin-right:0;float:left}[class*=am-u-].am-u-sm-uncentered:last-child{float:left}}@media only screen and (min-width:641px){.am-u-md-1{width:8.33333333%}.am-u-md-2{width:16.66666667%}.am-u-md-3{width:25%}.am-u-md-4{width:33.33333333%}.am-u-md-5{width:41.66666667%}.am-u-md-6{width:50%}.am-u-md-7{width:58.33333333%}.am-u-md-8{width:66.66666667%}.am-u-md-9{width:75%}.am-u-md-10{width:83.33333333%}.am-u-md-11{width:91.66666667%}.am-u-md-12{width:100%}.am-u-md-pull-0{right:0}.am-u-md-pull-1{right:8.33333333%}.am-u-md-pull-2{right:16.66666667%}.am-u-md-pull-3{right:25%}.am-u-md-pull-4{right:33.33333333%}.am-u-md-pull-5{right:41.66666667%}.am-u-md-pull-6{right:50%}.am-u-md-pull-7{right:58.33333333%}.am-u-md-pull-8{right:66.66666667%}.am-u-md-pull-9{right:75%}.am-u-md-pull-10{right:83.33333333%}.am-u-md-pull-11{right:91.66666667%}.am-u-md-push-0{left:0}.am-u-md-push-1{left:8.33333333%}.am-u-md-push-2{left:16.66666667%}.am-u-md-push-3{left:25%}.am-u-md-push-4{left:33.33333333%}.am-u-md-push-5{left:41.66666667%}.am-u-md-push-6{left:50%}.am-u-md-push-7{left:58.33333333%}.am-u-md-push-8{left:66.66666667%}.am-u-md-push-9{left:75%}.am-u-md-push-10{left:83.33333333%}.am-u-md-push-11{left:91.66666667%}.am-u-md-offset-0{margin-left:0}.am-u-md-offset-1{margin-left:8.33333333%}.am-u-md-offset-2{margin-left:16.66666667%}.am-u-md-offset-3{margin-left:25%}.am-u-md-offset-4{margin-left:33.33333333%}.am-u-md-offset-5{margin-left:41.66666667%}.am-u-md-offset-6{margin-left:50%}.am-u-md-offset-7{margin-left:58.33333333%}.am-u-md-offset-8{margin-left:66.66666667%}.am-u-md-offset-9{margin-left:75%}.am-u-md-offset-10{margin-left:83.33333333%}.am-u-md-offset-11{margin-left:91.66666667%}.am-u-md-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}[class*=am-u-].am-u-md-centered{margin-left:auto;margin-right:auto;float:none}[class*=am-u-].am-u-md-centered:last-child{float:none}[class*=am-u-].am-u-md-uncentered{margin-left:0;margin-right:0;float:left}[class*=am-u-].am-u-md-uncentered:last-child{float:left}}@media only screen and (min-width:1025px){.am-u-lg-1{width:8.33333333%}.am-u-lg-2{width:16.66666667%}.am-u-lg-3{width:25%}.am-u-lg-4{width:33.33333333%}.am-u-lg-5{width:41.66666667%}.am-u-lg-6{width:50%}.am-u-lg-7{width:58.33333333%}.am-u-lg-8{width:66.66666667%}.am-u-lg-9{width:75%}.am-u-lg-10{width:83.33333333%}.am-u-lg-11{width:91.66666667%}.am-u-lg-12{width:100%}.am-u-lg-pull-0{right:0}.am-u-lg-pull-1{right:8.33333333%}.am-u-lg-pull-2{right:16.66666667%}.am-u-lg-pull-3{right:25%}.am-u-lg-pull-4{right:33.33333333%}.am-u-lg-pull-5{right:41.66666667%}.am-u-lg-pull-6{right:50%}.am-u-lg-pull-7{right:58.33333333%}.am-u-lg-pull-8{right:66.66666667%}.am-u-lg-pull-9{right:75%}.am-u-lg-pull-10{right:83.33333333%}.am-u-lg-pull-11{right:91.66666667%}.am-u-lg-push-0{left:0}.am-u-lg-push-1{left:8.33333333%}.am-u-lg-push-2{left:16.66666667%}.am-u-lg-push-3{left:25%}.am-u-lg-push-4{left:33.33333333%}.am-u-lg-push-5{left:41.66666667%}.am-u-lg-push-6{left:50%}.am-u-lg-push-7{left:58.33333333%}.am-u-lg-push-8{left:66.66666667%}.am-u-lg-push-9{left:75%}.am-u-lg-push-10{left:83.33333333%}.am-u-lg-push-11{left:91.66666667%}.am-u-lg-offset-0{margin-left:0}.am-u-lg-offset-1{margin-left:8.33333333%}.am-u-lg-offset-2{margin-left:16.66666667%}.am-u-lg-offset-3{margin-left:25%}.am-u-lg-offset-4{margin-left:33.33333333%}.am-u-lg-offset-5{margin-left:41.66666667%}.am-u-lg-offset-6{margin-left:50%}.am-u-lg-offset-7{margin-left:58.33333333%}.am-u-lg-offset-8{margin-left:66.66666667%}.am-u-lg-offset-9{margin-left:75%}.am-u-lg-offset-10{margin-left:83.33333333%}.am-u-lg-offset-11{margin-left:91.66666667%}.am-u-lg-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}[class*=am-u-].am-u-lg-centered{margin-left:auto;margin-right:auto;float:none}[class*=am-u-].am-u-lg-centered:last-child{float:none}[class*=am-u-].am-u-lg-uncentered{margin-left:0;margin-right:0;float:left}[class*=am-u-].am-u-lg-uncentered:last-child{float:left}}[class*=am-avg-]{display:block;padding:0;margin:0;list-style:none}[class*=am-avg-]:before,[class*=am-avg-]:after{content:" ";display:table}[class*=am-avg-]:after{clear:both}[class*=am-avg-]>li{display:block;height:auto;float:left}@media only screen{.am-avg-sm-1>li{width:100%}.am-avg-sm-1>li:nth-of-type(n){clear:none}.am-avg-sm-1>li:nth-of-type(1n+1){clear:both}.am-avg-sm-2>li{width:50%}.am-avg-sm-2>li:nth-of-type(n){clear:none}.am-avg-sm-2>li:nth-of-type(2n+1){clear:both}.am-avg-sm-3>li{width:33.33333333%}.am-avg-sm-3>li:nth-of-type(n){clear:none}.am-avg-sm-3>li:nth-of-type(3n+1){clear:both}.am-avg-sm-4>li{width:25%}.am-avg-sm-4>li:nth-of-type(n){clear:none}.am-avg-sm-4>li:nth-of-type(4n+1){clear:both}.am-avg-sm-5>li{width:20%}.am-avg-sm-5>li:nth-of-type(n){clear:none}.am-avg-sm-5>li:nth-of-type(5n+1){clear:both}.am-avg-sm-6>li{width:16.66666667%}.am-avg-sm-6>li:nth-of-type(n){clear:none}.am-avg-sm-6>li:nth-of-type(6n+1){clear:both}.am-avg-sm-7>li{width:14.28571429%}.am-avg-sm-7>li:nth-of-type(n){clear:none}.am-avg-sm-7>li:nth-of-type(7n+1){clear:both}.am-avg-sm-8>li{width:12.5%}.am-avg-sm-8>li:nth-of-type(n){clear:none}.am-avg-sm-8>li:nth-of-type(8n+1){clear:both}.am-avg-sm-9>li{width:11.11111111%}.am-avg-sm-9>li:nth-of-type(n){clear:none}.am-avg-sm-9>li:nth-of-type(9n+1){clear:both}.am-avg-sm-10>li{width:10%}.am-avg-sm-10>li:nth-of-type(n){clear:none}.am-avg-sm-10>li:nth-of-type(10n+1){clear:both}.am-avg-sm-11>li{width:9.09090909%}.am-avg-sm-11>li:nth-of-type(n){clear:none}.am-avg-sm-11>li:nth-of-type(11n+1){clear:both}.am-avg-sm-12>li{width:8.33333333%}.am-avg-sm-12>li:nth-of-type(n){clear:none}.am-avg-sm-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width:641px){.am-avg-md-1>li{width:100%}.am-avg-md-1>li:nth-of-type(n){clear:none}.am-avg-md-1>li:nth-of-type(1n+1){clear:both}.am-avg-md-2>li{width:50%}.am-avg-md-2>li:nth-of-type(n){clear:none}.am-avg-md-2>li:nth-of-type(2n+1){clear:both}.am-avg-md-3>li{width:33.33333333%}.am-avg-md-3>li:nth-of-type(n){clear:none}.am-avg-md-3>li:nth-of-type(3n+1){clear:both}.am-avg-md-4>li{width:25%}.am-avg-md-4>li:nth-of-type(n){clear:none}.am-avg-md-4>li:nth-of-type(4n+1){clear:both}.am-avg-md-5>li{width:20%}.am-avg-md-5>li:nth-of-type(n){clear:none}.am-avg-md-5>li:nth-of-type(5n+1){clear:both}.am-avg-md-6>li{width:16.66666667%}.am-avg-md-6>li:nth-of-type(n){clear:none}.am-avg-md-6>li:nth-of-type(6n+1){clear:both}.am-avg-md-7>li{width:14.28571429%}.am-avg-md-7>li:nth-of-type(n){clear:none}.am-avg-md-7>li:nth-of-type(7n+1){clear:both}.am-avg-md-8>li{width:12.5%}.am-avg-md-8>li:nth-of-type(n){clear:none}.am-avg-md-8>li:nth-of-type(8n+1){clear:both}.am-avg-md-9>li{width:11.11111111%}.am-avg-md-9>li:nth-of-type(n){clear:none}.am-avg-md-9>li:nth-of-type(9n+1){clear:both}.am-avg-md-10>li{width:10%}.am-avg-md-10>li:nth-of-type(n){clear:none}.am-avg-md-10>li:nth-of-type(10n+1){clear:both}.am-avg-md-11>li{width:9.09090909%}.am-avg-md-11>li:nth-of-type(n){clear:none}.am-avg-md-11>li:nth-of-type(11n+1){clear:both}.am-avg-md-12>li{width:8.33333333%}.am-avg-md-12>li:nth-of-type(n){clear:none}.am-avg-md-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width:1025px){.am-avg-lg-1>li{width:100%}.am-avg-lg-1>li:nth-of-type(n){clear:none}.am-avg-lg-1>li:nth-of-type(1n+1){clear:both}.am-avg-lg-2>li{width:50%}.am-avg-lg-2>li:nth-of-type(n){clear:none}.am-avg-lg-2>li:nth-of-type(2n+1){clear:both}.am-avg-lg-3>li{width:33.33333333%}.am-avg-lg-3>li:nth-of-type(n){clear:none}.am-avg-lg-3>li:nth-of-type(3n+1){clear:both}.am-avg-lg-4>li{width:25%}.am-avg-lg-4>li:nth-of-type(n){clear:none}.am-avg-lg-4>li:nth-of-type(4n+1){clear:both}.am-avg-lg-5>li{width:20%}.am-avg-lg-5>li:nth-of-type(n){clear:none}.am-avg-lg-5>li:nth-of-type(5n+1){clear:both}.am-avg-lg-6>li{width:16.66666667%}.am-avg-lg-6>li:nth-of-type(n){clear:none}.am-avg-lg-6>li:nth-of-type(6n+1){clear:both}.am-avg-lg-7>li{width:14.28571429%}.am-avg-lg-7>li:nth-of-type(n){clear:none}.am-avg-lg-7>li:nth-of-type(7n+1){clear:both}.am-avg-lg-8>li{width:12.5%}.am-avg-lg-8>li:nth-of-type(n){clear:none}.am-avg-lg-8>li:nth-of-type(8n+1){clear:both}.am-avg-lg-9>li{width:11.11111111%}.am-avg-lg-9>li:nth-of-type(n){clear:none}.am-avg-lg-9>li:nth-of-type(9n+1){clear:both}.am-avg-lg-10>li{width:10%}.am-avg-lg-10>li:nth-of-type(n){clear:none}.am-avg-lg-10>li:nth-of-type(10n+1){clear:both}.am-avg-lg-11>li{width:9.09090909%}.am-avg-lg-11>li:nth-of-type(n){clear:none}.am-avg-lg-11>li:nth-of-type(11n+1){clear:both}.am-avg-lg-12>li{width:8.33333333%}.am-avg-lg-12>li:nth-of-type(n){clear:none}.am-avg-lg-12>li:nth-of-type(12n+1){clear:both}}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",FontAwesome,monospace}code{padding:2px 4px;font-size:1.3rem;color:#c7254e;background-color:#f8f8f8;white-space:nowrap;border-radius:0}pre{display:block;padding:1rem;margin:1rem 0;font-size:1.3rem;line-height:1.6;word-break:break-all;word-wrap:break-word;color:#555;background-color:#f8f8f8;border:1px solid #dedede;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.am-pre-scrollable{max-height:24rem;overflow-y:scroll}.am-btn{display:inline-block;margin-bottom:0;padding:.625em 1em;vertical-align:middle;font-size:1.6rem;font-weight:400;line-height:1.2;text-align:center;white-space:nowrap;background-image:none;border:1px solid transparent;border-radius:0;cursor:pointer;outline:0;-webkit-appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:background-color 300ms ease-out,border-color 300ms ease-out;transition:background-color 300ms ease-out,border-color 300ms ease-out}.am-btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.am-btn:hover,.am-btn:focus{outline:0;color:#444;text-decoration:none}.am-btn:active,.am-btn.am-active{background-image:none;-webkit-box-shadow:inset 0 1px 8px rgba(0,0,0,.125);box-shadow:inset 0 1px 8px rgba(0,0,0,.125)}.am-btn.am-disabled,.am-btn[disabled],fieldset[disabled] .am-btn{pointer-events:none;border-color:transparent;cursor:not-allowed;opacity:.45;-webkit-box-shadow:none;box-shadow:none}.am-btn.am-round{border-radius:1000px}.am-btn.am-radius{border-radius:2px}.am-btn-default{color:#444;background-color:#e6e6e6;border-color:#e6e6e6}.am-btn-default:hover,.am-btn-default:focus,.am-btn-default:active,.am-btn-default.am-active,.am-active .am-btn-default.am-dropdown-toggle{color:#444;background-color:#c7c7c7;border-color:#c7c7c7}.am-btn-default:active,.am-btn-default.am-btn-active,.am-active .am-btn-default.am-dropdown-toggle{background-image:none}.am-btn-default.am-disabled,.am-btn-default[disabled],fieldset[disabled] .am-btn-default,.am-btn-default.am-disabled:hover,.am-btn-default[disabled]:hover,fieldset[disabled] .am-btn-default:hover,.am-btn-default.am-disabled:focus,.am-btn-default[disabled]:focus,fieldset[disabled] .am-btn-default:focus,.am-btn-default.am-disabled:active,.am-btn-default[disabled]:active,fieldset[disabled] .am-btn-default:active,.am-btn-default.am-disabled.am-btn-active,.am-btn-default[disabled].am-btn-active,fieldset[disabled] .am-btn-default.am-btn-active{background-color:#e6e6e6;border-color:#e6e6e6}.am-btn-group .am-btn-default,.am-btn-group-stacked .am-btn-default{border-color:#d9d9d9}.am-btn-primary{color:#fff;background-color:#0e90d2;border-color:#0e90d2}.am-btn-primary:hover,.am-btn-primary:focus,.am-btn-primary:active,.am-btn-primary.am-active,.am-active .am-btn-primary.am-dropdown-toggle{color:#fff;background-color:#0a6999;border-color:#0a6999}.am-btn-primary:active,.am-btn-primary.am-btn-active,.am-active .am-btn-primary.am-dropdown-toggle{background-image:none}.am-btn-primary.am-disabled,.am-btn-primary[disabled],fieldset[disabled] .am-btn-primary,.am-btn-primary.am-disabled:hover,.am-btn-primary[disabled]:hover,fieldset[disabled] .am-btn-primary:hover,.am-btn-primary.am-disabled:focus,.am-btn-primary[disabled]:focus,fieldset[disabled] .am-btn-primary:focus,.am-btn-primary.am-disabled:active,.am-btn-primary[disabled]:active,fieldset[disabled] .am-btn-primary:active,.am-btn-primary.am-disabled.am-btn-active,.am-btn-primary[disabled].am-btn-active,fieldset[disabled] .am-btn-primary.am-btn-active{background-color:#0e90d2;border-color:#0e90d2}.am-btn-group .am-btn-primary,.am-btn-group-stacked .am-btn-primary{border-color:#0c80ba}.am-btn-warning{color:#fff;background-color:#f37b1d;border-color:#f37b1d}.am-btn-warning:hover,.am-btn-warning:focus,.am-btn-warning:active,.am-btn-warning.am-active,.am-active .am-btn-warning.am-dropdown-toggle{color:#fff;background-color:#c85e0b;border-color:#c85e0b}.am-btn-warning:active,.am-btn-warning.am-btn-active,.am-active .am-btn-warning.am-dropdown-toggle{background-image:none}.am-btn-warning.am-disabled,.am-btn-warning[disabled],fieldset[disabled] .am-btn-warning,.am-btn-warning.am-disabled:hover,.am-btn-warning[disabled]:hover,fieldset[disabled] .am-btn-warning:hover,.am-btn-warning.am-disabled:focus,.am-btn-warning[disabled]:focus,fieldset[disabled] .am-btn-warning:focus,.am-btn-warning.am-disabled:active,.am-btn-warning[disabled]:active,fieldset[disabled] .am-btn-warning:active,.am-btn-warning.am-disabled.am-btn-active,.am-btn-warning[disabled].am-btn-active,fieldset[disabled] .am-btn-warning.am-btn-active{background-color:#f37b1d;border-color:#f37b1d}.am-btn-group .am-btn-warning,.am-btn-group-stacked .am-btn-warning{border-color:#ea6e0c}.am-btn-danger{color:#fff;background-color:#dd514c;border-color:#dd514c}.am-btn-danger:hover,.am-btn-danger:focus,.am-btn-danger:active,.am-btn-danger.am-active,.am-active .am-btn-danger.am-dropdown-toggle{color:#fff;background-color:#c62b26;border-color:#c62b26}.am-btn-danger:active,.am-btn-danger.am-btn-active,.am-active .am-btn-danger.am-dropdown-toggle{background-image:none}.am-btn-danger.am-disabled,.am-btn-danger[disabled],fieldset[disabled] .am-btn-danger,.am-btn-danger.am-disabled:hover,.am-btn-danger[disabled]:hover,fieldset[disabled] .am-btn-danger:hover,.am-btn-danger.am-disabled:focus,.am-btn-danger[disabled]:focus,fieldset[disabled] .am-btn-danger:focus,.am-btn-danger.am-disabled:active,.am-btn-danger[disabled]:active,fieldset[disabled] .am-btn-danger:active,.am-btn-danger.am-disabled.am-btn-active,.am-btn-danger[disabled].am-btn-active,fieldset[disabled] .am-btn-danger.am-btn-active{background-color:#dd514c;border-color:#dd514c}.am-btn-group .am-btn-danger,.am-btn-group-stacked .am-btn-danger{border-color:#d93c37}.am-btn-success{color:#fff;background-color:#5eb95e;border-color:#5eb95e}.am-btn-success:hover,.am-btn-success:focus,.am-btn-success:active,.am-btn-success.am-active,.am-active .am-btn-success.am-dropdown-toggle{color:#fff;background-color:#429842;border-color:#429842}.am-btn-success:active,.am-btn-success.am-btn-active,.am-active .am-btn-success.am-dropdown-toggle{background-image:none}.am-btn-success.am-disabled,.am-btn-success[disabled],fieldset[disabled] .am-btn-success,.am-btn-success.am-disabled:hover,.am-btn-success[disabled]:hover,fieldset[disabled] .am-btn-success:hover,.am-btn-success.am-disabled:focus,.am-btn-success[disabled]:focus,fieldset[disabled] .am-btn-success:focus,.am-btn-success.am-disabled:active,.am-btn-success[disabled]:active,fieldset[disabled] .am-btn-success:active,.am-btn-success.am-disabled.am-btn-active,.am-btn-success[disabled].am-btn-active,fieldset[disabled] .am-btn-success.am-btn-active{background-color:#5eb95e;border-color:#5eb95e}.am-btn-group .am-btn-success,.am-btn-group-stacked .am-btn-success{border-color:#4db14d}.am-btn-secondary{color:#fff;background-color:#3bb4f2;border-color:#3bb4f2}.am-btn-secondary:hover,.am-btn-secondary:focus,.am-btn-secondary:active,.am-btn-secondary.am-active,.am-active .am-btn-secondary.am-dropdown-toggle{color:#fff;background-color:#0f9ae0;border-color:#0f9ae0}.am-btn-secondary:active,.am-btn-secondary.am-btn-active,.am-active .am-btn-secondary.am-dropdown-toggle{background-image:none}.am-btn-secondary.am-disabled,.am-btn-secondary[disabled],fieldset[disabled] .am-btn-secondary,.am-btn-secondary.am-disabled:hover,.am-btn-secondary[disabled]:hover,fieldset[disabled] .am-btn-secondary:hover,.am-btn-secondary.am-disabled:focus,.am-btn-secondary[disabled]:focus,fieldset[disabled] .am-btn-secondary:focus,.am-btn-secondary.am-disabled:active,.am-btn-secondary[disabled]:active,fieldset[disabled] .am-btn-secondary:active,.am-btn-secondary.am-disabled.am-btn-active,.am-btn-secondary[disabled].am-btn-active,fieldset[disabled] .am-btn-secondary.am-btn-active{background-color:#3bb4f2;border-color:#3bb4f2}.am-btn-group .am-btn-secondary,.am-btn-group-stacked .am-btn-secondary{border-color:#23abf0}.am-btn-link{color:#0e90d2;font-weight:400;cursor:pointer;border-radius:0}.am-btn-link,.am-btn-link:active,.am-btn-link[disabled],fieldset[disabled] .am-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.am-btn-link,.am-btn-link:hover,.am-btn-link:focus,.am-btn-link:active{border-color:transparent}.am-btn-link:hover,.am-btn-link:focus{color:#095f8a;text-decoration:underline;background-color:transparent}.am-btn-link[disabled]:hover,fieldset[disabled] .am-btn-link:hover,.am-btn-link[disabled]:focus,fieldset[disabled] .am-btn-link:focus{color:#999;text-decoration:none}.am-btn-xs{font-size:1.2rem}.am-btn-sm{font-size:1.4rem}.am-btn-lg{font-size:1.8rem}.am-btn-xl{font-size:2rem}.am-btn-block{display:block;width:100%;padding-left:0;padding-right:0}.am-btn-block+.am-btn-block{margin-top:5px}input[type=submit].am-btn-block,input[type=reset].am-btn-block,input[type=button].am-btn-block{width:100%}.am-btn.am-btn-loading .am-icon-spin{margin-right:5px}table{max-width:100%;background-color:transparent;empty-cells:show}table code{white-space:normal}th{text-align:left}.am-table{width:100%;margin-bottom:1.6rem;border-spacing:0;border-collapse:separate}.am-table>thead>tr>th,.am-table>tbody>tr>th,.am-table>tfoot>tr>th,.am-table>thead>tr>td,.am-table>tbody>tr>td,.am-table>tfoot>tr>td{padding:.7rem;line-height:1.6;vertical-align:top;border-top:1px solid #ddd}.am-table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.am-table>caption+thead>tr:first-child>th,.am-table>colgroup+thead>tr:first-child>th,.am-table>thead:first-child>tr:first-child>th,.am-table>caption+thead>tr:first-child>td,.am-table>colgroup+thead>tr:first-child>td,.am-table>thead:first-child>tr:first-child>td{border-top:0}.am-table>tbody+tbody tr:first-child td{border-top:2px solid #ddd}.am-table-bordered{border:1px solid #ddd}.am-table-bordered>thead>tr>th,.am-table-bordered>tbody>tr>th,.am-table-bordered>tfoot>tr>th,.am-table-bordered>thead>tr>td,.am-table-bordered>tbody>tr>td,.am-table-bordered>tfoot>tr>td{border-left:1px solid #ddd}.am-table-bordered>thead>tr>th:first-child,.am-table-bordered>tbody>tr>th:first-child,.am-table-bordered>tfoot>tr>th:first-child,.am-table-bordered>thead>tr>td:first-child,.am-table-bordered>tbody>tr>td:first-child,.am-table-bordered>tfoot>tr>td:first-child{border-left:none}.am-table-radius{border:1px solid #ddd;border-radius:2px}.am-table-radius>thead>tr:first-child>th:first-child,.am-table-radius>thead>tr:first-child>td:first-child{border-top-left-radius:2px;border-left:none}.am-table-radius>thead>tr:first-child>th:last-child,.am-table-radius>thead>tr:first-child>td:last-child{border-top-right-radius:2px;border-right:none}.am-table-radius>tbody>tr>th:first-child,.am-table-radius>tbody>tr>td:first-child{border-left:none}.am-table-radius>tbody>tr>th:last-child,.am-table-radius>tbody>tr>td:last-child{border-right:none}.am-table-radius>tbody>tr:last-child>th,.am-table-radius>tbody>tr:last-child>td{border-bottom:none}.am-table-radius>tbody>tr:last-child>th:first-child,.am-table-radius>tbody>tr:last-child>td:first-child{border-bottom-left-radius:2px}.am-table-radius>tbody>tr:last-child>th:last-child,.am-table-radius>tbody>tr:last-child>td:last-child{border-bottom-right-radius:2px}.am-table-striped>tbody>tr:nth-child(odd)>td,.am-table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.am-table-hover>tbody>tr:hover>td,.am-table-hover>tbody>tr:hover>th{background-color:#e9e9e9}.am-table>thead>tr>td.am-active,.am-table>tbody>tr>td.am-active,.am-table>tfoot>tr>td.am-active,.am-table>thead>tr>th.am-active,.am-table>tbody>tr>th.am-active,.am-table>tfoot>tr>th.am-active,.am-table>thead>tr.am-active>td,.am-table>tbody>tr.am-active>td,.am-table>tfoot>tr.am-active>td,.am-table>thead>tr.am-active>th,.am-table>tbody>tr.am-active>th,.am-table>tfoot>tr.am-active>th{background-color:#ffd}.am-table>thead>tr>td.am-disabled,.am-table>tbody>tr>td.am-disabled,.am-table>tfoot>tr>td.am-disabled,.am-table>thead>tr>th.am-disabled,.am-table>tbody>tr>th.am-disabled,.am-table>tfoot>tr>th.am-disabled,.am-table>thead>tr.am-disabled>td,.am-table>tbody>tr.am-disabled>td,.am-table>tfoot>tr.am-disabled>td,.am-table>thead>tr.am-disabled>th,.am-table>tbody>tr.am-disabled>th,.am-table>tfoot>tr.am-disabled>th{color:#999}.am-table>thead>tr>td.am-primary,.am-table>tbody>tr>td.am-primary,.am-table>tfoot>tr>td.am-primary,.am-table>thead>tr>th.am-primary,.am-table>tbody>tr>th.am-primary,.am-table>tfoot>tr>th.am-primary,.am-table>thead>tr.am-primary>td,.am-table>tbody>tr.am-primary>td,.am-table>tfoot>tr.am-primary>td,.am-table>thead>tr.am-primary>th,.am-table>tbody>tr.am-primary>th,.am-table>tfoot>tr.am-primary>th{color:#0b76ac;background-color:rgba(14,144,210,.115)}.am-table>thead>tr>td.am-success,.am-table>tbody>tr>td.am-success,.am-table>tfoot>tr>td.am-success,.am-table>thead>tr>th.am-success,.am-table>tbody>tr>th.am-success,.am-table>tfoot>tr>th.am-success,.am-table>thead>tr.am-success>td,.am-table>tbody>tr.am-success>td,.am-table>tfoot>tr.am-success>td,.am-table>thead>tr.am-success>th,.am-table>tbody>tr.am-success>th,.am-table>tfoot>tr.am-success>th{color:#5eb95e;background-color:rgba(94,185,94,.115)}.am-table>thead>tr>td.am-warning,.am-table>tbody>tr>td.am-warning,.am-table>tfoot>tr>td.am-warning,.am-table>thead>tr>th.am-warning,.am-table>tbody>tr>th.am-warning,.am-table>tfoot>tr>th.am-warning,.am-table>thead>tr.am-warning>td,.am-table>tbody>tr.am-warning>td,.am-table>tfoot>tr.am-warning>td,.am-table>thead>tr.am-warning>th,.am-table>tbody>tr.am-warning>th,.am-table>tfoot>tr.am-warning>th{color:#f37b1d;background-color:rgba(243,123,29,.115)}.am-table>thead>tr>td.am-danger,.am-table>tbody>tr>td.am-danger,.am-table>tfoot>tr>td.am-danger,.am-table>thead>tr>th.am-danger,.am-table>tbody>tr>th.am-danger,.am-table>tfoot>tr>th.am-danger,.am-table>thead>tr.am-danger>td,.am-table>tbody>tr.am-danger>td,.am-table>tfoot>tr.am-danger>td,.am-table>thead>tr.am-danger>th,.am-table>tbody>tr.am-danger>th,.am-table>tfoot>tr.am-danger>th{color:#dd514c;background-color:rgba(221,81,76,.115)}fieldset{border:none}legend{display:block;width:100%;margin-bottom:2rem;font-size:2rem;line-height:inherit;color:#333;border-bottom:1px solid #e5e5e5;padding-bottom:.5rem}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-size:inherit;font-style:inherit;font-family:inherit}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{height:auto}output{display:block;padding-top:1.6rem;font-size:1.6rem;line-height:1.6;color:#555;vertical-align:middle}.am-form select,.am-form textarea,.am-form input[type=text],.am-form input[type=password],.am-form input[type=datetime],.am-form input[type=datetime-local],.am-form input[type=date],.am-form input[type=month],.am-form input[type=time],.am-form input[type=week],.am-form input[type=number],.am-form input[type=email],.am-form input[type=url],.am-form input[type=search],.am-form input[type=tel],.am-form input[type=color],.am-form-field{display:block;width:100%;padding:.625em;font-size:1.6rem;line-height:1.2;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:0;-webkit-appearance:none;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.am-form select:focus,.am-form textarea:focus,.am-form input[type=text]:focus,.am-form input[type=password]:focus,.am-form input[type=datetime]:focus,.am-form input[type=datetime-local]:focus,.am-form input[type=date]:focus,.am-form input[type=month]:focus,.am-form input[type=time]:focus,.am-form input[type=week]:focus,.am-form input[type=number]:focus,.am-form input[type=email]:focus,.am-form input[type=url]:focus,.am-form input[type=search]:focus,.am-form input[type=tel]:focus,.am-form input[type=color]:focus,.am-form-field:focus{outline:0}.am-form select:focus,.am-form textarea:focus,.am-form input[type=text]:focus,.am-form input[type=password]:focus,.am-form input[type=datetime]:focus,.am-form input[type=datetime-local]:focus,.am-form input[type=date]:focus,.am-form input[type=month]:focus,.am-form input[type=time]:focus,.am-form input[type=week]:focus,.am-form input[type=number]:focus,.am-form input[type=email]:focus,.am-form input[type=url]:focus,.am-form input[type=search]:focus,.am-form input[type=tel]:focus,.am-form input[type=color]:focus,.am-form-field:focus{background-color:#fefffe;border-color:#3bb4f2;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px rgba(59,180,242,.3);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px rgba(59,180,242,.3)}.am-form select::-webkit-input-placeholder,.am-form textarea::-webkit-input-placeholder,.am-form input[type=text]::-webkit-input-placeholder,.am-form input[type=password]::-webkit-input-placeholder,.am-form input[type=datetime]::-webkit-input-placeholder,.am-form input[type=datetime-local]::-webkit-input-placeholder,.am-form input[type=date]::-webkit-input-placeholder,.am-form input[type=month]::-webkit-input-placeholder,.am-form input[type=time]::-webkit-input-placeholder,.am-form input[type=week]::-webkit-input-placeholder,.am-form input[type=number]::-webkit-input-placeholder,.am-form input[type=email]::-webkit-input-placeholder,.am-form input[type=url]::-webkit-input-placeholder,.am-form input[type=search]::-webkit-input-placeholder,.am-form input[type=tel]::-webkit-input-placeholder,.am-form input[type=color]::-webkit-input-placeholder,.am-form-field::-webkit-input-placeholder{color:#999}.am-form select::-moz-placeholder,.am-form textarea::-moz-placeholder,.am-form input[type=text]::-moz-placeholder,.am-form input[type=password]::-moz-placeholder,.am-form input[type=datetime]::-moz-placeholder,.am-form input[type=datetime-local]::-moz-placeholder,.am-form input[type=date]::-moz-placeholder,.am-form input[type=month]::-moz-placeholder,.am-form input[type=time]::-moz-placeholder,.am-form input[type=week]::-moz-placeholder,.am-form input[type=number]::-moz-placeholder,.am-form input[type=email]::-moz-placeholder,.am-form input[type=url]::-moz-placeholder,.am-form input[type=search]::-moz-placeholder,.am-form input[type=tel]::-moz-placeholder,.am-form input[type=color]::-moz-placeholder,.am-form-field::-moz-placeholder{color:#999}.am-form select:-ms-input-placeholder,.am-form textarea:-ms-input-placeholder,.am-form input[type=text]:-ms-input-placeholder,.am-form input[type=password]:-ms-input-placeholder,.am-form input[type=datetime]:-ms-input-placeholder,.am-form input[type=datetime-local]:-ms-input-placeholder,.am-form input[type=date]:-ms-input-placeholder,.am-form input[type=month]:-ms-input-placeholder,.am-form input[type=time]:-ms-input-placeholder,.am-form input[type=week]:-ms-input-placeholder,.am-form input[type=number]:-ms-input-placeholder,.am-form input[type=email]:-ms-input-placeholder,.am-form input[type=url]:-ms-input-placeholder,.am-form input[type=search]:-ms-input-placeholder,.am-form input[type=tel]:-ms-input-placeholder,.am-form input[type=color]:-ms-input-placeholder,.am-form-field:-ms-input-placeholder{color:#999}.am-form select::placeholder,.am-form textarea::placeholder,.am-form input[type=text]::placeholder,.am-form input[type=password]::placeholder,.am-form input[type=datetime]::placeholder,.am-form input[type=datetime-local]::placeholder,.am-form input[type=date]::placeholder,.am-form input[type=month]::placeholder,.am-form input[type=time]::placeholder,.am-form input[type=week]::placeholder,.am-form input[type=number]::placeholder,.am-form input[type=email]::placeholder,.am-form input[type=url]::placeholder,.am-form input[type=search]::placeholder,.am-form input[type=tel]::placeholder,.am-form input[type=color]::placeholder,.am-form-field::placeholder{color:#999}.am-form select::-moz-placeholder,.am-form textarea::-moz-placeholder,.am-form input[type=text]::-moz-placeholder,.am-form input[type=password]::-moz-placeholder,.am-form input[type=datetime]::-moz-placeholder,.am-form input[type=datetime-local]::-moz-placeholder,.am-form input[type=date]::-moz-placeholder,.am-form input[type=month]::-moz-placeholder,.am-form input[type=time]::-moz-placeholder,.am-form input[type=week]::-moz-placeholder,.am-form input[type=number]::-moz-placeholder,.am-form input[type=email]::-moz-placeholder,.am-form input[type=url]::-moz-placeholder,.am-form input[type=search]::-moz-placeholder,.am-form input[type=tel]::-moz-placeholder,.am-form input[type=color]::-moz-placeholder,.am-form-field::-moz-placeholder{opacity:1}.am-form select[disabled],.am-form textarea[disabled],.am-form input[type=text][disabled],.am-form input[type=password][disabled],.am-form input[type=datetime][disabled],.am-form input[type=datetime-local][disabled],.am-form input[type=date][disabled],.am-form input[type=month][disabled],.am-form input[type=time][disabled],.am-form input[type=week][disabled],.am-form input[type=number][disabled],.am-form input[type=email][disabled],.am-form input[type=url][disabled],.am-form input[type=search][disabled],.am-form input[type=tel][disabled],.am-form input[type=color][disabled],.am-form-field[disabled],.am-form select[readonly],.am-form textarea[readonly],.am-form input[type=text][readonly],.am-form input[type=password][readonly],.am-form input[type=datetime][readonly],.am-form input[type=datetime-local][readonly],.am-form input[type=date][readonly],.am-form input[type=month][readonly],.am-form input[type=time][readonly],.am-form input[type=week][readonly],.am-form input[type=number][readonly],.am-form input[type=email][readonly],.am-form input[type=url][readonly],.am-form input[type=search][readonly],.am-form input[type=tel][readonly],.am-form input[type=color][readonly],.am-form-field[readonly],fieldset[disabled] .am-form select,fieldset[disabled] .am-form textarea,fieldset[disabled] .am-form input[type=text],fieldset[disabled] .am-form input[type=password],fieldset[disabled] .am-form input[type=datetime],fieldset[disabled] .am-form input[type=datetime-local],fieldset[disabled] .am-form input[type=date],fieldset[disabled] .am-form input[type=month],fieldset[disabled] .am-form input[type=time],fieldset[disabled] .am-form input[type=week],fieldset[disabled] .am-form input[type=number],fieldset[disabled] .am-form input[type=email],fieldset[disabled] .am-form input[type=url],fieldset[disabled] .am-form input[type=search],fieldset[disabled] .am-form input[type=tel],fieldset[disabled] .am-form input[type=color],fieldset[disabled] .am-form-field{cursor:not-allowed;background-color:#eee}.am-form select.am-radius,.am-form textarea.am-radius,.am-form input[type=text].am-radius,.am-form input[type=password].am-radius,.am-form input[type=datetime].am-radius,.am-form input[type=datetime-local].am-radius,.am-form input[type=date].am-radius,.am-form input[type=month].am-radius,.am-form input[type=time].am-radius,.am-form input[type=week].am-radius,.am-form input[type=number].am-radius,.am-form input[type=email].am-radius,.am-form input[type=url].am-radius,.am-form input[type=search].am-radius,.am-form input[type=tel].am-radius,.am-form input[type=color].am-radius,.am-form-field.am-radius{border-radius:2px}.am-form select.am-round,.am-form textarea.am-round,.am-form input[type=text].am-round,.am-form input[type=password].am-round,.am-form input[type=datetime].am-round,.am-form input[type=datetime-local].am-round,.am-form input[type=date].am-round,.am-form input[type=month].am-round,.am-form input[type=time].am-round,.am-form input[type=week].am-round,.am-form input[type=number].am-round,.am-form input[type=email].am-round,.am-form input[type=url].am-round,.am-form input[type=search].am-round,.am-form input[type=tel].am-round,.am-form input[type=color].am-round,.am-form-field.am-round{border-radius:1000px}.am-form textarea,.am-form select[multiple],.am-form select[size]{height:auto}.am-form select{-webkit-appearance:none!important;-webkit-border-radius:0;background:#fff url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+) no-repeat 100% center}.am-form select[multiple=multiple]{background-image:none}.am-form-help{display:block;margin-top:5px;margin-bottom:10px;color:#999;font-size:1.3rem}.am-form-group{margin-bottom:1.5rem}.am-radio,.am-checkbox{display:block;min-height:1.92rem;margin-top:10px;margin-bottom:10px;padding-left:20px;vertical-align:middle}.am-radio label,.am-checkbox label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.am-radio input[type=radio],.am-radio-inline input[type=radio],.am-checkbox input[type=checkbox],.am-checkbox-inline input[type=checkbox]{float:left;margin-left:-20px;outline:0}.am-radio+.am-radio,.am-checkbox+.am-checkbox{margin-top:-5px}.am-radio-inline,.am-checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.am-radio-inline+.am-radio-inline,.am-checkbox-inline+.am-checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.am-radio[disabled],.am-radio-inline[disabled],.am-checkbox[disabled],.am-checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .am-radio,fieldset[disabled] .am-radio-inline,fieldset[disabled] .am-checkbox,fieldset[disabled] .am-checkbox-inline{cursor:not-allowed}.am-form-warning .am-form-help,.am-form-warning .am-form-label,.am-form-warning .am-radio,.am-form-warning .am-checkbox,.am-form-warning .am-radio-inline,.am-form-warning .am-checkbox-inline,.am-form-warning label{color:#f37b1d}.am-form-warning [class*=icon-]{color:#f37b1d}.am-form-warning .am-form-field{border-color:#f37b1d!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.am-form-warning .am-form-field:focus{background-color:#fefffe;border-color:#d2620b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #f8b47e!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #f8b47e!important}.am-form-error .am-form-help,.am-form-error .am-form-label,.am-form-error .am-radio,.am-form-error .am-checkbox,.am-form-error .am-radio-inline,.am-form-error .am-checkbox-inline,.am-form-error label{color:#dd514c}.am-form-error [class*=icon-]{color:#dd514c}.am-form-error .am-form-field,.am-field-error{border-color:#dd514c!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.am-form-error .am-form-field:focus,.am-field-error:focus{background-color:#fefffe;border-color:#cf2d27;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #eda4a2!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #eda4a2!important}.am-form-success .am-form-help,.am-form-success .am-form-label,.am-form-success .am-radio,.am-form-success .am-checkbox,.am-form-success .am-radio-inline,.am-form-success .am-checkbox-inline,.am-form-success label{color:#5eb95e}.am-form-success [class*=icon-]{color:#5eb95e}.am-form-success .am-form-field,.am-field-valid{border-color:#5eb95e!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.am-form-success .am-form-field:focus,.am-field-valid:focus{background-color:#fefffe;border-color:#459f45;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #a5d8a5!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 5px #a5d8a5!important}.am-form-horizontal .am-form-label,.am-form-horizontal .am-radio,.am-form-horizontal .am-checkbox,.am-form-horizontal .am-radio-inline,.am-form-horizontal .am-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:.6em}.am-form-horizontal .am-form-group:before,.am-form-horizontal .am-form-group:after{content:" ";display:table}.am-form-horizontal .am-form-group:after{clear:both}@media only screen and (min-width:641px){.am-form-horizontal .am-form-label{text-align:right}}@media only screen and (min-width:641px){.am-form-inline .am-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.am-form-inline .am-form-field{display:inline-block;width:auto;vertical-align:middle}.am-form-inline .am-input-group{display:inline-table;vertical-align:middle}.am-form-inline .am-input-group .am-input-group-addon,.am-form-inline .am-input-group .am-input-group-btn,.am-form-inline .am-input-group .am-form-control{width:auto}.am-form-inline .am-input-group>.am-form-field{width:100%}.am-form-inline .am-form-label{margin-bottom:0;vertical-align:middle}.am-form-inline .am-radio,.am-form-inline .am-checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.am-form-inline .am-radio input[type=radio],.am-form-inline .am-checkbox input[type=checkbox]{float:none;margin-left:0}.am-form-inline .am-form-feedback .am-form-field-feedback{top:0}}.am-input-sm{font-size:1.4rem!important}.am-input-lg{font-size:1.8rem!important}.am-form-icon{position:relative}.am-form-icon .am-form-field{padding-left:1.875em!important}.am-form-icon [class*=am-icon-]{position:absolute;left:.625em;top:50%;display:block;margin-top:-.635em;line-height:1;z-index:2}.am-form-feedback{position:relative}.am-form-feedback .am-form-field{padding-left:.625em!important;padding-right:1.875em!important}.am-form-feedback [class*=am-icon-]{right:.625em;left:auto}.am-form-set{margin-bottom:1.5rem;padding:0}.am-form-set>input{position:relative;top:-1px;border-radius:0!important}.am-form-set>input:focus{z-index:2}.am-form-set>input:first-child{top:1px;border-top-right-radius:0!important;border-top-left-radius:0!important}.am-form-set>input:last-child{top:-2px;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.am-img-thumbnail{display:inline-block;padding:2px;line-height:1.6;background-color:#fff;border:1px solid #ddd;border-radius:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.am-img-thumbnail.am-radius{border-radius:2px}.am-img-responsive{display:block}.am-nav{margin-bottom:0;padding:0;list-style:none}.am-nav:before,.am-nav:after{content:" ";display:table}.am-nav:after{clear:both}.am-nav>li{position:relative;display:block}.am-nav>li+li{margin-top:5px}.am-nav>li+.am-nav-header{margin-top:1em}.am-nav>li>a{position:relative;display:block;padding:.4em 1em;border-radius:0}.am-nav>li>a:hover,.am-nav>li>a:focus{text-decoration:none;background-color:#eee}.am-nav>li.am-active>a,.am-nav>li.am-active>a:hover,.am-nav>li.am-active>a:focus{color:#fff;background-color:#0e90d2;cursor:default}.am-nav>li.am-disabled>a{color:#999}.am-nav>li.am-disabled>a:hover,.am-nav>li.am-disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.am-nav-header{padding:.4em 1em;text-transform:uppercase;font-weight:700;font-size:100%;color:#555}.am-nav-divider{margin:15px 1em!important;border-top:1px solid #ddd;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.am-nav-pills>li{float:left}.am-nav-pills>li+li{margin-left:5px;margin-top:0}.am-nav-tabs{border-bottom:1px solid #ddd}.am-nav-tabs>li{float:left;margin-bottom:-1px}.am-nav-tabs>li+li{margin-top:0}.am-nav-tabs>li>a{margin-right:5px;line-height:1.6;border:1px solid transparent;border-radius:0}.am-nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.am-nav-tabs>li.am-active>a,.am-nav-tabs>li.am-active>a:hover,.am-nav-tabs>li.am-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.am-nav-tabs.am-nav-justify{border-bottom:0}.am-nav-tabs.am-nav-justify>li>a{margin-right:0;border-bottom:1px solid #ddd;border-radius:0}.am-nav-tabs.am-nav-justify>.am-active>a,.am-nav-tabs.am-nav-justify>.am-active>a:hover,.am-nav-tabs.am-nav-justify>.am-active>a:focus{border-bottom-color:#fff}.am-nav-justify{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-nav-justify>li{float:none;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-nav-justify>li>a{text-align:center;margin-bottom:0}.lte9 .am-nav-justify>li{display:table-cell;width:1%}.am-topbar{position:relative;min-height:50px;margin-bottom:1.6rem;background:#f8f8f8;border-width:0 0 1px;border-style:solid;border-color:#ddd;color:#666}.am-topbar:before,.am-topbar:after{content:" ";display:table}.am-topbar:after{clear:both}.am-topbar a{color:#666}.am-topbar-brand{margin:0}@media only screen and (min-width:641px){.am-topbar-brand{float:left}}.am-topbar-brand a:hover{color:#4d4d4d}.am-topbar-collapse{width:100%;overflow-x:visible;padding:10px;clear:both;-webkit-overflow-scrolling:touch}.am-topbar-collapse:before,.am-topbar-collapse:after{content:" ";display:table}.am-topbar-collapse:after{clear:both}.am-topbar-collapse.am-in{overflow-y:auto}@media only screen and (min-width:641px){.am-topbar-collapse{margin-top:0;padding:0;width:auto;clear:none}.am-topbar-collapse.am-collapse{display:block!important;height:auto!important;padding:0;overflow:visible!important}.am-topbar-collapse.am-in{overflow-y:visible}}.am-topbar-brand{padding:0 10px;float:left;font-size:1.8rem;height:50px;line-height:50px}.am-topbar-toggle{position:relative;float:right;margin-right:10px}@media only screen and (min-width:641px){.am-topbar-toggle{display:none}}@media only screen and (max-width:640px){.am-topbar-nav{margin-bottom:8px}.am-topbar-nav>li{float:none}}@media only screen and (max-width:640px){.am-topbar-nav>li+li{margin-left:0;margin-top:5px}}@media only screen and (min-width:641px){.am-topbar-nav{float:left}.am-topbar-nav>li>a{position:relative;line-height:50px;padding:0 10px}.am-topbar-nav>li>a:after{position:absolute;left:50%;margin-left:-7px;bottom:-1px;content:"";display:inline-block;width:0;height:0;vertical-align:middle;border-bottom:7px solid #f8f8f8;border-right:7px solid transparent;border-left:7px solid transparent;border-top:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);opacity:0;-webkit-transition:opacity .1s;transition:opacity .1s}.am-topbar-nav>li>a:hover:after{opacity:1;border-bottom-color:#666}.am-topbar-nav>li.am-dropdown>a:after{display:none}.am-topbar-nav>li.am-active>a,.am-topbar-nav>li.am-active>a:hover,.am-topbar-nav>li.am-active>a:focus{border-radius:0;color:#0e90d2;background:0 0}.am-topbar-nav>li.am-active>a:after{opacity:1;border-bottom-color:#0e90d2}}@media only screen and (max-width:640px){.am-topbar-collapse .am-dropdown.am-active .am-dropdown-content{float:none;position:relative;width:100%}}@media only screen and (min-width:641px){.am-topbar-left{float:left}.am-topbar-right{float:right;margin-right:10px}}@media only screen and (max-width:640px){.am-topbar-form .am-form-group{margin-bottom:5px}}@media only screen and (min-width:641px){.am-topbar-form{padding:0 10px;margin-top:8px}.am-topbar-form .am-form-group+.am-btn{margin-left:5px}}.am-topbar-btn{margin-top:8px}@media only screen and (max-width:640px){.am-topbar-collapse .am-topbar-btn,.am-topbar-collapse .am-btn{display:block;width:100%}}.am-topbar-inverse{background-color:#0e90d2;border-color:#0b6fa2;color:#eee}.am-topbar-inverse a{color:#eee}.am-topbar-inverse .am-topbar-brand a{color:#fff}.am-topbar-inverse .am-topbar-brand a:hover,.am-topbar-inverse .am-topbar-brand a:focus{color:#fff;background-color:transparent}.am-topbar-inverse .am-topbar-nav>li>a{color:#eee}.am-topbar-inverse .am-topbar-nav>li>a:hover,.am-topbar-inverse .am-topbar-nav>li>a:focus{color:#fff;background-color:rgba(0,0,0,.05)}.am-topbar-inverse .am-topbar-nav>li>a:hover:after,.am-topbar-inverse .am-topbar-nav>li>a:focus:after{border-bottom-color:#0b6fa2}.am-topbar-inverse .am-topbar-nav>li>a:after{border-bottom-color:#0e90d2}.am-topbar-inverse .am-topbar-nav>li.am-active>a,.am-topbar-inverse .am-topbar-nav>li.am-active>a:hover,.am-topbar-inverse .am-topbar-nav>li.am-active>a:focus{color:#fff;background-color:rgba(0,0,0,.1)}.am-topbar-inverse .am-topbar-nav>li.am-active>a:after,.am-topbar-inverse .am-topbar-nav>li.am-active>a:hover:after,.am-topbar-inverse .am-topbar-nav>li.am-active>a:focus:after{border-bottom-color:#fff}.am-topbar-inverse .am-topbar-nav>li .disabled>a,.am-topbar-inverse .am-topbar-nav>li .disabled>a:hover,.am-topbar-inverse .am-topbar-nav>li .disabled>a:focus{color:#444;background-color:transparent}.am-topbar-fixed-top,.am-topbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1000;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.am-topbar-fixed-top{top:0}.am-topbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.am-with-topbar-fixed-top{padding-top:51px}.am-with-topbar-fixed-bottom{padding-bottom:51px}@media only screen and (max-width:640px){.am-topbar-fixed-bottom .am-topbar-collapse{position:absolute;bottom:100%;margin-bottom:1px;background-color:#f8f8f8}.am-topbar-fixed-bottom .am-topbar-collapse .am-dropdown-content:before,.am-topbar-fixed-bottom .am-topbar-collapse .am-dropdown-content:after{display:none}.am-topbar-fixed-bottom.am-topbar-inverse .am-topbar-collapse{background-color:#0e90d2}}.am-breadcrumb{padding:.7em .5em;margin-bottom:2rem;list-style:none;background-color:transparent;border-radius:0;font-size:85%}.am-breadcrumb>li{display:inline-block}.am-breadcrumb>li [class*=am-icon-]:before{color:#999;margin-right:5px}.am-breadcrumb>li+li:before{content:"»\00a0";padding:0 8px;color:#ccc}.am-breadcrumb>.am-active{color:#999}.am-breadcrumb-slash>li+li:before{content:"/\00a0"}.am-pagination{padding-left:0;margin:1.5rem 0;list-style:none;color:#999;text-align:left}.am-pagination:before,.am-pagination:after{content:" ";display:table}.am-pagination:after{clear:both}.am-pagination>li{display:inline-block}.am-pagination>li>a,.am-pagination>li>span{position:relative;display:block;padding:.5em 1em;text-decoration:none;line-height:1.2;background-color:#fff;border:1px solid #ddd;border-radius:0;margin-bottom:5px;margin-right:5px}.am-pagination>li:last-child>a,.am-pagination>li:last-child>span{margin-right:0}.am-pagination>li>a:hover,.am-pagination>li>span:hover,.am-pagination>li>a:focus,.am-pagination>li>span:focus{background-color:#eee}.am-pagination>.am-active>a,.am-pagination>.am-active>span,.am-pagination>.am-active>a:hover,.am-pagination>.am-active>span:hover,.am-pagination>.am-active>a:focus,.am-pagination>.am-active>span:focus{z-index:2;color:#fff;background-color:#0e90d2;border-color:#0e90d2;cursor:default}.am-pagination>.am-disabled>span,.am-pagination>.am-disabled>span:hover,.am-pagination>.am-disabled>span:focus,.am-pagination>.am-disabled>a,.am-pagination>.am-disabled>a:hover,.am-pagination>.am-disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed;pointer-events:none}.am-pagination .am-pagination-prev{float:left}.am-pagination .am-pagination-prev a{border-radius:0}.am-pagination .am-pagination-next{float:right}.am-pagination .am-pagination-next a{border-radius:0}.am-pagination-centered{text-align:center}.am-pagination-right{text-align:right}[class*=am-animation-]{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}@media screen{.cssanimations [data-am-scrollspy*=animation]{opacity:0}}.am-animation-fade{-webkit-animation-name:am-fade;animation-name:am-fade;-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-timing-function:linear;animation-timing-function:linear}.am-animation-scale-up{-webkit-animation-name:am-scale-up;animation-name:am-scale-up}.am-animation-scale-down{-webkit-animation-name:am-scale-down;animation-name:am-scale-down}.am-animation-slide-top{-webkit-animation-name:am-slide-top;animation-name:am-slide-top}.am-animation-slide-bottom{-webkit-animation-name:am-slide-bottom;animation-name:am-slide-bottom}.am-animation-slide-left{-webkit-animation-name:am-slide-left;animation-name:am-slide-left}.am-animation-slide-right{-webkit-animation-name:am-slide-right;animation-name:am-slide-right}.am-animation-slide-top-fixed{-webkit-animation-name:am-slide-top-fixed;animation-name:am-slide-top-fixed}.am-animation-shake{-webkit-animation-name:am-shake;animation-name:am-shake}.am-animation-spin{-webkit-animation:am-spin 2s infinite linear;animation:am-spin 2s infinite linear}.am-animation-left-spring{-webkit-animation:am-left-spring .3s ease-in-out;animation:am-left-spring .3s ease-in-out}.am-animation-right-spring{-webkit-animation:am-right-spring .3s ease-in-out;animation:am-right-spring .3s ease-in-out}.am-animation-reverse{-webkit-animation-direction:reverse;animation-direction:reverse}.am-animation-paused{-webkit-animation-play-state:paused!important;animation-play-state:paused!important}@-webkit-keyframes am-fade{0%{opacity:0}100%{opacity:1}}@keyframes am-fade{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes am-scale-up{0%{opacity:0;-webkit-transform:scale(0.2);transform:scale(0.2)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes am-scale-up{0%{opacity:0;-webkit-transform:scale(0.2);transform:scale(0.2)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes am-scale-down{0%{opacity:0;-webkit-transform:scale(1.8);transform:scale(1.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes am-scale-down{0%{opacity:0;-webkit-transform:scale(1.8);transform:scale(1.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes am-slide-top{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes am-slide-top{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes am-slide-bottom{0%{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes am-slide-bottom{0%{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes am-slide-left{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes am-slide-left{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes am-slide-right{0%{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes am-slide-right{0%{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes am-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%{-webkit-transform:translateX(-9px);transform:translateX(-9px)}20%{-webkit-transform:translateX(8px);transform:translateX(8px)}30%{-webkit-transform:translateX(-7px);transform:translateX(-7px)}40%{-webkit-transform:translateX(6px);transform:translateX(6px)}50%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}60%{-webkit-transform:translateX(4px);transform:translateX(4px)}70%{-webkit-transform:translateX(-3px);transform:translateX(-3px)}80%{-webkit-transform:translateX(2px);transform:translateX(2px)}90%{-webkit-transform:translateX(-1px);transform:translateX(-1px)}}@keyframes am-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%{-webkit-transform:translateX(-9px);transform:translateX(-9px)}20%{-webkit-transform:translateX(8px);transform:translateX(8px)}30%{-webkit-transform:translateX(-7px);transform:translateX(-7px)}40%{-webkit-transform:translateX(6px);transform:translateX(6px)}50%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}60%{-webkit-transform:translateX(4px);transform:translateX(4px)}70%{-webkit-transform:translateX(-3px);transform:translateX(-3px)}80%{-webkit-transform:translateX(2px);transform:translateX(2px)}90%{-webkit-transform:translateX(-1px);transform:translateX(-1px)}}@-webkit-keyframes am-slide-top-fixed{0%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes am-slide-top-fixed{0%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes am-slide-bottom-fixed{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes am-slide-bottom-fixed{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes am-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes am-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes am-right-spring{0%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(-20%);transform:translateX(-20%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes am-right-spring{0%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(-20%);transform:translateX(-20%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes am-left-spring{0%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(20%);transform:translateX(20%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes am-left-spring{0%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(20%);transform:translateX(20%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.am-article:before,.am-article:after{content:" ";display:table}.am-article:after{clear:both}.am-article>:last-child{margin-bottom:0}.am-article+.am-article{margin-top:2.4rem}.am-article-title{font-size:2.8rem;line-height:1.15;font-weight:400}.am-article-title a{color:inherit;text-decoration:none}.am-article-meta{font-size:1.2rem;line-height:1.5;color:#999}.am-article-lead{color:#666;font-size:1.4rem;line-height:1.5;border:1px solid #dedede;border-radius:2px;background:#f9f9f9;padding:10px}.am-article-divider{margin-bottom:2.4rem;border-color:#eee}*+.am-article-divider{margin-top:2.4rem}.am-article-bd blockquote{font-family:Georgia,"Times New Roman",Times,Kai,"Kaiti SC",KaiTi,BiauKai,FontAwesome,serif}.am-badge{display:inline-block;min-width:10px;padding:.25em .625em;font-size:1.2rem;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:0}.am-badge:empty{display:none}.am-badge.am-square{border-radius:0}.am-badge.am-radius{border-radius:2px}.am-badge.am-round{border-radius:1000px}a.am-badge:hover,a.am-badge:focus{color:#fff;text-decoration:none;cursor:pointer}.am-badge-primary{background-color:#0e90d2}.am-badge-secondary{background-color:#3bb4f2}.am-badge-success{background-color:#5eb95e}.am-badge-warning{background-color:#f37b1d}.am-badge-danger{background-color:#dd514c}.am-comment:before,.am-comment:after{content:" ";display:table}.am-comment:after{clear:both}.am-comment-avatar{float:left;width:32px;height:32px;border-radius:50%;border:1px solid transparent}@media only screen and (min-width:641px){.am-comment-avatar{width:48px;height:48px}}.am-comment-main{position:relative;margin-left:42px;border:1px solid #dedede;border-radius:0}.am-comment-main:before,.am-comment-main:after{position:absolute;top:10px;left:-8px;right:100%;width:0;height:0;display:block;content:" ";border-color:transparent;border-style:solid solid outset;border-width:8px 8px 8px 0;pointer-events:none}.am-comment-main:before{border-right-color:#dedede;z-index:1}.am-comment-main:after{border-right-color:#f8f8f8;margin-left:1px;z-index:2}@media only screen and (min-width:641px){.am-comment-main{margin-left:63px}}.am-comment-hd{background:#f8f8f8;border-bottom:1px solid #eee;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-comment-title{margin:0 0 8px 0;font-size:1.6rem;line-height:1.2}.am-comment-meta{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding:10px 15px;font-size:13px;color:#999;line-height:1.2;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.am-comment-meta a{color:#999}.am-comment-author{font-weight:700;color:#999}.am-comment-bd{padding:15px;overflow:hidden}.am-comment-bd>:last-child{margin-bottom:0}.am-comment-footer{padding:0 15px 5px}.am-comment-footer .am-comment-actions a+a{margin-left:5px}.am-comment-actions{font-size:13px;color:#999}.am-comment-actions a{display:inline-block;padding:10px 5px;line-height:1;color:#999;opacity:.7}.am-comment-actions a:hover{color:#0e90d2;opacity:1}.am-comment-hd .am-comment-actions{padding-right:.5rem}.am-comment-flip .am-comment-avatar{float:right}.am-comment-flip .am-comment-main{margin-left:auto;margin-right:42px}@media only screen and (min-width:641px){.am-comment-flip .am-comment-main{margin-right:63px}}.am-comment-flip .am-comment-main:before,.am-comment-flip .am-comment-main:after{left:auto;right:-8px;border-width:8px 0 8px 8px}.am-comment-flip .am-comment-main:before{border-left-color:#dedede}.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8;margin-right:1px;margin-left:auto}.am-comment-primary .am-comment-avatar{border-color:#0e90d2}.am-comment-primary .am-comment-main{border-color:#0e90d2}.am-comment-primary .am-comment-main:before{border-right-color:#0e90d2}.am-comment-primary.am-comment-flip .am-comment-main:before{border-left-color:#0e90d2;border-right-color:transparent}.am-comment-primary.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comment-secondary .am-comment-avatar,.am-comment-highlight .am-comment-avatar{border-color:#3bb4f2}.am-comment-secondary .am-comment-main,.am-comment-highlight .am-comment-main{border-color:#3bb4f2}.am-comment-secondary .am-comment-main:before,.am-comment-highlight .am-comment-main:before{border-right-color:#3bb4f2}.am-comment-secondary.am-comment-flip .am-comment-main:before,.am-comment-highlight.am-comment-flip .am-comment-main:before{border-left-color:#3bb4f2;border-right-color:transparent}.am-comment-secondary.am-comment-flip .am-comment-main:after,.am-comment-highlight.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comment-success .am-comment-avatar{border-color:#5eb95e}.am-comment-success .am-comment-main{border-color:#5eb95e}.am-comment-success .am-comment-main:before{border-right-color:#5eb95e}.am-comment-success.am-comment-flip .am-comment-main:before{border-left-color:#5eb95e;border-right-color:transparent}.am-comment-success.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comment-warning .am-comment-avatar{border-color:#f37b1d}.am-comment-warning .am-comment-main{border-color:#f37b1d}.am-comment-warning .am-comment-main:before{border-right-color:#f37b1d}.am-comment-warning.am-comment-flip .am-comment-main:before{border-left-color:#f37b1d;border-right-color:transparent}.am-comment-warning.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comment-danger .am-comment-avatar{border-color:#dd514c}.am-comment-danger .am-comment-main{border-color:#dd514c}.am-comment-danger .am-comment-main:before{border-right-color:#dd514c}.am-comment-danger.am-comment-flip .am-comment-main:before{border-left-color:#dd514c;border-right-color:transparent}.am-comment-danger.am-comment-flip .am-comment-main:after{border-left-color:#f8f8f8}.am-comments-list{padding:0;list-style:none}.am-comments-list .am-comment{margin:1.6rem 0 0 0;list-style:none}@media only screen and (min-width:641px){.am-comments-list-flip .am-comment-main{margin-right:64px}.am-comments-list-flip .am-comment-flip .am-comment-main{margin-left:64px}}.am-btn-group,.am-btn-group-stacked{position:relative;display:inline-block;vertical-align:middle}.am-btn-group>.am-btn,.am-btn-group-stacked>.am-btn{position:relative;float:left}.am-btn-group>.am-btn:hover,.am-btn-group-stacked>.am-btn:hover,.am-btn-group>.am-btn:focus,.am-btn-group-stacked>.am-btn:focus,.am-btn-group>.am-btn:active,.am-btn-group-stacked>.am-btn:active,.am-btn-group>.am-btn.active,.am-btn-group-stacked>.am-btn.active{z-index:2}.am-btn-group>.am-btn:focus,.am-btn-group-stacked>.am-btn:focus{outline:0}.am-btn-group .am-btn+.am-btn,.am-btn-group .am-btn+.am-btn-group,.am-btn-group .am-btn-group+.am-btn,.am-btn-group .am-btn-group+.am-btn-group{margin-left:-1px}.am-btn-toolbar{margin-left:-5px}.am-btn-toolbar:before,.am-btn-toolbar:after{content:" ";display:table}.am-btn-toolbar:after{clear:both}.am-btn-toolbar .am-btn-group,.am-btn-toolbar .am-input-group{float:left}.am-btn-toolbar>.am-btn,.am-btn-toolbar>.am-btn-group,.am-btn-toolbar>.am-input-group{margin-left:5px}.am-btn-group>.am-btn:not(:first-child):not(:last-child):not(.am-dropdown-toggle){border-radius:0}.am-btn-group>.am-btn:first-child{margin-left:0}.am-btn-group>.am-btn:first-child:not(:last-child):not(.am-dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.am-btn-group>.am-btn:last-child:not(:first-child),.am-btn-group>.am-dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.am-btn-group>.am-btn-group{float:left}.am-btn-group>.am-btn-group:not(:first-child):not(:last-child)>.am-btn{border-radius:0}.am-btn-group>.am-btn-group:first-child>.am-btn:last-child,.am-btn-group>.am-btn-group:first-child>.am-dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.am-btn-group>.am-btn-group:last-child>.am-btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.am-btn-group-xs>.am-btn{font-size:1.2rem}.am-btn-group-sm>.am-btn{font-size:1.4rem}.am-btn-group-lg>.am-btn{font-size:1.8rem}.am-btn-group-stacked>.am-btn,.am-btn-group-stacked>.am-btn-group,.am-btn-group-stacked>.am-btn-group>.am-btn{display:block;float:none;width:100%;max-width:100%}.am-btn-group-stacked>.am-btn-group:before,.am-btn-group-stacked>.am-btn-group:after{content:" ";display:table}.am-btn-group-stacked>.am-btn-group:after{clear:both}.am-btn-group-stacked>.am-btn-group>.am-btn{float:none}.am-btn-group-stacked>.am-btn+.am-btn,.am-btn-group-stacked>.am-btn+.am-btn-group,.am-btn-group-stacked>.am-btn-group+.am-btn,.am-btn-group-stacked>.am-btn-group+.am-btn-group{margin-top:-1px;margin-left:0}.am-btn-group-stacked>.am-btn:not(:first-child):not(:last-child){border-radius:0}.am-btn-group-stacked>.am-btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.am-btn-group-stacked>.am-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0}.am-btn-group-stacked>.am-btn-group:not(:first-child):not(:last-child)>.am-btn{border-radius:0}.am-btn-group-stacked>.am-btn-group:first-child:not(:last-child)>.am-btn:last-child,.am-btn-group-stacked>.am-btn-group:first-child:not(:last-child)>.am-dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.am-btn-group-stacked>.am-btn-group:last-child:not(:first-child)>.am-btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.am-btn-group-justify{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-btn-group-justify>.am-btn,.am-btn-group-justify>.am-btn-group{float:none;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-btn-group-justify>.am-btn-group .am-btn{width:100%}.lte9 .am-btn-group-justify{display:table;table-layout:fixed;border-collapse:separate}.lte9 .am-btn-group-justify>.am-btn,.lte9 .am-btn-group-justify>.am-btn-group{float:none;display:table-cell;width:1%}.am-btn-group .am-dropdown{float:left;margin-left:-1px}.am-btn-group .am-dropdown>.am-btn{border-bottom-left-radius:0;border-top-left-radius:0}.am-btn-group .am-active .am-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.am-btn-group .am-active .am-dropdown-toggle.am-btn-link{-webkit-box-shadow:none;box-shadow:none}.am-btn-group .am-dropdown-toggle:active,.am-btn-group .am-active .am-dropdown-toggle{outline:0}[data-am-button]>.am-btn>input[type=radio],[data-am-button]>.am-btn>input[type=checkbox]{position:absolute;z-index:-1;opacity:0}.am-close{display:inline-block;text-align:center;width:24px;font-size:20px;font-weight:700;line-height:24px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;-webkit-transition:all .3s;transition:all .3s}.am-close:hover,.am-close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;outline:0}.am-close[class*=am-icon-]{font-size:16px}button.am-close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}a.am-close:hover{color:inherit;text-decoration:none;cursor:pointer}.am-close-alt{border-radius:50%;background:#eee;opacity:.7;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.25);box-shadow:0 0 0 1px rgba(0,0,0,.25)}.am-close-alt:hover,.am-close-alt:focus{opacity:1}.am-close-spin:hover{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.2.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff?v=4.2.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.2.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}[class*=am-icon-]{display:inline-block}[class*=am-icon-]:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.am-icon-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}[class*=am-icon-].am-fl{margin-right:.3em}[class*=am-icon-].am-fr{margin-left:.3em}.am-icon-sm:before{font-size:150%;vertical-align:-10%}.am-icon-md:before{font-size:200%;vertical-align:-16%}.am-icon-lg:before{font-size:250%;vertical-align:-22%}.am-icon-btn{-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;width:48px;height:48px;font-size:24px;line-height:48px;border-radius:50%;background-color:#eee;color:#555;text-align:center}.am-icon-btn:hover,.am-icon-btn:focus{background-color:#f5f5f5;color:#333;text-decoration:none;outline:0}.am-icon-btn:active{background-color:#ddd;color:#333}.am-icon-btn.am-primary,.am-icon-btn.am-secondary,.am-icon-btn.am-success,.am-icon-btn.am-warning,.am-icon-btn.am-danger{color:#fff}.am-icon-btn.am-primary{background-color:#0e90d2}.am-icon-btn.am-secondary{background-color:#3bb4f2}.am-icon-btn.am-success{background-color:#5eb95e}.am-icon-btn.am-warning{background-color:#f37b1d}.am-icon-btn.am-danger{background-color:#dd514c}.am-icon-btn-sm{width:32px;height:32px;font-size:16px;line-height:32px}.am-icon-btn-lg{width:64px;height:64px;font-size:28px;line-height:64px}.am-icon-glass:before{content:"\f000"}.am-icon-music:before{content:"\f001"}.am-icon-search:before{content:"\f002"}.am-icon-envelope-o:before{content:"\f003"}.am-icon-heart:before{content:"\f004"}.am-icon-star:before{content:"\f005"}.am-icon-star-o:before{content:"\f006"}.am-icon-user:before{content:"\f007"}.am-icon-film:before{content:"\f008"}.am-icon-th-large:before{content:"\f009"}.am-icon-th:before{content:"\f00a"}.am-icon-th-list:before{content:"\f00b"}.am-icon-check:before{content:"\f00c"}.am-icon-remove:before,.am-icon-close:before,.am-icon-times:before{content:"\f00d"}.am-icon-search-plus:before{content:"\f00e"}.am-icon-search-minus:before{content:"\f010"}.am-icon-power-off:before{content:"\f011"}.am-icon-signal:before{content:"\f012"}.am-icon-gear:before,.am-icon-cog:before{content:"\f013"}.am-icon-trash-o:before{content:"\f014"}.am-icon-home:before{content:"\f015"}.am-icon-file-o:before{content:"\f016"}.am-icon-clock-o:before{content:"\f017"}.am-icon-road:before{content:"\f018"}.am-icon-download:before{content:"\f019"}.am-icon-arrow-circle-o-down:before{content:"\f01a"}.am-icon-arrow-circle-o-up:before{content:"\f01b"}.am-icon-inbox:before{content:"\f01c"}.am-icon-play-circle-o:before{content:"\f01d"}.am-icon-rotate-right:before,.am-icon-repeat:before{content:"\f01e"}.am-icon-refresh:before{content:"\f021"}.am-icon-list-alt:before{content:"\f022"}.am-icon-lock:before{content:"\f023"}.am-icon-flag:before{content:"\f024"}.am-icon-headphones:before{content:"\f025"}.am-icon-volume-off:before{content:"\f026"}.am-icon-volume-down:before{content:"\f027"}.am-icon-volume-up:before{content:"\f028"}.am-icon-qrcode:before{content:"\f029"}.am-icon-barcode:before{content:"\f02a"}.am-icon-tag:before{content:"\f02b"}.am-icon-tags:before{content:"\f02c"}.am-icon-book:before{content:"\f02d"}.am-icon-bookmark:before{content:"\f02e"}.am-icon-print:before{content:"\f02f"}.am-icon-camera:before{content:"\f030"}.am-icon-font:before{content:"\f031"}.am-icon-bold:before{content:"\f032"}.am-icon-italic:before{content:"\f033"}.am-icon-text-height:before{content:"\f034"}.am-icon-text-width:before{content:"\f035"}.am-icon-align-left:before{content:"\f036"}.am-icon-align-center:before{content:"\f037"}.am-icon-align-right:before{content:"\f038"}.am-icon-align-justify:before{content:"\f039"}.am-icon-list:before{content:"\f03a"}.am-icon-dedent:before,.am-icon-outdent:before{content:"\f03b"}.am-icon-indent:before{content:"\f03c"}.am-icon-video-camera:before{content:"\f03d"}.am-icon-photo:before,.am-icon-image:before,.am-icon-picture-o:before{content:"\f03e"}.am-icon-pencil:before{content:"\f040"}.am-icon-map-marker:before{content:"\f041"}.am-icon-adjust:before{content:"\f042"}.am-icon-tint:before{content:"\f043"}.am-icon-edit:before,.am-icon-pencil-square-o:before{content:"\f044"}.am-icon-share-square-o:before{content:"\f045"}.am-icon-check-square-o:before{content:"\f046"}.am-icon-arrows:before{content:"\f047"}.am-icon-step-backward:before{content:"\f048"}.am-icon-fast-backward:before{content:"\f049"}.am-icon-backward:before{content:"\f04a"}.am-icon-play:before{content:"\f04b"}.am-icon-pause:before{content:"\f04c"}.am-icon-stop:before{content:"\f04d"}.am-icon-forward:before{content:"\f04e"}.am-icon-fast-forward:before{content:"\f050"}.am-icon-step-forward:before{content:"\f051"}.am-icon-eject:before{content:"\f052"}.am-icon-chevron-left:before{content:"\f053"}.am-icon-chevron-right:before{content:"\f054"}.am-icon-plus-circle:before{content:"\f055"}.am-icon-minus-circle:before{content:"\f056"}.am-icon-times-circle:before{content:"\f057"}.am-icon-check-circle:before{content:"\f058"}.am-icon-question-circle:before{content:"\f059"}.am-icon-info-circle:before{content:"\f05a"}.am-icon-crosshairs:before{content:"\f05b"}.am-icon-times-circle-o:before{content:"\f05c"}.am-icon-check-circle-o:before{content:"\f05d"}.am-icon-ban:before{content:"\f05e"}.am-icon-arrow-left:before{content:"\f060"}.am-icon-arrow-right:before{content:"\f061"}.am-icon-arrow-up:before{content:"\f062"}.am-icon-arrow-down:before{content:"\f063"}.am-icon-mail-forward:before,.am-icon-share:before{content:"\f064"}.am-icon-expand:before{content:"\f065"}.am-icon-compress:before{content:"\f066"}.am-icon-plus:before{content:"\f067"}.am-icon-minus:before{content:"\f068"}.am-icon-asterisk:before{content:"\f069"}.am-icon-exclamation-circle:before{content:"\f06a"}.am-icon-gift:before{content:"\f06b"}.am-icon-leaf:before{content:"\f06c"}.am-icon-fire:before{content:"\f06d"}.am-icon-eye:before{content:"\f06e"}.am-icon-eye-slash:before{content:"\f070"}.am-icon-warning:before,.am-icon-exclamation-triangle:before{content:"\f071"}.am-icon-plane:before{content:"\f072"}.am-icon-calendar:before{content:"\f073"}.am-icon-random:before{content:"\f074"}.am-icon-comment:before{content:"\f075"}.am-icon-magnet:before{content:"\f076"}.am-icon-chevron-up:before{content:"\f077"}.am-icon-chevron-down:before{content:"\f078"}.am-icon-retweet:before{content:"\f079"}.am-icon-shopping-cart:before{content:"\f07a"}.am-icon-folder:before{content:"\f07b"}.am-icon-folder-open:before{content:"\f07c"}.am-icon-arrows-v:before{content:"\f07d"}.am-icon-arrows-h:before{content:"\f07e"}.am-icon-bar-chart-o:before,.am-icon-bar-chart:before{content:"\f080"}.am-icon-twitter-square:before{content:"\f081"}.am-icon-facebook-square:before{content:"\f082"}.am-icon-camera-retro:before{content:"\f083"}.am-icon-key:before{content:"\f084"}.am-icon-gears:before,.am-icon-cogs:before{content:"\f085"}.am-icon-comments:before{content:"\f086"}.am-icon-thumbs-o-up:before{content:"\f087"}.am-icon-thumbs-o-down:before{content:"\f088"}.am-icon-star-half:before{content:"\f089"}.am-icon-heart-o:before{content:"\f08a"}.am-icon-sign-out:before{content:"\f08b"}.am-icon-linkedin-square:before{content:"\f08c"}.am-icon-thumb-tack:before{content:"\f08d"}.am-icon-external-link:before{content:"\f08e"}.am-icon-sign-in:before{content:"\f090"}.am-icon-trophy:before{content:"\f091"}.am-icon-github-square:before{content:"\f092"}.am-icon-upload:before{content:"\f093"}.am-icon-lemon-o:before{content:"\f094"}.am-icon-phone:before{content:"\f095"}.am-icon-square-o:before{content:"\f096"}.am-icon-bookmark-o:before{content:"\f097"}.am-icon-phone-square:before{content:"\f098"}.am-icon-twitter:before{content:"\f099"}.am-icon-facebook:before{content:"\f09a"}.am-icon-github:before{content:"\f09b"}.am-icon-unlock:before{content:"\f09c"}.am-icon-credit-card:before{content:"\f09d"}.am-icon-rss:before{content:"\f09e"}.am-icon-hdd-o:before{content:"\f0a0"}.am-icon-bullhorn:before{content:"\f0a1"}.am-icon-bell:before{content:"\f0f3"}.am-icon-certificate:before{content:"\f0a3"}.am-icon-hand-o-right:before{content:"\f0a4"}.am-icon-hand-o-left:before{content:"\f0a5"}.am-icon-hand-o-up:before{content:"\f0a6"}.am-icon-hand-o-down:before{content:"\f0a7"}.am-icon-arrow-circle-left:before{content:"\f0a8"}.am-icon-arrow-circle-right:before{content:"\f0a9"}.am-icon-arrow-circle-up:before{content:"\f0aa"}.am-icon-arrow-circle-down:before{content:"\f0ab"}.am-icon-globe:before{content:"\f0ac"}.am-icon-wrench:before{content:"\f0ad"}.am-icon-tasks:before{content:"\f0ae"}.am-icon-filter:before{content:"\f0b0"}.am-icon-briefcase:before{content:"\f0b1"}.am-icon-arrows-alt:before{content:"\f0b2"}.am-icon-group:before,.am-icon-users:before{content:"\f0c0"}.am-icon-chain:before,.am-icon-link:before{content:"\f0c1"}.am-icon-cloud:before{content:"\f0c2"}.am-icon-flask:before{content:"\f0c3"}.am-icon-cut:before,.am-icon-scissors:before{content:"\f0c4"}.am-icon-copy:before,.am-icon-files-o:before{content:"\f0c5"}.am-icon-paperclip:before{content:"\f0c6"}.am-icon-save:before,.am-icon-floppy-o:before{content:"\f0c7"}.am-icon-square:before{content:"\f0c8"}.am-icon-navicon:before,.am-icon-reorder:before,.am-icon-bars:before{content:"\f0c9"}.am-icon-list-ul:before{content:"\f0ca"}.am-icon-list-ol:before{content:"\f0cb"}.am-icon-strikethrough:before{content:"\f0cc"}.am-icon-underline:before{content:"\f0cd"}.am-icon-table:before{content:"\f0ce"}.am-icon-magic:before{content:"\f0d0"}.am-icon-truck:before{content:"\f0d1"}.am-icon-pinterest:before{content:"\f0d2"}.am-icon-pinterest-square:before{content:"\f0d3"}.am-icon-google-plus-square:before{content:"\f0d4"}.am-icon-google-plus:before{content:"\f0d5"}.am-icon-money:before{content:"\f0d6"}.am-icon-caret-down:before{content:"\f0d7"}.am-icon-caret-up:before{content:"\f0d8"}.am-icon-caret-left:before{content:"\f0d9"}.am-icon-caret-right:before{content:"\f0da"}.am-icon-columns:before{content:"\f0db"}.am-icon-unsorted:before,.am-icon-sort:before{content:"\f0dc"}.am-icon-sort-down:before,.am-icon-sort-desc:before{content:"\f0dd"}.am-icon-sort-up:before,.am-icon-sort-asc:before{content:"\f0de"}.am-icon-envelope:before{content:"\f0e0"}.am-icon-linkedin:before{content:"\f0e1"}.am-icon-rotate-left:before,.am-icon-undo:before{content:"\f0e2"}.am-icon-legal:before,.am-icon-gavel:before{content:"\f0e3"}.am-icon-dashboard:before,.am-icon-tachometer:before{content:"\f0e4"}.am-icon-comment-o:before{content:"\f0e5"}.am-icon-comments-o:before{content:"\f0e6"}.am-icon-flash:before,.am-icon-bolt:before{content:"\f0e7"}.am-icon-sitemap:before{content:"\f0e8"}.am-icon-umbrella:before{content:"\f0e9"}.am-icon-paste:before,.am-icon-clipboard:before{content:"\f0ea"}.am-icon-lightbulb-o:before{content:"\f0eb"}.am-icon-exchange:before{content:"\f0ec"}.am-icon-cloud-download:before{content:"\f0ed"}.am-icon-cloud-upload:before{content:"\f0ee"}.am-icon-user-md:before{content:"\f0f0"}.am-icon-stethoscope:before{content:"\f0f1"}.am-icon-suitcase:before{content:"\f0f2"}.am-icon-bell-o:before{content:"\f0a2"}.am-icon-coffee:before{content:"\f0f4"}.am-icon-cutlery:before{content:"\f0f5"}.am-icon-file-text-o:before{content:"\f0f6"}.am-icon-building-o:before{content:"\f0f7"}.am-icon-hospital-o:before{content:"\f0f8"}.am-icon-ambulance:before{content:"\f0f9"}.am-icon-medkit:before{content:"\f0fa"}.am-icon-fighter-jet:before{content:"\f0fb"}.am-icon-beer:before{content:"\f0fc"}.am-icon-h-square:before{content:"\f0fd"}.am-icon-plus-square:before{content:"\f0fe"}.am-icon-angle-double-left:before{content:"\f100"}.am-icon-angle-double-right:before{content:"\f101"}.am-icon-angle-double-up:before{content:"\f102"}.am-icon-angle-double-down:before{content:"\f103"}.am-icon-angle-left:before{content:"\f104"}.am-icon-angle-right:before{content:"\f105"}.am-icon-angle-up:before{content:"\f106"}.am-icon-angle-down:before{content:"\f107"}.am-icon-desktop:before{content:"\f108"}.am-icon-laptop:before{content:"\f109"}.am-icon-tablet:before{content:"\f10a"}.am-icon-mobile-phone:before,.am-icon-mobile:before{content:"\f10b"}.am-icon-circle-o:before{content:"\f10c"}.am-icon-quote-left:before{content:"\f10d"}.am-icon-quote-right:before{content:"\f10e"}.am-icon-spinner:before{content:"\f110"}.am-icon-circle:before{content:"\f111"}.am-icon-mail-reply:before,.am-icon-reply:before{content:"\f112"}.am-icon-github-alt:before{content:"\f113"}.am-icon-folder-o:before{content:"\f114"}.am-icon-folder-open-o:before{content:"\f115"}.am-icon-smile-o:before{content:"\f118"}.am-icon-frown-o:before{content:"\f119"}.am-icon-meh-o:before{content:"\f11a"}.am-icon-gamepad:before{content:"\f11b"}.am-icon-keyboard-o:before{content:"\f11c"}.am-icon-flag-o:before{content:"\f11d"}.am-icon-flag-checkered:before{content:"\f11e"}.am-icon-terminal:before{content:"\f120"}.am-icon-code:before{content:"\f121"}.am-icon-mail-reply-all:before,.am-icon-reply-all:before{content:"\f122"}.am-icon-star-half-empty:before,.am-icon-star-half-full:before,.am-icon-star-half-o:before{content:"\f123"}.am-icon-location-arrow:before{content:"\f124"}.am-icon-crop:before{content:"\f125"}.am-icon-code-fork:before{content:"\f126"}.am-icon-unlink:before,.am-icon-chain-broken:before{content:"\f127"}.am-icon-question:before{content:"\f128"}.am-icon-info:before{content:"\f129"}.am-icon-exclamation:before{content:"\f12a"}.am-icon-superscript:before{content:"\f12b"}.am-icon-subscript:before{content:"\f12c"}.am-icon-eraser:before{content:"\f12d"}.am-icon-puzzle-piece:before{content:"\f12e"}.am-icon-microphone:before{content:"\f130"}.am-icon-microphone-slash:before{content:"\f131"}.am-icon-shield:before{content:"\f132"}.am-icon-calendar-o:before{content:"\f133"}.am-icon-fire-extinguisher:before{content:"\f134"}.am-icon-rocket:before{content:"\f135"}.am-icon-maxcdn:before{content:"\f136"}.am-icon-chevron-circle-left:before{content:"\f137"}.am-icon-chevron-circle-right:before{content:"\f138"}.am-icon-chevron-circle-up:before{content:"\f139"}.am-icon-chevron-circle-down:before{content:"\f13a"}.am-icon-html5:before{content:"\f13b"}.am-icon-css3:before{content:"\f13c"}.am-icon-anchor:before{content:"\f13d"}.am-icon-unlock-alt:before{content:"\f13e"}.am-icon-bullseye:before{content:"\f140"}.am-icon-ellipsis-h:before{content:"\f141"}.am-icon-ellipsis-v:before{content:"\f142"}.am-icon-rss-square:before{content:"\f143"}.am-icon-play-circle:before{content:"\f144"}.am-icon-ticket:before{content:"\f145"}.am-icon-minus-square:before{content:"\f146"}.am-icon-minus-square-o:before{content:"\f147"}.am-icon-level-up:before{content:"\f148"}.am-icon-level-down:before{content:"\f149"}.am-icon-check-square:before{content:"\f14a"}.am-icon-pencil-square:before{content:"\f14b"}.am-icon-external-link-square:before{content:"\f14c"}.am-icon-share-square:before{content:"\f14d"}.am-icon-compass:before{content:"\f14e"}.am-icon-toggle-down:before,.am-icon-caret-square-o-down:before{content:"\f150"}.am-icon-toggle-up:before,.am-icon-caret-square-o-up:before{content:"\f151"}.am-icon-toggle-right:before,.am-icon-caret-square-o-right:before{content:"\f152"}.am-icon-euro:before,.am-icon-eur:before{content:"\f153"}.am-icon-gbp:before{content:"\f154"}.am-icon-dollar:before,.am-icon-usd:before{content:"\f155"}.am-icon-rupee:before,.am-icon-inr:before{content:"\f156"}.am-icon-cny:before,.am-icon-rmb:before,.am-icon-yen:before,.am-icon-jpy:before{content:"\f157"}.am-icon-ruble:before,.am-icon-rouble:before,.am-icon-rub:before{content:"\f158"}.am-icon-won:before,.am-icon-krw:before{content:"\f159"}.am-icon-bitcoin:before,.am-icon-btc:before{content:"\f15a"}.am-icon-file:before{content:"\f15b"}.am-icon-file-text:before{content:"\f15c"}.am-icon-sort-alpha-asc:before{content:"\f15d"}.am-icon-sort-alpha-desc:before{content:"\f15e"}.am-icon-sort-amount-asc:before{content:"\f160"}.am-icon-sort-amount-desc:before{content:"\f161"}.am-icon-sort-numeric-asc:before{content:"\f162"}.am-icon-sort-numeric-desc:before{content:"\f163"}.am-icon-thumbs-up:before{content:"\f164"}.am-icon-thumbs-down:before{content:"\f165"}.am-icon-youtube-square:before{content:"\f166"}.am-icon-youtube:before{content:"\f167"}.am-icon-xing:before{content:"\f168"}.am-icon-xing-square:before{content:"\f169"}.am-icon-youtube-play:before{content:"\f16a"}.am-icon-dropbox:before{content:"\f16b"}.am-icon-stack-overflow:before{content:"\f16c"}.am-icon-instagram:before{content:"\f16d"}.am-icon-flickr:before{content:"\f16e"}.am-icon-adn:before{content:"\f170"}.am-icon-bitbucket:before{content:"\f171"}.am-icon-bitbucket-square:before{content:"\f172"}.am-icon-tumblr:before{content:"\f173"}.am-icon-tumblr-square:before{content:"\f174"}.am-icon-long-arrow-down:before{content:"\f175"}.am-icon-long-arrow-up:before{content:"\f176"}.am-icon-long-arrow-left:before{content:"\f177"}.am-icon-long-arrow-right:before{content:"\f178"}.am-icon-apple:before{content:"\f179"}.am-icon-windows:before{content:"\f17a"}.am-icon-android:before{content:"\f17b"}.am-icon-linux:before{content:"\f17c"}.am-icon-dribbble:before{content:"\f17d"}.am-icon-skype:before{content:"\f17e"}.am-icon-foursquare:before{content:"\f180"}.am-icon-trello:before{content:"\f181"}.am-icon-female:before{content:"\f182"}.am-icon-male:before{content:"\f183"}.am-icon-gittip:before{content:"\f184"}.am-icon-sun-o:before{content:"\f185"}.am-icon-moon-o:before{content:"\f186"}.am-icon-archive:before{content:"\f187"}.am-icon-bug:before{content:"\f188"}.am-icon-vk:before{content:"\f189"}.am-icon-weibo:before{content:"\f18a"}.am-icon-renren:before{content:"\f18b"}.am-icon-pagelines:before{content:"\f18c"}.am-icon-stack-exchange:before{content:"\f18d"}.am-icon-arrow-circle-o-right:before{content:"\f18e"}.am-icon-arrow-circle-o-left:before{content:"\f190"}.am-icon-toggle-left:before,.am-icon-caret-square-o-left:before{content:"\f191"}.am-icon-dot-circle-o:before{content:"\f192"}.am-icon-wheelchair:before{content:"\f193"}.am-icon-vimeo-square:before{content:"\f194"}.am-icon-turkish-lira:before,.am-icon-try:before{content:"\f195"}.am-icon-plus-square-o:before{content:"\f196"}.am-icon-space-shuttle:before{content:"\f197"}.am-icon-slack:before{content:"\f198"}.am-icon-envelope-square:before{content:"\f199"}.am-icon-wordpress:before{content:"\f19a"}.am-icon-openid:before{content:"\f19b"}.am-icon-institution:before,.am-icon-bank:before,.am-icon-university:before{content:"\f19c"}.am-icon-mortar-board:before,.am-icon-graduation-cap:before{content:"\f19d"}.am-icon-yahoo:before{content:"\f19e"}.am-icon-google:before{content:"\f1a0"}.am-icon-reddit:before{content:"\f1a1"}.am-icon-reddit-square:before{content:"\f1a2"}.am-icon-stumbleupon-circle:before{content:"\f1a3"}.am-icon-stumbleupon:before{content:"\f1a4"}.am-icon-delicious:before{content:"\f1a5"}.am-icon-digg:before{content:"\f1a6"}.am-icon-pied-piper:before{content:"\f1a7"}.am-icon-pied-piper-alt:before{content:"\f1a8"}.am-icon-drupal:before{content:"\f1a9"}.am-icon-joomla:before{content:"\f1aa"}.am-icon-language:before{content:"\f1ab"}.am-icon-fax:before{content:"\f1ac"}.am-icon-building:before{content:"\f1ad"}.am-icon-child:before{content:"\f1ae"}.am-icon-paw:before{content:"\f1b0"}.am-icon-spoon:before{content:"\f1b1"}.am-icon-cube:before{content:"\f1b2"}.am-icon-cubes:before{content:"\f1b3"}.am-icon-behance:before{content:"\f1b4"}.am-icon-behance-square:before{content:"\f1b5"}.am-icon-steam:before{content:"\f1b6"}.am-icon-steam-square:before{content:"\f1b7"}.am-icon-recycle:before{content:"\f1b8"}.am-icon-automobile:before,.am-icon-car:before{content:"\f1b9"}.am-icon-cab:before,.am-icon-taxi:before{content:"\f1ba"}.am-icon-tree:before{content:"\f1bb"}.am-icon-spotify:before{content:"\f1bc"}.am-icon-deviantart:before{content:"\f1bd"}.am-icon-soundcloud:before{content:"\f1be"}.am-icon-database:before{content:"\f1c0"}.am-icon-file-pdf-o:before{content:"\f1c1"}.am-icon-file-word-o:before{content:"\f1c2"}.am-icon-file-excel-o:before{content:"\f1c3"}.am-icon-file-powerpoint-o:before{content:"\f1c4"}.am-icon-file-photo-o:before,.am-icon-file-picture-o:before,.am-icon-file-image-o:before{content:"\f1c5"}.am-icon-file-zip-o:before,.am-icon-file-archive-o:before{content:"\f1c6"}.am-icon-file-sound-o:before,.am-icon-file-audio-o:before{content:"\f1c7"}.am-icon-file-movie-o:before,.am-icon-file-video-o:before{content:"\f1c8"}.am-icon-file-code-o:before{content:"\f1c9"}.am-icon-vine:before{content:"\f1ca"}.am-icon-codepen:before{content:"\f1cb"}.am-icon-jsfiddle:before{content:"\f1cc"}.am-icon-life-bouy:before,.am-icon-life-buoy:before,.am-icon-life-saver:before,.am-icon-support:before,.am-icon-life-ring:before{content:"\f1cd"}.am-icon-circle-o-notch:before{content:"\f1ce"}.am-icon-ra:before,.am-icon-rebel:before{content:"\f1d0"}.am-icon-ge:before,.am-icon-empire:before{content:"\f1d1"}.am-icon-git-square:before{content:"\f1d2"}.am-icon-git:before{content:"\f1d3"}.am-icon-hacker-news:before{content:"\f1d4"}.am-icon-tencent-weibo:before{content:"\f1d5"}.am-icon-qq:before{content:"\f1d6"}.am-icon-wechat:before,.am-icon-weixin:before{content:"\f1d7"}.am-icon-send:before,.am-icon-paper-plane:before{content:"\f1d8"}.am-icon-send-o:before,.am-icon-paper-plane-o:before{content:"\f1d9"}.am-icon-history:before{content:"\f1da"}.am-icon-circle-thin:before{content:"\f1db"}.am-icon-header:before{content:"\f1dc"}.am-icon-paragraph:before{content:"\f1dd"}.am-icon-sliders:before{content:"\f1de"}.am-icon-share-alt:before{content:"\f1e0"}.am-icon-share-alt-square:before{content:"\f1e1"}.am-icon-bomb:before{content:"\f1e2"}.am-icon-soccer-ball-o:before,.am-icon-futbol-o:before{content:"\f1e3"}.am-icon-tty:before{content:"\f1e4"}.am-icon-binoculars:before{content:"\f1e5"}.am-icon-plug:before{content:"\f1e6"}.am-icon-slideshare:before{content:"\f1e7"}.am-icon-twitch:before{content:"\f1e8"}.am-icon-yelp:before{content:"\f1e9"}.am-icon-newspaper-o:before{content:"\f1ea"}.am-icon-wifi:before{content:"\f1eb"}.am-icon-calculator:before{content:"\f1ec"}.am-icon-paypal:before{content:"\f1ed"}.am-icon-google-wallet:before{content:"\f1ee"}.am-icon-cc-visa:before{content:"\f1f0"}.am-icon-cc-mastercard:before{content:"\f1f1"}.am-icon-cc-discover:before{content:"\f1f2"}.am-icon-cc-amex:before{content:"\f1f3"}.am-icon-cc-paypal:before{content:"\f1f4"}.am-icon-cc-stripe:before{content:"\f1f5"}.am-icon-bell-slash:before{content:"\f1f6"}.am-icon-bell-slash-o:before{content:"\f1f7"}.am-icon-trash:before{content:"\f1f8"}.am-icon-copyright:before{content:"\f1f9"}.am-icon-at:before{content:"\f1fa"}.am-icon-eyedropper:before{content:"\f1fb"}.am-icon-paint-brush:before{content:"\f1fc"}.am-icon-birthday-cake:before{content:"\f1fd"}.am-icon-area-chart:before{content:"\f1fe"}.am-icon-pie-chart:before{content:"\f200"}.am-icon-line-chart:before{content:"\f201"}.am-icon-lastfm:before{content:"\f202"}.am-icon-lastfm-square:before{content:"\f203"}.am-icon-toggle-off:before{content:"\f204"}.am-icon-toggle-on:before{content:"\f205"}.am-icon-bicycle:before{content:"\f206"}.am-icon-bus:before{content:"\f207"}.am-icon-ioxhost:before{content:"\f208"}.am-icon-angellist:before{content:"\f209"}.am-icon-cc:before{content:"\f20a"}.am-icon-shekel:before,.am-icon-sheqel:before,.am-icon-ils:before{content:"\f20b"}.am-icon-meanpath:before{content:"\f20c"}@-webkit-keyframes icon-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes icon-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.am-icon-spin{-webkit-animation:icon-spin 2s infinite linear;animation:icon-spin 2s infinite linear}.am-icon-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.am-icon-ul>li{position:relative}.am-icon-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.am-input-group{position:relative;display:table;border-collapse:separate}.am-input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.am-input-group .am-form-field{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.am-input-group-label,.am-input-group-btn,.am-input-group .am-form-field{display:table-cell}.am-input-group-label:not(:first-child):not(:last-child),.am-input-group-btn:not(:first-child):not(:last-child),.am-input-group .am-form-field:not(:first-child):not(:last-child){border-radius:0}.am-input-group-label,.am-input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.am-input-group-label{padding:.625em 1em;font-size:1.6rem;font-weight:400;line-height:1.2;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:0}.am-input-group-label input[type=radio],.am-input-group-label input[type=checkbox]{margin-top:0}.am-input-group .am-form-field:first-child,.am-input-group-label:first-child,.am-input-group-btn:first-child>.am-btn,.am-input-group-btn:first-child>.am-btn-group>.am-btn,.am-input-group-btn:first-child>.am-dropdown-toggle,.am-input-group-btn:last-child>.am-btn:not(:last-child):not(.dropdown-toggle),.am-input-group-btn:last-child>.am-btn-group:not(:last-child)>.am-btn{border-bottom-right-radius:0;border-top-right-radius:0}.am-input-group-label:first-child{border-right:0}.am-input-group .am-form-field:last-child,.am-input-group-label:last-child,.am-input-group-btn:last-child>.am-btn,.am-input-group-btn:last-child>.am-btn-group>.am-btn,.am-input-group-btn:last-child>.am-dropdown-toggle,.am-input-group-btn:first-child>.am-btn:not(:first-child),.am-input-group-btn:first-child>.am-btn-group:not(:first-child)>.am-btn{border-bottom-left-radius:0;border-top-left-radius:0}.am-input-group-label:last-child{border-left:0}.am-input-group-btn{position:relative;font-size:0;white-space:nowrap}.am-input-group-btn>.am-btn{position:relative;border-color:#ccc}.am-input-group-btn>.am-btn+.am-btn{margin-left:-1px}.am-input-group-btn>.am-btn:hover,.am-input-group-btn>.am-btn:focus,.am-input-group-btn>.am-btn:active{z-index:2}.am-input-group-btn:first-child>.am-btn,.am-input-group-btn:first-child>.am-btn-group{margin-right:-2px}.am-input-group-btn:last-child>.am-btn,.am-input-group-btn:last-child>.am-btn-group{margin-left:-1px}.am-input-group-lg>.am-form-field,.am-input-group-lg>.am-input-group-label,.am-input-group-lg>.am-input-group-btn>.am-btn{padding:12px 18px!important;font-size:1.8rem!important}.am-input-group-sm>.am-form-field,.am-input-group-sm>.am-input-group-label,.am-input-group-sm>.am-input-group-btn>.am-btn{padding:9px 14px!important;font-size:1.4rem!important}.am-input-group-primary .am-input-group-label{background:#0e90d2;color:#fff}.am-input-group-primary .am-input-group-label,.am-input-group-primary .am-input-group-btn>.am-btn,.am-input-group-primary .am-form-field{border-color:#0e90d2}.am-input-group-secondary .am-input-group-label{background:#3bb4f2;color:#fff}.am-input-group-secondary .am-input-group-label,.am-input-group-secondary .am-input-group-btn>.am-btn,.am-input-group-secondary .am-form-field{border-color:#3bb4f2}.am-input-group-success .am-input-group-label{background:#5eb95e;color:#fff}.am-input-group-success .am-input-group-label,.am-input-group-success .am-input-group-btn>.am-btn,.am-input-group-success .am-form-field{border-color:#5eb95e}.am-input-group-warning .am-input-group-label{background:#f37b1d;color:#fff}.am-input-group-warning .am-input-group-label,.am-input-group-warning .am-input-group-btn>.am-btn,.am-input-group-warning .am-form-field{border-color:#f37b1d}.am-input-group-danger .am-input-group-label{background:#dd514c;color:#fff}.am-input-group-danger .am-input-group-label,.am-input-group-danger .am-input-group-btn>.am-btn,.am-input-group-danger .am-form-field{border-color:#dd514c}.am-list{margin-bottom:1.6rem;padding-left:0}.am-list>li{position:relative;display:block;margin-bottom:-1px;background-color:#fff;border:1px solid #dedede;border-width:1px 0}.am-list>li>a{display:block;padding:1rem 0}.am-list>li>a.am-active,.am-list>li>a.am-active:hover,.am-list>li>a.am-active:focus{z-index:2;color:#fff;background-color:#0e90d2;border-color:#0e90d2}.am-list>li>a.am-active .am-list-item-heading,.am-list>li>a.am-active:hover .am-list-item-heading,.am-list>li>a.am-active:focus .am-list-item-heading{color:inherit}.am-list>li>a.am-active .am-list-item-text,.am-list>li>a.am-active:hover .am-list-item-text,.am-list>li>a.am-active:focus .am-list-item-text{color:#b2e2fa}.am-list>li>.am-badge{float:right}.am-list>li>.am-badge+.am-badge{margin-right:5px}.am-list-static>li{padding:.8rem .2rem}.am-list-static.am-list-border>li{padding:1rem}.am-list-border>li{border-width:1px}.am-list-border>li:first-child,.am-list-border>li:first-child>a{border-top-right-radius:0;border-top-left-radius:0}.am-list-border>li:last-child,.am-list-border>li:last-child>a{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.am-list-border>li>a{padding:1rem}.am-list-border>li>a:hover,.am-list-border>li>a:focus{background-color:#f5f5f5}.am-list-striped>li:nth-of-type(even){background:#f5f5f5}.am-list-item-hd{margin-top:0}.am-list-item-text{line-height:1.4;font-size:1.3rem;color:#999;margin:0}.am-panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.am-panel-hd{padding:.6rem 1.25rem;border-bottom:1px solid transparent;border-top-right-radius:0;border-top-left-radius:0}.am-panel-bd{padding:1.25rem}.am-panel-title{margin:0;font-size:100%;color:inherit}.am-panel-title>a{color:inherit}.am-panel-footer{padding:.6rem 1.25rem;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:0;border-bottom-left-radius:0}.am-panel-default{border-color:#ddd}.am-panel-default>.am-panel-hd{color:#444;background-color:#f5f5f5;border-color:#ddd}.am-panel-default>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#ddd}.am-panel-default>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#ddd}.am-panel-primary{border-color:#10a0ea}.am-panel-primary>.am-panel-hd{color:#fff;background-color:#0e90d2;border-color:#10a0ea}.am-panel-primary>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#10a0ea}.am-panel-primary>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#10a0ea}.am-panel-secondary{border-color:#caebfb}.am-panel-secondary>.am-panel-hd{color:#14a6ef;background-color:rgba(59,180,242,.15);border-color:#caebfb}.am-panel-secondary>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#caebfb}.am-panel-secondary>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#caebfb}.am-panel-success{border-color:#c9e7c9}.am-panel-success>.am-panel-hd{color:#5eb95e;background-color:rgba(94,185,94,.15);border-color:#c9e7c9}.am-panel-success>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#c9e7c9}.am-panel-success>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#c9e7c9}.am-panel-warning{border-color:#fbd0ae}.am-panel-warning>.am-panel-hd{color:#f37b1d;background-color:rgba(243,123,29,.15);border-color:#fbd0ae}.am-panel-warning>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#fbd0ae}.am-panel-warning>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#fbd0ae}.am-panel-danger{border-color:#f5cecd}.am-panel-danger>.am-panel-hd{color:#dd514c;background-color:rgba(221,81,76,.15);border-color:#f5cecd}.am-panel-danger>.am-panel-hd+.am-panel-collapse>.am-panel-bd{border-top-color:#f5cecd}.am-panel-danger>.am-panel-footer+.am-panel-collapse>.am-panel-bd{border-bottom-color:#f5cecd}.am-panel>.am-table{margin-bottom:0}.am-panel>.am-table:first-child{border-top-right-radius:0;border-top-left-radius:0}.am-panel>.am-table:first-child>thead:first-child>tr:first-child td:first-child,.am-panel>.am-table:first-child>tbody:first-child>tr:first-child td:first-child,.am-panel>.am-table:first-child>thead:first-child>tr:first-child th:first-child,.am-panel>.am-table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:0}.am-panel>.am-table:first-child>thead:first-child>tr:first-child td:last-child,.am-panel>.am-table:first-child>tbody:first-child>tr:first-child td:last-child,.am-panel>.am-table:first-child>thead:first-child>tr:first-child th:last-child,.am-panel>.am-table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:0}.am-panel>.am-table:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.am-panel>.am-table:last-child>tbody:last-child>tr:last-child td:first-child,.am-panel>.am-table:last-child>tfoot:last-child>tr:last-child td:first-child,.am-panel>.am-table:last-child>tbody:last-child>tr:last-child th:first-child,.am-panel>.am-table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:0}.am-panel>.am-table:last-child>tbody:last-child>tr:last-child td:last-child,.am-panel>.am-table:last-child>tfoot:last-child>tr:last-child td:last-child,.am-panel>.am-table:last-child>tbody:last-child>tr:last-child th:last-child,.am-panel>.am-table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:0}.am-panel>.am-panel-bd+.am-table{border-top:1px solid #ddd}.am-panel>.am-table>tbody:first-child>tr:first-child th,.am-panel>.am-table>tbody:first-child>tr:first-child td{border-top:0}.am-panel>.am-table-bd{border:0}.am-panel>.am-table-bd>thead>tr>th:first-child,.am-panel>.am-table-bd>tbody>tr>th:first-child,.am-panel>.am-table-bd>tfoot>tr>th:first-child,.am-panel>.am-table-bd>thead>tr>td:first-child,.am-panel>.am-table-bd>tbody>tr>td:first-child,.am-panel>.am-table-bd>tfoot>tr>td:first-child{border-left:0}.am-panel>.am-table-bd>thead>tr>th:last-child,.am-panel>.am-table-bd>tbody>tr>th:last-child,.am-panel>.am-table-bd>tfoot>tr>th:last-child,.am-panel>.am-table-bd>thead>tr>td:last-child,.am-panel>.am-table-bd>tbody>tr>td:last-child,.am-panel>.am-table-bd>tfoot>tr>td:last-child{border-right:0}.am-panel>.am-table-bd>thead>tr:first-child>td,.am-panel>.am-table-bd>tbody>tr:first-child>td,.am-panel>.am-table-bd>thead>tr:first-child>th,.am-panel>.am-table-bd>tbody>tr:first-child>th{border-bottom:0}.am-panel>.am-table-bd>tbody>tr:last-child>td,.am-panel>.am-table-bd>tfoot>tr:last-child>td,.am-panel>.am-table-bd>tbody>tr:last-child>th,.am-panel>.am-table-bd>tfoot>tr:last-child>th{border-bottom:0}.am-panel>.am-list{margin:0}.am-panel>.am-list>li>a{padding-left:1rem;padding-right:1rem}.am-panel>.am-list-static li{padding-left:1rem;padding-right:1rem}.am-panel-group{margin-bottom:2rem}.am-panel-group .am-panel{margin-bottom:0;border-radius:0}.am-panel-group .am-panel+.am-panel{margin-top:6px}.am-panel-group .am-panel-hd{border-bottom:0}.am-panel-group .am-panel-hd+.am-panel-collapse .am-panel-bd{border-top:1px solid #ddd}.am-panel-group .am-panel-footer{border-top:0}.am-panel-group .am-panel-footer+.am-panel-collapse .am-panel-bd{border-bottom:1px solid #ddd}@-webkit-keyframes progress-bar-stripes{from{background-position:36px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:36px 0}to{background-position:0 0}}.am-progress{overflow:hidden;height:2rem;margin-bottom:2rem;background-color:#f5f5f5;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.am-progress-bar{float:left;width:0;height:100%;font-size:1.2rem;line-height:2rem;color:#fff;text-align:center;background-color:#0e90d2;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.am-progress-striped .am-progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:36px 36px;background-size:36px 36px}.am-progress.am-active .am-progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.am-progress-bar[aria-valuenow="1"],.am-progress-bar[aria-valuenow="2"]{min-width:30px}.am-progress-bar[aria-valuenow="0"]{color:#999;min-width:30px;background:0 0;-webkit-box-shadow:none;box-shadow:none}.am-progress-bar-secondary{background-color:#3bb4f2}.am-progress-striped .am-progress-bar-secondary{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.am-progress-bar-success{background-color:#5eb95e}.am-progress-striped .am-progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.am-progress-bar-warning{background-color:#f37b1d}.am-progress-striped .am-progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.am-progress-bar-danger{background-color:#dd514c}.am-progress-striped .am-progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.am-progress-xs{height:.6rem}.am-progress-sm{height:1.2rem}.am-thumbnail{display:block;padding:2px;margin-bottom:2rem;background-color:#fff;border:1px solid #ddd;border-radius:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.am-thumbnail>img,.am-thumbnail a>img{margin-left:auto;margin-right:auto;display:block}.am-thumbnail a.am-thumbnail:hover,.am-thumbnail a.am-thumbnail:focus,.am-thumbnail a.am-thumbnail.active{border-color:#0e90d2;background-color:#fff}.am-thumbnail-caption{margin:0;padding:.8rem;color:#333;font-weight:400}.am-thumbnail-caption :last-child{margin-bottom:0}.am-thumbnails{margin-left:-.5rem;margin-right:-.5rem}.am-thumbnails>li{padding:0 .5rem 1rem .5rem}.am-scrollable-horizontal{width:100%;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.am-scrollable-vertical{height:240px;overflow-y:scroll;-webkit-overflow-scrolling:touch;resize:vertical}.am-square{border-radius:0}.am-radius{border-radius:2px}.am-round{border-radius:1000px}.am-circle{border-radius:50%}.am-cf:before,.am-cf:after{content:" ";display:table}.am-cf:after{clear:both}.am-fl{float:left}.am-fr{float:right}.am-nbfc{overflow:hidden}.am-center{display:block;margin-left:auto;margin-right:auto}.am-block{display:block!important}.am-inline{display:inline!important}.am-inline-block{display:inline-block!important}.am-hide{display:none!important;visibility:hidden!important}.am-vertical-align{font-size:0}.am-vertical-align:before{content:'';display:inline-block;height:100%;vertical-align:middle}.am-vertical-align-middle,.am-vertical-align-bottom{display:inline-block;font-size:1.6rem;max-width:100%}.am-vertical-align-middle{vertical-align:middle}.am-vertical-align-bottom{vertical-align:bottom}.am-responsive-width{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:100%;height:auto}.am-margin{margin:1.6rem}.am-margin-xs{margin:.5rem}.am-margin-sm{margin:1rem}.am-margin-lg{margin:2.4rem}.am-margin-xl{margin:3.2rem}.am-margin-horizontal{margin-left:1.6rem;margin-right:1.6rem}.am-margin-horizontal-xs{margin-left:.5rem;margin-right:.5rem}.am-margin-horizontal-sm{margin-left:1rem;margin-right:1rem}.am-margin-horizontal-lg{margin-left:2.4rem;margin-right:2.4rem}.am-margin-horizontal-xl{margin-left:3.2rem;margin-right:3.2rem}.am-margin-vertical{margin-top:1.6rem;margin-bottom:1.6rem}.am-margin-vertical-xs{margin-top:.5rem;margin-bottom:.5rem}.am-margin-vertical-sm{margin-top:1rem;margin-bottom:1rem}.am-margin-vertical-lg{margin-top:2.4rem;margin-bottom:2.4rem}.am-margin-vertical-xl{margin-top:3.2rem;margin-bottom:3.2rem}.am-margin-top{margin-top:1.6rem}.am-margin-top-xs{margin-top:.5rem}.am-margin-top-sm{margin-top:1rem}.am-margin-top-lg{margin-top:2.4rem}.am-margin-top-xl{margin-top:3.2rem}.am-margin-bottom{margin-bottom:1.6rem}.am-margin-bottom-xs{margin-bottom:.5rem}.am-margin-bottom-sm{margin-bottom:1rem}.am-margin-bottom-lg{margin-bottom:2.4rem}.am-margin-bottom-xl{margin-bottom:3.2rem}.am-margin-left{margin-left:1.6rem}.am-margin-left-xs{margin-left:.5rem}.am-margin-left-sm{margin-left:1rem}.am-margin-left-lg{margin-left:2.4rem}.am-margin-left-xl{margin-left:3.2rem}.am-margin-right{margin-right:1.6rem}.am-margin-right-xs{margin-right:.5rem}.am-margin-right-sm{margin-right:1rem}.am-margin-right-lg{margin-right:2.4rem}.am-margin-right-xl{margin-right:3.2rem}.am-padding{padding:1.6rem}.am-padding-xs{padding:.5rem}.am-padding-sm{padding:1rem}.am-padding-lg{padding:2.4rem}.am-padding-xl{padding:3.2rem}.am-padding-horizontal{padding-left:1.6rem;padding-right:1.6rem}.am-padding-horizontal-xs{padding-left:.5rem;padding-right:.5rem}.am-padding-horizontal-sm{padding-left:1rem;padding-right:1rem}.am-padding-horizontal-lg{padding-left:2.4rem;padding-right:2.4rem}.am-padding-horizontal-xl{padding-left:3.2rem;padding-right:3.2rem}.am-padding-vertical{padding-top:1.6rem;padding-bottom:1.6rem}.am-padding-vertical-xs{padding-top:.5rem;padding-bottom:.5rem}.am-padding-vertical-sm{padding-top:1rem;padding-bottom:1rem}.am-padding-vertical-lg{padding-top:2.4rem;padding-bottom:2.4rem}.am-padding-vertical-xl{padding-top:3.2rem;padding-bottom:3.2rem}.am-padding-top{padding-top:1.6rem}.am-padding-top-xs{padding-top:.5rem}.am-padding-top-sm{padding-top:1rem}.am-padding-top-lg{padding-top:2.4rem}.am-padding-top-xl{padding-top:3.2rem}.am-padding-bottom{padding-bottom:1.6rem}.am-padding-bottom-xs{padding-bottom:.5rem}.am-padding-bottom-sm{padding-bottom:1rem}.am-padding-bottom-lg{padding-bottom:2.4rem}.am-padding-bottom-xl{padding-bottom:3.2rem}.am-padding-left{padding-left:1.6rem}.am-padding-left-xs{padding-left:.5rem}.am-padding-left-sm{padding-left:1rem}.am-padding-left-lg{padding-left:2.4rem}.am-padding-left-xl{padding-left:3.2rem}.am-padding-right{padding-right:1.6rem}.am-padding-right-xs{padding-right:.5rem}.am-padding-right-sm{padding-right:1rem}.am-padding-right-lg{padding-right:2.4rem}.am-padding-right-xl{padding-right:3.2rem}@media only screen{.am-show-sm-only,.am-show-sm-up,.am-show-sm,.am-show-sm-down,.am-hide-md-only,.am-hide-md-up,.am-hide-md,.am-show-md-down,.am-hide-lg-only,.am-hide-lg-up,.am-hide-lg,.am-show-lg-down{display:inherit!important}.am-hide-sm-only,.am-hide-sm-up,.am-hide-sm,.am-hide-sm-down,.am-show-md-only,.am-show-md-up,.am-show-md,.am-hide-md-down,.am-show-lg-only,.am-show-lg-up,.am-show-lg,.am-hide-lg-down{display:none!important}}@media only screen and (min-width:641px){.am-hide-sm-only,.am-show-sm-up,.am-hide-sm,.am-hide-sm-down,.am-show-md-only,.am-show-md-up,.am-show-md,.am-show-md-down,.am-hide-lg-only,.am-hide-lg-up,.am-hide-lg,.am-show-lg-down{display:inherit!important}.am-show-sm-only,.am-hide-sm-up,.am-show-sm,.am-show-sm-down,.am-hide-md-only,.am-hide-md-up,.am-hide-md,.am-hide-md-down,.am-show-lg-only,.am-show-lg-up,.am-show-lg,.am-hide-lg-down{display:none!important}}@media only screen and (min-width:1025px){.am-hide-sm-only,.am-show-sm-up,.am-hide-sm,.am-hide-sm-down,.am-hide-md-only,.am-show-md-up,.am-hide-md,.am-hide-md-down,.am-show-lg-only,.am-show-lg-up,.am-show-lg,.am-show-lg-down{display:inherit!important}.am-show-sm-only,.am-hide-sm-up,.am-show-sm,.am-show-sm-down,.am-show-md-only,.am-hide-md-up,.am-show-md,.am-show-md-down,.am-hide-lg-only,.am-hide-lg-up,.am-hide-lg,.am-hide-lg-down{display:none!important}}@media only screen and (orientation:landscape){.am-show-landscape,.am-hide-portrait{display:inherit!important}.am-hide-landscape,.am-show-portrait{display:none!important}}@media only screen and (orientation:portrait){.am-show-portrait,.am-hide-landscape{display:inherit!important}.am-hide-portrait,.am-show-landscape{display:none!important}}.am-sans-serif{font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3",FontAwesome,sans-serif}.am-serif{font-family:Georgia,"Times New Roman",Times,SimSun,FontAwesome,serif}.am-kai{font-family:Georgia,"Times New Roman",Times,Kai,"Kaiti SC",KaiTi,BiauKai,FontAwesome,serif}.am-monospace{font-family:Monaco,Menlo,Consolas,"Courier New",FontAwesome,monospace}.am-text-primary{color:#0e90d2}.am-text-secondary{color:#3bb4f2}.am-text-success{color:#5eb95e}.am-text-warning{color:#f37b1d}.am-text-danger{color:#dd514c}.am-link-muted{color:#666}.am-link-muted a{color:#666}.am-link-muted:hover,.am-link-muted a:hover{color:#555}.am-text-default{font-size:1.6rem}.am-text-xs{font-size:1.2rem}.am-text-sm{font-size:1.4rem}.am-text-lg{font-size:1.8rem}.am-text-xl{font-size:2.4rem}.am-text-xxl{font-size:3.2rem}.am-text-xxxl{font-size:4.2rem}.am-ellipsis,.am-text-truncate{word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-text-break{word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;-moz-hyphens:auto;hyphens:auto}.am-text-nowrap{white-space:nowrap}[class*=am-align-]{margin-bottom:1rem}.am-align-left{margin-right:1rem;float:left}.am-align-right{margin-left:1rem;float:right}.am-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.am-text-ir{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@media only screen{.am-text-left{text-align:left!important}.am-text-right{text-align:right!important}.am-text-center{text-align:center!important}.am-text-justify{text-align:justify!important}}@media only screen and (max-width:640px){.am-sm-only-text-left{text-align:left!important}.am-sm-only-text-right{text-align:right!important}.am-sm-only-text-center{text-align:center!important}.am-sm-only-text-justify{text-align:justify!important}}@media only screen and (min-width:641px) and (max-width:1024px){.am-md-only-text-left{text-align:left!important}.am-md-only-text-right{text-align:right!important}.am-md-only-text-center{text-align:center!important}.am-md-only-text-justify{text-align:justify!important}}@media only screen and (min-width:641px){.am-md-text-left{text-align:left!important}.am-md-text-right{text-align:right!important}.am-md-text-center{text-align:center!important}.am-md-text-justify{text-align:justify!important}}@media only screen and (min-width:1025px){.am-lg-text-left{text-align:left!important}.am-lg-text-right{text-align:right!important}.am-lg-text-center{text-align:center!important}.am-lg-text-justify{text-align:justify!important}}.am-text-top{vertical-align:top!important}.am-text-middle{vertical-align:middle!important}.am-text-bottom{vertical-align:bottom!important}.am-angle{position:absolute}.am-angle:before,.am-angle:after{position:absolute;display:block;content:"";width:0;height:0;border:8px dashed transparent;z-index:1}.am-angle-up{top:0}.am-angle-up:before,.am-angle-up:after{border-bottom-style:solid;border-width:0 8px 8px}.am-angle-up:before{border-bottom-color:#ddd;bottom:0}.am-angle-up:after{border-bottom-color:#fff;bottom:-1px}.am-angle-down{bottom:-9px}.am-angle-down:before,.am-angle-down:after{border-top-style:solid;border-width:8px 8px 0}.am-angle-down:before{border-top-color:#ddd;bottom:0}.am-angle-down:after{border-top-color:#fff;bottom:1px}.am-angle-left{left:-9px}.am-angle-left:before,.am-angle-left:after{border-right-style:solid;border-width:8px 8px 8px 0}.am-angle-left:before{border-right-color:#ddd;left:0}.am-angle-left:after{border-right-color:#fff;left:1px}.am-angle-right{right:0}.am-angle-right:before,.am-angle-right:after{border-left-style:solid;border-width:8px 0 8px 8px}.am-angle-right:before{border-left-color:#ddd;left:0}.am-angle-right:after{border-left-color:#fff;left:-1px}.am-alert{margin-bottom:15px;padding:10px;background:#0e90d2;color:#fff;border:1px solid #0c7cb5;border-radius:0}.am-alert a{color:#fff}.am-alert h1,.am-alert h2,.am-alert h3,.am-alert h4,.am-alert h5,.am-alert h6{color:inherit}.am-alert .am-close{opacity:.4}.am-alert .am-close:hover{opacity:.6}*+.am-alert{margin-top:15px}.am-alert>:last-child{margin-bottom:0}.am-alert>.am-close:first-child{float:right;height:auto;margin:-3px -5px auto auto}.am-alert>.am-close:first-child+*{margin-top:0}.am-alert-secondary{background-color:#eee;border-color:#dfdfdf;color:#555}.am-alert-success{background-color:#5eb95e;border-color:#4bad4b;color:#fff}.am-alert-warning{background-color:#f37b1d;border-color:#e56c0c;color:#fff}.am-alert-danger{background-color:#dd514c;border-color:#d83832;color:#fff}.am-dropdown{position:relative;display:inline-block}.am-dropdown-toggle:focus{outline:0}.am-dropdown-content{position:absolute;top:100%;left:0;z-index:1020;display:none;float:left;min-width:160px;padding:15px;margin:9px 0 0;text-align:left;line-height:1.6;background-color:#fff;border:1px solid #ddd;border-radius:0;-webkit-background-clip:padding-box;background-clip:padding-box;-webkit-animation-duration:.15s;animation-duration:.15s}.am-dropdown-content:before,.am-dropdown-content:after{position:absolute;display:block;content:"";width:0;height:0;border:8px dashed transparent;z-index:1}.am-dropdown-content:before,.am-dropdown-content:after{border-bottom-style:solid;border-width:0 8px 8px}.am-dropdown-content:before{border-bottom-color:#ddd;bottom:0}.am-dropdown-content:after{border-bottom-color:#fff;bottom:-1px}.am-dropdown-content:before,.am-dropdown-content:after{left:10px;top:-8px;pointer-events:none}.am-dropdown-content:after{top:-7px}.am-active>.am-dropdown-content{display:block}.am-dropdown-content :first-child{margin-top:0}.am-dropdown-up .am-dropdown-content{top:auto;bottom:100%;margin:0 0 9px}.am-dropdown-up .am-dropdown-content:before,.am-dropdown-up .am-dropdown-content:after{border-bottom:none;border-top:8px solid #ddd;top:auto;bottom:-8px}.am-dropdown-up .am-dropdown-content:after{bottom:-7px;border-top-color:#fff}.am-dropdown-flip .am-dropdown-content{left:auto;right:0}.am-dropdown-flip .am-dropdown-content:before,.am-dropdown-flip .am-dropdown-content:after{left:auto;right:10px}ul.am-dropdown-content{list-style:none;padding:5px 0}ul.am-dropdown-content.am-fr{right:0;left:auto}ul.am-dropdown-content .am-divider{height:1px;margin:0 0;overflow:hidden;background-color:#e5e5e5}ul.am-dropdown-content>li>a{display:block;padding:6px 20px;clear:both;font-weight:400;color:#333;white-space:nowrap}ul.am-dropdown-content>li>a:hover,ul.am-dropdown-content>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}ul.am-dropdown-content>.am-active>a,ul.am-dropdown-content>.am-active>a:hover,ul.am-dropdown-content>.am-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#0e90d2}ul.am-dropdown-content>.am-disabled>a,ul.am-dropdown-content>.am-disabled>a:hover,ul.am-dropdown-content>.am-disabled>a:focus{color:#999}ul.am-dropdown-content>.am-disabled>a:hover,ul.am-dropdown-content>.am-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.am-dropdown-header{display:block;padding:6px 20px;font-size:1.2rem;color:#999}.am-fr>.am-dropdown-content{right:0;left:auto}.am-fr>.am-dropdown-content:before{right:10px;left:auto}.am-dropdown-animation{-webkit-animation:am-dropdown-animation .15s ease-out;animation:am-dropdown-animation .15s ease-out}@-webkit-keyframes am-dropdown-animation{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}}@keyframes am-dropdown-animation{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}}.am-slider a:hover,.am-slider a:focus{outline:0}.am-slides,.am-control-nav,.am-direction-nav{margin:0;padding:0;list-style:none}.am-slider{margin:0;padding:0}.am-slider .am-slides:before,.am-slider .am-slides:after{content:" ";display:table}.am-slider .am-slides:after{clear:both}.am-slider .am-slides>li{display:none;-webkit-backface-visibility:hidden;position:relative}.no-js .am-slider .am-slides>li:first-child{display:block}.am-slider .am-slides img{width:100%;display:block}.am-pauseplay span{text-transform:capitalize}.am-slider{position:relative}.am-viewport{-webkit-transition:all 1s ease;transition:all 1s ease}.am-slider-carousel li{margin-right:5px}.am-control-nav{position:absolute}.am-control-nav li{display:inline-block}.am-control-thumbs{position:static;overflow:hidden}.am-control-thumbs img{-webkit-transition:opacity .1s;transition:opacity .1s}.am-slider-default{margin:0 0 20px;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 0 2px rgba(0,0,0,.15);box-shadow:0 0 2px rgba(0,0,0,.15)}.am-slider-default .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-default .am-viewport{max-height:300px}.am-slider-default .carousel li{margin-right:5px}.am-slider-default .am-direction-nav a{position:absolute;top:50%;z-index:10;display:block;width:36px;height:24px;margin:-12px 0 0;overflow:hidden;opacity:.45;cursor:pointer;color:rgba(0,0,0,.65);-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-default .am-direction-nav a:before{color:#333;display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f137";font-size:24px}.am-slider-default .am-direction-nav a.am-next:before{content:"\f138"}.am-slider-default .am-direction-nav .am-prev{left:10px}.am-slider-default .am-direction-nav .am-next{right:10px;text-align:right}.am-slider-default .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-default:hover .am-prev{opacity:.7;left:10px}.am-slider-default:hover .am-prev:hover{opacity:1}.am-slider-default:hover .am-next{opacity:.7;right:10px}.am-slider-default:hover .am-next:hover{opacity:1}.am-slider-default .am-pauseplay a{display:block;width:20px;height:20px;position:absolute;bottom:5px;left:10px;opacity:.8;z-index:10;overflow:hidden;cursor:pointer;color:#000}.am-slider-default .am-pauseplay a::before{font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:20px;display:inline-block;content:"\f04c"}.am-slider-default .am-pauseplay a:hover{opacity:1}.am-slider-default .am-pauseplay a.am-play::before{content:"\f04b"}.am-slider-default .am-slider-desc{background-color:rgba(0,0,0,.7);position:absolute;bottom:0;padding:10px;width:100%;color:#fff}.am-slider-default .am-control-nav{width:100%;position:absolute;bottom:-15px;text-align:center}.am-slider-default .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-default .am-control-nav li a{width:8px;height:8px;display:block;background-color:#666;background-color:rgba(0,0,0,.5);line-height:0;font-size:0;cursor:pointer;text-indent:-9999px;border-radius:20px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-default .am-control-nav li a:hover{background-color:#333;background-color:rgba(0,0,0,.7)}.am-slider-default .am-control-nav li a.am-active{background-color:#000;background-color:#0e90d2;cursor:default}.am-slider-default .am-control-thumbs{margin:5px 0 0;position:static;overflow:hidden}.am-slider-default .am-control-thumbs li{width:25%;float:left;margin:0}.am-slider-default .am-control-thumbs img{width:100%;display:block;opacity:.7;cursor:pointer}.am-slider-default .am-control-thumbs img:hover{opacity:1}.am-slider-default .am-control-thumbs .am-active{opacity:1;cursor:default}.am-modal{width:270px;position:fixed;display:none;z-index:1110;left:50%;margin-left:-135px;margin-top:0;top:50%;text-align:center;border-radius:0;opacity:0;-webkit-transform:translate3d(0,0,0) scale(1.185);transform:translate3d(0,0,0) scale(1.185);-webkit-transition-property:-webkit-transform,opacity;transition-property:transform,opacity}.am-modal:focus{outline:0}.am-modal.am-modal-active{opacity:1;-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-transform:translate3d(0,0,0) scale(1);transform:translate3d(0,0,0) scale(1)}.am-modal.am-modal-out{opacity:0;z-index:1109;-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-transform:translate3d(0,0,0) scale(0.815);transform:translate3d(0,0,0) scale(0.815)}@media only screen and (min-width:641px){.am-modal{width:540px;margin-left:-270px}}.am-modal-dialog{border-radius:0;background:#f8f8f8}.am-modal-hd{padding:15px 10px 5px 10px;font-size:1.8rem;font-weight:500}.am-modal-hd+.am-modal-bd{padding-top:0}.am-modal-hd .am-close{position:absolute;top:4px;right:4px}.am-modal-bd{padding:15px 10px;text-align:center;border-bottom:1px solid #dedede;border-radius:2px 2px 0 0}.am-modal-bd+.am-modal-bd{margin-top:5px}.am-modal-prompt-input{display:block;margin:5px auto 0 auto;border-radius:0;padding:5px;line-height:1.8rem;width:80%;border:1px solid #dedede;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none}.am-modal-prompt-input:focus{outline:0;border-color:#d6d6d6}.am-modal-footer{height:44px;overflow:hidden;display:table;width:100%;border-collapse:collapse}.am-modal-btn{display:table-cell!important;padding:0 5px;height:44px;-webkit-box-sizing:border-box!important;box-sizing:border-box!important;font-size:1.6rem;line-height:44px;text-align:center;color:#0e90d2;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;cursor:pointer;border-right:1px solid #dedede}.am-modal-btn:first-child{border-radius:0}.am-modal-btn:last-child{border-right:none;border-radius:0}.am-modal-btn:first-child:last-child{border-radius:0}.am-modal-btn.am-modal-btn-bold{font-weight:500}.am-modal-btn:active{background:#d4d4d4}.am-modal-btn+.am-modal-btn{border-left:1px solid #dedede}.am-modal-no-btn .am-modal-dialog{border-radius:0;border-bottom:none}.am-modal-no-btn .am-modal-bd{border-bottom:none}.am-modal-no-btn .am-modal-footer{display:none}.am-modal-loading .am-modal-bd{border-bottom:none}.am-modal-loading .am-icon-spin{display:inline-block;font-size:2.4rem}.am-modal-loading .am-modal-footer{display:none}.am-modal-actions{position:fixed;left:0;bottom:0;z-index:1110;width:100%;text-align:center;border-radius:0;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 300ms;transition:transform 300ms}.am-modal-actions.am-modal-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.am-modal-actions.am-modal-out{z-index:1109;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.am-modal-actions-group{margin:10px}.am-modal-actions-group .am-list{margin:0;border-radius:0}.am-modal-actions-group .am-list>li{margin-bottom:0;border-bottom:none;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.015);box-shadow:inset 0 1px 0 rgba(0,0,0,.015)}.am-modal-actions-group .am-list>li>a{padding:1rem;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-modal-actions-group .am-list>li:first-child{border-top:none;border-top-right-radius:0;border-top-left-radius:0}.am-modal-actions-group .am-list>li:last-child{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0}.am-modal-actions-header{padding:1rem;color:#999;font-size:1.4rem}.am-modal-actions-danger{color:#dd514c}.am-modal-actions-danger a{color:inherit}.am-popup{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1110;background:#fff;display:none;overflow:hidden;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.am-popup.am-modal-active,.am-popup.am-modal-out{-webkit-transition-duration:300ms;transition-duration:300ms}.am-popup.am-modal-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.am-popup.am-modal-out{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}@media all and (min-width:630px) and (min-height:630px){.am-popup{width:630px;height:630px;left:50%;top:50%;margin-left:-315px;margin-top:-315px;-webkit-transform:translateY(1024px);-ms-transform:translateY(1024px);transform:translateY(1024px)}.am-popup.am-modal-active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.am-popup.am-modal-out{-webkit-transform:translateY(1024px);-ms-transform:translateY(1024px);transform:translateY(1024px)}}.am-popup-inner{padding-top:44px;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.am-popup-hd{position:fixed;top:0;width:100%;height:43px;border-bottom:1px solid #dedede;background-color:#fff}.am-popup-hd .am-popup-title{font-size:1.8rem;font-weight:700;line-height:43px;text-align:center;margin:0 30px;color:#333;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-popup-hd .am-close{position:absolute;right:10px;top:8px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.am-popup-hd .am-close:hover{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);color:#555}.am-popup-bd{padding:15px;background:#f8f8f8;color:#555}.am-offcanvas{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1090;background:rgba(0,0,0,.15)}.am-offcanvas.am-active{display:block}.am-offcanvas-page{position:fixed;-webkit-transition:margin-left .3s ease-in-out;transition:margin-left .3s ease-in-out}.am-offcanvas-bar{position:fixed;top:0;bottom:0;left:0;z-index:1091;width:270px;max-width:100%;background:#333;overflow-y:auto;-webkit-overflow-scrolling:touch;-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.am-offcanvas-bar:after{content:"";display:block;position:absolute;top:0;bottom:0;right:0;width:1px;background:#262626}.am-offcanvas.am-active .am-offcanvas-bar.am-offcanvas-bar-active{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.am-offcanvas-bar-flip{left:auto;right:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.am-offcanvas-bar-flip:after{right:auto;left:0}.am-offcanvas-content{padding:15px;color:#999}.am-offcanvas-content a{color:#ccc}.am-popover{position:absolute;top:0;left:0;margin:0;border-radius:0;background:#333;color:#fff;border:1px solid #333;display:none;font-size:1.6rem;z-index:1030;opacity:0;-webkit-transition:opacity 300ms;transition:opacity 300ms}.am-popover.am-active{display:block!important;opacity:1}.am-popover-inner{position:relative;background:#333;padding:8px;z-index:110;overflow:auto;-webkit-overflow-scrolling:touch}.am-popover-caret{position:absolute;left:5px;top:0;z-index:100;display:inline-block;width:0;height:0;vertical-align:middle;border-bottom:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;border-top:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);overflow:hidden}.am-popover-top .am-popover-caret{top:auto;bottom:-8px;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.am-popover-bottom .am-popover-caret{top:-8px}.am-popover-left .am-popover-caret{top:auto;left:auto;right:-12px;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-popover-right .am-popover-caret{right:auto;left:-12px;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.am-popover-sm{font-size:1.4rem}.am-popover-sm .am-popover-inner{padding:5px}.am-popover-lg{font-size:1.8rem}.am-popover-secondary{border-color:#0e90d2}.am-popover-secondary .am-popover-inner{background:#0e90d2}.am-popover-secondary .am-popover-caret{border-bottom-color:#0e90d2}.am-popover-secondary{border-color:#3bb4f2}.am-popover-secondary .am-popover-inner{background:#3bb4f2}.am-popover-secondary .am-popover-caret{border-bottom-color:#3bb4f2}.am-popover-success{border-color:#5eb95e}.am-popover-success .am-popover-inner{background:#5eb95e}.am-popover-success .am-popover-caret{border-bottom-color:#5eb95e}.am-popover-warning{border-color:#f37b1d}.am-popover-warning .am-popover-inner{background:#f37b1d}.am-popover-warning .am-popover-caret{border-bottom-color:#f37b1d}.am-popover-danger{border-color:#dd514c}.am-popover-danger .am-popover-inner{background:#dd514c}.am-popover-danger .am-popover-caret{border-bottom-color:#dd514c}#nprogress{pointer-events:none}#nprogress .nprogress-bar{position:fixed;top:0;left:0;z-index:2000;width:100%;height:2px;background:#5eb95e}#nprogress .nprogress-peg{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #5eb95e,0 0 5px #5eb95e;box-shadow:0 0 10px #5eb95e,0 0 5px #5eb95e;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px)}#nprogress .nprogress-spinner{position:fixed;top:15px;right:15px;z-index:2000;display:block}#nprogress .nprogress-spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:solid 2px transparent;border-top-color:#5eb95e;border-left-color:#5eb95e;border-radius:50%;-webkit-animation:nprogress-spinner 400ms linear infinite;animation:nprogress-spinner 400ms linear infinite}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.am-tabs-bd{position:relative;overflow:hidden;border:1px solid #ddd;border-top:none;z-index:100;-webkit-transition:height .3s;transition:height .3s}.am-tabs-bd .am-tab-panel{position:absolute;top:0;z-index:99;float:left;width:100%;padding:10px 10px 15px;visibility:hidden;-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.am-tabs-bd .am-tab-panel *{-webkit-user-drag:none}.am-tabs-bd .am-tab-panel.am-active{position:relative;z-index:100;visibility:visible;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.am-tabs-bd .am-tab-panel.am-active~.am-tab-panel{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.am-share{font-size:14px}.am-share-title{padding:10px 0 0;margin:0 10px;font-weight:400;text-align:center;color:#555;background-color:#f8f8f8;border-bottom:1px solid #fff;border-top-right-radius:2px;border-top-left-radius:2px}.am-share-title:after{content:"";display:block;width:100%;height:0;margin-top:10px;border-bottom:1px solid #dfdfdf}.am-share-sns{margin:0 10px;padding-top:15px;background-color:#f8f8f8;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.am-share-sns li{margin-bottom:15px}.am-share-sns a{display:block;color:#555}.am-share-sns span{display:block}.am-share-sns [class*=am-icon]{background-color:#3bb4f2;border-radius:50%;width:36px;height:36px;line-height:36px;color:#fff;margin-bottom:5px;font-size:18px}.am-share-sns .am-icon-weibo{background-color:#ea1328}.am-share-sns .am-icon-qq{background-color:#009cda}.am-share-sns .am-icon-star{background-color:#ffc028}.am-share-sns .am-icon-tencent-weibo{background-color:#23ccfe}.am-share-sns .am-icon-wechat,.am-share-sns .am-icon-weixin{background-color:#44b549}.am-share-sns .am-icon-renren{background-color:#105ba3}.am-share-sns .am-icon-comment{background-color:#5eb95e}.am-share-footer{margin:10px}.am-share-footer .am-btn{color:#555}.am-share-wechat-qr{font-size:14px;color:#777}.am-share-wechat-qr .am-modal-dialog{background-color:#fff;border:1px solid #dedede}.am-share-wechat-qr .am-modal-hd{padding-top:10px;text-align:left;margin-bottom:10px}.am-share-wechat-qr .am-share-wx-qr{margin-bottom:10px}.am-share-wechat-qr .am-share-wechat-tip{text-align:left}.am-share-wechat-qr .am-share-wechat-tip em{color:#dd514c;font-weight:700;font-style:normal;margin-left:3px;margin-right:3px}.am-pureview{position:fixed;left:0;top:0;bottom:0;right:0;z-index:1120;width:100%;height:100%;background:rgba(0,0,0,.95);display:none;overflow:hidden;-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate(0,100%);-ms-transform:translate(0,100%);transform:translate(0,100%)}.am-pureview.am-active{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.am-pureview ul,.am-pureview ol{list-style:none;padding:0;margin:0;width:100%}.am-pureview-slider{overflow:hidden;height:100%}.am-pureview-slider li{position:absolute;width:100%;height:100%;top:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;vertical-align:middle;-webkit-transition:all .3s linear;transition:all .3s linear;z-index:100;visibility:hidden}.am-pureview-slider li.am-pureview-slide-prev{-webkit-transform:translate(-100%,0);-ms-transform:translate(-100%,0);transform:translate(-100%,0);z-index:109}.am-pureview-slider li.am-pureview-slide-next{-webkit-transform:translate(100%,0);-ms-transform:translate(100%,0);transform:translate(100%,0);z-index:109}.am-pureview-slider li.am-active{position:relative;z-index:110;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);visibility:visible}.am-pureview-slider .pinch-zoom-container{width:100%;z-index:1121}.am-pureview-slider .am-pinch-zoom{position:relative;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.am-pureview-slider .am-pinch-zoom:after{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f110";-webkit-animation:icon-spin 2s infinite linear;animation:icon-spin 2s infinite linear;font-size:24px;line-height:24px;color:#eee;position:absolute;top:50%;left:50%;margin-left:-12px;margin-top:-12px;z-index:1}.am-pureview-slider img{position:relative;display:block;max-width:100%;max-height:100%;opacity:0;z-index:200;-webkit-user-drag:none;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}.am-pureview-slider img.am-img-loaded{opacity:1}.am-pureview-direction{position:absolute;top:50%;width:100%;margin-top:-18px!important;z-index:1122}.am-touch .am-pureview-direction,.am-pureview-only .am-pureview-direction{display:none}.am-pureview-direction li{position:absolute;width:36px;height:36px}.am-pureview-direction a{display:block;height:36px;border:none;color:#ccc;opacity:.5;cursor:pointer;text-align:center;z-index:1125}.am-pureview-direction a:before{content:"\f137";line-height:36px;font-size:24px}.am-pureview-direction a:hover{opacity:1}.am-pureview-direction .am-pureview-prev{left:15px}.am-pureview-direction .am-pureview-next{right:15px}.am-pureview-direction .am-pureview-next a:before{content:"\f138"}.am-pureview-bar{position:absolute;bottom:0;height:45px;width:100%;background-color:rgba(0,0,0,.35);color:#eee;line-height:45px;padding:0 10px;font-size:14px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-pureview-bar .am-pureview-title{display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-left:6px;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-pureview-bar .am-pureview-total{font-size:10px;line-height:48px}.am-pureview-actions{position:absolute;z-index:1130;left:0;right:0;top:0;height:45px;background-color:rgba(0,0,0,.35)}.am-pureview-actions a{position:absolute;left:10px;color:#ccc;display:block;width:45px;line-height:45px;text-align:left;font-size:16px}.am-pureview-actions a:hover{color:#fff}.am-pureview-actions [data-am-toggle=share]{left:auto;right:10px}.am-pureview-bar,.am-pureview-actions{opacity:0;-webkit-transition:all .15s;transition:all .15s;z-index:1130}.am-pureview-bar-active .am-pureview-bar,.am-pureview-bar-active .am-pureview-actions{opacity:1}.am-pureview-nav{position:absolute;bottom:15px;left:0;right:0;text-align:center;z-index:1131}.am-pureview-bar-active .am-pureview-nav{display:none}.am-pureview-nav li{display:inline-block;background:#ccc;background:rgba(255,255,255,.5);width:8px;height:8px;margin:0 3px;border-radius:50%;text-indent:-9999px;overflow:hidden;cursor:pointer}.am-pureview-nav .am-active{background:#fff;background:rgba(255,255,255,.9)}[data-am-pureview] img{cursor:pointer}.am-pureview-active{overflow:hidden}.ath-viewport *{-webkit-box-sizing:border-box;box-sizing:border-box}.ath-viewport{position:relative;z-index:2147483641;pointer-events:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}.ath-modal{pointer-events:auto!important;background:rgba(0,0,0,.6)}.ath-mandatory{background:#000}.ath-container{pointer-events:auto!important;position:absolute;z-index:2147483641;padding:.7em .6em;width:18em;background:#eee;-webkit-background-size:100% auto;background-size:100% auto;-webkit-box-shadow:0 .2em 0 #d1d1d1;box-shadow:0 .2em 0 #d1d1d1;font-family:sans-serif;font-size:15px;line-height:1.5em;text-align:center}.ath-ios.ath-phone{bottom:1.8em;left:50%;margin-left:-9em}.ath-ios6.ath-tablet{left:5em;top:1.8em}.ath-ios7.ath-tablet{left:.7em;top:1.8em}.ath-ios8.ath-tablet{right:.4em;top:1.8em}.ath-android{right:1.5em;top:1.8em}.ath-container:before{content:'';position:relative;display:block;float:right;margin:-.7em -.6em 0 .5em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAMAAABmmnOVAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAeHAAAHhwFd+hRDAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAHVQTFRFAAAAOTk5MzMzOzs7Nzc3QUFBQEBAPz8/Pj4+QUFBQEBAPz8/Pj4+QUFBQEBAPz8/QUFBPj4+Pz8/Pz8/Pj4+Pz8/Pz8/Pz8/Pj4+Pz8/Pj4+Pz8/Pz8/Pz8/Pz8/Pz8/Pj4+Pz8/Pz8/Pz8/Pz8/QEBAPz8/n3QmjwAAACZ0Uk5TAAkKDQ4zODk6OzxBQkNERUusrbG0tba7vL3Excbu8fL19fb3+PgucqJgAAACqklEQVR42sXc23LCIBAGYKy2pgft0WpP2vTA+z9i0+goCZAs7O7P3oWZTL5ZYAh7sca0MXmYG3jM7yfu4/TV1jdow01tX6cdg4UrGoN1FNM3a+GK1nBSzPYGrOJgsPZt1hrerYUrjoa9wjHgFI7B2veZWVk3tpCdWm07H30y8+4AIhedPFj7cW7wioABrggawIqIAaroGbYXzlGCUvQNnc0IUgwaQIoRA0QxagAoCAZ1BcmgrCAaVBVkg6IiwaCmSDIoKRINKopkg4IiwyCuyDIIKzINoopsg6CCYRBTsAxCCqZBRLGo2RcrtkLAwFaIGJgKIQNLIWZgKAQN2QpRg1dKoCmEDVkKcUOGQsGQrFAxJCqUDEkKNUOCQtFAVqgaiAplg69YFDAQFADDqAJiGFGADI1iF1XADAOKvqHSLApHFFBDRAE2BBVwQ0BRwOApfn8LGDxFEcOQAmeIK5CGmAJrCCvQBq8A8r9Zrw08qp6irvAGs/zpIr4XBQxf3nQsyhvwipABrQgbsIqYAamIG3CKnqH+LKDoGXbVwD84zDB4E4AZ4IqgAayIGKCKqMGYS5RiwOArlgUMnuJrWcAAUYwaAAqCQV1BMigriAZVBdmgqEgwqCmSDEqKRIOKItmgoMgwiCv6hkvaa6KKTIOoItsgqGAYxBQsg5CCaRBRsA0CCgEDWyFiYCqEDCyFmIGhEDRkK0QNmQphQ5ZC3JChUDAkK1QMiQolQ5JCzZCguNUzkBV3P4oGokLZQFKoGwgKgGFUATGMKECGQQXMYMxVTAE0RBVQQ0QBNgQVcENI8QwoBo8cUiszWYPz4OVi3bQ9cBQoQ0exblsvTDZwg6PYHNo/tE0XmvVwa4BxWBentgtnL+A8HHPxcnYaaBRoQ6twDY3iEW5oFI8Hwx/QxSE448b+MwAAAABJRU5ErkJggg==);background-color:rgba(255,255,255,.8);-webkit-background-size:50% 50%;background-size:50%;background-repeat:no-repeat;background-position:50%;width:2.7em;height:2.7em;text-align:center;overflow:hidden;color:#a33;z-index:2147483642}.ath-container.ath-icon:before{position:absolute;top:0;right:0;margin:0;float:none}.ath-mandatory .ath-container:before{display:none}.ath-container.ath-android:before{float:left;margin:-.7em .5em 0 -.6em}.ath-container.ath-android.ath-icon:before{position:absolute;right:auto;left:0;margin:0;float:none}.ath-action-icon{display:inline-block;vertical-align:middle;background-position:50%;background-repeat:no-repeat;text-indent:-9999em;overflow:hidden}.ath-android .ath-action-icon{width:1.2em;height:1.8em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAADcBAMAAAAig/QJAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAFtDAABbQwH5xg68AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAB5QTFRFAAAA////cXFxaWlp////ZmZmnJycoaGhpqam////1D9b6wAAAAV0Uk5TAAgJERExZxYzAAAAYklEQVRYw+3WoQ2AUBAE0SsBOiBUQEIDCArA4FFoHBaJxNItFYz/x5+xz282VmwJTdM0rRzbsS1e7Pm9zdgUVn491rkFmqZpSezEjqo/Sos1HoAEjdjgFmiapiWxG7tq/igfnYteFlnOWZEAAAAASUVORK5CYII=);-webkit-background-size:auto 100%;background-size:auto 100%}.ath-ios7 .ath-action-icon,.ath-ios8 .ath-action-icon{width:1.6em;height:1.6em;background-image:url(data:image/png;base64,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);margin-top:-.3em;-webkit-background-size:auto 100%;background-size:auto 100%}.ath-ios6 .ath-action-icon{width:1.8em;height:1.8em;background-image:url(data:image/png;base64,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);margin-bottom:.4em;-webkit-background-size:100% auto;background-size:100% auto}.ath-container p{margin:0;padding:0;position:relative;z-index:2147483642;text-shadow:0 .1em 0 #fff;font-size:1.1em}.ath-ios.ath-phone:after{content:'';background:#eee;position:absolute;width:2em;height:2em;bottom:-.9em;left:50%;margin-left:-1em;-webkit-transform:scaleX(0.9) rotate(45deg);-ms-transform:scaleX(0.9) rotate(45deg);transform:scaleX(0.9) rotate(45deg);-webkit-box-shadow:.2em .2em 0 #d1d1d1;box-shadow:.2em .2em 0 #d1d1d1}.ath-ios.ath-tablet:after{content:'';background:#eee;position:absolute;width:2em;height:2em;top:-.9em;left:50%;margin-left:-1em;-webkit-transform:scaleX(0.9) rotate(45deg);-ms-transform:scaleX(0.9) rotate(45deg);transform:scaleX(0.9) rotate(45deg);z-index:2147483641}.ath-android:after{content:'';background:#eee;background:-webkit-linear-gradient(-45deg,rgba(238,238,238,0) 0,rgba(238,238,238,0) 50%,#eee 50%,#eee 100%);position:absolute;width:2em;height:2em;top:-1.5em;right:0}.ath-application-icon{position:relative;padding:0;border:0;margin:0 auto .2em auto;height:4.8em;width:4.8em;z-index:2147483642}.ath-container.ath-ios .ath-application-icon{border-radius:1em;-webkit-box-shadow:0 .2em .4em rgba(0,0,0,.3),inset 0 .07em 0 rgba(255,255,255,.5);box-shadow:0 .2em .4em rgba(0,0,0,.3),inset 0 .07em 0 rgba(255,255,255,.5);margin:0 auto .4em auto}@media only screen and (orientation:landscape){.ath-container.ath-phone{width:24em}.ath-ios.ath-phone{margin-left:-12em}.ath-ios6:after{left:39%}.ath-ios8.ath-phone{left:auto;bottom:auto;right:.4em;top:1.8em}.ath-ios8.ath-phone:after{bottom:auto;top:-.9em;left:68%;z-index:2147483641;-webkit-box-shadow:none;box-shadow:none}}.am-checkbox,.am-radio{margin-bottom:12px;padding-left:25px;position:relative;-webkit-transition:color .25s linear;transition:color .25s linear;font-size:14px;line-height:1.5}label.am-checkbox,label.am-radio{font-weight:400}.am-ucheck-icons{color:#999;display:block;height:20px;top:0;left:0;position:absolute;width:20px;text-align:center;line-height:21px;font-size:18px;cursor:pointer}.am-checkbox .am-icon-checked,.am-radio .am-icon-checked,.am-checkbox .am-icon-unchecked,.am-radio .am-icon-unchecked{position:absolute;left:0;top:0;display:inline-table;margin:0;background-color:transparent;-webkit-transition:color .25s linear;transition:color .25s linear}.am-checkbox .am-icon-checked:before,.am-radio .am-icon-checked:before,.am-checkbox .am-icon-unchecked:before,.am-radio .am-icon-unchecked:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.am-checkbox .am-icon-checked,.am-radio .am-icon-checked{opacity:0}.am-checkbox .am-icon-checked:before{content:"\f046"}.am-checkbox .am-icon-unchecked:before{content:"\f096"}.am-radio .am-icon-checked:before{content:"\f192"}.am-radio .am-icon-unchecked:before{content:"\f10c"}.am-ucheck-checkbox,.am-ucheck-radio{position:absolute;left:0;top:0;margin:0;padding:0;width:20px;height:20px;opacity:0;outline:0!important}.am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#0e90d2}.am-ucheck-checkbox:checked+.am-ucheck-icons,.am-ucheck-radio:checked+.am-ucheck-icons{color:#0e90d2}.am-ucheck-checkbox:checked+.am-ucheck-icons .am-icon-unchecked,.am-ucheck-radio:checked+.am-ucheck-icons .am-icon-unchecked{opacity:0}.am-ucheck-checkbox:checked+.am-ucheck-icons .am-icon-checked,.am-ucheck-radio:checked+.am-ucheck-icons .am-icon-checked{opacity:1}.am-ucheck-checkbox:disabled+.am-ucheck-icons,.am-ucheck-radio:disabled+.am-ucheck-icons{cursor:default;color:#d8d8d8}.am-ucheck-checkbox:disabled:checked+.am-ucheck-icons .am-icon-unchecked,.am-ucheck-radio:disabled:checked+.am-ucheck-icons .am-icon-unchecked{opacity:0}.am-ucheck-checkbox:disabled:checked+.am-ucheck-icons .am-icon-checked,.am-ucheck-radio:disabled:checked+.am-ucheck-icons .am-icon-checked{opacity:1;color:#d8d8d8}.am-checkbox.am-secondary .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-secondary .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-checkbox.am-secondary .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-secondary .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#3bb4f2}.am-checkbox.am-secondary .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-radio.am-secondary .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-checkbox.am-secondary .am-ucheck-radio:checked+.am-ucheck-icons,.am-radio.am-secondary .am-ucheck-radio:checked+.am-ucheck-icons{color:#3bb4f2}.am-checkbox.am-success .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-success .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-checkbox.am-success .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-success .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#5eb95e}.am-checkbox.am-success .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-radio.am-success .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-checkbox.am-success .am-ucheck-radio:checked+.am-ucheck-icons,.am-radio.am-success .am-ucheck-radio:checked+.am-ucheck-icons{color:#5eb95e}.am-checkbox.am-warning .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-warning .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-checkbox.am-warning .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-warning .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#f37b1d}.am-checkbox.am-warning .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-radio.am-warning .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-checkbox.am-warning .am-ucheck-radio:checked+.am-ucheck-icons,.am-radio.am-warning .am-ucheck-radio:checked+.am-ucheck-icons{color:#f37b1d}.am-checkbox.am-danger .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-danger .am-ucheck-checkbox:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-checkbox.am-danger .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons,.am-radio.am-danger .am-ucheck-radio:hover:not(.am-nohover):not(:disabled)+.am-ucheck-icons{color:#dd514c}.am-checkbox.am-danger .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-radio.am-danger .am-ucheck-checkbox:checked+.am-ucheck-icons,.am-checkbox.am-danger .am-ucheck-radio:checked+.am-ucheck-icons,.am-radio.am-danger .am-ucheck-radio:checked+.am-ucheck-icons{color:#dd514c}.am-field-error+.am-ucheck-icons{color:#dd514c}.am-field-valid+.am-ucheck-icons{color:#5eb95e}.am-input-group-label .am-radio,.am-input-group-label .am-checkbox{margin:-2px 0;padding-left:15px}.am-form-inline .am-checkbox,.am-form-inline .am-radio{padding-left:24px}.am-selected-btn{text-align:right;width:200px}.am-selected-btn.am-btn-default{background:0 0}.am-selected-header{height:45px;background-color:#f2f2f2;border-bottom:1px solid #ddd;display:none}.am-selected-status{text-align:left;width:100%;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-selected-content{padding:10px 0}.am-selected-search{padding:0 10px 10px}.am-selected-search .am-form-field{padding:.5em}.am-selected-list{margin:0;padding:0;list-style:none;font-size:1.5rem}.am-selected-list li{position:relative;cursor:pointer;padding:5px 10px;-webkit-transition:background-color .15s;transition:background-color .15s}.am-selected-list li:hover{background-color:#f8f8f8}.am-selected-list li:hover .am-icon-check{opacity:.6}.am-selected-list li.am-checked .am-icon-check{opacity:1;color:#0e90d2}.am-selected-list .am-selected-list-header{margin-top:8px;font-size:1.3rem;color:#999;border-bottom:1px solid #e5e5e5;cursor:default}.am-selected-list .am-selected-list-header:hover{background:0 0}.am-selected-list .am-selected-list-header:first-child{margin-top:0}.am-selected-list .am-selected-text{display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-right:30px}.am-selected-list .am-icon-check{position:absolute;right:8px;top:5px;color:#999;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s}.am-selected-hint{line-height:1.2;color:#dd514c}.am-selected-hint:not(:empty){margin-top:10px;border-top:1px solid #e5e5e5;padding:10px 10px 0}.am-fade{opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.am-fade.am-in{opacity:1}.am-collapse{display:none}.am-collapse.am-in{display:block}tr.am-collapse.am-in{display:table-row}tbody.am-collapse.am-in{display:table-row-group}.am-collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .3s ease;transition:height .3s ease}.am-sticky{position:fixed!important;z-index:1010;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}[data-am-sticky][class*=am-animation-]{-webkit-animation-duration:.2s;animation-duration:.2s}.am-dimmer-active{overflow:hidden}.am-dimmer{position:fixed;top:0;right:0;bottom:0;left:0;display:none;width:100%;height:100%;background-color:rgba(0,0,0,.6);z-index:1100;opacity:0}.am-dimmer.am-active{opacity:1}[data-am-collapse]{cursor:pointer}.am-datepicker{top:0;left:0;border-radius:0;background:#fff;-webkit-box-shadow:0 0 10px #ccc;box-shadow:0 0 10px #ccc;padding-bottom:10px;margin-top:10px;width:238px;color:#555;display:none}.am-datepicker>div{display:none}.am-datepicker table{width:100%}.am-datepicker tr.am-datepicker-header{font-size:1.6rem;color:#fff;background:#3bb4f2}.am-datepicker td,.am-datepicker th{text-align:center;font-weight:400;cursor:pointer}.am-datepicker th{height:48px}.am-datepicker td{font-size:1.4rem}.am-datepicker td.am-datepicker-day{height:34px;width:34px}.am-datepicker td.am-datepicker-day:hover{background:#f0f0f0;height:34px;width:34px}.am-datepicker td.am-datepicker-day.am-disabled{cursor:no-drop;color:#999;background:#fafafa}.am-datepicker td.am-datepicker-old,.am-datepicker td.am-datepicker-new{color:#89d7ff}.am-datepicker td.am-active,.am-datepicker td.am-active:hover{border-radius:0;color:#0084c7;background:#f0f0f0}.am-datepicker td span{display:block;width:79.33px;height:40px;line-height:40px;float:left;cursor:pointer}.am-datepicker td span:hover{background:#f0f0f0}.am-datepicker td span.am-active{color:#0084c7;background:#f0f0f0}.am-datepicker td span.am-datepicker-old{color:#89d7ff}.am-datepicker .am-datepicker-dow{height:40px;color:#0c80ba}.am-datepicker-caret{display:block!important;display:inline-block;width:0;height:0;vertical-align:middle;border-bottom:7px solid #3bb4f2;border-right:7px solid transparent;border-left:7px solid transparent;border-top:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);position:absolute;top:-7px;left:6px}.am-datepicker-right .am-datepicker-caret{left:auto;right:7px}.am-datepicker-up .am-datepicker-caret{top:auto;bottom:-7px;display:inline-block;width:0;height:0;vertical-align:middle;border-top:7px solid #fff;border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.am-datepicker-select{height:34px;line-height:34px;text-align:center;-webkit-transition:background-color 300ms ease-out;transition:background-color 300ms ease-out}.am-datepicker-select:hover{background:rgba(154,217,248,.5);color:#0c80ba}.am-datepicker-prev,.am-datepicker-next{width:34px;height:34px}.am-datepicker-prev-icon,.am-datepicker-next-icon{width:34px;height:34px;line-height:34px;display:inline-block;-webkit-transition:background-color 300ms ease-out;transition:background-color 300ms ease-out}.am-datepicker-prev-icon:hover,.am-datepicker-next-icon:hover{background:rgba(154,217,248,.5);color:#0c80ba}.am-datepicker-prev-icon:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053"}.am-datepicker-next-icon:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f054"}.am-datepicker-dropdown{position:absolute;z-index:1000}@media only screen and (max-width:640px){.am-datepicker{width:100%}.am-datepicker td span{width:33.33%}.am-datepicker-caret{display:none!important}.am-datepicker-prev,.am-datepicker-next{width:44px;height:44px}}.am-datepicker-success tr.am-datepicker-header{background:#5eb95e}.am-datepicker-success td.am-datepicker-day.am-disabled{color:#999}.am-datepicker-success td.am-datepicker-old,.am-datepicker-success td.am-datepicker-new{color:#94df94}.am-datepicker-success td.am-active,.am-datepicker-success td.am-active:hover{color:#1b961b}.am-datepicker-success td span.am-datepicker-old{color:#94df94}.am-datepicker-success td span.am-active{color:#1b961b}.am-datepicker-success .am-datepicker-caret{border-bottom-color:#5eb95e}.am-datepicker-success .am-datepicker-dow{color:#367b36}.am-datepicker-success .am-datepicker-select:hover,.am-datepicker-success .am-datepicker-prev-icon:hover,.am-datepicker-success .am-datepicker-next-icon:hover{background:rgba(165,216,165,.5);color:#367b36}.am-datepicker-danger tr.am-datepicker-header{background:#dd514c}.am-datepicker-danger td.am-datepicker-day.am-disabled{color:#999}.am-datepicker-danger td.am-datepicker-old,.am-datepicker-danger td.am-datepicker-new{color:#f59490}.am-datepicker-danger td.am-active,.am-datepicker-danger td.am-active:hover{color:#c10802}.am-datepicker-danger td span.am-datepicker-old{color:#f59490}.am-datepicker-danger td span.am-active{color:#c10802}.am-datepicker-danger .am-datepicker-caret{border-bottom-color:#dd514c}.am-datepicker-danger .am-datepicker-dow{color:#a4241f}.am-datepicker-danger .am-datepicker-select:hover,.am-datepicker-danger .am-datepicker-prev-icon:hover,.am-datepicker-danger .am-datepicker-next-icon:hover{background:rgba(237,164,162,.5);color:#a4241f}.am-datepicker-warning tr.am-datepicker-header{background:#f37b1d}.am-datepicker-warning td.am-datepicker-day.am-disabled{color:#999}.am-datepicker-warning td.am-datepicker-old,.am-datepicker-warning td.am-datepicker-new{color:#ffad6d}.am-datepicker-warning td.am-active,.am-datepicker-warning td.am-active:hover{color:#aa4b00}.am-datepicker-warning td span.am-datepicker-old{color:#ffad6d}.am-datepicker-warning td span.am-active{color:#aa4b00}.am-datepicker-warning .am-datepicker-caret{border-bottom-color:#f37b1d}.am-datepicker-warning .am-datepicker-dow{color:#a14c09}.am-datepicker-warning .am-datepicker-select:hover,.am-datepicker-warning .am-datepicker-prev-icon:hover,.am-datepicker-warning .am-datepicker-next-icon:hover{background:rgba(248,180,126,.5);color:#a14c09}@media print{*,:before,:after{background:transparent!important;color:#000!important;-webkit-box-shadow:none!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) "] "}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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{margin:.5cm}select{background:#fff!important}.am-topbar{display:none}.am-table td,.am-table th{background-color:#fff!important}.am-table{border-collapse:collapse!important}.am-table-bordered th,.am-table-bordered td{border:1px solid #ddd!important}}.am-print-block{display:none!important}@media print{.am-print-block{display:block!important}}.am-print-inline{display:none!important}@media print{.am-print-inline{display:inline!important}}.am-print-inline-block{display:none!important}@media print{.am-print-inline-block{display:inline-block!important}}@media print{.am-print-hide{display:none!important}}.lte9 #nprogress .nprogress-spinner{display:none!important}.lte8 .am-dimmer{background-color:#000;filter:alpha(opacity=60)}.lte8 .am-modal-actions{display:none}.lte8 .am-modal-actions.am-modal-active{display:block}.lte8 .am-offcanvas.am-active{background:#000}.lte8 .am-popover .am-popover-caret{border:8px solid transparent}.lte8 .am-popover-top .am-popover-caret{border-top:8px solid #333;border-bottom:none}.lte8 .am-popover-left .am-popover-caret{right:-8px;margin-top:-6px;border-left:8px solid #333;border-right:none}.lte8 .am-popover-right .am-popover-caret{left:-8px;margin-top:-6px;border-right:8px solid #333;border-left:none}.am-accordion-item{margin:0}.am-accordion-title{font-weight:400;cursor:pointer}.am-accordion-bd{margin:0!important;padding:0!important;border:none!important}.am-accordion-content{margin-top:0;padding:.8rem 1rem 1.2rem;font-size:1.4rem}.am-accordion-default{margin:1rem;border-radius:2px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1)}.am-accordion-default .am-accordion-item{border-top:1px solid rgba(0,0,0,.05)}.am-accordion-default .am-accordion-item:first-child{border-top:none}.am-accordion-default .am-accordion-title{color:rgba(0,0,0,.6);-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out;padding:.8rem 1rem}.am-accordion-default .am-accordion-title:before{content:"\f0da";display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:-webkit-transform .2s ease;transition:transform .2s ease;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);margin-right:5px}.am-accordion-default .am-accordion-title:hover{color:#0e90d2}.am-accordion-default .am-accordion-content{color:#666}.am-accordion-default .am-active .am-accordion-title{background-color:#eee;color:#0e90d2}.am-accordion-default .am-active .am-accordion-title:before{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-accordion-basic{margin:1rem}.am-accordion-basic .am-accordion-title{color:#333;-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out;padding:.8rem 0 0}.am-accordion-basic .am-accordion-title:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f0da";-webkit-transition:-webkit-transform .2s ease;transition:transform .2s ease;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);margin-right:.5rem}.am-accordion-basic .am-accordion-content{color:#666}.am-accordion-basic .am-active .am-accordion-title{color:#0e90d2}.am-accordion-basic .am-active .am-accordion-title:before{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-accordion-gapped{margin:.5rem 1rem}.am-accordion-gapped .am-accordion-item{border:1px solid #dedede;border-bottom:none;margin:.5rem 0}.am-accordion-gapped .am-accordion-item.am-active{border-bottom:1px solid #dedede}.am-accordion-gapped .am-accordion-title{color:rgba(0,0,0,.6);-webkit-transition:background-color .15s ease-out;transition:background-color .15s ease-out;border-bottom:1px solid #dedede;padding:.8rem 2rem .8rem 1rem;position:relative}.am-accordion-gapped .am-accordion-title:after{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f105";-webkit-transition:-webkit-transform .2s linear;transition:transform .2s linear;position:absolute;right:10px;top:50%;margin-top:-.8rem}.am-accordion-gapped .am-accordion-title:hover{color:rgba(0,0,0,.8)}.am-accordion-gapped .am-accordion-content{color:#666}.am-accordion-gapped .am-active .am-accordion-title{background-color:#f5f5f5;color:rgba(0,0,0,.8)}.am-accordion-gapped .am-active .am-accordion-title:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-accordion-one{margin:0 10px 0 10px}.am-accordion-one .am-accordion-item{border:1px solid #dfdfdf;margin:.5rem 0;background:#fff}.am-accordion-one .am-accordion-title{color:#555;-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out;padding:.8rem 2rem .8rem 1rem;position:relative}.am-accordion-one .am-accordion-title:after{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f105";-webkit-transition:-webkit-transform .2s linear;transition:transform .2s linear;position:absolute;right:10px;top:50%;margin-top:-.8rem}.am-accordion-one .am-accordion-title:hover{color:#15afef}.am-accordion-one .am-accordion-content{color:#666}.am-accordion-one .am-active .am-accordion-title{background-color:#f8f8f8;color:#15afef}.am-accordion-one .am-active .am-accordion-title:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-divider-default{height:1px;border:none;margin:1.5rem auto;overflow:hidden;background-color:#ddd;clear:both}.am-divider-one{height:10px;border:none;overflow:hidden;clear:both;margin:0}.am-figure-zoomable{position:relative;cursor:pointer}.am-figure-zoomable:after{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f00e";position:absolute;top:1rem;right:1rem;color:#999;font-size:1.6rem;-webkit-transition:all .2s;transition:all .2s}.am-figure-zoomable:hover:after{color:#eee}.am-figure-default{margin:10px}.am-figure-default img{display:block;max-width:100%;height:auto;padding:2px;border:1px solid #eee;margin:10px auto}.am-figure-default figcaption{text-align:center;font-size:1.4rem;margin-bottom:15px;color:#333}.am-figure-one{margin:0 10px;background:#fff}.am-figure-one img{display:block;max-width:100%;height:auto;padding:2px;border:1px solid #dfdfdf}.am-figure-one figcaption{text-align:center;font-size:1.4rem;padding:10px 0;color:#888}.am-footer{text-align:center;padding:1em 0;font-size:1.6rem}.am-footer .am-switch-mode-ysp{cursor:pointer}.am-footer .am-footer-text{margin-top:10px;font-size:14px}.am-footer .am-footer-text-left{text-align:left;padding-left:10px}.am-modal-footer-hd{padding-bottom:10px}.am-footer-default{background-color:#fff}.am-footer-default a{color:#555}.am-footer-default .am-footer-switch{margin-bottom:10px;font-weight:700}.am-footer-default .am-footer-ysp{color:#555;cursor:pointer}.am-footer-default .am-footer-divider{color:#ccc}.am-footer-default .am-footer-desktop{color:#0e90d2}.am-footer-default .am-footer-miscs{color:#999;font-size:13px}.am-footer-default .am-footer-miscs p{margin:5px 0}@media only screen and (min-width:641px){.am-footer-default .am-footer-miscs p{display:inline-block;margin:5px}}.am-footer-one a{color:#15afef;font-weight:700}.am-footer-one .am-footer-switch{margin-bottom:10px}.am-footer-one .am-footer-ysp{color:#15afef;cursor:pointer}.am-footer-one .am-footer-divider{color:#999}.am-footer-one .am-footer-desktop{font-weight:400;color:#555}.am-footer-one .am-footer-miscs{color:#7c7c7c;overflow:hidden;padding:0 10px;font-size:14px}.am-footer-one .am-footer-miscs ul,.am-footer-one .am-footer-miscs li{padding-left:0;list-style:none}.am-footer-one .am-footer-miscs p{margin:4px 0}.am-footer-one .am-footer-miscs a{font-weight:400;color:#555;margin:0 1px}.am-footer-one .am-footer-miscs img{display:block;max-width:100%;margin:0 auto 2px auto}@media only screen and (min-width:641px){.am-footer-one .am-footer-miscs p{display:inline-block;margin:5px}}.am-gallery{padding:5px 5px 0 5px;list-style:none}.am-gallery h3{margin:0}[data-am-gallery*=pureview] img{cursor:pointer}.am-gallery-default>li{padding:5px}.am-gallery-default .am-gallery-item img{width:100%;height:auto}.am-gallery-default .am-gallery-title{margin-top:10px;font-weight:400;font-size:1.4rem;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#555}.am-gallery-default .am-gallery-desc{color:#999;font-size:1.2rem}.am-gallery-overlay>li{padding:5px}.am-gallery-overlay .am-gallery-item{position:relative}.am-gallery-overlay .am-gallery-item img{width:100%;height:auto}.am-gallery-overlay .am-gallery-title{font-weight:400;font-size:1.4rem;color:#fff;position:absolute;bottom:0;width:100%;background-color:rgba(0,0,0,.5);text-indent:5px;height:30px;line-height:30px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-gallery-overlay .am-gallery-desc{display:none}.am-gallery-bordered>li{padding:5px}.am-gallery-bordered .am-gallery-item{-webkit-box-shadow:0 0 3px rgba(0,0,0,.35);box-shadow:0 0 3px rgba(0,0,0,.35);padding:5px}.am-gallery-bordered .am-gallery-item img{width:100%;height:auto}.am-gallery-bordered .am-gallery-title{margin-top:10px;font-weight:400;font-size:1.4rem;color:#555;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-gallery-bordered .am-gallery-desc{color:#999;font-size:1.2rem}.am-gallery-imgbordered>li{padding:5px}.am-gallery-imgbordered .am-gallery-item img{width:100%;height:auto;border:3px solid #FFF;-webkit-box-shadow:0 0 3px rgba(0,0,0,.35);box-shadow:0 0 3px rgba(0,0,0,.35)}.am-gallery-imgbordered .am-gallery-title{margin-top:10px;font-weight:400;font-size:1.4rem;color:#555;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-gallery-imgbordered .am-gallery-desc{color:#999;font-size:1.2rem}.am-gallery-one{padding:0 5px;background-color:#fff}.am-gallery-one>li{padding:5px}.am-gallery-one .am-gallery-item{padding:5px}.am-gallery-one .am-gallery-item img{width:100%;height:auto}.am-gallery-one .am-gallery-title{line-height:34px;font-weight:400;font-size:1.4rem;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#555}.am-gallery-one .am-gallery-desc{color:#999;font-size:1.2rem}.am-gallery-one .am-gallery-more{width:100%}.am-gallery-one .am-gallery-more a{background-color:#dfdfdf;color:#555;height:35px;line-height:35px;font-size:1.4rem;display:block;text-align:center}.am-gotop a{display:inline-block;text-decoration:none}.am-gotop-default{text-align:center;margin:10px 0}.am-gotop-default a{background-color:#0e90d2;padding:.5em 1.5em;border-radius:0;color:#fff}.am-gotop-default a img{display:none}.am-gotop-fixed{position:fixed;right:10px;bottom:10px;z-index:1010;opacity:0;width:32px;min-height:32px;overflow:hidden;border-radius:0;text-align:center}.am-gotop-fixed.am-active{opacity:.9}.am-gotop-fixed.am-active:hover{opacity:1}.am-gotop-fixed a{display:block}.am-gotop-fixed .am-gotop-title{display:none}.am-gotop-fixed .am-gotop-icon-custom{display:inline-block;max-width:30px;vertical-align:middle}.am-gotop-fixed .am-gotop-icon{width:100%;line-height:32px;background-color:#555;vertical-align:middle;color:#ddd}.am-gotop-fixed .am-gotop-icon:hover{color:#fff}.am-with-fixed-navbar .am-gotop-fixed{bottom:60px}.am-gotop-one{position:fixed;right:10px;bottom:10px;z-index:1005;width:32px;height:32px;background-color:#fff;border-radius:0;border:1px solid #15afef;text-align:center}.am-gotop-one .am-gotop-title{display:none}.am-gotop-one .am-gotop-icon{vertical-align:middle;display:inline-block;color:#15afef}.am-with-fixed-navbar .am-gotop-one{bottom:60px}.am-header{position:relative;width:100%;height:49px;line-height:49px;padding:0 10px}.am-header h1{margin-top:0;margin-bottom:0}.am-header .am-header-title{margin:0 30%;font-size:2rem;font-weight:400;text-align:center;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-header .am-header-title img{margin-top:12px;height:25px;vertical-align:top}.am-header .am-header-nav{position:absolute;top:0}.am-header .am-header-nav img{height:16px;width:auto;vertical-align:middle}.am-header .am-header-left{left:10px}.am-header .am-header-right{right:10px}.am-header-fixed{position:fixed;top:0;left:0;right:0;width:100%;z-index:1010}.am-with-fixed-header{padding-top:49px}.am-header-default{background-color:#0e90d2}.am-header-default .am-header-title{color:#fff}.am-header-default .am-header-title a{color:#fff}.am-header-default .am-header-icon{font-size:20px}.am-header-default .am-header-nav{color:#eee}.am-header-default .am-header-nav>a{display:inline-block;min-width:36px;text-align:center;color:#eee}.am-header-default .am-header-nav>a+a{margin-left:5px}.am-header-default .am-header-nav .am-btn{margin-top:9px;height:31px;padding:0 .5em;line-height:30px;font-size:14px;vertical-align:top}.am-header-default .am-header-nav .am-btn .am-header-icon{font-size:inherit}.am-header-default .am-header-nav .am-btn-default{color:#999}.am-header-default .am-header-nav-title,.am-header-default .am-header-nav-title+.am-header-icon{font-size:14px}.am-header-one{background:#fff}.am-header-one .am-header-title{margin:0 15%;color:#333;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-header-one .am-header-title a{color:#333}.am-header-one .am-header-title img{height:34px;width:auto;margin-top:8px;vertical-align:top}.am-header-one .am-header-nav>a{color:#15afef}.am-intro{position:relative}.am-intro-hd{position:relative;height:45px;line-height:45px}.am-intro-title{font-size:18px;margin:0;font-weight:700}.am-intro-more-top{position:absolute;right:10px;top:0;font-size:1.4rem}.am-intro-bd{padding-top:15px;padding-bottom:15px;font-size:1.4rem}.am-intro-bd p:last-child{margin-bottom:0}.am-intro-more-bottom{clear:both;text-align:center}.am-intro-more-bottom .am-btn{font-size:14px}.am-intro-default .am-intro-hd{background-color:#0e90d2;color:#fff;padding:0 10px}.am-intro-default .am-intro-hd a{color:#eee}.am-intro-default .am-intro-right{padding-left:0}.am-intro-one{padding-bottom:10px;background-color:#fff}.am-intro-one a{color:#15afef}.am-intro-one .am-intro-hd{border-bottom:1px solid #15afef;margin-left:10px;margin-right:10px;line-height:44px}.am-intro-one .am-intro-title{color:#333;padding-left:10px}.am-intro-one .am-intro-title:before{position:absolute;left:1px;top:10px;bottom:10px;content:'';width:3px;background-color:#15afef;display:block}.am-intro-one .am-intro-bd{color:#555}.am-intro-one .am-intro-left{float:left;display:inline}.am-intro-one .am-intro-right{display:inline;padding-left:0;font-size:1.4rem}.am-intro-one .am-intro-right p{display:inline;margin:0;padding:0}.am-list-news-hd{padding-top:1.2rem;padding-bottom:.8rem}.am-list-news-hd a{display:block}.am-list-news-hd h2{font-size:1.6rem;float:left;margin:0;height:2rem;line-height:2rem}.am-list-news-hd h3{margin:0}.am-list-news-hd .am-list-news-more{font-size:1.3rem;height:2rem;line-height:2rem}.am-list .am-list-item-dated a{padding-right:80px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-list .am-list-item-dated a::after{display:none}.am-list .am-list-item-desced a,.am-list .am-list-item-thumbed a{padding-right:0}.am-list-news .am-list-item-hd{margin:0}.am-list-date{position:absolute;right:5px;font-size:1.3rem;top:1.3rem}.am-list-item-desced{padding-bottom:1rem}.am-list-item-desced>a{padding:1rem 0}.am-list-item-desced .am-list-date{position:static}.am-list-item-thumbed{padding-top:1em}.am-list-news-ft{text-align:center}.am-list-news-default{margin:10px}.am-list-news-default .am-g{margin-left:auto;margin-right:auto}.am-list-news-default .am-list-item-hd{font-weight:400}.am-list-news-default .am-list-date{color:#999}.am-list-news-default .am-list>li{border-color:#dedede}.am-list-news-default .am-list .am-list-item-desced{padding-top:1rem;padding-bottom:1rem}.am-list-news-default .am-list .am-list-item-desced>a{padding:0}.am-list-news-default .am-list .am-list-item-desced .am-list-item-text{margin-top:.5rem;color:#757575}.am-list-news-default .am-list .am-list-item-text{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;line-height:1.3em;-webkit-line-clamp:2;max-height:2.6em}.am-list-news-default .am-list .am-list-item-thumb-top .am-list-thumb{padding:0;margin-bottom:.8rem}.am-list-news-default .am-list .am-list-item-thumb-top .am-list-main{padding:0}.am-list-news-default .am-list .am-list-item-thumb-left .am-list-thumb{padding-left:0}.am-list-news-default .am-list .am-list-item-desced .am-list-main{padding:0}.am-list-news-default .am-list .am-list-item-thumb-right .am-list-thumb{padding-right:0}.am-list-news-default .am-list .am-list-item-thumb-bottom-left .am-list-item-hd{clear:both;padding-bottom:.5rem}.am-list-news-default .am-list .am-list-item-thumb-bottom-left .am-list-thumb{padding-left:0}.am-list-news-default .am-list .am-list-item-thumb-bottom-right .am-list-item-hd{clear:both;padding-bottom:.5rem}.am-list-news-default .am-list .am-list-item-thumb-bottom-right .am-list-thumb{padding-right:0}.am-list-news-default .am-list .am-list-thumb img{width:100%;display:block}@media only screen and (max-width:640px){.am-list-news-default .am-list-item-thumb-left .am-list-thumb,.am-list-news-default .am-list-item-thumb-right .am-list-thumb{max-height:80px;overflow:hidden}.am-list-news-default .am-list-item-thumb-bottom-left .am-list-item-text,.am-list-news-default .am-list-item-thumb-bottom-right .am-list-item-text{-webkit-line-clamp:3;max-height:3.9em}.am-list-news-default .am-list-item-thumb-bottom-left .am-list-thumb,.am-list-news-default .am-list-item-thumb-bottom-right .am-list-thumb{max-height:60px;overflow:hidden}}.am-list-news-one{margin:0 10px}.am-list-news-one .am-list-news-hd{background:#fff;height:40px;line-height:40px;border-bottom:1px solid #15afef;padding:0 0 0 10px;margin:0;position:relative;color:#000}.am-list-news-one .am-list-news-hd::before{width:4px;height:30px;background:#15afef;display:inline-block;content:'';position:absolute;top:5px;left:0}.am-list-news-one .am-list-news-hd>a{color:#000;display:inline}.am-list-news-one .am-list-news-hd>a .am-list-news-more{color:#888;padding:0;margin-right:5px;background:0 0;font-size:1.4rem;height:40px;line-height:40px}.am-list-news-one .am-list-news-hd h2{font-weight:400;float:left;line-height:40px;height:40px}.am-list-news-one .am-list-news-bd{padding:0 5px 4px 5px;background:#fff}.am-list-news-one .am-list{margin-bottom:0}.am-list-news-one .am-list>li{margin:0;border:0;overflow:hidden}.am-list-news-one .am-list>li>a{color:#222;font-weight:400;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:30px;line-height:30px;padding:0;position:relative;text-indent:10px}.am-list-news-one .am-list>li>a:before{width:4px;height:4px;background:#15afef;display:inline-block;content:'';position:absolute;top:14px;left:0}.am-list-news-one .am-list>li .am-list-date{color:#666;top:5px;right:0;display:none}.am-list-news-one .am-list>li:last-child{border-bottom:0}.am-list-news-one .am-list .am-list-item-dated>a{color:#222}.am-list-news-one .am-list .am-list-item-desced{padding:3px 0;border-bottom:1px dashed #dfdfdf}.am-list-news-one .am-list .am-list-item-desced:before{display:none}.am-list-news-one .am-list .am-list-item-desced .am-list-item-hd{font-weight:400;font-size:1.5rem;margin-bottom:0}.am-list-news-one .am-list .am-list-item-desced .am-list-item-hd>a:before{display:none}.am-list-news-one .am-list .am-list-item-desced a.am-list-item-hd{height:34px;line-height:34px;padding:0;color:#15afef;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-indent:0}.am-list-news-one .am-list .am-list-item-desced a.am-list-item-hd:before{display:none}.am-list-news-one .am-list .am-list-item-desced .am-list-item-text{color:#666;line-height:22px;font-size:1.4rem;max-height:none;margin-bottom:8px}.am-list-news-one .am-list .am-list-item-desced .am-list-item-text a{color:#666}.am-list-news-one .am-list .am-list-item-desced .am-list-main{padding:0 5px;position:relative}.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-date{position:absolute;right:5px;top:3.5rem;font-size:1.2rem;color:#888}.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-item-text{max-height:3rem;overflow:hidden;font-size:1.2rem;line-height:18px;color:#666}.am-list-news-one .am-list .am-list-item-desced .am-list-main .am-list-item-text a{color:#666}.am-list-news-one .am-list .am-list-item-thumbed{border-bottom:1px dashed #dfdfdf;padding:0 0 5px 0}.am-list-news-one .am-list .am-list-item-thumbed:before{content:none}.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-hd{font-weight:400;height:30px;line-height:30px;margin-bottom:0}.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-hd a{font-size:1.5rem;color:#15afef;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0;text-indent:0}.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb{padding:0;height:60px}.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb a{width:100%;display:block;padding:0;text-indent:0;height:60px}.am-list-news-one .am-list .am-list-item-thumbed .am-list-thumb a img{width:100%;height:60px;vertical-align:top}.am-list-news-one .am-list .am-list-item-thumbed .am-list-main{padding:0 5px 14px 5px;position:relative}.am-list-news-one .am-list .am-list-item-thumbed .am-list-date{position:absolute;right:5px;top:3.5rem;font-size:1.2rem;color:#888}.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-text{max-height:3rem;overflow:hidden;font-size:1.2rem;line-height:18px;color:#666}.am-list-news-one .am-list .am-list-item-thumbed .am-list-item-text a{color:#666}.am-list-news-one .am-list-news-more{background:#dfdfdf;color:#666;height:35px;line-height:35px;font-size:1.4rem;display:block;border:0;border-radius:0;padding:0}@media only screen and (max-width:640px){.am-list-news-one .am-list-item-thumb-left .am-list-thumb,.am-list-news-one .am-list-item-thumb-right .am-list-thumb{max-height:80px;overflow:hidden}.am-list-news-one .am-list-item-thumb-bottom-left .am-list-item-text,.am-list-news-one .am-list-item-thumb-bottom-right .am-list-item-text{-webkit-line-clamp:3;max-height:3.9em}.am-list-news-one .am-list-item-thumb-bottom-left .am-list-thumb,.am-list-news-one .am-list-item-thumb-bottom-right .am-list-thumb{max-height:60px;overflow:hidden}}.am-map{width:100%;height:300px}.am-map-default #bd-map{width:100%;height:100%;overflow:hidden;margin:0;font-size:14px;line-height:1.4!important}.am-map-default .BMap_bubble_title{font-weight:700}.am-map-default #BMap_mask{width:100%}.am-mechat{margin:1rem}.am-mechat .section-cbox-wap .cbox-post-wap .post-action-wap .action-function-wap .function-list-wap .list-upload-wap .upload-mutual-wap{-webkit-box-sizing:content-box;box-sizing:content-box}.am-menu{position:relative;padding:0;margin:0}.am-menu ul{padding:0;margin:0}.am-menu li{list-style:none}.am-menu a:after,.am-menu a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.am-menu-sub{z-index:1050}.am-menu-toggle{display:none}.am-menu-toggle img{display:inline-block;height:16px;width:auto;vertical-align:middle}.am-menu-nav a{display:block;padding:.8rem 0;-webkit-transition:all .45s;transition:all .45s}.am-menu-default .am-menu-nav{padding-top:8px;padding-bottom:8px}.am-menu-default .am-menu-nav a{text-align:center;height:36px;line-height:36px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0;color:#0e90d2}.am-menu-default .am-menu-nav>.am-parent>a{position:relative;-webkit-transition:.15s;transition:.15s}.am-menu-default .am-menu-nav>.am-parent>a:after{content:"\f107";margin-left:5px;-webkit-transition:.15s;transition:.15s}.am-menu-default .am-menu-nav>.am-parent>a:before{position:absolute;top:100%;margin-top:-16px;left:50%;margin-left:-12px;content:"\f0d8";display:none;color:#f1f1f1;font-size:24px}.am-menu-default .am-menu-nav>.am-parent.am-open>a{color:#095f8a}.am-menu-default .am-menu-nav>.am-parent.am-open>a:before{display:block}.am-menu-default .am-menu-nav>.am-parent.am-open>a:after{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.am-menu-default .am-menu-sub{position:absolute;left:5px;right:5px;background-color:#f1f1f1;border-radius:0;padding-top:8px;padding-bottom:8px}.am-menu-default .am-menu-sub>li>a{color:#555}@media only screen and (min-width:641px){.am-menu-default .am-menu-nav li{width:auto;float:left;clear:none;display:inline}.am-menu-default .am-menu-nav a{padding-left:1.5rem;padding-right:.5rem}}.am-menu-dropdown1{position:relative}.am-menu-dropdown1 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-dropdown1 a{-webkit-transition:all .4s;transition:all .4s;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-menu-dropdown1 .am-menu-nav{position:absolute;left:0;right:0;z-index:1050}.am-menu-dropdown1 .am-menu-nav a{padding:.8rem}.am-menu-dropdown1 .am-menu-nav>li{width:100%}.am-menu-dropdown1 .am-menu-nav>li.am-parent>a{position:relative}.am-menu-dropdown1 .am-menu-nav>li.am-parent>a::before{content:"\f067";position:absolute;right:1rem;top:1.4rem}.am-menu-dropdown1 .am-menu-nav>li.am-parent.am-open>a{background-color:#0c80ba;border-bottom:none;color:#fff}.am-menu-dropdown1 .am-menu-nav>li.am-parent.am-open>a:before{content:"\f068"}.am-menu-dropdown1 .am-menu-nav>li.am-parent.am-open>a:after{content:"";display:inline-block;width:0;height:0;vertical-align:middle;border-top:8px solid #0c80ba;border-right:8px solid transparent;border-left:8px solid transparent;border-bottom:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);position:absolute;top:100%;left:50%;margin-left:-4px}.am-menu-dropdown1 .am-menu-nav>li>a{border-bottom:1px solid #0b76ac;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);background-color:#0e90d2;color:#fff;height:49px;line-height:49px;padding:0;text-indent:10px}.am-menu-dropdown1 .am-menu-sub{background-color:#fff}.am-menu-dropdown1 .am-menu-sub a{color:#555;height:44px;line-height:44px;text-indent:5px;padding:0}.am-menu-dropdown1 .am-menu-sub a:before{content:"\f105";color:#aaa;font-size:16px;margin-right:5px}.am-menu-dropdown2 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-dropdown2 .am-menu-nav{position:absolute;left:0;right:0;background-color:#f5f5f5;-webkit-box-shadow:0 0 5px rgba(0,0,0,.2);box-shadow:0 0 5px rgba(0,0,0,.2);z-index:1050;padding-top:8px;padding-bottom:8px}.am-menu-dropdown2 .am-menu-nav a{height:38px;line-height:38px;padding:0;text-align:center}.am-menu-dropdown2 .am-menu-nav>li>a{color:#333}.am-menu-dropdown2 .am-menu-nav>li.am-parent>a{position:relative}.am-menu-dropdown2 .am-menu-nav>li.am-parent>a:after{content:"\f107";margin-left:5px;-webkit-transition:-webkit-transform .2s;transition:transform .2s}.am-menu-dropdown2 .am-menu-nav>li.am-parent.am-open>a{position:relative}.am-menu-dropdown2 .am-menu-nav>li.am-parent.am-open>a:after{color:#0e90d2;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.am-menu-dropdown2 .am-menu-nav>li.am-parent.am-open>a:before{position:absolute;top:100%;margin-top:-16px;left:50%;margin-left:-12px;font-size:24px;content:"\f0d8";color:rgba(0,0,0,.2)}.am-menu-dropdown2 .am-menu-sub{position:absolute;left:5px;right:5px;padding:8px 0;border-radius:2px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15);background-color:#fff;z-index:1055}.am-menu-dropdown2 .am-menu-sub a{padding:0;height:35px;color:#555;line-height:35px}@media only screen and (min-width:641px){.am-menu-dropdown2 .am-menu-toggle{display:none!important}.am-menu-dropdown2 .am-menu-nav{position:static;display:block}.am-menu-dropdown2 .am-menu-nav>li{float:none;width:auto;display:inline-block}.am-menu-dropdown2 .am-menu-nav>li a{padding-left:1.5rem;padding-right:1.5rem}.am-menu-dropdown2 .am-menu-sub{left:auto;right:auto}.am-menu-dropdown2 .am-menu-sub>li{float:none;width:auto}.am-menu-dropdown2 .am-menu-sub a{padding-left:2rem;padding-right:2rem}}.am-menu-slide1 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-slide1 .am-menu-nav{background-color:#f5f5f5;padding-top:8px;padding-bottom:8px}.am-menu-slide1 .am-menu-nav.am-in:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f0d8";font-size:24px;color:#f5f5f5;position:absolute;right:16px;top:-16px}.am-menu-slide1 .am-menu-nav a{line-height:38px;height:38px;display:block;padding:0;text-align:center}.am-menu-slide1 .am-menu-nav>li>a{color:#333;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-menu-slide1 .am-menu-nav>.am-parent>a{position:relative;-webkit-transition:.15s;transition:.15s}.am-menu-slide1 .am-menu-nav>.am-parent>a:after{content:"\f107";margin-left:5px;-webkit-transition:.15s;transition:.15s}.am-menu-slide1 .am-menu-nav>.am-parent>a:before{position:absolute;top:100%;margin-top:-16px;left:50%;margin-left:-12px;content:"\f0d8";display:none;color:#0e90d2;font-size:24px}.am-menu-slide1 .am-menu-nav>.am-parent.am-open>a{color:#0e90d2}.am-menu-slide1 .am-menu-nav>.am-parent.am-open>a:before{display:block}.am-menu-slide1 .am-menu-nav>.am-parent.am-open>a:after{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.am-menu-slide1 .am-menu-sub{position:absolute;left:5px;right:5px;background-color:#0e90d2;border-radius:0;padding-top:8px;padding-bottom:8px}.am-menu-slide1 .am-menu-sub>li>a{color:#fff}@media only screen and (min-width:641px){.am-menu-slide1 .am-menu-toggle{display:none!important}.am-menu-slide1 .am-menu-nav{background-color:#f5f5f5;display:block}.am-menu-slide1 .am-menu-nav.am-in:before{display:none}.am-menu-slide1 .am-menu-nav li{width:auto;clear:none}.am-menu-slide1 .am-menu-nav li a{padding-left:1.5rem;padding-right:1.5rem}}.am-menu-offcanvas1 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-offcanvas1 .am-menu-nav{border-bottom:1px solid rgba(0,0,0,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}.am-menu-offcanvas1 .am-menu-nav>li>a{height:44px;line-height:44px;text-indent:15px;padding:0;position:relative;color:#ccc;border-top:1px solid rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);text-shadow:0 1px 0 rgba(0,0,0,.5)}.am-menu-offcanvas1 .am-menu-nav>.am-open>a,.am-menu-offcanvas1 .am-menu-nav>li>a:hover,.am-menu-offcanvas1 .am-menu-nav>li>a:focus{background-color:#474747;color:#fff;outline:0}.am-menu-offcanvas1 .am-menu-nav>.am-active>a{background-color:#1a1a1a;color:#fff}.am-menu-offcanvas1 .am-menu-nav>.am-parent>a{-webkit-transition:all .3s;transition:all .3s}.am-menu-offcanvas1 .am-menu-nav>.am-parent>a:after{content:"\f104";position:absolute;right:1.5rem;top:1.3rem}.am-menu-offcanvas1 .am-menu-nav>.am-parent.am-open>a:after{content:"\f107"}.am-menu-offcanvas1 .am-menu-sub{border-top:1px solid rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);padding:5px 0 5px 15px;background-color:#1a1a1a;font-size:1.4rem}.am-menu-offcanvas1 .am-menu-sub a{color:#eee}.am-menu-offcanvas1 .am-menu-sub a:hover{color:#fff}.am-menu-offcanvas1 .am-nav-divider{border-top:1px solid #1a1a1a}.am-menu-offcanvas2 .am-menu-toggle{position:absolute;right:5px;top:-47px;display:block;width:44px;height:44px;line-height:44px;text-align:center;color:#fff}.am-menu-offcanvas2 .am-menu-nav{padding:10px 5px}.am-menu-offcanvas2 .am-menu-nav>li{padding:5px}.am-menu-offcanvas2 .am-menu-nav>li>a{-webkit-transition:all .3s;transition:all .3s;background-color:#404040;color:#ccc;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border:1px solid rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);text-shadow:0 1px 0 rgba(0,0,0,.5);height:44px;line-height:44px;padding:0;text-align:center}.am-menu-offcanvas2 .am-menu-nav>li>a:hover,.am-menu-offcanvas2 .am-menu-nav>li>a:focus{background-color:#262626;color:#fff;outline:0}.am-menu-offcanvas2 .am-menu-nav>.am-active>a{background-color:#262626;color:#fff}.am-menu-stack .am-menu-nav{border-bottom:1px solid #dedede;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}.am-menu-stack .am-menu-nav>.am-parent>a{-webkit-transition:all .3s;transition:all .3s}.am-menu-stack .am-menu-nav>.am-parent>a:after{content:"\f105";position:absolute;right:1.5rem;top:1.3rem;-webkit-transition:all .15s;transition:all .15s}.am-menu-stack .am-menu-nav>.am-parent.am-open>a:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.am-menu-stack .am-menu-nav>li>a{position:relative;color:#333;background-color:#f5f5f5;border-top:1px solid #dedede;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);height:49px;line-height:49px;text-indent:10px;padding:0}.am-menu-stack .am-menu-nav>.am-open>a,.am-menu-stack .am-menu-nav>li>a:hover,.am-menu-stack .am-menu-nav>li>a:focus{background-color:#e5e5e5;color:#222;outline:0}.am-menu-stack .am-menu-sub{padding:0;font-size:1.4rem;border-top:1px solid #dedede}.am-menu-stack .am-menu-sub a{border-bottom:1px solid #dedede;padding-left:2rem;color:#444}.am-menu-stack .am-menu-sub a:hover{color:#333}.am-menu-stack .am-menu-sub li:last-child a{border-bottom:none}.am-menu-stack .am-menu-sub>li>a{height:44px;line-height:44px;text-indent:15px;padding:0}@media only screen and (min-width:641px){.am-menu-stack .am-menu-nav{background-color:#f5f5f5}.am-menu-stack .am-menu-nav>li{float:left;width:auto;clear:none!important;display:inline-block}.am-menu-stack .am-menu-nav>li a{padding-left:1.5rem;padding-right:1.5rem}.am-menu-stack .am-menu-nav>li.am-parent>a:after{position:static;content:"\f107"}.am-menu-stack .am-menu-nav>li.am-parent.am-open a{border-bottom:none}.am-menu-stack .am-menu-nav>li.am-parent.am-open a:after{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.am-menu-stack .am-menu-nav>li.am-parent.am-open .am-menu-sub{background-color:#e5e5e5}.am-menu-stack .am-menu-sub{position:absolute;left:0;right:0;background-color:#ddd;border-top:none}.am-menu-stack .am-menu-sub li{width:auto;float:left;clear:none}}.am-menu-one{padding-left:10px;padding-right:10px;margin-bottom:10px;background-color:#f5f5f5;-webkit-box-shadow:0 2px 10px #d7d7d7;box-shadow:0 2px 10px #d7d7d7;height:40px}.am-menu-one .am-menu-nav-wrap{overflow:hidden}.am-menu-one .am-menu-nav{height:40px}.am-menu-one .am-menu-nav:before,.am-menu-one .am-menu-nav:after{content:" ";display:table}.am-menu-one .am-menu-nav:after{clear:both}.am-menu-one .am-menu-nav>li{float:left;clear:none;width:auto}.am-menu-one .am-menu-nav>li>a{display:block;height:40px;line-height:40px;padding:0 10px;color:#7d7d7d}.am-menu-one .am-menu-nav .am-active>a{color:#555;border-bottom:2px solid #15afef}.am-menu-one .am-menu-nav .am-open>a{position:relative}.am-menu-one .am-menu-nav .am-open>a:before{position:absolute;top:100%;left:50%;margin-top:-6px;margin-left:-6px;content:'';display:inline-block;width:0;height:0;vertical-align:middle;border-bottom:6px solid #15afef;border-right:6px solid transparent;border-left:6px solid transparent;border-top:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.am-menu-one .am-menu-nav-sub-wrap{position:relative;z-index:1050}.am-menu-one .am-menu-sub{position:absolute;top:1px;left:-5px;right:-5px;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.am-menu-one .am-menu-sub li{text-align:center}.am-menu-one .am-menu-sub a{padding:0;color:#555;line-height:40px}.am-navbar{position:fixed;left:0;bottom:0;width:100%;height:49px;line-height:49px;z-index:1010}.am-navbar ul{padding-left:0;margin:0;list-style:none;width:100%}.am-navbar .am-navbar-nav{padding-left:8px;padding-right:8px;text-align:center;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-navbar .am-navbar-nav li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;float:none}.am-navbar-nav{position:relative;z-index:1015}.am-navbar-nav a{display:inline-block;width:100%;height:49px;line-height:20px}.am-navbar-nav a img{display:block;vertical-align:middle;height:24px;width:24px;margin:4px auto 0}.am-navbar-nav a [class*=am-icon]{width:24px;height:24px;margin:4px auto 0;display:block;line-height:24px}.am-navbar-nav a [class*=am-icon]:before{font-size:22px;vertical-align:middle}.am-navbar-nav a .am-navbar-label{padding-top:2px;line-height:1;font-size:12px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-navbar-more [class*=am-icon-]{-webkit-transition:.15s;transition:.15s}.am-navbar-more.am-active [class*=am-icon-]{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.am-navbar-actions{position:absolute;bottom:49px;right:0;left:0;z-index:1009;opacity:0;-webkit-transition:.3s;transition:.3s;-webkit-transform:translate(0,100%);-ms-transform:translate(0,100%);transform:translate(0,100%)}.am-navbar-actions.am-active{opacity:1;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.am-navbar-actions li{line-height:42px;position:relative}.am-navbar-actions li a{display:block;width:100%;height:40px;-webkit-box-shadow:inset 0 1px rgba(220,220,220,.25);box-shadow:inset 0 1px rgba(220,220,220,.25);padding-left:20px;padding-right:36px}.am-navbar-actions li a :after{font-family:FontAwesome,sans-serif;content:"\f105";display:inline-block;position:absolute;top:0;right:20px}.am-navbar-actions li a img{vertical-align:middle;height:20px;width:20px;display:inline}#am-navbar-qrcode{width:220px;height:220px;margin-left:-110px}#am-navbar-qrcode .am-modal-bd{padding:10px}#am-navbar-qrcode canvas{display:block;width:200px;height:200px}.am-with-fixed-navbar{padding-bottom:54px}.am-navbar-default a{color:#fff}.am-navbar-default .am-navbar-nav{background-color:#0e90d2}.am-navbar-default .am-navbar-actions{background-color:#0d86c4}.am-navbar-default .am-navbar-actions a{border-bottom:1px solid #0b6fa2}.am-navbar-one a{color:#fff}.am-navbar-one .am-navbar-nav{background-color:#15afef}.am-navbar-one .am-navbar-actions{background-color:#0f9fdb}.am-navbar-one .am-navbar-actions a{border-bottom:1px solid #0d87ba}.am-pagination{position:relative}.am-pagination-default{margin-left:10px;margin-right:10px;font-size:1.6rem}.am-pagination-default .am-pagination-prev,.am-pagination-default .am-pagination-next{float:none}.am-pagination-select{margin-left:10px;margin-right:10px;font-size:1.6rem}.am-pagination-select>li>a{line-height:36px;background-color:#eee;padding:0 15px;border:0;color:#555}.am-pagination-select .am-pagination-select{position:absolute;top:0;left:50%;margin-left:-35px;width:70px;height:36px;text-align:center;border-radius:0}.am-pagination-select .am-pagination-select select{display:block;border:0;line-height:36px;width:70px;height:36px;border-radius:0;color:#555;background-color:#eee;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-left:18px}.am-pagination-one{margin-left:10px;margin-right:10px;text-align:center}.am-pagination-one>li>a{line-height:36px;background-color:#fff;padding:0 15px;color:#555}.am-pagination-one .am-pagination-select{float:left;position:absolute;top:0;left:50%;margin-left:-25px;width:50px;height:36px;text-align:center}.am-pagination-one .am-pagination-select select{display:block;line-height:36px;width:50px;height:36px;border-radius:0;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-left:18px;background:#fff;border:1px solid #dfdfdf;color:#555}.am-paragraph p{margin:10px 0}.am-paragraph img{max-width:100%}.am-paragraph h1,.am-paragraph h2,.am-paragraph h3,.am-paragraph h4,.am-paragraph h5,.am-paragraph h6{color:#222}.am-paragraph table{max-width:none}.am-paragraph-table-container{overflow:hidden;background:#eee;max-width:none}.am-paragraph-table-container table{width:100%;max-width:none}.am-paragraph-table-container table th{background:#bce5fb;height:40px;border:1px solid #999;text-align:center}.am-paragraph-table-container table td{border:1px solid #999;text-align:center;vertical-align:middle;background:#fff}.am-paragraph-table-container table td p{text-indent:0;font-size:1.4rem}.am-paragraph-table-container table td a{font-size:1.4rem}.am-paragraph-default{margin:0 10px;color:#333;background-color:transparent}.am-paragraph-default p{font-size:1.4rem}.am-paragraph-default img{max-width:98%;display:block;margin:5px auto;border:1px solid #eee;padding:2px}.am-paragraph-default a{color:#0e90d2}.am-paragraph-one{color:#555;background:#fff;margin:0 10px;padding:4px}.am-paragraph-one h1,.am-paragraph-one h2,.am-paragraph-one h3,.am-paragraph-one h4,.am-paragraph-one h5,.am-paragraph-one h6{color:#333;font-weight:400;margin-top:0}.am-paragraph-one h1{font-size:2rem}.am-paragraph-one h2,.am-paragraph-one h3{font-size:1.8rem}.am-paragraph-one h4,.am-paragraph-one h5{font-size:1.6rem}.am-paragraph-one h6{font-size:1.4rem}.am-paragraph-one hr{background:#dfdfdf;height:1px;border:0;overflow:hidden}.am-paragraph-one img{max-width:100%;display:block;margin:5px 0}.am-paragraph-one a{color:#333}.am-paragraph-one p,.am-paragraph-one div,.am-paragraph-one table{font-size:1.4rem;margin:0 0 1rem 0}.am-paragraph-one ul,.am-paragraph-one ol{padding-left:0}.am-paragraph-one li{list-style:none;font-size:1.4rem}.am-slider-a1{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a1 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a1 .am-viewport{max-height:300px}.am-slider-a1 .am-control-nav{width:100%;position:absolute;bottom:5px;text-align:center;line-height:0}.am-slider-a1 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-a1 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;border-radius:50%;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-a1 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a1 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-a1 .am-direction-nav,.am-slider-a1 .am-pauseplay{display:none}.am-slider-a2{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a2 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a2 .am-viewport{max-height:300px}.am-slider-a2 .am-control-nav{width:100%;position:absolute;bottom:5px;text-align:center;line-height:0}.am-slider-a2 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-a2 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-a2 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a2 .am-control-nav li a.am-active{background:#0e93d7;cursor:default}.am-slider-a2 .am-direction-nav,.am-slider-a2 .am-pauseplay{display:none}.am-slider-a3{margin-bottom:20px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a3 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a3 .am-viewport{max-height:300px}.am-slider-a3 .am-control-nav{width:100%;position:absolute;bottom:-20px;text-align:center;height:20px;background-color:#000;padding-top:5px;line-height:0}.am-slider-a3 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-a3 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;border-radius:50%;-webkit-box-shadow:inset 0 0 3px rgba(200,200,200,.3);box-shadow:inset 0 0 3px rgba(200,200,200,.3)}.am-slider-a3 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a3 .am-control-nav li a.am-active{background:#0e90d2;cursor:default}.am-slider-a3 .am-direction-nav,.am-slider-a3 .am-pauseplay{display:none}.am-slider-a4{margin-bottom:30px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a4 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a4 .am-viewport{max-height:300px}.am-slider-a4 .am-control-nav{width:100%;position:absolute;bottom:-15px;text-align:center;line-height:0}.am-slider-a4 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-a4 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;border-radius:50%;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-a4 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a4 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-a4 .am-direction-nav,.am-slider-a4 .am-pauseplay{display:none}.am-slider-a5{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-a5 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-a5 .am-viewport{max-height:300px}.am-slider-a5 .am-control-nav{width:100%;position:absolute;text-align:center;height:6px;display:table;bottom:0;font-size:0;line-height:0}.am-slider-a5 .am-control-nav li{display:table-cell}.am-slider-a5 .am-control-nav li a{width:100%;height:6px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px}.am-slider-a5 .am-control-nav li a:hover{background-color:rgba(0,0,0,.7)}.am-slider-a5 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-a5 .am-direction-nav,.am-slider-a5 .am-pauseplay{display:none}.am-slider-b1{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-b1 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-b1 .am-viewport{max-height:300px}.am-slider-b1 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:8px 0;margin:-20px 0 0;position:absolute;top:50%;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;color:#fff;text-shadow:1px 1px 0 rgba(255,255,255,.3);background-color:rgba(0,0,0,.5);font-size:0;text-align:center;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-b1 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:24px}.am-slider-b1 .am-direction-nav a.am-prev{left:0;padding-right:5px;border-bottom-right-radius:5px;border-top-right-radius:5px}.am-slider-b1 .am-direction-nav a.am-next{right:0;padding-left:5px;border-bottom-left-radius:5px;border-top-left-radius:5px}.am-slider-b1 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-b1 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-b1:hover .am-prev{opacity:.7}.am-slider-b1:hover .am-prev:hover{opacity:1}.am-slider-b1:hover .am-next{opacity:.7}.am-slider-b1:hover .am-next:hover{opacity:1}.am-slider-b1 .am-control-nav,.am-slider-b1 .am-pauseplay{display:none}.am-slider-b2{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-b2 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-b2 .am-viewport{max-height:300px}.am-slider-b2 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:4px;margin:-16px 0 0;position:absolute;top:50%;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;color:#fff;text-shadow:1px 1px 0 rgba(255,255,255,.3);background-color:rgba(0,0,0,.5);font-size:0;text-align:center;border-radius:50%;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-b2 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:16px;line-height:24px}.am-slider-b2 .am-direction-nav a.am-prev{left:5px}.am-slider-b2 .am-direction-nav a.am-next{right:5px}.am-slider-b2 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-b2 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-b2:hover .am-prev{opacity:.7}.am-slider-b2:hover .am-prev:hover{opacity:1}.am-slider-b2:hover .am-next{opacity:.7}.am-slider-b2:hover .am-next:hover{opacity:1}.am-slider-b2 .am-control-nav,.am-slider-b2 .am-pauseplay{display:none}.am-slider-b3{margin:15px 30px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-b3 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-b3 .am-viewport{max-height:300px}.am-slider-b3 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:4px;margin:-16px 0 0;position:absolute;top:50%;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;color:#333;text-shadow:1px 1px 0 rgba(255,255,255,.3);font-size:0;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-b3 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:24px}.am-slider-b3 .am-direction-nav a.am-prev{left:-25px}.am-slider-b3 .am-direction-nav a.am-next{right:-25px;text-align:right}.am-slider-b3 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-b3 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-b3:hover .am-prev{opacity:.7}.am-slider-b3:hover .am-prev:hover{opacity:1}.am-slider-b3:hover .am-next{opacity:.7}.am-slider-b3:hover .am-next:hover{opacity:1}.am-slider-b3 .am-control-nav,.am-slider-b3 .am-pauseplay{display:none}.am-slider-b4{margin:15px 20px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-b4 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-b4 .am-viewport{max-height:300px}.am-slider-b4 .am-direction-nav a{position:absolute;top:50%;z-index:10;display:block;-webkit-box-sizing:content-box;box-sizing:content-box;width:24px;height:24px;margin:-16px 0 0;padding:4px;overflow:hidden;opacity:.45;background-color:rgba(0,0,0,.8);cursor:pointer;text-shadow:1px 1px 0 rgba(255,255,255,.3);font-size:0;border-radius:50%;text-align:center;color:#fff;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-b4 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:20px;line-height:24px}.am-slider-b4 .am-direction-nav a.am-prev{left:-15px}.am-slider-b4 .am-direction-nav a.am-next{right:-15px}.am-slider-b4 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-b4 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-b4:hover .am-prev{opacity:.7}.am-slider-b4:hover .am-prev:hover{opacity:.9}.am-slider-b4:hover .am-next{opacity:.7}.am-slider-b4:hover .am-next:hover{opacity:.9}.am-slider-b4 .am-control-nav,.am-slider-b4 .am-pauseplay{display:none}.am-slider-c1{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-c1 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-c1 .am-viewport{max-height:300px}.am-slider-c1 .am-control-nav{position:absolute;bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:6px;font-size:0;line-height:0;text-align:center}.am-slider-c1 .am-control-nav li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-slider-c1 .am-control-nav li a{width:100%;height:6px;display:block;background-color:rgba(0,0,0,.7);cursor:pointer;text-indent:-9999px}.am-slider-c1 .am-control-nav li a:hover{background:rgba(0,0,0,.8)}.am-slider-c1 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-c1 .am-slider-desc{background-color:rgba(0,0,0,.6);position:absolute;bottom:6px;padding:8px;width:100%;color:#fff;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-c1 .am-direction-nav,.am-slider-c1 .am-pauseplay{display:none}.am-slider-c2{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-c2 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-c2 .am-viewport{max-height:300px}.am-slider-c2 .am-control-nav{position:absolute;bottom:15px;right:0;height:6px;text-align:center;font-size:0;line-height:0}.am-slider-c2 .am-control-nav li{display:inline-block;margin-right:6px}.am-slider-c2 .am-control-nav li a{width:6px;height:6px;display:block;background-color:rgba(255,255,255,.4);cursor:pointer;text-indent:-9999px}.am-slider-c2 .am-control-nav li a:hover{background:rgba(230,230,230,.4)}.am-slider-c2 .am-control-nav li a.am-active{background-color:#0e90d2;cursor:default}.am-slider-c2 .am-slider-desc{background-color:rgba(0,0,0,.6);position:absolute;bottom:0;padding:8px 60px 8px 8px;width:100%;color:#fff;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-c2 .am-direction-nav,.am-slider-c2 .am-pauseplay{display:none}.am-slider-c3{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-c3 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-c3 .am-viewport{max-height:300px}.am-slider-c3 .am-slider-desc{background-color:rgba(0,0,0,.6);position:absolute;bottom:10px;right:60px;height:30px;left:0;padding-right:5px;color:#fff;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-c3 .am-slider-counter{margin-right:5px;display:inline-block;height:30px;background-color:#0e90d2;width:40px;text-align:center;line-height:30px;color:#eee;font-size:1rem}.am-slider-c3 .am-slider-counter .am-active{font-size:1.8rem;font-weight:700;color:#fff}.am-slider-c3 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:4px 0;margin:-16px 0 0;position:absolute;top:50%;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;color:#fff;text-shadow:1px 1px 0 rgba(255,255,255,.3);background-color:rgba(0,0,0,.5);font-size:0;text-align:center;-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-c3 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:16px;line-height:24px}.am-slider-c3 .am-direction-nav a.am-prev{left:0;padding-right:5px}.am-slider-c3 .am-direction-nav a.am-next{right:0;padding-left:5px}.am-slider-c3 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-c3 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-c3:hover .am-prev{opacity:.7}.am-slider-c3:hover .am-prev:hover{opacity:1}.am-slider-c3:hover .am-next{opacity:.7}.am-slider-c3:hover .am-next:hover{opacity:1}.am-slider-c3 .am-control-nav,.am-slider-c3 .am-pauseplay{display:none}.am-slider-c4{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-c4 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-c4 .am-viewport{max-height:300px}.am-slider-c4 .am-slider-desc{width:100%;background-color:rgba(0,0,0,.6);position:absolute;bottom:0;right:0;left:0;padding:8px 40px;color:#fff;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-c4 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;padding:4px 0;margin:0;position:absolute;bottom:4px;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;text-shadow:1px 1px 0 rgba(255,255,255,.3);font-size:0;text-align:center;color:rgba(0,0,0,.7);-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-c4 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:24px}.am-slider-c4 .am-direction-nav a.am-prev{left:0;padding-right:5px}.am-slider-c4 .am-direction-nav a.am-next{right:0;padding-left:5px}.am-slider-c4 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-c4 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-c4:hover .am-prev{opacity:.7}.am-slider-c4:hover .am-prev:hover{opacity:1}.am-slider-c4:hover .am-next{opacity:.7}.am-slider-c4:hover .am-next:hover{opacity:1}.am-slider-c4 .am-control-nav,.am-slider-c4 .am-pauseplay{display:none}.am-slider-d1{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-d1 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-d1 .am-viewport{max-height:300px}.am-slider-d1 .am-slider-desc{padding:8px 35px;width:100%;color:#fff;background-color:#0e90d2}.am-slider-d1 .am-slider-title{font-weight:400;margin-bottom:2px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-d1 .am-slider-more{color:#eee;font-size:1.3rem}.am-slider-d1 .am-direction-nav a{-webkit-box-sizing:content-box;box-sizing:content-box;display:block;width:24px;height:24px;margin:0;position:absolute;bottom:18px;z-index:10;overflow:hidden;opacity:.45;cursor:pointer;text-shadow:1px 1px 0 rgba(255,255,255,.3);font-size:0;text-align:center;border:1px solid rgba(255,255,255,.9);color:rgba(255,255,255,.9);border-radius:50%;-webkit-transition:all 3s ease;transition:all 3s ease}.am-slider-d1 .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f053";font-size:16px;line-height:24px}.am-slider-d1 .am-direction-nav a.am-prev{left:5px}.am-slider-d1 .am-direction-nav a.am-next{right:5px}.am-slider-d1 .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-d1 .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-d1:hover .am-prev{opacity:.7}.am-slider-d1:hover .am-prev:hover{opacity:1}.am-slider-d1:hover .am-next{opacity:.7}.am-slider-d1:hover .am-next:hover{opacity:1}.am-slider-d1 .am-control-nav,.am-slider-d1 .am-pauseplay{display:none}.am-slider-d2{margin-bottom:20px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-d2 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-d2 .am-viewport{max-height:300px}.am-slider-d2 .am-slider-desc{position:absolute;left:10px;bottom:20px;right:50px;color:#fff}.am-slider-d2 .am-slider-content{background-color:rgba(0,0,0,.7);padding:10px 6px;margin-bottom:10px}.am-slider-d2 .am-slider-content p{margin:0;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-size:1.4rem}.am-slider-d2 .am-slider-title{font-weight:400;margin-bottom:5px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-d2 .am-slider-more{color:#eee;font-size:1.3rem;background-color:#0e90d2;padding:2px 10px}.am-slider-d2 .am-control-nav{width:100%;position:absolute;bottom:-15px;text-align:center}.am-slider-d2 .am-control-nav li{margin:0 6px;display:inline-block}.am-slider-d2 .am-control-nav li a{width:8px;height:8px;display:block;background-color:rgba(0,0,0,.5);cursor:pointer;text-indent:-9999px;border-radius:50%;font-size:0;line-height:0;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.3);box-shadow:inset 0 0 3px rgba(0,0,0,.3)}.am-slider-d2 .am-control-nav li a:hover{background:rgba(0,0,0,.5)}.am-slider-d2 .am-control-nav li a.am-active{background:#0e90d2;cursor:default}.am-slider-d2 .am-direction-nav,.am-slider-d2 .am-pauseplay{display:none}.am-slider-d3{margin-bottom:10px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2);box-shadow:0 1px 4px rgba(0,0,0,.2)}.am-slider-d3 .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-d3 .am-viewport{max-height:300px}.am-slider-d3 .am-slider-desc{position:absolute;bottom:0;color:#fff;width:100%;background-color:rgba(0,0,0,.7);padding:8px 5px}.am-slider-d3 .am-slider-desc p{margin:0;font-size:1.3rem;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-d3 .am-slider-title{font-weight:400;margin-bottom:5px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-d3 .am-control-thumbs{position:static;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.am-slider-d3 .am-control-thumbs li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding:12px 4px 4px;position:relative}.am-slider-d3 .am-control-thumbs img{width:100%;display:block;opacity:.85;cursor:pointer}.am-slider-d3 .am-control-thumbs img:hover{opacity:1}.am-slider-d3 .am-control-thumbs .am-active{opacity:1;cursor:default}.am-slider-d3 .am-control-thumbs .am-active+i{position:absolute;top:0;left:50%;content:"";display:inline-block;width:0;height:0;vertical-align:middle;border-top:8px solid rgba(0,0,0,.7);border-right:8px solid transparent;border-left:8px solid transparent;border-bottom:0 dotted;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);margin-left:-4px;-webkit-transition:all .2s;transition:all .2s}.am-slider-d3 .am-direction-nav,.am-slider-d3 .am-pauseplay{display:none}.am-slider-one{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.5);box-shadow:0 1px 4px rgba(0,0,0,.5);margin:0 10px}.am-slider-one .am-viewport{max-height:2000px;-webkit-transition:all 1s ease;transition:all 1s ease}.loading .am-slider-one .am-viewport{max-height:300px}.am-slider-one .am-viewport .am-slider-desc{position:absolute;left:0;bottom:0;height:26px;width:100%;line-height:26px;background:rgba(0,0,0,.5);color:#fff}.am-slider-one .am-viewport .am-slider-desc .am-slider-title{font-weight:400;font-size:12px;text-indent:4px;padding-right:80px;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-slider-one .am-control-nav{display:none}.am-slider-one .am-direction-nav a{position:absolute;top:50%;z-index:10;display:block;width:24px;height:24px;margin:-12px 0 0;overflow:hidden;opacity:.45;cursor:pointer;color:rgba(0,0,0,.8);text-shadow:1px 1px 0 rgba(255,255,255,.3);-webkit-transition:all .3s ease;transition:all .3s ease}.am-slider-one .am-direction-nav a:before{display:inline-block;font-family:FontAwesome,sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:rgba(0,0,0,.7);content:"\f053";font-size:24px}.am-slider-one .am-direction-nav a.am-next:before{content:"\f054"}.am-slider-one .am-direction-nav .am-prev{left:10px}.am-slider-one .am-direction-nav .am-next{right:10px;text-align:right}.am-slider-one .am-direction-nav .am-disabled{opacity:0!important;cursor:default}.am-slider-one:hover .am-prev{opacity:.7;left:10px}.am-slider-one:hover .am-prev:hover{opacity:1}.am-slider-one:hover .am-next{opacity:.7;right:10px}.am-slider-one:hover .am-next:hover{opacity:1}.am-slider-one .am-pauseplay{display:none}[data-am-widget=tabs]{margin:10px}[data-am-widget=tabs] .am-tabs-nav{width:100%;padding:0;margin:0;list-style:none;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}[data-am-widget=tabs] .am-tabs-nav li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}[data-am-widget=tabs] .am-tabs-nav a{display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-tabs-default .am-tabs-nav{line-height:40px;background-color:#eee}.am-tabs-default .am-tabs-nav a{color:#222;line-height:42px}.am-tabs-default .am-tabs-nav>.am-active a{background-color:#0e90d2;color:#fff}.am-tabs-d2 .am-tabs-nav{background-color:#eee}.am-tabs-d2 .am-tabs-nav li{height:42px}.am-tabs-d2 .am-tabs-nav a{color:#222;line-height:42px}.am-tabs-d2 .am-tabs-nav>.am-active{position:relative;background-color:#fcfcfc;border-bottom:2px solid #0e90d2}.am-tabs-d2 .am-tabs-nav>.am-active a{line-height:40px;color:#0e90d2}.am-tabs-d2 .am-tabs-nav>.am-active:after{position:absolute;width:0;height:0;bottom:0;left:50%;margin-left:-5px;border:6px transparent solid;content:"";z-index:1;border-bottom-color:#0e90d2}.am-tabs-one{background:#fff}.am-tabs-one .am-tabs-nav{height:36px;background-color:#fff;font-size:14px;border-radius:0}.am-tabs-one .am-tabs-nav a{line-height:34px;color:#15afef}.am-tabs-one .am-tabs-nav li{border:1px solid #15afef}.am-tabs-one .am-tabs-nav li:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.am-tabs-one .am-tabs-nav li:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.am-tabs-one .am-tabs-nav li+li{border-left:none}.am-tabs-one .am-tabs-nav .am-active a{background-color:#15afef;color:#fff}.am-tabs-one .am-tabs-bd{border:none}.am-tabs-one .am-tab-panel{padding:15px 5px 20px}.am-titlebar{margin-top:20px;height:45px;font-size:100%}.am-titlebar h2{margin-top:0;margin-bottom:0;font-size:1.6rem}.am-titlebar .am-titlebar-title img{height:24px;width:auto}.am-titlebar-default{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:10px;margin-right:10px;background-color:transparent;border-bottom:1px solid #dedede;line-height:44px}.am-titlebar-default a{color:#0e90d2}.am-titlebar-default .am-titlebar-title{position:relative;padding-left:12px;color:#0e90d2;font-size:1.8rem;text-align:left;font-weight:700}.am-titlebar-default .am-titlebar-title:before{content:"";position:absolute;left:2px;top:8px;bottom:8px;border-left:3px solid #0e90d2}.am-titlebar-default .am-titlebar-nav{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;text-align:right}.am-titlebar-default .am-titlebar-nav a{margin-right:10px}.am-titlebar-default .am-titlebar-nav a:last-child{margin-right:5px}.am-titlebar-multi{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#f5f5f5;border-top:2px solid #3bb4f2;border-bottom:1px solid #e8e8e8}.am-titlebar-multi a{color:#0e90d2}.am-titlebar-multi .am-titlebar-title{padding-left:10px;color:#0e90d2;font-size:1.8rem;text-align:left;font-weight:700;line-height:42px}.am-titlebar-multi .am-titlebar-nav{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;text-align:right;line-height:42px}.am-titlebar-multi .am-titlebar-nav a{margin-right:10px}.am-titlebar-cols{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:10px;background-color:#f5f5f5;color:#555;font-size:18px;border-top:2px solid #e1e1e1;line-height:41px}.am-titlebar-cols a{color:#555}.am-titlebar-cols .am-titlebar-title{color:#0e90d2;margin-right:15px;border-bottom:2px solid #0e90d2;font-weight:700}.am-titlebar-cols .am-titlebar-title a{color:#0e90d2}.am-titlebar-cols .am-titlebar-nav{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.am-titlebar-cols .am-titlebar-nav a{display:inline-block;margin-right:15px;line-height:41px;border-bottom:2px solid transparent}.am-titlebar-cols .am-titlebar-nav a:hover{color:#3c3c3c;border-bottom-color:#0e90d2}.am-titlebar-cols .am-titlebar-nav a:last-child{margin-right:10px}.am-titlebar-one{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:10px;margin-right:10px;height:45px;line-height:44px;background-color:#fff;overflow:hidden;border-bottom:1px solid #15afef}.am-titlebar-one .am-titlebar-title{padding-left:12px;position:relative;color:#222;display:block;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.am-titlebar-one .am-titlebar-title:before{content:"";position:absolute;left:2px;top:8px;bottom:8px;border-left:3px solid #15afef}.am-titlebar-one .am-titlebar-title a{color:#222}.am-titlebar-one .am-titlebar-title img{height:24px;vertical-align:top;margin-top:10px}.am-titlebar-one .am-titlebar-title h1,.am-titlebar-one .am-titlebar-title h2,.am-titlebar-one .am-titlebar-title h3,.am-titlebar-one .am-titlebar-title h4,.am-titlebar-one .am-titlebar-title h5,.am-titlebar-one .am-titlebar-title h6,.am-titlebar-one .am-titlebar-title strong,.am-titlebar-one .am-titlebar-title em{font-style:normal;font-weight:400;margin-bottom:0}.am-titlebar-one .am-titlebar-title ul,.am-titlebar-one .am-titlebar-title li{list-style:none;padding-left:0}.am-titlebar-one .am-titlebar-nav{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;text-align:right;padding-right:5px;color:#999;font-size:1.4rem}.am-titlebar-one .am-titlebar-nav a{color:#999} \ No newline at end of file diff --git a/src/main/webapp/res/amazonUi/css/app.css b/src/main/webapp/res/amazonUi/css/app.css new file mode 100644 index 0000000..7ec1e09 --- /dev/null +++ b/src/main/webapp/res/amazonUi/css/app.css @@ -0,0 +1 @@ +/* Write your styles */ \ No newline at end of file diff --git a/src/main/webapp/res/amazonUi/fonts/FontAwesome.otf b/src/main/webapp/res/amazonUi/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..81c9ad949b47f64afeca5642ee2494b6e3147f44 GIT binary patch literal 85908 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 uQr82 literal 0 HcmV?d00001 diff --git a/src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.eot b/src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..84677bc0c5f37f1fac9d87548c4554b5c91717cf GIT binary patch literal 56006 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�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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.ttf b/src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..96a3639cdde5e8ab459c6380e3b9524ee81641dc GIT binary patch literal 112160 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 zÄ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 V*eEM;|ho{trTA6=?tf literal 0 HcmV?d00001 diff --git a/src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.woff b/src/main/webapp/res/amazonUi/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..628b6a52a87e62c6f22426e17c01f6a303aa194e GIT binary patch literal 65452 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 q%u^)w#YX9ZIvhtu?9Cy6YRi6f6G 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/res/amazonUi/js/amazeui.js b/src/main/webapp/res/amazonUi/js/amazeui.js new file mode 100644 index 0000000..ad60568 --- /dev/null +++ b/src/main/webapp/res/amazonUi/js/amazeui.js @@ -0,0 +1,17549 @@ +/*! Amaze UI v2.1.0 | by Amaze UI Team | (c) 2015 AllMobilize, Inc. | Licensed under MIT | 2015-01-13T02:01:01 UTC */ +(function e(t, n, r) { + function s(o, u) { + if (!n[o]) { + if (!t[o]) { + var a = typeof require == "function" && require; + if (!u && a) return a(o, !0); + if (i) return i(o, !0); + var f = new Error("Cannot find module '" + o + "'"); + throw f.code = "MODULE_NOT_FOUND", f + } + var l = n[o] = { + exports: {} + }; + t[o][0].call(l.exports, function(e) { + var n = t[o][1][e]; + return s(n ? n : e) + }, l, l.exports, e, t, n, r) + } + return n[o].exports + } + var i = typeof require == "function" && require; + for (var o = 0; o < r.length; o++) s(r[o]); + return s +})({ + 1: [ + function(require, module, exports) { + (function(global) { + 'use strict'; + + require('./core'); + require('./ui.collapse'); + var $ = (typeof window !== "undefined" ? window.jQuery : typeof global !== + "undefined" ? global.jQuery : null); + var UI = $.AMUI; + + function accordionInit() { + var $accordion = $('[data-am-widget="accordion"]'); + var selector = { + item: '.am-accordion-item', + title: '.am-accordion-title', + body: '.am-accordion-bd' + }; + + $accordion.each(function(i, item) { + var options = UI.utils.parseOptions($(item).attr( + 'data-am-accordion')); + var $title = $(item).find(selector.title); + + $title.on('click.accordion.amui', function() { + var $collapse = $(this).next(selector.body); + var $parent = $(this).parent(selector.item); + var data = $collapse.data('amui.collapse'); + + $parent.toggleClass('am-active'); + + if (!data) { + $collapse.collapse(); + } else { + $collapse.collapse('toggle'); + } + + !options.multiple && + $(item).children('.am-active'). + not($parent).removeClass('am-active'). + find(selector.body + '.am-in').collapse('close'); + }); + }); + } + + // Init on DOM ready + $(function() { + accordionInit(); + }); + + module.exports = $.AMUI.accordion = { + VERSION: '2.0.0', + init: accordionInit + }; + + }).call(this, typeof global !== "undefined" ? global : typeof self !== + "undefined" ? self : typeof window !== "undefined" ? window : {}) + }, { + "./core": 4, + "./ui.collapse": 26 + } + ], + 2: [ + function(require, module, exports) { + (function(global) { + 'use strict'; + + var $ = (typeof window !== "undefined" ? window.jQuery : typeof global !== + "undefined" ? global.jQuery : null); + + require('./core'); + require('./util.fastclick'); + require('./util.hammer'); + require('./amazeui'); + require('./amazeui.legacy'); + require('./ui.add2home'); + require('./ui.alert'); + require('./ui.button'); + require('./ui.collapse'); + require('./ui.datepicker'); + require('./ui.dimmer'); + require('./ui.dropdown'); + require('./ui.flexslider'); + require('./ui.iscroll-lite'); + require('./ui.modal'); + require('./ui.offcanvas'); + require('./ui.pinchzoom'); + require('./ui.popover'); + require('./ui.progress'); + require('./ui.pureview'); + require('./ui.scrollspy'); + require('./ui.scrollspynav'); + require('./ui.selected'); + require('./ui.share'); + require('./ui.smooth-scroll'); + require('./ui.sticky'); + require('./ui.tabs'); + require('./ui.ucheck'); + require('./ui.validator'); + require('./util.cookie'); + require('./util.fullscreen'); + require('./util.qrcode'); + require('./util.store'); + require('./accordion'); + require('./divider'); + require('./duoshuo'); + require('./figure'); + require('./footer'); + require('./gallery'); + require('./gotop'); + require('./header'); + require('./intro'); + require('./list_news'); + require('./map'); + require('./mechat'); + require('./menu'); + require('./navbar'); + require('./pagination'); + require('./paragraph'); + require('./slider'); + require('./tabs'); + require('./titlebar'); + + module.exports = $.AMUI; + + }).call(this, typeof global !== "undefined" ? global : typeof self !== + "undefined" ? self : typeof window !== "undefined" ? window : {}) + }, { + "./accordion": 1, + "./amazeui": 2, + "./amazeui.legacy": 3, + "./core": 4, + "./divider": 5, + "./duoshuo": 6, + "./figure": 7, + "./footer": 8, + "./gallery": 9, + "./gotop": 10, + "./header": 11, + "./intro": 12, + "./list_news": 13, + "./map": 14, + "./mechat": 15, + "./menu": 16, + "./navbar": 17, + "./pagination": 18, + "./paragraph": 19, + "./slider": 20, + "./tabs": 21, + "./titlebar": 22, + "./ui.add2home": 23, + "./ui.alert": 24, + "./ui.button": 25, + "./ui.collapse": 26, + "./ui.datepicker": 27, + "./ui.dimmer": 28, + "./ui.dropdown": 29, + "./ui.flexslider": 30, + "./ui.iscroll-lite": 31, + "./ui.modal": 32, + "./ui.offcanvas": 33, + "./ui.pinchzoom": 34, + "./ui.popover": 35, + "./ui.progress": 36, + "./ui.pureview": 37, + "./ui.scrollspy": 38, + "./ui.scrollspynav": 39, + "./ui.selected": 40, + "./ui.share": 41, + "./ui.smooth-scroll": 42, + "./ui.sticky": 43, + "./ui.tabs": 44, + "./ui.ucheck": 45, + "./ui.validator": 46, + "./util.cookie": 47, + "./util.fastclick": 48, + "./util.fullscreen": 49, + "./util.hammer": 50, + "./util.qrcode": 51, + "./util.store": 52 + } + ], + 3: [ + function(require, module, exports) { + (function(global) { + // Amaze UI JavaScript for IE8 + + 'use strict'; + + var $ = (typeof window !== "undefined" ? window.jQuery : typeof global !== + "undefined" ? global.jQuery : null); + + require('./core'); + require('./ui.alert'); + require('./ui.button'); + require('./ui.collapse'); + require('./ui.dimmer'); + require('./ui.dropdown'); + require('./ui.flexslider'); + require('./ui.modal'); + require('./ui.offcanvas'); + require('./ui.popover'); + require('./ui.progress'); + require('./ui.scrollspynav'); + require('./ui.sticky'); + require('./util.cookie'); + + module.exports = $.AMUI; + + }).call(this, typeof global !== "undefined" ? global : typeof self !== + "undefined" ? self : typeof window !== "undefined" ? window : {}) + }, { + "./core": 4, + "./ui.alert": 24, + "./ui.button": 25, + "./ui.collapse": 26, + "./ui.dimmer": 28, + "./ui.dropdown": 29, + "./ui.flexslider": 30, + "./ui.modal": 32, + "./ui.offcanvas": 33, + "./ui.popover": 35, + "./ui.progress": 36, + "./ui.scrollspynav": 39, + "./ui.sticky": 43, + "./util.cookie": 47 + } + ], + 4: [ + function(require, module, exports) { + (function(global) { + 'use strict'; + + /* jshint -W040 */ + + var $ = (typeof window !== "undefined" ? window.jQuery : typeof global !== + "undefined" ? global.jQuery : null); + + if (typeof $ === 'undefined') { + throw new Error('Amaze UI 2.x requires jQuery :-(\n' + + '\u7231\u4e0a\u4e00\u5339\u91ce\u9a6c\uff0c\u53ef\u4f60' + + '\u7684\u5bb6\u91cc\u6ca1\u6709\u8349\u539f\u2026'); + } + + var UI = $.AMUI || {}; + var $win = $(window); + var doc = window.document; + var $html = $('html'); + + UI.VERSION = '2.0.0'; + + UI.support = {}; + + UI.support.transition = (function() { + var transitionEnd = (function() { + // https://developer.mozilla.org/en-US/docs/Web/Events/transitionend#Browser_compatibility + var element = doc.body || doc.documentElement; + var transEndEventNames = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + for (var name in transEndEventNames) { + if (element.style[name] !== undefined) { + return transEndEventNames[name]; + } + } + })(); + + return transitionEnd && { + end: transitionEnd + }; + })(); + + UI.support.animation = (function() { + var animationEnd = (function() { + var element = doc.body || doc.documentElement; + var animEndEventNames = { + WebkitAnimation: 'webkitAnimationEnd', + MozAnimation: 'animationend', + OAnimation: 'oAnimationEnd oanimationend', + animation: 'animationend' + }; + + for (var name in animEndEventNames) { + if (element.style[name] !== undefined) { + return animEndEventNames[name]; + } + } + })(); + + return animationEnd && { + end: animationEnd + }; + })(); + + /* jshint -W069 */ + UI.support.touch = ( + ('ontouchstart' in window && + navigator.userAgent.toLowerCase().match(/mobile|tablet/)) || + (window.DocumentTouch && document instanceof window.DocumentTouch) || + (window.navigator['msPointerEnabled'] && + window.navigator['msMaxTouchPoints'] > 0) || //IE 10 + (window.navigator['pointerEnabled'] && + window.navigator['maxTouchPoints'] > 0) || //IE >=11 + false); + + // https://developer.mozilla.org/zh-CN/docs/DOM/MutationObserver + UI.support.mutationobserver = (window.MutationObserver || + window.WebKitMutationObserver || null); + + // https://github.com/Modernizr/Modernizr/blob/924c7611c170ef2dc502582e5079507aff61e388/feature-detects/forms/validation.js#L20 + UI.support.formValidation = (typeof document.createElement('form').checkValidity === + 'function'); + + UI.utils = {}; + + /** + * Debounce function + * @param {function} func Function to be debounced + * @param {number} wait Function execution threshold in milliseconds + * @param {bool} immediate Whether the function should be called at + * the beginning of the delay instead of the + * end. Default is false. + * @desc Executes a function when it stops being invoked for n seconds + * @via _.debounce() http://underscorejs.org + */ + UI.utils.debounce = function(func, wait, immediate) { + var timeout; + return function() { + var context = this; + var args = arguments; + var later = function() { + timeout = null; + if (!immediate) { + func.apply(context, args); + } + }; + var callNow = immediate && !timeout; + + clearTimeout(timeout); + timeout = setTimeout(later, wait); + + if (callNow) { + func.apply(context, args); + } + }; + }; + + UI.utils.isInView = function(element, options) { + var $element = $(element); + var visible = !!($element.width() || $element.height()) && + $element.css('display') !== 'none'; + + if (!visible) { + return false; + } + + var windowLeft = $win.scrollLeft(); + var windowTop = $win.scrollTop(); + var offset = $element.offset(); + var left = offset.left; + var top = offset.top; + + options = $.extend({ + topOffset: 0, + leftOffset: 0 + }, options); + + return (top + $element.height() >= windowTop && + top - options.topOffset <= windowTop + $win.height() && + left + $element.width() >= windowLeft && + left - options.leftOffset <= windowLeft + $win.width()); + }; + + /* jshint -W054 */ + UI.utils.parseOptions = UI.utils.options = function(string) { + if ($.isPlainObject(string)) { + return string; + } + + var start = (string ? string.indexOf('{') : -1); + var options = {}; + + if (start != -1) { + try { + options = (new Function('', + 'var json = ' + string.substr(start) + + '; return JSON.parse(JSON.stringify(json));'))(); + } catch (e) {} + } + + return options; + }; + + /* jshint +W054 */ + + UI.utils.generateGUID = function(namespace) { + var uid = namespace + '-' || 'am-'; + + do { + uid += Math.random().toString(36).substring(2, 7); + } while (document.getElementById(uid)); + + return uid; + }; + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function(duration) { + var called = false; + var $el = this; + + $(this).one(UI.support.transition.end, function() { + called = true; + }); + + var callback = function() { + if (!called) { + $($el).trigger(UI.support.transition.end); + } + $el.transitionEndTimmer = undefined; + }; + this.transitionEndTimmer = setTimeout(callback, duration); + return this; + }; + + $.fn.redraw = function() { + $(this).each(function() { + /* jshint unused:false */ + var redraw = this.offsetHeight; + }); + return this; + }; + + /* jshint unused:true */ + + $.fn.transitionEnd = function(callback) { + var endEvent = UI.support.transition.end; + var dom = this; + + function fireCallBack(e) { + callback.call(this, e); + endEvent && dom.off(endEvent, fireCallBack); + } + + if (callback && endEvent) { + dom.on(endEvent, fireCallBack); + } + + return this; + }; + + $.fn.removeClassRegEx = function() { + return this.each(function(regex) { + var classes = $(this).attr('class'); + + if (!classes || !regex) { + return false; + } + + var classArray = []; + classes = classes.split(' '); + + for (var i = 0, len = classes.length; i < len; i++) { + if (!classes[i].match(regex)) { + classArray.push(classes[i]); + } + } + + $(this).attr('class', classArray.join(' ')); + }); + }; + + // + $.fn.alterClass = function(removals, additions) { + var self = this; + + if (removals.indexOf('*') === -1) { + // Use native jQuery methods if there is no wildcard matching + self.removeClass(removals); + return !additions ? self : self.addClass(additions); + } + + var classPattern = new RegExp('\\s' + + removals.replace(/\*/g, '[A-Za-z0-9-_]+').split(' ').join( + '\\s|\\s') + + '\\s', 'g'); + + self.each(function(i, it) { + var cn = ' ' + it.className + ' '; + while (classPattern.test(cn)) { + cn = cn.replace(classPattern, ' '); + } + it.className = $.trim(cn); + }); + + return !additions ? self : self.addClass(additions); + }; + + // handle multiple browsers for requestAnimationFrame() + // http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ + // https://github.com/gnarf/jquery-requestAnimationFrame + UI.utils.rAF = (function() { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function(callback) { + return window.setTimeout(callback, 1000 / 60); // shoot for 60 fps + }; + })(); + + // handle multiple browsers for cancelAnimationFrame() + UI.utils.cancelAF = (function() { + return window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + function(id) { + window.clearTimeout(id); + }; + })(); + + // via http://davidwalsh.name/detect-scrollbar-width + UI.utils.measureScrollbar = function() { + if (document.body.clientWidth >= window.innerWidth) { + return 0; + } + + // if ($html.width() >= window.innerWidth) return; + // var scrollbarWidth = window.innerWidth - $html.width(); + var $measure = $('
'); + + $(document.body).append($measure); + + var scrollbarWidth = $measure[0].offsetWidth - $measure[0].clientWidth; + + $measure.remove(); + + return scrollbarWidth; + }; + + UI.utils.imageLoader = function($image, callback) { + function loaded() { + callback($image[0]); + } + + function bindLoad() { + this.one('load', loaded); + if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { + var src = this.attr('src'); + var param = src.match(/\?/) ? '&' : '?'; + + param += 'random=' + (new Date()).getTime(); + this.attr('src', src + param); + } + } + + if (!$image.attr('src')) { + loaded(); + return; + } + + if ($image[0].complete || $image[0].readyState === 4) { + loaded(); + } else { + bindLoad.call($image); + } + }; + + /** + * https://github.com/cho45/micro-template.js + * (c) cho45 http://cho45.github.com/mit-license + */ + /* jshint -W109 */ + UI.template = function(id, data) { + var me = UI.template; + + if (!me.cache[id]) { + me.cache[id] = (function() { + var name = id; + var string = /^[\w\-]+$/.test(id) ? + me.get(id) : (name = 'template(string)', id); // no warnings + + var line = 1; + var body = ('try { ' + (me.variable ? + 'var ' + me.variable + ' = this.stash;' : + 'with (this.stash) { ') + + "this.ret += '" + + string.replace(/<%/g, '\x11').replace(/%>/g, '\x13'). // if you want other tag, just edit this line + replace(/'(?![^\x11\x13]+?\x13)/g, '\\x27').replace( + /^\s*|\s*$/g, '').replace(/\n/g, function() { + return "';\nthis.line = " + (++line) + + "; this.ret += '\\n"; + }).replace(/\x11-(.+?)\x13/g, "' + ($1) + '").replace( + /\x11=(.+?)\x13/g, "' + this.escapeHTML($1) + '").replace( + /\x11(.+?)\x13/g, "'; $1; this.ret += '") + + "'; " + (me.variable ? "" : "}") + "return this.ret;" + + "} catch (e) { throw 'TemplateError: ' + e + ' (on " + + name + + "' + ' line ' + this.line + ')'; } " + + "//@ sourceURL=" + name + "\n" // source map + ).replace(/this\.ret \+= '';/g, ''); + /* jshint -W054 */ + var func = new Function(body); + var map = { + '&': '&', + '<': '<', + '>': '>', + '\x22': '"', + '\x27': ''' + }; + var escapeHTML = function(string) { + return ('' + string).replace(/[&<>\'\"]/g, function(_) { + return map[_]; + }); + }; + + return function(stash) { + return func.call(me.context = { + escapeHTML: escapeHTML, + line: 1, + ret: '', + stash: stash + }); + }; + })(); + } + + return data ? me.cache[id](data) : me.cache[id]; + }; + /* jshint +W109 */ + /* jshint +W054 */ + + UI.template.cache = {}; + + UI.template.get = function(id) { + if (id) { + var element = document.getElementById(id); + return element && element.innerHTML || ''; + } + }; + + // Dom mutation watchers + UI.DOMWatchers = []; + UI.DOMReady = false; + UI.ready = function(callback) { + UI.DOMWatchers.push(callback); + if (UI.DOMReady) { + console.log('ready call'); + callback(document); + } + }; + + UI.DOMObserve = function(elements, options, callback) { + var Observer = UI.support.mutationobserver; + if (!Observer) { + return; + } + + options = $.isPlainObject(options) ? + options : { + childList: true, + subtree: true + }; + + callback = typeof callback === 'function' && callback || function() {}; + + $(elements).each(function() { + var element = this; + var $element = $(element); + + if ($element.data('am.observer')) { + return; + } + + try { + var observer = new Observer(UI.utils.debounce( + function(mutations, instance) { + callback.call(element, mutations, instance); + // trigger this event manually if MutationObserver not supported + $element.trigger('changed.dom.amui'); + }, 50)); + + observer.observe(element, options); + + $element.data('am.observer', observer); + } catch (e) {} + }); + }; + + $.fn.DOMObserve = function(options, callback) { + return this.each(function() { + UI.DOMObserve(this, options, callback); + }); + }; + + // Attach FastClick on touch devices + if (UI.support.touch) { + $html.addClass('am-touch'); + + $(function() { + var FastClick = $.AMUI.FastClick; + FastClick && FastClick.attach(document.body); + }); + } + + $(document).on('changed.dom.amui', function(e) { + var element = e.target; + + // TODO: just call changed element's watcher + // every watcher callback should have a key + // use like this:
+ // get keys via $(element).data('amObserve') + // call functions store with these keys + $.each(UI.DOMWatchers, function(i, watcher) { + watcher(element); + }); + }); + + $(function() { + var $body = $('body'); + + UI.DOMReady = true; + + // Run default init + $.each(UI.DOMWatchers, function(i, watcher) { + watcher(document); + }); + + // watches DOM + UI.DOMObserve('[data-am-observe]'); + + $html.removeClass('no-js').addClass('js'); + + UI.support.animation && $html.addClass('cssanimations'); + + // iOS standalone mode + if (window.navigator.standalone) { + $html.addClass('am-standalone'); + } + + $('.am-topbar-fixed-top').length && + $body.addClass('am-with-topbar-fixed-top'); + + $('.am-topbar-fixed-bottom').length && + $body.addClass('am-with-topbar-fixed-bottom'); + + // Remove responsive classes in .am-layout + var $layout = $('.am-layout'); + $layout.find('[class*="md-block-grid"]').alterClass( + 'md-block-grid-*'); + $layout.find('[class*="lg-block-grid"]').alterClass( + 'lg-block-grid'); + + // widgets not in .am-layout + $('[data-am-widget]').each(function() { + var $widget = $(this); + // console.log($widget.parents('.am-layout').length) + if ($widget.parents('.am-layout').length === 0) { + $widget.addClass('am-no-layout'); + } + }); + }); + + $.AMUI = UI; + + module.exports = UI; + + }).call(this, typeof global !== "undefined" ? global : typeof self !== + "undefined" ? self : typeof window !== "undefined" ? window : {}) + }, {} + ], + 5: [ + function(require, module, exports) { + 'use strict'; + + module.exports = { + VERSION: '2.0.0' + }; + + }, {} + ], + 6: [ + function(require, module, exports) { + (function(global) { + 'use strict'; + + var $ = (typeof window !== "undefined" ? window.jQuery : typeof global !== + "undefined" ? global.jQuery : null); + require('./core'); + + function duoshuoInit() { + var $dsThread = $('.ds-thread'); + var dsShortName = $dsThread.parent('[data-am-widget="duoshuo"]'). + attr('data-ds-short-name'); + var dsSrc = (document.location.protocol == 'https:' ? 'https:' : + 'http:') + + '//static.duoshuo.com/embed.js'; + + if (!$dsThread.length || !dsShortName) { + return; + } + + window.duoshuoQuery = { + short_name: dsShortName + }; + + // 已经有多说脚本 + if ($('script[src="' + dsSrc + '"]').length) { + return; + } + + var $dsJS = $(' + @@ -68,8 +69,7 @@

© 2014 AllMobilize, Inc. Licensed under MIT license.

--> - - + diff --git a/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp index 7b77dc8..242f62c 100644 --- a/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp +++ b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp @@ -13,10 +13,11 @@
-
- 新消息 +

新消息

+
- +
+ +
+

后续操作

+
+ + + +
+
+ +
+
+ +
+ + + +
+

提醒方式

+
+ + + +
+

@@ -115,5 +93,6 @@
+ \ No newline at end of file diff --git a/src/main/webapp/res/module/pushMessage/new.js b/src/main/webapp/res/module/pushMessage/new.js new file mode 100644 index 0000000..8640c91 --- /dev/null +++ b/src/main/webapp/res/module/pushMessage/new.js @@ -0,0 +1,15 @@ +$(function(){ + //表单订交 + $('#pushMessage_new').validator({ + submit:function(e){ + var _form = $('#pushMessage_new'); + if(this.isFormValid()){ + $.post(_form.attr("url"),_form.serialize(),function(data){ + console.log(data) + },"json") + } + return false; + } + }) + //后续操作切换 +}) \ No newline at end of file From 0a82ce3266d0db0f4ebb6337f4c8b9195c018be7 Mon Sep 17 00:00:00 2001 From: flatychen Date: Fri, 23 Jan 2015 17:31:08 +0800 Subject: [PATCH 05/21] =?UTF-8?q?=E4=BC=98=E5=8C=96web=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pom.xml b/pom.xml index 3f9c43f..48667ef 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,7 @@ 3.2.8.RELEASE + 1.9.8 2.3.20 @@ -130,6 +131,13 @@ 17.0 + + + org.codehaus.jackson + jackson-mapper-asl + ${org.codehaus.jackson-version} + + com.alibaba fastjson From 54deba54533b85eceddc2c42f7488e6f50210e7d Mon Sep 17 00:00:00 2001 From: flatychen Date: Mon, 26 Jan 2015 17:34:41 +0800 Subject: [PATCH 06/21] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/codec/push/PushFrameEncoder.java | 1 - .../jdbcWrapper/JdbcTemplateWrapper.java | 228 ------------------ .../pageSetter/MysqlPageSqlSetter.java | 19 -- .../pageSetter/OraclePageSqlSetter.java | 18 -- .../repository/pageSetter/PageSqlSetter.java | 10 - .../socketClient/ClientRepository.java | 22 -- .../socketClient/MysqlClientRepository.java | 44 ---- .../java/cn/flaty/views/BaseDataWrapper.java | 98 -------- .../java/cn/flaty/views/BaseInterceptor.java | 33 --- .../cn/flaty/views/DefaultListenerProxy.java | 43 ---- src/main/java/cn/flaty/views/PushMessage.java | 40 --- .../cn/flaty/views/PushMessageController.java | 39 --- .../java/cn/flaty/views/WebConstants.java | 51 ---- .../webapp/WEB-INF/jsp/pushMessage/new.jsp | 14 +- src/main/webapp/res/module/pushMessage/new.js | 4 +- 15 files changed, 10 insertions(+), 654 deletions(-) delete mode 100644 src/main/java/cn/flaty/repository/jdbcWrapper/JdbcTemplateWrapper.java delete mode 100644 src/main/java/cn/flaty/repository/pageSetter/MysqlPageSqlSetter.java delete mode 100644 src/main/java/cn/flaty/repository/pageSetter/OraclePageSqlSetter.java delete mode 100644 src/main/java/cn/flaty/repository/pageSetter/PageSqlSetter.java delete mode 100644 src/main/java/cn/flaty/repository/socketClient/ClientRepository.java delete mode 100644 src/main/java/cn/flaty/repository/socketClient/MysqlClientRepository.java delete mode 100644 src/main/java/cn/flaty/views/BaseDataWrapper.java delete mode 100644 src/main/java/cn/flaty/views/BaseInterceptor.java delete mode 100644 src/main/java/cn/flaty/views/DefaultListenerProxy.java delete mode 100644 src/main/java/cn/flaty/views/PushMessage.java delete mode 100644 src/main/java/cn/flaty/views/PushMessageController.java delete mode 100644 src/main/java/cn/flaty/views/WebConstants.java diff --git a/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameEncoder.java b/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameEncoder.java index 8443110..1fb0c13 100644 --- a/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameEncoder.java +++ b/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameEncoder.java @@ -21,7 +21,6 @@ public PushFrameEncoder(FrameHead frameHead) { protected void encode(ChannelHandlerContext ctx, String msg, ByteBuf out) throws Exception { SimplePushOutFrame frame = new SimplePushOutFrame(frameHead, msg.getBytes()); - System.out.println(msg); out.writeBytes(frame.getHead()); out.writeBytes(frame.getBody()); } diff --git a/src/main/java/cn/flaty/repository/jdbcWrapper/JdbcTemplateWrapper.java b/src/main/java/cn/flaty/repository/jdbcWrapper/JdbcTemplateWrapper.java deleted file mode 100644 index 102533e..0000000 --- a/src/main/java/cn/flaty/repository/jdbcWrapper/JdbcTemplateWrapper.java +++ /dev/null @@ -1,228 +0,0 @@ -package cn.flaty.repository.jdbcWrapper; - - -import java.text.MessageFormat; -import java.util.Arrays; -import java.util.List; - -import org.apache.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.DataAccessException; -import org.springframework.jdbc.core.BeanPropertyRowMapper; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Component; - -import cn.flaty.NettyPush.base.PageBean; -import cn.flaty.NettyPush.base.QueryPageObject; -import cn.flaty.repository.pageSetter.PageSqlSetter; - - -/** - * Spring jdbcTemplate 包装器类,提供基本SQL操作 - * - * @author flatychen - * - */ - -@Component -public class JdbcTemplateWrapper { - - private static Logger log = Logger.getLogger(JdbcTemplateWrapper.class); - - @Autowired - private JdbcTemplate jdbcTemplate; - - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } - - public void setPageSqlSetter(PageSqlSetter pageSqlSetter) { - this.pageSqlSetter = pageSqlSetter; - } - - private PageSqlSetter pageSqlSetter; - - private final List query(String sql, Class clazz, Object args[]) { - List l = null; - try { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>query'{' sql:{1}, args:{3} '}'", 1, sql, 3, - Arrays.toString(args))); - } - l = this.jdbcTemplate.query(sql, args, - new BeanPropertyRowMapper(clazz)); - } catch (DataAccessException e) { - e.printStackTrace(); - } - return l; - - } - - /** - * class得到对象 - * - * @param sql - * @param clazz - * @param args - * @return - * @author flatychen - * @date 2014-1-10 - */ - public final T queryForBean(String sql, Class clazz, Object args[]) { - List l = this.query(sql, clazz, args); - if ((l != null) && (l.size() == 1)) { - return l.get(0); - } else { - - } - return null; - } - - /** - * class得到对象list - * - * @param sql - * @param clazz - * @param args - * @return - * @author flatychen - * @date 2014-1-10 - */ - public final List queryForBeanList(String sql, Class clazz, - Object args[]) { - return this.query(sql, clazz, args); - - } - - /** - * 返回 long --> count(1) - * - * @param sql - * @param args - * @return - * @author flatychen - * @date 2014-1-10 - */ - public final long queryForLong(String sql, Object args[]) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>queryForLong[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(args))); - } - return this.jdbcTemplate.queryForLong(sql, args); - - } - - /** - * 返回 int -->count(1) - * - * @param sql - * @param args - * @return - * @author flatychen - * @date 2014-1-10 - */ - public final int queryForInt(String sql, Object args[]) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>queryForInt[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(args))); - } - return this.jdbcTemplate.queryForInt(sql, args); - - } - - - /** - * 返回 object eg: Integer,Object - * - * @param sql - * @param args - * @return - * @author flatychen - * @param - * @date 2014-1-10 - */ - public final T queryForObject(String sql, Class clazz,Object args[]) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>queryForObject[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(args))); - } - return this.jdbcTemplate.queryForObject(sql, clazz, args); - - } - - /** - * - * @author flatychen - * @param sql - * @param args - * @return - * @date 2014-1-12 - */ - public int saveORUpdate(String sql, Object args[]) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>saveORUpdate[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(args))); - } - int num = 0; - try { - num = jdbcTemplate.update(sql, args); - } catch (DataAccessException e) { - e.printStackTrace(); - throw e; - } - return num; - } - - /** - * 批量更新 - * - * @author flatychen - * @param sql - * @param listArgs - * @return - */ - public int batchUpdate(String sql, List listArgs) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>batchInsert[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(listArgs.toArray()))); - } - int num[] = null; - try { - num = jdbcTemplate.batchUpdate(sql, listArgs); - } catch (DataAccessException e) { - e.printStackTrace(); - throw e; - } - return num.length; - } - - /** - * 分页方法 - * @author flatychen - * @param pageSize - * @param toPage - * @param sql - * @param clazz - * @param args - * @return - */ - public PageBean queryForPage(QueryPageObject query, String sql, - Class clazz, Object[] args) { - String countSql = pageSqlSetter.getCountSql(sql); - String querySql = pageSqlSetter.getQuerySql(sql); - - int totalRow = this.queryForInt(countSql, args); - List list = this.queryForBeanList(querySql, clazz, args); - - PageBean page = new PageBean(query.getPageNo(),query.getPageSize(),totalRow,list); - return page; - - } - -} diff --git a/src/main/java/cn/flaty/repository/pageSetter/MysqlPageSqlSetter.java b/src/main/java/cn/flaty/repository/pageSetter/MysqlPageSqlSetter.java deleted file mode 100644 index b30c071..0000000 --- a/src/main/java/cn/flaty/repository/pageSetter/MysqlPageSqlSetter.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.flaty.repository.pageSetter; - - - -public class MysqlPageSqlSetter implements PageSqlSetter { - - @Override - public String getCountSql(String sql) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getQuerySql(String sql) { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/src/main/java/cn/flaty/repository/pageSetter/OraclePageSqlSetter.java b/src/main/java/cn/flaty/repository/pageSetter/OraclePageSqlSetter.java deleted file mode 100644 index 7b2b9b8..0000000 --- a/src/main/java/cn/flaty/repository/pageSetter/OraclePageSqlSetter.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.flaty.repository.pageSetter; - - -public class OraclePageSqlSetter implements PageSqlSetter { - - @Override - public String getCountSql(String sql) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getQuerySql(String sql) { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/src/main/java/cn/flaty/repository/pageSetter/PageSqlSetter.java b/src/main/java/cn/flaty/repository/pageSetter/PageSqlSetter.java deleted file mode 100644 index ff2e537..0000000 --- a/src/main/java/cn/flaty/repository/pageSetter/PageSqlSetter.java +++ /dev/null @@ -1,10 +0,0 @@ -package cn.flaty.repository.pageSetter; - -public interface PageSqlSetter { - - public String getCountSql(String sql); - - - public String getQuerySql(String sql); - -} diff --git a/src/main/java/cn/flaty/repository/socketClient/ClientRepository.java b/src/main/java/cn/flaty/repository/socketClient/ClientRepository.java deleted file mode 100644 index 1183fc8..0000000 --- a/src/main/java/cn/flaty/repository/socketClient/ClientRepository.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.flaty.repository.socketClient; - -import java.util.List; - -import org.apache.commons.lang.time.DateUtils; - -import cn.flaty.NettyPush.model.ClientInfo; - -public interface ClientRepository { - - @SuppressWarnings("deprecation") - public static long second_30 = DateUtils.MILLIS_IN_SECOND * 30; - - public boolean insertClient(ClientInfo c); - - public List queryClients(ClientInfo c); - - public boolean updateClient(ClientInfo c); - - public boolean delExpireClient(); - -} diff --git a/src/main/java/cn/flaty/repository/socketClient/MysqlClientRepository.java b/src/main/java/cn/flaty/repository/socketClient/MysqlClientRepository.java deleted file mode 100644 index 70e5440..0000000 --- a/src/main/java/cn/flaty/repository/socketClient/MysqlClientRepository.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.flaty.repository.socketClient; - -import java.util.Date; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Repository; - -import cn.flaty.NettyPush.model.ClientInfo; -import cn.flaty.repository.jdbcWrapper.JdbcTemplateWrapper; - -@Repository -public class MysqlClientRepository implements ClientRepository { - - @Autowired - private JdbcTemplateWrapper jdbc; - - @Override - public boolean insertClient(ClientInfo c) { - String sql = " insert into tb_client(cid,updateTime) values(?,?)"; - return jdbc.saveORUpdate(sql, new Object[] { c.getCid(), new Date().getTime() }) == 1; - } - - @Override - public List queryClients(ClientInfo c) { - String sql = " select cid,updateTime from tb_client"; - return jdbc.queryForBeanList(sql, ClientInfo.class, null); - } - - @Override - public boolean delExpireClient() { - Date now = new Date(); - Date d = new Date(now.getTime() - ClientRepository.second_30); - String sql = " delete from tb_client where updateTime <= ? "; - return jdbc.saveORUpdate(sql, new Object[] { d.getTime() }) >= 1; - } - - @Override - public boolean updateClient(ClientInfo c) { - String sql = " update tb_client set updateTime = ? where cid = ?"; - return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime(), c.getCid() }) == 1; - } - -} diff --git a/src/main/java/cn/flaty/views/BaseDataWrapper.java b/src/main/java/cn/flaty/views/BaseDataWrapper.java deleted file mode 100644 index 67f8791..0000000 --- a/src/main/java/cn/flaty/views/BaseDataWrapper.java +++ /dev/null @@ -1,98 +0,0 @@ -package cn.flaty.views; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang.StringUtils; - - -/** - * 基础数据包装器 - * - * @author flatychen - * - */ -public class BaseDataWrapper { - - /** - * 调用是否成功 - */ - private boolean success; - - /** - * 调用返回消息,如为成功可为空 - */ - private String message; - - - /** - * 调用返回数据 - */ - private Map data; - - public Map getData() { - return data; - } - - - public void setData(Map data) { - this.data = data; - } - - /** - * 初始化数据包装器大小 - * @author flatychen - * @date 2014-7-11 - * @param mapSize - * @version - */ - public BaseDataWrapper buildWrapper(int mapSize){ - if(this.data != null){ - throw new IllegalArgumentException("----> map 重复初始化! "); - } - this.data = new HashMap(mapSize); - return this; - } - - - /** - * 初始化数据包装器 - * @author flatychen - * @date 2014-7-11 - * @param mapSize - * @version - */ - public BaseDataWrapper buildWrapper(){ - return this.buildWrapper(5); - } - - public boolean isSuccess() { - return success; - } - - - public void setSuccess(boolean success) { - this.success = success; - } - - public String getMessage() { - // 默认添加message - if( StringUtils.isBlank(message)){ - if(this.success){ - this.message = "成功!"; - }else{ - this.message = "失败!"; - } - } - return message; - } - - - public void setMessage(String message) { - this.message = message; - } - - - - -} \ No newline at end of file diff --git a/src/main/java/cn/flaty/views/BaseInterceptor.java b/src/main/java/cn/flaty/views/BaseInterceptor.java deleted file mode 100644 index c4d04fc..0000000 --- a/src/main/java/cn/flaty/views/BaseInterceptor.java +++ /dev/null @@ -1,33 +0,0 @@ -package cn.flaty.views; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.stereotype.Controller; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; - -@Controller -public class BaseInterceptor extends HandlerInterceptorAdapter { - - @Override - public boolean preHandle(HttpServletRequest request, - HttpServletResponse response, Object handler) throws Exception { - this.addBaseContext(request); // 添加web上下文路径 - return true; - } - - private void addBaseContext(HttpServletRequest request) { - String base = request.getContextPath(); - String servletPath = request.getServletPath(); - request.setAttribute(WebConstants.BASE, request.getScheme() + "://" - + request.getServerName() + ":" + request.getServerPort() - + base); - request.setAttribute(WebConstants.WEBAPP_PATH, - request.getScheme() + "://" + request.getServerName() + ":" - + request.getServerPort()); - request.setAttribute(WebConstants.CURRENT_PATH, - request.getAttribute(WebConstants.BASE) + servletPath); - - } - -} diff --git a/src/main/java/cn/flaty/views/DefaultListenerProxy.java b/src/main/java/cn/flaty/views/DefaultListenerProxy.java deleted file mode 100644 index 1a0c4ae..0000000 --- a/src/main/java/cn/flaty/views/DefaultListenerProxy.java +++ /dev/null @@ -1,43 +0,0 @@ -package cn.flaty.views; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationListener; -import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.core.task.TaskExecutor; -import org.springframework.stereotype.Component; - -import cn.flaty.NettyPush.server.Listener; -import cn.flaty.NettyPush.utils.beanFactoryUtils; - -@Component -public class DefaultListenerProxy implements ApplicationListener{ - - @Autowired - private TaskExecutor exe; - - @Autowired - private Listener listener; - - @Override - public void onApplicationEvent(ContextRefreshedEvent event) { - ApplicationContext context= event.getApplicationContext(); - // 父容器启动 - if(context.getParent() == null){ - beanFactoryUtils.setApplicationContext(context); - exe.execute(new Runnable() { - @Override - public void run() { - listener.start(); - } - });; - } - - } - - - - - - -} diff --git a/src/main/java/cn/flaty/views/PushMessage.java b/src/main/java/cn/flaty/views/PushMessage.java deleted file mode 100644 index 1286df2..0000000 --- a/src/main/java/cn/flaty/views/PushMessage.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.flaty.views; - -import org.hibernate.validator.constraints.NotEmpty; - - -public class PushMessage { - - - @NotEmpty - private String title; - - @NotEmpty - private String content; - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - @Override - public String toString() { - return "PushMessage [title=" + title + ", content=" + content + "]"; - } - - - -} diff --git a/src/main/java/cn/flaty/views/PushMessageController.java b/src/main/java/cn/flaty/views/PushMessageController.java deleted file mode 100644 index a138758..0000000 --- a/src/main/java/cn/flaty/views/PushMessageController.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.flaty.views; - -import javax.validation.Valid; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import cn.flaty.NettyPush.services.PushService; -import cn.flaty.NettyPush.utils.FastJsonUtils; - - -@Controller -@RequestMapping("/pushMessage") -public class PushMessageController { - - private static Logger log = LoggerFactory.getLogger(PushMessageController.class); - - @Autowired - private PushService pushService; - - @RequestMapping("/new") - public String news(){ - return "pushMessage/new"; - } - - - - @RequestMapping("/create") - @ResponseBody - public BaseDataWrapper create(@Valid PushMessage msg){ - log.info(msg.toString()); - pushService.sendTest(FastJsonUtils.toJsonString(msg)); - return null; - } -} diff --git a/src/main/java/cn/flaty/views/WebConstants.java b/src/main/java/cn/flaty/views/WebConstants.java deleted file mode 100644 index 19277fa..0000000 --- a/src/main/java/cn/flaty/views/WebConstants.java +++ /dev/null @@ -1,51 +0,0 @@ -package cn.flaty.views; - -/** - * - * WEB常用的常量 - * - * @author flatychen - * - */ -public final class WebConstants { - - /** - * 验证码常量 - */ - public static final String SECURIYT_CODE = "securityCode"; - - /** - * 分页名称 - */ - public static final String PAGEBEANNAME = "pageBean"; - - /** - * token - */ - public static final String TOKENNAME = "token"; - - - /** - * web 上下文环境 - */ - public static final String BASE = "base"; - - - /** - * 当前访问URL - */ - public static final String WEBAPP_PATH = "webapp_path"; - - /** - * 当前访问URL - */ - public static final String CURRENT_PATH = "url"; - - - /** - * 企业用户session常量 - */ - public static final String USER_SESSION = "user_session"; - - -} diff --git a/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp index 242f62c..4c3a786 100644 --- a/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp +++ b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp @@ -28,18 +28,18 @@
+ minlength="1">
+ placeholder="通知内容 " required minlength="2" maxlength="50">
-
@@ -75,18 +75,18 @@

提醒方式


- +

diff --git a/src/main/webapp/res/module/pushMessage/new.js b/src/main/webapp/res/module/pushMessage/new.js index 8640c91..d268d7c 100644 --- a/src/main/webapp/res/module/pushMessage/new.js +++ b/src/main/webapp/res/module/pushMessage/new.js @@ -4,8 +4,10 @@ $(function(){ submit:function(e){ var _form = $('#pushMessage_new'); if(this.isFormValid()){ + _form.find(".submit").attr("disabled",true); $.post(_form.attr("url"),_form.serialize(),function(data){ - console.log(data) + _form.find(".submit").attr("disabled",false); + console.log(data); },"json") } return false; From 2ee20a7bd4b754a6b50a2f2ddb625d5f72164267 Mon Sep 17 00:00:00 2001 From: flatychen Date: Tue, 27 Jan 2015 17:23:35 +0800 Subject: [PATCH 07/21] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 ++++- .../{model => entity}/ClientInfo.java | 2 +- .../{model => entity}/GenericMessage.java | 2 +- .../flaty/NettyPush/entity/PushMessage.java | 50 ++++++++++++++++++ .../services/ClientDispacherService.java | 2 +- .../NettyPush/services/ConnPoolService.java | 2 +- .../flaty/NettyPush/services/PushService.java | 2 +- .../socketClient/ClientRepository.java | 2 +- .../socketClient/MysqlClientRepository.java | 2 +- .../pushAdmin/services/PushServiceProxy.java | 19 +++++-- .../views/push/PushMessageController.java | 2 +- ...hMessage.java => PushMessageFormBean.java} | 51 ++++++++++++------- .../webapp/WEB-INF/jsp/pushMessage/new.jsp | 6 +-- 13 files changed, 119 insertions(+), 35 deletions(-) rename src/main/java/cn/flaty/NettyPush/{model => entity}/ClientInfo.java (81%) rename src/main/java/cn/flaty/NettyPush/{model => entity}/GenericMessage.java (92%) create mode 100644 src/main/java/cn/flaty/NettyPush/entity/PushMessage.java rename src/main/java/cn/flaty/pushAdmin/views/push/{PushMessage.java => PushMessageFormBean.java} (62%) diff --git a/pom.xml b/pom.xml index 48667ef..ac0a89d 100644 --- a/pom.xml +++ b/pom.xml @@ -61,9 +61,17 @@ netty-all 4.0.23.Final
- - + + commons-beanutils + commons-beanutils + 1.9.0 + + + commons-lang + commons-lang + 2.4 + commons-lang commons-lang diff --git a/src/main/java/cn/flaty/NettyPush/model/ClientInfo.java b/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java similarity index 81% rename from src/main/java/cn/flaty/NettyPush/model/ClientInfo.java rename to src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java index 139dde4..7a708a0 100644 --- a/src/main/java/cn/flaty/NettyPush/model/ClientInfo.java +++ b/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java @@ -1,4 +1,4 @@ -package cn.flaty.NettyPush.model; +package cn.flaty.NettyPush.entity; public class ClientInfo { diff --git a/src/main/java/cn/flaty/NettyPush/model/GenericMessage.java b/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java similarity index 92% rename from src/main/java/cn/flaty/NettyPush/model/GenericMessage.java rename to src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java index f3ed9a0..db1c38a 100644 --- a/src/main/java/cn/flaty/NettyPush/model/GenericMessage.java +++ b/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java @@ -1,4 +1,4 @@ -package cn.flaty.NettyPush.model; +package cn.flaty.NettyPush.entity; public class GenericMessage { diff --git a/src/main/java/cn/flaty/NettyPush/entity/PushMessage.java b/src/main/java/cn/flaty/NettyPush/entity/PushMessage.java new file mode 100644 index 0000000..beaa9e8 --- /dev/null +++ b/src/main/java/cn/flaty/NettyPush/entity/PushMessage.java @@ -0,0 +1,50 @@ +package cn.flaty.NettyPush.entity; + + + +public class PushMessage { + + private String title; + + private String content; + + private int flag; + + private String pushActionMixin; + + public String getPushActionMixin() { + return pushActionMixin; + } + + public void setPushActionMixin(String pushActionMixin) { + this.pushActionMixin = pushActionMixin; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public int getFlag() { + return flag; + } + + public void setFlag(int flag) { + this.flag = flag; + } + + + + +} diff --git a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java index 4132c59..0f01d39 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java @@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.model.ClientInfo; +import cn.flaty.NettyPush.entity.ClientInfo; import cn.flaty.NettyPush.server.conn.NettyConnection; /** diff --git a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java index 36dd3b1..6bac592 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java @@ -7,7 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.model.ClientInfo; +import cn.flaty.NettyPush.entity.ClientInfo; import cn.flaty.NettyPush.server.conn.NettyConnection; import cn.flaty.NettyPush.server.conn.NettyConnectionPool; import cn.flaty.NettyPush.utils.AssertUtils; diff --git a/src/main/java/cn/flaty/NettyPush/services/PushService.java b/src/main/java/cn/flaty/NettyPush/services/PushService.java index 213c25e..6064186 100644 --- a/src/main/java/cn/flaty/NettyPush/services/PushService.java +++ b/src/main/java/cn/flaty/NettyPush/services/PushService.java @@ -10,7 +10,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.model.ClientInfo; +import cn.flaty.NettyPush.entity.ClientInfo; import cn.flaty.NettyPush.server.conn.NettyConnection; @Service diff --git a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/ClientRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/socketClient/ClientRepository.java index 3da4893..62610a2 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/ClientRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/socketClient/ClientRepository.java @@ -4,7 +4,7 @@ import org.apache.commons.lang.time.DateUtils; -import cn.flaty.NettyPush.model.ClientInfo; +import cn.flaty.NettyPush.entity.ClientInfo; public interface ClientRepository { diff --git a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java index f33941a..3cfb74b 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java @@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import cn.flaty.NettyPush.model.ClientInfo; +import cn.flaty.NettyPush.entity.ClientInfo; import cn.flaty.pushAdmin.repository.jdbcWrapper.JdbcTemplateWrapper; @Repository diff --git a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java index 877412d..2d62773 100644 --- a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java +++ b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java @@ -6,11 +6,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.model.GenericMessage; +import cn.flaty.NettyPush.entity.GenericMessage; +import cn.flaty.NettyPush.entity.PushMessage; import cn.flaty.NettyPush.services.PushService; import cn.flaty.NettyPush.utils.FastJsonUtils; import cn.flaty.pushAdmin.views.BaseDataWrapper; -import cn.flaty.pushAdmin.views.push.PushMessage; +import cn.flaty.pushAdmin.views.push.PushMessageFormBean; @Service public class PushServiceProxy { @@ -21,8 +22,20 @@ public class PushServiceProxy { private Logger log = LoggerFactory.getLogger(PushServiceProxy.class); - public BaseDataWrapper sendTest(PushMessage pushMessage) { + public BaseDataWrapper sendTest(PushMessageFormBean pushMessageBean) { + + BaseDataWrapper json = new BaseDataWrapper(); + PushMessage pushMessage = null; + try { + pushMessage = pushMessageBean.parsePushMessage(); + } catch (Exception e) { + e.printStackTrace(); + json.setSuccess(false); + return json; + } + + String _msg = FastJsonUtils.toJsonString(pushMessage); if (StringUtils.isEmpty(_msg)) { json.setSuccess(false); diff --git a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java index f06a38b..13d4903 100644 --- a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java +++ b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java @@ -33,7 +33,7 @@ public String news(){ @RequestMapping("/create") @ResponseBody - public BaseDataWrapper create(@Valid PushMessage msg){ + public BaseDataWrapper create(@Valid PushMessageFormBean msg){ log.info(msg.toString()); return pushService.sendTest(msg); } diff --git a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessage.java b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageFormBean.java similarity index 62% rename from src/main/java/cn/flaty/pushAdmin/views/push/PushMessage.java rename to src/main/java/cn/flaty/pushAdmin/views/push/PushMessageFormBean.java index 42a384e..d3c117e 100644 --- a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessage.java +++ b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageFormBean.java @@ -1,31 +1,27 @@ package cn.flaty.pushAdmin.views.push; +import org.apache.commons.beanutils.PropertyUtils; import org.hibernate.validator.constraints.NotEmpty; +import cn.flaty.NettyPush.entity.PushMessage; + +public class PushMessageFormBean { -public class PushMessage { - - @NotEmpty private String title; - + @NotEmpty private String content; @NotEmpty private byte[] flags; - - - private byte pushAction = 1; - - + + private int pushAction ; + private String openUrl; - + private String openActivity; - - - - + public byte[] getFlags() { return flags; } @@ -34,10 +30,15 @@ public void setFlags(byte[] flags) { this.flags = flags; } - public byte getPushAction() { + + public int getPushAction() { return pushAction; } + public void setPushAction(int pushAction) { + this.pushAction = pushAction; + } + public void setPushAction(byte pushAction) { this.pushAction = pushAction; } @@ -66,8 +67,6 @@ public void setTitle(String title) { this.title = title; } - - public String getContent() { return content; } @@ -76,7 +75,21 @@ public void setContent(String content) { this.content = content; } - - + public PushMessage parsePushMessage() { + PushMessage pm = new PushMessage(); + + for (int i = 0; i < this.flags.length; i++) { + pm.setFlag(pm.getFlag() | this.flags[i]); + } + + try { + PropertyUtils.copyProperties(pm, this); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + return pm; + } } diff --git a/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp index 4c3a786..ec87a80 100644 --- a/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp +++ b/src/main/webapp/WEB-INF/jsp/pushMessage/new.jsp @@ -75,13 +75,13 @@

提醒方式


From 41bb0e8f0e9b3a07e8c2e6d29e46ca8514a10bd7 Mon Sep 17 00:00:00 2001 From: flatychen Date: Fri, 30 Jan 2015 10:18:23 +0800 Subject: [PATCH 08/21] =?UTF-8?q?=E5=AE=8C=E5=96=84pom.xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index ac0a89d..a88498f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,10 +7,9 @@ war UTF-8 - UTF-8 - 1.7 - 1.7 - 1.7 + 1.6 + 1.6 + 1.6 1.4 1.7.2 @@ -217,6 +216,23 @@ + + + maven-resources-plugin + 2.5 + + + + maven-clean-plugin + 2.4.1 + + + maven-compiler-plugin + 2.4 + + ${jdk} + + org.eclipse.jetty jetty-maven-plugin From 5da19e83f71472aaadfb9b27a9d598043e33f615 Mon Sep 17 00:00:00 2001 From: flatychen Date: Tue, 3 Feb 2015 17:09:28 +0800 Subject: [PATCH 09/21] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .project | 6 +- pom.xml | 6 +- .../server/codec/push/DeserializeHandler.java | 11 ++-- .../server/codec/push/PushFrameEncoder.java | 6 +- .../NettyPush/server/frame/FrameHead.java | 20 +++--- .../server/frame/SimplePushInFrame.java | 53 ++++++++-------- .../server/frame/SimplePushOutFrame.java | 63 +++++++++++++------ .../cn/flaty/NettyPush/utils/CharsetUtil.java | 14 +++-- 8 files changed, 101 insertions(+), 78 deletions(-) diff --git a/.project b/.project index a4d0a9b..9ed8b61 100644 --- a/.project +++ b/.project @@ -5,11 +5,7 @@ - - org.eclipse.wst.jsdt.core.javascriptValidator - - - + org.eclipse.wst.common.project.facet.core.builder diff --git a/pom.xml b/pom.xml index a88498f..5582d9e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,9 +7,9 @@ war UTF-8 - 1.6 - 1.6 - 1.6 + 1.7 + 1.7 + 1.7 1.4 1.7.2 diff --git a/src/main/java/cn/flaty/NettyPush/server/codec/push/DeserializeHandler.java b/src/main/java/cn/flaty/NettyPush/server/codec/push/DeserializeHandler.java index 1479885..954ecba 100644 --- a/src/main/java/cn/flaty/NettyPush/server/codec/push/DeserializeHandler.java +++ b/src/main/java/cn/flaty/NettyPush/server/codec/push/DeserializeHandler.java @@ -14,9 +14,9 @@ import io.netty.channel.SimpleChannelInboundHandler; public class DeserializeHandler extends SimpleChannelInboundHandler { - + private ClientDispacherService deserialize; - + private Logger log = LoggerFactory.getLogger(DeserializeHandler.class); public DeserializeHandler() { @@ -27,12 +27,11 @@ public DeserializeHandler() { @Override protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception { - log.info(msg.length()+""); - log.info(msg); + log.info("receive msg:{}",msg); NettyConnection conn = new NettyConnection(ctx); deserialize.dispacher(conn, msg); } - - + + } \ No newline at end of file diff --git a/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameEncoder.java b/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameEncoder.java index 1fb0c13..d6eb535 100644 --- a/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameEncoder.java +++ b/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameEncoder.java @@ -9,9 +9,9 @@ import cn.flaty.NettyPush.server.frame.SimplePushOutFrame; public class PushFrameEncoder extends MessageToByteEncoder { - + private FrameHead frameHead; - + public PushFrameEncoder(FrameHead frameHead) { super(); this.frameHead = frameHead; @@ -20,7 +20,7 @@ public PushFrameEncoder(FrameHead frameHead) { @Override protected void encode(ChannelHandlerContext ctx, String msg, ByteBuf out) throws Exception { - SimplePushOutFrame frame = new SimplePushOutFrame(frameHead, msg.getBytes()); + SimplePushOutFrame frame = new SimplePushOutFrame(frameHead, msg); out.writeBytes(frame.getHead()); out.writeBytes(frame.getBody()); } diff --git a/src/main/java/cn/flaty/NettyPush/server/frame/FrameHead.java b/src/main/java/cn/flaty/NettyPush/server/frame/FrameHead.java index c633d5f..da01537 100644 --- a/src/main/java/cn/flaty/NettyPush/server/frame/FrameHead.java +++ b/src/main/java/cn/flaty/NettyPush/server/frame/FrameHead.java @@ -1,19 +1,19 @@ package cn.flaty.NettyPush.server.frame; public interface FrameHead { - + public static enum charset { - - NULL, US_ASCII, UTF_8, GBK, GB18030 - + + NULL, US_ASCII, ISO_8859_1,UTF_8,GBK,GB2312 + } public static enum encype { NULL } - - + + /** * 用于切包的,包长度所占字节数 * @return @@ -26,17 +26,17 @@ public static enum encype { */ int maxLength(); - + /** * 包头部所占字节 * @return */ int headLength(); - + /** * 包长度转换 - * + * * @param b * @return */ @@ -44,7 +44,7 @@ public static enum encype { /** * 包长度转换 - * + * * @param length * @return */ diff --git a/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushInFrame.java b/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushInFrame.java index 5ca9d7c..1367030 100644 --- a/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushInFrame.java +++ b/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushInFrame.java @@ -4,20 +4,19 @@ import cn.flaty.NettyPush.utils.CharsetUtil; /** - * + * * 解码包 * @author flatychen * */ public class SimplePushInFrame { - private FrameHead frameHead; - + private byte[] head; - + private String body; - + public SimplePushInFrame(FrameHead frameHead, byte[] frame) { super(); this.frameHead = frameHead; @@ -25,32 +24,32 @@ public SimplePushInFrame(FrameHead frameHead, byte[] frame) { this.frameHead = frameHead; } - + private void init(byte[] frame) { if( frame.length <= frameHead.byteLength()){ - throw new IllegalArgumentException("----> frame 内容不能为空 "); + throw new IllegalArgumentException(" frame 内容不能为空 "); } - + head = new byte[frameHead.headLength()]; - + System.arraycopy(frame, 0, head, 0, frameHead.headLength()); - + this.setBody(frame,frame.length - frameHead.headLength()); } - - + + private void setBody(byte[] body,int bodyLength) { - + byte _body [] = body; - + this.setCharset(_body,bodyLength); - + } private void setCharset(byte[] _body,int bodyLength) { - int charsetType = head[0]; + int charsetType = head[0]; String s = null; FrameHead.charset c = FrameHead.charset.values()[charsetType]; switch (c) { @@ -63,35 +62,37 @@ private void setCharset(byte[] _body,int bodyLength) { case US_ASCII: s = new String(_body, frameHead.headLength(), bodyLength, CharsetUtil.US_ASCII); break; + case ISO_8859_1: + s = new String(_body, frameHead.headLength(), bodyLength, CharsetUtil.ISO_8859_1); + break; case GBK: s = new String(_body, frameHead.headLength(), bodyLength, CharsetUtil.GBK); break; - case GB18030: - s = new String(_body, frameHead.headLength(), bodyLength,CharsetUtil.GB18030); + case GB2312: + s = new String(_body, frameHead.headLength(), bodyLength,CharsetUtil.GB2312); break; } this.body = s; - + } public byte getEncypeType(){ - AssertUtils.notNull(head, "----> 包头不能为空"); + AssertUtils.notNull(head, " 包头不能为空"); return head[0]; } public byte getCharsetType(){ - AssertUtils.notNull(head, "----> 包头不能为空"); + AssertUtils.notNull(head, " 包头不能为空"); return head[1]; } - - + + public String getBody() { return body; } - - - + + } diff --git a/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushOutFrame.java b/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushOutFrame.java index 21ef5b4..4e2d5c3 100644 --- a/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushOutFrame.java +++ b/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushOutFrame.java @@ -1,8 +1,13 @@ package cn.flaty.NettyPush.server.frame; +import java.nio.charset.Charset; + +import cn.flaty.NettyPush.server.frame.FrameHead.charset; +import cn.flaty.NettyPush.utils.CharsetUtil; + /** * 组装包 - * + * * @author flatychen * */ @@ -10,46 +15,65 @@ public class SimplePushOutFrame { private FrameHead frameHead; - //private byte[] length; + private charset charset; + + private byte[] length; private byte[] head; private byte[] body; - public SimplePushOutFrame(FrameHead frameHead, byte[] body) { + public SimplePushOutFrame(FrameHead frameHead, String body) { super(); - if (body == null || body.length <= 0) { - throw new IllegalArgumentException("---->body不可为空或长度非法"); + if (body == null || body.length() <= 0) { + throw new IllegalArgumentException("body不可为空或长度非法"); } - this.frameHead = frameHead; this.init(body); } - private void init(byte[] body) { - // length = new byte[frameHead.headLength()]; + private void init(String body) { + length = new byte[frameHead.headLength()]; head = new byte[frameHead.headLength()]; + this.body = body.getBytes(); - //this.setLength(body.length); + this.charset = this.setCharset(body); this.setHead(); + this.setLength(this.body.length); - this.setBody(body); } - private void setBody(byte[] body) { - this.body = body; - - } private void setHead() { - head[0] = (byte) FrameHead.charset.UTF_8.ordinal(); + head[0] = (byte) charset.ordinal(); head[1] = (byte) FrameHead.encype.NULL.ordinal(); + + } + + private charset setCharset(String body) { + String charsetName = Charset.defaultCharset().name(); + charset charsetType = null; + if (CharsetUtil.UTF_8.name().equalsIgnoreCase(charsetName)) { + charsetType = FrameHead.charset.UTF_8; + } else if (CharsetUtil.GBK.name().equalsIgnoreCase(charsetName)) { + charsetType = FrameHead.charset.GBK; + } else if (CharsetUtil.GB2312.displayName().equalsIgnoreCase( + charsetName)) { + charsetType = FrameHead.charset.GB2312; + } else if (CharsetUtil.US_ASCII.displayName().equalsIgnoreCase( + charsetName)) { + charsetType = FrameHead.charset.US_ASCII; + } else if (CharsetUtil.ISO_8859_1.displayName().equalsIgnoreCase( + charsetName)) { + charsetType = FrameHead.charset.ISO_8859_1; + } + return charsetType; } - /*private void setLength(int l) { + private void setLength(int l) { this.length = this.frameHead.intToBytes(l); - }*/ + } public byte[] getBody() { return body; @@ -59,8 +83,9 @@ public byte[] getHead() { return head; } - /*public byte[] getLength() { + public byte[] getLength() { return length; - }*/ + } + } diff --git a/src/main/java/cn/flaty/NettyPush/utils/CharsetUtil.java b/src/main/java/cn/flaty/NettyPush/utils/CharsetUtil.java index 4907dee..2efc46f 100644 --- a/src/main/java/cn/flaty/NettyPush/utils/CharsetUtil.java +++ b/src/main/java/cn/flaty/NettyPush/utils/CharsetUtil.java @@ -5,13 +5,15 @@ public final class CharsetUtil { - public static final Charset UTF_8 = Charset.forName("UTF-8"); - - public static final Charset US_ASCII = Charset.forName("US-ASCII"); + public static final Charset UTF_8 = Charset.forName("UTF-8"); - public static final Charset GBK = Charset.forName("gbk"); - - public static final Charset GB18030 = Charset.forName("GB18030"); + public static final Charset GBK = Charset.forName("GBK"); + + public static final Charset ISO_8859_1 = Charset.forName("ISO_8859_1"); + + public static final Charset GB2312 = Charset.forName("GB2312"); + + public static final Charset US_ASCII = Charset.forName("US-ASCII"); } From cf3075ee835fabbe3a1a3428ae40657b957673a5 Mon Sep 17 00:00:00 2001 From: flatychen Date: Wed, 4 Feb 2015 17:35:02 +0800 Subject: [PATCH 10/21] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E4=B8=8Edb=E5=85=B3?= =?UTF-8?q?=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 ++- .../cn/flaty/NettyPush/entity/ClientInfo.java | 33 ++++++-- .../NettyPush/entity/GenericMessage.java | 4 + .../services/ClientDispacherService.java | 76 +++++++++---------- .../NettyPush/services/ConnPoolService.java | 30 ++++---- .../flaty/NettyPush/services/PushService.java | 2 +- .../socketClient/H2ClientRepository.java | 44 +++++++++++ .../socketClient/MysqlClientRepository.java | 6 +- src/main/resources/applicationDataSource.xml | 12 ++- src/main/resources/jdbc.properties | 16 +++- src/main/resources/schema.sql | 3 + src/main/webapp/WEB-INF/decorators.xml | 3 + src/main/webapp/WEB-INF/web.xml | 12 ++- 13 files changed, 174 insertions(+), 78 deletions(-) create mode 100644 src/main/java/cn/flaty/pushAdmin/repository/socketClient/H2ClientRepository.java create mode 100644 src/main/resources/schema.sql diff --git a/pom.xml b/pom.xml index 5582d9e..f17674a 100644 --- a/pom.xml +++ b/pom.xml @@ -186,13 +186,18 @@ 5.0.3.Final
- - + + com.h2database + h2 + 1.4.184 + + + diff --git a/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java b/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java index 7a708a0..76ab9a4 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java +++ b/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java @@ -2,16 +2,35 @@ public class ClientInfo { - - private String cid; - - public String getCid() { - return cid; + private String did; + + private int appVer; + + private int os; + + public String getDid() { + return did; + } + + public void setDid(String did) { + this.did = did; + } + + public int getAppVer() { + return appVer; + } + + public void setAppVer(int appVer) { + this.appVer = appVer; + } + + public int getOs() { + return os; } - public void setCid(String cid) { - this.cid = cid; + public void setOs(int os) { + this.os = os; } diff --git a/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java b/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java index db1c38a..77666eb 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java +++ b/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java @@ -4,8 +4,12 @@ public class GenericMessage { public static int server_push_text = 1024; + public static int server_push_image = 1025; + public static int client_heart = 4096; + public static int client_new = 4097; + private int commond; private String message; diff --git a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java index 0f01d39..bd8e4a5 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java @@ -7,7 +7,9 @@ import org.springframework.stereotype.Service; import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.GenericMessage; import cn.flaty.NettyPush.server.conn.NettyConnection; +import cn.flaty.NettyPush.utils.FastJsonUtils; /** * @author Administrator @@ -16,68 +18,62 @@ @Service public class ClientDispacherService extends ConnPoolService { - private static Logger log = LoggerFactory.getLogger(ClientDispacherService.class); - + private static Logger log = LoggerFactory + .getLogger(ClientDispacherService.class); /** * 客户端报文分发 + * * @param conn * @param msg */ public void dispacher(NettyConnection conn, String msg) { - this.validateAndSave(conn,msg); -// // GenericMessage m = FastJsonUtils.praseToObject(msg, -// GenericMessage.class); -// int commond = m.getCommond(); -// switch (commond) { -// // 新连接 -// case ConnPoolService.CONN_NEW: -// this.validateAndSave(conn,m.getMessage()); -// break; -// // 心跳 -// case ConnPoolService.CONN_KEEP_HEART: -// this.keepAlive(conn, m.getMessage()); -// break; -// default: -// log.warn("----> invalid commond type "); -// break; -// } - + this.validateAndSave(conn, msg); + GenericMessage m = FastJsonUtils.praseToObject(msg, + GenericMessage.class); + int commond = m.getCommond(); + + // 新连接 + if (commond == GenericMessage.client_new) { + this.validateAndSave(conn, m.getMessage()); + + // 心跳 + } else if (commond == GenericMessage.client_heart) { + this.keepAlive(conn, m.getMessage()); + } else { + log.warn("----> invalid commond type "); + } + } /** * 检测新连接,并保存 - * + * * @param conn * @param message */ private void validateAndSave(NettyConnection conn, String message) { - //ClientInfo client = FastJsonUtils.praseToObject(message, ClientInfo.class); - // 保存客户端信息 - //super.saveClientInfo(client); - - // 开启客户端信息自动过期 -// if(!super.isRefleshClient()){ -// super.delexpireClients(); -// } - ClientInfo client = new ClientInfo(); - client.setCid(new Date()+""); - pool.set(client.getCid(), conn); + ClientInfo client = FastJsonUtils.praseToObject(message, + ClientInfo.class); + super.saveClientInfo(client); + if (!super.isRefleshClient()) { + super.delexpireClients(); + } + pool.set(client.getDid(), conn); } - - - /** - * + * * 维持心跳连接 + * * @param conn * @param message */ private void keepAlive(NettyConnection conn, String message) { - //ClientInfo client = FastJsonUtils.praseToObject(message, ClientInfo.class); -// super.resetClientExpire(client); -// pool.touch(client.getCid()); + // ClientInfo client = FastJsonUtils.praseToObject(message, + // ClientInfo.class); + // super.resetClientExpire(client); + // pool.touch(client.getCid()); } - + } diff --git a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java index 6bac592..c8a7e14 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java @@ -17,39 +17,35 @@ @Service public abstract class ConnPoolService { - + private volatile boolean isRefleshClient = false; - + @Autowired private ClientRepository clientInfoRepo; - + @Autowired protected NettyConnectionPool pool; - - protected static final int CONN_NEW = 100; - - protected static final int CONN_KEEP_HEART = 101; protected List queryClientInfo(ClientInfo client){ return clientInfoRepo.queryClients(client); } - - + + protected void saveClientInfo(ClientInfo client){ AssertUtils.notNull(client); - AssertUtils.notNull(client.getCid()); + AssertUtils.notNull(client.getDid()); clientInfoRepo.insertClient(client); } - + protected void resetClientExpire(ClientInfo client){ AssertUtils.notNull(client); - AssertUtils.notNull(client.getCid()); + AssertUtils.notNull(client.getDid()); clientInfoRepo.updateClient(client); } - - + + protected void delexpireClients(){ this.isRefleshClient = true; Timer refleshClientInfo = new Timer("refleshClientInfo"); @@ -66,7 +62,7 @@ public void run() { protected boolean isRefleshClient() { return isRefleshClient; } - - - + + + } diff --git a/src/main/java/cn/flaty/NettyPush/services/PushService.java b/src/main/java/cn/flaty/NettyPush/services/PushService.java index 6064186..46dee13 100644 --- a/src/main/java/cn/flaty/NettyPush/services/PushService.java +++ b/src/main/java/cn/flaty/NettyPush/services/PushService.java @@ -23,7 +23,7 @@ public void send(String msg) { NettyConnection conn = null; for (ClientInfo clientInfo : clients) { try { - conn = pool.get(clientInfo.getCid()); + conn = pool.get(clientInfo.getDid()); } catch (Exception e) { e.printStackTrace(); continue; diff --git a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/H2ClientRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/socketClient/H2ClientRepository.java new file mode 100644 index 0000000..37c6b51 --- /dev/null +++ b/src/main/java/cn/flaty/pushAdmin/repository/socketClient/H2ClientRepository.java @@ -0,0 +1,44 @@ +package cn.flaty.pushAdmin.repository.socketClient; + +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.pushAdmin.repository.jdbcWrapper.JdbcTemplateWrapper; + +@Repository +public class H2ClientRepository implements ClientRepository { + + @Autowired + private JdbcTemplateWrapper jdbc; + + @Override + public boolean insertClient(ClientInfo c) { + String sql = " insert into tb_client(cid,updateTime) values(?,?)"; + return jdbc.saveORUpdate(sql, new Object[] { c.getDid(), new Date().getTime() }) == 1; + } + + @Override + public List queryClients(ClientInfo c) { + String sql = " select cid,updateTime from tb_client"; + return jdbc.queryForBeanList(sql, ClientInfo.class, null); + } + + @Override + public boolean delExpireClient() { + Date now = new Date(); + Date d = new Date(now.getTime() - ClientRepository.second_30); + String sql = " delete from tb_client where updateTime <= ? "; + return jdbc.saveORUpdate(sql, new Object[] { d.getTime() }) >= 1; + } + + @Override + public boolean updateClient(ClientInfo c) { + String sql = " update tb_client set updateTime = ? where cid = ?"; + return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime(), c.getDid() }) == 1; + } + +} diff --git a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java index 3cfb74b..b042757 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java @@ -9,7 +9,7 @@ import cn.flaty.NettyPush.entity.ClientInfo; import cn.flaty.pushAdmin.repository.jdbcWrapper.JdbcTemplateWrapper; -@Repository +//@Repository public class MysqlClientRepository implements ClientRepository { @Autowired @@ -18,7 +18,7 @@ public class MysqlClientRepository implements ClientRepository { @Override public boolean insertClient(ClientInfo c) { String sql = " insert into tb_client(cid,updateTime) values(?,?)"; - return jdbc.saveORUpdate(sql, new Object[] { c.getCid(), new Date().getTime() }) == 1; + return jdbc.saveORUpdate(sql, new Object[] { c.getDid(), new Date().getTime() }) == 1; } @Override @@ -38,7 +38,7 @@ public boolean delExpireClient() { @Override public boolean updateClient(ClientInfo c) { String sql = " update tb_client set updateTime = ? where cid = ?"; - return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime(), c.getCid() }) == 1; + return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime(), c.getDid() }) == 1; } } diff --git a/src/main/resources/applicationDataSource.xml b/src/main/resources/applicationDataSource.xml index 0e823d3..f7ff989 100644 --- a/src/main/resources/applicationDataSource.xml +++ b/src/main/resources/applicationDataSource.xml @@ -1,13 +1,21 @@ + + + + + + + diff --git a/src/main/resources/jdbc.properties b/src/main/resources/jdbc.properties index 4788e5a..795ed6d 100644 --- a/src/main/resources/jdbc.properties +++ b/src/main/resources/jdbc.properties @@ -3,7 +3,15 @@ #mysql -jdbc.driverClassName=com.mysql.jdbc.Driver -jdbc.url=jdbc:mysql://127.0.0.1:3306/pushdb?characterEncoding=UTF-8 -jdbc.username=root -jdbc.password=123456 \ No newline at end of file +#jdbc.driverClassName=com.mysql.jdbc.Driver +#jdbc.url=jdbc:mysql://127.0.0.1:3306/pushdb?characterEncoding=UTF-8 +#jdbc.username=root +#jdbc.password=123456 + + + +#h2 +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:~/test +jdbc.username=sa +jdbc.password= \ No newline at end of file diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql new file mode 100644 index 0000000..8d82122 --- /dev/null +++ b/src/main/resources/schema.sql @@ -0,0 +1,3 @@ +create table tb_client(cid VARCHAR(100),updateTime BIGINT); + + diff --git a/src/main/webapp/WEB-INF/decorators.xml b/src/main/webapp/WEB-INF/decorators.xml index 2ba244e..161abc2 100644 --- a/src/main/webapp/WEB-INF/decorators.xml +++ b/src/main/webapp/WEB-INF/decorators.xml @@ -1,5 +1,8 @@ + + /console/* + /* diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index a21e44a..ec961fc 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -1,7 +1,7 @@ log4jConfigLocation @@ -71,6 +71,16 @@ / + + + H2Console + org.h2.server.web.WebServlet + 2 + + + H2Console + /console/* + From 719e2c7ba01115f9dba7c1838955a92ba2544694 Mon Sep 17 00:00:00 2001 From: flatychen Date: Fri, 6 Feb 2015 12:14:33 +0800 Subject: [PATCH 11/21] =?UTF-8?q?=E6=94=B9=E5=8F=98web=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/flaty/NettyPush/entity/ClientInfo.java | 6 +- .../NettyPush/entity/GenericMessage.java | 8 +- .../repository/ClientRepository.java | 23 ++++ .../repository}/H2ClientRepository.java | 5 +- .../repository}/JdbcTemplateWrapper.java | 113 +++++------------- .../repository}/MysqlClientRepository.java | 5 +- .../NettyPush/server/conn/GuavaConnPool.java | 19 ++- .../services/ClientDispacherService.java | 57 +++++---- .../NettyPush/services/ConnPoolService.java | 12 +- .../pageSetter/MysqlPageSqlSetter.java | 19 --- .../pageSetter/OraclePageSqlSetter.java | 18 --- .../repository/pageSetter/PageSqlSetter.java | 10 -- .../socketClient/ClientRepository.java | 22 ---- 13 files changed, 122 insertions(+), 195 deletions(-) create mode 100644 src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java rename src/main/java/cn/flaty/{pushAdmin/repository/socketClient => NettyPush/repository}/H2ClientRepository.java (86%) rename src/main/java/cn/flaty/{pushAdmin/repository/jdbcWrapper => NettyPush/repository}/JdbcTemplateWrapper.java (55%) rename src/main/java/cn/flaty/{pushAdmin/repository/socketClient => NettyPush/repository}/MysqlClientRepository.java (86%) delete mode 100644 src/main/java/cn/flaty/pushAdmin/repository/pageSetter/MysqlPageSqlSetter.java delete mode 100644 src/main/java/cn/flaty/pushAdmin/repository/pageSetter/OraclePageSqlSetter.java delete mode 100644 src/main/java/cn/flaty/pushAdmin/repository/pageSetter/PageSqlSetter.java delete mode 100644 src/main/java/cn/flaty/pushAdmin/repository/socketClient/ClientRepository.java diff --git a/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java b/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java index 76ab9a4..385f625 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java +++ b/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java @@ -7,7 +7,7 @@ public class ClientInfo { private int appVer; - private int os; + private String os; public String getDid() { return did; @@ -25,11 +25,11 @@ public void setAppVer(int appVer) { this.appVer = appVer; } - public int getOs() { + public String getOs() { return os; } - public void setOs(int os) { + public void setOs(String os) { this.os = os; } diff --git a/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java b/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java index 77666eb..c7c53ed 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java +++ b/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java @@ -8,7 +8,7 @@ public class GenericMessage { public static int client_heart = 4096; - public static int client_new = 4097; + public static int client_connected = 4097; private int commond; @@ -18,6 +18,12 @@ public int getCommond() { return commond; } + public GenericMessage(String message) { + super(); + this.commond = Integer.parseInt(new String(message.substring(0, 4))); + this.message = message.substring(4, message.length()); + } + public void setCommond(int commond) { this.commond = commond; } diff --git a/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java new file mode 100644 index 0000000..598574d --- /dev/null +++ b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java @@ -0,0 +1,23 @@ +package cn.flaty.NettyPush.repository; + +import java.util.List; + +import org.apache.commons.lang.time.DateUtils; + +import cn.flaty.NettyPush.entity.ClientInfo; + +public interface ClientRepository { + + + public static long second_db_live = DateUtils.MILLIS_IN_SECOND * 40; + + + public boolean insertClient(ClientInfo c); + + public List queryClients(ClientInfo c); + + public boolean updateClient(ClientInfo c); + + public boolean delExpireClient(); + +} diff --git a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/H2ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java similarity index 86% rename from src/main/java/cn/flaty/pushAdmin/repository/socketClient/H2ClientRepository.java rename to src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java index 37c6b51..0f22997 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/H2ClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java @@ -1,4 +1,4 @@ -package cn.flaty.pushAdmin.repository.socketClient; +package cn.flaty.NettyPush.repository; import java.util.Date; import java.util.List; @@ -7,7 +7,6 @@ import org.springframework.stereotype.Repository; import cn.flaty.NettyPush.entity.ClientInfo; -import cn.flaty.pushAdmin.repository.jdbcWrapper.JdbcTemplateWrapper; @Repository public class H2ClientRepository implements ClientRepository { @@ -30,7 +29,7 @@ public List queryClients(ClientInfo c) { @Override public boolean delExpireClient() { Date now = new Date(); - Date d = new Date(now.getTime() - ClientRepository.second_30); + Date d = new Date(now.getTime() - ClientRepository.second_db_live); String sql = " delete from tb_client where updateTime <= ? "; return jdbc.saveORUpdate(sql, new Object[] { d.getTime() }) >= 1; } diff --git a/src/main/java/cn/flaty/pushAdmin/repository/jdbcWrapper/JdbcTemplateWrapper.java b/src/main/java/cn/flaty/NettyPush/repository/JdbcTemplateWrapper.java similarity index 55% rename from src/main/java/cn/flaty/pushAdmin/repository/jdbcWrapper/JdbcTemplateWrapper.java rename to src/main/java/cn/flaty/NettyPush/repository/JdbcTemplateWrapper.java index 4bc5398..37f2e64 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/jdbcWrapper/JdbcTemplateWrapper.java +++ b/src/main/java/cn/flaty/NettyPush/repository/JdbcTemplateWrapper.java @@ -1,55 +1,41 @@ -package cn.flaty.pushAdmin.repository.jdbcWrapper; +package cn.flaty.NettyPush.repository; - -import java.text.MessageFormat; import java.util.Arrays; import java.util.List; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; -import cn.flaty.NettyPush.base.PageBean; -import cn.flaty.NettyPush.base.QueryPageObject; -import cn.flaty.pushAdmin.repository.pageSetter.PageSqlSetter; - - /** * Spring jdbcTemplate 包装器类,提供基本SQL操作 - * + * * @author flatychen - * + * */ @Component public class JdbcTemplateWrapper { - private static Logger log = Logger.getLogger(JdbcTemplateWrapper.class); + private static Logger log = LoggerFactory + .getLogger(JdbcTemplateWrapper.class); @Autowired private JdbcTemplate jdbcTemplate; - + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } - public void setPageSqlSetter(PageSqlSetter pageSqlSetter) { - this.pageSqlSetter = pageSqlSetter; - } - - private PageSqlSetter pageSqlSetter; - private final List query(String sql, Class clazz, Object args[]) { List l = null; try { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>query'{' sql:{1}, args:{3} '}'", 1, sql, 3, - Arrays.toString(args))); - } + log.info("====>>query{ sql:{}, args:{} }", sql, + Arrays.toString(args)); l = this.jdbcTemplate.query(sql, args, new BeanPropertyRowMapper(clazz)); } catch (DataAccessException e) { @@ -61,7 +47,7 @@ private final List query(String sql, Class clazz, Object args[]) { /** * class得到对象 - * + * * @param sql * @param clazz * @param args @@ -81,7 +67,7 @@ public final T queryForBean(String sql, Class clazz, Object args[]) { /** * class得到对象list - * + * * @param sql * @param clazz * @param args @@ -97,7 +83,7 @@ public final List queryForBeanList(String sql, Class clazz, /** * 返回 long --> count(1) - * + * * @param sql * @param args * @return @@ -105,18 +91,15 @@ public final List queryForBeanList(String sql, Class clazz, * @date 2014-1-10 */ public final long queryForLong(String sql, Object args[]) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>queryForLong[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(args))); - } + log.info("====>>queryForLong[ sql:[ {} ] , args:[ {} ] ]", sql, + Arrays.toString(args)); return this.jdbcTemplate.queryForLong(sql, args); } /** * 返回 int -->count(1) - * + * * @param sql * @param args * @return @@ -124,19 +107,15 @@ public final long queryForLong(String sql, Object args[]) { * @date 2014-1-10 */ public final int queryForInt(String sql, Object args[]) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>queryForInt[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(args))); - } + log.info("====>>queryForInt[ sql:[ {} ] , args:[ {} ] ]", sql, + Arrays.toString(args)); return this.jdbcTemplate.queryForInt(sql, args); } - - + /** - * 返回 object eg: Integer,Object - * + * 返回 object eg: Integer,Object + * * @param sql * @param args * @return @@ -144,18 +123,15 @@ public final int queryForInt(String sql, Object args[]) { * @param * @date 2014-1-10 */ - public final T queryForObject(String sql, Class clazz,Object args[]) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>queryForObject[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(args))); - } + public final T queryForObject(String sql, Class clazz, Object args[]) { + log.info("====>>queryForObject[ sql:[{}] , args:[{}] ]", sql, + Arrays.toString(args)); return this.jdbcTemplate.queryForObject(sql, clazz, args); } /** - * + * * @author flatychen * @param sql * @param args @@ -163,11 +139,8 @@ public final T queryForObject(String sql, Class clazz,Object args[]) { * @date 2014-1-12 */ public int saveORUpdate(String sql, Object args[]) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>saveORUpdate[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(args))); - } + log.info("====>>saveORUpdate[ sql:[ {} ] , args:[ {} ] ]", sql, + Arrays.toString(args)); int num = 0; try { num = jdbcTemplate.update(sql, args); @@ -180,18 +153,15 @@ public int saveORUpdate(String sql, Object args[]) { /** * 批量更新 - * + * * @author flatychen * @param sql * @param listArgs * @return */ public int batchUpdate(String sql, List listArgs) { - if (log.isInfoEnabled()) { - log.info(MessageFormat.format( - "======>>batchInsert[ sql:[ {1} ] , args:[ {3} ] ]", 1, - sql, 3, Arrays.toString(listArgs.toArray()))); - } + log.info("====>>batchInsert[ sql:[ {} ] , args:[ {} ] ]", sql, + Arrays.toString(listArgs.toArray())); int num[] = null; try { num = jdbcTemplate.batchUpdate(sql, listArgs); @@ -202,27 +172,4 @@ public int batchUpdate(String sql, List listArgs) { return num.length; } - /** - * 分页方法 - * @author flatychen - * @param pageSize - * @param toPage - * @param sql - * @param clazz - * @param args - * @return - */ - public PageBean queryForPage(QueryPageObject query, String sql, - Class clazz, Object[] args) { - String countSql = pageSqlSetter.getCountSql(sql); - String querySql = pageSqlSetter.getQuerySql(sql); - - int totalRow = this.queryForInt(countSql, args); - List list = this.queryForBeanList(querySql, clazz, args); - - PageBean page = new PageBean(query.getPageNo(),query.getPageSize(),totalRow,list); - return page; - - } - } diff --git a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java similarity index 86% rename from src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java rename to src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java index b042757..7e1e7ce 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/MysqlClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java @@ -1,4 +1,4 @@ -package cn.flaty.pushAdmin.repository.socketClient; +package cn.flaty.NettyPush.repository; import java.util.Date; import java.util.List; @@ -7,7 +7,6 @@ import org.springframework.stereotype.Repository; import cn.flaty.NettyPush.entity.ClientInfo; -import cn.flaty.pushAdmin.repository.jdbcWrapper.JdbcTemplateWrapper; //@Repository public class MysqlClientRepository implements ClientRepository { @@ -30,7 +29,7 @@ public List queryClients(ClientInfo c) { @Override public boolean delExpireClient() { Date now = new Date(); - Date d = new Date(now.getTime() - ClientRepository.second_30); + Date d = new Date(now.getTime() - ClientRepository.second_db_live); String sql = " delete from tb_client where updateTime <= ? "; return jdbc.saveORUpdate(sql, new Object[] { d.getTime() }) >= 1; } diff --git a/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java b/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java index 247b671..9437366 100644 --- a/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java +++ b/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java @@ -7,6 +7,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import cn.flaty.NettyPush.repository.ClientRepository; + import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -14,13 +16,12 @@ import com.google.common.cache.RemovalNotification; public class GuavaConnPool implements NettyConnectionPool { - + private Logger log = LoggerFactory.getLogger(GuavaConnPool.class); - private long accessTime = 30000; private LoadingCache cache = CacheBuilder.newBuilder() - .expireAfterAccess(accessTime, TimeUnit.SECONDS).removalListener(new RemovalListener() { + .expireAfterAccess(ClientRepository.second_db_live, TimeUnit.MILLISECONDS).removalListener(new RemovalListener() { @Override public void onRemoval( RemovalNotification notification) { @@ -30,10 +31,16 @@ public void onRemoval( .build(new CacheLoader(){ @Override public NettyConnection load(String key) throws Exception { - log.info("---> loading a not exist key ### "); - return null; + NettyConnection conn = cache.get(key); + if(conn != null){ + log.info("---> refresh key {} ",key); + return conn; + }else{ + log.info("---> loading a not exist key {} ",key); + return null; + } } - + }); @Override diff --git a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java index bd8e4a5..2504c5a 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java @@ -1,7 +1,5 @@ package cn.flaty.NettyPush.services; -import java.util.Date; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -27,19 +25,16 @@ public class ClientDispacherService extends ConnPoolService { * @param conn * @param msg */ - public void dispacher(NettyConnection conn, String msg) { - this.validateAndSave(conn, msg); - GenericMessage m = FastJsonUtils.praseToObject(msg, - GenericMessage.class); + public void dispacher(NettyConnection conn, String data) { + GenericMessage m = new GenericMessage(data); int commond = m.getCommond(); - // 新连接 - if (commond == GenericMessage.client_new) { + if (commond == GenericMessage.client_connected) { this.validateAndSave(conn, m.getMessage()); - // 心跳 + // 心跳 } else if (commond == GenericMessage.client_heart) { - this.keepAlive(conn, m.getMessage()); + this.keepAliveOfDb(m.getMessage()); } else { log.warn("----> invalid commond type "); } @@ -47,33 +42,53 @@ public void dispacher(NettyConnection conn, String msg) { } /** - * 检测新连接,并保存 + * 检测新连接合法性,并保存 * * @param conn * @param message */ private void validateAndSave(NettyConnection conn, String message) { - ClientInfo client = FastJsonUtils.praseToObject(message, - ClientInfo.class); + log.info("new client:{}", message); + ClientInfo client = null; + + try { + client = FastJsonUtils.praseToObject(message, ClientInfo.class); + } catch (Exception e) { + log.error("连接报文不合法: {}",e.getMessage()); + return; + } + + // 保存连接于连接池中和DB中 super.saveClientInfo(client); + pool.set(client.getDid(), conn); + + // 自动刷新DB中数据 + // this.startRefleshClientOfDb(); + } + + private void startRefleshClientOfDb() { if (!super.isRefleshClient()) { - super.delexpireClients(); + super.delExpireClientsOfDb(); } - pool.set(client.getDid(), conn); } /** * - * 维持心跳连接 + * 维持 * * @param conn * @param message */ - private void keepAlive(NettyConnection conn, String message) { - // ClientInfo client = FastJsonUtils.praseToObject(message, - // ClientInfo.class); - // super.resetClientExpire(client); - // pool.touch(client.getCid()); + private void keepAliveOfDb(String message) { + + log.info("heartBeat:{}", message); + ClientInfo client = FastJsonUtils.praseToObject(message, + ClientInfo.class); + + System.out.println(pool.get(client.getDid()));; + + super.resetClientExpire(client); + pool.touch(client.getDid()); } } diff --git a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java index c8a7e14..5ad4785 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java @@ -8,10 +8,10 @@ import org.springframework.stereotype.Service; import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.repository.ClientRepository; import cn.flaty.NettyPush.server.conn.NettyConnection; import cn.flaty.NettyPush.server.conn.NettyConnectionPool; import cn.flaty.NettyPush.utils.AssertUtils; -import cn.flaty.pushAdmin.repository.socketClient.ClientRepository; @@ -19,7 +19,7 @@ public abstract class ConnPoolService { - private volatile boolean isRefleshClient = false; + private volatile boolean isRefleshing = false; @Autowired private ClientRepository clientInfoRepo; @@ -46,21 +46,21 @@ protected void resetClientExpire(ClientInfo client){ } - protected void delexpireClients(){ - this.isRefleshClient = true; + protected void delExpireClientsOfDb(){ + this.isRefleshing = true; Timer refleshClientInfo = new Timer("refleshClientInfo"); refleshClientInfo.schedule(new TimerTask() { @Override public void run() { clientInfoRepo.delExpireClient(); } - }, 1024, ClientRepository.second_30); + }, 1024, ClientRepository.second_db_live); } protected boolean isRefleshClient() { - return isRefleshClient; + return isRefleshing; } diff --git a/src/main/java/cn/flaty/pushAdmin/repository/pageSetter/MysqlPageSqlSetter.java b/src/main/java/cn/flaty/pushAdmin/repository/pageSetter/MysqlPageSqlSetter.java deleted file mode 100644 index ae22b2b..0000000 --- a/src/main/java/cn/flaty/pushAdmin/repository/pageSetter/MysqlPageSqlSetter.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.flaty.pushAdmin.repository.pageSetter; - - - -public class MysqlPageSqlSetter implements PageSqlSetter { - - @Override - public String getCountSql(String sql) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getQuerySql(String sql) { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/src/main/java/cn/flaty/pushAdmin/repository/pageSetter/OraclePageSqlSetter.java b/src/main/java/cn/flaty/pushAdmin/repository/pageSetter/OraclePageSqlSetter.java deleted file mode 100644 index 703b512..0000000 --- a/src/main/java/cn/flaty/pushAdmin/repository/pageSetter/OraclePageSqlSetter.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.flaty.pushAdmin.repository.pageSetter; - - -public class OraclePageSqlSetter implements PageSqlSetter { - - @Override - public String getCountSql(String sql) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getQuerySql(String sql) { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/src/main/java/cn/flaty/pushAdmin/repository/pageSetter/PageSqlSetter.java b/src/main/java/cn/flaty/pushAdmin/repository/pageSetter/PageSqlSetter.java deleted file mode 100644 index 78554de..0000000 --- a/src/main/java/cn/flaty/pushAdmin/repository/pageSetter/PageSqlSetter.java +++ /dev/null @@ -1,10 +0,0 @@ -package cn.flaty.pushAdmin.repository.pageSetter; - -public interface PageSqlSetter { - - public String getCountSql(String sql); - - - public String getQuerySql(String sql); - -} diff --git a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/ClientRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/socketClient/ClientRepository.java deleted file mode 100644 index 62610a2..0000000 --- a/src/main/java/cn/flaty/pushAdmin/repository/socketClient/ClientRepository.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.flaty.pushAdmin.repository.socketClient; - -import java.util.List; - -import org.apache.commons.lang.time.DateUtils; - -import cn.flaty.NettyPush.entity.ClientInfo; - -public interface ClientRepository { - - @SuppressWarnings("deprecation") - public static long second_30 = DateUtils.MILLIS_IN_SECOND * 30; - - public boolean insertClient(ClientInfo c); - - public List queryClients(ClientInfo c); - - public boolean updateClient(ClientInfo c); - - public boolean delExpireClient(); - -} From f83255733df22f52bb526e4d0fa32e0a43301556 Mon Sep 17 00:00:00 2001 From: flatychen Date: Tue, 10 Feb 2015 16:04:10 +0800 Subject: [PATCH 12/21] =?UTF-8?q?2015=E6=98=A5=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 ++++++ .../server/codec/push/PushFrameDecoder.java | 15 ++++++++---- .../message/PushMessageEhcachePool.java | 24 +++++++++++++++++++ .../services/message/PushMessagePool.java | 8 +++++++ 4 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 src/main/java/cn/flaty/pushAdmin/services/message/PushMessageEhcachePool.java create mode 100644 src/main/java/cn/flaty/pushAdmin/services/message/PushMessagePool.java diff --git a/pom.xml b/pom.xml index f17674a..4ebed5a 100644 --- a/pom.xml +++ b/pom.xml @@ -186,6 +186,13 @@ 5.0.3.Final + + net.sf.ehcache + ehcache-core + 2.6.8 + + + com.h2database diff --git a/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameDecoder.java b/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameDecoder.java index dce4b70..399ae66 100644 --- a/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameDecoder.java +++ b/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameDecoder.java @@ -4,6 +4,8 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageDecoder; +import java.net.InetSocketAddress; +import java.text.MessageFormat; import java.util.List; import org.slf4j.Logger; @@ -14,7 +16,7 @@ import cn.flaty.NettyPush.utils.AssertUtils; public class PushFrameDecoder extends ByteToMessageDecoder { - + private Logger log = LoggerFactory.getLogger(PushFrameDecoder.class); private FrameHead frameHead; @@ -28,13 +30,16 @@ public PushFrameDecoder(FrameHead frameHead) { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { - + int bytesHaveRead = in.readableBytes(); - if( bytesHaveRead <= frameHead.byteLength()){ - log.warn("----> 空报文!"); + + if( bytesHaveRead == 0){ + InetSocketAddress isa = (InetSocketAddress) ctx.channel().remoteAddress(); + log.warn("----> {} 关闭 ", isa.toString()); in.release(); return ; } + byte [] bytes = new byte[bytesHaveRead]; in.readBytes(bytes); SimplePushInFrame frame = new SimplePushInFrame(frameHead, bytes); @@ -42,6 +47,6 @@ protected void decode(ChannelHandlerContext ctx, ByteBuf in, out.add(_s); } - + } diff --git a/src/main/java/cn/flaty/pushAdmin/services/message/PushMessageEhcachePool.java b/src/main/java/cn/flaty/pushAdmin/services/message/PushMessageEhcachePool.java new file mode 100644 index 0000000..7e3e56a --- /dev/null +++ b/src/main/java/cn/flaty/pushAdmin/services/message/PushMessageEhcachePool.java @@ -0,0 +1,24 @@ +package cn.flaty.pushAdmin.services.message; + +import net.sf.ehcache.Cache; +import net.sf.ehcache.Element; +import net.sf.ehcache.config.CacheConfiguration; +import net.sf.ehcache.store.MemoryStoreEvictionPolicy; + +import org.springframework.stereotype.Service; + +@Service +public class PushMessageEhcachePool { + + Cache messagePool = null; + + public PushMessageEhcachePool() { + messagePool = new Cache( + new CacheConfiguration("testCache", Integer.MAX_VALUE) + .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU) + .eternal(false) + .timeToLiveSeconds(3600) + .timeToIdleSeconds(3600)); + } + +} diff --git a/src/main/java/cn/flaty/pushAdmin/services/message/PushMessagePool.java b/src/main/java/cn/flaty/pushAdmin/services/message/PushMessagePool.java new file mode 100644 index 0000000..31dc1fc --- /dev/null +++ b/src/main/java/cn/flaty/pushAdmin/services/message/PushMessagePool.java @@ -0,0 +1,8 @@ +package cn.flaty.pushAdmin.services.message; + + +public class PushMessagePool { + + + +} From 5b1d43c67a94b1388adbe805ddab1d1f301ac64e Mon Sep 17 00:00:00 2001 From: flatychen Date: Tue, 10 Mar 2015 16:44:23 +0800 Subject: [PATCH 13/21] =?UTF-8?q?=E4=BD=BF=E7=94=A8H2=E5=86=85=E5=AD=98?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93and=E6=B7=BB=E5=8A=A0=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E6=96=B0=E8=BF=9E=E6=8E=A5=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../cn/flaty/NettyPush/entity/ClientInfo.java | 10 ++ .../NettyPush/entity/persitence/Client.java | 28 +++++ .../repository/ClientRepository.java | 6 +- .../repository/H2ClientRepository.java | 23 ++-- .../repository/MysqlClientRepository.java | 11 +- .../services/ClientDispacherService.java | 25 ++-- .../NettyPush/services/ConnPoolService.java | 17 ++- .../flaty/NettyPush/services/PushService.java | 107 ++++++++++++++---- .../cn/flaty/NettyPush/utils/PushFrame.java | 29 ----- .../NettyPush/utils/PushFrameHeadler.java | 67 ----------- .../flaty/pushAdmin/entity/ClientMessage.java | 33 ++++++ .../cn/flaty/pushAdmin/entity/Message.java | 82 ++++++++++++++ .../repository/ClientMessageRepository.java | 20 ++++ .../repository/H2ClientMessageRepository.java | 47 ++++++++ .../pushAdmin/services/PushServiceProxy.java | 44 ++++--- .../message/PushMessageEhcachePool.java | 24 ---- .../services/message/PushMessagePool.java | 8 -- .../views/push/PushMessageController.java | 12 +- src/main/resources/applicationDataSource.xml | 13 +-- src/main/resources/jdbc.properties | 2 +- src/main/resources/schema.sql | 7 +- .../webapp/WEB-INF/jsp/pushMessage/new.jsp | 30 ++--- 23 files changed, 431 insertions(+), 218 deletions(-) create mode 100644 src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java delete mode 100644 src/main/java/cn/flaty/NettyPush/utils/PushFrame.java delete mode 100644 src/main/java/cn/flaty/NettyPush/utils/PushFrameHeadler.java create mode 100644 src/main/java/cn/flaty/pushAdmin/entity/ClientMessage.java create mode 100644 src/main/java/cn/flaty/pushAdmin/entity/Message.java create mode 100644 src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java create mode 100644 src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java delete mode 100644 src/main/java/cn/flaty/pushAdmin/services/message/PushMessageEhcachePool.java delete mode 100644 src/main/java/cn/flaty/pushAdmin/services/message/PushMessagePool.java diff --git a/pom.xml b/pom.xml index 4ebed5a..d55741b 100644 --- a/pom.xml +++ b/pom.xml @@ -186,11 +186,11 @@ 5.0.3.Final - + diff --git a/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java b/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java index 385f625..8f38b92 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java +++ b/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java @@ -3,6 +3,8 @@ public class ClientInfo { + private String appKey; + private String did; private int appVer; @@ -17,6 +19,14 @@ public void setDid(String did) { this.did = did; } + public String getAppKey() { + return appKey; + } + + public void setAppKey(String appKey) { + this.appKey = appKey; + } + public int getAppVer() { return appVer; } diff --git a/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java b/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java new file mode 100644 index 0000000..190e6ba --- /dev/null +++ b/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java @@ -0,0 +1,28 @@ +package cn.flaty.NettyPush.entity.persitence; + + +public class Client { + + private String did; + + private long updateTime; + + public long getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(long updateTime) { + this.updateTime = updateTime; + } + + public String getDid() { + return did; + } + + public void setDid(String did) { + this.did = did; + } + + + +} diff --git a/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java index 598574d..4463252 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java @@ -5,16 +5,18 @@ import org.apache.commons.lang.time.DateUtils; import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.persitence.Client; public interface ClientRepository { public static long second_db_live = DateUtils.MILLIS_IN_SECOND * 40; - public boolean insertClient(ClientInfo c); - public List queryClients(ClientInfo c); + public Client getClient(String did); + + public List queryClients(String appKey); public boolean updateClient(ClientInfo c); diff --git a/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java index 0f22997..fb2eace 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Repository; import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.persitence.Client; @Repository public class H2ClientRepository implements ClientRepository { @@ -16,14 +17,15 @@ public class H2ClientRepository implements ClientRepository { @Override public boolean insertClient(ClientInfo c) { - String sql = " insert into tb_client(cid,updateTime) values(?,?)"; - return jdbc.saveORUpdate(sql, new Object[] { c.getDid(), new Date().getTime() }) == 1; + String sql = " insert into tb_client(appkey,did,updateTime) values(?,?,?)"; + return jdbc.saveORUpdate(sql, + new Object[] { c.getAppKey(),c.getDid(), new Date().getTime() }) == 1; } @Override - public List queryClients(ClientInfo c) { - String sql = " select cid,updateTime from tb_client"; - return jdbc.queryForBeanList(sql, ClientInfo.class, null); + public List queryClients(String appKey) { + String sql = " select appkey,did,updateTime from tb_client"; + return jdbc.queryForBeanList(sql, Client.class, null); } @Override @@ -36,8 +38,15 @@ public boolean delExpireClient() { @Override public boolean updateClient(ClientInfo c) { - String sql = " update tb_client set updateTime = ? where cid = ?"; - return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime(), c.getDid() }) == 1; + String sql = " update tb_client set updateTime = ? where did = ?"; + return jdbc.saveORUpdate(sql, + new Object[] { new Date().getTime(), c.getDid() }) == 1; + } + + @Override + public Client getClient(String did) { + String sql = " select appkey,did,updateTime from tb_client where did = ?"; + return jdbc.queryForBean(sql, Client.class, new Object[] { did }); } } diff --git a/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java index 7e1e7ce..63352e0 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Repository; import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.persitence.Client; //@Repository public class MysqlClientRepository implements ClientRepository { @@ -21,9 +22,9 @@ public boolean insertClient(ClientInfo c) { } @Override - public List queryClients(ClientInfo c) { + public List queryClients(String appKey) { String sql = " select cid,updateTime from tb_client"; - return jdbc.queryForBeanList(sql, ClientInfo.class, null); + return jdbc.queryForBeanList(sql, Client.class, null); } @Override @@ -40,4 +41,10 @@ public boolean updateClient(ClientInfo c) { return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime(), c.getDid() }) == 1; } + @Override + public Client getClient(String did) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java index 2504c5a..f5ca32d 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java @@ -2,6 +2,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.flaty.NettyPush.entity.ClientInfo; @@ -16,6 +17,9 @@ @Service public class ClientDispacherService extends ConnPoolService { + @Autowired + private PushService pushService; + private static Logger log = LoggerFactory .getLogger(ClientDispacherService.class); @@ -28,15 +32,15 @@ public class ClientDispacherService extends ConnPoolService { public void dispacher(NettyConnection conn, String data) { GenericMessage m = new GenericMessage(data); int commond = m.getCommond(); + // 新连接 if (commond == GenericMessage.client_connected) { this.validateAndSave(conn, m.getMessage()); - - // 心跳 + // 心跳 } else if (commond == GenericMessage.client_heart) { this.keepAliveOfDb(m.getMessage()); } else { - log.warn("----> invalid commond type "); + log.error("----> invalid commond type "); } } @@ -54,16 +58,22 @@ private void validateAndSave(NettyConnection conn, String message) { try { client = FastJsonUtils.praseToObject(message, ClientInfo.class); } catch (Exception e) { - log.error("连接报文不合法: {}",e.getMessage()); + log.error("连接报文不合法: {}", e.getMessage()); return; } + // 检查是否有消息需要发送 + pushService.sendNewClient(client,conn); + + // 保存连接于连接池中和DB中 super.saveClientInfo(client); pool.set(client.getDid(), conn); + + // 自动刷新DB中数据 - // this.startRefleshClientOfDb(); + // this.startRefleshClientOfDb(); } private void startRefleshClientOfDb() { @@ -74,7 +84,7 @@ private void startRefleshClientOfDb() { /** * - * 维持 + * 维持数据库客户端更新 * * @param conn * @param message @@ -85,7 +95,8 @@ private void keepAliveOfDb(String message) { ClientInfo client = FastJsonUtils.praseToObject(message, ClientInfo.class); - System.out.println(pool.get(client.getDid()));; + System.out.println(pool.get(client.getDid())); + ; super.resetClientExpire(client); pool.touch(client.getDid()); diff --git a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java index 5ad4785..d63636e 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.persitence.Client; import cn.flaty.NettyPush.repository.ClientRepository; import cn.flaty.NettyPush.server.conn.NettyConnection; import cn.flaty.NettyPush.server.conn.NettyConnectionPool; @@ -28,15 +29,21 @@ public abstract class ConnPoolService { protected NettyConnectionPool pool; - protected List queryClientInfo(ClientInfo client){ - return clientInfoRepo.queryClients(client); + protected List queryClients(ClientInfo client){ + return clientInfoRepo.queryClients(client.getDid()); } protected void saveClientInfo(ClientInfo client){ AssertUtils.notNull(client); AssertUtils.notNull(client.getDid()); - clientInfoRepo.insertClient(client); + Client c = this.getClient(client.getDid()); + if(c == null){ + clientInfoRepo.insertClient(client); + }else{ + clientInfoRepo.updateClient(client); + } + } protected void resetClientExpire(ClientInfo client){ @@ -57,7 +64,9 @@ public void run() { }, 1024, ClientRepository.second_db_live); } - + protected Client getClient(String did){ + return clientInfoRepo.getClient(did); + } protected boolean isRefleshClient() { return isRefleshing; diff --git a/src/main/java/cn/flaty/NettyPush/services/PushService.java b/src/main/java/cn/flaty/NettyPush/services/PushService.java index 46dee13..6c9643f 100644 --- a/src/main/java/cn/flaty/NettyPush/services/PushService.java +++ b/src/main/java/cn/flaty/NettyPush/services/PushService.java @@ -1,49 +1,118 @@ package cn.flaty.NettyPush.services; +import java.util.Collections; +import java.util.Date; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.lang.time.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.task.AsyncTaskExecutor; import org.springframework.stereotype.Service; import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.GenericMessage; +import cn.flaty.NettyPush.entity.PushMessage; +import cn.flaty.NettyPush.entity.persitence.Client; import cn.flaty.NettyPush.server.conn.NettyConnection; +import cn.flaty.NettyPush.utils.FastJsonUtils; +import cn.flaty.pushAdmin.entity.ClientMessage; +import cn.flaty.pushAdmin.entity.Message; +import cn.flaty.pushAdmin.repository.ClientMessageRepository; @Service public class PushService extends ConnPoolService { + @Autowired + private AsyncTaskExecutor task; + + @Autowired + private ClientMessageRepository clientMessageRepository; + private Logger log = LoggerFactory.getLogger(PushService.class); - public void send(String msg) { - List clients = super.queryClientInfo(new ClientInfo()); + /** + * 推送
+ * FIXME 大用户? + * + * @param msg + */ + public void sendOnLineClient(PushMessage pm) { + + Long msgId = this.saveMessage(pm); + + List clients = Collections.unmodifiableList(super + .queryClients(new ClientInfo())); NettyConnection conn = null; - for (ClientInfo clientInfo : clients) { + for (Client clientInfo : clients) { try { conn = pool.get(clientInfo.getDid()); + if (conn != null) { + this.send(conn,msgId,clientInfo.getDid(),pm); + } } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage()); continue; } - if (conn != null) { - conn.writeAndFlush(msg); - } } } - public void sendTest(String msg) { - if (StringUtils.isEmpty(msg)) { - return; + private void send(NettyConnection conn,Long msgId,String did, PushMessage pm) throws Exception { + String _msg = (GenericMessage.server_push_text) + + FastJsonUtils.toJsonString(pm); + conn.writeAndFlush(_msg); + ClientMessage cm = new ClientMessage(); + cm.setDid(did); + cm.setSendTime(new Date().getTime()); + cm.setMsgId(msgId); + clientMessageRepository.insertMessageLog(cm); + + } + + + private Long saveMessage(PushMessage pushMessage) { + Message message = new Message(); + try { + PropertyUtils.copyProperties(message, pushMessage); + } catch (Exception e) { + e.printStackTrace(); } - Map pools = pool.asMap(); - Set> sets = pools.entrySet(); - for (Entry entry : sets) { - NettyConnection conn = entry.getValue(); - conn.writeAndFlush(msg); + + Date now = new Date(); + message.setAppkey("mypushTest"); + message.setExpireTime(DateUtils.addHours(now, 1).getTime()); + message.setMsgId(now.getTime()); + clientMessageRepository.insertMessage(message); + return now.getTime(); + } + + public void sendNewClient(final ClientInfo client, + final NettyConnection conn) { + + final List messages = Collections + .unmodifiableList(clientMessageRepository + .queryClientMessage(client)); + if (messages.size() > 0) { + task.submit(new Runnable() { + @Override + public void run() { + for (Message message : messages) { + PushMessage pm = new PushMessage(); + try { + PropertyUtils.copyProperties(pm,message); + send(conn,message.getMsgId(),client.getDid(),pm); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + + } + + } + }); } } diff --git a/src/main/java/cn/flaty/NettyPush/utils/PushFrame.java b/src/main/java/cn/flaty/NettyPush/utils/PushFrame.java deleted file mode 100644 index 4f8886d..0000000 --- a/src/main/java/cn/flaty/NettyPush/utils/PushFrame.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.flaty.NettyPush.utils; - -public class PushFrame { - - - private PushFrameHeadler header; - - private Object o; - - public PushFrameHeadler getHeader() { - return header; - } - - public void setHeader(PushFrameHeadler header) { - this.header = header; - } - - public Object getO() { - return o; - } - - public void setO(Object o) { - this.o = o; - } - - - - -} diff --git a/src/main/java/cn/flaty/NettyPush/utils/PushFrameHeadler.java b/src/main/java/cn/flaty/NettyPush/utils/PushFrameHeadler.java deleted file mode 100644 index 700c14c..0000000 --- a/src/main/java/cn/flaty/NettyPush/utils/PushFrameHeadler.java +++ /dev/null @@ -1,67 +0,0 @@ -package cn.flaty.NettyPush.utils; - -public class PushFrameHeadler { - - /** - * 数据编码格式。已定义:0:UTF-8,1:GBK,2:GB2312,3:ISO8859-1 - */ - private byte encode; - /** - * 加密类型。0表示不加密 - */ - private byte encrypt; - /** - * 用于扩展协议。暂未定义任何值 - */ - private byte extend1; - /** - * 用于扩展协议。暂未定义任何值 - */ - private byte extend2; - - /** 数据包长 **/ - private int length; - - public byte getEncode() { - return encode; - } - - public void setEncode(byte encode) { - this.encode = encode; - } - - public byte getEncrypt() { - return encrypt; - } - - public void setEncrypt(byte encrypt) { - this.encrypt = encrypt; - } - - public byte getExtend1() { - return extend1; - } - - public void setExtend1(byte extend1) { - this.extend1 = extend1; - } - - public byte getExtend2() { - return extend2; - } - - public void setExtend2(byte extend2) { - this.extend2 = extend2; - } - - public int getLength() { - return length; - } - - public void setLength(int length) { - this.length = length; - } - - - -} diff --git a/src/main/java/cn/flaty/pushAdmin/entity/ClientMessage.java b/src/main/java/cn/flaty/pushAdmin/entity/ClientMessage.java new file mode 100644 index 0000000..2584ec9 --- /dev/null +++ b/src/main/java/cn/flaty/pushAdmin/entity/ClientMessage.java @@ -0,0 +1,33 @@ +package cn.flaty.pushAdmin.entity; + +public class ClientMessage { + private String did; + private Long msgId; + private Long sendTime; + + public Long getMsgId() { + return msgId; + } + + public void setMsgId(Long msgId) { + this.msgId = msgId; + } + + + public String getDid() { + return did; + } + + public void setDid(String did) { + this.did = did; + } + + public Long getSendTime() { + return sendTime; + } + + public void setSendTime(Long sendTime) { + this.sendTime = sendTime; + } + +} diff --git a/src/main/java/cn/flaty/pushAdmin/entity/Message.java b/src/main/java/cn/flaty/pushAdmin/entity/Message.java new file mode 100644 index 0000000..2ae2fd7 --- /dev/null +++ b/src/main/java/cn/flaty/pushAdmin/entity/Message.java @@ -0,0 +1,82 @@ +package cn.flaty.pushAdmin.entity; + +public class Message { + private String appkey; + + private Long msgId; + + private String title; + + private String content; + + private int flag; + + private String pushActionMixin; + + private Long createTime; + private Long expireTime; + + public String getAppkey() { + return appkey; + } + + public void setAppkey(String appkey) { + this.appkey = appkey; + } + + public Long getMsgId() { + return msgId; + } + + public void setMsgId(Long msgId) { + this.msgId = msgId; + } + + public Long getCreateTime() { + return createTime; + } + + public void setCreateTime(Long createTime) { + this.createTime = createTime; + } + + public Long getExpireTime() { + return expireTime; + } + + public void setExpireTime(Long expireTime) { + this.expireTime = expireTime; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public int getFlag() { + return flag; + } + + public void setFlag(int flag) { + this.flag = flag; + } + + public String getPushActionMixin() { + return pushActionMixin; + } + + public void setPushActionMixin(String pushActionMixin) { + this.pushActionMixin = pushActionMixin; + } +} diff --git a/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java new file mode 100644 index 0000000..38d32c8 --- /dev/null +++ b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java @@ -0,0 +1,20 @@ +package cn.flaty.pushAdmin.repository; + +import java.util.List; + +import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.persitence.Client; +import cn.flaty.pushAdmin.entity.ClientMessage; +import cn.flaty.pushAdmin.entity.Message; + +public interface ClientMessageRepository { + + + public boolean insertMessage(Message m); + + public boolean insertMessageLog(ClientMessage cm); + + public List queryClientMessage(ClientInfo clientInfo); + + +} diff --git a/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java new file mode 100644 index 0000000..da5cc4a --- /dev/null +++ b/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java @@ -0,0 +1,47 @@ +package cn.flaty.pushAdmin.repository; + +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.persitence.Client; +import cn.flaty.NettyPush.repository.JdbcTemplateWrapper; +import cn.flaty.pushAdmin.entity.ClientMessage; +import cn.flaty.pushAdmin.entity.Message; + +@Repository +public class H2ClientMessageRepository implements ClientMessageRepository { + + @Autowired + private JdbcTemplateWrapper jdbc; + + @Override + public boolean insertMessage(Message m) { + String sql = " insert into tb_message(appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime) values(?,?,?,?,?,?,?,?)"; + return jdbc.saveORUpdate( + sql, + new Object[] { m.getAppkey(), new Date().getTime(), + m.getTitle(), m.getContent(), m.getFlag(), + m.getPushActionMixin(), m.getMsgId(), + m.getExpireTime() }) == 1; + } + + @Override + public List queryClientMessage(ClientInfo clientInfo) { + String sql = " select appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime from tb_message a where a.appkey = ? and a.expireTime >= ? and not exists ( select * from tb_client_message b where a.msgid = b.msgid )"; + return jdbc.queryForBeanList(sql, Message.class, new Object[] { + clientInfo.getAppKey(), new Date().getTime() }); + } + + @Override + public boolean insertMessageLog(ClientMessage cm) { + String sql = " insert into tb_client_message(did,msgid,sendtime) values(?,?,?)"; + return jdbc.saveORUpdate( + sql, + new Object[] { cm.getDid(),cm.getMsgId(),cm.getSendTime() }) == 1; + } + +} diff --git a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java index 2d62773..56b084a 100644 --- a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java +++ b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java @@ -1,48 +1,54 @@ package cn.flaty.pushAdmin.services; -import org.apache.commons.lang.StringUtils; +import java.lang.reflect.InvocationTargetException; +import java.util.Date; + +import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.lang.time.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.entity.GenericMessage; import cn.flaty.NettyPush.entity.PushMessage; import cn.flaty.NettyPush.services.PushService; import cn.flaty.NettyPush.utils.FastJsonUtils; +import cn.flaty.pushAdmin.entity.Message; +import cn.flaty.pushAdmin.repository.ClientMessageRepository; import cn.flaty.pushAdmin.views.BaseDataWrapper; import cn.flaty.pushAdmin.views.push.PushMessageFormBean; @Service -public class PushServiceProxy { +public class PushServiceProxy { + @Autowired private PushService pushService; - + private Logger log = LoggerFactory.getLogger(PushServiceProxy.class); - public BaseDataWrapper sendTest(PushMessageFormBean pushMessageBean) { - - + /** + * 消息推送 + * + * @param pushMessageBean + * @return + */ + public BaseDataWrapper push(PushMessageFormBean pushMessageBean) { + BaseDataWrapper json = new BaseDataWrapper(); PushMessage pushMessage = null; try { - pushMessage = pushMessageBean.parsePushMessage(); + pushMessage = pushMessageBean.parsePushMessage(); } catch (Exception e) { e.printStackTrace(); json.setSuccess(false); return json; + } - - - String _msg = FastJsonUtils.toJsonString(pushMessage); - if (StringUtils.isEmpty(_msg)) { - json.setSuccess(false); - return json; - } + try { - pushService.sendTest((GenericMessage.server_push_text)+(_msg)); + pushService.sendOnLineClient(pushMessage);; } catch (Exception e) { json.setSuccess(false); return json; @@ -51,4 +57,10 @@ public BaseDataWrapper sendTest(PushMessageFormBean pushMessageBean) { return json; } + + + + + + } diff --git a/src/main/java/cn/flaty/pushAdmin/services/message/PushMessageEhcachePool.java b/src/main/java/cn/flaty/pushAdmin/services/message/PushMessageEhcachePool.java deleted file mode 100644 index 7e3e56a..0000000 --- a/src/main/java/cn/flaty/pushAdmin/services/message/PushMessageEhcachePool.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.flaty.pushAdmin.services.message; - -import net.sf.ehcache.Cache; -import net.sf.ehcache.Element; -import net.sf.ehcache.config.CacheConfiguration; -import net.sf.ehcache.store.MemoryStoreEvictionPolicy; - -import org.springframework.stereotype.Service; - -@Service -public class PushMessageEhcachePool { - - Cache messagePool = null; - - public PushMessageEhcachePool() { - messagePool = new Cache( - new CacheConfiguration("testCache", Integer.MAX_VALUE) - .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU) - .eternal(false) - .timeToLiveSeconds(3600) - .timeToIdleSeconds(3600)); - } - -} diff --git a/src/main/java/cn/flaty/pushAdmin/services/message/PushMessagePool.java b/src/main/java/cn/flaty/pushAdmin/services/message/PushMessagePool.java deleted file mode 100644 index 31dc1fc..0000000 --- a/src/main/java/cn/flaty/pushAdmin/services/message/PushMessagePool.java +++ /dev/null @@ -1,8 +0,0 @@ -package cn.flaty.pushAdmin.services.message; - - -public class PushMessagePool { - - - -} diff --git a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java index 13d4903..204b747 100644 --- a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java +++ b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java @@ -18,23 +18,23 @@ @Controller @RequestMapping("/pushMessage") public class PushMessageController { - + private static Logger log = LoggerFactory.getLogger(PushMessageController.class); @Autowired private PushServiceProxy pushService; - + @RequestMapping("/new") public String news(){ return "pushMessage/new"; } - - - + + + @RequestMapping("/create") @ResponseBody public BaseDataWrapper create(@Valid PushMessageFormBean msg){ log.info(msg.toString()); - return pushService.sendTest(msg); + return pushService.push(msg); } } diff --git a/src/main/resources/applicationDataSource.xml b/src/main/resources/applicationDataSource.xml index f7ff989..c650b37 100644 --- a/src/main/resources/applicationDataSource.xml +++ b/src/main/resources/applicationDataSource.xml @@ -1,20 +1,17 @@ - - - - + + + 新消息
UTF-8 1.7 1.7 1.7 + 1.7 + + + + + 2.4 + 3.3.2 + 2.4 + 1.2.2 + 1.8 1.4 - 1.7.2 + 2.2 + 1.9.0 + 17.0 + + 4.0.2 - 1.6.4 - 1.2.14 + 1.7.12 + 1.1.2 + 1.16 + 1.7.2 3.2.8.RELEASE - + 2.2.2 + + 2.4.2 + + 1.1.40 1.9.8 - 2.3.20 + + 1.0.0.GA + 4.3.1.Final + + + 4.0.28.Final + + 2.7.2 + + 4.8.2 + 1.9.5 + + + 8.1.16.v20140903 + + + + + com.h2database + h2 + 1.4.184 @@ -33,65 +75,73 @@ ${org.slf4j-version}
- org.lazyluke - log4jdbc-remix - 0.2.7 + org.slf4j + log4j-over-slf4j + ${org.slf4j-version} org.slf4j - slf4j-log4j12 + jcl-over-slf4j ${org.slf4j-version} - runtime org.slf4j - jcl-over-slf4j + jul-to-slf4j ${org.slf4j-version} - runtime - log4j - log4j - ${log4j-version} + ch.qos.logback + logback-classic + ${logback.version} - - io.netty - netty-all - 4.0.23.Final + org.bgee.log4jdbc-log4j2 + log4jdbc-log4j2-jdbc4 + ${log4jdbc-log4j2-jdbc4-version} + commons-beanutils commons-beanutils - 1.9.0 + ${commons-beanutils-version} commons-lang commons-lang - 2.4 + ${commons-lang-version} - commons-lang - commons-lang - 2.4 + org.apache.commons + commons-lang3 + ${commons-lang3-version} + + + + commons-fileupload + commons-fileupload + ${commons-fileupload-version} commons-io commons-io - 2.2 + ${commons-io-version} commons-codec commons-codec - 1.8 + ${commons-codec-version} - commons-dbcp commons-dbcp ${commons-dbcp-version} + + org.apache.commons + commons-pool2 + ${commons-pool-version} + @@ -132,80 +182,89 @@ + + + + cglib + cglib-nodep + ${cglib-version} + + + + org.aspectj + aspectjweaver + ${org.aspectj-version} + + com.google.guava guava - 17.0 + ${guava.version} + + + + + ${jdbc.driver.groupId} + ${jdbc.driver.artifactId} + ${jdbc.driver.version} + org.codehaus.jackson jackson-mapper-asl ${org.codehaus.jackson-version} - + com.alibaba fastjson - 1.2.2 + ${com.alibaba.fastjson} - + - opensymphony - sitemesh - 2.4.2 + redis.clients + jedis + ${jedis-version} - - org.glassfish - javax.servlet - 3.0.1 - provided + io.netty + netty-all + ${netty-version} + - javax.servlet - jstl - 1.2 - provided + opensymphony + sitemesh + ${sitemesh-version} + + + javax.validation validation-api - 1.1.0.Final + ${javax.validation-version} - org.hibernate hibernate-validator - 5.0.3.Final + ${org.hibernate-version} - - - - + - com.h2database - h2 - 1.4.184 + ${jdbc.driver.groupId} + ${jdbc.driver.artifactId} + ${jdbc.driver.version} - - @@ -220,6 +279,26 @@ ${junit-version} test + + org.mockito + mockito-core + ${org.mockito.mockito-core} + test + + + + + org.eclipse.jetty + jetty-webapp + ${jetty.version} + provided + + + org.eclipse.jetty + jetty-jsp + ${jetty.version} + provided + diff --git a/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java b/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java index 190e6ba..8ffb32c 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java +++ b/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java @@ -1,18 +1,17 @@ package cn.flaty.NettyPush.entity.persitence; - public class Client { private String did; - private long updateTime; + private long expireTime; public long getUpdateTime() { - return updateTime; + return expireTime; } - public void setUpdateTime(long updateTime) { - this.updateTime = updateTime; + public void setUpdateTime(long expireTime) { + this.expireTime = expireTime; } public String getDid() { @@ -23,6 +22,4 @@ public void setDid(String did) { this.did = did; } - - } diff --git a/src/main/java/cn/flaty/NettyPush/nosql/JedisTemplate.java b/src/main/java/cn/flaty/NettyPush/nosql/JedisTemplate.java new file mode 100644 index 0000000..ab307c8 --- /dev/null +++ b/src/main/java/cn/flaty/NettyPush/nosql/JedisTemplate.java @@ -0,0 +1,294 @@ +package cn.flaty.NettyPush.nosql; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.exceptions.JedisConnectionException; +import redis.clients.jedis.exceptions.JedisException; + +/** + * + * 对springside JedisTemplate 进一步完善 + * + * @author flatychen + * + */ +public class JedisTemplate { + + private static Logger logger = LoggerFactory.getLogger(JedisTemplate.class); + + private JedisPool jedisPool; + + public JedisTemplate(JedisPool jedisPool) { + super(); + this.jedisPool = jedisPool; + } + + /** + * 执行有返回结果的action。 + */ + public T execute(JedisAction jedisAction) throws JedisException { + Jedis jedis = null; + boolean broken = false; + try { + jedis = jedisPool.getResource(); + return jedisAction.action(jedis); + } catch (JedisConnectionException e) { + logger.error("Redis connection lost.", e); + broken = true; + throw e; + } finally { + closeResource(jedis, broken); + } + } + + /** + * 执行无返回结果的action。 + */ + public void execute(JedisActionNoResult jedisAction) throws JedisException { + Jedis jedis = null; + boolean broken = false; + try { + jedis = jedisPool.getResource(); + jedisAction.action(jedis); + } catch (JedisConnectionException e) { + logger.error("Redis connection lost.", e); + broken = true; + throw e; + } finally { + closeResource(jedis, broken); + } + } + + /** + * 根据连接是否已中断的标志,分别调用returnBrokenResource或returnResource。 + */ + protected void closeResource(Jedis jedis, boolean connectionBroken) { + if (jedis != null) { + } + } + + /** + * 获取内部的pool做进一步的动作。 + */ + public JedisPool getJedisPool() { + return jedisPool; + } + + /** + * 有返回结果的回调接口定义。 + */ + public interface JedisAction { + T action(Jedis jedis); + } + + /** + * 无返回结果的回调接口定义。 + */ + public interface JedisActionNoResult { + void action(Jedis jedis); + } + + // ////////////// 常用方法的封装 ///////////////////////// // + + // ////////////// 公共 /////////////////////////// + /** + * 删除key, 如果key存在返回true, 否则返回false。 + */ + public boolean del(final String... key) { + return execute(new JedisAction() { + + @Override + public Boolean action(Jedis jedis) { + return jedis.del(key) == 1 ? true : false; + } + }); + } + + public void flushDB() { + execute(new JedisActionNoResult() { + + @Override + public void action(Jedis jedis) { + jedis.flushDB(); + } + }); + } + + // ////////////// 关于String /////////////////////////// + /** + * 如果key不存在, 返回null. + */ + public String get(final String key) { + return execute(new JedisAction() { + + @Override + public String action(Jedis jedis) { + return jedis.get(key); + } + }); + } + + /** + * 如果key不存在, 返回0. + */ + public Long getAsLong(final String key) { + String result = get(key); + return result != null ? Long.valueOf(result) : 0; + } + + /** + * 如果key不存在, 返回0. + */ + public Integer getAsInt(final String key) { + String result = get(key); + return result != null ? Integer.valueOf(result) : 0; + } + + public void set(final String key, final String value) { + + execute(new JedisActionNoResult() { + + @Override + public void action(Jedis jedis) { + jedis.set(key, value); + } + }); + } + + public void setex(final String key, final String value, final int seconds) { + execute(new JedisActionNoResult() { + + @Override + public void action(Jedis jedis) { + jedis.setex(key, seconds, value); + } + }); + } + + /** + * 如果key还不存在则进行设置,返回true,否则返回false. + */ + public boolean setnx(final String key, final String value) { + return execute(new JedisAction() { + + @Override + public Boolean action(Jedis jedis) { + return jedis.setnx(key, value) == 1 ? true : false; + } + }); + } + + public long incr(final String key) { + return execute(new JedisAction() { + + @Override + public Long action(Jedis jedis) { + return jedis.incr(key); + } + }); + } + + public long decr(final String key) { + return execute(new JedisAction() { + + @Override + public Long action(Jedis jedis) { + return jedis.decr(key); + } + }); + } + + // ////////////// 关于List /////////////////////////// + public void lpush(final String key, final String value) { + execute(new JedisActionNoResult() { + + @Override + public void action(Jedis jedis) { + jedis.lpush(key, value); + } + }); + } + + /** + * 返回List长度, key不存在时返回0,key类型不是list时抛出异常. + */ + public long llen(final String key) { + return execute(new JedisAction() { + + @Override + public Long action(Jedis jedis) { + return jedis.llen(key); + } + }); + } + + /** + * 删除List中的第一个等于value的元素,value不存在或key不存在时返回0. + */ + public boolean lremOne(final String key, final String value) { + return execute(new JedisAction() { + @Override + public Boolean action(Jedis jedis) { + Long count = jedis.lrem(key, 1, value); + return (count == 1); + } + }); + } + + /** + * 删除List中的所有等于value的元素,value不存在或key不存在时返回0. + */ + public boolean lremAll(final String key, final String value) { + return execute(new JedisAction() { + @Override + public Boolean action(Jedis jedis) { + Long count = jedis.lrem(key, 0, value); + return (count > 0); + } + }); + } + + // ////////////// 关于Sorted Set /////////////////////////// + /** + * 加入Sorted set, 如果member在Set里已存在,只更新score并返回false,否则返回true. + */ + public boolean zadd(final String key, final String member, + final double score) { + return execute(new JedisAction() { + + @Override + public Boolean action(Jedis jedis) { + return jedis.zadd(key, score, member) == 1 ? true : false; + } + }); + } + + /** + * 删除sorted set中的元素,成功删除返回true,key或member不存在返回false。 + */ + public boolean zrem(final String key, final String member) { + return execute(new JedisAction() { + + @Override + public Boolean action(Jedis jedis) { + return jedis.zrem(key, member) == 1 ? true : false; + } + }); + } + + /** + * 返回List长度, key不存在时返回0,key类型不是sorted set时抛出异常. + */ + public long zcard(final String key) { + return execute(new JedisAction() { + + @Override + public Long action(Jedis jedis) { + return jedis.zcard(key); + } + }); + } +} diff --git a/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java index 4463252..80b1750 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java @@ -9,17 +9,17 @@ public interface ClientRepository { + @SuppressWarnings("deprecation") + public static long client_db_live_time = DateUtils.MILLIS_IN_SECOND * 30; - public static long second_db_live = DateUtils.MILLIS_IN_SECOND * 40; + public boolean insertClient(ClientInfo c); - public boolean insertClient(ClientInfo c); + public Client getClient(String did); - public Client getClient(String did); + public List queryClients(String appKey); - public List queryClients(String appKey); + public boolean updateClient(ClientInfo c); - public boolean updateClient(ClientInfo c); - - public boolean delExpireClient(); + public boolean delExpireClient(); } diff --git a/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java index fb2eace..c59e89f 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java @@ -17,35 +17,37 @@ public class H2ClientRepository implements ClientRepository { @Override public boolean insertClient(ClientInfo c) { - String sql = " insert into tb_client(appkey,did,updateTime) values(?,?,?)"; - return jdbc.saveORUpdate(sql, - new Object[] { c.getAppKey(),c.getDid(), new Date().getTime() }) == 1; + // 设置过期时间 + long expireTime = new Date(new Date().getTime() + + ClientRepository.client_db_live_time).getTime(); + String sql = " insert into tb_online_client(appkey,did,expireTime,appVer,os) values(?,?,?,?,?)"; + return jdbc.saveORUpdate(sql, new Object[] { c.getAppKey(), c.getDid(), + expireTime, c.getAppVer(), c.getOs() }) == 1; } @Override public List queryClients(String appKey) { - String sql = " select appkey,did,updateTime from tb_client"; - return jdbc.queryForBeanList(sql, Client.class, null); + String sql = " select appkey,did,expireTime from tb_online_client where appkey = ? "; + return jdbc + .queryForBeanList(sql, Client.class, new Object[] { appKey }); } @Override public boolean delExpireClient() { - Date now = new Date(); - Date d = new Date(now.getTime() - ClientRepository.second_db_live); - String sql = " delete from tb_client where updateTime <= ? "; - return jdbc.saveORUpdate(sql, new Object[] { d.getTime() }) >= 1; + String sql = " delete from tb_online_client where expireTime > ? "; + return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime() }) >= 1; } @Override public boolean updateClient(ClientInfo c) { - String sql = " update tb_client set updateTime = ? where did = ?"; + String sql = " update tb_online_client set expireTime = ? where did = ?"; return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime(), c.getDid() }) == 1; } @Override public Client getClient(String did) { - String sql = " select appkey,did,updateTime from tb_client where did = ?"; + String sql = " select appkey,did,expireTime from tb_online_client where did = ?"; return jdbc.queryForBean(sql, Client.class, new Object[] { did }); } diff --git a/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java index 63352e0..faf3ba1 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java @@ -1,10 +1,8 @@ package cn.flaty.NettyPush.repository; -import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Repository; import cn.flaty.NettyPush.entity.ClientInfo; import cn.flaty.NettyPush.entity.persitence.Client; @@ -17,34 +15,32 @@ public class MysqlClientRepository implements ClientRepository { @Override public boolean insertClient(ClientInfo c) { - String sql = " insert into tb_client(cid,updateTime) values(?,?)"; - return jdbc.saveORUpdate(sql, new Object[] { c.getDid(), new Date().getTime() }) == 1; + // TODO Auto-generated method stub + return false; } @Override - public List queryClients(String appKey) { - String sql = " select cid,updateTime from tb_client"; - return jdbc.queryForBeanList(sql, Client.class, null); + public Client getClient(String did) { + // TODO Auto-generated method stub + return null; } @Override - public boolean delExpireClient() { - Date now = new Date(); - Date d = new Date(now.getTime() - ClientRepository.second_db_live); - String sql = " delete from tb_client where updateTime <= ? "; - return jdbc.saveORUpdate(sql, new Object[] { d.getTime() }) >= 1; + public List queryClients(String appKey) { + // TODO Auto-generated method stub + return null; } @Override public boolean updateClient(ClientInfo c) { - String sql = " update tb_client set updateTime = ? where cid = ?"; - return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime(), c.getDid() }) == 1; + // TODO Auto-generated method stub + return false; } @Override - public Client getClient(String did) { + public boolean delExpireClient() { // TODO Auto-generated method stub - return null; + return false; } } diff --git a/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java b/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java index 9437366..09561f7 100644 --- a/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java +++ b/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java @@ -15,28 +15,30 @@ import com.google.common.cache.RemovalListener; import com.google.common.cache.RemovalNotification; -public class GuavaConnPool implements NettyConnectionPool { +public class GuavaConnPool implements + NettyConnectionPool { private Logger log = LoggerFactory.getLogger(GuavaConnPool.class); - - private LoadingCache cache = CacheBuilder.newBuilder() - .expireAfterAccess(ClientRepository.second_db_live, TimeUnit.MILLISECONDS).removalListener(new RemovalListener() { + private LoadingCache cache = CacheBuilder + .newBuilder() + .expireAfterAccess(ClientRepository.client_db_live_time, + TimeUnit.MILLISECONDS) + .removalListener(new RemovalListener() { @Override public void onRemoval( RemovalNotification notification) { - log.info(notification.getKey()+"is removed "); + log.info(notification.getKey() + "is removed "); } - }) - .build(new CacheLoader(){ + }).build(new CacheLoader() { @Override public NettyConnection load(String key) throws Exception { NettyConnection conn = cache.get(key); - if(conn != null){ - log.info("---> refresh key {} ",key); + if (conn != null) { + log.info("---> refresh key {} ", key); return conn; - }else{ - log.info("---> loading a not exist key {} ",key); + } else { + log.info("---> loading a not exist key {} ", key); return null; } } @@ -57,7 +59,7 @@ public NettyConnection get(String key) { conn = cache.get(key); } catch (ExecutionException e) { e.printStackTrace(); - }finally{ + } finally { return conn; } } @@ -73,6 +75,4 @@ public Map asMap() { return cache.asMap(); } - - } diff --git a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java index f5ca32d..ad6be11 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java @@ -12,7 +12,7 @@ /** * @author Administrator - * + * */ @Service public class ClientDispacherService extends ConnPoolService { @@ -25,7 +25,7 @@ public class ClientDispacherService extends ConnPoolService { /** * 客户端报文分发 - * + * * @param conn * @param msg */ @@ -36,7 +36,7 @@ public void dispacher(NettyConnection conn, String data) { // 新连接 if (commond == GenericMessage.client_connected) { this.validateAndSave(conn, m.getMessage()); - // 心跳 + // 心跳 } else if (commond == GenericMessage.client_heart) { this.keepAliveOfDb(m.getMessage()); } else { @@ -47,7 +47,7 @@ public void dispacher(NettyConnection conn, String data) { /** * 检测新连接合法性,并保存 - * + * * @param conn * @param message */ @@ -63,15 +63,12 @@ private void validateAndSave(NettyConnection conn, String message) { } // 检查是否有消息需要发送 - pushService.sendNewClient(client,conn); + pushService.sendNewClient(client, conn); - - // 保存连接于连接池中和DB中 + // 保存连接信息于本地连接池中和DB中 super.saveClientInfo(client); pool.set(client.getDid(), conn); - - // 自动刷新DB中数据 // this.startRefleshClientOfDb(); } @@ -83,9 +80,9 @@ private void startRefleshClientOfDb() { } /** - * + * * 维持数据库客户端更新 - * + * * @param conn * @param message */ @@ -96,7 +93,6 @@ private void keepAliveOfDb(String message) { ClientInfo.class); System.out.println(pool.get(client.getDid())); - ; super.resetClientExpire(client); pool.touch(client.getDid()); diff --git a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java index d63636e..829fdfe 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java @@ -14,13 +14,10 @@ import cn.flaty.NettyPush.server.conn.NettyConnectionPool; import cn.flaty.NettyPush.utils.AssertUtils; - - @Service public abstract class ConnPoolService { - - private volatile boolean isRefleshing = false; + private volatile boolean isRefleshing = false; @Autowired private ClientRepository clientInfoRepo; @@ -28,32 +25,29 @@ public abstract class ConnPoolService { @Autowired protected NettyConnectionPool pool; - - protected List queryClients(ClientInfo client){ + protected List queryClients(ClientInfo client) { return clientInfoRepo.queryClients(client.getDid()); } - - protected void saveClientInfo(ClientInfo client){ + protected void saveClientInfo(ClientInfo client) { AssertUtils.notNull(client); AssertUtils.notNull(client.getDid()); Client c = this.getClient(client.getDid()); - if(c == null){ + if (c == null) { clientInfoRepo.insertClient(client); - }else{ + } else { clientInfoRepo.updateClient(client); } } - protected void resetClientExpire(ClientInfo client){ + protected void resetClientExpire(ClientInfo client) { AssertUtils.notNull(client); AssertUtils.notNull(client.getDid()); clientInfoRepo.updateClient(client); } - - protected void delExpireClientsOfDb(){ + protected void delExpireClientsOfDb() { this.isRefleshing = true; Timer refleshClientInfo = new Timer("refleshClientInfo"); refleshClientInfo.schedule(new TimerTask() { @@ -61,10 +55,10 @@ protected void delExpireClientsOfDb(){ public void run() { clientInfoRepo.delExpireClient(); } - }, 1024, ClientRepository.second_db_live); + }, 1024, ClientRepository.client_db_live_time); } - protected Client getClient(String did){ + protected Client getClient(String did) { return clientInfoRepo.getClient(did); } @@ -72,6 +66,4 @@ protected boolean isRefleshClient() { return isRefleshing; } - - } diff --git a/src/main/java/cn/flaty/NettyPush/services/PushService.java b/src/main/java/cn/flaty/NettyPush/services/PushService.java index 6c9643f..e46c159 100644 --- a/src/main/java/cn/flaty/NettyPush/services/PushService.java +++ b/src/main/java/cn/flaty/NettyPush/services/PushService.java @@ -35,14 +35,14 @@ public class PushService extends ConnPoolService { /** * 推送
- * FIXME 大用户? + * FIXME 大用户?注意优化!! juc 包 * * @param msg */ public void sendOnLineClient(PushMessage pm) { Long msgId = this.saveMessage(pm); - + List clients = Collections.unmodifiableList(super .queryClients(new ClientInfo())); NettyConnection conn = null; @@ -50,7 +50,7 @@ public void sendOnLineClient(PushMessage pm) { try { conn = pool.get(clientInfo.getDid()); if (conn != null) { - this.send(conn,msgId,clientInfo.getDid(),pm); + this.send(conn, msgId, clientInfo.getDid(), pm); } } catch (Exception e) { log.error(e.getMessage()); @@ -60,7 +60,8 @@ public void sendOnLineClient(PushMessage pm) { } } - private void send(NettyConnection conn,Long msgId,String did, PushMessage pm) throws Exception { + private void send(NettyConnection conn, Long msgId, String did, + PushMessage pm) throws Exception { String _msg = (GenericMessage.server_push_text) + FastJsonUtils.toJsonString(pm); conn.writeAndFlush(_msg); @@ -69,10 +70,17 @@ private void send(NettyConnection conn,Long msgId,String did, PushMessage pm) th cm.setSendTime(new Date().getTime()); cm.setMsgId(msgId); clientMessageRepository.insertMessageLog(cm); - + } - + /** + * + * 保存消息于db和redis中 + * + * @param pushMessage + * @return + * @author flatychen + */ private Long saveMessage(PushMessage pushMessage) { Message message = new Message(); try { @@ -80,7 +88,7 @@ private Long saveMessage(PushMessage pushMessage) { } catch (Exception e) { e.printStackTrace(); } - + Date now = new Date(); message.setAppkey("mypushTest"); message.setExpireTime(DateUtils.addHours(now, 1).getTime()); @@ -88,13 +96,22 @@ private Long saveMessage(PushMessage pushMessage) { clientMessageRepository.insertMessage(message); return now.getTime(); } - + + /** + * + * 为新连接的客户端推送 + * + * @param client + * @param conn + * @author flatychen + */ public void sendNewClient(final ClientInfo client, final NettyConnection conn) { final List messages = Collections .unmodifiableList(clientMessageRepository .queryClientMessage(client)); + if (messages.size() > 0) { task.submit(new Runnable() { @Override @@ -102,8 +119,8 @@ public void run() { for (Message message : messages) { PushMessage pm = new PushMessage(); try { - PropertyUtils.copyProperties(pm,message); - send(conn,message.getMsgId(),client.getDid(),pm); + PropertyUtils.copyProperties(pm, message); + send(conn, message.getMsgId(), client.getDid(), pm); } catch (Exception e) { e.printStackTrace(); continue; diff --git a/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java index 38d32c8..e7f2e36 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java @@ -3,18 +3,15 @@ import java.util.List; import cn.flaty.NettyPush.entity.ClientInfo; -import cn.flaty.NettyPush.entity.persitence.Client; import cn.flaty.pushAdmin.entity.ClientMessage; import cn.flaty.pushAdmin.entity.Message; public interface ClientMessageRepository { + public boolean insertMessage(Message m); - public boolean insertMessage(Message m); - - public boolean insertMessageLog(ClientMessage cm); - - public List queryClientMessage(ClientInfo clientInfo); + public boolean insertMessageLog(ClientMessage cm); + public List queryClientMessage(ClientInfo clientInfo); } diff --git a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java index 56b084a..5c9a2b5 100644 --- a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java +++ b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java @@ -1,10 +1,5 @@ package cn.flaty.pushAdmin.services; -import java.lang.reflect.InvocationTargetException; -import java.util.Date; - -import org.apache.commons.beanutils.PropertyUtils; -import org.apache.commons.lang.time.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -12,25 +7,20 @@ import cn.flaty.NettyPush.entity.PushMessage; import cn.flaty.NettyPush.services.PushService; -import cn.flaty.NettyPush.utils.FastJsonUtils; -import cn.flaty.pushAdmin.entity.Message; -import cn.flaty.pushAdmin.repository.ClientMessageRepository; import cn.flaty.pushAdmin.views.BaseDataWrapper; import cn.flaty.pushAdmin.views.push.PushMessageFormBean; @Service public class PushServiceProxy { - @Autowired private PushService pushService; private Logger log = LoggerFactory.getLogger(PushServiceProxy.class); - /** * 消息推送 - * + * * @param pushMessageBean * @return */ @@ -38,8 +28,10 @@ public BaseDataWrapper push(PushMessageFormBean pushMessageBean) { BaseDataWrapper json = new BaseDataWrapper(); PushMessage pushMessage = null; + + // 消息序列化 try { - pushMessage = pushMessageBean.parsePushMessage(); + pushMessage = pushMessageBean.parsePushMessage(); } catch (Exception e) { e.printStackTrace(); json.setSuccess(false); @@ -47,8 +39,9 @@ public BaseDataWrapper push(PushMessageFormBean pushMessageBean) { } + // 推送消息 try { - pushService.sendOnLineClient(pushMessage);; + pushService.sendOnLineClient(pushMessage); } catch (Exception e) { json.setSuccess(false); return json; @@ -57,10 +50,4 @@ public BaseDataWrapper push(PushMessageFormBean pushMessageBean) { return json; } - - - - - - } diff --git a/src/main/resources/applicationContext.xml b/src/main/resources/applicationContext.xml index 129cdf0..58b89a7 100644 --- a/src/main/resources/applicationContext.xml +++ b/src/main/resources/applicationContext.xml @@ -13,8 +13,10 @@ - - - - + + + + + + diff --git a/src/main/resources/jdbc.properties b/src/main/resources/config/jdbc.properties similarity index 100% rename from src/main/resources/jdbc.properties rename to src/main/resources/config/jdbc.properties diff --git a/src/main/resources/server.properties b/src/main/resources/config/server.properties similarity index 100% rename from src/main/resources/server.properties rename to src/main/resources/config/server.properties diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties deleted file mode 100644 index 0a70a56..0000000 --- a/src/main/resources/log4j.properties +++ /dev/null @@ -1,13 +0,0 @@ -#log4j.logger.org.springframework.jdbc.datasource=DEBUG,stdout -log4j.rootLogger=info,stdout -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p][%c{2}] %m%n - - -log4j.logger.jdbc.resultset=OFF -log4j.logger.jdbc.audit=OFF -log4j.logger.jdbc.connection=OFF -log4j.logger.jdbc.sqlonly=OFF -#log4j.logger.jdbc.resultsettable=OFF - diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..fa82c9f --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,25 @@ + + + + + [%level]%d{HH:mm:ss.SSS}[%thread -> %logger{40}] %msg%n + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql deleted file mode 100644 index 75c3000..0000000 --- a/src/main/resources/schema.sql +++ /dev/null @@ -1,8 +0,0 @@ -create table tb_client(appkey VARCHAR(100),did VARCHAR(100),updateTime BIGINT); -create table tb_message(appkey VARCHAR(100),msgId BIGINT,title VARCHAR(60),content VARCHAR(400),flag int,pushActionMixin VARCHAR(200),createTime BIGINT,expireTime BIGINT); -create table tb_client_message(did VARCHAR(100),msgid BIGINT,sendTime BIGINT); - - - - - diff --git a/src/main/resources/applicationDataSource.xml b/src/main/resources/spring/applicationDataSource.xml similarity index 78% rename from src/main/resources/applicationDataSource.xml rename to src/main/resources/spring/applicationDataSource.xml index c650b37..3f720db 100644 --- a/src/main/resources/applicationDataSource.xml +++ b/src/main/resources/spring/applicationDataSource.xml @@ -10,11 +10,11 @@ - + - @@ -31,16 +31,6 @@ - - - - - - - - - - diff --git a/src/main/resources/applicationRescourse.xml b/src/main/resources/spring/applicationRescourse.xml similarity index 91% rename from src/main/resources/applicationRescourse.xml rename to src/main/resources/spring/applicationRescourse.xml index 415438a..09ef883 100644 --- a/src/main/resources/applicationRescourse.xml +++ b/src/main/resources/spring/applicationRescourse.xml @@ -14,8 +14,7 @@ - + location="classpath:config/server.properties,classpath:config/jdbc.properties" /> diff --git a/src/main/resources/applicationServer.xml b/src/main/resources/spring/applicationServer.xml similarity index 100% rename from src/main/resources/applicationServer.xml rename to src/main/resources/spring/applicationServer.xml diff --git a/src/main/resources/applicationMvc.xml b/src/main/resources/springMvc/applicationMvc.xml similarity index 100% rename from src/main/resources/applicationMvc.xml rename to src/main/resources/springMvc/applicationMvc.xml diff --git a/src/main/resources/sql/schema.sql b/src/main/resources/sql/schema.sql new file mode 100644 index 0000000..71d8797 --- /dev/null +++ b/src/main/resources/sql/schema.sql @@ -0,0 +1,36 @@ +-- 在线用户表 +create table tb_online_client( +appkey VARCHAR(100), +did VARCHAR(100), +appVer VARCHAR(20), +os VARCHAR(20), +expireTime BIGINT +); + +-- 未过期消息表,幸存表 +create table tb_survive_msg( +appkey VARCHAR(100), +--clientPushMsg +minAppVer VARCHAR(20), +minOs VARCHAR(20), +createTime BIGINT, +expireTime BIGINT +); + +-- 消息日志表 +create table tb_msg_log( +appkey VARCHAR(100), +msgId BIGINT, +title VARCHAR(60), +content VARCHAR(400), +flag int, +pushActionMixin VARCHAR(200), +createTime BIGINT, +expireTime BIGINT +); + + + + + + diff --git a/src/main/resources/applicationTask.xml b/src/main/resources/task/applicationTask.xml similarity index 100% rename from src/main/resources/applicationTask.xml rename to src/main/resources/task/applicationTask.xml diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index ec961fc..22f2be5 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -62,7 +62,7 @@ org.springframework.web.servlet.DispatcherServlet contextConfigLocation - classpath:applicationMvc.xml + classpath:springMvc/applicationMvc.xml 1 diff --git a/src/test/java/cn/flaty/Profiles.java b/src/test/java/cn/flaty/Profiles.java new file mode 100644 index 0000000..c6b4169 --- /dev/null +++ b/src/test/java/cn/flaty/Profiles.java @@ -0,0 +1,19 @@ +package cn.flaty; + + +public class Profiles { + + public static final String ACTIVE_PROFILE = "spring.profiles.active"; + public static final String DEFAULT_PROFILE = "spring.profiles.default"; + + public static final String PRODUCTION = "production"; + public static final String DEVELOPMENT = "deveploment"; + + /** + * 在Spring启动前,设置profile的环境变量。 + */ + public static void setProfileAsSystemProperty(String profile) { + System.setProperty(ACTIVE_PROFILE, profile); + } + +} diff --git a/src/test/java/cn/flaty/StartServer.java b/src/test/java/cn/flaty/StartServer.java new file mode 100644 index 0000000..ae0e269 --- /dev/null +++ b/src/test/java/cn/flaty/StartServer.java @@ -0,0 +1,111 @@ +package cn.flaty; + +import java.net.URL; +import java.security.ProtectionDomain; + +import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.nio.SelectChannelConnector; +import org.eclipse.jetty.webapp.WebAppClassLoader; +import org.eclipse.jetty.webapp.WebAppContext; + +/** + * jetty 启动 + * + * @author flatychen + * @date 2015-5-6 + * @version + */ +public class StartServer { + + /** + * 工程名称 + */ + private static String projectName = "appm"; + + /** + * + */ + private static int port = 8080; + + public static void main(String[] args) { + + // 设定Spring的profile + // Profiles.setProfileAsSystemProperty(Profiles.DEVELOPMENT); + + JettyServer server = new JettyServer(projectName, port); + try { + server.startUp(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(100); + } + } + + private static class JettyServer { + + private static final String DEFAULT_WEBAPP_PATH = "src/main/webapp"; + private Server server; + private WebAppContext context; + + public JettyServer(String contextPath, int port) { + super(); + + System.out.println("[INFO] Server running at http://localhost:" + + port + "/" + projectName); + System.out + .println("[HINT] Hit Enter to reload the application quickly"); + + this.initServer(port); + this.initContext(contextPath); + server.setHandler(context); + } + + private void initServer(int port) { + server = new Server(port); + server.setStopAtShutdown(true); + SelectChannelConnector connector = new SelectChannelConnector(); + connector.setPort(port); + connector.setReuseAddress(false); + server.setConnectors(new Connector[] { connector }); + } + + private void initContext(String contextPath) { + // 设置 webapp目录 + ProtectionDomain protectionDomain = StartServer.class + .getProtectionDomain(); + URL location = protectionDomain.getCodeSource().getLocation(); + WebAppContext context = new WebAppContext(DEFAULT_WEBAPP_PATH, "/" + + contextPath); + this.context = context; + } + + private void reloadContext() throws Exception { + WebAppContext context = (WebAppContext) server.getHandler(); + System.out.println("[INFO] Application reloading"); + context.stop(); + WebAppClassLoader classLoader = new WebAppClassLoader(context); + classLoader.addClassPath("target/classes"); + classLoader.addClassPath("target/test-classes"); + context.setClassLoader(classLoader); + context.start(); + System.out.println("[INFO] Application reloaded"); + } + + public void startUp() throws Exception { + server.start(); + watchReload(); + } + + private void watchReload() throws Exception { + while (true) { + char c = (char) System.in.read(); + if (c == '\n') { + reloadContext(); + } + } + } + + } + +} diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties deleted file mode 100644 index 0a70a56..0000000 --- a/src/test/resources/log4j.properties +++ /dev/null @@ -1,13 +0,0 @@ -#log4j.logger.org.springframework.jdbc.datasource=DEBUG,stdout -log4j.rootLogger=info,stdout -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p][%c{2}] %m%n - - -log4j.logger.jdbc.resultset=OFF -log4j.logger.jdbc.audit=OFF -log4j.logger.jdbc.connection=OFF -log4j.logger.jdbc.sqlonly=OFF -#log4j.logger.jdbc.resultsettable=OFF - diff --git a/src/test/resources/log4jdbc.log4j2.properties b/src/test/resources/log4jdbc.log4j2.properties new file mode 100644 index 0000000..f95c78a --- /dev/null +++ b/src/test/resources/log4jdbc.log4j2.properties @@ -0,0 +1,12 @@ +log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator +#Optional parameters +#log4jdbc.debug.stack.prefix=^ +#log4jdbc.sqltiming.warn.threshold= +#log4jdbc.dump.sql.select=false +#log4jdbc.dump.sql.insert=false +#log4jdbc.dump.sql.update=false +#log4jdbc.dump.sql.delete=false +log4jdbc.dump.sql.addsemicolon=true +log4jdbc.dump.sql.maxlinelength=0 +#log4jdbc.trim.sql.extrablanklines=false +log4jdbc.trim.sql=true \ No newline at end of file diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml new file mode 100644 index 0000000..208630e --- /dev/null +++ b/src/test/resources/logback-test.xml @@ -0,0 +1,26 @@ + + + + + [%level]%d{HH:mm:ss.SSS}[%thread -> %logger{40}] %msg%n + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 7730d1ee3cd12001e18e9234d45b82a095ff20fb Mon Sep 17 00:00:00 2001 From: flatychen Date: Tue, 19 May 2015 19:11:47 +0800 Subject: [PATCH 15/21] del eclipse project --- .classpath | 29 ----------------------------- .project | 38 -------------------------------------- 2 files changed, 67 deletions(-) delete mode 100644 .classpath delete mode 100644 .project diff --git a/.classpath b/.classpath deleted file mode 100644 index e5c0aae..0000000 --- a/.classpath +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.project b/.project deleted file mode 100644 index 9ed8b61..0000000 --- a/.project +++ /dev/null @@ -1,38 +0,0 @@ - - - NettyPusher - - - - - - - org.eclipse.wst.common.project.facet.core.builder - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.wst.validation.validationbuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.m2e.core.maven2Nature - org.eclipse.jdt.core.javanature - org.eclipse.wst.common.project.facet.core.nature - org.eclipse.wst.jsdt.core.jsNature - - From f0e867ff6a80ad89818bfe28f47c6a152c62938e Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 20 May 2015 17:34:16 +0800 Subject: [PATCH 16/21] redis test --- .../ClientPacket.java} | 12 +- .../GenericPacket.java} | 15 +- .../NettyPush/entity/persitence/Client.java | 12 +- .../flaty/NettyPush/nosql/JedisTemplate.java | 692 ++++++++++++++++-- .../cn/flaty/NettyPush/nosql/JedisUtils.java | 39 + .../repository/ClientRepository.java | 6 +- .../repository/H2ClientRepository.java | 6 +- .../repository/MysqlClientRepository.java | 6 +- .../services/ClientDispacherService.java | 22 +- .../NettyPush/services/ConnPoolService.java | 8 +- .../flaty/NettyPush/services/PushService.java | 30 +- .../flaty/pushAdmin/entity/ClientMessage.java | 33 - .../entity/{Message.java => MessageLog.java} | 87 ++- .../entity/PushTextPacket.java} | 19 +- .../pushAdmin/entity/SurviveMessage.java | 11 + .../repository/ClientMessageRepository.java | 12 +- .../repository/H2ClientMessageRepository.java | 10 +- .../pushAdmin/services/PushServiceProxy.java | 8 +- .../views/push/PushMessageController.java | 16 +- ...sageFormBean.java => PushMessageForm.java} | 44 +- src/main/resources/nosql/applicationRedis.xml | 31 + src/main/resources/sql/schema.sql | 3 +- src/main/resources/task/applicationTask.xml | 9 +- .../cn/flaty/nosql/JedisTemplateTest.java | 79 ++ .../flaty/spring/SpringContextTestCase.java | 25 + .../spring/SpringTransactionalTestCase.java | 37 + 26 files changed, 1027 insertions(+), 245 deletions(-) rename src/main/java/cn/flaty/NettyPush/entity/{ClientInfo.java => packet/ClientPacket.java} (80%) rename src/main/java/cn/flaty/NettyPush/entity/{GenericMessage.java => packet/GenericPacket.java} (76%) create mode 100644 src/main/java/cn/flaty/NettyPush/nosql/JedisUtils.java delete mode 100644 src/main/java/cn/flaty/pushAdmin/entity/ClientMessage.java rename src/main/java/cn/flaty/pushAdmin/entity/{Message.java => MessageLog.java} (53%) rename src/main/java/cn/flaty/{NettyPush/entity/PushMessage.java => pushAdmin/entity/PushTextPacket.java} (82%) create mode 100644 src/main/java/cn/flaty/pushAdmin/entity/SurviveMessage.java rename src/main/java/cn/flaty/pushAdmin/views/push/{PushMessageFormBean.java => PushMessageForm.java} (73%) create mode 100644 src/main/resources/nosql/applicationRedis.xml create mode 100644 src/test/java/cn/flaty/nosql/JedisTemplateTest.java create mode 100644 src/test/java/cn/flaty/spring/SpringContextTestCase.java create mode 100644 src/test/java/cn/flaty/spring/SpringTransactionalTestCase.java diff --git a/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java b/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java similarity index 80% rename from src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java rename to src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java index 8f38b92..3dcf3f9 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/ClientInfo.java +++ b/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java @@ -1,7 +1,12 @@ -package cn.flaty.NettyPush.entity; +package cn.flaty.NettyPush.entity.packet; - -public class ClientInfo { +/** + * 客户端信息 + * + * @author flatychen + * + */ +public class ClientPacket { private String appKey; @@ -43,5 +48,4 @@ public void setOs(String os) { this.os = os; } - } diff --git a/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java b/src/main/java/cn/flaty/NettyPush/entity/packet/GenericPacket.java similarity index 76% rename from src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java rename to src/main/java/cn/flaty/NettyPush/entity/packet/GenericPacket.java index c7c53ed..7d0bc01 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/GenericMessage.java +++ b/src/main/java/cn/flaty/NettyPush/entity/packet/GenericPacket.java @@ -1,11 +1,16 @@ -package cn.flaty.NettyPush.entity; +package cn.flaty.NettyPush.entity.packet; -public class GenericMessage { +/** + * + * 消息报文基础bean + * + * @author flatychen + * + */ +public class GenericPacket { public static int server_push_text = 1024; - public static int server_push_image = 1025; - public static int client_heart = 4096; public static int client_connected = 4097; @@ -18,7 +23,7 @@ public int getCommond() { return commond; } - public GenericMessage(String message) { + public GenericPacket(String message) { super(); this.commond = Integer.parseInt(new String(message.substring(0, 4))); this.message = message.substring(4, message.length()); diff --git a/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java b/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java index 8ffb32c..174898b 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java +++ b/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java @@ -1,8 +1,8 @@ package cn.flaty.NettyPush.entity.persitence; -public class Client { +import cn.flaty.NettyPush.entity.packet.ClientPacket; - private String did; +public class Client extends ClientPacket { private long expireTime; @@ -14,12 +14,4 @@ public void setUpdateTime(long expireTime) { this.expireTime = expireTime; } - public String getDid() { - return did; - } - - public void setDid(String did) { - this.did = did; - } - } diff --git a/src/main/java/cn/flaty/NettyPush/nosql/JedisTemplate.java b/src/main/java/cn/flaty/NettyPush/nosql/JedisTemplate.java index ab307c8..2363388 100644 --- a/src/main/java/cn/flaty/NettyPush/nosql/JedisTemplate.java +++ b/src/main/java/cn/flaty/NettyPush/nosql/JedisTemplate.java @@ -1,11 +1,16 @@ package cn.flaty.NettyPush.nosql; +import java.util.List; +import java.util.Map; +import java.util.Set; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; -import redis.clients.jedis.exceptions.JedisConnectionException; +import redis.clients.jedis.Pipeline; +import redis.clients.jedis.Tuple; import redis.clients.jedis.exceptions.JedisException; /** @@ -22,87 +27,146 @@ public class JedisTemplate { private JedisPool jedisPool; public JedisTemplate(JedisPool jedisPool) { - super(); this.jedisPool = jedisPool; } /** - * 执行有返回结果的action。 + * Callback interface for template. + */ + public interface JedisAction { + T action(Jedis jedis); + } + + /** + * Callback interface for template without result. + */ + public interface JedisActionNoResult { + void action(Jedis jedis); + } + + /** + * Callback interface for template. + */ + public interface PipelineAction { + List action(Pipeline Pipeline); + } + + /** + * Callback interface for template without result. + */ + public interface PipelineActionNoResult { + void action(Pipeline Pipeline); + } + + /** + * Execute with a call back action with result. */ public T execute(JedisAction jedisAction) throws JedisException { Jedis jedis = null; - boolean broken = false; try { jedis = jedisPool.getResource(); return jedisAction.action(jedis); - } catch (JedisConnectionException e) { - logger.error("Redis connection lost.", e); - broken = true; + } catch (JedisException e) { + handleJedisException(e); throw e; } finally { - closeResource(jedis, broken); + jedis.close(); } } /** - * 执行无返回结果的action。 + * Execute with a call back action without result. */ public void execute(JedisActionNoResult jedisAction) throws JedisException { Jedis jedis = null; - boolean broken = false; try { jedis = jedisPool.getResource(); jedisAction.action(jedis); - } catch (JedisConnectionException e) { - logger.error("Redis connection lost.", e); - broken = true; + } catch (JedisException e) { + handleJedisException(e); throw e; } finally { - closeResource(jedis, broken); + jedis.close(); } } /** - * 根据连接是否已中断的标志,分别调用returnBrokenResource或returnResource。 + * Execute with a call back action with result in pipeline. */ - protected void closeResource(Jedis jedis, boolean connectionBroken) { - if (jedis != null) { + public List execute(PipelineAction pipelineAction) + throws JedisException { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + Pipeline pipeline = jedis.pipelined(); + pipelineAction.action(pipeline); + return pipeline.syncAndReturnAll(); + } catch (JedisException e) { + handleJedisException(e); + throw e; + } finally { + jedis.close(); } } /** - * 获取内部的pool做进一步的动作。 + * Execute with a call back action without result in pipeline. */ - public JedisPool getJedisPool() { - return jedisPool; + public void execute(PipelineActionNoResult pipelineAction) + throws JedisException { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + Pipeline pipeline = jedis.pipelined(); + pipelineAction.action(pipeline); + pipeline.sync(); + } catch (JedisException e) { + handleJedisException(e); + throw e; + } finally { + jedis.close(); + } } /** - * 有返回结果的回调接口定义。 + * Return the internal JedisPool. */ - public interface JedisAction { - T action(Jedis jedis); + public JedisPool getJedisPool() { + return jedisPool; } /** - * 无返回结果的回调接口定义。 + * Handle jedisException, write log and return whether the connection is + * broken. */ - public interface JedisActionNoResult { - void action(Jedis jedis); + protected void handleJedisException(JedisException jedisException) { + jedisException.printStackTrace(); + // if (jedisException instanceof JedisConnectionException) { + // logger.error("Redis connection lost."); + // } else if (jedisException instanceof JedisDataException) { + // if ((jedisException.getMessage() != null) + // && (jedisException.getMessage().indexOf("READONLY") != -1)) { + // logger.error("Redis connection are read-only slave."); + // } + // } else { + // logger.error("Jedis exception happen.", jedisException); + // } } - // ////////////// 常用方法的封装 ///////////////////////// // + // / Common Actions /// - // ////////////// 公共 /////////////////////////// /** - * 删除key, 如果key存在返回true, 否则返回false。 + * Remove the specified keys. If a given key does not exist no operation is + * performed for this key. + * + * return false if one of the key is not exist. */ - public boolean del(final String... key) { + public Boolean del(final String... keys) { return execute(new JedisAction() { @Override public Boolean action(Jedis jedis) { - return jedis.del(key) == 1 ? true : false; + return jedis.del(keys) == keys.length ? true : false; } }); } @@ -117,9 +181,12 @@ public void action(Jedis jedis) { }); } - // ////////////// 关于String /////////////////////////// + // / String Actions /// + /** - * 如果key不存在, 返回null. + * Get the value of the specified key. If the key does not exist null is + * returned. If the value stored at key is not a string an error is returned + * because GET can only handle string values. */ public String get(final String key) { return execute(new JedisAction() { @@ -132,23 +199,43 @@ public String action(Jedis jedis) { } /** - * 如果key不存在, 返回0. + * Get the value of the specified key as Long.If the key does not exist null + * is returned. */ public Long getAsLong(final String key) { String result = get(key); - return result != null ? Long.valueOf(result) : 0; + return result != null ? Long.valueOf(result) : null; } /** - * 如果key不存在, 返回0. + * Get the value of the specified key as Integer.If the key does not exist + * null is returned. */ public Integer getAsInt(final String key) { String result = get(key); - return result != null ? Integer.valueOf(result) : 0; + return result != null ? Integer.valueOf(result) : null; } - public void set(final String key, final String value) { + /** + * Get the values of all the specified keys. If one or more keys dont exist + * or is not of type String, a 'nil' value is returned instead of the value + * of the specified key, but the operation never fails. + */ + public List mget(final String... keys) { + return execute(new JedisAction>() { + + @Override + public List action(Jedis jedis) { + return jedis.mget(keys); + } + }); + } + /** + * Set the string value as value of the key. The string can't be longer than + * 1073741824 bytes (1 GB). + */ + public void set(final String key, final String value) { execute(new JedisActionNoResult() { @Override @@ -158,6 +245,11 @@ public void action(Jedis jedis) { }); } + /** + * The command is exactly equivalent to the following group of commands: + * {@link #set(String, String) SET} + {@link #expire(String, int) EXPIRE}. + * The operation is atomic. + */ public void setex(final String key, final String value, final int seconds) { execute(new JedisActionNoResult() { @@ -169,9 +261,13 @@ public void action(Jedis jedis) { } /** - * 如果key还不存在则进行设置,返回true,否则返回false. + * SETNX works exactly like {@link #setNX(String, String) SET} with the only + * difference that if the key already exists no operation is performed. + * SETNX actually means "SET if Not eXists". + * + * return true if the key was set. */ - public boolean setnx(final String key, final String value) { + public Boolean setnx(final String key, final String value) { return execute(new JedisAction() { @Override @@ -181,9 +277,55 @@ public Boolean action(Jedis jedis) { }); } - public long incr(final String key) { - return execute(new JedisAction() { + /** + * The command is exactly equivalent to the following group of commands: + * {@link #setex(String, String, int) SETEX} + + * {@link #sexnx(String, String) SETNX}. The operation is atomic. + */ + public Boolean setnxex(final String key, final String value, + final int seconds) { + return execute(new JedisAction() { + + @Override + public Boolean action(Jedis jedis) { + String result = jedis.set(key, value, "NX", "EX", seconds); + return JedisUtils.isStatusOk(result); + } + }); + } + + /** + * GETSET is an atomic set this value and return the old value command. Set + * key to the string value and return the old value stored at key. The + * string can't be longer than 1073741824 bytes (1 GB). + */ + public String getSet(final String key, final String value) { + return execute(new JedisAction() { + + @Override + public String action(Jedis jedis) { + return jedis.getSet(key, value); + } + }); + } + /** + * Increment the number stored at key by one. If the key does not exist or + * contains a value of a wrong type, set the key to the value of "0" before + * to perform the increment operation. + *

+ * INCR commands are limited to 64 bit signed integers. + *

+ * Note: this is actually a string operation, that is, in Redis there are + * not "integer" types. Simply the string stored at the key is parsed as a + * base 10 64 bit signed integer, incremented, and then converted back as a + * string. + * + * @return Integer reply, this commands will reply with the new value of key + * after the increment. + */ + public Long incr(final String key) { + return execute(new JedisAction() { @Override public Long action(Jedis jedis) { return jedis.incr(key); @@ -191,9 +333,31 @@ public Long action(Jedis jedis) { }); } - public long decr(final String key) { + public Long incrBy(final String key, final long increment) { return execute(new JedisAction() { + @Override + public Long action(Jedis jedis) { + return jedis.incrBy(key, increment); + } + }); + } + public Double incrByFloat(final String key, final double increment) { + return execute(new JedisAction() { + @Override + public Double action(Jedis jedis) { + return jedis.incrByFloat(key, increment); + } + }); + } + + /** + * Decrement the number stored at key by one. If the key does not exist or + * contains a value of a wrong type, set the key to the value of "0" before + * to perform the decrement operation. + */ + public Long decr(final String key) { + return execute(new JedisAction() { @Override public Long action(Jedis jedis) { return jedis.decr(key); @@ -201,21 +365,218 @@ public Long action(Jedis jedis) { }); } - // ////////////// 关于List /////////////////////////// - public void lpush(final String key, final String value) { + public Long decrBy(final String key, final long decrement) { + return execute(new JedisAction() { + @Override + public Long action(Jedis jedis) { + return jedis.decrBy(key, decrement); + } + }); + } + + // / Hash Actions /// + /** + * If key holds a hash, retrieve the value associated to the specified + * field. + *

+ * If the field is not found or the key does not exist, a special 'nil' + * value is returned. + */ + public String hget(final String key, final String fieldName) { + return execute(new JedisAction() { + @Override + public String action(Jedis jedis) { + return jedis.hget(key, fieldName); + } + }); + } + + public List hmget(final String key, final String... fieldsNames) { + return execute(new JedisAction>() { + @Override + public List action(Jedis jedis) { + return jedis.hmget(key, fieldsNames); + } + }); + } + + public Map hgetAll(final String key) { + return execute(new JedisAction>() { + @Override + public Map action(Jedis jedis) { + return jedis.hgetAll(key); + } + }); + } + + public void hset(final String key, final String fieldName, + final String value) { + execute(new JedisActionNoResult() { + + @Override + public void action(Jedis jedis) { + jedis.hset(key, fieldName, value); + } + }); + } + + public void hmset(final String key, final Map map) { execute(new JedisActionNoResult() { @Override public void action(Jedis jedis) { - jedis.lpush(key, value); + jedis.hmset(key, map); + } + }); + + } + + public Boolean hsetnx(final String key, final String fieldName, + final String value) { + return execute(new JedisAction() { + + @Override + public Boolean action(Jedis jedis) { + return jedis.hsetnx(key, fieldName, value) == 1 ? true : false; + } + }); + } + + public Long hincrBy(final String key, final String fieldName, + final long increment) { + return execute(new JedisAction() { + @Override + public Long action(Jedis jedis) { + return jedis.hincrBy(key, fieldName, increment); + } + }); + } + + public Double hincrByFloat(final String key, final String fieldName, + final double increment) { + return execute(new JedisAction() { + @Override + public Double action(Jedis jedis) { + return jedis.hincrByFloat(key, fieldName, increment); + } + }); + } + + public Long hdel(final String key, final String... fieldsNames) { + return execute(new JedisAction() { + @Override + public Long action(Jedis jedis) { + return jedis.hdel(key, fieldsNames); + } + }); + } + + public Boolean hexists(final String key, final String fieldName) { + return execute(new JedisAction() { + @Override + public Boolean action(Jedis jedis) { + return jedis.hexists(key, fieldName); + } + }); + } + + public Set hkeys(final String key) { + return execute(new JedisAction>() { + @Override + public Set action(Jedis jedis) { + return jedis.hkeys(key); + } + }); + } + + public Long hlen(final String key) { + return execute(new JedisAction() { + @Override + public Long action(Jedis jedis) { + return jedis.hlen(key); + } + }); + } + + // / List Actions /// + + public Long lpush(final String key, final String... values) { + return execute(new JedisAction() { + @Override + public Long action(Jedis jedis) { + return jedis.lpush(key, values); + } + }); + } + + public String rpop(final String key) { + return execute(new JedisAction() { + + @Override + public String action(Jedis jedis) { + return jedis.rpop(key); + } + }); + } + + public String brpop(final String key) { + return execute(new JedisAction() { + + @Override + public String action(Jedis jedis) { + List nameValuePair = jedis.brpop(key); + if (nameValuePair != null) { + return nameValuePair.get(1); + } else { + return null; + } + } + }); + } + + public String brpop(final int timeout, final String key) { + return execute(new JedisAction() { + + @Override + public String action(Jedis jedis) { + List nameValuePair = jedis.brpop(timeout, key); + if (nameValuePair != null) { + return nameValuePair.get(1); + } else { + return null; + } + } + }); + } + + /** + * Not support for sharding. + */ + public String rpoplpush(final String sourceKey, final String destinationKey) { + return execute(new JedisAction() { + + @Override + public String action(Jedis jedis) { + return jedis.rpoplpush(sourceKey, destinationKey); } }); } /** - * 返回List长度, key不存在时返回0,key类型不是list时抛出异常. + * Not support for sharding. */ - public long llen(final String key) { + public String brpoplpush(final String source, final String destination, + final int timeout) { + return execute(new JedisAction() { + + @Override + public String action(Jedis jedis) { + return jedis.brpoplpush(source, destination, timeout); + } + }); + } + + public Long llen(final String key) { return execute(new JedisAction() { @Override @@ -225,10 +586,45 @@ public Long action(Jedis jedis) { }); } - /** - * 删除List中的第一个等于value的元素,value不存在或key不存在时返回0. - */ - public boolean lremOne(final String key, final String value) { + public String lindex(final String key, final long index) { + return execute(new JedisAction() { + + @Override + public String action(Jedis jedis) { + return jedis.lindex(key, index); + } + }); + } + + public List lrange(final String key, final int start, final int end) { + return execute(new JedisAction>() { + + @Override + public List action(Jedis jedis) { + return jedis.lrange(key, start, end); + } + }); + } + + public void ltrim(final String key, final int start, final int end) { + execute(new JedisActionNoResult() { + @Override + public void action(Jedis jedis) { + jedis.ltrim(key, start, end); + } + }); + } + + public void ltrimFromLeft(final String key, final int size) { + execute(new JedisActionNoResult() { + @Override + public void action(Jedis jedis) { + jedis.ltrim(key, 0, size - 1); + } + }); + } + + public Boolean lremFirst(final String key, final String value) { return execute(new JedisAction() { @Override public Boolean action(Jedis jedis) { @@ -238,10 +634,7 @@ public Boolean action(Jedis jedis) { }); } - /** - * 删除List中的所有等于value的元素,value不存在或key不存在时返回0. - */ - public boolean lremAll(final String key, final String value) { + public Boolean lremAll(final String key, final String value) { return execute(new JedisAction() { @Override public Boolean action(Jedis jedis) { @@ -251,12 +644,33 @@ public Boolean action(Jedis jedis) { }); } - // ////////////// 关于Sorted Set /////////////////////////// + // / Set Actions /// + public Boolean sadd(final String key, final String member) { + return execute(new JedisAction() { + + @Override + public Boolean action(Jedis jedis) { + return jedis.sadd(key, member) == 1 ? true : false; + } + }); + } + + public Set smembers(final String key) { + return execute(new JedisAction>() { + + @Override + public Set action(Jedis jedis) { + return jedis.smembers(key); + } + }); + } + + // / Ordered Set Actions /// /** - * 加入Sorted set, 如果member在Set里已存在,只更新score并返回false,否则返回true. + * return true for add new element, false for only update the score. */ - public boolean zadd(final String key, final String member, - final double score) { + public Boolean zadd(final String key, final double score, + final String member) { return execute(new JedisAction() { @Override @@ -266,10 +680,134 @@ public Boolean action(Jedis jedis) { }); } - /** - * 删除sorted set中的元素,成功删除返回true,key或member不存在返回false。 - */ - public boolean zrem(final String key, final String member) { + public Double zscore(final String key, final String member) { + return execute(new JedisAction() { + + @Override + public Double action(Jedis jedis) { + return jedis.zscore(key, member); + } + }); + } + + public Long zrank(final String key, final String member) { + return execute(new JedisAction() { + + @Override + public Long action(Jedis jedis) { + return jedis.zrank(key, member); + } + }); + } + + public Long zrevrank(final String key, final String member) { + return execute(new JedisAction() { + + @Override + public Long action(Jedis jedis) { + return jedis.zrevrank(key, member); + } + }); + } + + public Long zcount(final String key, final double min, final double max) { + return execute(new JedisAction() { + + @Override + public Long action(Jedis jedis) { + return jedis.zcount(key, min, max); + } + }); + } + + public Set zrange(final String key, final int start, final int end) { + return execute(new JedisAction>() { + + @Override + public Set action(Jedis jedis) { + return jedis.zrange(key, start, end); + } + }); + } + + public Set zrangeWithScores(final String key, final int start, + final int end) { + return execute(new JedisAction>() { + + @Override + public Set action(Jedis jedis) { + return jedis.zrangeWithScores(key, start, end); + } + }); + } + + public Set zrevrange(final String key, final int start, + final int end) { + return execute(new JedisAction>() { + + @Override + public Set action(Jedis jedis) { + return jedis.zrevrange(key, start, end); + } + }); + } + + public Set zrevrangeWithScores(final String key, final int start, + final int end) { + return execute(new JedisAction>() { + + @Override + public Set action(Jedis jedis) { + return jedis.zrevrangeWithScores(key, start, end); + } + }); + } + + public Set zrangeByScore(final String key, final double min, + final double max) { + return execute(new JedisAction>() { + + @Override + public Set action(Jedis jedis) { + return jedis.zrangeByScore(key, min, max); + } + }); + } + + public Set zrangeByScoreWithScores(final String key, + final double min, final double max) { + return execute(new JedisAction>() { + + @Override + public Set action(Jedis jedis) { + return jedis.zrangeByScoreWithScores(key, min, max); + } + }); + } + + public Set zrevrangeByScore(final String key, final double max, + final double min) { + return execute(new JedisAction>() { + + @Override + public Set action(Jedis jedis) { + return jedis.zrevrangeByScore(key, max, min); + } + }); + } + + public Set zrevrangeByScoreWithScores(final String key, + final double max, final double min) { + return execute(new JedisAction>() { + + @Override + public Set action(Jedis jedis) { + return jedis.zrevrangeByScoreWithScores(key, max, min); + } + }); + } + + public Boolean zrem(final String key, final String member) { return execute(new JedisAction() { @Override @@ -279,10 +817,28 @@ public Boolean action(Jedis jedis) { }); } - /** - * 返回List长度, key不存在时返回0,key类型不是sorted set时抛出异常. - */ - public long zcard(final String key) { + public Long zremByScore(final String key, final double start, + final double end) { + return execute(new JedisAction() { + + @Override + public Long action(Jedis jedis) { + return jedis.zremrangeByScore(key, start, end); + } + }); + } + + public Long zremByRank(final String key, final long start, final long end) { + return execute(new JedisAction() { + + @Override + public Long action(Jedis jedis) { + return jedis.zremrangeByRank(key, start, end); + } + }); + } + + public Long zcard(final String key) { return execute(new JedisAction() { @Override diff --git a/src/main/java/cn/flaty/NettyPush/nosql/JedisUtils.java b/src/main/java/cn/flaty/NettyPush/nosql/JedisUtils.java new file mode 100644 index 0000000..f02b564 --- /dev/null +++ b/src/main/java/cn/flaty/NettyPush/nosql/JedisUtils.java @@ -0,0 +1,39 @@ +package cn.flaty.NettyPush.nosql; + +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.exceptions.JedisException; +import cn.flaty.NettyPush.nosql.JedisTemplate.JedisAction; + +public class JedisUtils { + + private static final String OK_CODE = "OK"; + private static final String OK_MULTI_CODE = "+OK"; + + /** + * 判断 返回值是否ok. + */ + public static boolean isStatusOk(String status) { + return (status != null) + && (OK_CODE.equals(status) || OK_MULTI_CODE.equals(status)); + } + + /** + * Ping the jedis instance, return true is the result is PONG. + */ + public static boolean ping(JedisPool pool) { + JedisTemplate template = new JedisTemplate(pool); + try { + String result = template.execute(new JedisAction() { + @Override + public String action(Jedis jedis) { + return jedis.ping(); + } + }); + return (result != null) && result.equals("PONG"); + } catch (JedisException e) { + return false; + } + } + +} diff --git a/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java index 80b1750..86fd90d 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java @@ -4,7 +4,7 @@ import org.apache.commons.lang.time.DateUtils; -import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.packet.ClientPacket; import cn.flaty.NettyPush.entity.persitence.Client; public interface ClientRepository { @@ -12,13 +12,13 @@ public interface ClientRepository { @SuppressWarnings("deprecation") public static long client_db_live_time = DateUtils.MILLIS_IN_SECOND * 30; - public boolean insertClient(ClientInfo c); + public boolean insertClient(ClientPacket c); public Client getClient(String did); public List queryClients(String appKey); - public boolean updateClient(ClientInfo c); + public boolean updateClient(ClientPacket c); public boolean delExpireClient(); diff --git a/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java index c59e89f..8083f3a 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java @@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.packet.ClientPacket; import cn.flaty.NettyPush.entity.persitence.Client; @Repository @@ -16,7 +16,7 @@ public class H2ClientRepository implements ClientRepository { private JdbcTemplateWrapper jdbc; @Override - public boolean insertClient(ClientInfo c) { + public boolean insertClient(ClientPacket c) { // 设置过期时间 long expireTime = new Date(new Date().getTime() + ClientRepository.client_db_live_time).getTime(); @@ -39,7 +39,7 @@ public boolean delExpireClient() { } @Override - public boolean updateClient(ClientInfo c) { + public boolean updateClient(ClientPacket c) { String sql = " update tb_online_client set expireTime = ? where did = ?"; return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime(), c.getDid() }) == 1; diff --git a/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java index faf3ba1..ecc8d19 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java @@ -4,7 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; -import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.packet.ClientPacket; import cn.flaty.NettyPush.entity.persitence.Client; //@Repository @@ -14,7 +14,7 @@ public class MysqlClientRepository implements ClientRepository { private JdbcTemplateWrapper jdbc; @Override - public boolean insertClient(ClientInfo c) { + public boolean insertClient(ClientPacket c) { // TODO Auto-generated method stub return false; } @@ -32,7 +32,7 @@ public List queryClients(String appKey) { } @Override - public boolean updateClient(ClientInfo c) { + public boolean updateClient(ClientPacket c) { // TODO Auto-generated method stub return false; } diff --git a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java index ad6be11..309c30c 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java @@ -5,8 +5,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.entity.ClientInfo; -import cn.flaty.NettyPush.entity.GenericMessage; +import cn.flaty.NettyPush.entity.packet.ClientPacket; +import cn.flaty.NettyPush.entity.packet.GenericPacket; import cn.flaty.NettyPush.server.conn.NettyConnection; import cn.flaty.NettyPush.utils.FastJsonUtils; @@ -30,17 +30,17 @@ public class ClientDispacherService extends ConnPoolService { * @param msg */ public void dispacher(NettyConnection conn, String data) { - GenericMessage m = new GenericMessage(data); + GenericPacket m = new GenericPacket(data); int commond = m.getCommond(); // 新连接 - if (commond == GenericMessage.client_connected) { + if (commond == GenericPacket.client_connected) { this.validateAndSave(conn, m.getMessage()); // 心跳 - } else if (commond == GenericMessage.client_heart) { + } else if (commond == GenericPacket.client_heart) { this.keepAliveOfDb(m.getMessage()); } else { - log.error("----> invalid commond type "); + log.error(" invalid commond type ."); } } @@ -53,10 +53,10 @@ public void dispacher(NettyConnection conn, String data) { */ private void validateAndSave(NettyConnection conn, String message) { log.info("new client:{}", message); - ClientInfo client = null; + ClientPacket client = null; try { - client = FastJsonUtils.praseToObject(message, ClientInfo.class); + client = FastJsonUtils.praseToObject(message, ClientPacket.class); } catch (Exception e) { log.error("连接报文不合法: {}", e.getMessage()); return; @@ -69,7 +69,7 @@ private void validateAndSave(NettyConnection conn, String message) { super.saveClientInfo(client); pool.set(client.getDid(), conn); - // 自动刷新DB中数据 + // 自动刷新DB中客户端数据 // this.startRefleshClientOfDb(); } @@ -89,8 +89,8 @@ private void startRefleshClientOfDb() { private void keepAliveOfDb(String message) { log.info("heartBeat:{}", message); - ClientInfo client = FastJsonUtils.praseToObject(message, - ClientInfo.class); + ClientPacket client = FastJsonUtils.praseToObject(message, + ClientPacket.class); System.out.println(pool.get(client.getDid())); diff --git a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java index 829fdfe..80c039b 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java @@ -7,7 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.packet.ClientPacket; import cn.flaty.NettyPush.entity.persitence.Client; import cn.flaty.NettyPush.repository.ClientRepository; import cn.flaty.NettyPush.server.conn.NettyConnection; @@ -25,11 +25,11 @@ public abstract class ConnPoolService { @Autowired protected NettyConnectionPool pool; - protected List queryClients(ClientInfo client) { + protected List queryClients(ClientPacket client) { return clientInfoRepo.queryClients(client.getDid()); } - protected void saveClientInfo(ClientInfo client) { + protected void saveClientInfo(ClientPacket client) { AssertUtils.notNull(client); AssertUtils.notNull(client.getDid()); Client c = this.getClient(client.getDid()); @@ -41,7 +41,7 @@ protected void saveClientInfo(ClientInfo client) { } - protected void resetClientExpire(ClientInfo client) { + protected void resetClientExpire(ClientPacket client) { AssertUtils.notNull(client); AssertUtils.notNull(client.getDid()); clientInfoRepo.updateClient(client); diff --git a/src/main/java/cn/flaty/NettyPush/services/PushService.java b/src/main/java/cn/flaty/NettyPush/services/PushService.java index e46c159..7d28e8a 100644 --- a/src/main/java/cn/flaty/NettyPush/services/PushService.java +++ b/src/main/java/cn/flaty/NettyPush/services/PushService.java @@ -12,14 +12,14 @@ import org.springframework.core.task.AsyncTaskExecutor; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.entity.ClientInfo; -import cn.flaty.NettyPush.entity.GenericMessage; -import cn.flaty.NettyPush.entity.PushMessage; +import cn.flaty.NettyPush.entity.packet.ClientPacket; +import cn.flaty.NettyPush.entity.packet.GenericPacket; import cn.flaty.NettyPush.entity.persitence.Client; import cn.flaty.NettyPush.server.conn.NettyConnection; import cn.flaty.NettyPush.utils.FastJsonUtils; import cn.flaty.pushAdmin.entity.ClientMessage; -import cn.flaty.pushAdmin.entity.Message; +import cn.flaty.pushAdmin.entity.SurviveMessage; +import cn.flaty.pushAdmin.entity.PushTextPacket; import cn.flaty.pushAdmin.repository.ClientMessageRepository; @Service @@ -39,12 +39,12 @@ public class PushService extends ConnPoolService { * * @param msg */ - public void sendOnLineClient(PushMessage pm) { + public void sendOnLineClient(PushTextPacket pm) { Long msgId = this.saveMessage(pm); List clients = Collections.unmodifiableList(super - .queryClients(new ClientInfo())); + .queryClients(new ClientPacket())); NettyConnection conn = null; for (Client clientInfo : clients) { try { @@ -61,8 +61,8 @@ public void sendOnLineClient(PushMessage pm) { } private void send(NettyConnection conn, Long msgId, String did, - PushMessage pm) throws Exception { - String _msg = (GenericMessage.server_push_text) + PushTextPacket pm) throws Exception { + String _msg = (GenericPacket.server_push_text) + FastJsonUtils.toJsonString(pm); conn.writeAndFlush(_msg); ClientMessage cm = new ClientMessage(); @@ -81,18 +81,20 @@ private void send(NettyConnection conn, Long msgId, String did, * @return * @author flatychen */ - private Long saveMessage(PushMessage pushMessage) { - Message message = new Message(); + private Long saveMessage(PushTextPacket pushMessage) { + SurviveMessage message = new SurviveMessage(); try { PropertyUtils.copyProperties(message, pushMessage); } catch (Exception e) { e.printStackTrace(); } + // 构造推送消息 Date now = new Date(); message.setAppkey("mypushTest"); message.setExpireTime(DateUtils.addHours(now, 1).getTime()); message.setMsgId(now.getTime()); + clientMessageRepository.insertMessage(message); return now.getTime(); } @@ -105,10 +107,10 @@ private Long saveMessage(PushMessage pushMessage) { * @param conn * @author flatychen */ - public void sendNewClient(final ClientInfo client, + public void sendNewClient(final ClientPacket client, final NettyConnection conn) { - final List messages = Collections + final List messages = Collections .unmodifiableList(clientMessageRepository .queryClientMessage(client)); @@ -116,8 +118,8 @@ public void sendNewClient(final ClientInfo client, task.submit(new Runnable() { @Override public void run() { - for (Message message : messages) { - PushMessage pm = new PushMessage(); + for (SurviveMessage message : messages) { + PushTextPacket pm = new PushTextPacket(); try { PropertyUtils.copyProperties(pm, message); send(conn, message.getMsgId(), client.getDid(), pm); diff --git a/src/main/java/cn/flaty/pushAdmin/entity/ClientMessage.java b/src/main/java/cn/flaty/pushAdmin/entity/ClientMessage.java deleted file mode 100644 index 2584ec9..0000000 --- a/src/main/java/cn/flaty/pushAdmin/entity/ClientMessage.java +++ /dev/null @@ -1,33 +0,0 @@ -package cn.flaty.pushAdmin.entity; - -public class ClientMessage { - private String did; - private Long msgId; - private Long sendTime; - - public Long getMsgId() { - return msgId; - } - - public void setMsgId(Long msgId) { - this.msgId = msgId; - } - - - public String getDid() { - return did; - } - - public void setDid(String did) { - this.did = did; - } - - public Long getSendTime() { - return sendTime; - } - - public void setSendTime(Long sendTime) { - this.sendTime = sendTime; - } - -} diff --git a/src/main/java/cn/flaty/pushAdmin/entity/Message.java b/src/main/java/cn/flaty/pushAdmin/entity/MessageLog.java similarity index 53% rename from src/main/java/cn/flaty/pushAdmin/entity/Message.java rename to src/main/java/cn/flaty/pushAdmin/entity/MessageLog.java index 2ae2fd7..6b73aa3 100644 --- a/src/main/java/cn/flaty/pushAdmin/entity/Message.java +++ b/src/main/java/cn/flaty/pushAdmin/entity/MessageLog.java @@ -1,9 +1,28 @@ package cn.flaty.pushAdmin.entity; -public class Message { - private String appkey; - - private Long msgId; +/** + * + * 幸存消息,也即未过期消息 + * + * @author flatychen + * + * 消息日志表 + create table tb_msg_log( + appkey VARCHAR(100), + msgId BIGINT, + title VARCHAR(60), + content VARCHAR(900), + flag int, + pushActionMixin VARCHAR(200), + createTime BIGINT, + expireTime BIGINT + ); + + * + */ +public class MessageLog { + + private String appKey; private String title; @@ -13,39 +32,16 @@ public class Message { private String pushActionMixin; - private Long createTime; - private Long expireTime; - - public String getAppkey() { - return appkey; - } - - public void setAppkey(String appkey) { - this.appkey = appkey; - } - - public Long getMsgId() { - return msgId; - } + private long createTime; - public void setMsgId(Long msgId) { - this.msgId = msgId; - } + private long expireTime; - public Long getCreateTime() { - return createTime; - } - - public void setCreateTime(Long createTime) { - this.createTime = createTime; - } - - public Long getExpireTime() { - return expireTime; + public String getPushActionMixin() { + return pushActionMixin; } - public void setExpireTime(Long expireTime) { - this.expireTime = expireTime; + public void setPushActionMixin(String pushActionMixin) { + this.pushActionMixin = pushActionMixin; } public String getTitle() { @@ -72,11 +68,28 @@ public void setFlag(int flag) { this.flag = flag; } - public String getPushActionMixin() { - return pushActionMixin; + public String getAppKey() { + return appKey; } - public void setPushActionMixin(String pushActionMixin) { - this.pushActionMixin = pushActionMixin; + public void setAppKey(String appKey) { + this.appKey = appKey; + } + + public long getCreateTime() { + return createTime; + } + + public void setCreateTime(long createTime) { + this.createTime = createTime; + } + + public long getExpireTime() { + return expireTime; } + + public void setExpireTime(long expireTime) { + this.expireTime = expireTime; + } + } diff --git a/src/main/java/cn/flaty/NettyPush/entity/PushMessage.java b/src/main/java/cn/flaty/pushAdmin/entity/PushTextPacket.java similarity index 82% rename from src/main/java/cn/flaty/NettyPush/entity/PushMessage.java rename to src/main/java/cn/flaty/pushAdmin/entity/PushTextPacket.java index beaa9e8..ebc9efc 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/PushMessage.java +++ b/src/main/java/cn/flaty/pushAdmin/entity/PushTextPacket.java @@ -1,15 +1,19 @@ -package cn.flaty.NettyPush.entity; +package cn.flaty.pushAdmin.entity; +/** + * 推送文本消息报文 + * + * @author flatychen + * + */ +public class PushTextPacket { - -public class PushMessage { - private String title; - + private String content; private int flag; - + private String pushActionMixin; public String getPushActionMixin() { @@ -44,7 +48,4 @@ public void setFlag(int flag) { this.flag = flag; } - - - } diff --git a/src/main/java/cn/flaty/pushAdmin/entity/SurviveMessage.java b/src/main/java/cn/flaty/pushAdmin/entity/SurviveMessage.java new file mode 100644 index 0000000..4630c78 --- /dev/null +++ b/src/main/java/cn/flaty/pushAdmin/entity/SurviveMessage.java @@ -0,0 +1,11 @@ +package cn.flaty.pushAdmin.entity; + +/** + * + * 幸存消息,也即未过期消息 + * + * @author flatychen + * + */ +public class SurviveMessage { +} diff --git a/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java index e7f2e36..94ac709 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java @@ -2,16 +2,16 @@ import java.util.List; -import cn.flaty.NettyPush.entity.ClientInfo; -import cn.flaty.pushAdmin.entity.ClientMessage; -import cn.flaty.pushAdmin.entity.Message; +import cn.flaty.NettyPush.entity.packet.ClientPacket; +import cn.flaty.pushAdmin.entity.MessageLog; +import cn.flaty.pushAdmin.entity.SurviveMessage; public interface ClientMessageRepository { - public boolean insertMessage(Message m); + public boolean insertMessageLog(SurviveMessage m); - public boolean insertMessageLog(ClientMessage cm); + public boolean insertMessageLog(MessageLog messageLog); - public List queryClientMessage(ClientInfo clientInfo); + public List queryClientMessage(ClientPacket clientInfo); } diff --git a/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java index da5cc4a..204cd90 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java @@ -6,11 +6,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import cn.flaty.NettyPush.entity.ClientInfo; +import cn.flaty.NettyPush.entity.packet.ClientPacket; import cn.flaty.NettyPush.entity.persitence.Client; import cn.flaty.NettyPush.repository.JdbcTemplateWrapper; import cn.flaty.pushAdmin.entity.ClientMessage; -import cn.flaty.pushAdmin.entity.Message; +import cn.flaty.pushAdmin.entity.SurviveMessage; @Repository public class H2ClientMessageRepository implements ClientMessageRepository { @@ -19,7 +19,7 @@ public class H2ClientMessageRepository implements ClientMessageRepository { private JdbcTemplateWrapper jdbc; @Override - public boolean insertMessage(Message m) { + public boolean insertMessage(SurviveMessage m) { String sql = " insert into tb_message(appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime) values(?,?,?,?,?,?,?,?)"; return jdbc.saveORUpdate( sql, @@ -30,9 +30,9 @@ public boolean insertMessage(Message m) { } @Override - public List queryClientMessage(ClientInfo clientInfo) { + public List queryClientMessage(ClientPacket clientInfo) { String sql = " select appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime from tb_message a where a.appkey = ? and a.expireTime >= ? and not exists ( select * from tb_client_message b where a.msgid = b.msgid )"; - return jdbc.queryForBeanList(sql, Message.class, new Object[] { + return jdbc.queryForBeanList(sql, SurviveMessage.class, new Object[] { clientInfo.getAppKey(), new Date().getTime() }); } diff --git a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java index 5c9a2b5..e0d8f36 100644 --- a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java +++ b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java @@ -5,10 +5,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.entity.PushMessage; import cn.flaty.NettyPush.services.PushService; +import cn.flaty.pushAdmin.entity.PushTextPacket; import cn.flaty.pushAdmin.views.BaseDataWrapper; -import cn.flaty.pushAdmin.views.push.PushMessageFormBean; +import cn.flaty.pushAdmin.views.push.PushMessageForm; @Service public class PushServiceProxy { @@ -24,10 +24,10 @@ public class PushServiceProxy { * @param pushMessageBean * @return */ - public BaseDataWrapper push(PushMessageFormBean pushMessageBean) { + public BaseDataWrapper push(PushMessageForm pushMessageBean) { BaseDataWrapper json = new BaseDataWrapper(); - PushMessage pushMessage = null; + PushTextPacket pushMessage = null; // 消息序列化 try { diff --git a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java index 204b747..f44f3df 100644 --- a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java +++ b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java @@ -9,32 +9,28 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -import cn.flaty.NettyPush.services.PushService; -import cn.flaty.NettyPush.utils.FastJsonUtils; import cn.flaty.pushAdmin.services.PushServiceProxy; import cn.flaty.pushAdmin.views.BaseDataWrapper; - @Controller @RequestMapping("/pushMessage") public class PushMessageController { - private static Logger log = LoggerFactory.getLogger(PushMessageController.class); + private static Logger log = LoggerFactory + .getLogger(PushMessageController.class); @Autowired - private PushServiceProxy pushService; + private PushServiceProxy pushServiceProxy; @RequestMapping("/new") - public String news(){ + public String news() { return "pushMessage/new"; } - - @RequestMapping("/create") @ResponseBody - public BaseDataWrapper create(@Valid PushMessageFormBean msg){ + public BaseDataWrapper create(@Valid PushMessageForm msg) { log.info(msg.toString()); - return pushService.push(msg); + return pushServiceProxy.push(msg); } } diff --git a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageFormBean.java b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageForm.java similarity index 73% rename from src/main/java/cn/flaty/pushAdmin/views/push/PushMessageFormBean.java rename to src/main/java/cn/flaty/pushAdmin/views/push/PushMessageForm.java index d3c117e..01767d0 100644 --- a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageFormBean.java +++ b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageForm.java @@ -1,27 +1,52 @@ package cn.flaty.pushAdmin.views.push; +import java.util.Date; + import org.apache.commons.beanutils.PropertyUtils; import org.hibernate.validator.constraints.NotEmpty; -import cn.flaty.NettyPush.entity.PushMessage; +import cn.flaty.pushAdmin.entity.PushTextPacket; -public class PushMessageFormBean { +/** + * + * 推送消处表单 + * + * @author flatychen + * + */ +public class PushMessageForm { + /** + * 标题 + */ @NotEmpty private String title; + /** + * 内容 + */ @NotEmpty private String content; @NotEmpty private byte[] flags; - private int pushAction ; + private int pushAction; private String openUrl; private String openActivity; + private Date expireDate; + + public Date getExpireDate() { + return expireDate; + } + + public void setExpireDate(Date expireDate) { + this.expireDate = expireDate; + } + public byte[] getFlags() { return flags; } @@ -30,7 +55,6 @@ public void setFlags(byte[] flags) { this.flags = flags; } - public int getPushAction() { return pushAction; } @@ -75,20 +99,20 @@ public void setContent(String content) { this.content = content; } - public PushMessage parsePushMessage() { - PushMessage pm = new PushMessage(); - + public PushTextPacket parsePushMessage() { + PushTextPacket pm = new PushTextPacket(); + for (int i = 0; i < this.flags.length; i++) { pm.setFlag(pm.getFlag() | this.flags[i]); } - + try { PropertyUtils.copyProperties(pm, this); } catch (Exception e) { e.printStackTrace(); return null; - } - + } + return pm; } diff --git a/src/main/resources/nosql/applicationRedis.xml b/src/main/resources/nosql/applicationRedis.xml new file mode 100644 index 0000000..db60a20 --- /dev/null +++ b/src/main/resources/nosql/applicationRedis.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/sql/schema.sql b/src/main/resources/sql/schema.sql index 71d8797..53d71f4 100644 --- a/src/main/resources/sql/schema.sql +++ b/src/main/resources/sql/schema.sql @@ -10,7 +10,6 @@ expireTime BIGINT -- 未过期消息表,幸存表 create table tb_survive_msg( appkey VARCHAR(100), ---clientPushMsg minAppVer VARCHAR(20), minOs VARCHAR(20), createTime BIGINT, @@ -22,7 +21,7 @@ create table tb_msg_log( appkey VARCHAR(100), msgId BIGINT, title VARCHAR(60), -content VARCHAR(400), +content VARCHAR(900), flag int, pushActionMixin VARCHAR(200), createTime BIGINT, diff --git a/src/main/resources/task/applicationTask.xml b/src/main/resources/task/applicationTask.xml index 266c7c1..851505b 100644 --- a/src/main/resources/task/applicationTask.xml +++ b/src/main/resources/task/applicationTask.xml @@ -8,13 +8,14 @@ "> - - - + + - + + diff --git a/src/test/java/cn/flaty/nosql/JedisTemplateTest.java b/src/test/java/cn/flaty/nosql/JedisTemplateTest.java new file mode 100644 index 0000000..1db2ef1 --- /dev/null +++ b/src/test/java/cn/flaty/nosql/JedisTemplateTest.java @@ -0,0 +1,79 @@ +package cn.flaty.nosql; + +import static org.junit.Assert.assertEquals; + +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import org.apache.commons.lang.time.StopWatch; +import org.junit.Before; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; + +import redis.clients.jedis.JedisPool; +import cn.flaty.NettyPush.nosql.JedisTemplate; +import cn.flaty.NettyPush.nosql.JedisUtils; +import cn.flaty.spring.SpringContextTestCase; + +@ContextConfiguration(locations = { "classpath:nosql/applicationRedis.xml" }) +public class JedisTemplateTest extends SpringContextTestCase { + + private ExecutorService es; + + private static int threadSize = 10; + private static int loopSize = 10000 * 5; + + @Autowired + private JedisTemplate jedisTemplate; + @Autowired + private JedisPool jedisPool; + + @Before + public void prepare() { + JedisUtils.ping(jedisPool); + es = Executors.newFixedThreadPool(threadSize); + } + + @Test + public void listTest() { + jedisTemplate.lpush("users", "baiwjgg"); + jedisTemplate.lpush("users", "baiwjgg"); + jedisTemplate.lpush("users", "baiwjgg"); + assertEquals(3L, jedisTemplate.llen("users").longValue()); + } + + @Test + public void mapTest() throws InterruptedException { + final CountDownLatch latch = new CountDownLatch(1); + // jedisTemplate.flushDB(); + StopWatch watch = new StopWatch(); + watch.start(); + for (int i = 0; i < loopSize; i++) { + final int j = i; + es.submit(new Runnable() { + @Override + public void run() { + jedisTemplate.hset("users", "name" + j, j + + "baiwjggbaiwjggbaiwjggbaiwjggbaiwjgg"); + if (j == (loopSize - 1)) { + latch.countDown(); + } + } + + }); + + } + + latch.await(); + System.out.println("mapSet:" + watch.toString()); + watch.reset(); + watch.start(); + Map result = jedisTemplate.hgetAll("users"); + watch.stop(); + System.out.println("mapGet:" + watch.toString()); + System.out.println(result.size()); + } +} diff --git a/src/test/java/cn/flaty/spring/SpringContextTestCase.java b/src/test/java/cn/flaty/spring/SpringContextTestCase.java new file mode 100644 index 0000000..1caf382 --- /dev/null +++ b/src/test/java/cn/flaty/spring/SpringContextTestCase.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2005-2012 springside.org.cn + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ +package cn.flaty.spring; + +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; + +import cn.flaty.Profiles; + +/** + * Spring的支持依赖注入的JUnit4 集成测试基类, 相比Spring原基类名字更短. + * + * 子类需要定义applicationContext文件的位置,如: + * + * @ContextConfiguration(locations = { "/applicationContext-test.xml" }) + * + * @author calvin + */ +@ActiveProfiles(Profiles.DEFAULT_PROFILE) +public abstract class SpringContextTestCase extends + AbstractJUnit4SpringContextTests { +} diff --git a/src/test/java/cn/flaty/spring/SpringTransactionalTestCase.java b/src/test/java/cn/flaty/spring/SpringTransactionalTestCase.java new file mode 100644 index 0000000..085c7d3 --- /dev/null +++ b/src/test/java/cn/flaty/spring/SpringTransactionalTestCase.java @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2005-2012 springside.org.cn + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ +package cn.flaty.spring; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; + +import cn.flaty.Profiles; + +/** + * Spring的支持数据库访问, 事务控制和依赖注入的JUnit4 集成测试基类. 相比Spring原基类名字更短并保存了dataSource变量. + * + * 子类需要定义applicationContext文件的位置, 如: + * + * @ContextConfiguration(locations = { "/applicationContext.xml" }) + * + * @author calvin + */ +@ActiveProfiles(Profiles.DEVELOPMENT) +public abstract class SpringTransactionalTestCase extends + AbstractTransactionalJUnit4SpringContextTests { + + protected DataSource dataSource; + + @Override + @Autowired + public void setDataSource(DataSource dataSource) { + super.setDataSource(dataSource); + this.dataSource = dataSource; + } +} From 4846e46992aadaedb87ab5c7604761a45a0c7047 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 21 May 2015 17:55:41 +0800 Subject: [PATCH 17/21] to redis --- .../NettyPush/entity/packet/ClientPacket.java | 23 +++ .../nosql/RedisClientRepository.java | 58 +++++++ .../AbstractChannelInitializer.java | 11 +- .../HttpChannelInitializer.java | 29 ++-- .../PushChannelInitializer.java | 33 ++-- .../SocketChannelInitializer.java | 31 ---- .../server/codec/push/DeserializeHandler.java | 21 +-- .../server/codec/push/PushFrameDecoder.java | 25 +-- .../server/codec/push/SplitFrameDecoder.java | 11 +- .../NettyPush/server/conn/GuavaConnPool.java | 7 + .../server/conn/NettyConnection.java | 7 + .../server/conn/NettyConnectionPool.java | 34 ++++ .../NettyPush/server/frame/FrameHead.java | 22 ++- .../server/frame/SimplePushHead.java | 8 + .../services/ClientDispacherService.java | 34 ++-- .../NettyPush/services/ConnPoolService.java | 54 +------ .../flaty/NettyPush/services/PushService.java | 146 ++++++++---------- .../repository/ClientMessageRepository.java | 15 +- .../repository/H2ClientMessageRepository.java | 62 +++----- .../cn/flaty/nosql/JedisTemplateTest.java | 56 ++++++- 20 files changed, 389 insertions(+), 298 deletions(-) create mode 100644 src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java delete mode 100644 src/main/java/cn/flaty/NettyPush/server/channelInitializer/SocketChannelInitializer.java diff --git a/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java b/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java index 3dcf3f9..79dad5d 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java +++ b/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java @@ -1,5 +1,7 @@ package cn.flaty.NettyPush.entity.packet; +import org.apache.commons.codec.digest.DigestUtils; + /** * 客户端信息 * @@ -48,4 +50,25 @@ public void setOs(String os) { this.os = os; } + /** + * 得到APP连接唯一码 + * + * @return + * @author flatychen + */ + public String getAppClientUID() { + return DigestUtils.md5(this.appKey + ":" + this.did).toString(); + } + + /** + * 组装成redis hash field + * + * @return + * @author flatychen + */ + public String getRedisField() { + return new StringBuilder().append(this.did).append(":").append(this.os) + .append(":").append(this.appVer).toString(); + } + } diff --git a/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java b/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java new file mode 100644 index 0000000..5682466 --- /dev/null +++ b/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java @@ -0,0 +1,58 @@ +package cn.flaty.NettyPush.nosql; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import cn.flaty.NettyPush.entity.packet.ClientPacket; + +/** + * + * + * @author flatychen + * + */ +@Repository +public class RedisClientRepository { + + private static int clientExpireTime = 30; + private static String clientsKeyPrefix = "clients:"; + private static String clientKeyPrefix = "client:"; + + @Autowired + private JedisTemplate jedisTemplate; + + private static Logger logger = LoggerFactory + .getLogger(RedisClientRepository.class); + + /** + * + * 客户端列表 clients:[appkey] -> [did]:[os]:[version]:[label] -> [AppClientUID]
+ * 客户端自动刷新 client:[AppClientUID] -> 1 + * + * @param client + * @return + * @author flatychen + */ + public void setClientKey(ClientPacket client) { + jedisTemplate.hset(clientsKeyPrefix + client.getAppKey(), + client.getRedisField(), client.getAppClientUID()); + jedisTemplate.setex(clientKeyPrefix + client.getAppClientUID(), "1", + clientExpireTime); + } + + /** + * + * 客户端自动刷新 client:[AppClientUID] -> 1 + * + * @param client + * @return + * @author flatychen + */ + public void touchClient(ClientPacket client) { + jedisTemplate.setex(clientKeyPrefix + client.getAppClientUID(), "1", + clientExpireTime); + } + +} diff --git a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/AbstractChannelInitializer.java b/src/main/java/cn/flaty/NettyPush/server/channelInitializer/AbstractChannelInitializer.java index 43b8f5d..aeff63a 100644 --- a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/AbstractChannelInitializer.java +++ b/src/main/java/cn/flaty/NettyPush/server/channelInitializer/AbstractChannelInitializer.java @@ -5,6 +5,15 @@ import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; +/** + * + * 抽像ChannelInitializer
+ * + * 用于组织不同的channel + * + * @author flatychen + * + */ public abstract class AbstractChannelInitializer extends ChannelInitializer { private ChannelHandler[] inHandlers; @@ -27,7 +36,7 @@ protected void initChannel(Channel ch) throws Exception { } this.initPipeline(pipeline); if (outHandlers != null) { - //pipeline.addl(outHandlers); + // pipeline.addl(outHandlers); } } diff --git a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/HttpChannelInitializer.java b/src/main/java/cn/flaty/NettyPush/server/channelInitializer/HttpChannelInitializer.java index a02130b..279d954 100644 --- a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/HttpChannelInitializer.java +++ b/src/main/java/cn/flaty/NettyPush/server/channelInitializer/HttpChannelInitializer.java @@ -1,30 +1,37 @@ package cn.flaty.NettyPush.server.channelInitializer; -import cn.flaty.NettyPush.server.handler.HttpDemoHandler; import io.netty.channel.ChannelPipeline; import io.netty.handler.codec.http.HttpRequestDecoder; import io.netty.handler.codec.http.HttpResponseEncoder; +import cn.flaty.NettyPush.server.handler.HttpDemoHandler; + +/** + * + * http channel + * + * @author flatychen + * + */ +public class HttpChannelInitializer extends AbstractChannelInitializer { -public class HttpChannelInitializer extends AbstractChannelInitializer{ - private static String HTTPDECODER = "httpDecoder"; private static String HTTPENCODER = "httpEncoder"; @Override protected void initPipeline(ChannelPipeline pipeline) { - this.addBaseChannel(pipeline); - - this.addCustomChannel(pipeline); + this.addBaseChannel(pipeline); + + this.addCustomChannel(pipeline); } - + private void addCustomChannel(ChannelPipeline pipeline) { pipeline.addLast(new HttpDemoHandler()); - + } - private void addBaseChannel(ChannelPipeline pipeline){ - pipeline.addFirst(HTTPDECODER, new HttpRequestDecoder()); - pipeline.addFirst(HTTPENCODER, new HttpResponseEncoder()); + private void addBaseChannel(ChannelPipeline pipeline) { + pipeline.addFirst(HTTPDECODER, new HttpRequestDecoder()); + pipeline.addFirst(HTTPENCODER, new HttpResponseEncoder()); } } diff --git a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/PushChannelInitializer.java b/src/main/java/cn/flaty/NettyPush/server/channelInitializer/PushChannelInitializer.java index 2265277..0a2c4d6 100644 --- a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/PushChannelInitializer.java +++ b/src/main/java/cn/flaty/NettyPush/server/channelInitializer/PushChannelInitializer.java @@ -2,9 +2,6 @@ import io.netty.channel.ChannelPipeline; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Required; import cn.flaty.NettyPush.server.codec.push.DeserializeHandler; @@ -14,27 +11,34 @@ import cn.flaty.NettyPush.server.codec.push.SplitFrameDecoder; import cn.flaty.NettyPush.server.frame.FrameHead; -public class PushChannelInitializer extends AbstractChannelInitializer{ +/** + * + * 推送channel pipeline + * + * @author flatychen + * + */ +public class PushChannelInitializer extends AbstractChannelInitializer { - - private static Logger log = LoggerFactory.getLogger(PushChannelInitializer.class); - private FrameHead frameHeader; - + @Override protected void initPipeline(ChannelPipeline pipeline) { - // 解码器 + + // 切包,粘包 pipeline.addLast(new SplitFrameDecoder(frameHeader)); + // 解码 pipeline.addLast(new PushFrameDecoder(frameHeader)); - + // 编码器 + // 粘包 pipeline.addLast(new MergeFrameEncoder(frameHeader)); - + // 编码 pipeline.addLast(new PushFrameEncoder(frameHeader)); - + + // 业务处理 pipeline.addLast(new DeserializeHandler()); - - + } @Required @@ -42,5 +46,4 @@ public void setFrameHeader(FrameHead frameHeader) { this.frameHeader = frameHeader; } - } diff --git a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/SocketChannelInitializer.java b/src/main/java/cn/flaty/NettyPush/server/channelInitializer/SocketChannelInitializer.java deleted file mode 100644 index 3b49b7d..0000000 --- a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/SocketChannelInitializer.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.flaty.NettyPush.server.channelInitializer; - -import io.netty.channel.ChannelPipeline; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import cn.flaty.NettyPush.server.codec.push.DeserializeHandler; -import cn.flaty.NettyPush.server.codec.push.PushFrameDecoder; -import cn.flaty.NettyPush.server.codec.push.SplitFrameDecoder; - -public class SocketChannelInitializer extends AbstractChannelInitializer{ - - - private static Logger log = LoggerFactory.getLogger(SocketChannelInitializer.class); - - @Override - protected void initPipeline(ChannelPipeline pipeline) { - - // 解码器 - - - - // 编码器 - //pipeline.addLast(new PushFrameDecoder()); - //pipeline.addLast(new PushFrameDecoder()); - - } - - -} diff --git a/src/main/java/cn/flaty/NettyPush/server/codec/push/DeserializeHandler.java b/src/main/java/cn/flaty/NettyPush/server/codec/push/DeserializeHandler.java index 954ecba..e919c45 100644 --- a/src/main/java/cn/flaty/NettyPush/server/codec/push/DeserializeHandler.java +++ b/src/main/java/cn/flaty/NettyPush/server/codec/push/DeserializeHandler.java @@ -1,18 +1,22 @@ package cn.flaty.NettyPush.server.codec.push; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.BeansException; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; import cn.flaty.NettyPush.server.conn.NettyConnection; import cn.flaty.NettyPush.services.ClientDispacherService; import cn.flaty.NettyPush.utils.beanFactoryUtils; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; -import io.netty.channel.SimpleChannelInboundHandler; +/** + * + * 业务处理. + * + * @author flatychen + * + */ public class DeserializeHandler extends SimpleChannelInboundHandler { private ClientDispacherService deserialize; @@ -27,11 +31,10 @@ public DeserializeHandler() { @Override protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception { - log.info("receive msg:{}",msg); + log.info("receive msg:{}", msg); + // 分发 NettyConnection conn = new NettyConnection(ctx); deserialize.dispacher(conn, msg); } - - } \ No newline at end of file diff --git a/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameDecoder.java b/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameDecoder.java index 399ae66..b5b0681 100644 --- a/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameDecoder.java +++ b/src/main/java/cn/flaty/NettyPush/server/codec/push/PushFrameDecoder.java @@ -5,7 +5,6 @@ import io.netty.handler.codec.ByteToMessageDecoder; import java.net.InetSocketAddress; -import java.text.MessageFormat; import java.util.List; import org.slf4j.Logger; @@ -15,15 +14,22 @@ import cn.flaty.NettyPush.server.frame.SimplePushInFrame; import cn.flaty.NettyPush.utils.AssertUtils; +/** + * + * 根据包头解码 + * + * @author flatychen + * + */ public class PushFrameDecoder extends ByteToMessageDecoder { - private Logger log = LoggerFactory.getLogger(PushFrameDecoder.class); + private Logger log = LoggerFactory.getLogger(PushFrameDecoder.class); private FrameHead frameHead; public PushFrameDecoder(FrameHead frameHead) { super(); - AssertUtils.notNull(frameHead, "----> frameHead 不能为空 "); + AssertUtils.notNull(frameHead, " frameHead 不能为空 "); this.frameHead = frameHead; } @@ -33,20 +39,21 @@ protected void decode(ChannelHandlerContext ctx, ByteBuf in, int bytesHaveRead = in.readableBytes(); - if( bytesHaveRead == 0){ - InetSocketAddress isa = (InetSocketAddress) ctx.channel().remoteAddress(); + // 读到0字节时且有读事件发生时为TCP rst重置 + if (bytesHaveRead == 0) { + InetSocketAddress isa = (InetSocketAddress) ctx.channel() + .remoteAddress(); log.warn("----> {} 关闭 ", isa.toString()); in.release(); - return ; + return; } - byte [] bytes = new byte[bytesHaveRead]; + byte[] bytes = new byte[bytesHaveRead]; in.readBytes(bytes); + // 包解码 SimplePushInFrame frame = new SimplePushInFrame(frameHead, bytes); String _s = frame.getBody(); out.add(_s); } - - } diff --git a/src/main/java/cn/flaty/NettyPush/server/codec/push/SplitFrameDecoder.java b/src/main/java/cn/flaty/NettyPush/server/codec/push/SplitFrameDecoder.java index 1332c21..8dd10fb 100644 --- a/src/main/java/cn/flaty/NettyPush/server/codec/push/SplitFrameDecoder.java +++ b/src/main/java/cn/flaty/NettyPush/server/codec/push/SplitFrameDecoder.java @@ -6,7 +6,10 @@ import cn.flaty.NettyPush.server.frame.FrameHead; /** - * @author flaty + * + * 使用netty 自带进行 切包,粘包 + * + * @author flatychen * */ public class SplitFrameDecoder extends LengthFieldBasedFrameDecoder { @@ -16,15 +19,15 @@ public SplitFrameDecoder(FrameHead frameHead) { .headLength(), frameHead.byteLength()); } - /* - * 防止内存拷贝 - * @see io.netty.handler.codec.LengthFieldBasedFrameDecoder#extractFrame(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, int, int) + /* + * 直接切除包头长度字节.防止内存拷贝 */ @Override protected ByteBuf extractFrame(ChannelHandlerContext ctx, ByteBuf buffer, int index, int length) { // 增加一次引用计数 buffer.retain(); + // 切聊包头长度字节 return buffer.slice(index, length); } } diff --git a/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java b/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java index 09561f7..7f67de2 100644 --- a/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java +++ b/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java @@ -15,6 +15,13 @@ import com.google.common.cache.RemovalListener; import com.google.common.cache.RemovalNotification; +/** + * + * 使用guava 存储tcp本地连接 + * + * @author flatychen + * + */ public class GuavaConnPool implements NettyConnectionPool { diff --git a/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnection.java b/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnection.java index 772fda4..183376d 100644 --- a/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnection.java +++ b/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnection.java @@ -4,6 +4,13 @@ import io.netty.channel.ChannelHandlerContext; import cn.flaty.NettyPush.utils.AssertUtils; +/** + * + * TCP 连接 + * + * @author flatychen + * + */ public class NettyConnection { private ChannelHandlerContext context; diff --git a/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnectionPool.java b/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnectionPool.java index 83d05c5..ec3ec4a 100644 --- a/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnectionPool.java +++ b/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnectionPool.java @@ -2,18 +2,52 @@ import java.util.Map; +/** + * + * 本地TCP连接池 + * + * @author flatychen + * + * @param + * @param + */ public interface NettyConnectionPool { + /** + * 放连接 + * + * @param key + * @param t + * @return + * @author flatychen + */ public boolean set(K key, V t); + /** + * 刷新连接 + * + * @param key + * @return + * @author flatychen + */ public boolean touch(K key); + /** + * + * 根据key取连接 + * + * @param key + * @return + * @author flatychen + */ public V get(K key); /** * 消耗性能,仅用于测试! + * * @return */ + @Deprecated public Map asMap(); } diff --git a/src/main/java/cn/flaty/NettyPush/server/frame/FrameHead.java b/src/main/java/cn/flaty/NettyPush/server/frame/FrameHead.java index da01537..be53a67 100644 --- a/src/main/java/cn/flaty/NettyPush/server/frame/FrameHead.java +++ b/src/main/java/cn/flaty/NettyPush/server/frame/FrameHead.java @@ -1,10 +1,17 @@ package cn.flaty.NettyPush.server.frame; -public interface FrameHead { +/** + * + * 包头长度定义 + * + * @author flatychen + * + */ +public interface FrameHead { public static enum charset { - NULL, US_ASCII, ISO_8859_1,UTF_8,GBK,GB2312 + NULL, US_ASCII, ISO_8859_1, UTF_8, GBK, GB2312 } @@ -12,31 +19,30 @@ public static enum encype { NULL } - - /** * 用于切包的,包长度所占字节数 + * * @return */ int byteLength(); /** * 包最大支持的报文长度 + * * @return */ int maxLength(); - - /** * 包头部所占字节 + * * @return */ int headLength(); /** * 包长度转换 - * + * * @param b * @return */ @@ -44,7 +50,7 @@ public static enum encype { /** * 包长度转换 - * + * * @param length * @return */ diff --git a/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushHead.java b/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushHead.java index 78b8b70..09ebaf8 100644 --- a/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushHead.java +++ b/src/main/java/cn/flaty/NettyPush/server/frame/SimplePushHead.java @@ -2,6 +2,14 @@ import cn.flaty.NettyPush.utils.ByteUtil; +/** + * + * 简单推送包头定义
+ * 4字节长度, 4字节包头 + * + * @author flatychen + * + */ public class SimplePushHead implements FrameHead { public final int FRAME_LENGTH_BYTES = 4; diff --git a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java index 309c30c..6579888 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java @@ -11,7 +11,9 @@ import cn.flaty.NettyPush.utils.FastJsonUtils; /** - * @author Administrator + * 服务端报文分发 + * + * @author flatychen * */ @Service @@ -31,16 +33,16 @@ public class ClientDispacherService extends ConnPoolService { */ public void dispacher(NettyConnection conn, String data) { GenericPacket m = new GenericPacket(data); + // 得到包命令 int commond = m.getCommond(); - // 新连接 if (commond == GenericPacket.client_connected) { this.validateAndSave(conn, m.getMessage()); - // 心跳 + // 心跳,刷新客户端 } else if (commond == GenericPacket.client_heart) { - this.keepAliveOfDb(m.getMessage()); + this.keepAliveOfClient(m.getMessage()); } else { - log.error(" invalid commond type ."); + log.error(" invalid client packet type."); } } @@ -58,43 +60,33 @@ private void validateAndSave(NettyConnection conn, String message) { try { client = FastJsonUtils.praseToObject(message, ClientPacket.class); } catch (Exception e) { - log.error("连接报文不合法: {}", e.getMessage()); + log.error("连接发送包不合法: {}", e.getMessage()); return; } // 检查是否有消息需要发送 - pushService.sendNewClient(client, conn); + pushService.sendForNewClient(client, conn); - // 保存连接信息于本地连接池中和DB中 - super.saveClientInfo(client); + // 保存连接信息于本地连接池 pool.set(client.getDid(), conn); - // 自动刷新DB中客户端数据 - // this.startRefleshClientOfDb(); - } + // 保存连接信息于redis中 - private void startRefleshClientOfDb() { - if (!super.isRefleshClient()) { - super.delExpireClientsOfDb(); - } } /** * - * 维持数据库客户端更新 + * 刷新客户端 * * @param conn * @param message */ - private void keepAliveOfDb(String message) { + private void keepAliveOfClient(String message) { log.info("heartBeat:{}", message); ClientPacket client = FastJsonUtils.praseToObject(message, ClientPacket.class); - System.out.println(pool.get(client.getDid())); - - super.resetClientExpire(client); pool.touch(client.getDid()); } diff --git a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java index 80c039b..01aa5d8 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java @@ -1,69 +1,19 @@ package cn.flaty.NettyPush.services; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.entity.packet.ClientPacket; -import cn.flaty.NettyPush.entity.persitence.Client; -import cn.flaty.NettyPush.repository.ClientRepository; +import cn.flaty.NettyPush.nosql.RedisClientRepository; import cn.flaty.NettyPush.server.conn.NettyConnection; import cn.flaty.NettyPush.server.conn.NettyConnectionPool; -import cn.flaty.NettyPush.utils.AssertUtils; @Service public abstract class ConnPoolService { - private volatile boolean isRefleshing = false; - @Autowired - private ClientRepository clientInfoRepo; + private RedisClientRepository clientRepo; @Autowired protected NettyConnectionPool pool; - protected List queryClients(ClientPacket client) { - return clientInfoRepo.queryClients(client.getDid()); - } - - protected void saveClientInfo(ClientPacket client) { - AssertUtils.notNull(client); - AssertUtils.notNull(client.getDid()); - Client c = this.getClient(client.getDid()); - if (c == null) { - clientInfoRepo.insertClient(client); - } else { - clientInfoRepo.updateClient(client); - } - - } - - protected void resetClientExpire(ClientPacket client) { - AssertUtils.notNull(client); - AssertUtils.notNull(client.getDid()); - clientInfoRepo.updateClient(client); - } - - protected void delExpireClientsOfDb() { - this.isRefleshing = true; - Timer refleshClientInfo = new Timer("refleshClientInfo"); - refleshClientInfo.schedule(new TimerTask() { - @Override - public void run() { - clientInfoRepo.delExpireClient(); - } - }, 1024, ClientRepository.client_db_live_time); - } - - protected Client getClient(String did) { - return clientInfoRepo.getClient(did); - } - - protected boolean isRefleshClient() { - return isRefleshing; - } - } diff --git a/src/main/java/cn/flaty/NettyPush/services/PushService.java b/src/main/java/cn/flaty/NettyPush/services/PushService.java index 7d28e8a..144e49d 100644 --- a/src/main/java/cn/flaty/NettyPush/services/PushService.java +++ b/src/main/java/cn/flaty/NettyPush/services/PushService.java @@ -1,11 +1,5 @@ package cn.flaty.NettyPush.services; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -import org.apache.commons.beanutils.PropertyUtils; -import org.apache.commons.lang.time.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -13,14 +7,8 @@ import org.springframework.stereotype.Service; import cn.flaty.NettyPush.entity.packet.ClientPacket; -import cn.flaty.NettyPush.entity.packet.GenericPacket; -import cn.flaty.NettyPush.entity.persitence.Client; import cn.flaty.NettyPush.server.conn.NettyConnection; -import cn.flaty.NettyPush.utils.FastJsonUtils; -import cn.flaty.pushAdmin.entity.ClientMessage; -import cn.flaty.pushAdmin.entity.SurviveMessage; import cn.flaty.pushAdmin.entity.PushTextPacket; -import cn.flaty.pushAdmin.repository.ClientMessageRepository; @Service public class PushService extends ConnPoolService { @@ -28,8 +16,8 @@ public class PushService extends ConnPoolService { @Autowired private AsyncTaskExecutor task; - @Autowired - private ClientMessageRepository clientMessageRepository; + // @Autowired + // private ClientMessageRepository clientMessageRepository; private Logger log = LoggerFactory.getLogger(PushService.class); @@ -41,35 +29,35 @@ public class PushService extends ConnPoolService { */ public void sendOnLineClient(PushTextPacket pm) { - Long msgId = this.saveMessage(pm); - - List clients = Collections.unmodifiableList(super - .queryClients(new ClientPacket())); - NettyConnection conn = null; - for (Client clientInfo : clients) { - try { - conn = pool.get(clientInfo.getDid()); - if (conn != null) { - this.send(conn, msgId, clientInfo.getDid(), pm); - } - } catch (Exception e) { - log.error(e.getMessage()); - continue; - } - - } + // Long msgId = this.saveMessage(pm); + // + // List clients = Collections.unmodifiableList(super + // .queryClients(new ClientPacket())); + // NettyConnection conn = null; + // for (Client clientInfo : clients) { + // try { + // conn = pool.get(clientInfo.getDid()); + // if (conn != null) { + // this.send(conn, msgId, clientInfo.getDid(), pm); + // } + // } catch (Exception e) { + // log.error(e.getMessage()); + // continue; + // } + // + // } } private void send(NettyConnection conn, Long msgId, String did, PushTextPacket pm) throws Exception { - String _msg = (GenericPacket.server_push_text) - + FastJsonUtils.toJsonString(pm); - conn.writeAndFlush(_msg); - ClientMessage cm = new ClientMessage(); - cm.setDid(did); - cm.setSendTime(new Date().getTime()); - cm.setMsgId(msgId); - clientMessageRepository.insertMessageLog(cm); + // String _msg = (GenericPacket.server_push_text) + // + FastJsonUtils.toJsonString(pm); + // conn.writeAndFlush(_msg); + // ClientMessage cm = new ClientMessage(); + // cm.setDid(did); + // cm.setSendTime(new Date().getTime()); + // cm.setMsgId(msgId); + // clientMessageRepository.insertMessageLog(cm); } @@ -81,22 +69,22 @@ private void send(NettyConnection conn, Long msgId, String did, * @return * @author flatychen */ - private Long saveMessage(PushTextPacket pushMessage) { - SurviveMessage message = new SurviveMessage(); - try { - PropertyUtils.copyProperties(message, pushMessage); - } catch (Exception e) { - e.printStackTrace(); - } - - // 构造推送消息 - Date now = new Date(); - message.setAppkey("mypushTest"); - message.setExpireTime(DateUtils.addHours(now, 1).getTime()); - message.setMsgId(now.getTime()); - - clientMessageRepository.insertMessage(message); - return now.getTime(); + private void saveMessage(PushTextPacket pushMessage) { + // SurviveMessage message = new SurviveMessage(); + // try { + // PropertyUtils.copyProperties(message, pushMessage); + // } catch (Exception e) { + // e.printStackTrace(); + // } + // + // // 构造推送消息 + // Date now = new Date(); + // message.setAppkey("mypushTest"); + // message.setExpireTime(DateUtils.addHours(now, 1).getTime()); + // message.setMsgId(now.getTime()); + // + // clientMessageRepository.insertMessage(message); + // return now.getTime(); } /** @@ -107,32 +95,32 @@ private Long saveMessage(PushTextPacket pushMessage) { * @param conn * @author flatychen */ - public void sendNewClient(final ClientPacket client, + public void sendForNewClient(final ClientPacket client, final NettyConnection conn) { - final List messages = Collections - .unmodifiableList(clientMessageRepository - .queryClientMessage(client)); - - if (messages.size() > 0) { - task.submit(new Runnable() { - @Override - public void run() { - for (SurviveMessage message : messages) { - PushTextPacket pm = new PushTextPacket(); - try { - PropertyUtils.copyProperties(pm, message); - send(conn, message.getMsgId(), client.getDid(), pm); - } catch (Exception e) { - e.printStackTrace(); - continue; - } - - } - - } - }); - } + // final List messages = Collections + // .unmodifiableList(clientMessageRepository + // .queryClientMessage(client)); + // + // if (messages.size() > 0) { + // task.submit(new Runnable() { + // @Override + // public void run() { + // for (SurviveMessage message : messages) { + // PushTextPacket pm = new PushTextPacket(); + // try { + // PropertyUtils.copyProperties(pm, message); + // send(conn, message.getMsgId(), client.getDid(), pm); + // } catch (Exception e) { + // e.printStackTrace(); + // continue; + // } + // + // } + // + // } + // }); + // } } diff --git a/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java index 94ac709..3e6b145 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java @@ -1,17 +1,12 @@ package cn.flaty.pushAdmin.repository; -import java.util.List; - -import cn.flaty.NettyPush.entity.packet.ClientPacket; -import cn.flaty.pushAdmin.entity.MessageLog; -import cn.flaty.pushAdmin.entity.SurviveMessage; public interface ClientMessageRepository { - public boolean insertMessageLog(SurviveMessage m); - - public boolean insertMessageLog(MessageLog messageLog); - - public List queryClientMessage(ClientPacket clientInfo); + // public boolean insertMessageLog(SurviveMessage m); + // + // public boolean insertMessageLog(MessageLog messageLog); + // + // public List queryClientMessage(ClientPacket clientInfo); } diff --git a/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java index 204cd90..222963b 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java @@ -1,47 +1,27 @@ package cn.flaty.pushAdmin.repository; -import java.util.Date; -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Repository; - -import cn.flaty.NettyPush.entity.packet.ClientPacket; -import cn.flaty.NettyPush.entity.persitence.Client; -import cn.flaty.NettyPush.repository.JdbcTemplateWrapper; -import cn.flaty.pushAdmin.entity.ClientMessage; -import cn.flaty.pushAdmin.entity.SurviveMessage; - -@Repository +//@Repository public class H2ClientMessageRepository implements ClientMessageRepository { - @Autowired - private JdbcTemplateWrapper jdbc; - - @Override - public boolean insertMessage(SurviveMessage m) { - String sql = " insert into tb_message(appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime) values(?,?,?,?,?,?,?,?)"; - return jdbc.saveORUpdate( - sql, - new Object[] { m.getAppkey(), new Date().getTime(), - m.getTitle(), m.getContent(), m.getFlag(), - m.getPushActionMixin(), m.getMsgId(), - m.getExpireTime() }) == 1; - } - - @Override - public List queryClientMessage(ClientPacket clientInfo) { - String sql = " select appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime from tb_message a where a.appkey = ? and a.expireTime >= ? and not exists ( select * from tb_client_message b where a.msgid = b.msgid )"; - return jdbc.queryForBeanList(sql, SurviveMessage.class, new Object[] { - clientInfo.getAppKey(), new Date().getTime() }); - } - - @Override - public boolean insertMessageLog(ClientMessage cm) { - String sql = " insert into tb_client_message(did,msgid,sendtime) values(?,?,?)"; - return jdbc.saveORUpdate( - sql, - new Object[] { cm.getDid(),cm.getMsgId(),cm.getSendTime() }) == 1; - } - + /* + * @Autowired private JdbcTemplateWrapper jdbc; + * + * @Override public boolean insertMessage(SurviveMessage m) { String sql = + * " insert into tb_message(appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime) values(?,?,?,?,?,?,?,?)" + * ; return jdbc .saveORUpdate( sql, new Object[] { m.getAppkey(), new + * Date().getTime(), m.getTitle(), m.getContent(), m.getFlag(), + * m.getPushActionMixin(), m.getMsgId(), m.getExpireTime() }) == 1; } + * + * @Override public List queryClientMessage(ClientPacket + * clientInfo) { String sql = + * " select appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime from tb_message a where a.appkey = ? and a.expireTime >= ? and not exists ( select * from tb_client_message b where a.msgid = b.msgid )" + * ; return jdbc.queryForBeanList(sql, SurviveMessage.class, new Object[] { + * clientInfo.getAppKey(), new Date().getTime() }); } + * + * @Override public boolean insertMessageLog(ClientMessage cm) { String sql + * = " insert into tb_client_message(did,msgid,sendtime) values(?,?,?)"; + * return jdbc.saveORUpdate(sql, new Object[] { cm.getDid(), cm.getMsgId(), + * cm.getSendTime() }) == 1; } + */ } diff --git a/src/test/java/cn/flaty/nosql/JedisTemplateTest.java b/src/test/java/cn/flaty/nosql/JedisTemplateTest.java index 1db2ef1..b90dd57 100644 --- a/src/test/java/cn/flaty/nosql/JedisTemplateTest.java +++ b/src/test/java/cn/flaty/nosql/JedisTemplateTest.java @@ -3,6 +3,7 @@ import static org.junit.Assert.assertEquals; import java.util.Map; +import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -24,7 +25,7 @@ public class JedisTemplateTest extends SpringContextTestCase { private ExecutorService es; private static int threadSize = 10; - private static int loopSize = 10000 * 5; + private static int loopSize = 10000 * 100; @Autowired private JedisTemplate jedisTemplate; @@ -46,9 +47,9 @@ public void listTest() { } @Test - public void mapTest() throws InterruptedException { + public void mapPutTest() throws InterruptedException { final CountDownLatch latch = new CountDownLatch(1); - // jedisTemplate.flushDB(); + jedisTemplate.flushDB(); StopWatch watch = new StopWatch(); watch.start(); for (int i = 0; i < loopSize; i++) { @@ -56,8 +57,8 @@ public void mapTest() throws InterruptedException { es.submit(new Runnable() { @Override public void run() { - jedisTemplate.hset("users", "name" + j, j - + "baiwjggbaiwjggbaiwjggbaiwjggbaiwjgg"); + jedisTemplate.hset("users", "name" + j + ":4.0.1", j + + "baiwjgg"); if (j == (loopSize - 1)) { latch.countDown(); } @@ -66,14 +67,55 @@ public void run() { }); } - + watch.stop(); latch.await(); System.out.println("mapSet:" + watch.toString()); - watch.reset(); + } + + @Test + public void mapGetTest() throws InterruptedException { + StopWatch watch = new StopWatch(); watch.start(); Map result = jedisTemplate.hgetAll("users"); watch.stop(); System.out.println("mapGet:" + watch.toString()); System.out.println(result.size()); } + + @Test + public void setPutTest() throws InterruptedException { + final CountDownLatch latch = new CountDownLatch(1); + jedisTemplate.flushDB(); + StopWatch watch = new StopWatch(); + watch.start(); + for (int i = 0; i < loopSize; i++) { + final int j = i; + es.submit(new Runnable() { + @Override + public void run() { + jedisTemplate.sadd("clients", j + "baiwjgg"); + if (j == (loopSize - 1)) { + latch.countDown(); + } + } + + }); + + } + latch.await(); + watch.stop(); + System.out.println("setSet:" + watch.toString()); + } + + @Test + public void setGetTest() throws InterruptedException { + StopWatch watch = new StopWatch(); + watch.start(); + Set s = jedisTemplate.smembers("clients"); + watch.stop(); + System.out.println(s.size()); + System.out.println("getSet:" + watch.toString()); + Thread.sleep(600 * 1000); + } + } From c0afcd2c82306d4f6eec898faa4043f9476be644 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 1 Jun 2015 16:45:37 +0800 Subject: [PATCH 18/21] improvement architecture --- .../nosql/RedisClientRepository.java | 17 +++- .../HttpChannelInitializer.java | 37 -------- .../server/handler/EchoMsgHandler.java | 70 ---------------- .../server/handler/HttpDemoHandler.java | 84 ------------------- .../NettyPush/server/handler/TestHandler.java | 44 ---------- .../handler/WatchInBaseBoundHandler.java | 43 ---------- 6 files changed, 13 insertions(+), 282 deletions(-) delete mode 100644 src/main/java/cn/flaty/NettyPush/server/channelInitializer/HttpChannelInitializer.java delete mode 100644 src/main/java/cn/flaty/NettyPush/server/handler/EchoMsgHandler.java delete mode 100644 src/main/java/cn/flaty/NettyPush/server/handler/HttpDemoHandler.java delete mode 100644 src/main/java/cn/flaty/NettyPush/server/handler/TestHandler.java delete mode 100644 src/main/java/cn/flaty/NettyPush/server/handler/WatchInBaseBoundHandler.java diff --git a/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java b/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java index 5682466..e264c66 100644 --- a/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java @@ -8,6 +8,18 @@ import cn.flaty.NettyPush.entity.packet.ClientPacket; /** + * + *

+ * did -> 设备ID
+ * appkey -> app唯一标识码
+ * appClientUId = md5(appKey+did)    
+ * 
+ * client:[id] -> [appClientUId]  **[String]**  **expire[x second]** 
+ * [appkey] -> id  **[set]**
+ * [appkey]:[os] -> id         **[set]** 
+ * [appkey]:[appVer] -> id     **[set]**
+ * [appkey]:[label] -> id         **[set]**
+ * 
* * * @author flatychen @@ -28,14 +40,12 @@ public class RedisClientRepository { /** * - * 客户端列表 clients:[appkey] -> [did]:[os]:[version]:[label] -> [AppClientUID]
- * 客户端自动刷新 client:[AppClientUID] -> 1 * * @param client * @return * @author flatychen */ - public void setClientKey(ClientPacket client) { + public void saveClient(ClientPacket client) { jedisTemplate.hset(clientsKeyPrefix + client.getAppKey(), client.getRedisField(), client.getAppClientUID()); jedisTemplate.setex(clientKeyPrefix + client.getAppClientUID(), "1", @@ -44,7 +54,6 @@ public void setClientKey(ClientPacket client) { /** * - * 客户端自动刷新 client:[AppClientUID] -> 1 * * @param client * @return diff --git a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/HttpChannelInitializer.java b/src/main/java/cn/flaty/NettyPush/server/channelInitializer/HttpChannelInitializer.java deleted file mode 100644 index 279d954..0000000 --- a/src/main/java/cn/flaty/NettyPush/server/channelInitializer/HttpChannelInitializer.java +++ /dev/null @@ -1,37 +0,0 @@ -package cn.flaty.NettyPush.server.channelInitializer; - -import io.netty.channel.ChannelPipeline; -import io.netty.handler.codec.http.HttpRequestDecoder; -import io.netty.handler.codec.http.HttpResponseEncoder; -import cn.flaty.NettyPush.server.handler.HttpDemoHandler; - -/** - * - * http channel - * - * @author flatychen - * - */ -public class HttpChannelInitializer extends AbstractChannelInitializer { - - private static String HTTPDECODER = "httpDecoder"; - private static String HTTPENCODER = "httpEncoder"; - - @Override - protected void initPipeline(ChannelPipeline pipeline) { - this.addBaseChannel(pipeline); - - this.addCustomChannel(pipeline); - } - - private void addCustomChannel(ChannelPipeline pipeline) { - pipeline.addLast(new HttpDemoHandler()); - - } - - private void addBaseChannel(ChannelPipeline pipeline) { - pipeline.addFirst(HTTPDECODER, new HttpRequestDecoder()); - pipeline.addFirst(HTTPENCODER, new HttpResponseEncoder()); - } - -} diff --git a/src/main/java/cn/flaty/NettyPush/server/handler/EchoMsgHandler.java b/src/main/java/cn/flaty/NettyPush/server/handler/EchoMsgHandler.java deleted file mode 100644 index 9bd28f9..0000000 --- a/src/main/java/cn/flaty/NettyPush/server/handler/EchoMsgHandler.java +++ /dev/null @@ -1,70 +0,0 @@ -package cn.flaty.NettyPush.server.handler; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.buffer.Unpooled; -import io.netty.channel.ChannelHandler.Sharable; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; -import io.netty.util.CharsetUtil; - -import java.net.InetSocketAddress; -import java.text.MessageFormat; -import java.util.Arrays; -import java.util.Random; -import java.util.concurrent.Executors; - -@Sharable -public class EchoMsgHandler extends ChannelInboundHandlerAdapter { - - public final int echoTimes = 20; - - @Override - public void channelRead(ChannelHandlerContext ctx, Object msg) - throws Exception { - ByteBuf in = (ByteBuf) msg; - String s = in.toString(CharsetUtil.UTF_8); - System.out.println(Arrays.toString(s.getBytes())); - System.out.println(MessageFormat.format("received from [{1}]; msg:{3}", - 1, getRemoteHost(ctx), 3, s)); - //in.release(); - //String s2 = EchoMsgHandler.getRandomString(4096); - //System.out.println(s2); - //this.writeMsg(ctx, s2); - - } - - private String getRemoteHost(ChannelHandlerContext ctx) { - InetSocketAddress socket = (InetSocketAddress) ctx.channel() - .remoteAddress(); - return socket.getHostName() + ":" + socket.getPort(); - } - - public static String getRandomString(int length) { //length表示生成字符串的长度 - String base = "abcdefghijklmnopqrstuvwxyz0123456789"; - Random random = new Random(); - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < length; i++) { - int number = random.nextInt(base.length()); - sb.append(base.charAt(number)); - } - return sb.toString(); - } - - public void writeMsg(final ChannelHandlerContext ctx, final String msg) { - try { - System.out.println("sleep"); - Thread.sleep(20000); - } catch (InterruptedException e1) { - e1.printStackTrace(); - } - Executors.newFixedThreadPool(echoTimes).submit(new Runnable() { - @Override - public void run() { - ctx.writeAndFlush(Unpooled.wrappedBuffer(msg.getBytes())); - - } - }); - - } -} diff --git a/src/main/java/cn/flaty/NettyPush/server/handler/HttpDemoHandler.java b/src/main/java/cn/flaty/NettyPush/server/handler/HttpDemoHandler.java deleted file mode 100644 index 1988dd3..0000000 --- a/src/main/java/cn/flaty/NettyPush/server/handler/HttpDemoHandler.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.flaty.NettyPush.server.handler; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import io.netty.channel.ChannelHandler.Sharable; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; -import io.netty.channel.SimpleChannelInboundHandler; -import io.netty.handler.codec.http.DefaultFullHttpResponse; -import io.netty.handler.codec.http.FullHttpResponse; -import io.netty.handler.codec.http.HttpContent; -import io.netty.handler.codec.http.HttpHeaders; -import io.netty.handler.codec.http.HttpHeaders.Names; -import io.netty.handler.codec.http.HttpResponseStatus; -import io.netty.handler.codec.http.HttpVersion; -import io.netty.handler.codec.http.HttpHeaders.Values; -import io.netty.handler.codec.http.HttpObject; -import io.netty.handler.codec.http.HttpRequest; - -import java.net.InetSocketAddress; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@Sharable -public class HttpDemoHandler extends ChannelInboundHandlerAdapter { - - private Logger log = LoggerFactory.getLogger(HttpDemoHandler.class); - - /*@Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - InetSocketAddress socket = this.getClientSocket(ctx); - log.info(MessageFormat.format("one client connected; host:{1}", 1, - InetSocketUtils.getSocketAddress(socket))); - }*/ - - @Override - public void channelRead(ChannelHandlerContext ctx, Object msg) - throws Exception { - System.out.println(msg); - this.writeMsg(ctx, msg); - } - - - public final InetSocketAddress getClientSocket(ChannelHandlerContext ctx) { - return (InetSocketAddress) ctx.channel().remoteAddress(); - } - - - - private void writeMsg(ChannelHandlerContext ctx, Object msg){ - //ctx.writeAndFlush(Unpooled.wrappedBuffer("test".getBytes())); - if (msg instanceof HttpRequest) { - - HttpRequest request = (HttpRequest) msg; - System.out.println("messageType:" + request.headers().get("messageType")); -// } -// if (msg instanceof HttpContent) { - FullHttpResponse response = new DefaultFullHttpResponse( HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.wrappedBuffer("I am ok" - .getBytes())); - response.headers().set(Names.CONTENT_TYPE, "text/plain"); - response.headers().set(Names.CONTENT_LENGTH, response.content().readableBytes()); - response.headers().set(Names.CONNECTION, Values.KEEP_ALIVE); - ctx.writeAndFlush(response); - try { - Thread.sleep(5000); - FullHttpResponse response2 = new DefaultFullHttpResponse( HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.wrappedBuffer("I am okf dfd" - .getBytes())); - response2.headers().set(Names.CONTENT_TYPE, "text/plain"); - response2.headers().set(Names.CONTENT_LENGTH, response.content().readableBytes()); - response2.headers().set(Names.CONNECTION, Values.KEEP_ALIVE); - System.out.println("2"); - ctx.writeAndFlush(response2); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - -} - - - - diff --git a/src/main/java/cn/flaty/NettyPush/server/handler/TestHandler.java b/src/main/java/cn/flaty/NettyPush/server/handler/TestHandler.java deleted file mode 100644 index 33fa624..0000000 --- a/src/main/java/cn/flaty/NettyPush/server/handler/TestHandler.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.flaty.NettyPush.server.handler; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.buffer.Unpooled; -import io.netty.channel.ChannelHandler.Sharable; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; -import io.netty.util.CharsetUtil; - -import java.net.InetSocketAddress; -import java.text.MessageFormat; -import java.util.Arrays; -import java.util.Random; -import java.util.concurrent.Executors; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import cn.flaty.NettyPush.server.codec.push.DeserializeHandler; -import cn.flaty.NettyPush.server.conn.NettyConnection; -import cn.flaty.NettyPush.services.ClientDispacherService; -import cn.flaty.NettyPush.utils.beanFactoryUtils; - -@Sharable -public class TestHandler extends ChannelInboundHandlerAdapter { - - private ClientDispacherService deserialize; - - private Logger log = LoggerFactory.getLogger(DeserializeHandler.class); - - public TestHandler() { - super(); - deserialize = beanFactoryUtils.getClientDispacherService(); - } - - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - NettyConnection conn = new NettyConnection(ctx); - deserialize.dispacher(conn, ""); - } - - -} diff --git a/src/main/java/cn/flaty/NettyPush/server/handler/WatchInBaseBoundHandler.java b/src/main/java/cn/flaty/NettyPush/server/handler/WatchInBaseBoundHandler.java deleted file mode 100644 index 907aefd..0000000 --- a/src/main/java/cn/flaty/NettyPush/server/handler/WatchInBaseBoundHandler.java +++ /dev/null @@ -1,43 +0,0 @@ -package cn.flaty.NettyPush.server.handler; - -import io.netty.channel.ChannelHandler.Sharable; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; - -import java.net.InetSocketAddress; -import java.text.MessageFormat; -import java.util.concurrent.atomic.AtomicInteger; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import cn.flaty.NettyPush.utils.InetSocketUtils; - -@Sharable -public class WatchInBaseBoundHandler extends ChannelInboundHandlerAdapter { - - private Logger log = LoggerFactory.getLogger(WatchInBaseBoundHandler.class); - - private AtomicInteger threads = new AtomicInteger(0); - - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - InetSocketAddress socket = this.getClientSocket(ctx); - log.info(MessageFormat.format("one client connected; host:{1}", 1, - InetSocketUtils.getSocketAddress(socket))); - log.info("the client counts is:" + (threads.getAndIncrement() + 1) - + "~~"); - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { - log.warn(MessageFormat.format("-->与客户端{1}断开连接; msg:{3}", 1, - InetSocketUtils.getSocketAddress(this.getClientSocket(ctx)), 3, - cause.getMessage())); - } - - public final InetSocketAddress getClientSocket(ChannelHandlerContext ctx) { - return (InetSocketAddress) ctx.channel().remoteAddress(); - } - -} From c4ebcd7628052abce261be4f97396a8e06fbc89e Mon Sep 17 00:00:00 2001 From: flatychen Date: Fri, 24 Jul 2015 21:39:15 +0800 Subject: [PATCH 19/21] add readmi --- README.md | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index abf3d1c..10115d6 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,35 @@ -nettyPusher -=========== -#a mobile android/ios pusher by netty -include -* socket connection keepalive -* java nio -* netty -* a custom binary protocol +**用netty写的TCP基础通信服务器** +###基础通信协议 + 简单的基础的自定义通信协议 + +-------+----+-----+----------------+ + bytes | 4 | 1 | 3 | ... | + +------+-----+-----+----------------+ + packet | 长度 | 编码 | 保留 | 包体 | + +------+-----+-----+----------------+ + +###master分支 +* 一个简单的netty tcp socket通信 + +> java客户端详见 [基于nio的java客户端](https://github.com/flatychen/nettyPusherClient) + +###web分支 + +为区分报文类型在包体加上**4字节**,**因业务不同**,故放包体中 + + 包体 + +--------+----------------+ + bytes | 4 | ... | + +--------+----------------+ + packet | 报文类型| 报文内容 | + +--------+----------------+ + +* 实现简单的推送(android) +* 使用h2+guava进行连接管理 +* 心跳处理 + + +> android客户端详见 [android客户端](https://github.com/flatychen/nettyPusherAndroid) + From 51e6b30dc534685f421d09b48ecd352f670a3c3f Mon Sep 17 00:00:00 2001 From: flatychen Date: Fri, 24 Jul 2015 21:46:32 +0800 Subject: [PATCH 20/21] add readme --- README.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 10115d6..1fc9414 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ -**用netty写的TCP基础通信服务器** ###基础通信协议 简单的基础的自定义通信协议 +-------+----+-----+----------------+ @@ -8,11 +7,7 @@ +------+-----+-----+----------------+ packet | 长度 | 编码 | 保留 | 包体 | +------+-----+-----+----------------+ - -###master分支 -* 一个简单的netty tcp socket通信 - -> java客户端详见 [基于nio的java客户端](https://github.com/flatychen/nettyPusherClient) + ###web分支 @@ -26,7 +21,7 @@ +--------+----------------+ * 实现简单的推送(android) -* 使用h2+guava进行连接管理 +* 使用redis存储客户端与消息 * 心跳处理 From b408a02c698ba0b9547764a8fea592b93c2a2c8b Mon Sep 17 00:00:00 2001 From: flatychen Date: Mon, 27 Jul 2015 00:08:28 +0800 Subject: [PATCH 21/21] complete simple version --- .gitignore | 4 + README.md | 7 +- .../NettyPush/entity/packet/ClientPacket.java | 6 + .../NettyPush/entity/persitence/Client.java | 5 +- .../nosql/RedisClientRepository.java | 2 +- .../repository/ClientRepository.java | 4 +- .../repository/H2ClientRepository.java | 10 +- .../repository/MysqlClientRepository.java | 5 +- .../NettyPush/server/conn/GuavaConnPool.java | 2 +- .../server/conn/NettyConnection.java | 8 + .../services/ClientDispacherService.java | 14 +- .../NettyPush/services/ConnPoolService.java | 55 +++++- .../flaty/NettyPush/services/PushService.java | 172 ++++++++++-------- .../entity/{MessageLog.java => Message.java} | 41 +---- ...TextPacket.java => PushMessagePacket.java} | 14 +- .../flaty/pushAdmin/entity/SendedMessage.java | 41 +++++ .../pushAdmin/entity/SurviveMessage.java | 11 -- .../repository/ClientMessageRepository.java | 16 +- .../repository/H2ClientMessageRepository.java | 61 ++++--- .../pushAdmin/services/PushServiceProxy.java | 8 +- .../pushAdmin/views/BaseInterceptor.java | 7 + .../views/push/PushMessageController.java | 8 +- .../pushAdmin/views/push/PushMessageForm.java | 18 +- src/main/resources/config/jdbc.properties | 18 +- src/main/resources/config/server.properties | 2 +- .../spring/applicationDataSource.xml | 2 +- src/main/resources/sql/schema.sql | 18 +- src/test/java/cn/flaty/StartServer.java | 6 +- src/test/resources/logback-test.xml | 11 +- 29 files changed, 381 insertions(+), 195 deletions(-) rename src/main/java/cn/flaty/pushAdmin/entity/{MessageLog.java => Message.java} (57%) rename src/main/java/cn/flaty/pushAdmin/entity/{PushTextPacket.java => PushMessagePacket.java} (71%) create mode 100644 src/main/java/cn/flaty/pushAdmin/entity/SendedMessage.java delete mode 100644 src/main/java/cn/flaty/pushAdmin/entity/SurviveMessage.java diff --git a/.gitignore b/.gitignore index ffbfa1c..1915f86 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ /target /.settings/* +logs/* +.classpath +.project +*.db *.class *.bak diff --git a/README.md b/README.md index 1fc9414..5160f3b 100644 --- a/README.md +++ b/README.md @@ -21,10 +21,15 @@ +--------+----------------+ * 实现简单的推送(android) -* 使用redis存储客户端与消息 +* 先用H2内存数据库做为开发环境 * 心跳处理 > android客户端详见 [android客户端](https://github.com/flatychen/nettyPusherAndroid) +###简单说明 + +- 开发环境使用嵌入式手动启动jetty,位于src/test/ startServer.java中 +- cn.flaty包下的PushAdmin包与NettyPush包分别对应着连接管理与消息管理后台,以为后面分离做好准备; +- 由于管理与连接暂时没分离,故连接的启动使用spring监听器启动 diff --git a/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java b/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java index 79dad5d..3053ab8 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java +++ b/src/main/java/cn/flaty/NettyPush/entity/packet/ClientPacket.java @@ -10,6 +10,12 @@ */ public class ClientPacket { + @Override + public String toString() { + return "ClientPacket [appKey=" + appKey + ", did=" + did + ", appVer=" + + appVer + ", os=" + os + "]"; + } + private String appKey; private String did; diff --git a/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java b/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java index 174898b..7328e39 100644 --- a/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java +++ b/src/main/java/cn/flaty/NettyPush/entity/persitence/Client.java @@ -6,12 +6,13 @@ public class Client extends ClientPacket { private long expireTime; - public long getUpdateTime() { + public long getExpireTime() { return expireTime; } - public void setUpdateTime(long expireTime) { + public void setExpireTime(long expireTime) { this.expireTime = expireTime; } + } diff --git a/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java b/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java index e264c66..97547a3 100644 --- a/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/nosql/RedisClientRepository.java @@ -32,7 +32,7 @@ public class RedisClientRepository { private static String clientsKeyPrefix = "clients:"; private static String clientKeyPrefix = "client:"; - @Autowired +// @Autowired private JedisTemplate jedisTemplate; private static Logger logger = LoggerFactory diff --git a/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java index 86fd90d..7fa5a8f 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/ClientRepository.java @@ -10,7 +10,7 @@ public interface ClientRepository { @SuppressWarnings("deprecation") - public static long client_db_live_time = DateUtils.MILLIS_IN_SECOND * 30; + public static long client_db_live_time = DateUtils.MILLIS_IN_SECOND * 40; public boolean insertClient(ClientPacket c); @@ -18,7 +18,7 @@ public interface ClientRepository { public List queryClients(String appKey); - public boolean updateClient(ClientPacket c); + public boolean touchClient(ClientPacket c); public boolean delExpireClient(); diff --git a/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java index 8083f3a..cbb3ae3 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/H2ClientRepository.java @@ -27,22 +27,22 @@ public boolean insertClient(ClientPacket c) { @Override public List queryClients(String appKey) { - String sql = " select appkey,did,expireTime from tb_online_client where appkey = ? "; + String sql = " select appkey,did,expireTime from tb_online_client where appkey = ? and expireTime > ? "; return jdbc - .queryForBeanList(sql, Client.class, new Object[] { appKey }); + .queryForBeanList(sql, Client.class, new Object[] { appKey ,new Date().getTime()}); } @Override public boolean delExpireClient() { - String sql = " delete from tb_online_client where expireTime > ? "; + String sql = " delete from tb_online_client where expireTime < ? "; return jdbc.saveORUpdate(sql, new Object[] { new Date().getTime() }) >= 1; } @Override - public boolean updateClient(ClientPacket c) { + public boolean touchClient(ClientPacket c) { String sql = " update tb_online_client set expireTime = ? where did = ?"; return jdbc.saveORUpdate(sql, - new Object[] { new Date().getTime(), c.getDid() }) == 1; + new Object[] { new Date().getTime() + ClientRepository.client_db_live_time , c.getDid() }) == 1; } @Override diff --git a/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java index ecc8d19..d9d6dc7 100644 --- a/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java +++ b/src/main/java/cn/flaty/NettyPush/repository/MysqlClientRepository.java @@ -31,14 +31,15 @@ public List queryClients(String appKey) { return null; } + @Override - public boolean updateClient(ClientPacket c) { + public boolean delExpireClient() { // TODO Auto-generated method stub return false; } @Override - public boolean delExpireClient() { + public boolean touchClient(ClientPacket c) { // TODO Auto-generated method stub return false; } diff --git a/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java b/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java index 7f67de2..ac57b71 100644 --- a/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java +++ b/src/main/java/cn/flaty/NettyPush/server/conn/GuavaConnPool.java @@ -35,7 +35,7 @@ public class GuavaConnPool implements @Override public void onRemoval( RemovalNotification notification) { - log.info(notification.getKey() + "is removed "); + log.debug(notification.getKey() + " is removed "); } }).build(new CacheLoader() { @Override diff --git a/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnection.java b/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnection.java index 183376d..74c6e51 100644 --- a/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnection.java +++ b/src/main/java/cn/flaty/NettyPush/server/conn/NettyConnection.java @@ -1,5 +1,9 @@ package cn.flaty.NettyPush.server.conn; + +import org.apache.log4j.spi.LoggerFactory; +import org.slf4j.Logger; + import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelHandlerContext; import cn.flaty.NettyPush.utils.AssertUtils; @@ -12,6 +16,9 @@ * */ public class NettyConnection { + + + private Logger log = org.slf4j.LoggerFactory.getLogger(NettyConnection.class); private ChannelHandlerContext context; @@ -22,6 +29,7 @@ public NettyConnection(ChannelHandlerContext context) { } public ChannelFuture writeAndFlush(String s) { + log.info("send:{}",s); return context.writeAndFlush(s); } diff --git a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java index 6579888..a7081fb 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ClientDispacherService.java @@ -67,13 +67,21 @@ private void validateAndSave(NettyConnection conn, String message) { // 检查是否有消息需要发送 pushService.sendForNewClient(client, conn); - // 保存连接信息于本地连接池 + // 保存连接信息于本地连接池中和DB中 + super.saveClientInfo(client); pool.set(client.getDid(), conn); - // 保存连接信息于redis中 + // 自动刷新DB中客户端数据 + this.startRefleshClientOfDb(); } + private void startRefleshClientOfDb() { + if (!super.isRefleshClient()) { + super.delExpireClientsOfDb(); + } + } + /** * * 刷新客户端 @@ -84,10 +92,12 @@ private void validateAndSave(NettyConnection conn, String message) { private void keepAliveOfClient(String message) { log.info("heartBeat:{}", message); + ClientPacket client = FastJsonUtils.praseToObject(message, ClientPacket.class); pool.touch(client.getDid()); + resetClientExpire(client); } } diff --git a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java index 01aa5d8..af773de 100644 --- a/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java +++ b/src/main/java/cn/flaty/NettyPush/services/ConnPoolService.java @@ -1,19 +1,70 @@ package cn.flaty.NettyPush.services; +import java.util.Date; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import org.apache.commons.lang.time.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import cn.flaty.NettyPush.nosql.RedisClientRepository; +import cn.flaty.NettyPush.entity.packet.ClientPacket; +import cn.flaty.NettyPush.entity.persitence.Client; +import cn.flaty.NettyPush.repository.ClientRepository; import cn.flaty.NettyPush.server.conn.NettyConnection; import cn.flaty.NettyPush.server.conn.NettyConnectionPool; +import cn.flaty.NettyPush.utils.AssertUtils; @Service public abstract class ConnPoolService { + private volatile boolean isRefleshing = false; @Autowired - private RedisClientRepository clientRepo; + private ClientRepository clientInfoRepo; @Autowired protected NettyConnectionPool pool; + protected List queryClients(ClientPacket client) { + return clientInfoRepo.queryClients(client.getAppKey()); + } + + protected void saveClientInfo(ClientPacket clientPacket) { + AssertUtils.notNull(clientPacket); + AssertUtils.notNull(clientPacket.getDid()); + Client client = this.getClient(clientPacket.getDid()); + if (client == null) { + clientInfoRepo.insertClient(clientPacket); + } else { + clientInfoRepo.touchClient(client); + } + + } + + protected void resetClientExpire(ClientPacket client) { + AssertUtils.notNull(client); + AssertUtils.notNull(client.getDid()); + clientInfoRepo.touchClient(client); + } + + protected void delExpireClientsOfDb() { + this.isRefleshing = true; + Timer refleshClientInfo = new Timer("refleshClientInfo"); + refleshClientInfo.schedule(new TimerTask() { + @Override + public void run() { + clientInfoRepo.delExpireClient(); + } + }, 1024, 1 * DateUtils.MILLIS_IN_HOUR); + } + + protected Client getClient(String did) { + return clientInfoRepo.getClient(did); + } + + protected boolean isRefleshClient() { + return isRefleshing; + } + } diff --git a/src/main/java/cn/flaty/NettyPush/services/PushService.java b/src/main/java/cn/flaty/NettyPush/services/PushService.java index 144e49d..4677512 100644 --- a/src/main/java/cn/flaty/NettyPush/services/PushService.java +++ b/src/main/java/cn/flaty/NettyPush/services/PushService.java @@ -1,5 +1,11 @@ package cn.flaty.NettyPush.services; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.lang.time.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -7,8 +13,14 @@ import org.springframework.stereotype.Service; import cn.flaty.NettyPush.entity.packet.ClientPacket; +import cn.flaty.NettyPush.entity.packet.GenericPacket; +import cn.flaty.NettyPush.entity.persitence.Client; import cn.flaty.NettyPush.server.conn.NettyConnection; -import cn.flaty.pushAdmin.entity.PushTextPacket; +import cn.flaty.NettyPush.utils.FastJsonUtils; +import cn.flaty.pushAdmin.entity.Message; +import cn.flaty.pushAdmin.entity.PushMessagePacket; +import cn.flaty.pushAdmin.entity.SendedMessage; +import cn.flaty.pushAdmin.repository.ClientMessageRepository; @Service public class PushService extends ConnPoolService { @@ -16,75 +28,91 @@ public class PushService extends ConnPoolService { @Autowired private AsyncTaskExecutor task; - // @Autowired - // private ClientMessageRepository clientMessageRepository; + @Autowired + private ClientMessageRepository clientMessageRepository; private Logger log = LoggerFactory.getLogger(PushService.class); /** * 推送
* FIXME 大用户?注意优化!! juc 包 + * @param client * * @param msg */ - public void sendOnLineClient(PushTextPacket pm) { - - // Long msgId = this.saveMessage(pm); - // - // List clients = Collections.unmodifiableList(super - // .queryClients(new ClientPacket())); - // NettyConnection conn = null; - // for (Client clientInfo : clients) { - // try { - // conn = pool.get(clientInfo.getDid()); - // if (conn != null) { - // this.send(conn, msgId, clientInfo.getDid(), pm); - // } - // } catch (Exception e) { - // log.error(e.getMessage()); - // continue; - // } - // - // } + public void sendOnLineClient(Client client, PushMessagePacket pm) { + + Long msgId = this.saveMessage(client,pm); + + + + List clients = Collections.unmodifiableList(super + .queryClients(client)); + NettyConnection conn = null; + + int size = clients.size(); + if (size > 0) { + log.info("sending {} client message:{}", clients.size(),pm.toString()); + for (Client clientInfo : clients) { + try { + conn = pool.get(clientInfo.getDid()); + if (conn != null) { + this.send(msgId, clientInfo, pm, conn); + } + } catch (Exception e) { + log.error(e.getMessage()); + continue; + } + + } + } else { + log.info("no client to send"); + } + } - private void send(NettyConnection conn, Long msgId, String did, - PushTextPacket pm) throws Exception { - // String _msg = (GenericPacket.server_push_text) - // + FastJsonUtils.toJsonString(pm); - // conn.writeAndFlush(_msg); - // ClientMessage cm = new ClientMessage(); - // cm.setDid(did); - // cm.setSendTime(new Date().getTime()); - // cm.setMsgId(msgId); - // clientMessageRepository.insertMessageLog(cm); + private void send(long msgId, ClientPacket client, PushMessagePacket pm, + NettyConnection conn) throws Exception { + + // 发送推送消息 + String _msg = (GenericPacket.server_push_text) + + FastJsonUtils.toJsonString(pm); + conn.writeAndFlush(_msg); + + // 标记消息已发送 + SendedMessage cm = new SendedMessage(); + cm.setDid(client.getDid()); + cm.setAppKey(client.getAppKey()); + cm.setMsgId(msgId); + clientMessageRepository.insertSendedMessage(cm); } /** * - * 保存消息于db和redis中 + * 保存消息于db中 * * @param pushMessage * @return * @author flatychen + * @param client */ - private void saveMessage(PushTextPacket pushMessage) { - // SurviveMessage message = new SurviveMessage(); - // try { - // PropertyUtils.copyProperties(message, pushMessage); - // } catch (Exception e) { - // e.printStackTrace(); - // } - // - // // 构造推送消息 - // Date now = new Date(); - // message.setAppkey("mypushTest"); - // message.setExpireTime(DateUtils.addHours(now, 1).getTime()); - // message.setMsgId(now.getTime()); - // - // clientMessageRepository.insertMessage(message); - // return now.getTime(); + private long saveMessage(Client client, PushMessagePacket pushMessage) { + Message message = new Message(); + try { + PropertyUtils.copyProperties(message, pushMessage); + } catch (Exception e) { + e.printStackTrace(); + } + + // 构造推送消息 + Date now = new Date(); + // 一小时过期 + message.setExpireTime(DateUtils.addHours(now, 1).getTime()); + message.setMsgId(now.getTime()); + message.setAppKey(client.getAppKey()); + clientMessageRepository.insertMessage(message); + return now.getTime(); } /** @@ -98,29 +126,29 @@ private void saveMessage(PushTextPacket pushMessage) { public void sendForNewClient(final ClientPacket client, final NettyConnection conn) { - // final List messages = Collections - // .unmodifiableList(clientMessageRepository - // .queryClientMessage(client)); - // - // if (messages.size() > 0) { - // task.submit(new Runnable() { - // @Override - // public void run() { - // for (SurviveMessage message : messages) { - // PushTextPacket pm = new PushTextPacket(); - // try { - // PropertyUtils.copyProperties(pm, message); - // send(conn, message.getMsgId(), client.getDid(), pm); - // } catch (Exception e) { - // e.printStackTrace(); - // continue; - // } - // - // } - // - // } - // }); - // } + final List messages = Collections + .unmodifiableList(clientMessageRepository + .queryClientMessage(client)); + + if (messages.size() > 0) { + task.submit(new Runnable() { + @Override + public void run() { + for (Message message : messages) { + PushMessagePacket pm = new PushMessagePacket(); + try { + PropertyUtils.copyProperties(pm, message); + send(message.getMsgId(), client, pm, conn); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + + } + + } + }); + } } diff --git a/src/main/java/cn/flaty/pushAdmin/entity/MessageLog.java b/src/main/java/cn/flaty/pushAdmin/entity/Message.java similarity index 57% rename from src/main/java/cn/flaty/pushAdmin/entity/MessageLog.java rename to src/main/java/cn/flaty/pushAdmin/entity/Message.java index 6b73aa3..61f672f 100644 --- a/src/main/java/cn/flaty/pushAdmin/entity/MessageLog.java +++ b/src/main/java/cn/flaty/pushAdmin/entity/Message.java @@ -20,53 +20,24 @@ pushActionMixin VARCHAR(200), * */ -public class MessageLog { +public class Message extends PushMessagePacket { private String appKey; - private String title; - - private String content; - - private int flag; - - private String pushActionMixin; + private long msgId; private long createTime; private long expireTime; - public String getPushActionMixin() { - return pushActionMixin; - } - - public void setPushActionMixin(String pushActionMixin) { - this.pushActionMixin = pushActionMixin; - } - - public String getTitle() { - return title; + public long getMsgId() { + return msgId; } - public void setTitle(String title) { - this.title = title; + public void setMsgId(long msgId) { + this.msgId = msgId; } - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public int getFlag() { - return flag; - } - - public void setFlag(int flag) { - this.flag = flag; - } public String getAppKey() { return appKey; diff --git a/src/main/java/cn/flaty/pushAdmin/entity/PushTextPacket.java b/src/main/java/cn/flaty/pushAdmin/entity/PushMessagePacket.java similarity index 71% rename from src/main/java/cn/flaty/pushAdmin/entity/PushTextPacket.java rename to src/main/java/cn/flaty/pushAdmin/entity/PushMessagePacket.java index ebc9efc..448d978 100644 --- a/src/main/java/cn/flaty/pushAdmin/entity/PushTextPacket.java +++ b/src/main/java/cn/flaty/pushAdmin/entity/PushMessagePacket.java @@ -1,12 +1,22 @@ package cn.flaty.pushAdmin.entity; +import cn.flaty.NettyPush.entity.persitence.Client; + /** * 推送文本消息报文 * * @author flatychen * */ -public class PushTextPacket { +public class PushMessagePacket { + + + @Override + public String toString() { + return "PushMessagePacket [title=" + title + ", content=" + content + + ", flag=" + flag + ", pushActionMixin=" + pushActionMixin + + "]"; + } private String title; @@ -48,4 +58,6 @@ public void setFlag(int flag) { this.flag = flag; } + + } diff --git a/src/main/java/cn/flaty/pushAdmin/entity/SendedMessage.java b/src/main/java/cn/flaty/pushAdmin/entity/SendedMessage.java new file mode 100644 index 0000000..793bff4 --- /dev/null +++ b/src/main/java/cn/flaty/pushAdmin/entity/SendedMessage.java @@ -0,0 +1,41 @@ +package cn.flaty.pushAdmin.entity; + +/** + * + * 幸存消息,也即未过期消息 + * + * @author flatychen + * + */ +public class SendedMessage { + + private String appKey; + + private String did; + + private long msgId; + + public String getDid() { + return did; + } + + public void setDid(String did) { + this.did = did; + } + + public String getAppKey() { + return appKey; + } + + public void setAppKey(String appKey) { + this.appKey = appKey; + } + + public long getMsgId() { + return msgId; + } + + public void setMsgId(long msgId) { + this.msgId = msgId; + } +} diff --git a/src/main/java/cn/flaty/pushAdmin/entity/SurviveMessage.java b/src/main/java/cn/flaty/pushAdmin/entity/SurviveMessage.java deleted file mode 100644 index 4630c78..0000000 --- a/src/main/java/cn/flaty/pushAdmin/entity/SurviveMessage.java +++ /dev/null @@ -1,11 +0,0 @@ -package cn.flaty.pushAdmin.entity; - -/** - * - * 幸存消息,也即未过期消息 - * - * @author flatychen - * - */ -public class SurviveMessage { -} diff --git a/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java index 3e6b145..699670c 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/ClientMessageRepository.java @@ -1,12 +1,18 @@ package cn.flaty.pushAdmin.repository; +import java.util.List; + +import cn.flaty.NettyPush.entity.packet.ClientPacket; +import cn.flaty.pushAdmin.entity.Message; +import cn.flaty.pushAdmin.entity.SendedMessage; + public interface ClientMessageRepository { - // public boolean insertMessageLog(SurviveMessage m); - // - // public boolean insertMessageLog(MessageLog messageLog); - // - // public List queryClientMessage(ClientPacket clientInfo); + public boolean insertMessage(Message msg); + + public boolean insertSendedMessage(SendedMessage sm); + + public List queryClientMessage(ClientPacket clientInfo); } diff --git a/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java b/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java index 222963b..54befd1 100644 --- a/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java +++ b/src/main/java/cn/flaty/pushAdmin/repository/H2ClientMessageRepository.java @@ -1,27 +1,46 @@ package cn.flaty.pushAdmin.repository; +import java.util.Date; +import java.util.List; -//@Repository +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import cn.flaty.NettyPush.entity.packet.ClientPacket; +import cn.flaty.NettyPush.repository.JdbcTemplateWrapper; +import cn.flaty.pushAdmin.entity.Message; +import cn.flaty.pushAdmin.entity.SendedMessage; + +@Repository public class H2ClientMessageRepository implements ClientMessageRepository { - /* - * @Autowired private JdbcTemplateWrapper jdbc; - * - * @Override public boolean insertMessage(SurviveMessage m) { String sql = - * " insert into tb_message(appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime) values(?,?,?,?,?,?,?,?)" - * ; return jdbc .saveORUpdate( sql, new Object[] { m.getAppkey(), new - * Date().getTime(), m.getTitle(), m.getContent(), m.getFlag(), - * m.getPushActionMixin(), m.getMsgId(), m.getExpireTime() }) == 1; } - * - * @Override public List queryClientMessage(ClientPacket - * clientInfo) { String sql = - * " select appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime from tb_message a where a.appkey = ? and a.expireTime >= ? and not exists ( select * from tb_client_message b where a.msgid = b.msgid )" - * ; return jdbc.queryForBeanList(sql, SurviveMessage.class, new Object[] { - * clientInfo.getAppKey(), new Date().getTime() }); } - * - * @Override public boolean insertMessageLog(ClientMessage cm) { String sql - * = " insert into tb_client_message(did,msgid,sendtime) values(?,?,?)"; - * return jdbc.saveORUpdate(sql, new Object[] { cm.getDid(), cm.getMsgId(), - * cm.getSendTime() }) == 1; } - */ + @Autowired + private JdbcTemplateWrapper jdbc; + + @Override + public boolean insertMessage(Message m) { + String sql = " insert into tb_message( appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime) values(?,?,?,?,?,?,?,?)"; + return jdbc + .saveORUpdate( + sql, + new Object[] { m.getAppKey(), new Date().getTime(), + m.getTitle(), m.getContent(), m.getFlag(), + m.getPushActionMixin(), new Date().getTime(), + m.getExpireTime() }) == 1; + } + + @Override + public List queryClientMessage(ClientPacket clientInfo) { + String sql = " select appkey,msgId, title ,content, flag , pushActionMixin ,createTime,expireTime from tb_message a where a.appkey = ? and a.expireTime >= ? and not exists ( select * from tb_sended_msg b where a.msgid = b.msgid and a.appkey=b.appkey)"; + return jdbc.queryForBeanList(sql, Message.class, new Object[] { + clientInfo.getAppKey(), new Date().getTime() }); + } + + @Override + public boolean insertSendedMessage(SendedMessage sm) { + String sql = " insert into tb_sended_msg(appkey,did,msgid) values(?,?,?)"; + return jdbc.saveORUpdate(sql, + new Object[] { sm.getAppKey(), sm.getDid(), sm.getMsgId() }) == 1; + } + } diff --git a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java index e0d8f36..4a1fbb8 100644 --- a/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java +++ b/src/main/java/cn/flaty/pushAdmin/services/PushServiceProxy.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import cn.flaty.NettyPush.services.PushService; -import cn.flaty.pushAdmin.entity.PushTextPacket; +import cn.flaty.pushAdmin.entity.PushMessagePacket; import cn.flaty.pushAdmin.views.BaseDataWrapper; import cn.flaty.pushAdmin.views.push.PushMessageForm; @@ -25,9 +25,9 @@ public class PushServiceProxy { * @return */ public BaseDataWrapper push(PushMessageForm pushMessageBean) { - + log.info("pushMessage: {}",pushMessageBean.toString()); BaseDataWrapper json = new BaseDataWrapper(); - PushTextPacket pushMessage = null; + PushMessagePacket pushMessage = null; // 消息序列化 try { @@ -41,7 +41,7 @@ public BaseDataWrapper push(PushMessageForm pushMessageBean) { // 推送消息 try { - pushService.sendOnLineClient(pushMessage); + pushService.sendOnLineClient(pushMessageBean.getClient(),pushMessage); } catch (Exception e) { json.setSuccess(false); return json; diff --git a/src/main/java/cn/flaty/pushAdmin/views/BaseInterceptor.java b/src/main/java/cn/flaty/pushAdmin/views/BaseInterceptor.java index 0834479..e10459e 100644 --- a/src/main/java/cn/flaty/pushAdmin/views/BaseInterceptor.java +++ b/src/main/java/cn/flaty/pushAdmin/views/BaseInterceptor.java @@ -6,6 +6,13 @@ import org.springframework.stereotype.Controller; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; +/** + * + * + * 基础拦截器 + * @author flaty + * + */ @Controller public class BaseInterceptor extends HandlerInterceptorAdapter { diff --git a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java index f44f3df..ed47373 100644 --- a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java +++ b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageController.java @@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import cn.flaty.NettyPush.entity.persitence.Client; import cn.flaty.pushAdmin.services.PushServiceProxy; import cn.flaty.pushAdmin.views.BaseDataWrapper; @@ -30,7 +31,12 @@ public String news() { @RequestMapping("/create") @ResponseBody public BaseDataWrapper create(@Valid PushMessageForm msg) { - log.info(msg.toString()); + + // 手动设定过滤信息 + Client clientsParams = new Client(); + clientsParams.setAppKey("apptest"); + + msg.setClient(clientsParams); return pushServiceProxy.push(msg); } } diff --git a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageForm.java b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageForm.java index 01767d0..7480510 100644 --- a/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageForm.java +++ b/src/main/java/cn/flaty/pushAdmin/views/push/PushMessageForm.java @@ -1,11 +1,13 @@ package cn.flaty.pushAdmin.views.push; +import java.util.Arrays; import java.util.Date; import org.apache.commons.beanutils.PropertyUtils; import org.hibernate.validator.constraints.NotEmpty; -import cn.flaty.pushAdmin.entity.PushTextPacket; +import cn.flaty.NettyPush.entity.persitence.Client; +import cn.flaty.pushAdmin.entity.PushMessagePacket; /** * @@ -16,6 +18,8 @@ */ public class PushMessageForm { + private Client client; + /** * 标题 */ @@ -39,6 +43,14 @@ public class PushMessageForm { private Date expireDate; + public Client getClient() { + return client; + } + + public void setClient(Client client) { + this.client = client; + } + public Date getExpireDate() { return expireDate; } @@ -99,8 +111,8 @@ public void setContent(String content) { this.content = content; } - public PushTextPacket parsePushMessage() { - PushTextPacket pm = new PushTextPacket(); + public PushMessagePacket parsePushMessage() { + PushMessagePacket pm = new PushMessagePacket(); for (int i = 0; i < this.flags.length; i++) { pm.setFlag(pm.getFlag() | this.flags[i]); diff --git a/src/main/resources/config/jdbc.properties b/src/main/resources/config/jdbc.properties index 863f897..7bded0b 100644 --- a/src/main/resources/config/jdbc.properties +++ b/src/main/resources/config/jdbc.properties @@ -1,6 +1,3 @@ -#jdbc.driverClassName=org.h2.Driver -#jdbc.url=jdbc:h2:mem:pushdb - #mysql #jdbc.driverClassName=com.mysql.jdbc.Driver @@ -10,8 +7,17 @@ -#h2 +#h2 memdb +#jdbc.driverClassName=org.h2.Driver +#jdbc.url=jdbc:h2:mem:push +#jdbc.username=sa +#jdbc.password= + + +#h2 Embed db jdbc.driverClassName=org.h2.Driver -jdbc.url=jdbc:h2:mem:push +jdbc.url=jdbc:log4jdbc:h2:mem:push;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE jdbc.username=sa -jdbc.password= \ No newline at end of file +jdbc.password= +#h2 console +h2_url=http://127.0.0.1:8080/push/console \ No newline at end of file diff --git a/src/main/resources/config/server.properties b/src/main/resources/config/server.properties index 6a53ca1..c2a1a16 100644 --- a/src/main/resources/config/server.properties +++ b/src/main/resources/config/server.properties @@ -1,2 +1,2 @@ server.port=11111 -server.host=192.183.3.178 \ No newline at end of file +server.host=0.0.0.0 \ No newline at end of file diff --git a/src/main/resources/spring/applicationDataSource.xml b/src/main/resources/spring/applicationDataSource.xml index 3f720db..256034d 100644 --- a/src/main/resources/spring/applicationDataSource.xml +++ b/src/main/resources/spring/applicationDataSource.xml @@ -9,7 +9,7 @@ "> - + diff --git a/src/main/resources/sql/schema.sql b/src/main/resources/sql/schema.sql index 53d71f4..b111df6 100644 --- a/src/main/resources/sql/schema.sql +++ b/src/main/resources/sql/schema.sql @@ -1,3 +1,9 @@ +drop table if exists tb_online_client; +drop table if exists tb_sended_msg; +drop table if exists tb_message; + + + -- 在线用户表 create table tb_online_client( appkey VARCHAR(100), @@ -7,17 +13,15 @@ os VARCHAR(20), expireTime BIGINT ); --- 未过期消息表,幸存表 -create table tb_survive_msg( +-- 已发送消息表 +create table tb_sended_msg( appkey VARCHAR(100), -minAppVer VARCHAR(20), -minOs VARCHAR(20), -createTime BIGINT, -expireTime BIGINT +did VARCHAR(100), +msgId BIGINT ); -- 消息日志表 -create table tb_msg_log( +create table tb_message( appkey VARCHAR(100), msgId BIGINT, title VARCHAR(60), diff --git a/src/test/java/cn/flaty/StartServer.java b/src/test/java/cn/flaty/StartServer.java index ae0e269..b05ccd0 100644 --- a/src/test/java/cn/flaty/StartServer.java +++ b/src/test/java/cn/flaty/StartServer.java @@ -21,7 +21,7 @@ public class StartServer { /** * 工程名称 */ - private static String projectName = "appm"; + private static String projectName = "push"; /** * @@ -30,8 +30,8 @@ public class StartServer { public static void main(String[] args) { - // 设定Spring的profile - // Profiles.setProfileAsSystemProperty(Profiles.DEVELOPMENT); +// 设定Spring的profile + Profiles.setProfileAsSystemProperty(Profiles.DEVELOPMENT); JettyServer server = new JettyServer(projectName, port); try { diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml index 208630e..dce5f37 100644 --- a/src/test/resources/logback-test.xml +++ b/src/test/resources/logback-test.xml @@ -1,5 +1,5 @@ - + [%level]%d{HH:mm:ss.SSS}[%thread -> %logger{40}] %msg%n @@ -9,18 +9,17 @@ - - + + - - + - + \ No newline at end of file