/*
 * These are the global generic form styles used throughout the Ghost admin,
 * but mainly in the settings pages. Don't fuck with them.
 *
 * Table of Contents:
 *
 * General
 * Buttons
 * Split Buttons
 * iCheck jQuery Plugin Styles
 *
 */


/* =============================================================================
   General
   ============================================================================= */

form {

    fieldset {
        border: none;
        margin: 0 0 3em 0;
        padding: 0;
    }

    legend {
        display: block;
        width: 100%;
        margin: 2em 0;
        border-bottom:$lightbrown 1px solid;
        font-size: 1.2em;
        line-height: 2.0em;
        color: $brown;
    }

    label {
        display: inline-block;
        position: absolute;
        top: 0.5em;
        left: 0;
        width: 120px;
        font-weight: bold;
        color: $brown;
        text-align: right;

        @include breakpoint(550px) {
            display: block;
            position: relative;
            top: auto;
            left: auto;
            width: auto;
            margin-bottom: 5px;
            text-align: left;
        }
    }

    p {
        color: darken($brown, 5%);
        font-size: 1em;
        margin: 0;
    }

    input, textarea, select {
        @include box-sizing(border-box);
        width: 276px;
        padding: 5px 7px;
        margin: 0;
        outline: 0;
        font-size: 1.1em;
        line-height: 1.4em;
        background: #fff;
        border: darken($lightbrown, 5%) 1px solid;
        border-radius: $rounded;
        @include transition(all 0.15s ease-in-out);

        @include breakpoint(550px) {
            width: 100%;
        }
    }

    textarea {
        width: 100%;
        max-width: 340px;
        min-width: 250px;
        height: auto;
        min-height: 80px;
    }

    input, select, textarea {
        margin-bottom: 5px;
    }

    input[type="text"]:focus,
    input[type="email"]:focus,
    input[type="search"]:focus,
    input[type="tel"]:focus,
    input[type="url"]:focus,
    input[type="password"]:focus,
    input[type="number"]:focus,
    input[type="date"]:focus,
    input[type="month"]:focus,
    input[type="week"]:focus,
    input[type="time"]:focus,
    input[type="datetime"]:focus,
    input[type="datetime-local"]:focus,
    textarea:focus {
        border: $brown 1px solid;
        background: #fff;
        outline: none;
        outline-width: 0;
    }

    select {
        @include box-sizing(border-box);
        width: 270px;
        height: 30px;
        line-height: 30px;

        @include breakpoint(550px) {
            width: 100%;
        }
    }

    .radio input[type="radio"],
    .checkbox input[type="checkbox"] {
        float: left;
        width:auto;
        margin-right: 6px;
        margin-top: 4px;
        font-size: 1em;
    }

    .radio, .checkbox {
        width: auto;
        margin: 5px 0;
        font-weight: normal;
        padding:0.55em 0;
        cursor: pointer;
    }

    .form-group {
        position: relative;
        margin: 1.5em 0;
        padding-left: 140px;

        @include breakpoint(550px) { padding-left: 0; }
    }

}//form


/* =============================================================================
   Buttons
   ============================================================================= */

/*
 * Buttons are used for primary calls to action on a page.
 *
 * Usage:
 * <button type="button" class="button">Default</button>
 */

// This base style is used on all buttons
%button {
    @include box-sizing(border-box);
    min-height: 35px;
    width: auto;
    display: inline-block;
    padding: 0.9em 1.37em;
    cursor: pointer;
    text-decoration: none;
    color: #fff;
    font-size: 11px; // Hack because Firefox sucks ass.
    line-height: 13px; // Hack because Firefox sucks ass.
    font-weight: 300;
    text-align: center;
    letter-spacing: 1px;
    text-transform: uppercase;
    text-shadow: none;
    border-radius: 0.2em;
    border: rgba(0,0,0,0.05) 0.1em solid;
    @include transition(background 0.3s ease, border-color 0.3s ease);

    &:hover {
        border-color: transparent;
        background: #f8f8f8;
        text-decoration: none;
    }

    &:active {
        box-shadow: rgba(0,0,0,0.3) 0 1px 3px inset;
    }

    &.large {
        padding: 1em 1.8em;
        font-size: 14px;
        line-height: 16px;
    }
}

// This is the default button style
.button,
button,
input[type="button"] {
    @extend %button;
    color:#777;
    font-weight: normal;
    background: #eee;
    box-shadow: none;
    &:hover {
        border-color: rgba(0,0,0,0.1);
    }
}

// Button for save/next/continue/confirm actions
.button-save,
button[type="submit"],
input[type="submit"] {
    @extend %button;
    background: $blue;
    box-shadow: none;
    &:hover {background: darken($blue, 10%);}
}

// Button for actions which add stuff
.button-add {
    @extend %button;
    background: $green;
    &:hover {background: darken($green, 8%);}
}

// Button for deleting/removing stuff
.button-delete,
button[type="reset"],
input[type="reset"] {
    @extend %button;
    background: $red;
    box-shadow: none;
    &:hover {background: darken($red, 10%);}
}

// Alternative button with more visual attention, but no extra semantic meaning
.button-alt {
    @extend %button;
    background: lighten($darkgrey, 10%);
    &:hover {background: $darkgrey;}
}

// This applies normal link styles to de-emphasise a button
.button-link {
    @extend %button;
    color: $blue;
    background: transparent;
    border: none;
    &:hover {
        background: transparent;
        text-decoration: underline;
    }
}

// Back button for pane animations
.button-back {
    @extend %button;
    position: absolute;
    top: 20px;
    left: 20px;
    margin-right: 30px;
    padding: 0.5em 1.37em 0.5em 1.10em;
    display: none;
    color: #fff;
    background: $blue;
    border: none;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;

    &:before {
        content: ' ';
        position: absolute;
        top: 0;
        left: -10px;
        width: 0;
        height: 0;
        border-width: 18px 10px 18px 0;
        border-color: transparent $blue transparent transparent;
        border-style: solid solid solid none;
        @include transform(scale(0.9999));
        @include transition(border-color 0.3s ease);
    }

    &:hover {
        color: #fff;
        background: darken($blue, 10%);
        border-color: darken($blue, 10%);
        &:before {
            border-right-color: darken($blue, 10%);
        }
    }

    @include breakpoint($tablet) {
        display: inline-block;
    }
}


/* =============================================================================
   Split Buttons
   ============================================================================= */

/*
 * The splitbutton adds addition values to a button, via a dropdown (or drop-up).
 *
 * Usage:
 * <section class="splitbutton">
 *     <button type="button" class="button">Split Up</button>
 *     <a class="options" href="#"><span class="hidden">Options</span></a>
 * </section>
 */

// These are the base styles applied to all splitbuttons
%splitbutton {
    display: inline-block;
    position: relative;
    font-size: 0; // hack to stop space after button
    white-space: nowrap;

    button {
        font-size: 11px; // hack to restore font size
        @include border-right-radius(0);
    }

    // This is the additional dropdown arrow, to the right of the button.
    .options {
        display: inline-block;
        position:relative;
        width: 35px;
        height: 35px;
        margin-left: -1px;
        vertical-align: top;
        text-align: center;
        color: #fff;
        background: #e5e5e5;
        border-radius: 0 2px 2px 0;
        box-shadow:
            rgba(0,0,0,0.02) 0 1px 0 inset,
            rgba(0,0,0,0.02) -1px 0 0 inset,
            rgba(0,0,0,0.02) 0 -1px 0 inset;
        @include icon($i-chevron-down, 9px) {
            position: absolute;
            top: 50%;
            right: 50%;
            margin-top: -3px;
            margin-right: -5px;
            @include transition(margin-top 0.3s ease);
            /* Transition of transform properties are split out due to a
                defect in the vendor prefixing of transform transitions.
                See: http://github.com/thoughtbot/bourbon/pull/86 */
            @include transition-property(transform);
            @include transition-duration(0.3);
            @include transition-timing-function(ease);
        };
        @include transition(background-color 0.3s linear);

        // Keep the arrow spun when the associated menu is open
        &.active:before {
            @include transform(rotate(360deg));
        }

        &.up.active:before {
            margin-top:-4px;
            @include transform(rotate(540deg));
        }

        // Spin the arrow on hover and while menu is open
        &:hover {
            box-shadow: none;
            background: #f8f8f8;
            @include icon($i-chevron-down) {
                @include transform(rotate(360deg));
            };
        }

        // If it has a class of "up" spin it an extra 180degress to point up
        &.up:hover {
            @include icon($i-chevron-down) {
                margin-top:-4px;
                @include transform(rotate(540deg));
                @include transition-property(transform);
                @include transition-duration(0.6);
                @include transition-timing-function(ease);
            };
        }
    }
}

// The default splitbutton
.splitbutton {
    @extend %splitbutton;
    .options {
        color:#777;
        &:hover {
            box-shadow:
                rgba(0,0,0,0.07) 0 1px 0 inset,
                rgba(0,0,0,0.07) -1px 0 0 inset,
                rgba(0,0,0,0.07) 0 -1px 0 inset;
        }
    }
}

// For save/next/continue/confirm actions
.splitbutton-save {
    @extend %splitbutton;
    .options {
        background: darken($blue, 5%);
        &:hover, &.active {background: darken($blue, 10%);}
    }
}

// For actions which add something
.splitbutton-add {
    @extend %splitbutton;
    .options {
        background: darken($green, 6%);
        &:hover {background: darken($green, 8%);}
    }
}

// For actions which delete something
.splitbutton-delete {
    @extend %splitbutton;
    .options {
        background: darken($red, 6%);
        &:hover {background: darken($red, 10%);}
    }
}

// Alternative style with more visual attention, but no extra semantic meaning
.splitbutton-alt {
    @extend %splitbutton;
    .options {
        background: lighten($darkgrey, 4%);
        &:hover {background: $darkgrey;}
    }
}


/* =============================================================================
   iCheck jQuery Plugin Styles
   ============================================================================= */
.icheckbox_ghost,
.iradio_ghost {
    @include box-sizing(border-box);
    display: block;
    width: 16px;
    height: 16px;
    float: left;
    margin: 2px 0 0 0;
    padding: 0;
    margin-right: 6px;
    background: none;
    border: none;
    box-shadow: none;
    border-radius: 2px;
    @include transition(
        border ease 0.25s,
        background ease 0.2s
    );
}

.icheckbox_ghost {
    border: 1px solid darken($lightbrown, 5%);
}
.icheckbox_ghost.hover {
    border: $brown 1px solid;
}
.icheckbox_ghost.checked {
    background: $blue;
    border: $blue 1px solid;
    padding:0;
    @include icon($i-check, 12px, #fff) {
        position: relative;
        top: -4px;
        left: -1px
    }
}
.icheckbox_ghost.disabled {
    border: 1px solid $lightbrown;
}
.icheckbox_ghost.checked.disabled {
    background: $lightbrown;
}

.iradio_ghost {
    border-radius: 11px;
    border: 1px solid darken($lightbrown, 5%);
}
.iradio_ghost.hover {
    border: $blue 2px solid;
}
.iradio_ghost.checked {
    background: $blue;
    border: none;
    @include icon($i-check, 1em, #fff);
}
.iradio_ghost.disabled {
    border: 1px solid $lightbrown;
    cursor: default;
}
.iradio_ghost.checked.disabled {
    background: $lightbrown;
}

