You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

587 lines
8.8 KiB

// Colors
$black: #393939;
$off-white: #ededed;
$dark-gray: #666;
$medium-gray: #6c757d;
$light-gray: #c2c2c2;
$blue: #237cbe;
$light-blue: lighten($blue, 40%);
$orange: #e8890c;
$yellow: #ffc107;
$light-yellow: #ffc;
$red: #dc3545;
// Custom Variables
$secondary-text-color: $medium-gray;
$accent-color: $orange;
$secondary-link-color: $light-blue;
$border-color: $light-gray;
$error-color: $red;
$error-background-color: $light-yellow;
$sold-out-color: $yellow;
$box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.09);
// Bootstrap Variable Overrides
$body-color: $black;
$body-bg: $off-white;
$primary: $blue;
$secondary: $dark-gray;
$min-contrast-ratio: 4;
$input-bg: white;
// Import Bootstrap Styles
@import "bootstrap";
// Custom CSS
.content {
@extend .container;
}
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
// Header and Nav
header {
background-color: $primary;
padding: 0.5rem;
margin-bottom: 3rem;
nav {
@extend .navbar, .navbar-expand-md;
img {
height: 50px;
margin-right: 0.5rem;
}
a {
color: $secondary-link-color;
}
a.button {
@extend .btn, .btn-outline-secondary;
}
ul {
@extend .nav, .navbar-nav;
letter-spacing: 1px;
&.left {
@extend .me-auto;
}
&.right {
@extend .ms-auto;
}
li {
@extend .nav-item;
font-size: 1.1rem;
margin-right: 5px;
a {
@extend .nav-link;
color: $secondary-link-color;
padding-bottom: 1px;
}
a:hover:not(.button),
a.active {
color: $off-white;
text-decoration: none;
border-bottom: 1px solid $off-white;
}
.button,
button {
margin-right: 10px;
color: $off-white;
border-color: $off-white;
}
.button:hover,
button:hover {
background: $off-white;
color: $primary;
border-color: $primary;
}
button {
@extend .btn, .btn-outline-secondary;
}
}
}
}
}
// Movies Index Page
section.movie {
@extend .row;
margin-bottom: 1.5rem;
padding-bottom: 1em;
border-bottom: 1px dotted $border-color;
&:nth-last-child(1) {
border-bottom: none;
}
.image {
@extend .col-md-3, .text-center;
img {
width: 100px;
box-shadow: $box-shadow;
}
}
.summary {
@extend .col-md-9, .text-start;
}
h2 {
font-size: 1.5rem;
margin-bottom: 0.25rem;
}
h3 {
font-size: 1.1rem;
color: $secondary-text-color;
font-weight: 400;
}
p {
margin-top: 1.1rem;
}
span.stars {
float: right;
margin-top: -3.75rem;
}
}
// Movie Show Page
section.movie-details {
@extend .row;
.image {
@extend .col-md-3, .text-start;
input[type="submit"] {
margin-top: 1rem;
}
}
.details {
@extend .col-md-7, .text-start;
}
aside {
@extend .col-md-2;
}
h1 {
font-size: 2rem;
}
h2 {
font-size: 1.35rem;
color: $secondary-text-color;
}
h3 {
margin-top: 1.5rem;
font-size: 1.25rem;
color: $secondary-text-color;
font-weight: 300;
}
table {
td {
padding-top: 0.35rem;
padding-bottom: 0.35rem;
}
th {
padding-right: 1rem;
}
}
.faves {
@extend .input-group;
margin-top: 1rem;
.count {
@extend .input-group-text;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
button[type="submit"] {
@extend .btn, .btn-outline-secondary;
border-color: #cdd3d8;
border-right: none;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
margin-top: 0;
}
}
p {
margin-top: 1rem;
font-size: 1.15em;
}
img {
margin-top: 0.5rem;
width: 150px;
box-shadow: $box-shadow;
}
a.review {
@extend .btn, .btn-success;
letter-spacing: 1px;
text-transform: uppercase;
margin-top: 1rem;
}
.reviews {
.star-rating {
margin-bottom: 0.5rem;
}
}
}
// Users Index Page
ul.users {
font-size: 1.25em;
list-style: none;
padding: 0;
li {
margin: 1em 0;
}
}
// User Show Page
section.user {
h2 {
font-size: 1.35rem;
color: $secondary-text-color;
}
h3 {
margin-top: 3rem;
font-size: 1.5rem;
margin-bottom: 2rem;
}
.actions {
margin-top: 1rem;
.button {
@extend .btn, .btn-sm;
&.edit {
@extend .btn-outline-secondary;
}
&.delete {
@extend .btn-danger;
}
}
}
.review {
@extend .row;
margin: 1rem 0;
border-radius: 0.3rem;
border: 1px solid $border-color;
padding: 1rem;
.details {
@extend .col-md-12, .text-start;
.title {
font-size: 1.15rem;
font-weight: 600;
}
.star-rating {
margin-bottom: 0.3rem;
}
.date {
font-size: 1rem;
font-weight: 400;
color: $secondary-text-color;
}
p {
margin-top: 1rem;
}
}
}
.favorite-movies {
display: flex;
flex-wrap: wrap;
margin-top: -1rem;
img {
margin: 1rem;
width: 150px;
box-shadow: $box-shadow;
}
}
}
// Reviews Index Page
ul.reviews {
font-size: 1.25em;
list-style: none;
padding: 0;
li {
margin: 1em 0 2.5rem 0;
span {
&.date {
font-size: 0.8em;
font-weight: 400;
margin-left: 0.3rem;
color: $secondary-text-color;
}
}
.button {
@extend .btn, .btn-sm, .btn-outline-danger;
margin-left: 0.5rem;
}
}
}
// Footer
footer {
background: $black;
color: $light-gray;
text-align: center;
margin-top: 3rem;
padding-top: 2rem;
padding-bottom: 2rem;
}
// Admin Section
section.admin {
text-align: center;
margin: 3rem 0;
padding-top: 2rem;
border-top: 1px dashed $border-color;
&.no-rule {
border-top: none;
padding-top: 0;
}
a.button, button {
@extend .btn, .btn-secondary;
letter-spacing: 1px;
text-transform: uppercase;
}
}
section.movie + section.admin {
border-top: none;
padding-top: 0;
}
// Aside
aside {
h4 {
color: $secondary-text-color;
font-size: 1rem;
margin-top: 1rem;
padding-bottom: 0.3rem;
text-transform: uppercase;
border-bottom: 1px solid $border-color;
}
ul {
list-style: none;
padding-left: 0.25rem;
li {
padding-bottom: 0.5rem;
}
}
}
// Forms
form.button_to {
display: inline;
}
form:not([class="button_to"]) {
max-width: 503px;
margin-top: 1.5rem;
label {
@extend .form-label;
font-size: 1.1rem;
font-weight: 600;
display: block;
}
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="submit"]),
textarea,
select:not(.date) {
@extend .form-control;
margin-bottom: 0.75rem;
width: 100%;
height: 100%;
}
select.date {
@extend .form-select;
width: auto;
display: inline-block;
margin-bottom: 0.75rem;
}
input[type="submit"] {
@extend .btn, .btn-primary;
display: block;
width: 100%;
margin-top: 1.5rem;
}
input[type="checkbox"] {
@extend .form-check-input;
width: 20px;
height: 20px;
}
input[type="checkbox"] + label {
@extend .form-check-label;
padding-left: 0.5rem;
margin-bottom: 0.5rem;
}
input[type="radio"] {
@extend .form-check-input;
width: 20px;
height: 20px;
}
input[type="radio"] + label {
@extend .form-check-label;
margin-bottom: 0.6rem;
font-weight: 400;
}
input[type="file"] {
margin-bottom: 0.75rem;
width: 100%;
}
.star {
@extend .form-check, .form-check-inline;
}
.checkboxes {
@extend .form-check;
margin-top: 1.5rem;
}
div.field_with_errors {
display: inline;
label {
color: $error-color;
}
input,
textarea,
select {
background: $error-background-color !important;
}
}
}
// Flashes
.flash {
@extend .alert;
text-align: center;
margin-top: -1rem;
margin-bottom: 2rem;
&.notice {
@extend .alert-success;
}
&.alert {
@extend .alert-danger;
}
}
// Errors
section.errors {
margin: 1rem 0;
padding: 1.5rem;
border-radius: 0.3rem;
background: $error-background-color;
h2 {
color: $error-color;
font-size: 1.25rem;
}
h3 {
font-size: 1rem;
margin-top: 1rem;
font-weight: 600;
}
}
// Star Rating
//
// Credit: https://codepen.io/filcp/pen/QvZVOg
.star-rating {
display: flex;
align-items: center;
font-size: 25px;
height: 25px;
justify-content: left;
.back-stars {
display: flex;
color: $light-gray;
position: relative;
// text-shadow: 0px 1px 0 #a2a2a2;
}
.front-stars {
display: flex;
color: $accent-color;
overflow: hidden;
position: absolute;
top: 0;
}
}