/* ============================================================
   Pick Your Perk — Campaign Landing Page
   hh-pick-your-perk.css v1.1.0
   ============================================================ */

/* --- Campaign Tokens --- */
:root {
    --pyp-green:        #277253;
    --pyp-green-dark:   #1e5c41;
    --pyp-navy:         #1B2A4A;
    --pyp-coral:        #FF5F4E;
    --pyp-orange:       #FFBC2A;
    --pyp-yellow:       #FFD93D;
    --pyp-white:        #FFFFFF;
    --pyp-stripe-blue:  #D6E9F5;
    --pyp-stripe-white: #EEF6FC;
    --pyp-card-bg:      #FFFFFF;
    --pyp-includes-bg:  #F0F7F4;
    --pyp-text:         #1B2A4A;
    --pyp-radius:       12px;
    --pyp-shadow:       0 4px 24px rgba(27,42,74,0.10);
    --pyp-shadow-hover: 0 8px 40px rgba(27,42,74,0.18);
    --pyp-flip-speed:   0.55s;
}

/* --- Reset / Base --- */
.pyp-page * {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

.pyp-page {
    font-family: 'Nunito Sans', sans-serif;
    color: var(--pyp-text);
    overflow-x: hidden;
}

/* ============================================================
   STRIPE BACKGROUND UTILITY
   ============================================================ */
.pyp-stripes {
    background-color: var(--pyp-stripe-white);
    background-image: repeating-linear-gradient(
        90deg,
        var(--pyp-stripe-blue) 0px,
        var(--pyp-stripe-blue) 28px,
        var(--pyp-stripe-white) 28px,
        var(--pyp-stripe-white) 56px
    );
}

/* ============================================================
   LENIS SMOOTH SCROLL (base styles from Lenis docs)
   ============================================================ */
html.lenis,
html.lenis body {
    height: auto;
}

.lenis.lenis-smooth {
    scroll-behavior: auto !important;
}

.lenis.lenis-smooth [data-lenis-prevent] {
    overscroll-behavior: contain;
}

.lenis.lenis-stopped {
    overflow: hidden;
}

/* ============================================================
   HERO
   ============================================================ */
.pyp-hero {
    position: relative;
    height: 100vh;
    min-height: 520px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 60px 24px 60px;
    overflow: visible;
    will-change: transform;
}

/* Foliage corners */
.pyp-foliage {
    position: absolute;
    pointer-events: none;
    z-index: 3;
}
.pyp-foliage--tl {
    top: -131px;
    left: -256px;
    width: clamp(320px, 40vw, 580px);
    transform: scaleY(-1) rotate(44deg);
    transform-origin: center center;
}
.pyp-foliage--tr {
    top: -131px;
    right: -256px;
    width: clamp(320px, 40vw, 580px);
    transform: scale(-1, -1) rotate(44deg);
    transform-origin: center center;
}
.pyp-foliage--bl {
    bottom: -135px;
    left: -233px;
    width: clamp(280px, 34vw, 560px);
    transform: rotate(45deg);
    transform-origin: center center;
}
.pyp-foliage--br {
    bottom: -135px;
    right: -233px;
    width: clamp(280px, 34vw, 560px);
    transform: scaleX(-1) rotate(45deg);
    transform-origin: center center;
}

/* Ribbon badge */
.pyp-hero__ribbon {
    position: relative;
    z-index: 2;
    display: inline-block;
    background: var(--pyp-yellow);
    color: var(--pyp-navy);
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 900;
    font-size: clamp(13px, 1.6vw, 16px);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 10px 32px;
    margin-bottom: 28px;
    clip-path: polygon(12px 0%, calc(100% - 12px) 0%, 100% 50%, calc(100% - 12px) 100%, 12px 100%, 0% 50%);
}

/* Headline lockup */
.pyp-hero__lockup {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    justify-content: center;
    margin-bottom: 20px;
}

.pyp-hero__headline {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: clamp(52px, 10vw, 128px);
    line-height: 0.92;
    letter-spacing: -0.02em;
    color: var(--pyp-navy);
    text-transform: uppercase;
    text-align: right;
    flex-shrink: 0;
}

.pyp-hero__flamingo {
    display: block;
    flex-shrink: 0;
    height: clamp(120px, 18vw, 260px);
    width: auto;
    pointer-events: none;
    margin-bottom: -12px;
    margin-left: clamp(-20px, -2vw, -8px);
}

.pyp-hero__tagline {
    position: relative;
    z-index: 2;
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: clamp(20px, 3vw, 30px);
    color: #E8447A;
    margin-bottom: 28px;
    letter-spacing: 0.01em;
}

.pyp-hero__offer {
    position: relative;
    z-index: 2;
    font-size: clamp(15px, 2vw, 18px);
    color: #4a5a6a;
    max-width: 480px;
    line-height: 1.6;
    margin-bottom: 40px;
}

.pyp-hero__scroll {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    color: var(--pyp-navy);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.6;
    animation: pyp-bounce 2s infinite;
    cursor: pointer;
    border: none;
    background: none;
    text-decoration: none;
}

.pyp-hero__scroll svg {
    width: 24px;
    height: 24px;
}

@keyframes pyp-bounce {
    0%, 100% { transform: translateY(0); }
    50%       { transform: translateY(6px); }
}

/* ============================================================
   CARDS SECTION
   ============================================================ */
.pyp-cards-section {
    position: relative;
    min-height: 100vh;
    padding: 72px 24px 48px;
    background: var(--pyp-white);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.pyp-cards-section__intro {
    text-align: center;
    margin-bottom: 48px;
}

.pyp-cards-section__intro h2 {
    font-family: 'Playfair Display', serif;
    font-size: clamp(28px, 4vw, 42px);
    font-weight: 700;
    color: var(--pyp-navy);
    margin-bottom: 12px;
}

.pyp-cards-section__intro p {
    font-size: 17px;
    color: #5a6a7a;
    max-width: 520px;
    margin: 0 auto;
    line-height: 1.6;
}

/* OR divider */
.pyp-or-divider {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--pyp-yellow);
    color: var(--pyp-navy);
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 900;
    font-size: 15px;
    letter-spacing: 0.05em;
    box-shadow: 0 2px 12px rgba(255,217,61,0.4);
    z-index: 2;
    flex-shrink: 0;
    align-self: center;
}

.pyp-cards-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 32px;
    width: 100%;
    max-width: 1260px;
    margin: 0 auto;
}

/* ============================================================
   CARD FLIP
   ============================================================ */

/* Outer flip container — sets the 3D scene */
.pyp-card {
    flex: 1;
    max-width: 540px;
    height: 640px;
    perspective: 1200px;
    cursor: default;
    /* No overflow, border, or shadow here — those live on faces */
}

/* Inner wrapper that actually rotates */
.pyp-card__inner {
    position: relative;
    width: 100%;
    height: 640px; /* matches .pyp-card height — explicit so faces resolve */
    transform-style: preserve-3d;
    transition: transform var(--pyp-flip-speed) cubic-bezier(0.4, 0.2, 0.2, 1);
    border-radius: var(--pyp-radius);
}

.pyp-card.is-flipped .pyp-card__inner {
    transform: rotateY(180deg);
}

/* Shared face styles */
.pyp-card__face {
    position: absolute;
    inset: 0;
    border-radius: var(--pyp-radius);
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    overflow: hidden;
    box-shadow: var(--pyp-shadow);
    background: var(--pyp-card-bg);
}

/* Front face — white frame padding separates image from page bg */
.pyp-card__front {
    transform: rotateY(0deg);
    border: 1px solid #e7ecf0;
    transition: border-color 0.25s ease, box-shadow 0.25s ease;
    display: flex;
    flex-direction: column;
    padding: 14px 14px 0;
}

.pyp-card:hover .pyp-card__front {
    box-shadow: var(--pyp-shadow-hover);
}

/* Back face */
.pyp-card__back {
    transform: rotateY(180deg);
    display: flex;
    flex-direction: column;
    border: 2px solid var(--pyp-green);
    box-shadow: 0 0 0 3px rgba(39,114,83,0.12), var(--pyp-shadow-hover);
}

/* ── FRONT FACE — image framed by white card padding ── */
.pyp-card__body {
    flex: 1;
    position: relative;
    background-size: cover;
    background-position: center top;
    background-repeat: no-repeat;
    border-radius: 8px;
    overflow: hidden;
    border: 1px solid #eef1f4;
}

.pyp-card--gameday .pyp-card__body {
    background-image: url('../images/pyp-gameday-desktop.png');
    background-color: #2d6a4f;
}

.pyp-card--appliance .pyp-card__body {
    background-image: url('../images/pyp-appliance-desktop.png');
    background-color: #4a7fa5;
}

/* Dark overlay so includes text is legible over photo */
.pyp-card__includes {
    display: none;
}

.pyp-card__includes-label {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 15px;
    color: rgba(255,255,255,0.8);
    margin-bottom: 10px;
}

.pyp-card__includes ul {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.pyp-card__includes li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 14px;
    line-height: 1.4;
    color: var(--pyp-white);
    font-weight: 600;
    text-shadow: 0 1px 3px rgba(0,0,0,0.4);
}

.pyp-card__includes li::before {
    content: '✦';
    display: block;
    min-width: 18px;
    font-size: 13px;
    line-height: 1.4;
    color: #E8447A;
    text-shadow: 0 1px 4px rgba(0,0,0,0.3);
    flex-shrink: 0;
    margin-top: 1px;
}

.pyp-card__footer {
    padding: 10px 18px 14px;
}

.pyp-card__btn {
    display: block;
    width: 100%;
    padding: 14px 24px;
    border-radius: 8px;
    border: none;
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 800;
    font-size: 15px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
    text-align: center;
}

.pyp-card--gameday .pyp-card__btn {
    background: var(--pyp-green);
    color: var(--pyp-white);
}

.pyp-card--gameday .pyp-card__btn:hover {
    background: var(--pyp-green-dark);
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(39,114,83,0.3);
}

.pyp-card--appliance .pyp-card__btn {
    background: var(--pyp-coral);
    color: var(--pyp-white);
}

.pyp-card--appliance .pyp-card__btn:hover {
    background: #e84d3c;
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(255,95,78,0.3);
}

/* Pre-release "Coming Soon" button — muted, non-interactive */
.pyp-card__btn--soon,
.pyp-card--gameday .pyp-card__btn--soon,
.pyp-card--appliance .pyp-card__btn--soon {
    background: #c8d0d8;
    color: #ffffff;
    cursor: default;
}

.pyp-card__btn--soon:hover,
.pyp-card--gameday .pyp-card__btn--soon:hover,
.pyp-card--appliance .pyp-card__btn--soon:hover {
    background: #c8d0d8;
    transform: none;
    box-shadow: none;
}

/* ── BACK FACE CONTENTS ── */
.pyp-card__back-header {
    padding: 20px 24px 14px;
    border-bottom: 2px solid #f0f0f0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.pyp-card__back-icon {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    flex-shrink: 0;
}

.pyp-card--gameday .pyp-card__back-icon {
    background: var(--pyp-green);
}

.pyp-card--appliance .pyp-card__back-icon {
    background: var(--pyp-stripe-blue);
}

.pyp-card__back-title {
    font-family: 'Playfair Display', serif;
    font-weight: 700;
    font-size: 16px;
    line-height: 1.2;
}

.pyp-card--gameday .pyp-card__back-title {
    color: var(--pyp-green);
}

.pyp-card--appliance .pyp-card__back-title {
    color: var(--pyp-navy);
}

.pyp-card__back-title span {
    display: block;
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 800;
    font-size: 10px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #8a9ab0;
    margin-bottom: 2px;
}

/* Back form */
.pyp-card__back-form {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 16px 20px 0;
    overflow-y: auto;
}

/* ── Gravity Forms native markup, styled to the card design ── */
.pyp-gf-form .gform_wrapper {
    margin: 0 !important;
}

.pyp-gf-form .gform_wrapper .gform_fields {
    display: flex;
    flex-direction: column;
    gap: 10px;
    grid-gap: 10px;
}

/* GF field wrapper */
.pyp-gf-form .gfield {
    margin: 0 !important;
    padding: 0 !important;
}

/* Labels */
.pyp-gf-form .gfield_label,
.pyp-gf-form .gform_wrapper .gfield_label {
    font-family: 'Nunito Sans', sans-serif;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--pyp-navy);
    margin-bottom: 4px;
}

/* Inputs + selects */
.pyp-gf-form input[type="text"],
.pyp-gf-form input[type="email"],
.pyp-gf-form input[type="tel"],
.pyp-gf-form select {
    width: 100% !important;
    padding: 9px 12px !important;
    border: 1.5px solid #dde3ea !important;
    border-radius: 6px !important;
    font-family: 'Nunito Sans', sans-serif !important;
    font-size: 14px !important;
    color: var(--pyp-text) !important;
    background: var(--pyp-white) !important;
    transition: border-color 0.2s ease;
    appearance: none;
    -webkit-appearance: none;
    box-sizing: border-box !important;
}

.pyp-gf-form select {
    -webkit-appearance: menulist !important;
    appearance: menulist !important;
}

.pyp-gf-form input:focus,
.pyp-gf-form select:focus {
    outline: none;
    border-color: var(--pyp-green) !important;
    box-shadow: 0 0 0 3px rgba(39,114,83,0.1);
}

/* Name field first/last side by side (GF renders sub-inputs in a container) */
.pyp-gf-form .ginput_complex.ginput_container_name {
    display: flex;
    gap: 10px;
}

.pyp-gf-form .ginput_complex.ginput_container_name > span {
    flex: 1;
    min-width: 0;
}

/* Validation messages — keep compact inside the card */
.pyp-gf-form .gfield_description.validation_message,
.pyp-gf-form .gform_wrapper .gfield_error .gfield_label {
    font-size: 11px;
    color: var(--pyp-coral);
}

.pyp-gf-form .gform_wrapper .gfield_error input,
.pyp-gf-form .gform_wrapper .gfield_error select {
    border-color: var(--pyp-coral) !important;
}

/* Submit button — GF renders this inside .gform_footer */
.pyp-gf-form .gform_footer {
    padding: 14px 0 4px !important;
    margin: 0 !important;
}

.pyp-gf-form .gform_button {
    display: block;
    width: 100%;
    padding: 13px 16px !important;
    border-radius: 8px !important;
    border: none !important;
    font-family: 'Nunito Sans', sans-serif !important;
    font-weight: 800 !important;
    font-size: 14px !important;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.15s ease;
    text-align: center;
    background: var(--pyp-green) !important;
    color: var(--pyp-white) !important;
}

.pyp-gf-form .gform_button:hover {
    background: var(--pyp-green-dark) !important;
    transform: translateY(-2px);
}

.pyp-card--appliance .pyp-gf-form .gform_button {
    background: var(--pyp-coral) !important;
}

.pyp-card--appliance .pyp-gf-form .gform_button:hover {
    background: #e84d3c !important;
}

/* GF AJAX confirmation message — centered in the card back */
.pyp-gf-form .gform_confirmation_message {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 24px 16px;
    font-family: 'Nunito Sans', sans-serif;
    font-size: 15px;
    line-height: 1.5;
    color: var(--pyp-text);
}

.pyp-card__back-footer {
    padding: 4px 20px 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.pyp-card__back-change {
    background: none;
    border: none;
    font-family: 'Nunito Sans', sans-serif;
    font-size: 12px;
    font-weight: 700;
    color: #8a9ab0;
    cursor: pointer;
    text-align: center;
    padding: 0;
    transition: color 0.2s ease;
}

.pyp-card__back-change:hover {
    color: var(--pyp-navy);
}

/* ============================================================
   RESPONSIVE — TABLET
   ============================================================ */
@media (max-width: 860px) {
    .pyp-cards-wrap {
        flex-direction: column;
        align-items: center;
        gap: 0;
    }

    .pyp-or-divider {
        margin: 24px 0;
    }

    .pyp-card {
        max-width: 100%;
        width: 100%;
        height: 720px;
        flex: none;
    }

    .pyp-card .pyp-card__inner {
        height: 720px;
    }

    /* Swap to mobile-optimized images on tablet/mobile */
    .pyp-card--gameday .pyp-card__body {
        background-image: url('../images/pyp-gameday-mobile.png');
    }

    .pyp-card--appliance .pyp-card__body {
        background-image: url('../images/pyp-appliance-mobile.png');
    }
}

/* ============================================================
   RESPONSIVE — MOBILE
   ============================================================ */
@media (max-width: 600px) {
    .pyp-hero {
        height: 100vh;
        min-height: 480px;
        padding: 40px 16px 40px;
    }

    .pyp-foliage--tl,
    .pyp-foliage--tr {
        width: 180px;
        top: -60px;
    }
    .pyp-foliage--tl { left: -80px; top: 70px; }
    .pyp-foliage--tr { right: -80px; top: 70px; }

    .pyp-foliage--bl,
    .pyp-foliage--br {
        width: 160px;
        bottom: -60px;
    }
    .pyp-foliage--bl { left: -70px; }
    .pyp-foliage--br { right: -70px; }

    .pyp-hero__ribbon {
        font-size: 11px;
        padding: 8px 20px;
        margin-bottom: 16px;
    }

    .pyp-hero__headline {
        font-size: clamp(40px, 12vw, 64px);
    }

    .pyp-hero__flamingo {
        height: clamp(90px, 22vw, 140px);
        margin-bottom: -8px;
    }

    .pyp-hero__tagline {
        font-size: clamp(16px, 5vw, 22px);
        margin-bottom: 16px;
    }

    .pyp-hero__offer {
        font-size: 14px;
        margin-bottom: 24px;
    }

    .pyp-cards-section {
        padding: 48px 16px 56px;
    }

    .pyp-card {
        height: 640px;
        flex: none;
    }

    .pyp-card .pyp-card__inner {
        height: 640px;
    }

    .pyp-card__body {
        min-height: 280px;
    }
}