forked from mirrors/bookwyrm
b27b6a5980
https://dequeuniversity.com/rules/axe/4.3/aria-required-children In order to make this work, I had to translate Bulma's style so it doesn't use `ul` and `li` anymore. The JS code had to be adapted, I also changed `button` to `tab` (seemed like a more relevant name) and added a `scrollIntoView()` on load the active tab is always visible.
1458 lines
28 KiB
CSS
1458 lines
28 KiB
CSS
html {
|
||
scroll-behavior: smooth;
|
||
}
|
||
|
||
body {
|
||
min-height: 100vh;
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
button {
|
||
border: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
width: auto;
|
||
overflow: visible;
|
||
background: transparent;
|
||
|
||
/* inherit font, color & alignment from ancestor */
|
||
color: inherit;
|
||
font: inherit;
|
||
text-align: inherit;
|
||
|
||
/* Normalize `line-height`. Cannot be changed from `normal` in Firefox 4+. */
|
||
line-height: normal;
|
||
|
||
/* Corrects font smoothing for webkit */
|
||
-webkit-font-smoothing: inherit;
|
||
-moz-osx-font-smoothing: inherit;
|
||
|
||
/* Corrects inability to style clickable `input` types in iOS */
|
||
-webkit-appearance: none;
|
||
|
||
/* Generalizes pointer cursor */
|
||
cursor: pointer;
|
||
}
|
||
|
||
button::-moz-focus-inner {
|
||
/* Remove excess padding and border in Firefox 4+ */
|
||
border: 0;
|
||
padding: 0;
|
||
}
|
||
|
||
/* Better accessibility for keyboard users */
|
||
*:focus-visible {
|
||
outline-style: auto !important;
|
||
}
|
||
|
||
.image {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.navbar .logo {
|
||
max-height: 50px;
|
||
}
|
||
|
||
.card {
|
||
overflow: visible;
|
||
}
|
||
|
||
.card.has-border {
|
||
border: 1px solid #eee;
|
||
}
|
||
|
||
.scroll-x {
|
||
overflow: hidden;
|
||
overflow-x: auto;
|
||
}
|
||
|
||
.modal-card {
|
||
pointer-events: none;
|
||
}
|
||
|
||
.modal-card > * {
|
||
pointer-events: all;
|
||
}
|
||
|
||
/* stylelint-disable no-descending-specificity */
|
||
.modal-card:focus {
|
||
outline-style: auto;
|
||
}
|
||
|
||
.modal-card:focus:not(:focus-visible) {
|
||
outline-style: initial;
|
||
}
|
||
|
||
.modal-card:focus-visible {
|
||
outline-style: auto;
|
||
}
|
||
/* stylelint-enable no-descending-specificity */
|
||
|
||
.modal-card.is-fullwidth {
|
||
min-width: 75% !important;
|
||
}
|
||
|
||
@media only screen and (min-width: 769px) {
|
||
.modal-card.is-thin {
|
||
width: 350px !important;
|
||
}
|
||
}
|
||
|
||
.modal-card-body {
|
||
max-height: 70vh;
|
||
}
|
||
|
||
.clip-text {
|
||
max-height: 35em;
|
||
overflow: hidden;
|
||
}
|
||
|
||
/** Utilities not covered by Bulma
|
||
******************************************************************************/
|
||
|
||
@media only screen and (max-width: 768px) {
|
||
.is-sr-only-mobile {
|
||
border: none !important;
|
||
clip: rect(0, 0, 0, 0) !important;
|
||
height: 0.01em !important;
|
||
overflow: hidden !important;
|
||
padding: 0 !important;
|
||
position: absolute !important;
|
||
white-space: nowrap !important;
|
||
width: 0.01em !important;
|
||
}
|
||
|
||
.m-0-mobile {
|
||
margin: 0 !important;
|
||
}
|
||
|
||
.card-footer.is-stacked-mobile {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.card-footer.is-stacked-mobile .card-footer-item:not(:last-child) {
|
||
border-bottom: 1px solid #ededed;
|
||
border-right: 0;
|
||
}
|
||
|
||
.is-flex-direction-row-mobile {
|
||
flex-direction: row !important;
|
||
}
|
||
|
||
.is-flex-direction-column-mobile {
|
||
flex-direction: column !important;
|
||
}
|
||
}
|
||
|
||
.tag.is-small {
|
||
height: auto;
|
||
}
|
||
|
||
.button.is-transparent {
|
||
background-color: transparent;
|
||
}
|
||
|
||
.card.is-stretchable {
|
||
display: flex;
|
||
flex-direction: column;
|
||
height: 100%;
|
||
}
|
||
|
||
.card.is-stretchable .card-content {
|
||
flex-grow: 1;
|
||
}
|
||
|
||
.preserve-whitespace p {
|
||
white-space: pre-wrap !important;
|
||
}
|
||
|
||
.display-inline p {
|
||
display: inline !important;
|
||
}
|
||
|
||
button .button-invisible-overlay {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
padding: 1rem;
|
||
box-sizing: border-box;
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: column;
|
||
justify-content: center;
|
||
background: rgba(0, 0, 0, 66%);
|
||
color: white;
|
||
opacity: 0;
|
||
transition: opacity 0.2s ease;
|
||
}
|
||
|
||
button:hover .button-invisible-overlay,
|
||
button:active .button-invisible-overlay,
|
||
button:focus-visible .button-invisible-overlay {
|
||
opacity: 1;
|
||
}
|
||
|
||
/** File input styles
|
||
******************************************************************************/
|
||
|
||
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;
|
||
padding-bottom: calc(0.5em - 1px);
|
||
padding-left: 1em;
|
||
padding-right: 1em;
|
||
padding-top: calc(0.5em - 1px);
|
||
text-align: center;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
input[type="file"]::file-selector-button:hover {
|
||
border-color: #b5b5b5;
|
||
color: #363636;
|
||
}
|
||
|
||
/** General `details` element styles
|
||
******************************************************************************/
|
||
|
||
details summary {
|
||
cursor: pointer;
|
||
}
|
||
|
||
summary::-webkit-details-marker {
|
||
display: none;
|
||
}
|
||
|
||
details summary::marker {
|
||
content: none;
|
||
}
|
||
|
||
details.detail-pinned-button summary {
|
||
position: absolute;
|
||
right: 0;
|
||
}
|
||
|
||
details.detail-pinned-button form {
|
||
float: left;
|
||
width: 100%;
|
||
margin-top: 1em;
|
||
}
|
||
|
||
/** Dropdown w/ Details element
|
||
******************************************************************************/
|
||
|
||
details.dropdown[open] summary.dropdown-trigger::before {
|
||
content: "";
|
||
position: fixed;
|
||
top: 0;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
}
|
||
|
||
details.dropdown .dropdown-menu {
|
||
display: block !important;
|
||
}
|
||
|
||
details.dropdown .dropdown-menu button {
|
||
/* Fix weird Safari defaults */
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
details.dropdown .dropdown-menu button:focus-visible,
|
||
details.dropdown .dropdown-menu a:focus-visible {
|
||
outline-style: auto;
|
||
outline-offset: -2px;
|
||
}
|
||
|
||
@media only screen and (max-width: 768px) {
|
||
details.dropdown[open] summary.dropdown-trigger::before {
|
||
background-color: rgba(0, 0, 0, 50%);
|
||
z-index: 30;
|
||
}
|
||
|
||
details .dropdown-menu {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
display: flex !important;
|
||
align-items: center;
|
||
justify-content: center;
|
||
pointer-events: none;
|
||
z-index: 100;
|
||
}
|
||
|
||
details .dropdown-menu > * {
|
||
pointer-events: all;
|
||
}
|
||
}
|
||
|
||
/** Bookwyrm Tabs
|
||
******************************************************************************/
|
||
|
||
.bw-tabs {
|
||
-webkit-overflow-scrolling:touch;
|
||
-webkit-touch-callout:none;
|
||
position: relative;
|
||
align-items:center;
|
||
display:flex;
|
||
font-size:1rem;
|
||
justify-content:flex-start;
|
||
overflow-x:auto;
|
||
overflow-y:hidden;
|
||
user-select:none;
|
||
white-space:nowrap
|
||
}
|
||
.bw-tabs::before {
|
||
border-bottom-color:#dbdbdb;
|
||
border-bottom-style:solid;
|
||
border-bottom-width:1px;
|
||
bottom: 0;
|
||
content:"";
|
||
position: absolute;
|
||
width: 100%;
|
||
}
|
||
.bw-tabs:not(:last-child) {
|
||
margin-bottom:1.5rem
|
||
}
|
||
.bw-tabs a {
|
||
align-items:center;
|
||
border-bottom-color:#dbdbdb;
|
||
border-bottom-style:solid;
|
||
border-bottom-width:1px;
|
||
color:#4a4a4a;
|
||
display:flex;
|
||
justify-content:center;
|
||
margin-bottom:-1px;
|
||
padding:.5em 1em;
|
||
position: relative;
|
||
}
|
||
.bw-tabs a:hover {
|
||
border-bottom-color:transparent;
|
||
color:#363636
|
||
}
|
||
.bw-tabs a.is-active {
|
||
border-bottom-color:transparent;
|
||
color:#3273dc
|
||
}
|
||
.bw-tabs.is-left {
|
||
padding-right:.75em
|
||
}
|
||
.bw-tabs.is-center {
|
||
flex:none;
|
||
justify-content:center;
|
||
padding-left:.75em;
|
||
padding-right:.75em
|
||
}
|
||
.bw-tabs.is-right {
|
||
justify-content:flex-end;
|
||
padding-left:.75em
|
||
}
|
||
.bw-tabs .icon:first-child {
|
||
margin-right:.5em
|
||
}
|
||
.bw-tabs .icon:last-child {
|
||
margin-left:.5em
|
||
}
|
||
.bw-tabs.is-centered {
|
||
justify-content:center
|
||
}
|
||
.bw-tabs.is-right {
|
||
justify-content:flex-end
|
||
}
|
||
.bw-tabs.is-boxed a {
|
||
border:1px solid transparent;
|
||
border-radius:4px 4px 0 0
|
||
}
|
||
.bw-tabs.is-boxed a:hover {
|
||
background-color:#f5f5f5;
|
||
border-bottom-color:#dbdbdb
|
||
}
|
||
.bw-tabs.is-boxed a.is-active {
|
||
background-color:#fff;
|
||
border-color:#dbdbdb;
|
||
border-bottom-color:#fff!important
|
||
}
|
||
.bw-tabs.is-fullwidth a {
|
||
flex-grow:1;
|
||
flex-shrink:0
|
||
}
|
||
.bw-tabs.is-toggle a {
|
||
border-color:#dbdbdb;
|
||
border-style:solid;
|
||
border-width:1px;
|
||
margin-bottom:0;
|
||
position:relative
|
||
}
|
||
.bw-tabs.is-toggle a:hover {
|
||
background-color:#f5f5f5;
|
||
border-color:#b5b5b5;
|
||
z-index:2
|
||
}
|
||
.bw-tabs.is-toggle a+a {
|
||
margin-left:-1px
|
||
}
|
||
.bw-tabs.is-toggle a:first-child {
|
||
border-top-left-radius:4px;
|
||
border-bottom-left-radius:4px
|
||
}
|
||
.bw-tabs.is-toggle a:last-child {
|
||
border-top-right-radius:4px;
|
||
border-bottom-right-radius:4px
|
||
}
|
||
.bw-tabs.is-toggle a.is-active {
|
||
background-color:#3273dc;
|
||
border-color:#3273dc;
|
||
color:#fff;
|
||
z-index:1
|
||
}
|
||
.bw-tabs.is-toggle {
|
||
border-bottom:none
|
||
}
|
||
.bw-tabs.is-toggle.is-toggle-rounded a:first-child {
|
||
border-bottom-left-radius:290486px;
|
||
border-top-left-radius:290486px;
|
||
padding-left:1.25em
|
||
}
|
||
.bw-tabs.is-toggle.is-toggle-rounded a:last-child {
|
||
border-bottom-right-radius:290486px;
|
||
border-top-right-radius:290486px;
|
||
padding-right:1.25em
|
||
}
|
||
.bw-tabs.is-small {
|
||
font-size:.75rem
|
||
}
|
||
.bw-tabs.is-medium {
|
||
font-size:1.25rem
|
||
}
|
||
.bw-tabs.is-large {
|
||
font-size:1.5rem
|
||
}
|
||
|
||
.bw-tabs.has-aside-text a {
|
||
margin-top: 1.5rem;
|
||
}
|
||
|
||
.bw-tabs a .aside-text {
|
||
position: absolute;
|
||
top: calc(-.75rem - .75rem);
|
||
left: 0;
|
||
color: #4a4a4a;
|
||
}
|
||
|
||
/** Details panel
|
||
******************************************************************************/
|
||
|
||
details.details-panel {
|
||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 10%);
|
||
transition: box-shadow 0.2s ease;
|
||
padding: 0.75rem;
|
||
}
|
||
|
||
details[open].details-panel,
|
||
details.details-panel:hover {
|
||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 20%);
|
||
}
|
||
|
||
details.details-panel summary {
|
||
position: relative;
|
||
}
|
||
|
||
details.details-panel summary .details-close {
|
||
position: absolute;
|
||
right: 0;
|
||
top: 0;
|
||
transform: rotate(45deg);
|
||
transition: transform 0.2s ease;
|
||
}
|
||
|
||
details[open].details-panel summary .details-close {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
@media only screen and (min-width: 769px) {
|
||
.details-panel .filters-field:not(:last-child) {
|
||
border-right: 1px solid rgba(0, 0, 0, 10%);
|
||
margin-top: 0.75rem;
|
||
margin-bottom: 0.75rem;
|
||
padding-top: 0.25rem;
|
||
padding-bottom: 0.25rem;
|
||
}
|
||
}
|
||
|
||
/** Shelving
|
||
******************************************************************************/
|
||
|
||
/** @todo Replace icons with SVG symbols.
|
||
@see https://www.youtube.com/watch?v=9xXBYcWgCHA */
|
||
.shelf-option:disabled > *::after {
|
||
font-family: icomoon; /* stylelint-disable font-family-no-missing-generic-family-keyword */
|
||
content: "\e919"; /* icon-check */
|
||
margin-left: 0.5em;
|
||
}
|
||
|
||
/** Toggles
|
||
******************************************************************************/
|
||
|
||
.toggle-button[aria-pressed="true"],
|
||
.toggle-button[aria-pressed="true"]:hover {
|
||
background-color: hsl(171deg, 100%, 41%);
|
||
color: white;
|
||
}
|
||
|
||
.hide-active[aria-pressed="true"],
|
||
.hide-inactive[aria-pressed="false"] {
|
||
display: none;
|
||
}
|
||
|
||
.transition-x.is-hidden,
|
||
.transition-y.is-hidden {
|
||
display: block !important;
|
||
visibility: hidden !important;
|
||
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;
|
||
}
|
||
}
|
||
|
||
/** 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;
|
||
}
|
||
|
||
/* All stars are visually filled by default. */
|
||
.form-rate-stars .icon::before {
|
||
content: "\e9d9"; /* icon-star-full */
|
||
}
|
||
|
||
/* Icons directly following half star inputs are marked as half */
|
||
.form-rate-stars input.half:checked ~ .icon::before {
|
||
content: "\e9d8"; /* icon-star-half */
|
||
}
|
||
|
||
/* stylelint-disable no-descending-specificity */
|
||
.form-rate-stars input.half:checked + input + .icon:hover::before {
|
||
content: "\e9d8" !important; /* icon-star-half */
|
||
}
|
||
|
||
/* 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 */
|
||
}
|
||
|
||
/* When a label is hovered, repeat the fill-all-then-empty-following pattern. */
|
||
.form-rate-stars:hover .icon.icon::before {
|
||
content: "\e9d9" !important; /* icon-star-full */
|
||
}
|
||
|
||
.form-rate-stars .icon:hover ~ .icon::before {
|
||
content: "\e9d7" !important; /* icon-star-empty */
|
||
}
|
||
|
||
/** 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 bulma’s 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;
|
||
}
|
||
|
||
.column.is-cover,
|
||
.column.is-cover + .column {
|
||
flex-basis: auto !important;
|
||
}
|
||
|
||
.cover-container {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
position: relative;
|
||
width: max-content;
|
||
max-width: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
/* Book cover
|
||
* -------------------------------------------------------------------------- */
|
||
|
||
.book-cover {
|
||
display: block;
|
||
max-width: 100%;
|
||
max-height: 100%;
|
||
|
||
/* Useful when stretching under-sized images. */
|
||
image-rendering: optimizeQuality;
|
||
image-rendering: smooth;
|
||
}
|
||
|
||
/* Cover caption
|
||
* -------------------------------------------------------------------------- */
|
||
|
||
.no-cover .cover-caption {
|
||
position: absolute;
|
||
top: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
left: 0;
|
||
padding: 0.5em;
|
||
font-size: 0.75em;
|
||
color: white;
|
||
background-color: #002549;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
flex-direction: column;
|
||
gap: 1em;
|
||
white-space: initial;
|
||
text-align: center;
|
||
}
|
||
|
||
/** Avatars
|
||
******************************************************************************/
|
||
|
||
.avatar {
|
||
vertical-align: middle;
|
||
display: inline;
|
||
}
|
||
|
||
/** 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 <a…class="author">Author</a></p>
|
||
* </div>
|
||
* ```
|
||
******************************************************************************/
|
||
|
||
.quote > blockquote {
|
||
position: relative;
|
||
padding-left: 2em;
|
||
}
|
||
|
||
.quote > blockquote::before,
|
||
.quote > blockquote::after {
|
||
font-family: icomoon;
|
||
position: absolute;
|
||
}
|
||
|
||
.quote > blockquote::before {
|
||
content: "\e907"; /* icon-quote-open */
|
||
top: 0;
|
||
left: 0;
|
||
}
|
||
|
||
.quote > blockquote::after {
|
||
content: "\e906"; /* icon-quote-close */
|
||
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;
|
||
}
|
||
|
||
/** 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
|
||
******************************************************************************/
|
||
|
||
.book-preview td {
|
||
vertical-align: middle;
|
||
}
|
||
|
||
@media only screen and (max-width: 768px) {
|
||
table.is-mobile,
|
||
table.is-mobile tbody {
|
||
display: block;
|
||
}
|
||
|
||
table.is-mobile tr {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
justify-content: space-between;
|
||
border-top: 1px solid #dbdbdb;
|
||
}
|
||
|
||
table.is-mobile td {
|
||
display: block;
|
||
box-sizing: border-box;
|
||
flex: 1 0 100%;
|
||
order: 2;
|
||
border-bottom: 0;
|
||
}
|
||
|
||
table.is-mobile td.book-preview-top-row {
|
||
order: 1;
|
||
flex-basis: auto;
|
||
}
|
||
|
||
table.is-mobile td[data-title]:not(:empty)::before {
|
||
content: attr(data-title);
|
||
display: block;
|
||
font-size: 0.75em;
|
||
font-weight: bold;
|
||
}
|
||
|
||
table.is-mobile td:empty {
|
||
padding: 0;
|
||
}
|
||
|
||
table.is-mobile th,
|
||
table.is-mobile thead {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
/* Book list
|
||
******************************************************************************/
|
||
|
||
ol.ordered-list {
|
||
list-style: none;
|
||
counter-reset: list-counter;
|
||
}
|
||
|
||
ol.ordered-list li {
|
||
counter-increment: list-counter;
|
||
}
|
||
|
||
ol.ordered-list li::before {
|
||
content: counter(list-counter);
|
||
position: absolute;
|
||
left: -20px;
|
||
width: 20px;
|
||
height: 24px;
|
||
background-color: #fff;
|
||
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;
|
||
}
|
||
|
||
@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;
|
||
}
|
||
}
|
||
|
||
.overflow-wrap-anywhere {
|
||
overflow-wrap: anywhere;
|
||
min-width: 10em;
|
||
}
|
||
|
||
/* Threads
|
||
******************************************************************************/
|
||
|
||
.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%);
|
||
}
|
||
|
||
.thread::after {
|
||
content: "";
|
||
position: absolute;
|
||
z-index: -1;
|
||
top: 0;
|
||
bottom: 0;
|
||
left: 2.5em;
|
||
border-left: 2px solid #e0e0e0;
|
||
}
|
||
|
||
/* Breadcrumbs
|
||
******************************************************************************/
|
||
|
||
.breadcrumb li:first-child * {
|
||
padding-left: 0;
|
||
}
|
||
|
||
.breadcrumb li > * {
|
||
align-items: center;
|
||
display: flex;
|
||
justify-content: center;
|
||
padding: 0 0.75em;
|
||
}
|
||
|
||
/* Notifications page
|
||
******************************************************************************/
|
||
|
||
.notification a.icon {
|
||
text-decoration: none !important;
|
||
}
|
||
|
||
/* Breadcrumbs
|
||
******************************************************************************/
|
||
|
||
.books-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(2, 1fr);
|
||
gap: 1rem;
|
||
align-items: end;
|
||
justify-items: stretch;
|
||
}
|
||
|
||
.books-grid > .is-big {
|
||
grid-column: span 2;
|
||
grid-row: span 2;
|
||
justify-self: stretch;
|
||
}
|
||
|
||
.books-grid .book-cover {
|
||
width: 100%;
|
||
}
|
||
|
||
.books-grid .book-title {
|
||
--height-basis: 1.35rem;
|
||
|
||
display: block;
|
||
margin-top: 0.5rem;
|
||
line-height: var(--height-basis);
|
||
min-height: calc(2 * var(--height-basis));
|
||
}
|
||
|
||
@media only screen and (min-width: 769px) {
|
||
.books-grid {
|
||
gap: 1.5rem;
|
||
grid-template-columns: repeat(auto-fill, minmax(8em, 1fr));
|
||
}
|
||
}
|
||
|
||
/* Copy
|
||
******************************************************************************/
|
||
|
||
.horizontal-copy {
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
gap: 0.75rem;
|
||
}
|
||
|
||
.horizontal-copy textarea {
|
||
min-width: initial;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.horizontal-copy button {
|
||
align-self: stretch;
|
||
height: unset;
|
||
}
|
||
|
||
.vertical-copy {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: stretch;
|
||
gap: 0.75rem;
|
||
}
|
||
|
||
.vertical-copy button {
|
||
width: 100%;
|
||
}
|
||
|
||
/* 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 {
|
||
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 {
|
||
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;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
|
||
.align.to-t-mobile {
|
||
align-items: flex-start !important;
|
||
}
|
||
|
||
.align.to-r-mobile {
|
||
justify-content: flex-end !important;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
|
||
.align.to-t-tablet {
|
||
align-items: flex-start !important;
|
||
}
|
||
|
||
.align.to-r-tablet {
|
||
justify-content: flex-end !important;
|
||
}
|
||
|
||
.align.to-b-tablet {
|
||
align-items: flex-end !important;
|
||
}
|
||
|
||
.align.to-l-tablet {
|
||
justify-content: flex-start !important;
|
||
}
|
||
}
|
||
|
||
/* Spacings
|
||
*
|
||
* Those are supplementary rules to Bulma’s. They follow the same conventions.
|
||
* Add those you’ll need.
|
||
******************************************************************************/
|
||
|
||
.mr-auto {
|
||
margin-right: auto !important;
|
||
}
|
||
|
||
.ml-auto {
|
||
margin-left: auto !important;
|
||
}
|
||
|
||
@media screen and (max-width: 768px) {
|
||
.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;
|
||
}
|
||
}
|
||
|
||
/* Gaps (for Flexbox and Grid)
|
||
*
|
||
* Those are supplementary rules to Bulma’s. They follow the same conventions.
|
||
* Add those you’ll need.
|
||
******************************************************************************/
|
||
|
||
.is-gap-0 {
|
||
gap: 0;
|
||
}
|
||
|
||
.is-gap-1 {
|
||
gap: 0.25rem;
|
||
}
|
||
|
||
.is-gap-2 {
|
||
gap: 0.5rem;
|
||
}
|
||
|
||
.is-gap-3 {
|
||
gap: 0.75rem;
|
||
}
|
||
|
||
.is-gap-4 {
|
||
gap: 1rem;
|
||
}
|
||
|
||
.is-gap-5 {
|
||
gap: 1.5rem;
|
||
}
|
||
|
||
.is-gap-6 {
|
||
gap: 3rem;
|
||
}
|
||
|
||
.is-row-gap-0 {
|
||
row-gap: 0;
|
||
}
|
||
|
||
.is-row-gap-1 {
|
||
row-gap: 0.25rem;
|
||
}
|
||
|
||
.is-row-gap-2 {
|
||
row-gap: 0.5rem;
|
||
}
|
||
|
||
.is-row-gap-3 {
|
||
row-gap: 0.75rem;
|
||
}
|
||
|
||
.is-row-gap-4 {
|
||
row-gap: 1rem;
|
||
}
|
||
|
||
.is-row-gap-5 {
|
||
row-gap: 1.5rem;
|
||
}
|
||
|
||
.is-row-gap-6 {
|
||
row-gap: 3rem;
|
||
}
|
||
|
||
.is-column-gap-0 {
|
||
column-gap: 0;
|
||
}
|
||
|
||
.is-column-gap-1 {
|
||
column-gap: 0.25rem;
|
||
}
|
||
|
||
.is-column-gap-2 {
|
||
column-gap: 0.5rem;
|
||
}
|
||
|
||
.is-column-gap-3 {
|
||
column-gap: 0.75rem;
|
||
}
|
||
|
||
.is-column-gap-4 {
|
||
column-gap: 1rem;
|
||
}
|
||
|
||
.is-column-gap-5 {
|
||
column-gap: 1.5rem;
|
||
}
|
||
|
||
.is-column-gap-6 {
|
||
column-gap: 3rem;
|
||
}
|