@import 'compass';

// This file is best viewed with Tab size 4 code indentation


// -----------------------------------------------------------------------------------------------------------------
// 1. Theme Quick Settings (Variables)
// (for further control, you will need to dig into the actual CSS in 2.)
// -----------------------------------------------------------------------------------------------------------------


// ----------------------------------------------------------
// :: 1.1. Colors
// ----------------------------------------------------------

$sm-blue__blue:											#3092c0 !default;
$sm-blue__blue-dark:									darken($sm-blue__blue, 5%) !default;
$sm-blue__blue-darker:									#006892 !default;
$sm-blue__blue-light:									lighten($sm-blue__blue, 30%) !default;
$sm-blue__white:										#fff !default;
$sm-blue__gray:											darken($sm-blue__white, 34%) !default;

$sm-blue__text-shadow:									rgba(0, 0, 0, 0.2) !default;
$sm-blue__box-shadow:									rgba(0, 0, 0, 0.2) !default;

$sm-blue__gradients_amount:								2% !default;


// ----------------------------------------------------------
// :: 1.2. Breakpoints
// ----------------------------------------------------------

$sm-blue__desktop-vp:									768px !default;		// switch from collapsible to desktop


// ----------------------------------------------------------
// :: 1.3. Typography
// ----------------------------------------------------------

// Import "PT Sans Narrow" font from Google fonts
@import url(https://fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700);

$sm-blue__font-family:									"PT Sans Narrow", "Arial Narrow", Arial, Helvetica, sans-serif !default;
$sm-blue__font-size-base:								18px !default;
$sm-blue__font-size-small:								16px !default;
$sm-blue__line-height:									23px !default;


// ----------------------------------------------------------
// :: 1.4. Borders
// ----------------------------------------------------------

$sm-blue__border-width:									1px !default;
$sm-blue__border-radius-base:							8px !default;
$sm-blue__border-radius-small:							4px !default;


// ----------------------------------------------------------
// :: 1.5. Collapsible main menu
// ----------------------------------------------------------

// Menu box
$sm-blue__collapsible-bg:								transparent !default;
$sm-blue__collapsible-border-radius:					$sm-blue__border-radius-base !default;
$sm-blue__collapsible-box-shadow:						0 1px 4px $sm-blue__box-shadow !default;

// Items                           
$sm-blue__collapsible-item-color:						$sm-blue__white !default;
$sm-blue__collapsible-item-bg:							$sm-blue__blue !default;
$sm-blue__collapsible-item-current-color:				$sm-blue__white !default;
$sm-blue__collapsible-item-current-bg:					$sm-blue__blue-darker !default;
$sm-blue__collapsible-item-disabled-color:				lighten($sm-blue__blue, 30%) !default;
$sm-blue__collapsible-item-padding-vertical:			10px !default;
$sm-blue__collapsible-item-padding-horizontal:			20px !default;

// Toggle button (sub menu indicators)
$sm-blue__collapsible-toggle-bg:						rgba(0, 0, 0, 0.1) !default;


// ----------------------------------------------------------
// :: 1.6. Collapsible sub menus
// ----------------------------------------------------------

// Menu box
$sm-blue__collapsible-sub-bg:							$sm-blue__white !default;

// Items
$sm-blue__collapsible-sub-item-color:					$sm-blue__blue-dark !default;
$sm-blue__collapsible-sub-item-bg:						transparent !default;
$sm-blue__collapsible-sub-item-current-color:			$sm-blue__white !default;
$sm-blue__collapsible-sub-item-current-bg:				$sm-blue__blue-darker !default;
$sm-blue__collapsible-sub-item-disabled-color:			darken($sm-blue__white, 30%) !default;

// Items separators
$sm-blue__collapsible-sub-separators-color:				rgba(0, 0, 0, 0.05) !default;

// Items text indentation for deeper levels
$sm-blue__collapsible-sub-item-indentation:				8px !default;


// ----------------------------------------------------------
// :: 1.7. Desktop main menu
// ----------------------------------------------------------

// Menu box
$sm-blue__desktop-bg:									$sm-blue__blue !default;
$sm-blue__desktop-border-radius:						$sm-blue__border-radius-base !default;
$sm-blue__desktop-box-shadow:							0 1px 1px $sm-blue__box-shadow !default;

// Items
$sm-blue__desktop-item-color:							$sm-blue__white !default;
$sm-blue__desktop-item-bg:								$sm-blue__blue !default;
$sm-blue__desktop-item-hover-bg:						darken($sm-blue__blue, 5%) !default;
$sm-blue__desktop-item-current-color:					$sm-blue__white !default;
$sm-blue__desktop-item-current-bg:						$sm-blue__blue-darker !default;
$sm-blue__desktop-item-disabled-color:					lighten($sm-blue__blue, 30%) !default;
$sm-blue__desktop-item-padding-vertical:				13px !default;
$sm-blue__desktop-item-padding-horizontal:				24px !default;

// Items separators
$sm-blue__desktop-separators-size:						1px !default;
$sm-blue__desktop-separators-color:						darken($sm-blue__blue, 5%) !default;

// Sub menu indicators
$sm-blue__desktop-arrow-size:							5px !default;		// border-width
$sm-blue__desktop-arrow-color:							$sm-blue__blue-light !default;

// Vertical menu box
$sm-blue__desktop-vertical-box-shadow:					0 1px 4px $sm-blue__box-shadow !default;

// Vertical items
$sm-blue__desktop-vertical-item-padding-vertical:		9px !default;
$sm-blue__desktop-vertical-item-padding-horizontal:		23px !default;


// ----------------------------------------------------------
// :: 1.8. Desktop sub menus
// ----------------------------------------------------------

// Menu box
$sm-blue__desktop-sub-bg:								$sm-blue__white !default;
$sm-blue__desktop-sub-border-color:						$sm-blue__gray !default;
$sm-blue__desktop-sub-border-radius:					$sm-blue__border-radius-small !default;
$sm-blue__desktop-sub-box-shadow:						0 5px 12px $sm-blue__box-shadow !default;
$sm-blue__desktop-sub-padding-vertical:					7px !default;
$sm-blue__desktop-sub-padding-horizontal:				0 !default;

// Items
$sm-blue__desktop-sub-item-color:						$sm-blue__blue-dark !default;
$sm-blue__desktop-sub-item-bg:							transparent !default;
$sm-blue__desktop-sub-item-hover-color:					$sm-blue__white !default;
$sm-blue__desktop-sub-item-hover-bg:					$sm-blue__blue !default;
$sm-blue__desktop-sub-item-current-color:				$sm-blue__white !default;
$sm-blue__desktop-sub-item-current-bg:					$sm-blue__blue-darker !default;
$sm-blue__desktop-sub-item-disabled-color:				darken($sm-blue__white, 30%) !default;
$sm-blue__desktop-sub-item-padding-vertical:			9px !default;
$sm-blue__desktop-sub-item-padding-horizontal:			23px !default;


// -----------------------------------------------------------------------------------------------------------------
// 2. Theme CSS
// -----------------------------------------------------------------------------------------------------------------


// ----------------------------------------------------------
// :: 2.1. Collapsible mode (mobile first)
// ----------------------------------------------------------

// calc item height and sub menus toggle button size
$sm-blue__item-height: $sm-blue__line-height + $sm-blue__collapsible-item-padding-vertical * 2;
// set toggle button size to 80% of item height
$sm-blue__toggle-size: floor($sm-blue__item-height * 0.8);
$sm-blue__toggle-spacing: floor($sm-blue__item-height * 0.1);

// Main menu box
.sm-blue {
	background: $sm-blue__collapsible-bg;
	@include border-radius($sm-blue__collapsible-border-radius);
	@include box-shadow($sm-blue__collapsible-box-shadow);

	// Main menu items
	a {
		&,
		&:hover,
		&:focus,
		&:active {
			padding: $sm-blue__collapsible-item-padding-vertical $sm-blue__collapsible-item-padding-horizontal;
			/* make room for the toggle button (sub indicator) */
			padding-right: $sm-blue__collapsible-item-padding-horizontal + $sm-blue__toggle-size + $sm-blue__toggle-spacing;
			background: $sm-blue__collapsible-item-bg;
			@include background-image(linear-gradient(to bottom, lighten($sm-blue__collapsible-item-bg, $sm-blue__gradients_amount), darken($sm-blue__collapsible-item-bg, $sm-blue__gradients_amount)));
			color: $sm-blue__collapsible-item-color;
			font-family: $sm-blue__font-family;
			font-size: $sm-blue__font-size-base;
			font-weight: bold;
			line-height: $sm-blue__line-height;
			text-decoration: none;
			text-shadow: 0 1px 0 $sm-blue__text-shadow;
		}

		&.current {
			background: $sm-blue__collapsible-item-current-bg;
			@include background-image(linear-gradient(to bottom, darken($sm-blue__collapsible-item-current-bg, $sm-blue__gradients_amount), lighten($sm-blue__collapsible-item-current-bg, $sm-blue__gradients_amount)));
			color: $sm-blue__collapsible-item-current-color;
		}

		&.disabled {
			color: $sm-blue__collapsible-item-disabled-color;
		}

		// Toggle buttons (sub menu indicators)
		span.sub-arrow {
			position: absolute;
			top: 50%;
			margin-top: -(ceil($sm-blue__toggle-size / 2));
			left: auto;
			right: $sm-blue__toggle-spacing;
			width: $sm-blue__toggle-size;
			height: $sm-blue__toggle-size;
			overflow: hidden;
			font: bold #{$sm-blue__font-size-small}/#{$sm-blue__toggle-size} monospace !important;
			text-align: center;
			text-shadow: none;
			background: $sm-blue__collapsible-toggle-bg;
			@include border-radius($sm-blue__border-radius-small);
		}
		// Change + to - on sub menu expand
		&.highlighted span.sub-arrow:before {
			display: block;
			content: '-';
		}
	}

	// round the corners of the first item
	> li:first-child > a, > li:first-child > :not(ul) a {
		@include border-radius($sm-blue__collapsible-border-radius $sm-blue__collapsible-border-radius 0 0);
	}
	// round the corners of the last item
	@include sm-blue__round-corners-last-item($sm-blue__collapsible-border-radius);

	// Sub menus box
	ul {
		background: $sm-blue__collapsible-sub-bg;

		// darken the background of the 2+ level sub menus
		ul {
			background: rgba(darken($sm-blue__collapsible-sub-bg, 60%), 0.1);
		}

		// Sub menus items
		a {
			&,
			&:hover,
			&:focus,
			&:active {
				background: $sm-blue__collapsible-sub-item-bg;
				color: $sm-blue__collapsible-sub-item-color;
				font-size: $sm-blue__font-size-small;
				text-shadow: none;
				// add indentation for sub menus text
				border-left: $sm-blue__collapsible-sub-item-indentation solid transparent;
			}

			&.current {
				background: $sm-blue__collapsible-sub-item-current-bg;
				@include background-image(linear-gradient(to bottom, darken($sm-blue__collapsible-sub-item-current-bg, $sm-blue__gradients_amount), lighten($sm-blue__collapsible-sub-item-current-bg, $sm-blue__gradients_amount)));
				color: $sm-blue__collapsible-sub-item-current-color;
			}

			&.disabled {
				color: $sm-blue__collapsible-sub-item-disabled-color;
			}
		}

		// Add indentation for sub menus text for deeper levels
		@include sm-blue__sub-items-indentation($sm-blue__collapsible-sub-item-indentation);

		// Sub menus items separators
		li {
			border-top: 1px solid $sm-blue__collapsible-sub-separators-color;

			&:first-child {
				border-top: 0;
			}
		}
	}
}


// ----------------------------------------------------------
// :: 2.2. Desktop mode
// ----------------------------------------------------------

@media (min-width: $sm-blue__desktop-vp) {

	/* Switch to desktop layout
	-----------------------------------------------
	   These transform the menu tree from
	   collapsible to desktop (navbar + dropdowns)
	-----------------------------------------------*/
	/* start... (it's not recommended editing these rules) */
	.sm-blue ul{position:absolute;width:12em;}
	.sm-blue li{float:left;}
	.sm-blue.sm-rtl li{float:right;}
	.sm-blue ul li,.sm-blue.sm-rtl ul li,.sm-blue.sm-vertical li{float:none;}
	.sm-blue a{white-space:nowrap;}
	.sm-blue ul a,.sm-blue.sm-vertical a{white-space:normal;}
	.sm-blue .sm-nowrap > li > a,.sm-blue .sm-nowrap > li > :not(ul) a{white-space:nowrap;}
	/* ...end */

	// Main menu box
	.sm-blue {
		background: $sm-blue__desktop-bg;
		@include background-image(linear-gradient(to bottom, lighten($sm-blue__desktop-bg, $sm-blue__gradients_amount), darken($sm-blue__desktop-bg, $sm-blue__gradients_amount)));
		@include border-radius($sm-blue__desktop-border-radius);
		@include box-shadow($sm-blue__desktop-box-shadow);

		// Main menu items
		a {
			&,
			&:hover,
			&:focus,
			&:active,
			&.highlighted {
				padding: $sm-blue__desktop-item-padding-vertical $sm-blue__desktop-item-padding-horizontal;
				background: $sm-blue__desktop-item-bg;
				@include background-image(linear-gradient(to bottom, lighten($sm-blue__desktop-item-bg, $sm-blue__gradients_amount), darken($sm-blue__desktop-item-bg, $sm-blue__gradients_amount)));
				color: $sm-blue__desktop-item-color;
			}

			&:hover,
			&:focus,
			&:active,
			&.highlighted {
				background: $sm-blue__desktop-item-hover-bg;
				@include background-image(linear-gradient(to bottom, lighten($sm-blue__desktop-item-hover-bg, $sm-blue__gradients_amount), darken($sm-blue__desktop-item-hover-bg, $sm-blue__gradients_amount)));
			}

			&.current {
				background: $sm-blue__desktop-item-current-bg;
				@include background-image(linear-gradient(to bottom, darken($sm-blue__desktop-item-current-bg, $sm-blue__gradients_amount), lighten($sm-blue__desktop-item-current-bg, $sm-blue__gradients_amount)));
				color: $sm-blue__desktop-item-current-color;
			}

			&.disabled {
				background: $sm-blue__desktop-item-bg;
				@include background-image(linear-gradient(to bottom, lighten($sm-blue__desktop-item-bg, $sm-blue__gradients_amount), darken($sm-blue__desktop-item-bg, $sm-blue__gradients_amount)));
				color: $sm-blue__desktop-item-disabled-color;
			}

			// Sub menu indicators
			span.sub-arrow {
				top: auto;
				margin-top: 0;
				bottom: 2px;
				left: 50%;
				margin-left: -$sm-blue__desktop-arrow-size;
				right: auto;
				width: 0;
				height: 0;
				border-width: $sm-blue__desktop-arrow-size;
				border-style: solid dashed dashed dashed;
				border-color: $sm-blue__desktop-arrow-color transparent transparent transparent;
				background: transparent;
				@include border-radius(0);
			}
			// reset mobile first style
			&.highlighted span.sub-arrow:before {
				display: none;
			}
		}

		// round the corners of the first and last items
		> li:first-child > a, > li:first-child > :not(ul) a {
			@include border-radius($sm-blue__desktop-border-radius 0 0 $sm-blue__desktop-border-radius);
		}
		> li:last-child > a, > li:last-child > :not(ul) a {
			@include border-radius(0 $sm-blue__desktop-border-radius $sm-blue__desktop-border-radius 0 !important);
		}

		// Main menu items separators
		> li {
			border-left: $sm-blue__desktop-separators-size solid $sm-blue__desktop-separators-color;

			&:first-child {
				border-left: 0;
			}
		}

		// Sub menus box
		ul {
			border: $sm-blue__border-width solid $sm-blue__desktop-sub-border-color;
			padding: $sm-blue__desktop-sub-padding-vertical $sm-blue__desktop-sub-padding-horizontal;
			background: $sm-blue__desktop-sub-bg;
			@include border-radius(0 0 $sm-blue__desktop-sub-border-radius $sm-blue__desktop-sub-border-radius !important);
			@include box-shadow($sm-blue__desktop-sub-box-shadow);

			// 2+ sub levels need rounding of all corners
			ul {
				@include border-radius($sm-blue__desktop-sub-border-radius !important);
				background: $sm-blue__desktop-sub-bg;
			}

			// Sub menus items
			a {
				&,
				&:hover,
				&:focus,
				&:active,
				&.highlighted {
					border: 0 !important;
					padding: $sm-blue__desktop-sub-item-padding-vertical $sm-blue__desktop-sub-item-padding-horizontal;
					background: $sm-blue__desktop-sub-item-bg;
					color: $sm-blue__desktop-sub-item-color;
					@include border-radius(0 !important);
				}

				&:hover,
				&:focus,
				&:active,
				&.highlighted {
					background: $sm-blue__desktop-sub-item-hover-bg;
					@include background-image(linear-gradient(to bottom, lighten($sm-blue__desktop-sub-item-hover-bg, $sm-blue__gradients_amount), darken($sm-blue__desktop-sub-item-hover-bg, $sm-blue__gradients_amount)));
					color: $sm-blue__desktop-sub-item-hover-color;
				}

				&.current {
					background: $sm-blue__desktop-sub-item-current-bg;
					@include background-image(linear-gradient(to bottom, darken($sm-blue__desktop-sub-item-current-bg, $sm-blue__gradients_amount), lighten($sm-blue__desktop-sub-item-current-bg, $sm-blue__gradients_amount)));
					color: $sm-blue__desktop-sub-item-current-color;
				}

				&.disabled {
					background: $sm-blue__desktop-sub-bg;
					color: $sm-blue__desktop-sub-item-disabled-color;
				}

				// Sub menu indicators
				span.sub-arrow {
					top: 50%;
					margin-top: -$sm-blue__desktop-arrow-size;
					bottom: auto;
					left: auto;
					margin-left: 0;
					right: 10px;
					border-style: dashed dashed dashed solid;
					border-color: transparent transparent transparent $sm-blue__desktop-arrow-color;
				}
			}

			// No sub menus items separators
			li {
				border: 0;
			}
		}

		// Scrolling arrows containers for tall sub menus - test sub menu: "Sub test" -> "more..." in the default download package
		span.scroll-up,
		span.scroll-down {
			position: absolute;
			display: none;
			visibility: hidden;
			overflow: hidden;
			background: $sm-blue__desktop-sub-bg;
			height: 20px;
			// width and position will be set automatically by the script
		}
		span.scroll-up-arrow {
			position: absolute;
			top: -2px;
			left: 50%;
			margin-left: -8px;
			// we will use one-side border to create a triangle so that we don't use a real background image, of course, you can use a real image if you like too
			width: 0;
			height: 0;
			overflow: hidden;
			border-width: 8px; // tweak size of the arrow
			border-style: dashed dashed solid dashed;
			border-color: transparent transparent $sm-blue__desktop-sub-item-color transparent;
		}
		span.scroll-down-arrow {
			@extend span.scroll-up-arrow;
			top: 6px;
			border-style: solid dashed dashed dashed;
			border-color: $sm-blue__desktop-sub-item-color transparent transparent transparent;
		}


		// Rigth-to-left

		// Main menu box
		&.sm-rtl {

			// Vertical main menu items
			&.sm-vertical {
				a {
					// Sub menu indicators
					span.sub-arrow {
						right: auto;
						left: 10px;
						border-style: dashed solid dashed dashed;
						border-color: transparent $sm-blue__desktop-arrow-color transparent transparent;
					}
				}
			}

			// round the corners of the first and last items
			> li:first-child > a, > li:first-child > :not(ul) a {
				@include border-radius(0 $sm-blue__desktop-border-radius $sm-blue__desktop-border-radius 0);
			}
			> li:last-child > a, > li:last-child > :not(ul) a {
				@include border-radius($sm-blue__desktop-border-radius 0 0 $sm-blue__desktop-border-radius !important);
			}

			// Main menu items separators
			> li {
				&:first-child {
					border-left: $sm-blue__desktop-separators-size solid $sm-blue__desktop-separators-color;
				}
				&:last-child {
					border-left: 0;
				}
			}

			// Sub menus box
			ul {
				a {
					// Sub menu indicators
					span.sub-arrow {
						right: auto;
						left: 10px;
						border-style: dashed solid dashed dashed;
						border-color: transparent $sm-blue__desktop-arrow-color transparent transparent;
					}
				}
			}
		}


		// Vertical main menu

		// Main menu box
		&.sm-vertical {
			@include box-shadow($sm-blue__desktop-vertical-box-shadow);

			// Main menu items
			a {
				padding: $sm-blue__desktop-vertical-item-padding-vertical $sm-blue__desktop-vertical-item-padding-horizontal;

				// Sub menu indicators
				span.sub-arrow {
					top: 50%;
					margin-top: -$sm-blue__desktop-arrow-size;
					bottom: auto;
					left: auto;
					margin-left: 0;
					right: 10px;
					border-style: dashed dashed dashed solid;
					border-color: transparent transparent transparent $sm-blue__desktop-arrow-color;
				}
			}

			// round the corners of the first and last items
			> li:first-child > a, > li:first-child > :not(ul) a {
				@include border-radius($sm-blue__desktop-border-radius $sm-blue__desktop-border-radius 0 0);
			}
			> li:last-child > a, > li:last-child > :not(ul) a {
				@include border-radius(0 0 $sm-blue__desktop-border-radius $sm-blue__desktop-border-radius !important);
			}

			// No main menu item separators
			> li {
				border-left: 0 !important;
			}

			// Sub menus box
			ul {
				@include border-radius($sm-blue__desktop-sub-border-radius !important);

				// Sub menus items
				a {
					padding: $sm-blue__desktop-sub-item-padding-vertical $sm-blue__desktop-sub-item-padding-horizontal;
				}
			}
		}
	}
}