/* suplementy.co: the product card (register facts, owner content, ratings, related products). */

.pc {
    padding-block: 24px 16px;
}

.pc-crumbs {
    margin-bottom: 24px;
}

.pc ul {
    list-style: none;
    padding: 0;
}

/* ------------------------------------------------------------------ owner cover */

.pc-cover {
    position: relative;
    height: clamp(160px, 22vw, 280px);
    margin-bottom: 28px;
    overflow: hidden;
    background: var(--tint);
    border: var(--card-border);
}

.pc-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.pc-cover figcaption {
    position: absolute;
    left: 12px;
    top: 12px;
}

/* ------------------------------------------------------------------------ top */

.pc-top {
    display: grid;
    gap: 32px;
    align-items: start;
}

@media (min-width: 1024px) {
    .pc-top {
        grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    }
}

.pc-head {
    display: flex;
    flex-direction: column;
    gap: 20px;
    min-width: 0;
}

.pc-eyebrow {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    font-family: var(--font-mono);
    font-size: 0.8125rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-2);
}

.pc-eyebrow .label {
    font-family: var(--font-body);
    letter-spacing: 0;
    text-transform: none;
}

.pc-kind {
    padding: 4px 8px;
    border: 1px solid var(--ink);
    color: var(--ink);
}

.pc-title {
    overflow-wrap: anywhere;
}

.js .pc-title--long:not(.is-expanded) {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.pc-title-toggle {
    align-self: flex-start;
    min-height: 44px;
    margin-top: -12px;
    font-size: 0.875rem;
}

.pc-title-toggle[hidden] {
    display: none;
}

.pc-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 28px;
}

.pc-notifier {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    color: var(--ink);
    text-decoration: underline;
    text-underline-offset: 3px;
    overflow-wrap: anywhere;
}

p.pc-notifier {
    text-decoration: none;
}

.pc-notifier svg {
    flex-shrink: 0;
}

.pc-score {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.pc-score a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    font-size: 0.875rem;
    color: var(--text-2);
}

.pc-stars {
    display: inline-flex;
    gap: 1px;
    color: var(--line);
    letter-spacing: 0;
}

.pc-stars .is-on {
    color: var(--accent);
}

.pc-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

@media (max-width: 479px) {
    .pc-actions .btn {
        flex: 1 1 auto;
    }
}

.pc-warn {
    display: flex;
    align-items: stretch;
    gap: 20px;
    margin-top: 8px;
}

.pc-form-tile {
    width: 112px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 12px;
    background: var(--tint);
    color: var(--deep);
    font-family: var(--font-mono);
    font-size: 0.6875rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    text-align: center;
    overflow-wrap: anywhere;
}

@media (min-width: 768px) {
    .pc-form-tile {
        width: 200px;
        min-height: 200px;
        font-size: 0.75rem;
    }
}

.pc-warn__text {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 10px;
    padding-left: 20px;
    border-left: 1.5px solid var(--ink);
    font-size: 1rem;
    line-height: 1.55;
}

.pc-warn__title {
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--mark-alt, var(--deep));
}

.pc-warn__second {
    font-size: 0.9375rem;
    color: var(--text-2);
}

/* ------------------------------------------------------------ register block */

.pc-register {
    display: flex;
    flex-direction: column;
    padding: 20px 22px 18px;
    background: var(--card);
    border: 3px solid var(--ink);
}

.pc-register__title {
    padding-bottom: 12px;
    border-bottom: 11px solid var(--ink);
    font-size: 1.375rem;
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.02em;
}

.pc-facts__row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 16px;
    padding: 9px 0;
    border-bottom: 1px solid var(--ink);
    font-size: 0.9375rem;
}

.pc-facts dt {
    font-weight: 700;
    flex-shrink: 0;
    max-width: 50%;
}

.pc-facts dd {
    margin: 0;
    text-align: right;
    overflow-wrap: anywhere;
}

.pc-facts dd.is-mono {
    font-family: var(--font-mono);
    font-size: 0.875rem;
}

.pc-facts dd.is-missing {
    color: var(--caption);
    font-style: italic;
}

.pc-register__sub {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 4px 12px;
    padding: 9px 0 7px;
    border-top: 5px solid var(--ink);
    border-bottom: 1px solid var(--ink);
    font-family: var(--font-body);
    font-size: 0.8125rem;
    font-weight: 700;
}

.pc-register__note {
    font-weight: 500;
    color: var(--text-2);
}

.pc-ingredients {
    border-bottom: 11px solid var(--ink);
}

.pc-ingredients li {
    border-bottom: 1px solid var(--ink);
}

.pc-ingredients li:last-child {
    border-bottom: 0;
}

.pc-ingredients a,
.pc-ingredients li > span {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    min-height: 44px;
    padding: 10px 0;
    font-size: 1.0625rem;
    font-weight: 700;
    color: var(--ink);
    text-decoration: none;
    overflow-wrap: anywhere;
}

.pc-ingredients li > span {
    font-weight: 600;
}

.pc-ingredients a:hover span {
    text-decoration: underline;
    text-underline-offset: 3px;
}

.pc-ingredients svg {
    flex-shrink: 0;
}

.pc-ingredients__missing {
    padding: 12px 0;
    border-bottom: 11px solid var(--ink);
    color: var(--caption);
    font-style: italic;
}

/* ------------------------------------------------------------------ body */

.pc-body {
    display: grid;
    gap: 32px;
    align-items: start;
    margin-top: 44px;
}

@media (min-width: 1024px) {
    .pc-body {
        grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    }
}

.pc-main {
    display: flex;
    flex-direction: column;
    gap: 44px;
    min-width: 0;
}

.pc-section {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding-top: 22px;
    border-top: 1.5px solid var(--ink);
}

.pc-description {
    max-width: 72ch;
    font-size: 1.125rem;
    line-height: 1.65;
}

.pc-categories {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 14px;
}

.pc-categories__title {
    font-family: var(--font-body);
    font-size: 0.875rem;
    font-weight: 700;
}

.pc-categories__list {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.pc-category {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0 14px;
    border: 1px solid var(--ink);
    color: var(--ink);
    font-size: 0.875rem;
    text-decoration: none;
}

.pc-category:hover {
    background: var(--ink);
    color: #FFFFFF;
}

/* ----------------------------------------------------------- owner content */

.pc-owner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
    padding: 24px;
    background: var(--card);
    border: 1.5px solid var(--ink);
}

.pc-owner__logo {
    max-width: 150px;
    max-height: 150px;
}

.pc-owner__links {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.pc-owner__links a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    font-weight: 600;
    overflow-wrap: anywhere;
}

.pc-contact {
    display: flex;
    flex-direction: column;
    gap: 14px;
    width: 100%;
    padding-top: 20px;
    border-top: 1px solid var(--line);
}

.pc-contact__note {
    font-size: 0.9375rem;
    color: var(--text-2);
}

.pc-contact__direct a {
    overflow-wrap: anywhere;
}

.pc-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.pc-form .btn {
    align-self: flex-start;
}

.pc-trap {
    position: absolute;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* ------------------------------------------------------------------ ratings */

.pc-summary {
    display: grid;
    gap: 20px 36px;
    align-items: center;
}

@media (min-width: 600px) {
    .pc-summary {
        grid-template-columns: 200px minmax(0, 1fr);
    }
}

.pc-summary__score {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.pc-summary__value {
    font-family: var(--font-display);
    font-size: clamp(4rem, 3rem + 3vw, 6rem);
    line-height: 0.9;
}

.pc-summary__of {
    font-size: 0.875rem;
    color: var(--text-2);
}

.pc-bars {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.pc-bars__row {
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr) 32px;
    gap: 12px;
    align-items: center;
    font-family: var(--font-mono);
    font-size: 0.8125rem;
}

.pc-bars__track {
    height: 10px;
    background: var(--line-soft);
}

.pc-bars__fill {
    display: block;
    height: 10px;
    background: var(--accent);
}

.pc-bars__count {
    text-align: right;
    color: var(--text-2);
}

.pc-ratings__purpose {
    max-width: 72ch;
    font-size: 1.0625rem;
    line-height: 1.6;
}

.pc-ratings__notice {
    padding: 14px 16px;
    background: var(--card);
    border: 1px solid var(--line);
    font-size: 0.875rem;
    line-height: 1.55;
    color: var(--text-2);
}

.pc-review {
    display: grid;
    gap: 8px 24px;
    padding: 20px 0;
    border-top: 1px solid var(--line);
}

@media (min-width: 600px) {
    .pc-review {
        grid-template-columns: 160px minmax(0, 1fr);
    }
}

.pc-review__meta {
    font-size: 0.8125rem;
    color: var(--text-2);
}

.pc-review__body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
}

.pc-review__text {
    font-size: 1rem;
    line-height: 1.6;
    overflow-wrap: anywhere;
}

.pc-review__report {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    font-size: 0.8125rem;
    color: var(--text-2);
}

.pc-reviews__empty {
    padding: 28px 20px;
}

.pc-rate {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 24px;
    background: var(--card);
    border: 1.5px solid var(--ink);
}

.pc-rate__title {
    font-family: var(--font-display);
    font-weight: var(--display-weight);
    font-size: 1.875rem;
    line-height: 1;
}

.pc-rate__notice {
    font-size: 0.8125rem;
    line-height: 1.5;
    color: var(--text-2);
}

.pc-rate .btn {
    align-self: flex-start;
}

.pc-stars-input {
    margin: 0;
    padding: 0;
    border: 0;
    min-width: 0;
}

.pc-stars-input legend {
    margin-bottom: 8px;
    padding: 0;
}

.pc-stars-input__options {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.pc-star-option {
    position: relative;
    display: inline-flex;
}

.pc-star-option input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
    cursor: pointer;
}

.pc-star-option__face {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 2px;
    width: 48px;
    height: 48px;
    border: 1px solid var(--ink);
    background: var(--card);
    font-family: var(--font-mono);
    font-size: 0.9375rem;
}

.pc-star-option__glyph {
    font-size: 0.75rem;
    color: var(--accent);
}

.pc-star-option input:checked + .pc-star-option__face {
    background: var(--ink);
    color: #FFFFFF;
}

.pc-star-option input:checked + .pc-star-option__face .pc-star-option__glyph {
    color: #FFFFFF;
}

.pc-star-option input:focus-visible + .pc-star-option__face {
    outline: 3px solid var(--focus);
    outline-offset: 2px;
}

.pc-stars-input__options[aria-invalid="true"] .pc-star-option__face {
    border: 2px solid var(--error-line);
}

/* ---------------------------------------------------------------------- FAQ */

.pc-faq__item {
    border-bottom: 1px solid var(--ink);
}

.pc-faq__item summary {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    min-height: 56px;
    padding: 14px 0;
    font-size: 1.125rem;
    font-weight: 600;
    cursor: pointer;
    list-style: none;
}

.pc-faq__item summary::-webkit-details-marker {
    display: none;
}

.pc-faq__item summary::after {
    content: '+';
    flex-shrink: 0;
    font-family: var(--font-mono);
    font-size: 1.25rem;
    font-weight: 400;
}

.pc-faq__item[open] summary::after {
    content: '\2212';
}

.pc-faq__item p {
    max-width: 72ch;
    padding-bottom: 18px;
    line-height: 1.6;
    color: var(--text-2);
}

/* -------------------------------------------------------------- side column */

.pc-side {
    display: flex;
    flex-direction: column;
    gap: 24px;
    min-width: 0;
}

.pc-questions {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    padding: 26px;
    background: var(--ink);
    color: #FFFFFF;
}

.pc-questions p {
    font-size: 0.875rem;
    line-height: 1.55;
    color: #C9C8D3;
}

.pc-questions__title {
    font-family: var(--font-display);
    font-weight: var(--display-weight);
    font-size: 2rem;
    line-height: 1;
}

.pc-questions .btn:hover {
    background: var(--tint);
    color: var(--ink);
}

.pc-questions :focus-visible {
    outline-color: #FFFFFF;
}

.pc-side-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-top: 16px;
    border-top: 1.5px solid var(--ink);
}

.pc-side-list__title {
    font-family: var(--font-body);
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.pc-side-list a {
    display: flex;
    align-items: center;
    min-height: 44px;
    border-bottom: 1px solid var(--line);
    color: var(--ink);
    text-decoration: none;
}

.pc-side-list a:hover {
    text-decoration: underline;
}

/* ------------------------------------------------------------ related lists */

.pc-related {
    display: flex;
    flex-direction: column;
    gap: 20px;
    margin-top: 56px;
    padding-top: 26px;
    border-top: 3px solid var(--ink);
}

.pc-related__head {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-end;
    gap: 12px 24px;
}

.pc-related__head .muted {
    margin-top: 8px;
    font-size: 0.9375rem;
}

.pc-related__more {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    font-weight: 600;
    white-space: nowrap;
}

.pc-related__grid {
    display: grid;
    gap: 12px;
}

@media (min-width: 600px) {
    .pc-related__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 20px;
    }
}

@media (min-width: 1024px) {
    .pc-related__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.pc-rel {
    display: flex;
    height: 100%;
    background: var(--card);
    border: 1px solid var(--line);
    color: var(--ink);
    text-decoration: none;
}

.pc-rel:hover {
    border-color: var(--ink);
    color: var(--ink);
}

.pc-rel__art {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 88px;
    flex-shrink: 0;
    background: var(--tint);
    color: var(--deep);
    overflow: hidden;
}

.pc-rel__art img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.pc-rel__form {
    display: none;
}

.pc-rel__body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    min-width: 0;
    padding: 14px 16px;
}

.pc-rel__name {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-family: var(--font-display);
    font-size: 1.25rem;
    line-height: 1.1;
    overflow-wrap: anywhere;
}

.pc-rel__company {
    font-size: 0.875rem;
    color: var(--text-2);
}

.pc-rel__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 12px;
    font-size: 0.75rem;
    color: var(--text-2);
}

@media (min-width: 600px) {
    .pc-rel {
        flex-direction: column;
    }

    .pc-rel__art {
        width: auto;
        height: 130px;
    }

    .pc-rel__form {
        display: block;
        position: absolute;
        left: 12px;
        top: 10px;
        font-family: var(--font-mono);
        font-size: 0.6875rem;
        letter-spacing: 0.1em;
        text-transform: uppercase;
    }

    .pc-rel__body {
        padding: 16px;
    }

    .pc-rel__name {
        font-size: 1.5rem;
    }

    .pc-rel__meta {
        align-self: stretch;
        padding-top: 8px;
        border-top: 1px solid var(--line);
    }
}

.pc-provenance {
    margin-top: 48px;
}

/* -------------------------------------------------------------------- print */

@media print {
    .pc-cover,
    .pc-actions,
    .pc-title-toggle,
    .pc-rate,
    .pc-questions,
    .pc-side-list,
    .pc-related,
    .pc-form-tile,
    .pc-contact form,
    .ad-modal {
        display: none !important;
    }

    .pc-title,
    .js .pc-title--long:not(.is-expanded) {
        display: block;
        -webkit-line-clamp: unset;
        overflow: visible;
        font-size: 22pt;
    }

    .pc-top,
    .pc-body {
        display: block;
    }

    .pc-register {
        margin-top: 16px;
        border: 1px solid #000000;
        break-inside: avoid;
    }

    .pc-register__title,
    .pc-ingredients,
    .pc-ingredients__missing {
        border-bottom-width: 2px;
    }

    .pc-register__sub {
        border-top-width: 2px;
    }

    .pc-body {
        margin-top: 24px;
    }

    .pc-main {
        gap: 20px;
    }

    .pc-bars__fill {
        print-color-adjust: exact;
        -webkit-print-color-adjust: exact;
    }

    .pc-review {
        break-inside: avoid;
    }
}
