// Libraries $fa-font-path: "/fonts"; @import "@fortawesome/fontawesome-free/scss/fontawesome.scss"; @import "@fortawesome/fontawesome-free/scss/solid.scss"; @import "bootstrap/scss/bootstrap.scss"; // 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-form { display: flex; width: 100%; &-input { display: block; width: 100%; } &-submit { margin-left: 10px; height: 32px; border: 1px solid fade-out($c-text, 0.75); border-radius: 4px; } } .search { margin-bottom: 10px; width: 100%; padding: 3px 8px; border: 1px solid fade-out(#000, 0.875); border-radius: 0.25rem; @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/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; } &.btn-outline { background-color: transparent; color: $c-text; } &.btn-inactive { pointer-events: none; } &.btn-disabled { opacity: 0.5; pointer-events: none; } } .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; } } } } .pagination-navigation-bar { margin-bottom: 10px; margin-left: 4px; display: flex; width: calc(100% - 8px); @include media-breakpoint-down(xs) { flex-direction: column; } @include media-breakpoint-up(sm) { justify-content: space-between; } &-arrow { position: relative; font-size: 0px; @include media-breakpoint-down(xs) { height: 35px; } &.prev { @include media-breakpoint-down(xs) { margin-bottom: 8px; } @include media-breakpoint-up(sm) { margin-right: ($grid-gutter-width / 2); } } &.next { transform: rotate(180deg); @include media-breakpoint-down(xs) { margin-top: 8px; } @include media-breakpoint-up(sm) { margin-left: ($grid-gutter-width / 2); } } &:before, &:after { content: ""; position: absolute; top: calc(50% - 1px); left: 25%; width: 16px; height: 2px; background-color: $c-text-light; @include media-breakpoint-down(xs) { left: 50%; } } &:before { transform: rotate(-45deg); transform-origin: bottom left; } &:after { transform: rotate(45deg); transform-origin: top left; } } &-page-count { display: flex; @include media-breakpoint-down(xs) { justify-content: center; } .btn { $spacing: 3px; &:not(:first-child) { margin-left: $spacing; } &:not(:last-child) { margin-right: $spacing; } &.space { position: relative; &:after { content: "..."; position: absolute; top: 0px; line-height: 25px; } &:first-child { margin-right: 20px; &:after { left: calc(100% + 7px); } } &:last-child { margin-left: 20px; &:after { right: calc(100% + 7px); } } } } } } .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; } } .list { margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid fade-out($c-text, 0.75); &-template, &-data { display: none; } &-items-row { margin-bottom: 10px; display: flex; align-items: center; .sort-icon { margin-right: 10px; display: inline-block; opacity: 1; transition: opacity 100ms; cursor: grab; &-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; } } } } &-input, &-button { &:not(:first-child) { margin-left: 5px; } &:not(:last-child) { margin-right: 5px; } } &-input { position: relative; &.wide { width: 100%; } &-inner { margin-bottom: 0px; } &-overlay { overflow: hidden; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; padding: 5px 8px; background-color: $c-input-bg; white-space: nowrap; text-overflow: ellipsis; pointer-events: none; } } &-button { min-width: 70px; height: $label-height; border: 1px solid fade-out($c-text, 0.75); border-radius: 4px; } } &-add-button { height: $label-height; border: 1px solid fade-out($c-text, 0.75); border-radius: 4px; } } .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, textarea, select { margin-bottom: 15px; } input, textarea { 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; } } textarea { resize: none; } select { max-width: 100%; } .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%); line-height: 1; cursor: pointer; &:hover { background-color: darken($c-dashboard-light, 7%); } } .image-upload-button { display: flex; justify-content: center; align-items: center; transition: background-color 150ms; } .image-delete-button { 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: flex; width: 100%; height: 100%; padding: $grid-gutter-width; justify-content: center; align-items: center; background-color: fade-out(lighten($c-dashboard-light, 1%), 0.3); opacity: 0; transition: opacity 250ms; .card { position: relative; margin: 0px; width: 100%; max-width: 500px; .btn { margin: 20px 15px; display: inline-block; &:not(:last-child) { margin-bottom: 0px; } } } &.alert .card { .message { min-height: 50px; padding: 15px 20px; text-align: left; @include media-breakpoint-up(md) { padding-right: 85px; } } .btn { @include media-breakpoint-down(sm) { margin-top: 0px; } @include media-breakpoint-up(md) { position: absolute; top: 50%; right: 0px; transform: translateY(-50%); } } } }