240 lines
5.2 KiB
CSS
240 lines
5.2 KiB
CSS
/*
|
|
* Design Sizes
|
|
*
|
|
* Page:
|
|
* Desktop: 1440x900
|
|
* Mobile: 375x667
|
|
*
|
|
* Cards:
|
|
* Desktop: 350x596 (padding around 152px, 545px - perfectly centered)
|
|
* Mobile: 327x543 (padding around 62px, 24px - perfectly centered)
|
|
*/
|
|
|
|
@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600&display=swap");
|
|
|
|
*,
|
|
::before,
|
|
::after {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
:root {
|
|
/* Colors */
|
|
/* primary */
|
|
--col-soft-blue: hsl(215, 51%, 70%);
|
|
--col-cyan: hsl(178, 100%, 50%);
|
|
--col-cyan-half-opaque: hsla(178, 100%, 50%, 0.5);
|
|
/* neutral */
|
|
--col-very-dark-blue-main-bg: hsl(217, 54%, 11%);
|
|
--col-very-dark-blue-card-bg: hsl(216, 50%, 16%);
|
|
--col-very-dark-blue-line: hsl(215, 32%, 27%);
|
|
--col-white: hsl(0, 0%, 100%);
|
|
|
|
--col-heading: var(--col-white);
|
|
--col-body: var(--col-soft-blue);
|
|
--col-price: var(--col-cyan);
|
|
--col-term: var(--col-soft-blue);
|
|
--col-page-background: var(--col-very-dark-blue-main-bg);
|
|
--col-card-background: var(--col-very-dark-blue-card-bg);
|
|
--col-line: var(--col-very-dark-blue-line);
|
|
--col-creator-body: var(--col-soft-blue);
|
|
--col-creator-name: var(--col-white);
|
|
--col-hover: var(--col-cyan);
|
|
|
|
/* Typography */
|
|
--fw-300: 300;
|
|
--fw-400: 400;
|
|
--fw-600: 600;
|
|
|
|
--fs-heading: 1.375rem;
|
|
--fs-body: 1.125rem;
|
|
--lh-body: 1.625rem;
|
|
--fs-caption: 0.9375rem;
|
|
--fs-price: 0.9375rem;
|
|
--fs-term: 0.9375rem;
|
|
--fs-creator: 0.9375rem;
|
|
|
|
/* Styling */
|
|
--border-radius-outer: 0.9375rem;
|
|
--border-radius--inner: 0.5rem;
|
|
/* Other */
|
|
}
|
|
|
|
body {
|
|
min-height: 100vh;
|
|
|
|
display: grid;
|
|
place-content: center;
|
|
background-color: var(--col-page-background);
|
|
|
|
font-family: "Outfit", sans-serif;
|
|
}
|
|
|
|
.nft-card {
|
|
background-color: var(--col-card-background);
|
|
border-radius: var(--border-radius-outer);
|
|
padding: 1.5rem;
|
|
|
|
max-width: 20.4375rem;
|
|
|
|
box-shadow: 0px 1.5625rem 3.125rem rgba(0, 0, 0, 0.0952917);
|
|
}
|
|
|
|
.nft-card__image-preview {
|
|
display: block;
|
|
position: relative;
|
|
overflow: hidden;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.nft-card__img {
|
|
border-radius: var(--border-radius--inner);
|
|
width: 100%;
|
|
vertical-align: bottom;
|
|
/* above fix to remove extra 4px, see
|
|
https://stackoverflow.com/a/3197613
|
|
|
|
The image is display: inline so it is treated like a character and sits on the baseline. The gap is caused by the space provided for the descender (which you find on letters like j, g, y and p).
|
|
|
|
Another fix is to set img to display: block;
|
|
*/
|
|
}
|
|
|
|
.nft-card__image-preview::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
border-radius: var(--border-radius--inner);
|
|
transition: background-color 0.3s ease-out;
|
|
}
|
|
|
|
.nft-card__image-preview:is(:hover, :focus)::after {
|
|
background: var(--col-cyan-half-opaque) url(../images/icon-view.svg) center
|
|
no-repeat;
|
|
}
|
|
|
|
.nft-card__header {
|
|
color: var(--col-heading);
|
|
|
|
font-size: var(--fs-heading);
|
|
font-weight: var(--fw-600);
|
|
line-height: 1.75rem;
|
|
|
|
margin-bottom: 0.75rem;
|
|
}
|
|
|
|
.nft-card__header-link {
|
|
text-decoration: none;
|
|
color: inherit;
|
|
}
|
|
|
|
.nft-card__header-link:is(:hover, :focus) {
|
|
color: var(--col-hover);
|
|
}
|
|
|
|
.nft-card__description {
|
|
color: var(--col-body);
|
|
|
|
font-size: var(--fs-body);
|
|
font-weight: var(--fw-300);
|
|
line-height: var(--lh-body);
|
|
|
|
margin-bottom: 1rem;
|
|
}
|
|
.nft-card__price-block {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.nft-card__price-block div {
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: 0.4375rem;
|
|
}
|
|
|
|
.nft-card__img:hover {
|
|
filter: saturate(200%) opacity(50%) drop-shadow(0 0 0 var(--col-hover));
|
|
}
|
|
|
|
.nft-card__price {
|
|
color: var(--col-price);
|
|
font-size: var(--fs-price);
|
|
font-weight: var(--fw-600);
|
|
}
|
|
|
|
.nft-card__time-left {
|
|
color: var(--col-term);
|
|
font-size: var(--fs-term);
|
|
font-weight: var(--fw-400);
|
|
}
|
|
|
|
.nft-card__hr {
|
|
border: 1px solid var(--col-line);
|
|
border-style: solid none none none;
|
|
}
|
|
|
|
.nft-card__creator-block {
|
|
margin-top: 1rem;
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
font-size: var(--fs-creator);
|
|
}
|
|
.nft-card__creator-img {
|
|
width: 2.0625rem;
|
|
border: 1px white solid;
|
|
border-radius: 50%;
|
|
margin-right: 1rem;
|
|
}
|
|
.nft-card__creator-text {
|
|
color: var(--col-creator-body);
|
|
font-size: var(--fs-creator);
|
|
font-weight: var(--fw-400);
|
|
margin-right: 0.3125rem;
|
|
}
|
|
.nft-card__creator-name {
|
|
text-decoration: none;
|
|
font-size: var(--fs-creator);
|
|
font-weight: var(--fw-400);
|
|
color: var(--col-creator-name);
|
|
}
|
|
|
|
.nft-card__creator-name:is(:hover, :focus) {
|
|
color: var(--col-hover);
|
|
}
|
|
|
|
@media screen and (min-width: 1000px) {
|
|
:root {
|
|
--fs-price: 1rem;
|
|
--lh-price: 1.25rem;
|
|
--fs-term: 1rem;
|
|
--lh-term: 1.25rem;
|
|
--fs-creator: 1rem;
|
|
}
|
|
|
|
.nft-card {
|
|
padding: 1.5rem 1.5rem 2rem 1.5rem;
|
|
max-width: 21.875rem;
|
|
}
|
|
|
|
.nft-card__header {
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.nft-card__description {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.nft-card__price-block {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
}
|