1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/src/components/cardbuilder/card.css
2020-05-18 19:14:55 +02:00

824 lines
14 KiB
CSS

button {
-webkit-border-fit: border !important;
}
button::-moz-focus-inner {
padding: 0;
border: 0;
}
.card {
border: 0;
font-size: inherit !important;
font-family: inherit !important;
text-transform: none;
background: none !important;
background-color: transparent !important;
margin: 0;
padding: 0;
display: block;
color: inherit !important;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
outline: none !important;
cursor: pointer;
contain: layout style;
flex-shrink: 0;
font-weight: inherit !important;
}
.card:not(.show-animation) {
contain: layout style paint;
}
.itemsContainer {
display: flex;
}
.vertical-list {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
}
.vertical-wrap {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.vertical-wrap.centered {
justify-content: center;
}
.cardScalable {
position: relative;
contain: layout style;
}
.cardPadder-backdrop,
.cardPadder-mixedBackdrop,
.cardPadder-smallBackdrop,
.cardPadder-overflowBackdrop,
.cardPadder-overflowSmallBackdrop {
padding-bottom: 56.25%;
contain: strict;
}
.cardPadder-square,
.cardPadder-mixedSquare,
.cardPadder-overflowSquare,
.overflowSquareCard-textCardPadder {
padding-bottom: 100%;
contain: strict;
}
.cardPadder-portrait,
.cardPadder-mixedPortrait,
.cardPadder-overflowPortrait,
.overflowPortraitCard-textCardPadder {
padding-bottom: 150%;
contain: strict;
}
.cardPadder-banner {
padding-bottom: 18.5%;
contain: strict;
}
.cardBox {
padding: 0 !important;
margin: 0.6em;
transition: none;
border: 0 solid transparent;
/* These both are needed in case cardBox is a button */
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
outline: none !important;
contain: layout;
contain: style;
}
.card.show-animation .cardBox {
will-change: transform;
transition: transform 200ms ease-out;
}
.card.show-focus:not(.show-animation) .cardBox {
margin: 0.4em;
}
.card.show-focus:not(.show-animation) .cardBox.visualCardBox,
.card.show-focus:not(.show-animation) .cardBox:not(.visualCardBox) .cardScalable {
border: 0.5em solid transparent;
}
.card.show-animation:focus > .cardBox {
transform: scale(1.18, 1.18);
}
.cardBox-bottompadded {
margin-bottom: 1.8em !important;
}
@media (max-width: 50em) {
.cardBox-bottompadded {
margin-bottom: 1.2em !important;
}
}
.card:focus {
position: relative !important;
z-index: 10 !important;
font-weight: inherit !important;
}
.btnCardOptions {
position: absolute;
bottom: 0.25em;
right: 0;
margin: 0 !important;
z-index: 1;
}
.mediaSourceIndicator {
display: flex;
position: absolute;
align-items: center;
justify-content: center;
top: 0.3em;
left: 0.3em;
text-align: center;
vertical-align: middle;
width: 1.6em;
height: 1.6em;
border-radius: 50%;
color: #fff;
background: rgb(51, 136, 204);
}
.cardImageContainer {
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
display: -webkit-flex;
display: flex;
align-items: center;
justify-content: center;
position: relative;
background-clip: content-box !important;
color: inherit;
/* This is only needed for scalable cards */
height: 100%;
contain: strict;
}
.chapterCardImageContainer {
background-color: #000;
border-radius: 0;
}
.textCardImageContainer {
background-color: #333;
}
.cardContent {
overflow: hidden;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
/* Needed in case this is a button */
display: block;
/* Needed in case this is a button */
margin: 0 !important;
/* Needed in safari */
height: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
outline: none !important;
contain: strict;
}
.cardContent-button {
border: 0 !important;
padding: 0 !important;
cursor: pointer;
color: inherit;
width: 100%;
vertical-align: middle;
font-family: inherit;
font-size: inherit;
}
.cardContent-button:not(.defaultCardBackground) {
background-color: transparent;
}
.visualCardBox .cardContent {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.cardContent-shadow {
box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37);
}
.cardImage {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
border: none;
}
.cardImage-img {
max-height: 100%;
max-width: 100%;
/* This is simply for lazy image purposes, to ensure the image is visible sooner when scrolling */
min-height: 70%;
min-width: 70%;
margin: auto;
}
.coveredImage-img {
width: 100%;
height: 100%;
}
.coveredImage-noscale-img {
max-height: none;
max-width: none;
}
.coveredImage {
background-size: cover;
background-position: center center;
}
.coveredImage-noScale {
background-size: cover;
}
.cardFooter {
padding: 0.3em 0.3em 0.5em 0.3em;
position: relative;
}
.visualCardBox {
box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37);
border-radius: 0.145em;
}
.innerCardFooter {
background: rgba(0, 0, 0, 0.7);
position: absolute;
bottom: 0;
left: 0;
text-align: left;
z-index: 1;
overflow: hidden;
max-width: 100%;
color: #fff;
}
.innerCardFooterClear {
background-color: transparent;
}
.fullInnerCardFooter {
right: 0;
}
.cardText {
padding: 0.06em 0.5em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: left;
}
.dialog .cardText {
text-overflow: initial;
}
.cardText-secondary {
font-size: 86%;
}
.cardText-first {
padding-top: 0.24em;
}
.textActionButton {
border: 0 !important;
background: transparent;
padding: 0 !important;
cursor: pointer;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
outline: none !important;
color: inherit;
vertical-align: middle;
font-family: inherit;
font-size: inherit;
}
.textActionButton:hover {
text-decoration: underline;
}
.cardText > .textActionButton {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
.innerCardFooter > .cardText {
padding: 0.3em 0.5em;
}
.cardFooter-withlogo {
padding-left: 4em;
position: relative;
}
.cardFooterLogo {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 4.5em;
background-size: 70% auto;
background-repeat: no-repeat;
background-position: center center;
}
.cardTextCentered {
text-align: center;
}
.cardText-rightmargin {
margin-right: 2em;
}
.cardDefaultText {
white-space: normal;
text-align: center;
}
.cardImageContainer .cardImageIcon {
font-size: 5em;
color: inherit;
}
.cardImageIcon-small {
font-size: 3em !important;
margin-bottom: 0.1em;
}
.cardIndicators {
right: 0.225em;
top: 0.225em;
position: absolute;
display: flex;
align-items: center;
contain: layout style;
}
.cardProgramAttributeIndicators {
top: 0;
left: 0;
position: absolute;
display: flex;
text-transform: uppercase;
font-size: 92%;
}
.programAttributeIndicator {
padding: 0.18em 0.5em;
color: #fff;
font-weight: 500;
}
.cardOverlayButton {
color: rgba(255, 255, 255, 0.76);
margin: 0;
z-index: 1;
padding: 0.75em;
font-size: 88%;
}
.cardOverlayButton-br {
position: absolute;
bottom: 0;
right: 0;
}
.cardOverlayButtonIcon {
background-color: rgba(0, 0, 0, 0.7) !important;
border-radius: 100em;
width: 1.5em !important;
height: 1.5em !important;
justify-content: center;
align-items: center;
display: flex;
font-size: 1.66956521739130434em !important;
}
.cardOverlayButtonIcon.material-icons {
/* material-icons override display, so we need to
make a better matching selector to set it to flex */
display: flex;
}
.cardOverlayButton-centered {
bottom: initial;
right: initial;
position: static;
position: absolute;
display: flex;
font-size: 112%;
margin: -1.3em 0 0 -1.3em;
width: 2.6em;
height: 2.6em;
top: 50%;
left: 50%;
background-color: rgba(0, 0, 0, 0.5) !important;
border: 0.06em solid rgba(255, 255, 255, 0.6);
padding: 0.38em !important;
color: rgba(255, 255, 255, 0.76);
transition: transform 200ms ease-out;
}
.bannerCard {
width: 100%;
}
.backdropCard {
width: 100%;
}
.smallBackdropCard {
width: 50%;
}
.squareCard {
width: 50%;
}
.portraitCard {
width: 33.333333333333333333333333333333%;
}
.mixedPortraitCard {
width: 12em;
}
.mixedSquareCard {
width: 18em;
}
.mixedBackdropCard {
width: 32em;
}
@media (min-width: 25em) {
.backdropCard {
width: 50%;
}
}
@media (min-width: 31.25em) {
.smallBackdropCard {
width: 33.333333333333333333333333333333%;
}
.squareCard,
.portraitCard {
width: 33.333333333333333333333333333333%;
}
}
@media (min-width: 43.75em) {
.squareCard,
.portraitCard {
width: 25%;
}
}
@media (min-width: 48.125em) {
.backdropCard {
width: 33.333333333333333333333333333333%;
}
}
@media (min-width: 50em) {
.bannerCard {
width: 50%;
}
.squareCard,
.portraitCard {
width: 20%;
}
.smallBackdropCard {
width: 25%;
}
}
@media (min-width: 62.5em) {
.smallBackdropCard {
width: 20%;
}
}
@media (min-width: 75em) {
.backdropCard {
width: 25%;
}
.squareCard,
.portraitCard {
width: 16.666666666666666666666666666667%;
}
.bannerCard {
width: 33.333333333333333333333333333333%;
}
.smallBackdropCard {
width: 16.666666666666666666666666666667%;
}
}
@media (min-width: 87.5em) {
.squareCard,
.portraitCard {
width: 14.285714285714285714285714285714%;
}
.smallBackdropCard {
width: 14.285714285714285714285714285714%;
}
}
@media (min-width: 100em) {
.smallBackdropCard {
width: 12.5%;
}
.backdropCard {
width: 20%;
}
.squareCard,
.portraitCard {
width: 12.5%;
}
}
@media (min-width: 120em) {
.squareCard,
.portraitCard {
width: 11.111111111111111111111111111111%;
}
}
@media (min-width: 131.25em) {
.bannerCard {
width: 25%;
}
.squareCard,
.portraitCard {
width: 10%;
}
}
@media (min-width: 156.25em) {
.backdropCard {
width: 16.666666666666666666666666666667%;
}
}
.itemsContainer-tv > .backdropCard {
width: 25%;
}
.itemsContainer-tv > .squareCard {
width: 16.666666666666666666666666666667%;
}
.itemsContainer-tv > .portraitCard {
width: 16.666666666666666666666666666667%;
}
.overflowBackdropCard {
width: 72vw;
}
.overflowSmallBackdropCard {
width: 72vw;
}
.overflowSquareCard,
.overflowPortraitCard {
width: 40vw;
}
@media (min-width: 25em) {
.overflowPortraitCard {
width: 31.2vw;
}
}
@media (min-width: 35em) {
.overflowSquareCard {
width: 31.2vw;
}
.overflowBackdropCard {
width: 45.5vw;
}
.overflowSmallBackdropCard {
width: 30vw;
}
}
@media (min-width: 43.75em) {
.overflowSquareCard,
.overflowPortraitCard {
width: 23.1vw;
}
}
@media (min-width: 48.125em) {
.overflowBackdropCard,
.overflowSmallBackdropCard {
width: 30vw;
}
}
@media (orientation: landscape) {
.overflowBackdropCard,
.overflowSmallBackdropCard {
width: 30vw;
}
.overflowSquareCard,
.overflowPortraitCard {
width: 23.1vw;
}
}
@media (orientation: landscape) and (min-width: 48.125em) {
.overflowBackdropCard,
.overflowSmallBackdropCard {
width: 23.1vw;
}
}
@media (orientation: landscape) and (min-width: 50em) {
.overflowSmallBackdropCard {
width: 15.5vw;
}
}
@media (min-width: 50em) {
.overflowSquareCard,
.overflowPortraitCard {
width: 18.5vw;
}
}
@media (min-width: 75em) {
.overflowBackdropCard,
.overflowSmallBackdropCard {
width: 23.1vw;
}
.overflowSquareCard,
.overflowPortraitCard {
width: 15.5vw;
}
}
@media (min-width: 87.5em) {
.overflowSquareCard,
.overflowPortraitCard {
width: 13.3vw;
}
}
@media (min-width: 100em) {
.overflowBackdropCard,
.overflowSmallBackdropCard {
width: 18.7vw;
}
.overflowSquareCard,
.overflowPortraitCard {
width: 11.6vw;
}
}
@media (min-width: 120em) {
.overflowSquareCard,
.overflowPortraitCard {
width: 10.41vw;
}
}
@media (min-width: 131.25em) {
.overflowSquareCard,
.overflowPortraitCard {
width: 9.3vw;
}
}
@media (min-width: 156.25em) {
.overflowBackdropCard,
.overflowSmallBackdropCard {
width: 15.6vw;
}
}
.itemsContainer-tv > .overflowBackdropCard {
width: 23.5vw;
}
.overflowBackdropCard-textCard {
width: 15.5vw !important;
}
.overflowBackdropCard-textCardPadder {
padding-bottom: 87.75%;
}
.itemsContainer-tv > .overflowSquareCard,
.itemsContainer-tv > .overflowPortraitCard {
width: 15.6vw;
}
.itemsContainer-tv > .overflowSmallBackdropCard {
width: 18.8vw;
}
.cardOverlayContainer {
background: rgba(0, 0, 0, 0.5);
opacity: 0;
transition: opacity 0.2s;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
user-select: none;
}
.card-hoverable:hover .cardOverlayContainer {
opacity: 1;
}
.cardOverlayButton-hover {
opacity: 0;
transition: 0.2s;
background: transparent;
padding: 0.25em;
}
.cardOverlayButtonIcon-hover {
background: transparent !important;
}
.card-hoverable:hover .cardOverlayButton-hover {
opacity: 1;
}
.cardOverlayFab-primary {
background-color: rgba(0, 0, 0, 0.7);
font-size: 130%;
padding: 0;
width: 3em;
height: 3em;
margin-top: -1.5em;
margin-left: -1.5em;
position: absolute;
top: 50%;
left: 50%;
}
.cardOverlayFab-primary:hover {
transform: scale(1.4, 1.4);
transition: 0.2s;
}