/* * 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; } }