/* Product pages — support + marketing layer for App Store projects.
   Uses lxucan.css tokens so the pages stay inside the studio's visual system. */

.product-page {
    --product-max: 1180px;
    --product-reading: 720px;
    background: var(--color-surface);
}

.product-page .site-nav {
    position: absolute;
}

.product-page .nav-light {
    background: transparent;
}

.product-page .nav-light .nav-brand,
.product-page .nav-light .nav-link {
    color: var(--color-ink-strongest);
}

.product-page .nav-light .nav-pill {
    background: rgba(255, 255, 255, .58);
    border: 1px solid rgba(38, 35, 35, .08);
    box-shadow: inset 0 1px rgba(255, 255, 255, .72), 0 10px 30px -24px rgba(38, 35, 35, .4);
}

.product-wrap {
    width: min(var(--product-max), calc(100% - 48px));
    margin-inline: auto;
}

.product-hero {
    position: relative;
    min-height: 100svh;
    display: grid;
    align-items: center;
    overflow: hidden;
    padding: 96px 0 32px;
    border-bottom: 1px solid var(--color-border-pill);
    background:
        radial-gradient(80% 85% at 88% 14%, rgba(var(--p-glow), .22) 0%, rgba(var(--p-glow), 0) 65%),
        linear-gradient(145deg, var(--color-surface-raised) 5%, var(--color-surface) 74%);
}

.product-hero::after {
    content: "";
    position: absolute;
    width: min(48vw, 640px);
    aspect-ratio: 1;
    right: -12vw;
    bottom: -30%;
    border: 1px solid rgba(var(--p-glow), .18);
    border-radius: 50%;
    box-shadow:
        0 0 0 64px rgba(var(--p-glow), .035),
        0 0 0 144px rgba(var(--p-glow), .025);
    pointer-events: none;
}

.product-hero-grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(330px, .72fr);
    align-items: center;
    gap: clamp(42px, 8vw, 110px);
}

.product-hero-grid > * {
    min-width: 0;
}

.product-kicker {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 28px;
    font-family: var(--font-mono);
    font-size: .72rem;
    font-weight: 500;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--p-accent-deep);
}

.product-kicker::before {
    content: "";
    width: 28px;
    height: 1px;
    background: currentColor;
}

.product-title {
    margin: 0;
    color: var(--color-ink-strongest);
}

.product-title .product-name {
    display: block;
    font-family: var(--font-serif);
    font-size: clamp(4.4rem, 10vw, 8.2rem);
    font-weight: 400;
    line-height: .82;
    letter-spacing: -.055em;
}

.product-title .product-promise {
    display: block;
    max-width: 15ch;
    margin-top: 30px;
    font-family: var(--font-sans);
    font-size: clamp(1.45rem, 3vw, 2.5rem);
    font-weight: 520;
    line-height: 1.08;
    letter-spacing: -.025em;
}

.product-intro {
    max-width: 57ch;
    margin: 24px 0 0;
    color: var(--color-ink-muted);
    font-size: 1.05rem;
    line-height: 1.65;
}

.product-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 30px;
}

.product-fineprint {
    margin: 16px 0 0;
    font-family: var(--font-mono);
    font-size: .7rem;
    line-height: 1.55;
    color: var(--color-ink-faint);
}

.product-shot {
    position: relative;
    width: min(100%, 290px);
    margin: 0 auto;
    animation: product-shot-in .9s cubic-bezier(.2, .8, .2, 1) .15s both;
}

.product-shot::before {
    content: "";
    position: absolute;
    inset: 12% -14% -7%;
    border-radius: 50%;
    background: rgba(var(--p-glow), .16);
    filter: blur(48px);
    z-index: -1;
}

.product-shot img {
    display: block;
    width: 100%;
    height: min(70svh, 620px);
    object-fit: cover;
    object-position: top center;
    border-radius: 30px;
    border: 1px solid rgba(38, 35, 35, .11);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, .85) inset,
        0 34px 70px -28px rgba(38, 35, 35, .38);
    transition: transform .5s cubic-bezier(.2, .8, .2, 1), box-shadow .5s ease;
}

.product-shot:hover img {
    transform: translateY(-8px) rotate(.7deg);
    box-shadow: 0 46px 90px -34px rgba(38, 35, 35, .46);
}

.generated-product-page .product-shot.placeholder {
    width: min(100%, 540px);
}

.generated-product-page .product-shot.placeholder img {
    height: auto;
    aspect-ratio: 3 / 2;
    object-fit: cover;
    border-radius: 24px;
}

.product-secondary {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(240px, .48fr);
    gap: clamp(32px, 7vw, 88px);
    align-items: center;
    margin-top: clamp(54px, 8vw, 92px);
    padding-top: clamp(42px, 6vw, 68px);
    border-top: 1px solid var(--color-border-pill);
}

.product-secondary.has-gallery {
    grid-template-columns: minmax(0, .8fr) minmax(420px, 1.2fr);
}

.product-secondary-copy {
    max-width: 48ch;
}

.product-secondary-copy h3 {
    margin: 0 0 14px;
    font-family: var(--font-serif);
    font-size: clamp(1.9rem, 4vw, 3.3rem);
    font-weight: 400;
    line-height: 1;
    letter-spacing: -.03em;
    color: var(--color-ink-strongest);
}

.product-secondary-copy p {
    margin: 0;
    color: var(--color-ink-muted);
    line-height: 1.65;
}

.product-secondary-media {
    display: grid;
    gap: 18px;
    align-items: start;
}

.product-secondary-media.is-single {
    grid-template-columns: minmax(0, 270px);
    justify-content: center;
}

.product-secondary-media.is-gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.product-secondary figure {
    width: min(100%, 270px);
    margin: 0 auto;
}

.product-secondary img {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid rgba(38, 35, 35, .1);
    border-radius: 26px;
    box-shadow: 0 30px 70px -42px rgba(38, 35, 35, .46);
}

.jusstalk-page .product-shot {
    width: min(100%, 286px);
}

/* Preserve the exact iPhone screenshot ratio without cropping or stretching. */
.jusstalk-page .product-shot img {
    width: 100%;
    height: auto;
    aspect-ratio: 1179 / 2556;
    object-fit: contain;
    object-position: center;
}

.shot-caption {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    margin-top: 14px;
    font-family: var(--font-mono);
    font-size: .68rem;
    color: var(--color-ink-faint);
}

@keyframes product-shot-in {
    from { opacity: 0; transform: translateY(30px) rotate(2deg); }
    to { opacity: 1; transform: none; }
}

.product-section {
    padding: clamp(76px, 10vw, 132px) 0;
}

.product-section + .product-section {
    border-top: 1px solid var(--color-border-pill);
}

.product-section.alt {
    background: var(--color-surface-darker);
}

.product-section-head {
    display: grid;
    grid-template-columns: minmax(180px, .38fr) minmax(0, 1fr);
    align-items: start;
    gap: clamp(32px, 7vw, 96px);
    margin-bottom: clamp(40px, 7vw, 78px);
}

.product-section-title {
    max-width: 17ch;
    margin: 0;
    font-family: var(--font-serif);
    font-weight: 400;
    font-size: clamp(2.35rem, 5vw, 4.6rem);
    line-height: .98;
    letter-spacing: -.035em;
    color: var(--color-ink-strongest);
}

.product-section-copy {
    max-width: 58ch;
    margin: 4px 0 0;
    color: var(--color-ink-muted);
    font-size: 1rem;
    line-height: 1.65;
}

.product-index {
    margin: 0;
    padding: 0;
    list-style: none;
    border-top: 1px solid var(--color-border-pill);
}

.product-index li {
    display: grid;
    grid-template-columns: 48px minmax(180px, .55fr) minmax(0, 1fr);
    align-items: baseline;
    gap: clamp(18px, 4vw, 58px);
    padding: 26px 0;
    border-bottom: 1px solid var(--color-border-pill);
}

.product-index .index-no {
    font-family: var(--font-mono);
    font-size: .7rem;
    color: var(--p-accent-deep);
}

.product-index h3 {
    margin: 0;
    color: var(--color-ink-strongest);
    font-size: 1.05rem;
    font-weight: 520;
}

.product-index p {
    margin: 0;
    color: var(--color-ink-muted);
    font-size: .94rem;
    line-height: 1.55;
}

.product-media {
    display: grid;
    grid-template-columns: minmax(280px, .76fr) minmax(0, 1fr);
    align-items: center;
    gap: clamp(46px, 9vw, 120px);
}

.product-media figure {
    margin: 0;
}

.product-media img {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid rgba(38, 35, 35, .1);
    border-radius: 26px;
    box-shadow: 0 30px 70px -42px rgba(38, 35, 35, .46);
}

.privacy-ledger {
    margin: 0;
    padding: 0;
    list-style: none;
}

.privacy-ledger li {
    padding: 22px 0;
    border-bottom: 1px solid var(--color-border-pill);
}

.privacy-ledger li:first-child {
    border-top: 1px solid var(--color-border-pill);
}

.privacy-ledger strong {
    display: block;
    margin-bottom: 5px;
    color: var(--color-ink-strongest);
    font-size: .96rem;
    font-weight: 520;
}

.privacy-ledger span {
    display: block;
    color: var(--color-ink-muted);
    font-size: .9rem;
    line-height: 1.55;
}

.support-grid {
    display: grid;
    grid-template-columns: minmax(280px, .72fr) minmax(0, 1fr);
    gap: clamp(48px, 9vw, 120px);
    align-items: start;
}

.support-contact {
    position: sticky;
    top: 32px;
}

.support-email {
    display: block;
    margin-top: 26px;
    padding: 22px 0;
    border-top: 1px solid var(--color-border-pill);
    border-bottom: 1px solid var(--color-border-pill);
    text-decoration: none;
}

.support-email small {
    display: block;
    margin-bottom: 7px;
    font-family: var(--font-mono);
    font-size: .68rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--p-accent-deep);
}

.support-email span {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    color: var(--color-ink-strongest);
    font-size: clamp(1.08rem, 2vw, 1.35rem);
    word-break: break-word;
}

.support-email span::after {
    content: "↗";
    flex: none;
    transition: transform .2s ease;
}

.support-email:hover span::after {
    transform: translate(3px, -3px);
}

.support-note {
    margin: 18px 0 0;
    color: var(--color-ink-faint);
    font-size: .82rem;
    line-height: 1.55;
}

.support-checklist {
    margin: 20px 0 0;
    padding-left: 1.1rem;
    color: var(--color-ink-muted);
    font-size: .86rem;
    line-height: 1.75;
}

.faq-list {
    border-top: 1px solid var(--color-border-pill);
}

.faq-list details {
    border-bottom: 1px solid var(--color-border-pill);
}

.faq-list summary {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 24px;
    padding: 23px 0;
    cursor: pointer;
    list-style: none;
    color: var(--color-ink-strongest);
    font-weight: 520;
}

.faq-list summary::-webkit-details-marker {
    display: none;
}

.faq-list summary::after {
    content: "+";
    font-family: var(--font-mono);
    font-size: 1.15rem;
    color: var(--p-accent-deep);
    transition: transform .2s ease;
}

.faq-list details[open] summary::after {
    transform: rotate(45deg);
}

.faq-list .faq-answer {
    max-width: 60ch;
    padding: 0 42px 24px 0;
    color: var(--color-ink-muted);
    font-size: .9rem;
    line-height: 1.65;
}

.faq-list .faq-answer a {
    color: var(--p-accent-deep);
}

.legal-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 22px;
    margin-top: 28px;
}

.legal-links a {
    color: var(--color-ink-muted);
    font-size: .84rem;
}

.product-final {
    text-align: center;
    background:
        radial-gradient(45% 110% at 50% 100%, rgba(var(--p-glow), .18), rgba(var(--p-glow), 0) 72%),
        var(--color-surface-raised);
}

.product-final .product-section-title {
    max-width: 15ch;
    margin-inline: auto;
}

.product-final .product-section-copy {
    max-width: 52ch;
    margin: 20px auto 0;
}

.product-final .product-actions {
    justify-content: center;
}

.product-page .site-footer {
    padding: 0;
}

@media (max-width: 860px) {
    .product-hero {
        min-height: auto;
        padding-top: 122px;
    }

    .product-hero-grid,
    .product-media,
    .support-grid,
    .product-secondary,
    .product-secondary.has-gallery {
        grid-template-columns: 1fr;
    }

    .product-secondary-media {
        width: min(100%, 560px);
        margin: 0 auto;
    }

    .product-hero-grid {
        gap: 54px;
    }

    .product-shot {
        width: min(76vw, 310px);
    }

    .product-section-head {
        grid-template-columns: 1fr;
        gap: 18px;
    }

    .product-section-title {
        max-width: 19ch;
    }

    .support-contact {
        position: static;
    }
}

@media (max-width: 640px) {
    .product-page .nav-actions .btn-accent {
        display: none;
    }

    .product-wrap {
        width: min(100% - 32px, var(--product-max));
    }

    .product-hero {
        padding: 112px 0 56px;
    }

    .product-title .product-name {
        font-size: clamp(4rem, 23vw, 6rem);
    }

    .nabuchodonosor-page .product-title .product-name {
        font-size: clamp(2.85rem, 17vw, 4.2rem);
        letter-spacing: -.065em;
    }

    .product-title .product-promise {
        margin-top: 24px;
    }

    .product-intro {
        font-size: .98rem;
    }

    .product-actions {
        align-items: stretch;
    }

    .product-actions .btn {
        flex: 1 1 100%;
    }

    .product-shot {
        width: min(82vw, 290px);
    }

    .product-secondary-media.is-gallery {
        grid-template-columns: minmax(0, 270px);
        justify-content: center;
    }

    .product-section {
        padding: 74px 0;
    }

    .product-index li {
        grid-template-columns: 34px minmax(0, 1fr);
        gap: 7px 14px;
        padding: 22px 0;
    }

    .product-index p {
        grid-column: 2;
    }

    .shot-caption {
        display: none;
    }

    .product-kicker {
        margin-bottom: 20px;
        font-size: .66rem;
        line-height: 1.5;
    }

    .product-title .product-name {
        overflow-wrap: anywhere;
    }

    .product-hero-grid {
        gap: 44px;
    }

    .product-shot img {
        height: auto;
        max-height: 70svh;
        object-fit: contain;
    }

    .product-secondary {
        margin-top: 48px;
        padding-top: 38px;
    }

    .support-email span {
        font-size: 1rem;
    }

    .faq-list summary {
        min-height: 64px;
        padding: 18px 0;
    }

    .faq-list .faq-answer {
        padding-right: 12px;
    }
}

@media (max-width: 380px) {
    .product-wrap {
        width: min(100% - 24px, var(--product-max));
    }

    .product-title .product-name {
        font-size: clamp(3.4rem, 22vw, 5rem);
    }

    .nabuchodonosor-page .product-title .product-name {
        font-size: clamp(2.35rem, 15vw, 3.5rem);
    }
}

@media (prefers-reduced-motion: reduce) {
    .product-shot {
        animation: none;
    }

    .product-shot img,
    .support-email span::after,
    .faq-list summary::after {
        transition: none;
    }
}
