public/style.css (608 lines of code) (raw):
/*
* Copyright 2022 Spotify AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@import url("https://fonts.googleapis.com/css2?family=Indie+Flower&family=Roboto+Condensed:wght@300&family=Roboto+Condensed:wght@700&display=swap");
@font-face {
font-family: "Circular";
src: url("/assets/fonts/CircularSpUIv3T-Book.woff2") format("woff2");
}
:root {
--primary-highlight: #b49bc8;
--contrast: #ea5540;
--single-episode-width: 246px;
--single-episode-width-desktop: 283px;
--container-width: min(928px, calc(100% - 64px));
}
html {
font-family: "Roboto Condensed", Circular;
}
body {
background-color: #f9f9f9;
display: flex;
flex-direction: column;
min-height: 100vh;
justify-content: flex-start;
}
header {
padding: 0;
margin: 0;
}
.section {
padding-left: 20px;
padding-right: 20px;
}
h1 {
margin: 0px;
padding: 0px;
}
h2 {
margin-block-end: 1px;
font-size: 2rem;
}
@media only screen and (min-width: 768px) {
h2 {
font-size: 2.75rem;
}
}
h3 {
margin-block-start: 1px;
}
h4 {
margin-block-start: 1px;
font-size: 1.3em;
padding: 1px 5px;
margin-bottom: 5px;
}
p {
margin-bottom: 17px;
line-height: 1.2;
}
@media only screen and (min-width: 768px) {
p {
font-size: 1.5rem;
}
}
hr {
height: 2px;
background-color: black;
}
.page-header {
margin-top: 55px;
margin-bottom: 48px;
font-size: 3.125rem;
}
.highlight {
background-color: var(--primary-highlight);
}
.quote {
margin-top: 60px;
margin-bottom: 60px;
}
.quote::before {
color: var(--contrast);
font-family: "Circular";
font-size: 10rem;
position: absolute;
line-height: 0;
content: "“";
top: 2rem;
left: -0.5rem;
}
.quote::after {
color: var(--contrast);
font-family: "Circular";
font-size: 10rem;
position: absolute;
line-height: 0;
content: "”";
bottom: -1.5rem;
right: -1.25rem;
}
@media only screen and (min-width: 768px) {
.quote::before {
top: 5rem;
left: -4.25rem;
}
.quote::after {
bottom: 1rem;
right: 1.25rem;
}
}
button {
text-align: center;
border: 0px;
cursor: pointer;
display: flex;
align-items: center;
}
button.nav-button {
background-color: #000;
color: #fff;
padding: 6px 12px;
font-weight: 700;
letter-spacing: 0.05em;
text-transform: uppercase;
}
button a {
text-decoration: none;
}
button.primary {
border: 2px solid #fff;
}
button.primary a {
color: #fff;
}
button.primary.inverse {
background-color: #fff;
color: #000;
border-color: #000;
}
button.cta {
font-size: 1rem;
padding: 0.75em 1.5em;
background-color: var(--contrast);
}
button:hover,
button.primary.inverse:hover {
background-color: var(--contrast);
color: #fff;
border-color: #fff;
}
button.secondary:hover {
color: var(--contrast);
background-color: #fff;
}
button.spotify-link {
color: #fff;
padding: 0.75rem;
background-color: #1ed760;
text-transform: uppercase;
column-gap: 6px;
}
button.subscription-button {
color: var(--contrast);
font-weight: bold;
background-color: unset;
text-transform: initial;
text-decoration: underline;
padding: 0;
margin-top: 0.5rem;
}
button.bonus:hover {
color: #000;
}
.small {
padding: 5px 10px;
}
.display-if-not-authenticated {
display: none;
}
.display {
display: unset;
}
.danger {
background-color: var(--contrast);
}
.danger:hover {
background-color: orange;
}
.container {
display: grid;
grid-template-columns: 1fr var(--container-width) 1fr;
margin-bottom: auto;
}
.container > * {
grid-column: 2;
}
.full-bleed {
grid-column: 1 / -1;
}
.align-with-container {
width: var(--container-width);
margin: auto;
}
.section {
padding-left: 20px;
padding-right: 20px;
}
.navigation-bar {
background-color: #111;
border-bottom: 2px solid #000;
display: flex;
justify-content: space-between;
align-items: center;
column-gap: 10px;
padding: 24px 16px;
}
@media only screen and (min-width: 768px) {
.navigation-bar {
padding-left: 160px;
padding-right: 170px;
}
}
.logo {
line-height: 0;
}
.logo img {
width: 80px;
}
@media only screen and (min-width: 768px) {
.logo img {
width: 145px;
}
}
.navigation-buttons {
height: 42px;
display: flex;
flex-direction: row;
column-gap: 12px;
}
.navigation-buttons a,
.navigation-buttons button {
height: 100%;
}
#firebaseui-auth-container {
padding-top: 10px;
min-height: 500px;
}
.auth-status-link {
text-decoration: none;
}
.no-style-link {
text-decoration: none;
}
.auth-status-button {
cursor: pointer;
font-size: 0.8125rem;
}
#my-account-button {
font-size: 0.8125rem;
gap: 11px;
}
#my-account-button span {
line-height: 0;
}
@media only screen and (min-width: 768px) {
.auth-status-button,
#my-account-button {
font-size: 1rem;
}
}
.hero-banner {
width: 100%;
margin-bottom: 30px;
}
.hero-banner h2 {
font-size: 2.375rem;
}
.spotlight {
margin-top: 22px;
}
.spotlight .section-header {
text-transform: uppercase;
font-size: 1rem;
margin-top: 0;
margin-bottom: 12px;
}
@media only screen and (min-width: 768px) {
.spotlight {
margin-top: 72px;
}
.spotlight .section-header {
font-size: 1.25rem;
}
}
.spotlight-wrapper {
padding-top: 30px;
padding-bottom: 30px;
text-align: center;
font-size: 1.125rem;
overflow: hidden;
display: flex;
flex-wrap: wrap;
align-items: flex-start;
column-gap: 44px;
}
@media only screen and (min-width: 768px) {
.spotlight-wrapper {
text-align: left;
}
}
.spotlight-episode-cover-wrapper {
max-width: 349px;
margin: auto;
}
.spotlight-wrapper .episode-cover {
width: 100%;
}
.spotlight-episode-info {
min-width: 311px;
flex: 1;
}
.spotlight-wrapper h2 {
font-size: 1.75rem;
margin-top: 31px;
margin-bottom: 0;
}
@media only screen and (min-width: 768px) {
.spotlight-wrapper h2 {
margin-top: 0;
font-size: 2.75rem;
}
}
.spotlight-wrapper p {
margin-bottom: 33px;
}
.customer-social-proof {
position: relative;
text-align: center;
max-width: 606px;
margin-left: auto;
margin-right: auto;
}
.quote-attribution {
font-size: 0.875rem;
font-style: italic;
}
@media only screen and (min-width: 768px) {
.customer-social-proof {
text-align: left;
}
.customer-social-proof h2 {
font-size: 3.125rem;
}
.quote-attribution {
font-size: 1.125rem;
}
}
.cta-banner {
background-color: black;
color: #fff;
padding: 20px;
padding-bottom: 53px;
}
@media only screen and (min-width: 768px) {
.cta-banner {
padding-bottom: 65px;
}
}
.cta-banner-inner-wrapper {
display: flex;
flex-wrap: wrap;
align-items: center;
column-gap: 124px;
}
.cta-banner-info {
width: min(578px, 100%);
}
.cta-banner p {
font-size: 1.125rem;
margin-bottom: 0;
}
.cta-banner button {
margin-top: 23px;
}
.show-banner h2 {
text-align: center;
font-size: 1.75rem;
margin-top: 53px;
margin-bottom: 61px;
}
@media only screen and (min-width: 768px) {
.showbanner h2 {
margin-top: 80px;
}
}
.los-badge {
width: 156px;
}
.rss-badge {
width: 37px;
}
#soa-connect,
.unlink-account-link .unlink-account-link {
visibility: hidden;
}
#soa-connect.show {
visibility: visible;
}
.show-banner .shows {
margin-top: 30px;
display: grid;
grid-template-columns: repeat(
auto-fit,
minmax(var(--single-episode-width), 1fr)
);
}
@media only screen and (min-width: 768px) {
.show-banner .shows {
grid-template-columns: repeat(
auto-fit,
minmax(var(--single-episode-width-desktop), 1fr)
);
}
}
.show-banner .shows .episode {
margin: 0 auto;
margin-bottom: 24px;
}
@media only screen and (min-width: 768px) {
.show-banner .shows .episode {
max-width: var(--single-episode-width-desktop);
}
}
.show-banner .shows .episode .image-row .show-cover {
width: 100%;
}
@media only screen and (min-width: 768px) {
.show-banner .shows .episode .image-row .show-cover {
width: var(--single-episode-width-desktop);
}
}
.show-banner .shows a {
text-decoration: none;
}
#no-subscriptions {
display: none;
}
#no-subscriptions.show {
display: block;
}
#subscription-tiers {
display: flex;
flex-direction: column;
align-items: flex-start;
row-gap: 36px;
margin-top: 48px;
margin-bottom: 48px;
}
.subscription-tier {
border: 4px solid #afafaf;
padding: 32px 40px;
display: flex;
flex-wrap: wrap;
flex-direction: column-reverse;
flex-direction: row;
align-items: center;
column-gap: 16px;
font-size: 1.125rem;
}
.subscription-tier.subscribed {
border-color: var(--contrast);
}
.show-info {
margin-bottom: 20px;
}
.subscribed-indicator {
visibility: hidden;
border-radius: 50px;
padding: 0.5rem 1.5rem;
text-transform: uppercase;
display: inline-block;
background-color: var(--contrast);
color: #fff;
font-weight: 500;
}
.subscription-tier.subscribed .subscribed-indicator {
visibility: visible;
}
.subscription-tier h3 {
font-size: 2rem;
margin-top: 1rem;
margin-bottom: 0;
}
.subscription-description {
font-weight: bold;
}
.subscription-price {
font-style: italic;
}
.show-info {
flex: 1;
text-align: left;
}
#full-unsubscribe-button {
display: none;
}
#full-unsubscribe-button.show {
display: inline-block;
}
.show-cover {
max-width: 186px;
}
.show-cover img {
width: 100%;
border: 2px solid #000;
}
.episode .episode-title {
font-size: 1.375rem;
margin-top: 14px;
margin-bottom: 14px;
}
.episode .episode-description {
font-size: 0.875rem;
}
@media only screen and (min-width: 768px) {
.episode .episode-title {
font-size: 2rem;
}
.episode .episode-description {
font-size: 1rem;
}
}
#landing-page-notice {
color: #1d1d1d;
background-color: #ccf564;
border-bottom: 2px solid #fff;
padding-top: 23px;
padding-bottom: 37px;
}
@media only screen and (min-width: 768px) {
#landing-page-notice {
padding-left: 23%;
padding-right: 33%;
padding-top: 55px;
padding-bottom: 52px;
}
}
#landing-page-notice h2 {
margin-top: 0;
}
#landing-page-notice p {
margin-left: auto;
margin-right: auto;
margin-bottom: 5px;
font-size: 0.875rem;
}
@media only screen and (min-width: 768px) {
#landing-page-notice p {
font-size: 1.125rem;
}
}
#landing-page-notice p:first-child {
margin-top: 5px;
}
#landing-page-notice .highlight {
color: #fff;
padding: 0px 3px;
}
footer {
background-color: #111;
border-top: 2px solid #000;
margin-top: 40px;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 0.75rem;
padding: 23px 20px;
}
.footer-logo {
margin-left: 1rem;
}
.footer-logo img {
width: 163px;
}
footer ul {
padding: 0;
margin: 0;
}
footer ul a {
color: #fff;
font-size: 0.9rem;
letter-spacing: 0.03em;
text-decoration: none;
}
@media only screen and (min-width: 768px) {
footer ul a {
font-size: 1rem;
}
}
footer ul a:hover {
color: var(--contrast);
}
footer ul li {
padding: 0;
}
.login-explainer {
margin: auto;
}
.login-explainer p {
padding: 2px 5px;
}