@charset "utf-8";

/*
---------------------------------------------------------------------------------------------------- 
	Fonts
----------------------------------------------------------------------------------------------------
*/

@import url("https://fonts.googleapis.com/css?family=Sarabun:400,400i,600,600i,800");

/*
---------------------------------------------------------------------------------------------------- 
	App defaults
----------------------------------------------------------------------------------------------------
*/

.app {
	left: 0;
	color: #000;
	position: relative;
	transition: left 0.25s;
	font: 600 14px/1.6 "Sarabun", Helvetica, Arial, sans-serif;
}

.app.toggle {
	left: -280px;	
}

.app h1 { font-size: calc(3.5em - 12px); line-height: 1.10; } /* 14 = 37 / 20 = 58 (diff of 21) */
.app h2 { font-size: calc(2.5em - 10px); line-height: 1.20; } /* 14 = 25 / 20 = 40 (diff of 15) */
.app h3 { font-size: calc(1.5em -  4px); line-height: 1.30; } /* 14 = 17 / 20 = 26 (diff of 09) */
.app h4 { font-size: 1em } /* 14 = 14 / 20 = 20 (diff of 06) */

.app h1, .app h2, .app h3, .app h4 {
	font-weight: 800;
}

.app h1 + h2, .app h1 + h3, .app h1 + h4,
.app h2 + h3, .app h2 + h4,
.app h3 + h4 {
	margin-top: 1rem;	
}

.app label {
	display: block;
	font-weight: 600;
	margin-bottom: calc(1em - 12px); /* 2px to 6px */
}

.app b, .app strong {
	font-weight: 800;	
}

.app input, .app textarea, .app select {
	width: 100%;
	color: inherit;
}

.app select {
	cursor: pointer;
	background-size: 24px;
	background-repeat: no-repeat;
	background-position: calc(100% - 15px) center;
	background-image: url(graphics/icon-select-arrow.svg);
}

.app ::placeholder {
	opacity: 0.65;	
}

/*
---------------------------------------------------------------------------------------------------- 
	Custom defaults
----------------------------------------------------------------------------------------------------
*/

.container {
	padding-left: 0;
	padding-right: 0;
}

/* Fonts */

.font-xl { }
.font-lg { }

/* Borders */

.border-t,
.border-r, 
.border-b, 
.border-l {
	border: none;
}

/* Lists */

.list-ruled li + li {
    border-color: rgba(0,0,0,0.1);
}

/* Patterns */

.app-pattern-1,
.app-pattern-2 {
	background-repeat: repeat;	
	background-position: center;
}

.app-pattern-1 { background-image: url(graphics/bgd-pattern-1alt.svg);	}
.app-pattern-2 { background-image: url(graphics/bgd-pattern-2alt.svg);	}

/*
---------------------------------------------------------------------------------------------------- 
	Links / Buttons / Icons / Socicons
----------------------------------------------------------------------------------------------------
*/

.app-link {
	font-weight: 600;
}

/* Buttons */

.app-button {
	cursor: pointer;
	font-weight: 600;
	line-height: 1em;
	padding: 1em 1.5em;
	display: inline-block;
	transition: color 0.25s, background-color 0.25s;
}

.app-button:hover {
	text-decoration: none;
}

/* Icons */

.app-icons {
	display: flex;
}

.app-icons .app-icon + .app-icon {
	margin-left: 1em;	
}

.app-icon {
	padding: 0;
	border: none;
	color: inherit;
	display: block;
	position: relative;
	transition: color 0.5s;
	background-color: transparent;
}

.app-icon:after {
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	content: " ";
	display: block;
	position: absolute;
}

.app-icon svg {
	float: left;
	display: block;	
}

.app-icon-text {
	float: left;
	font-size: 16px;
	font-weight: 800;
	line-height: 30px;
}	

.app-icon-text + svg, svg + .app-icon-text {
	margin-left: 0.5em;	
}

/* Social Icons */

.app-socicons .app-socicon + .app-socicon {
	margin-left: 0.5em;
}

.app-socicon {
	width: 1.6em;
	height: 1.6em;
	display: block;
	background-size: 1.15em;
	background-position: center;
	background-repeat: no-repeat;
}

.app-socicon.facebook  { background-image: url(graphics/socicon-facebook.svg); }
.app-socicon.twitter   { background-image: url(graphics/socicon-twitter.svg); }
.app-socicon.linkedin  { background-image: url(graphics/socicon-linkedin.svg); }
.app-socicon.instagram { background-image: url(graphics/socicon-instagram.svg); }

/*
---------------------------------------------------------------------------------------------------- 
	Meta / Breadcrumbs
----------------------------------------------------------------------------------------------------
*/

.app-meta {
	font-weight: 600;
	margin-bottom: calc(1em - 12px); /* 2px to 6px */
}

/* Breacrumbs */

.breadcrumbs {
	color: #909090;	
}

/*
---------------------------------------------------------------------------------------------------- 
	Dialog
----------------------------------------------------------------------------------------------------
*/

.app dialog {
	display: none;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	padding: 15px;
	position: fixed;
	align-items: center;
	justify-content: center;
	background-color: rgba(0,0,0,0.0);
	color: #ffffff;
	border: none;
	z-index: 3;
}

.app dialog .dialog-content {
	padding: 1.5em;
	pointer-events: none;
	border-style: solid;
	border-width: 4px;
}

.app dialog .dialog-content:before {
	content: "X";
	float: right;
	cursor: pointer;
	padding-left: 15px;
}

.app dialog.error:not(.hidden) {
	display: flex;
}

.app dialog.error .dialog-content {
	border-color: rgba(240,0,32,1);
	background-color: rgba(240,0,32,0.75);
}

.app dialog.success:not(.hidden) {
	display: flex;
}

.app dialog.success .dialog-content {
	border-color: rgba(0,240,32,1);
	background-color: rgba(0,240,32,0.75);
}

/*
---------------------------------------------------------------------------------------------------- 
	Header
----------------------------------------------------------------------------------------------------
*/

.app-header {
	top: 0;
	left: 0;
	z-index: 2;
	width: 100%;
	position: fixed;
	font-size: 14px;
	line-height: 1.2;
	transition: left 0.25s;
}

.app.toggle .app-header {
	left: -280px;	
}

/* Top bar */

.app-topbar {
	height: 30px;
}

/* Nav bar / Tel bar */

.app-navbar {
	height: 50px;
	background-color: #fff;
}

.app-navbar:after {
	left: 0;
	width: 100%;
	height: 2px;
	bottom: -2px;
	content: " ";
	display: block;
	position: absolute;
	background: rgba(0,1,2,0.05);
}

/* Logo */

.app-logo {
	z-index: 1;
	display: block;
	position: absolute;
	transform: translateY(-50%);
	box-shadow: 2px 2px 0px 0px rgba(0,0,0,0.075);
}

.app-logo-image {
	height: 75px;
	display: block;	
}

/* Nav */

.app-nav {
	top: 0;
	right: 0;
	z-index: 0;
	width: 280px;
	height: 100vh;
	position: fixed;
	padding: 0 30px 0;
}

.app-nav-emblem {
	display: block;
	max-width: 220px;
	margin: 6vh auto 6vh;
}

.app-nav-footer {
	left: 0;
	right: 0;
	bottom: 4.5vh;
	display: block;
	position: absolute;
}

/* Menu */

.app-menu {
	margin: 0;
	padding: 0;
	font-weight: 800;
	list-style-type: none;
}

.app-menu a {
	display: block;
	padding-top: 0.5em;
	padding-bottom: 0.5em;	
}

.app-menu-row {
	display: none;
}

.app-menu-row span {
	display: block;	
}

.app-menu-row li {
	float: left;
	display: flex;
	align-items: center;	
}

.app-menu-row li + li {
	margin-left: 0.75vw;
	padding-left: 0.75vw;
	border-left: solid 2px rgba(0,0,0,0.075);	
}

.app-menu-col {
	font-weight: 800;	
	text-transform: uppercase;	
}

.app-menu-col span + span:before {
	content: " ";	
}

.app-menu-col li + li {
	border-top: solid 1px rgba(255,255,255,0.2);
}

/*
---------------------------------------------------------------------------------------------------- 
	Main
----------------------------------------------------------------------------------------------------
*/

.app-main {
	z-index: 1;
	padding-top: 80px;
	position: relative;
	background-color: #fff;
}

/* Cards */

.app-card-image { 
	width: 100%;
	display: block;
	cursor: pointer;
	position: relative;
	background-size: cover;
	background-position: center top;
}

.app-card-image img {
	width: 100%;
	display: block;
}

/* Article */

.app-article {
	/* font-weight: 400; */
}

/* Article cards */

.app-article-card img {
	width: 100%;
	display: block;
}

.app-article-card-image { 
	width: 100%;
	display: block;
	max-width: 320px;
	position: relative;
	background-size: cover;
	background-position: center;
}

.app-article-card-meta {
	margin-top: 0.75em;
	margin-bottom: 0.75em;
}

.app-article-card-tags {
	margin-top: 1.5em;
}

/* Product */

.app-product {
	position: relative;	
}

.app-product-image {
	height: 100%;	
}

.app-product-image img {
	display: block;
	max-width: 100%;	
	max-height: 100%;
}

.app-product-cost {
	line-height: 1;
	font-weight: 800;
}

.app-product-cost .font-xl { font-size: 3em; }
.app-product-cost .font-lg { font-size: 2em; }

/* Product cards */

.app-product-card {
	line-height: 1.4;
}

.app-product-card-image { 
	width: 100%;
	display: block;
	cursor: pointer;
	position: relative;
	background-size: cover;
	background-position: center top;
}

.app-product-card-image img {
	width: 100%;
	display: block;
}

.app-product-card-content {
	padding: calc(1em + 2px);	
}

.app-product-card-cost {
	font-size: calc(1.5em - 1px);
}

/* Form */

.app-form .row {
	margin-left: -6px;
	margin-right: -6px;	
}

.app-form [class^="col-"] {
	padding-left: 6px;
	padding-right: 6px;	
}

.app-form input, .app-form textarea, .app-form button, .app-form select {
	border-width: 2px;
	border-style: solid;
	border-color: #f0f0f4;
	padding: 0.65em 15px 0.65em 15px;
}

.app-form input[type="submit"] {
	transition: color 0.25s, border-color 0.25s, background-color 0.25s;
}

.app-form-controls svg {
	float: none;
	margin-left: auto;
	margin-right: auto;	
}

.app-form-controls input {
	text-align: center;
	border-width: 2px 0 2px 0;
}

.app-form-controls button {
	padding: 0;
	color: #cacaca;
	transition: color 0.25s;
}

.app-form-controls button:hover {
	color: #1a1a1a;	
}

.app-form-controls input, .app-form-controls button {
	flex: 1 1 0;
	padding-left: 0;
	padding-right: 0;
}

/* Table */

.app-table [class^="col-"] {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

.app-table select {
	width: 100%;
	border: none;
	background-position: right center;
}

.app-table .ruled-1 {
	border-top-width: 2px;
	border-top-style: solid;
}

.app-table .ruled-2 {
	border-top-width: 1px;
	border-top-style: solid;
	border-top-color: rgba(0,0,0,0.1);
}

.app-table .app-table-icon-1, 
.app-table .app-table-icon-2 {
	border: none;
	width: 1.6em;
	height: 1.6em;
	display: block;
}

.app-table-icon-1 {
	background: url(graphics/icon-x-1.svg) no-repeat center;	
}

.app-table-icon-2 {
	background: url(graphics/icon-x-2.svg) no-repeat center;	
}

/* Modules */

.app-module {
	padding: 1.5em;
}	

/* Ticker */

.app-ticker {
	margin: 0;
	width: 100%;
	display: flex;
	font-size: 4em;
	line-height: 1.25;
	text-align: center;
	justify-content: space-between;
}

.app-ticker span {
	width: calc((100% / 6) - 4px);
}

/* Pagination */

.app-pagination {
	display: flex;
	justify-content: space-between;
}

.app-pagination a,
.app-pagination span {
	display: flex;
	width: 2.65em;
	height: 2.65em;
	align-items: center;
	justify-content: center;
	transition: color 0.25s, background-color 0.25s;
}

.app-pagination a:hover {
	text-decoration: none;
}

.app-pagination-nums {
	display: flex;	
}

.app-pagination-nums a + a {
	margin-left: 5px;	
}

/* Thumbnails */

.app-thumbnails img {
	width: 100%;
	display: block;
	box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.1);
}

/*
---------------------------------------------------------------------------------------------------- 
	Footer
----------------------------------------------------------------------------------------------------
*/

.app-footer {
	z-index: 1;
	position: relative;
}

.app-footer .swatch-2,
.app-footer .swatch-3 {
	font-weight: 400;	
}

/*
---------------------------------------------------------------------------------------------------- 
	App Lightbox
----------------------------------------------------------------------------------------------------
*/

.app-lightbox {
	top: 0; 
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 10;
	padding: 15px;
	display: none;
	position: fixed;
	background-color: rgba(0,0,0,0.50);
}

.app-lightbox:after {
	top: 12px;
	right: 12px;
	width: 30px;
	height: 30px;	
	display: block;
	position: absolute;
	background: url(graphics/icon-close.svg) center no-repeat ;
	background-size: 100%;
	cursor: pointer;
	content: " ";
}

.app-lightbox.visible {
	display: flex;
	align-items: center;
	justify-content: center;
}

.app-lightbox-content {
	padding: 4vh 4vw;
	background-color: #fff;
}

.app-lightbox-image {
	opacity: 0;
	transition: opacity 1s;
	background-size: cover;
	background-position: center;
}

.app-lightbox-image.enlarge {
	opacity: 1;
}

/*
---------------------------------------------------------------------------------------------------- 
	Media queries
----------------------------------------------------------------------------------------------------
*/

@media (max-width: 511.98px) {
	
	.app-footer {
		text-align: center;	
	}
}

@media (min-width: 512px) {
	
	.container {
		padding-left: 6%;
		padding-right: 6%;
	}	
}

@media (min-width: 768px) {

	.app {
		font-size: calc(14px + ((100vw - 768px) / 128));
	}

	.app-lightbox:after {
		top: 21px;
		right: 21px;	
	}
}

@media (max-width: 1023.98px) {

	.app-socicons {
		justify-content: center;
	}	
}

@media (min-width: 1024px) { 
	
	.app-navbar { 
		height: 60px; 
	}
	
	.app-navbar .app-icons {
		display: none;	
	}
		
	.app-logo-image {
		height: 90px;	
	}		

	.app-menu-row {
		display: flex;
		text-align: center;
		align-items: stretch;
		text-transform: uppercase;
	}		
	
	.app-main {
		padding-top: 90px;	
	}
}

@media (min-width: 1024px) and (max-width: 1279.98px) {

	.app-card-container:last-child {
		display: none;	
	}
}

@media (min-width: 1280px) { 
	
	.container {
		padding-left: 8%;
		padding-right: 8%;
	}		
		
	.app-topbar {
		height: 40px;
		font-size: 16px;
	}
			
	.app-navbar { 
		height: 70px;
		font-size: 16px;
	}
	
	.app-logo-image {
		height: 105px;
	}
		
	.app-main {
		padding-top: 110px;	
	}
	
	.app-lightbox:after {
		top: 30px;
		right: 30px;	
	}	
}

@media (min-width: 1536px) { 
	
	.app {
		font-size: 20px;	
	}	
	
	.container {
		padding-left: 12%;
		padding-right: 12%;
	}		

	.app-topbar {
		font-size: 18px;
	}
							
	.app-navbar { 
		height: 80px;
		font-size: 18px;
	}
	
	.app-logo-image {
		height: 120px;	
	}		
		
	.app-main {
		padding-top: 120px;	
	}
}

@media (min-width: 1792px) { 

	.container {
		padding-left: 14%;
		padding-right: 14%;
	}		
}