moviewyrm/bookwyrm/static/css/bookwyrm.css

921 lines
18 KiB
CSS
Raw Normal View History

html {
scroll-behavior: smooth;
}
2021-04-15 19:51:14 +00:00
body {
min-height: 100vh;
display: flex;
flex-direction: column;
}
2020-11-24 20:07:00 +00:00
.image {
overflow: hidden;
}
2020-10-01 20:53:52 +00:00
.navbar .logo {
max-height: 50px;
}
.card {
overflow: visible;
}
2021-03-26 17:32:42 +00:00
.scroll-x {
overflow: hidden;
overflow-x: auto;
}
2021-03-31 20:56:26 +00:00
.modal-card.is-fullwidth {
min-width: 75% !important;
}
2021-08-19 22:33:23 +00:00
.modal-card-body {
max-height: 70vh;
}
2021-03-31 20:56:26 +00:00
.clip-text {
max-height: 35em;
overflow: hidden;
}
2021-04-22 18:57:24 +00:00
/** Utilities not covered by Bulma
2021-04-21 20:32:14 +00:00
******************************************************************************/
@media only screen and (max-width: 768px) {
2021-04-21 20:36:07 +00:00
.is-sr-only-mobile {
2021-04-21 20:32:14 +00:00
border: none !important;
2021-04-21 20:36:07 +00:00
clip: rect(0, 0, 0, 0) !important;
height: 0.01em !important;
2021-04-21 20:32:14 +00:00
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
white-space: nowrap !important;
2021-04-21 20:36:07 +00:00
width: 0.01em !important;
2021-04-21 20:32:14 +00:00
}
.m-0-mobile {
margin: 0 !important;
}
2021-05-02 19:34:43 +00:00
.card-footer.is-stacked-mobile {
flex-direction: column;
}
2021-05-23 10:10:57 +00:00
2021-05-02 19:34:43 +00:00
.card-footer.is-stacked-mobile .card-footer-item:not(:last-child) {
border-bottom: 1px solid #ededed;
border-right: 0;
}
2021-04-21 20:32:14 +00:00
}
.button.is-transparent {
background-color: transparent;
}
.card.is-stretchable {
display: flex;
flex-direction: column;
height: 100%;
}
.card.is-stretchable .card-content {
flex-grow: 1;
}
2021-07-31 17:15:49 +00:00
.preserve-whitespace p {
white-space: pre-wrap !important;
}
2021-08-01 00:30:21 +00:00
.display-inline p {
display: inline !important;
}
2021-09-12 17:36:06 +00:00
input[type=file]::file-selector-button {
-moz-appearance: none;
-webkit-appearance: none;
background-color: #fff;
border-radius: 4px;
border: 1px solid #dbdbdb;
box-shadow: none;
color: #363636;
cursor: pointer;
font-size: 1rem;
height: 2.5em;
justify-content: center;
line-height: 1.5;
2021-09-12 17:41:16 +00:00
padding-bottom: calc(0.5em - 1px);
2021-09-12 17:36:06 +00:00
padding-left: 1em;
padding-right: 1em;
2021-09-12 17:41:16 +00:00
padding-top: calc(0.5em - 1px);
2021-09-12 17:36:06 +00:00
text-align: center;
white-space: nowrap;
}
2021-09-12 17:41:16 +00:00
2021-09-12 17:36:06 +00:00
input[type=file]::file-selector-button:hover {
border-color: #b5b5b5;
color: #363636;
}
summary::marker {
content: none;
}
.detail-pinned-button summary {
position: absolute;
right: 0;
}
.detail-pinned-button form {
float: left;
width: -webkit-fill-available;
margin-top: 1em;
}
/** Shelving
******************************************************************************/
/** @todo Replace icons with SVG symbols.
@see https://www.youtube.com/watch?v=9xXBYcWgCHA */
2021-01-30 19:43:40 +00:00
.shelf-option:disabled > *::after {
font-family: "icomoon"; /* stylelint-disable font-family-no-missing-generic-family-keyword */
2021-09-08 15:56:13 +00:00
content: "\e919"; /* icon-check */
2021-01-30 19:43:40 +00:00
margin-left: 0.5em;
}
/** Toggles
******************************************************************************/
.toggle-button[aria-pressed=true],
.toggle-button[aria-pressed=true]:hover {
2021-01-17 03:57:20 +00:00
background-color: hsl(171, 100%, 41%);
color: white;
}
.hide-active[aria-pressed=true],
.hide-inactive[aria-pressed=false] {
display: none;
}
2021-01-17 03:57:20 +00:00
.transition-x.is-hidden,
.transition-y.is-hidden {
display: block !important;
visibility: hidden !important;
2021-05-20 18:46:24 +00:00
height: 0 !important;
width: 0 !important;
margin: 0 !important;
padding: 0 !important;
overflow: auto;
}
.transition-x,
.transition-y {
transition-duration: 0.5s;
transition-timing-function: ease;
}
.transition-x {
transition-property: width, margin-left, margin-right, padding-left, padding-right;
}
.transition-y {
transition-property: height, margin-top, margin-bottom, padding-top, padding-bottom;
}
@media (prefers-reduced-motion: reduce) {
.transition-x,
.transition-y {
transition-duration: 0.001ms !important;
}
}
2020-09-28 21:47:53 +00:00
/** Stars
******************************************************************************/
.stars {
white-space: nowrap;
}
/** Stars in a review form
*
* Specificity makes hovering taking over checked inputs.
*
* \e9d9: filled star
* \e9d7: empty star;
* -------------------------------------------------------------------------- */
.form-rate-stars {
width: max-content;
2020-09-29 18:00:54 +00:00
}
/* All stars are visually filled by default. */
.form-rate-stars .icon::before {
2021-09-08 15:56:13 +00:00
content: '\e9d9'; /* icon-star-full */
2020-09-29 18:00:54 +00:00
}
2021-09-10 21:19:57 +00:00
/* Icons directly following half star inputs are marked as half */
.form-rate-stars input.half:checked ~ .icon::before {
content: '\e9d8'; /* icon-star-half */
}
2021-09-10 21:56:45 +00:00
/* stylelint-disable no-descending-specificity */
.form-rate-stars input.half:checked + input + .icon:hover::before {
content: '\e9d8' !important; /* icon-star-half */
}
2021-09-10 21:19:57 +00:00
/* Icons directly following half check inputs that follow the checked input are emptied. */
.form-rate-stars input.half:checked + input + .icon ~ .icon::before {
content: '\e9d7'; /* icon-star-empty */
}
/* Icons directly following inputs that follow the checked input are emptied. */
.form-rate-stars input:checked ~ input + .icon::before {
content: '\e9d7'; /* icon-star-empty */
}
2021-09-10 21:56:45 +00:00
/* When a label is hovered, repeat the fill-all-then-empty-following pattern. */
.form-rate-stars:hover .icon.icon::before {
2021-09-10 21:56:45 +00:00
content: '\e9d9' !important; /* icon-star-full */
2021-03-04 18:27:03 +00:00
}
.form-rate-stars .icon:hover ~ .icon::before {
2021-09-10 21:56:45 +00:00
content: '\e9d7' !important; /* icon-star-empty */
2020-09-29 18:00:54 +00:00
}
/** Book covers
*
* - .is-cover gives the behaviour of the cover and its surrounding. (optional)
* - .cover-container gives the dimensions and position (for borders, image and other elements).
* - .book-cover is positioned and sized based on its container.
*
* To have the cover within specific dimensions, specify a width or height for
* standard bulmas named breapoints:
*
* `is-(w|h)-(auto|xs|s|m|l|xl|xxl)[-(mobile|tablet|desktop)]`
*
* The cover will be centered horizontally and vertically within those dimensions.
*
* When using `.column.is-N`, add `.is-w-auto` to the container so that the flex
* calculations are not biased by the default `max-content`.
******************************************************************************/
.column.is-cover {
flex-grow: 0 !important;
2020-09-29 20:11:52 +00:00
}
.column.is-cover,
.column.is-cover + .column {
flex-basis: auto !important;
2021-01-03 19:10:04 +00:00
}
2020-09-29 20:11:52 +00:00
.cover-container {
display: flex;
justify-content: center;
align-items: center;
position: relative;
width: max-content;
max-width: 100%;
overflow: hidden;
2020-11-05 16:21:00 +00:00
}
/* Book cover
2021-04-25 13:45:49 +00:00
* -------------------------------------------------------------------------- */
2020-11-05 16:21:00 +00:00
2020-09-29 04:08:42 +00:00
.book-cover {
display: block;
max-width: 100%;
max-height: 100%;
/* Useful when stretching under-sized images. */
image-rendering: optimizeQuality;
image-rendering: smooth;
2020-09-29 04:08:42 +00:00
}
/* Cover caption
2021-04-25 13:45:49 +00:00
* -------------------------------------------------------------------------- */
2021-05-24 14:16:33 +00:00
.no-cover .cover-caption {
2020-09-29 04:08:42 +00:00
position: absolute;
top: 0;
right: 0;
bottom: 0;
2020-09-29 04:08:42 +00:00
left: 0;
2021-05-24 14:16:33 +00:00
padding: 0.5em;
font-size: 0.75em;
color: white;
background-color: #002549;
2021-05-24 14:16:33 +00:00
display: flex;
align-items: center;
justify-content: center;
white-space: initial;
text-align: center;
}
2020-09-29 04:08:42 +00:00
/** Avatars
******************************************************************************/
2020-09-29 04:08:42 +00:00
.avatar {
vertical-align: middle;
display: inline;
}
2021-04-07 16:07:32 +00:00
/** Statuses: Quotes
*
* \e906: icon-quote-open
* \e905: icon-quote-close
*
* The `content` class on the blockquote allows to apply styles to markdown
* generated HTML in the quote: https://bulma.io/documentation/elements/content/
*
* ```html
* <div class="quote block">
* <blockquote dir="auto" class="content mb-2">
* User generated quote in markdown
* </blockquote>
*
* <p> <a>Book Title</a> by <aclass="author">Author</a></p>
* </div>
* ```
******************************************************************************/
2021-04-07 16:07:32 +00:00
.quote > blockquote {
2020-09-29 21:45:04 +00:00
position: relative;
padding-left: 2em;
}
2021-04-07 16:07:32 +00:00
.quote > blockquote::before,
.quote > blockquote::after {
2020-09-29 21:45:04 +00:00
font-family: 'icomoon';
position: absolute;
}
2021-04-07 16:07:32 +00:00
.quote > blockquote::before {
2021-09-08 15:56:13 +00:00
content: "\e907"; /* icon-quote-open */
2020-09-29 21:45:04 +00:00
top: 0;
left: 0;
}
2021-04-07 16:07:32 +00:00
.quote > blockquote::after {
2021-09-08 15:56:13 +00:00
content: "\e906"; /* icon-quote-close */
2020-09-29 21:45:04 +00:00
right: 0;
}
/** Animations and transitions
******************************************************************************/
@keyframes turning {
from { transform: rotateZ(0deg); }
to { transform: rotateZ(360deg); }
}
.is-processing .icon-spinner::before {
animation: turning 1.5s infinite linear;
}
.icon-spinner {
display: none;
}
.is-processing .icon-spinner {
display: flex;
}
@media (prefers-reduced-motion: reduce) {
.is-processing .icon::before {
transition-duration: 0.001ms !important;
}
}
/** Transient notification
******************************************************************************/
#live-messages {
position: fixed;
bottom: 1em;
right: 1em;
}
2021-09-17 19:59:16 +00:00
/** Tooltips
******************************************************************************/
.tooltip {
width: 100%;
}
/** States
******************************************************************************/
/* "disabled" for non-buttons */
.is-disabled {
background-color: #dbdbdb;
border-color: #dbdbdb;
box-shadow: none;
color: #7a7a7a;
opacity: 0.5;
cursor: not-allowed;
}
/* Book preview table
******************************************************************************/
2021-04-21 19:26:20 +00:00
.book-preview td {
vertical-align: middle;
}
@media only screen and (max-width: 768px) {
2021-04-21 19:29:28 +00:00
table.is-mobile,
table.is-mobile tbody {
display: block;
}
2021-04-21 19:29:28 +00:00
table.is-mobile tr {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
border-top: 1px solid #dbdbdb;
}
2021-04-21 19:29:28 +00:00
table.is-mobile td {
display: block;
box-sizing: border-box;
flex: 1 0 100%;
order: 2;
border-bottom: 0;
}
2021-04-21 19:29:28 +00:00
table.is-mobile td.book-preview-top-row {
order: 1;
flex-basis: auto;
}
2021-04-21 19:29:28 +00:00
table.is-mobile td[data-title]:not(:empty)::before {
content: attr(data-title);
display: block;
2021-04-21 19:29:28 +00:00
font-size: 0.75em;
font-weight: bold;
}
2021-04-21 19:29:28 +00:00
table.is-mobile td:empty {
padding: 0;
}
2021-04-21 19:29:28 +00:00
table.is-mobile th,
table.is-mobile thead {
display: none;
}
}
2021-04-29 19:41:43 +00:00
/* Book list
******************************************************************************/
ol.ordered-list {
list-style: none;
2021-05-02 19:34:43 +00:00
counter-reset: list-counter;
2021-04-29 19:41:43 +00:00
}
ol.ordered-list li {
2021-05-02 19:34:43 +00:00
counter-increment: list-counter;
2021-04-29 19:41:43 +00:00
}
ol.ordered-list li::before {
2021-05-02 19:34:43 +00:00
content: counter(list-counter);
2021-04-29 19:45:48 +00:00
position: absolute;
left: -20px;
width: 20px;
height: 24px;
2021-05-02 19:34:43 +00:00
background-color: #fff;
2021-04-29 19:45:48 +00:00
border: 1px solid #dbdbdb;
border-right: 0;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
display: flex;
justify-content: center;
align-items: center;
color: #888;
font-size: 0.8em;
font-weight: bold;
2021-04-29 19:41:43 +00:00
}
2021-05-02 19:34:43 +00:00
@media only screen and (max-width: 768px) {
ol.ordered-list li::before {
left: 0;
z-index: 1;
border: 0;
border-right: 1px solid #dbdbdb;
border-bottom: 1px solid #dbdbdb;
border-radius: 0;
border-bottom-right-radius: 2px;
}
}
2021-05-23 10:10:57 +00:00
2021-10-02 01:05:48 +00:00
/* Threads
******************************************************************************/
2021-10-02 01:09:11 +00:00
2021-10-02 01:05:48 +00:00
.thread .is-main .card {
box-shadow: 0 0.5em 1em -0.125em rgb(50 115 220 / 35%), 0 0 0 1px rgb(50 115 220 / 2%);
}
2021-10-02 01:09:11 +00:00
.thread::after {
content: "";
2021-10-02 01:05:48 +00:00
position: absolute;
z-index: -1;
top: 0;
bottom: 0;
left: 2.5em;
border-left: 2px solid #e0e0e0;
}
2021-10-15 16:40:49 +00:00
/* Breadcrumbs
******************************************************************************/
.breadcrumb li:first-child * {
padding-left: 0;
}
.breadcrumb li > * {
align-items: center;
display: flex;
justify-content: center;
2021-10-15 16:54:14 +00:00
padding: 0 0.75em;
2021-10-15 16:40:49 +00:00
}
/* Dimensions
* @todo These could be in rem.
******************************************************************************/
.is-32x32 {
min-width: 32px !important;
min-height: 32px !important;
}
.is-96x96 {
min-width: 96px !important;
min-height: 96px !important;
}
.is-w-auto {
width: auto !important;
}
.is-w-xs {
width: 80px !important;
}
.is-w-s {
width: 100px !important;
}
.is-w-m {
width: 150px !important;
}
.is-w-l {
width: 200px !important;
}
.is-w-xl {
2021-04-27 18:30:10 +00:00
width: 250px !important;
}
.is-w-xxl {
width: 500px !important;
}
.is-h-xs {
height: 80px !important;
}
.is-h-s {
height: 100px !important;
}
.is-h-m {
height: 150px !important;
}
.is-h-l {
height: 200px !important;
}
.is-h-xl {
2021-04-27 18:30:10 +00:00
height: 250px !important;
}
.is-h-xxl {
height: 500px !important;
}
@media only screen and (max-width: 768px) {
.is-w-auto-mobile {
width: auto !important;
}
.is-w-xs-mobile {
width: 80px !important;
}
.is-w-s-mobile {
width: 100px !important;
}
.is-w-m-mobile {
width: 150px !important;
}
.is-w-l-mobile {
width: 200px !important;
}
2021-04-27 18:30:10 +00:00
.is-w-xl-mobile {
width: 250px !important;
}
.is-w-xxl-mobile {
width: 500px !important;
}
.is-h-xs-mobile {
height: 80px !important;
}
.is-h-s-mobile {
height: 100px !important;
}
.is-h-m-mobile {
height: 150px !important;
}
.is-h-l-mobile {
height: 200px !important;
}
2021-04-27 18:30:10 +00:00
.is-h-xl-mobile {
height: 250px !important;
}
.is-h-xxl-mobile {
height: 500px !important;
}
}
@media only screen and (min-width: 769px) {
.is-w-auto-tablet {
width: auto !important;
}
.is-w-xs-tablet {
width: 80px !important;
}
.is-w-s-tablet {
width: 100px !important;
}
.is-w-m-tablet {
width: 150px !important;
}
.is-w-l-tablet {
width: 200px !important;
}
2021-04-27 18:30:10 +00:00
.is-w-xl-tablet {
width: 250px !important;
}
.is-w-xxl-tablet {
width: 500px !important;
}
.is-h-xs-tablet {
height: 80px !important;
}
.is-h-s-tablet {
height: 100px !important;
}
.is-h-m-tablet {
height: 150px !important;
}
.is-h-l-tablet {
height: 200px !important;
}
2021-04-27 18:30:10 +00:00
.is-h-xl-tablet {
height: 250px !important;
}
.is-h-xxl-tablet {
height: 500px !important;
}
}
@media only screen and (min-width: 1024px) {
.is-w-auto-desktop {
width: auto !important;
}
.is-w-xs-desktop {
width: 80px !important;
}
.is-w-s-desktop {
width: 100px !important;
}
.is-w-m-desktop {
width: 150px !important;
}
.is-w-l-desktop {
width: 200px !important;
}
2021-04-27 18:30:10 +00:00
.is-w-xl-desktop {
width: 250px !important;
}
.is-w-xxl-desktop {
width: 500px !important;
}
.is-h-xs-desktop {
height: 80px !important;
}
.is-h-s-desktop {
height: 100px !important;
}
.is-h-m-desktop {
height: 150px !important;
}
.is-h-l-desktop {
height: 200px !important;
}
2021-04-27 18:30:10 +00:00
.is-h-xl-desktop {
height: 250px !important;
}
.is-h-xxl-desktop {
height: 500px !important;
}
}
/* Alignments
*
* Use them with `.align.to-(c|t|r|b|l)[-(mobile|tablet)]`
******************************************************************************/
/* Flex item position
* -------------------------------------------------------------------------- */
.align {
display: flex !important;
flex-direction: row !important;
}
.align.to-c {
justify-content: center !important;
}
2021-04-28 08:47:14 +00:00
.align.to-t {
align-items: flex-start !important;
}
.align.to-r {
justify-content: flex-end !important;
}
.align.to-b {
align-items: flex-end !important;
}
.align.to-l {
justify-content: flex-start !important;
}
@media screen and (max-width: 768px) {
.align.to-c-mobile {
justify-content: center !important;
}
2021-04-28 08:47:14 +00:00
.align.to-t-mobile {
align-items: flex-start !important;
}
.align.to-r-mobile {
justify-content: flex-end !important;
}
2021-04-28 12:48:25 +00:00
.align.to-b-mobile {
align-items: flex-end !important;
}
.align.to-l-mobile {
justify-content: flex-start !important;
}
}
@media screen and (min-width: 769px) {
.align.to-c-tablet {
justify-content: center !important;
}
2021-04-28 08:47:14 +00:00
.align.to-t-tablet {
align-items: flex-start !important;
}
.align.to-r-tablet {
justify-content: flex-end !important;
}
2021-04-28 12:48:25 +00:00
.align.to-b-tablet {
align-items: flex-end !important;
}
.align.to-l-tablet {
justify-content: flex-start !important;
}
}
/* Spacings
*
* Those are supplementary rules to Bulmas. They follow the same conventions.
* Add those youll need.
******************************************************************************/
.mr-auto {
margin-right: auto !important;
}
.ml-auto {
margin-left: auto !important;
}
@media screen and (max-width: 768px) {
2021-04-28 12:48:25 +00:00
.m-0-mobile {
margin: 0 !important;
}
.mr-auto-mobile {
margin-right: auto !important;
}
.ml-auto-mobile {
margin-left: auto !important;
}
.mt-3-mobile {
margin-top: 0.75rem !important;
}
.ml-3-mobile {
margin-left: 0.75rem !important;
}
.mx-3-mobile {
margin-right: 0.75rem !important;
margin-left: 0.75rem !important;
}
.my-3-mobile {
margin-top: 0.75rem !important;
margin-bottom: 0.75rem !important;
}
}
@media screen and (min-width: 769px) {
.m-0-tablet {
margin: 0 !important;
}
.mr-auto-tablet {
margin-right: auto !important;
}
.ml-auto-tablet {
margin-left: auto !important;
}
.mt-3-tablet {
margin-top: 0.75rem !important;
}
.ml-3-tablet {
margin-left: 0.75rem !important;
}
.mx-3-tablet {
margin-right: 0.75rem !important;
margin-left: 0.75rem !important;
}
.my-3-tablet {
margin-top: 0.75rem !important;
margin-bottom: 0.75rem !important;
}
}