/* PlayStation page-owned styles */

#playstation-main {
    display: block;
}

/* Hero */
.ps-hero {
    background-color: var(--color-deep-ink);
    color: var(--color-ink-inverse);
    padding-block: var(--space-9);
}

.ps-hero__inner {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    align-items: flex-start;
}

.ps-hero__overline {
    color: var(--color-accent-update);
    margin-block-end: 0;
}

.ps-hero__title {
    color: var(--color-ink-inverse);
    font-size: var(--text-display-size);
    font-weight: var(--text-display-weight);
    line-height: var(--text-display-line-height);
    letter-spacing: var(--text-display-letter-spacing);
    margin-block-end: 0;
}

.ps-hero__standfirst {
    max-width: 55ch;
    color: var(--color-ink-inverse);
    font-size: var(--text-body-large-size);
    line-height: var(--text-body-large-line-height);
    margin-block-end: 0;
}

/* Breaking banner */
.ps-breaking {
    background-color: var(--color-accent-breaking);
    color: var(--color-ink-inverse);
    padding-block: var(--space-4);
    animation: ps-slide-down 300ms ease-out;
}

@keyframes ps-slide-down {
    from {
        transform: translateY(-100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

.ps-breaking__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
}

.ps-breaking__content {
    flex: 1 1 auto;
    min-width: 0;
}

.ps-breaking__title {
    color: var(--color-ink-inverse);
    font-size: var(--text-h3-size);
    margin-block-end: var(--space-2);
}

.ps-breaking__message {
    color: var(--color-ink-inverse);
    max-width: 70ch;
    margin-block-end: var(--space-2);
}

.ps-breaking__link {
    color: var(--color-ink-inverse);
    font-weight: 600;
    text-decoration: underline;
}

.ps-breaking__link:hover {
    color: var(--color-deep-ink);
}

.ps-breaking__close {
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-ink-inverse);
    font-size: 1.5rem;
    line-height: 1;
    border-radius: var(--radius-medium);
}

.ps-breaking__close:hover {
    background-color: rgba(255, 255, 255, 0.2);
}

/* Shared section patterns */
.ps-section {
    padding-block: var(--space-9);
}

.ps-section__header {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    margin-block-end: var(--space-6);
}

.ps-section__lead {
    color: var(--color-ink-muted);
    font-size: var(--text-body-large-size);
    margin-block-end: 0;
}

/* Cards */
.ps-card {
    background-color: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-large);
    padding: var(--space-4);
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    min-width: 0;
    transition: transform var(--transition-fast), box-shadow var(--transition-fast);
}

.ps-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-elevated);
}

.ps-card__media {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border: 1px solid var(--color-border);
    border-radius: 0;
    background-color: var(--color-surface);
}

.ps-card__body {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    min-width: 0;
}

.ps-card__title {
    font-size: var(--text-h3-size);
    line-height: var(--text-h3-line-height);
    margin-block-end: 0;
}

.ps-card__text {
    color: var(--color-ink-muted);
    font-size: var(--text-body-small-size);
    line-height: var(--text-body-small-line-height);
    margin-block-end: 0;
}

/* News grid */
.ps-news__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--space-5);
}

.ps-news-card {
    min-width: 0;
}

/* Reviews grid */
.ps-reviews__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-5);
}

.ps-review-card {
    position: relative;
    min-width: 0;
}

.ps-review-card__score {
    position: absolute;
    top: var(--space-4);
    right: var(--space-4);
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--color-brand);
    color: var(--color-ink-inverse);
    font-family: var(--font-heading);
    font-size: var(--text-h3-size);
    font-weight: 700;
    border-radius: var(--radius-large);
}

/* Guides grid */
.ps-guides__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-5);
}

.ps-guide-card {
    min-width: 0;
}

/* Releases */
.ps-releases__layout {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: var(--space-6);
    align-items: start;
}

.ps-timeline {
    display: flex;
    flex-direction: column;
    gap: var(--space-5);
    position: relative;
    padding-inline-start: var(--space-5);
}

.ps-timeline::before {
    content: "";
    position: absolute;
    left: 8px;
    top: 8px;
    bottom: 8px;
    width: 2px;
    background-color: var(--color-border);
}

.ps-timeline__entry {
    position: relative;
    display: flex;
    gap: var(--space-4);
    min-width: 0;
    padding-block: var(--space-2);
}

.ps-timeline__dot {
    position: absolute;
    left: calc(-1 * var(--space-5) + 4px);
    top: var(--space-4);
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background-color: var(--color-brand);
    border: 2px solid var(--color-canvas);
}

.ps-timeline__content {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    min-width: 0;
}

.ps-timeline__date {
    font-size: var(--text-caption-size);
    font-weight: var(--text-caption-weight);
    letter-spacing: var(--text-caption-letter-spacing);
    color: var(--color-ink-muted);
    text-transform: uppercase;
}

.ps-timeline__title {
    font-size: var(--text-h4-size);
    line-height: var(--text-h4-line-height);
    margin-block-end: 0;
}

.ps-timeline__text {
    color: var(--color-ink-muted);
    font-size: var(--text-body-small-size);
    margin-block-end: 0;
}

.ps-filter {
    background-color: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-large);
    padding: var(--space-4);
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    min-width: 0;
}

.ps-filter__title {
    font-size: var(--text-h4-size);
    margin-block-end: 0;
}

.ps-filter__chips {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

.ps-filter__chip {
    padding: var(--space-1) var(--space-3);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-medium);
    background-color: var(--color-surface-raised);
    color: var(--color-ink);
    font-size: var(--text-body-small-size);
    font-weight: 600;
    transition: background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);
}

.ps-filter__chip:hover {
    background-color: var(--color-surface);
}

.ps-filter__chip.is-active {
    background-color: var(--color-brand);
    color: var(--color-ink-inverse);
    border-color: var(--color-brand);
}

/* Editorial */
.ps-editorial {
    background-color: var(--color-deep-ink);
    color: var(--color-ink-inverse);
    padding-block: var(--space-9);
}

.ps-editorial__inner {
    display: flex;
    flex-direction: column;
    gap: var(--space-5);
    max-width: 800px;
    margin-inline: auto;
}

.ps-editorial__inner h2 {
    color: var(--color-ink-inverse);
    margin-block-end: 0;
}

.ps-editorial__intro {
    color: var(--color-ink-inverse);
    font-size: var(--text-body-large-size);
    max-width: 65ch;
    margin-block-end: 0;
}

.ps-editorial__image {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border-radius: 0;
}

.ps-editorial__body {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    max-width: 65ch;
}

.ps-editorial__body h3 {
    color: var(--color-ink-inverse);
    margin-block-end: 0;
}

.ps-editorial__body p {
    color: var(--color-ink-inverse);
    margin-block-end: 0;
}

.ps-editorial__body blockquote {
    border-inline-start-color: var(--color-accent-update);
    color: var(--color-ink-inverse);
    margin-block-end: 0;
}

/* Community */
.ps-community__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-5);
}

.ps-poll-card,
.ps-discussion-card {
    min-width: 0;
}

.ps-poll {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    margin-block-start: var(--space-2);
}

.ps-poll__option {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--text-body-small-size);
}

.ps-poll__result {
    margin-block-start: var(--space-2);
}

/* Newsletter */
.ps-newsletter {
    background-color: var(--color-brand);
    color: var(--color-ink-inverse);
    padding-block: var(--space-9);
}

.ps-newsletter__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--space-4);
    max-width: 600px;
    margin-inline: auto;
}

.ps-newsletter__inner h2 {
    color: var(--color-ink-inverse);
    margin-block-end: 0;
}

.ps-newsletter__inner p {
    color: var(--color-ink-inverse);
    margin-block-end: 0;
}

.ps-newsletter__form {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-3);
    width: 100%;
}

.ps-newsletter__form input {
    flex: 1 1 250px;
    max-width: 400px;
    padding: var(--space-3) var(--space-4);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-medium);
    background-color: var(--color-surface-raised);
    color: var(--color-ink);
    min-width: 0;
}

.ps-newsletter__form input:focus-visible {
    outline: var(--focus-outline-width) solid var(--color-ink-inverse);
    outline-offset: var(--focus-outline-offset);
}

.ps-newsletter__message {
    color: var(--color-ink-inverse);
    min-height: 1.5em;
}

.ps-newsletter__inner a {
    color: var(--color-accent-update);
    text-decoration: underline;
}

.ps-newsletter__inner a:hover {
    color: var(--color-ink-inverse);
}

/* Tips */
.ps-tips__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-5);
}

.ps-tip-card {
    min-width: 0;
}

.ps-tip-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    background-color: var(--color-accent-update);
    color: var(--color-deep-ink);
    border-radius: var(--radius-small);
    font-size: 1rem;
}

/* Accessories */
.ps-accessories__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-5);
}

.ps-accessory-card {
    min-width: 0;
}

/* FAQ */
.ps-faq__inner {
    max-width: 800px;
    margin-inline: auto;
}

.ps-faq__list {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.ps-faq__item {
    background-color: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-large);
    overflow: hidden;
}

.ps-faq__question {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3);
    width: 100%;
    padding: var(--space-4);
    text-align: start;
    font-family: var(--font-heading);
    font-size: var(--text-h4-size);
    font-weight: 600;
    color: var(--color-ink);
    background-color: transparent;
    border: none;
    cursor: pointer;
}

.ps-faq__question:hover {
    background-color: var(--color-surface-raised);
}

.ps-faq__chevron {
    flex: 0 0 auto;
    transition: transform var(--transition-fast);
    font-size: 0.75rem;
}

.ps-faq__item.is-open .ps-faq__chevron {
    transform: rotate(180deg);
}

.ps-faq__answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height 200ms ease-out;
    padding-inline: var(--space-4);
}

.ps-faq__item.is-open .ps-faq__answer {
    max-height: 300px;
    padding-block-end: var(--space-4);
}

.ps-faq__answer p {
    color: var(--color-ink-muted);
    margin-block-end: 0;
}

/* Responsive */
@media (max-width: 1024px) {
    .ps-news__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ps-releases__layout {
        grid-template-columns: 1fr;
    }

    .ps-filter {
        order: -1;
    }
}

@media (max-width: 767px) {
    .ps-hero {
        padding-block: var(--space-7);
    }

    .ps-hero__title {
        font-size: var(--text-h1-size);
    }

    .ps-breaking__inner {
        flex-direction: column;
        align-items: flex-start;
    }

    .ps-breaking__close {
        align-self: flex-end;
    }

    .ps-section {
        padding-block: var(--space-7);
    }

    .ps-news__grid,
    .ps-reviews__grid,
    .ps-guides__grid,
    .ps-community__grid,
    .ps-tips__grid,
    .ps-accessories__grid {
        grid-template-columns: 1fr;
    }

    .ps-editorial {
        padding-block: var(--space-7);
    }

    .ps-editorial__image {
        aspect-ratio: 4 / 3;
    }

    .ps-newsletter {
        padding-block: var(--space-7);
    }

    .ps-newsletter__form {
        flex-direction: column;
        align-items: stretch;
    }

    .ps-newsletter__form input {
        max-width: none;
        width: 100%;
    }

    .ps-newsletter__form .btn {
        width: 100%;
    }
}

@media (max-width: 480px) {
    .ps-hero__title {
        font-size: 2rem;
    }

    .ps-hero__standfirst {
        font-size: var(--text-body-size);
    }
}
