// Name:            Nav
// Description:     Defines styles for list navigations
//
// Component:       `uk-nav`
//
// Sub-objects:     `uk-nav-header`
//                  `uk-nav-divider`
//                  `uk-nav-sub`
//
// Modifiers:       `uk-nav-parent-icon`
//                  `uk-nav-side`
//                  `uk-nav-dropdown`
//                  `uk-nav-navbar`
//                  `uk-nav-offcanvas`
//
// States:          `uk-active`
//                  `uk-parent`
//                  `uk-open`
//                  `uk-touch`
//
// Uses:            Icon: FontAwesome
//
// Used by:         Panel
//                  Dropdown
//
// Markup:
//
// <!-- uk-nav -->
// <ul class="uk-nav">
//     <li class="uk-active"><a href=""></a></li>
//     <li><a href=""></a></li>
// </ul>
//
// ========================================================================


// Variables
// ========================================================================

@nav-padding-vertical:                          5px;
@nav-padding-horizontal:                        15px;

@nav-header-padding-vertical:                   @nav-padding-vertical;
@nav-header-padding-horizontal:                 @nav-padding-horizontal;
@nav-header-font-size:                          12px;
@nav-header-font-weight:                        bold;
@nav-header-text-transform:                     uppercase;
@nav-header-margin-top:                         15px;

@nav-divider-margin-vertical:                   9px;
@nav-divider-margin-horizontal:                 @nav-padding-horizontal;

@nav-subtitle-font-size:                        12px;
@nav-subtitle-line-height:                      18px;

@nav-nested-padding-left:                       15px;
@nav-nested-padding-vertical:                   2px;
@nav-nested-padding-horizontal:                 0;

@nav-sub-padding-vertical:                      5px;
@nav-sub-padding-left:                          @nav-padding-horizontal;

@nav-parent-icon:                               "\f104";
@nav-parent-open-icon:                          "\f107";
@nav-parent-icon-width:                         20px;
@nav-parent-icon-margin-right:                  -10px;

@nav-side-color:                                #444;
@nav-side-hover-background:                     rgba(0,0,0,0.05);
@nav-side-hover-color:                          #444;
@nav-side-active-background:                    #00a8e6;
@nav-side-active-color:                         #fff;
@nav-side-header-color:                         #444;
@nav-side-divider-border:                       #ddd;
@nav-side-divider-border-width:                 1px;
@nav-side-nested-color:                         #07D;
@nav-side-nested-hover-color:                   #059;

@nav-dropdown-color:                            #444;
@nav-dropdown-hover-background:                 #00a8e6;
@nav-dropdown-hover-color:                      #fff;
@nav-dropdown-header-color:                     #999;
@nav-dropdown-divider-border:                   #ddd;
@nav-dropdown-divider-border-width:             1px;
@nav-dropdown-nested-color:                     #07D;
@nav-dropdown-nested-hover-color:               #059;

@nav-navbar-color:                              #444;
@nav-navbar-hover-background:                   #00a8e6;
@nav-navbar-hover-color:                        #fff;
@nav-navbar-header-color:                       #999;
@nav-navbar-divider-border:                     #ddd;
@nav-navbar-divider-border-width:               1px;
@nav-navbar-nested-color:                       #07D;
@nav-navbar-nested-hover-color:                 #059;

@nav-offcanvas-padding-vertical:                10px;
@nav-offcanvas-padding-horizontal:              15px;
@nav-offcanvas-color:                           #ccc;
@nav-offcanvas-hover-background:                #404040;
@nav-offcanvas-hover-color:                     #fff;
@nav-offcanvas-active-background:               #1a1a1a;
@nav-offcanvas-active-color:                    #fff;
@nav-offcanvas-header-color:                    #777;
@nav-offcanvas-divider-border:                  #1a1a1a;
@nav-offcanvas-divider-border-width:            1px;
@nav-offcanvas-nested-color:                    #ccc;
@nav-offcanvas-nested-hover-color:              #fff;


/* ========================================================================
   Component: Nav
 ========================================================================== */

.uk-nav,
.uk-nav ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

/*
 * Items
 */

.uk-nav li > a {
    display: block;
    text-decoration: none;
}

.uk-nav > li > a { padding: @nav-padding-vertical @nav-padding-horizontal; }

/*
 * Nested items
 */

.uk-nav ul { padding-left: @nav-nested-padding-left; }

.uk-nav ul a { padding: @nav-nested-padding-vertical @nav-nested-padding-horizontal; }

/*
 * Item subtitle
 */

.uk-nav li > a > div {
    font-size: @nav-subtitle-font-size;
    line-height: @nav-subtitle-line-height;
}


/* Sub-object: `uk-nav-header`
 ========================================================================== */

.uk-nav-header {
    padding: @nav-header-padding-vertical @nav-header-padding-horizontal;
    text-transform: @nav-header-text-transform;
    font-weight: @nav-header-font-weight;
    font-size: @nav-header-font-size;
    .hook-nav-header;
}

.uk-nav-header:not(:first-child) { margin-top: @nav-header-margin-top; }


/* Sub-object: `uk-nav-divider`
 ========================================================================== */

.uk-nav-divider {
    margin: @nav-divider-margin-vertical @nav-divider-margin-horizontal;
    .hook-nav-divider;
}


/* Sub-object: `uk-nav-sub`
 ========================================================================== */

/*
 * `ul` needed for higher specificity to override padding
 */

ul.uk-nav-sub {
    padding: @nav-sub-padding-vertical 0 @nav-sub-padding-vertical @nav-sub-padding-left;
    .hook-nav-sub;
}


/* Modifier: `uk-nav-parent-icon`
 ========================================================================== */

.uk-nav-parent-icon > .uk-parent > a:after {
    content: @nav-parent-icon;
    width: @nav-parent-icon-width;
    margin-right: @nav-parent-icon-margin-right;
    float: right;
    font-family: FontAwesome;
    text-align: center;
    .hook-nav-parent-icon;
}

.uk-nav-parent-icon > .uk-parent.uk-open > a:after { content: @nav-parent-open-icon; }


/* Modifier `uk-nav-side`
 ========================================================================== */

/*
 * Items
 */

.uk-nav-side > li > a {
    color: @nav-side-color;
    .hook-nav-side;
}

/*
 * Hover
 * 1. Apply hover style also to focus state
 * 2. Remove default focus style
 */

.uk-nav-side > li > a:hover,
.uk-nav-side > li > a:focus { // 1
    background: @nav-side-hover-background;
    color: @nav-side-hover-color;
    /* 2 */
    outline: none;
    .hook-nav-side-hover;
}

/* Active */
.uk-nav-side > li.uk-active > a {
    background: @nav-side-active-background;
    color: @nav-side-active-color;
    .hook-nav-side-active;
}

/*
 * Sub-object: `uk-nav-header`
 */

.uk-nav-side .uk-nav-header {
    color: @nav-side-header-color;
    .hook-nav-side-header;
}

/*
 * Sub-object: `uk-nav-divider`
 */

.uk-nav-side .uk-nav-divider {
    border-top: @nav-side-divider-border-width solid @nav-side-divider-border;
    .hook-nav-side-divider;
}

/*
 * Nested items
 */

.uk-nav-side ul a { color: @nav-side-nested-color; }
.uk-nav-side ul a:hover { color: @nav-side-nested-hover-color; }


/* Modifier `uk-nav-dropdown`
 ========================================================================== */

/*
 * Items
 */

.uk-nav-dropdown > li > a {
    color: @nav-dropdown-color;
    .hook-nav-dropdown;
}

/*
 * Hover
 * 1. Apply hover style also to focus state
 * 2. Remove default focus style
 */

.uk-nav-dropdown > li > a:hover,
.uk-nav-dropdown > li > a:focus { // 1
    background: @nav-dropdown-hover-background;
    color: @nav-dropdown-hover-color;
    /* 2 */
    outline: none;
    .hook-nav-dropdown-hover;
}

/*
 * Sub-object: `uk-nav-header`
 */

.uk-nav-dropdown .uk-nav-header {
    color: @nav-dropdown-header-color;
    .hook-nav-dropdown-header;
}

/*
 * Sub-object: `uk-nav-divider`
 */

.uk-nav-dropdown .uk-nav-divider {
    border-top: @nav-dropdown-divider-border-width solid @nav-dropdown-divider-border;
    .hook-nav-dropdown-divider;
}

/*
 * Nested items
 */

.uk-nav-dropdown ul a { color: @nav-dropdown-nested-color; }
.uk-nav-dropdown ul a:hover { color: @nav-dropdown-nested-hover-color; }


/* Modifier `uk-nav-navbar`
 ========================================================================== */

/*
 * Items
 */

.uk-nav-navbar > li > a {
    color: @nav-navbar-color;
    .hook-nav-navbar;
}

/*
 * Hover
 * 1. Apply hover style also to focus state
 * 2. Remove default focus style
 */

.uk-nav-navbar > li > a:hover,
.uk-nav-navbar > li > a:focus { // 1
    background: @nav-navbar-hover-background;
    color: @nav-navbar-hover-color;
    /* 2 */
    outline: none;
    .hook-nav-navbar-hover;
}

/*
 * Sub-object: `uk-nav-header`
 */

.uk-nav-navbar .uk-nav-header {
    color: @nav-navbar-header-color;
    .hook-nav-navbar-header;
}

/*
 * Sub-object: `uk-nav-divider`
 */

.uk-nav-navbar .uk-nav-divider {
    border-top: @nav-navbar-divider-border-width solid @nav-navbar-divider-border;
    .hook-nav-navbar-divider;
}

/*
 * Nested items
 */

.uk-nav-navbar ul a { color: @nav-navbar-nested-color; }
.uk-nav-navbar ul a:hover { color: @nav-navbar-nested-hover-color; }


/* Modifier `uk-nav-offcanvas`
 ========================================================================== */

/*
 * Items
 */

.uk-nav-offcanvas > li > a {
    color: @nav-offcanvas-color;
    padding: @nav-offcanvas-padding-vertical @nav-offcanvas-padding-horizontal;
    .hook-nav-offcanvas;
}

/*
 * Hover
 * No hover on touch devices because it behaves buggy in fixed offcanvas
 * 1. Apply hover style also to focus state
 * 2. Remove default focus style
 */

.uk-nav-offcanvas > .uk-open > a,
html:not(.uk-touch) .uk-nav-offcanvas > li > a:hover,
html:not(.uk-touch) .uk-nav-offcanvas > li > a:focus { // 1
    background: @nav-offcanvas-hover-background;
    color: @nav-offcanvas-hover-color;
    /* 2 */
    outline: none;
    .hook-nav-offcanvas-hover;
}

/*
 * Active
 * `html .uk-nav` needed for higher specificity to override hover
 */
html .uk-nav.uk-nav-offcanvas > li.uk-active > a {
    background: @nav-offcanvas-active-background;
    color: @nav-offcanvas-active-color;
    .hook-nav-offcanvas-active;
}

/*
 * Sub-object: `uk-nav-header`
 */

.uk-nav-offcanvas .uk-nav-header {
    color: @nav-offcanvas-header-color;
    .hook-nav-offcanvas-header;
}

/*
 * Sub-object: `uk-nav-divider`
 */

.uk-nav-offcanvas .uk-nav-divider {
    border-top: @nav-offcanvas-divider-border-width solid @nav-offcanvas-divider-border;
    .hook-nav-offcanvas-divider;
}

/*
 * Nested items
 * No hover on touch devices because it behaves buggy in fixed offcanvas
 */

.uk-nav-offcanvas ul a { color: @nav-offcanvas-nested-color; }
html:not(.uk-touch) .uk-nav-offcanvas ul a:hover { color: @nav-offcanvas-nested-hover-color; }


// Hooks
// ========================================================================

.hook-nav-misc;

.hook-nav-header() {}
.hook-nav-divider() {}
.hook-nav-sub() {}
.hook-nav-parent-icon() {}

.hook-nav-side() {}
.hook-nav-side-hover() {}
.hook-nav-side-active() {}
.hook-nav-side-header() {}
.hook-nav-side-divider() {}

.hook-nav-dropdown() {}
.hook-nav-dropdown-hover() {}
.hook-nav-dropdown-header() {}
.hook-nav-dropdown-divider() {}

.hook-nav-navbar() {}
.hook-nav-navbar-hover() {}
.hook-nav-navbar-header() {}
.hook-nav-navbar-divider() {}

.hook-nav-offcanvas() {}
.hook-nav-offcanvas-hover() {}
.hook-nav-offcanvas-active() {}
.hook-nav-offcanvas-header() {}
.hook-nav-offcanvas-divider() {}

.hook-nav-misc() {}