// Libraries @import "bootstrap/scss/bootstrap.scss"; @import "pickadate/lib/themes/default"; @import "pickadate/lib/themes/default.date"; @import "simplemde/dist/simplemde.min"; @import "SpinKit/css/spinners/11-folding-cube"; // Core @import "_fonts"; // Supplementary @import "mixins/**/*.scss"; // Colours $c-text: #111; // text $c-text-inactive: fade-out($c-text, 0.25); // inactive text $c-text-light: #fff; // light text $c-text-light-inactive: fade-out($c-text-light, 0.25); // inactive light text $c-input-bg: #fff; // white $c-dashboard-error: #a80000; $c-dashboard-dark: #3e6087; $c-dashboard-light: #f1f1f1; $c-dashboard-edit: #87823e; $c-dashboard-delete: #87483e; // // Main Dashboard Styles // * { outline: none !important; } body { @include font-sans; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -webkit-overflow-scrolling: touch; } .site-content { position: relative; display: flex; min-height: 100vh; flex-direction: column; .page-content { flex-grow: 1; } } .dashboard-background { position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; background-image: url("/img/dashboard/star-bg.svg"); background-position: center top; background-size: 65px auto; background-repeat: repeat; &:after { content: ""; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; background-color: fade-out(#fff, 0.02); } } .navbar, .dashboard-footer { z-index: 10; position: relative; } .navbar { margin-bottom: $grid-gutter-width; border: 0; background-color: $c-dashboard-dark; user-select: none; @include media-breakpoint-down(md) { padding-right: 8px; padding-left: 8px; } @include media-breakpoint-down(sm) { margin-bottom: 0px; } &-brand { @include font-sans-bold; overflow: hidden; max-width: calc(100vw - 60px); color: $c-text-light; white-space: nowrap; &:hover, &:focus, &:active { color: $c-text-light; } @include media-breakpoint-down(sm) { font-size: 12px; } } &-toggler { position: absolute; top: 3px; right: 0px; border: 0; @include media-breakpoint-up(md) { top: 10px; } &-icon { position: relative; &-bar { $v-inset: 6px; $h-inset: 3px; position: absolute; left: $h-inset; width: calc(100% - #{$h-inset * 2}); height: 2px; background-color: $c-text-light; &:nth-child(1) { top: $v-inset; } &:nth-child(2) { top: 50%; transform: translateY(-50%); } &:nth-child(3) { bottom: $v-inset; } } } } .nav-link { color: $c-text-light-inactive; transition: color 150ms; &.active { color: $c-text-light; } &.dropdown-toggle { cursor: pointer; } } .dropdown-menu { padding: 0px; border-top-right-radius: 0; border-top-left-radius: 0; @include media-breakpoint-up(lg) { top: 45px; } @include media-breakpoint-down(md) { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .dropdown-item { background-color: transparent; transition: background-color 150ms, color 150ms; @include media-breakpoint-down(md) { padding-right: 8px; padding-left: 8px; background-color: darken($c-dashboard-dark, 2%); color: $c-text-light-inactive; } &.active, &:hover, &:focus, &:active { color: $c-text; @include media-breakpoint-down(md) { color: $c-text-light; } } &:hover, &:focus { @include media-breakpoint-up(lg) { background-color: fade-out(#000, 0.97); } } &.active { @include media-breakpoint-up(lg) { background-color: fade-out(#000, 0.93); } } } } } .dashboard-footer { margin-top: $grid-gutter-width; width: 100%; padding: 8px ($grid-gutter-width / 2); background-color: $c-dashboard-dark; text-align: right; a { color: $c-text-light-inactive; transition: color 150ms; &:hover, &:focus { text-decoration: none; } &.active { color: $c-text-light; } } } .card { margin-top: 20px; margin-bottom: 20px; > .card-header { @include font-sans-bold; position: relative; padding: 9px 15px; border-top: 1px solid darken($c-dashboard-dark, 5%); border-right: 1px solid darken($c-dashboard-dark, 5%); border-left: 1px solid darken($c-dashboard-dark, 5%); background-color: $c-dashboard-dark; color: $c-dashboard-light; font-size: 14px; .dashboard-heading { position: absolute; top: 50%; right: 8px; transform: translateY(-50%); .btn { min-width: 70px; height: 26px; padding-top: 1px; padding-bottom: 2px; } a { color: $c-text; text-decoration: none; } } } .card-body { padding: 15px; background-color: lighten($c-dashboard-light, 1%); &.dashboard { @include media-breakpoint-down(sm) { padding: 10px 8px 12px 8px; } } .search { margin-bottom: 10px; width: 100%; @include media-breakpoint-down(sm) { margin: 3px 3px 0px 3px; width: calc(100% - 6px); } } .help-text { margin-top: 10px; margin-bottom: 10px; padding: 5px 10px; border: 1px solid darken($c-dashboard-dark, 5%); border-radius: 5px; background-color: $c-dashboard-dark; color: $c-text-light; } .form-group { margin-bottom: 15px; label { @include font-sans-semibold; font-size: 14px; @include media-breakpoint-up(md) { text-align: right; } } .form-control { font-size: 14px; transition: border-color 150ms, box-shadow 150ms; &:focus { border-color: $c-dashboard-dark; box-shadow: inset 0 1px 1px fade-out(#000, 0.925), 0 0 8px fade-out($c-dashboard-dark, 0.4); } } &.has-error .form-control { border-color: $c-dashboard-error; } .checkbox { position: relative; display: inline-block; min-height: 0px; padding-top: 0px; padding-left: 22px; user-select: none; span, input { position: absolute; top: 50%; left: 0px; transform: translateY(-50%); display: block; width: 16px; height: 16px; } span { border: 1px solid lighten($c-text, 50%); border-radius: 4px; background-color: $c-input-bg; pointer-events: none; &:after { content: ""; position: absolute; top: 0px; left: 0px; transform: scale(0); display: block; width: 100%; height: 100%; background-image: url("/img/dashboard/icons/checkmark.svg"); background-position: center center; background-size: 65% auto; background-repeat: no-repeat; opacity: 0; transition: transform 150ms, opacity 150ms; } } input { margin: 0px; padding: 0px; opacity: 0; cursor: pointer; &:checked + span:after { transform: scale(1); opacity: 1; } } } .text-muted { font-size: 10px; text-transform: uppercase; } } .dashboard-credits { padding: $grid-gutter-width; h2 { @include font-sans-semibold; margin-bottom: 15px; font-size: 18px; text-transform: uppercase; &:not(:first-child) { margin-top: 25px; } } ul { margin-bottom: 0px; padding-left: 20px; li a { color: $c-text; } } } } } .btn { border-color: darken($c-dashboard-dark, 5%); background-color: $c-dashboard-dark; color: $c-text-light; font-size: 14px; transition: background-color 100ms; &:hover { background-color: darken($c-dashboard-dark, 5%); } &:focus { background-color: lighten($c-dashboard-dark, 5%); } &, &:hover, &:focus { text-decoration: none; } &.vertical-margin { margin-top: 3px; margin-bottom: 3px; } &.btn-warning, &.btn-danger { &:hover, &:focus, &:active { color: $c-text-light !important; } } &.btn-warning { border-color: darken($c-dashboard-edit, 10%); background-color: $c-dashboard-edit; &:hover { background-color: darken($c-dashboard-edit, 5%); } &:focus { background-color: lighten($c-dashboard-edit, 5%); } } &.btn-danger { border-color: darken($c-dashboard-delete, 10%); background-color: $c-dashboard-delete; &:hover { background-color: darken($c-dashboard-delete, 5%); } &:focus { background-color: lighten($c-dashboard-delete, 5%); } } &.btn-secondary { border-color: darken($c-dashboard-light, 10%); background-color: $c-dashboard-light; color: $c-text; &:hover { background-color: darken($c-dashboard-light, 5%); } &:focus { background-color: lighten($c-dashboard-light, 5%); } } &.btn-link { color: $c-dashboard-light; } } .view-table-container { @include media-breakpoint-down(sm) { padding: 10px 5px; } .table { margin-bottom: 0px; > thead > tr > th { border-top: 0; border-bottom: 1px solid #666; } @include media-breakpoint-down(lg) { tr { &.heading-row { display: none; } &:not(:first-child) { border-top: 1px solid #ddd; } } > tbody > tr { > td { display: block; border-top: 0; &:first-child { padding-top: 20px; } &:last-child { padding-bottom: 20px; } } &:first-child > td:first-child { padding-top: 0px; } &:last-child > td:last-child { padding-bottom: 0px; } } } @include media-breakpoint-up(xl) { > tbody > tr > td { padding: 20px 8px; } > tbody > tr:last-child > td { padding-bottom: 0px; } .mobile-heading { display: none; } } } } .list-group { margin-bottom: 0px; &.menu-list .list-group-item { position: relative; padding: 10px 15px; &-link { position: absolute; top: 0px; left: 0px; display: block; width: 100%; height: 100%; background-color: transparent; color: $c-text; transition: background-color 150ms; &:hover { background-color: fade-out(#000, 0.97); text-decoration: none; } } } &.edit-list { .list-group-item { padding-top: 4px; padding-bottom: 4px; @include media-breakpoint-down(sm) { margin: 3px; } @include media-breakpoint-up(md) { display: flex; } &.sortable { @include media-breakpoint-down(sm) { padding-left: 50px; } } .title-column { padding-top: 6px; padding-bottom: 6px; padding-left: 0px; font-family: "Lucida Console", Monaco, monospace; @include media-breakpoint-down(sm) { text-align: center; } @include media-breakpoint-up(md) { overflow: hidden; flex-grow: 1; white-space: nowrap; } .sort-icon { margin-right: 10px; display: inline-block; opacity: 1; transition: opacity 100ms; cursor: grab; @include media-breakpoint-down(sm) { position: absolute; top: 50%; left: 20px; transform: translateY(-50%); } &-inner { position: relative; top: 2px; display: inline-block; width: 12px; height: 14px; &-bar { position: absolute; left: 0px; width: 100%; height: 2px; background-color: $c-text; &:nth-child(1) { top: 2px; } &:nth-child(2) { top: 50%; transform: translateY(-50%); } &:nth-child(3) { bottom: 2px; } } } } .column { display: inline-block; } .spacer { @include media-breakpoint-down(sm) { display: block; font-size: 0; } @include media-breakpoint-up(md) { display: inline-block; } } } .button-column { padding-right: 0px; @include media-breakpoint-down(sm) { padding-bottom: 5px; padding-left: 0px; text-align: center; } @include media-breakpoint-up(md) { padding-left: 5px; flex-shrink: 0; text-align: right; } .btn { margin: 5px 3px; min-width: 70px; height: 26px; padding-top: 1px; padding-bottom: 2px; @include media-breakpoint-down(sm) { min-width: 33%; } } } } &.filtered .list-group-item .title-column .sort-icon { opacity: 0.5; pointer-events: none; } } } form { margin-top: 10px; .form-title { @include font-sans-semibold; margin-top: 0px; margin-bottom: 15px; font-size: 14px; text-transform: uppercase; } &.edit-item { $label-height: 30px; .CodeMirror { height: 300px; padding: 5px; &-code { margin-bottom: 10px; } } .picker__holder { overflow-y: hidden; .picker__button--today { white-space: nowrap; } .picker__select--year, .picker__select--month, .picker__month, .picker__day, .picker__weekday, .picker__footer { @include media-breakpoint-down(sm) { font-size: 16px; } } .picker__select--year, .picker__select--month { width: auto; height: 1.5em; padding: 0px; } } label { min-height: $label-height; line-height: $label-height; @include media-breakpoint-up(md) { margin-bottom: 0px; } } .text-display, .mkd-editor-container, input, select { margin-bottom: 15px; } input { display: block; width: 100%; &:not([type="file"]) { padding: 5px 8px; border: 1px solid darken($c-dashboard-light, 10%); border-radius: 2px; transition: border-color 150ms; &.error { border-color: $c-dashboard-error; } } &[type="file"] { overflow: hidden; max-width: 100%; height: $label-height; font-size: 14px; } &.date-picker { cursor: pointer; } } .current-image { margin-bottom: 15px; display: block; width: 125px; max-width: 100%; } .edit-button { margin-bottom: ($grid-gutter-width / 2); display: inline-block; padding: 5px 10px; border-radius: 5px; text-transform: uppercase; transition: background-color 150ms; cursor: pointer; &:hover, &:focus { text-decoration: none; } &.view { border: 1px solid darken($c-dashboard-dark, 5%); background-color: $c-dashboard-dark; color: $c-text-light; &:hover { background-color: lighten($c-dashboard-dark, 5%); } } &.delete { border: 1px solid darken($c-dashboard-delete, 5%); background-color: $c-dashboard-delete; color: $c-text-light; &:hover { background-color: lighten($c-dashboard-delete, 5%); } } } .back-button { float: left; } .submit-button { float: right; transition: opacity 150ms; &.no-input { opacity: 0.65; pointer-events: none; } } .back-button, .submit-button { margin: 20px 15px 15px 15px; @include media-breakpoint-down(sm) { float: none; width: calc(100% - 30px); &:first-child { margin-top: 20px; margin-bottom: 5px; } &:last-child { margin-top: 5px; margin-bottom: 20px; } } } } } .dashboard-settings-container { @include media-breakpoint-up(lg) { display: flex; flex-direction: row; } form { &.user-profile-image { display: block; width: 100%; max-width: 150px; @include media-breakpoint-down(md) { margin: $grid-gutter-width auto; } @include media-breakpoint-up(lg) { flex-shrink: 0; } .image-display { @include aspect-ratio(1, 1); position: relative; width: 100%; border: 1px solid darken($c-dashboard-light, 10%); border-radius: 3px; background-position: center center; background-size: cover; background-repeat: no-repeat; } .image-buttons { margin-top: 20px; display: flex; justify-content: space-around; input { display: none; } .image-upload-button, .image-delete-button { display: block; width: 40px; height: 40px; min-height: 0; border: 1px solid darken($c-dashboard-light, 14%); border-radius: 3px; background-color: darken($c-dashboard-light, 10%); background-position: center center; background-size: 50% auto; background-repeat: no-repeat; font-size: 0px; line-height: 1; cursor: pointer; &:hover { background-color: darken($c-dashboard-light, 7%); } } .image-upload-button { background-image: url("/img/dashboard/icons/upload.svg"); transition: background-color 150ms; } .image-delete-button { background-image: url("/img/dashboard/icons/trash-alt.svg"); opacity: 1; transition: background-color 150ms, opacity 150ms; &.inactive { opacity: 0.35; pointer-events: none; } } } } &.user-profile-update { @include media-breakpoint-down(md) { border-top: 1px solid darken($c-dashboard-light, 10%); border-bottom: 1px solid darken($c-dashboard-light, 10%); } @include media-breakpoint-up(lg) { margin-right: $grid-gutter-width; margin-left: $grid-gutter-width; width: 100%; padding: 0px $grid-gutter-width; flex-grow: 1; border-right: 1px solid darken($c-dashboard-light, 10%); border-left: 1px solid darken($c-dashboard-light, 10%); } } &.user-password-update { @include media-breakpoint-up(lg) { width: 225px; flex-shrink: 0; } } .form-title { @include media-breakpoint-down(md) { margin-top: 25px; margin-bottom: 20px; text-align: center; } } .submit-button { @include media-breakpoint-down(sm) { margin-right: auto; margin-left: auto; width: 100%; } @include media-breakpoint-up(md) { float: none; margin: ($grid-gutter-width / 2) 0px; } } } } #loading-modal { z-index: 1000; position: fixed; top: 0px; left: 0px; visibility: hidden; width: 100%; height: 100%; background-color: fade-out(lighten($c-dashboard-light, 1%), 0.6); opacity: 0; transition: opacity 250ms; .spinner-container { position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%); } } .modal { z-index: 1000; position: fixed; top: 0px; left: 0px; visibility: hidden; display: table; width: 100%; height: 100%; background-color: fade-out(lighten($c-dashboard-light, 1%), 0.6); opacity: 0; transition: opacity 250ms; .modal-container { display: table-cell; vertical-align: middle; text-align: center; .card { margin: 0px; } .btn { margin: 20px 15px; display: inline-block; &:not(:last-child) { margin-bottom: 0px; } } } &#alert-modal { .modal-container { .card { position: relative; } .message { min-height: 50px; padding: 15px 75px 15px 20px; text-align: left; } .btn { position: absolute; top: 50%; right: 0px; transform: translateY(-50%); } } } } .fa { position: relative; vertical-align: bottom; &:after { content: ""; position: absolute; top: 0px; left: 0px; display: block; width: 100%; height: 100%; background-position: center center; background-size: 10px auto; background-repeat: no-repeat; } &.fa-arrows-alt:after { background-image: url("/img/dashboard/icons/arrows-alt.svg"); } &.fa-bold:after { background-image: url("/img/dashboard/icons/bold.svg"); } &.fa-code:after { background-image: url("/img/dashboard/icons/code.svg"); } &.fa-columns:after { background-image: url("/img/dashboard/icons/columns.svg"); } &.fa-eraser:after { background-image: url("/img/dashboard/icons/eraser.svg"); } &.fa-eye:after { background-image: url("/img/dashboard/icons/eye.svg"); } &.fa-header:after { background-image: url("/img/dashboard/icons/header.svg"); } &.fa-italic:after { background-image: url("/img/dashboard/icons/italic.svg"); } &.fa-link:after { background-image: url("/img/dashboard/icons/link.svg"); } &.fa-list-ol:after { background-image: url("/img/dashboard/icons/list-ol.svg"); } &.fa-list-ul:after { background-image: url("/img/dashboard/icons/list-ul.svg"); } &.fa-minus:after { background-image: url("/img/dashboard/icons/minus.svg"); } &.fa-picture-o:after { background-image: url("/img/dashboard/icons/picture-o.svg"); } &.fa-question-circle:after { background-image: url("/img/dashboard/icons/question-circle.svg"); } &.fa-quote-left:after { background-image: url("/img/dashboard/icons/quote-left.svg"); } &.fa-repeat:after { background-image: url("/img/dashboard/icons/repeat.svg"); } &.fa-star:after { background-image: url("/img/dashboard/icons/star.svg"); } &.fa-strikethrough:after { background-image: url("/img/dashboard/icons/strikethrough.svg"); } &.fa-table:after { background-image: url("/img/dashboard/icons/table.svg"); } &.fa-undo:after { background-image: url("/img/dashboard/icons/undo.svg"); } }