.rsvp-modal {
    position: fixed;
    z-index: 120;
    inset: 0;

    display: grid;
    place-items: center;

    padding: clamp(12px, 3vw, 30px);

    overflow-y: auto;
    overscroll-behavior: contain;

    background: rgb(4 25 16 / 78%);
    backdrop-filter: blur(7px);
}

.rsvp-modal[hidden],
.rsvp-intro[hidden],
.rsvp-code-form[hidden],
.rsvp-decision[hidden],
.rsvp-bubble[hidden] {
    display: none !important;
}

.rsvp-shell {
    width: min(100%, 820px);
    margin: auto;
}

.rsvp-card {
    position: relative;
    isolation: isolate;

    width: 100%;

    padding:
        clamp(25px, 4vw, 42px)
        clamp(20px, 4vw, 40px);

    overflow: hidden;

    border: 4px solid #754619;
    border-radius: 32px;

    background:
        radial-gradient(
            circle at 8% 8%,
            rgb(255 255 255 / 55%) 0 17px,
            transparent 18px
        ),
        radial-gradient(
            circle at 93% 86%,
            rgb(112 177 85 / 28%) 0 45px,
            transparent 46px
        ),
        linear-gradient(
            145deg,
            #fff0bc,
            #e9bc63
        );

    color: #30200f;

    box-shadow:
        0 24px 65px rgb(0 0 0 / 50%),
        inset 0 0 0 3px
        rgb(255 255 255 / 28%);
}

.rsvp-card::before {
    content: "";

    position: absolute;
    inset: 10px;
    z-index: -1;

    border: 2px dashed
        rgb(116 70 25 / 25%);
    border-radius: 22px;

    pointer-events: none;
}

.rsvp-close {
    position: absolute;
    z-index: 5;

    top: 12px;
    right: 14px;

    width: 46px;
    height: 46px;

    display: grid;
    place-items: center;

    padding: 3px;

    border: 0;
    border-radius: 50%;

    background: transparent;

    cursor: pointer;

    transition:
        scale 150ms ease,
        filter 150ms ease;
}

.rsvp-close img {
    display: block;
    width: 100%;
    height: 100%;
}

.rsvp-close:hover {
    scale: 1.08;
    filter: brightness(1.05);
}

.rsvp-close.is-attention::after {
    content: "";

    position: absolute;
    inset: -5px;

    border: 4px solid #65a94e;
    border-radius: 50%;

    animation:
        rsvp-close-attention
        950ms ease-out infinite;
}

.rsvp-intro {
    display: grid;

    grid-template-columns:
        minmax(210px, .82fr)
        minmax(300px, 1.18fr);

    align-items: center;

    gap: clamp(20px, 4vw, 46px);
}

.rsvp-event-info {
    display: grid;
    gap: 9px;
}

.rsvp-event-info article {
    display: grid;

    grid-template-columns:
        48px minmax(0, 1fr);

    align-items: center;

    gap: 11px;

    padding: 9px 4px;

    border-bottom:
        2px dashed
        rgb(100 61 26 / 23%);
}

.rsvp-event-icon {
    width: 46px;
    height: 46px;

    display: grid;
    place-items: center;
}

.rsvp-event-icon img {
    display: block;
    width: 100%;
    height: 100%;
}

.rsvp-event-info h2,
.rsvp-event-info p {
    margin: 0;
}

.rsvp-event-info h2 {
    color: #397047;

    font-size: 12px;
    font-weight: 1000;

    letter-spacing: .07em;
    text-transform: uppercase;
}

.rsvp-event-info p {
    margin-top: 2px;

    color: #382410;

    font-size: 14px;
    font-weight: 800;

    line-height: 1.32;
}

.rsvp-code-form {
    display: grid;

    gap: 15px;

    padding:
        clamp(21px, 3vw, 30px);

    border: 3px solid #80501f;
    border-radius: 24px;

    background:
        linear-gradient(
            150deg,
            #fff8d8,
            #f2d680
        );

    box-shadow:
        0 6px 0
        rgb(105 62 22 / 30%),
        inset 0 0 0 2px
        rgb(255 255 255 / 50%);

    text-align: center;
}

.rsvp-label {
    display: grid;
    gap: 7px;

    font-size: 15px;
}

.rsvp-label small {
    color: #3a7047;

    font-size: 10px;
    font-weight: 1000;

    letter-spacing: .14em;
    text-transform: uppercase;
}

.rsvp-label strong {
    color: #402710;

    font-size:
        clamp(28px, 4vw, 43px);

    line-height: 1;
}

.rsvp-label span {
    color: #5a391b;

    font-weight: 800;

    line-height: 1.3;
}

.rsvp-code-row {
    display: grid;

    grid-template-columns:
        minmax(0, 1fr) auto;

    gap: 9px;
}

.rsvp-code {
    min-width: 0;
    min-height: 51px;

    padding: 10px 14px;

    border: 3px solid #80501f;
    border-radius: 14px;

    background: #fffdf4;
    color: #26190c;

    font: inherit;
    font-weight: 800;

    outline: 0;
}

.rsvp-submit,
.rsvp-save {
    min-height: 51px;

    padding: 10px 18px;

    border: 3px solid #315425;
    border-radius: 15px;

    background:
        linear-gradient(
            #68a64c,
            #3e7637
        );

    color: #fffbe8;

    font:
        1000 16px/1.1
        "Trebuchet MS",
        Arial,
        sans-serif;

    cursor: pointer;

    box-shadow:
        0 4px 0 #315425;

    transition:
        translate 140ms ease,
        filter 140ms ease;
}

.rsvp-submit:hover,
.rsvp-save:hover {
    filter: brightness(1.07);
}

.rsvp-submit:active,
.rsvp-save:active {
    translate: 0 3px;
    box-shadow:
        0 1px 0 #315425;
}

.rsvp-feedback {
    margin: 11px 0 0;

    color: #6c301d;

    font-weight: 1000;
    text-align: center;
}

.rsvp-feedback:empty {
    display: none;
}

.rsvp-decision {
    display: grid;

    gap: clamp(15px, 2.5vw, 22px);

    text-align: center;

    animation:
        rsvp-view-in
        220ms ease-out;
}

.rsvp-question {
    padding:
        4px 48px 0;
}

.rsvp-question h2,
.rsvp-question p {
    margin: 0;
}

.rsvp-question h2 {
    color: #387246;

    font-size:
        clamp(27px, 4vw, 42px);

    line-height: 1;
}

.rsvp-question p {
    margin-top: 8px;

    color: #38230f;

    font-size:
        clamp(17px, 2.3vw, 24px);

    font-weight: 1000;
}

.rsvp-choices {
    display: grid;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    gap:
        clamp(7px, 1.4vw, 13px);
}

.rsvp-choice {
    min-width: 0;
    min-height: 142px;

    display: grid;
    place-items: center;
    align-content: center;

    gap: 9px;

    padding: 12px 8px;

    border: 4px solid #754619;
    border-radius: 22px;

    color: #30200e;

    font:
        1000 clamp(14px, 1.8vw, 19px)/1
        "Trebuchet MS",
        Arial,
        sans-serif;

    cursor: pointer;

    box-shadow:
        0 6px 0 #754619,
        inset 0 0 0 2px
        rgb(255 255 255 / 30%);

    transition:
        translate 140ms ease,
        scale 140ms ease,
        filter 140ms ease,
        box-shadow 140ms ease;
}

.rsvp-choice--yes {
    background:
        linear-gradient(
            #d8ef8e,
            #9fc65b
        );
}

.rsvp-choice--maybe {
    background:
        linear-gradient(
            #ffe78f,
            #eabd49
        );
}

.rsvp-choice--no {
    background:
        linear-gradient(
            #f7bea0,
            #dc7959
        );
}

.rsvp-choice__icon {
    width: 58px;
    height: 58px;

    display: block;
}

.rsvp-choice__icon img {
    display: block;
    width: 100%;
    height: 100%;
}

.rsvp-choice:hover {
    translate: 0 -2px;
    filter: brightness(1.04);
}

.rsvp-choice:active {
    translate: 0 3px;

    box-shadow:
        0 2px 0 #754619;
}

.rsvp-choice.is-selected {
    scale: 1.025;

    outline:
        5px solid #fff7b8;

    outline-offset: 3px;

    box-shadow:
        0 6px 0 #754619,
        0 0 0 8px
        rgb(62 109 54 / 64%);
}

.rsvp-bubble {
    position: relative;

    justify-self: center;

    width: min(100%, 590px);

    padding:
        15px 19px 17px;

    border: 3px solid #754619;
    border-radius:
        22px 22px 22px 7px;

    background:
        linear-gradient(
            145deg,
            #fff9dc,
            #f3dc92
        );

    color: #37240f;

    font-size:
        clamp(14px, 1.7vw, 17px);

    font-weight: 850;

    line-height: 1.4;

    text-align: left;

    box-shadow:
        0 5px 0
        rgb(117 70 25 / 28%);
}

.rsvp-bubble::after {
    content: "";

    position: absolute;

    left: 28px;
    bottom: -16px;

    width: 24px;
    height: 24px;

    border-right: 3px solid #754619;
    border-bottom: 3px solid #754619;

    background: #f3dc92;

    transform:
        rotate(45deg)
        skew(-8deg, -8deg);
}

.rsvp-actions {
    display: flex;
    justify-content: center;

    padding-top: 5px;
}

.rsvp-save {
    min-width: 190px;
}

.rsvp-save:disabled {
    opacity: .45;
    cursor: not-allowed;

    translate: none;
}

.rsvp-result {
    min-height: 22px;

    margin: 0;

    color: #2f693c;

    font-weight: 1000;

    text-align: center;
}

.rsvp-result:not(:empty) {
    justify-self: center;

    padding: 9px 15px;

    border: 2px solid #754619;
    border-radius: 999px;

    background: #fff7d1;

    box-shadow:
        0 3px 0
        rgb(117 70 25 / 30%);
}

.rsvp-honeypot {
    position: absolute;

    left: -10000px;

    width: 1px;
    height: 1px;

    overflow: hidden;
}

.rsvp-confetti {
    position: fixed;
    z-index: 9999;

    width: 10px;
    height: 16px;

    pointer-events: none;

    animation:
        rsvp-confetti-fall
        2.4s linear forwards;
}

.rsvp-close:focus-visible,
.rsvp-code:focus-visible,
.rsvp-submit:focus-visible,
.rsvp-save:focus-visible,
.rsvp-choice:focus-visible {
    outline:
        4px solid #fff1a0;

    outline-offset: 3px;
}

body.rsvp-is-open {
    overflow: hidden;
}

@keyframes rsvp-view-in {
    from {
        opacity: 0;
        transform: translateY(10px) scale(.985);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes rsvp-close-attention {
    0% {
        opacity: 1;
        scale: .9;
    }

    100% {
        opacity: 0;
        scale: 1.35;
    }
}

@keyframes rsvp-confetti-fall {
    from {
        translate: 0 -20px;
        rotate: 0deg;
    }

    to {
        translate:
            var(--confetti-x)
            110dvh;

        rotate: 720deg;
    }
}

@media (max-width: 620px) {
    .rsvp-modal {
        place-items: start center;

        padding: 8px;
    }

    .rsvp-shell {
        margin:
            max(
                7px,
                env(safe-area-inset-top)
            )
            auto
            12px;
    }

    .rsvp-card {
        padding:
            54px 13px 20px;

        border-radius: 23px;
    }

    .rsvp-card::before {
        inset: 6px;
        border-radius: 17px;
    }

    .rsvp-close {
        top: 8px;
        right: 9px;

        width: 42px;
        height: 42px;
    }

    .rsvp-intro {
        grid-template-columns: 1fr;

        gap: 15px;
    }

    .rsvp-event-info {
        grid-template-columns:
            repeat(3, minmax(0, 1fr));

        gap: 5px;
    }

    .rsvp-event-info article {
        grid-template-columns: 1fr;

        justify-items: center;

        gap: 3px;

        padding: 5px 2px;

        text-align: center;

        border:
            2px dashed
            rgb(100 61 26 / 20%);

        border-radius: 14px;
    }

    .rsvp-event-icon {
        width: 38px;
        height: 38px;
    }

    .rsvp-event-info h2 {
        font-size: 9px;
    }

    .rsvp-event-info p {
        font-size: 10px;
        line-height: 1.22;
    }

    .rsvp-code-form {
        padding: 18px 13px;

        border-radius: 18px;
    }

    .rsvp-code-row {
        grid-template-columns: 1fr;
    }

    .rsvp-question {
        padding:
            0 35px 0 4px;
    }

    .rsvp-question h2 {
        font-size:
            clamp(24px, 8vw, 34px);
    }

    .rsvp-question p {
        font-size:
            clamp(15px, 4.5vw, 19px);
    }

    .rsvp-choices {
        gap: 6px;
    }

    .rsvp-choice {
        min-height: 105px;

        padding: 8px 3px;

        border-width: 3px;
        border-radius: 16px;

        font-size:
            clamp(10px, 3.4vw, 13px);
    }

    .rsvp-choice__icon {
        width: 44px;
        height: 44px;
    }

    .rsvp-bubble {
        padding:
            12px 14px 14px;

        border-radius:
            18px 18px 18px 6px;

        font-size: 13px;
    }
}

@media (max-width: 370px) {
    .rsvp-event-icon {
        width: 34px;
        height: 34px;
    }

    .rsvp-event-info p {
        font-size: 9px;
    }

    .rsvp-choice {
        min-height: 96px;
    }

    .rsvp-choice__icon {
        width: 39px;
        height: 39px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .rsvp-decision,
    .rsvp-close.is-attention::after,
    .rsvp-confetti {
        animation: none;
    }

    .rsvp-choice,
    .rsvp-close,
    .rsvp-submit,
    .rsvp-save {
        transition: none;
    }
}

/* PJD MOD03 RSVP FLOW
   Tylko lokalny layout treści i rozdzielenie komunikatu wyboru
   od finalnego dymku po zapisie.
*/

.rsvp-event-info {
    grid-template-columns: 1fr;
    gap: 7px;
}

.rsvp-event-info article {
    grid-template-columns: 44px minmax(0, 1fr);
    justify-items: stretch;
    align-items: center;
    gap: 11px;
    padding: 8px 3px;
    text-align: left;
    border: 0;
    border-bottom: 2px dashed rgb(100 61 26 / 22%);
    border-radius: 0;
}

.rsvp-event-info article:last-child {
    border-bottom: 0;
}

.rsvp-event-info p {
    margin: 0;
    color: #382410;
    font-size: 14px;
    font-weight: 800;
    line-height: 1.32;
}

.rsvp-event-info p strong {
    color: #367148;
    font-weight: 1000;
    letter-spacing: .03em;
}

.rsvp-event-icon {
    width: 40px;
    height: 40px;
}

.rsvp-choices {
    grid-template-columns:
        repeat(3, minmax(0, 150px));

    justify-content: center;
}

.rsvp-choice {
    min-height: 0;
    aspect-ratio: 1 / 1;
}

.rsvp-bubble {
    width: min(100%, 520px);

    padding: 11px 15px;

    border: 2px solid #8b6828;
    border-radius: 13px;

    background:
        linear-gradient(
            145deg,
            #fff4b9,
            #ead174
        );

    color: #44300f;

    font-size: clamp(13px, 1.55vw, 15px);
    font-weight: 850;

    text-align: center;

    box-shadow:
        0 3px 0 rgb(117 70 25 / 24%);
}

.rsvp-bubble::after {
    display: none;
}

.rsvp-bubble.is-final {
    width: min(100%, 570px);

    padding:
        17px 21px 19px;

    border: 4px solid #68431d;
    border-radius:
        25px 25px 25px 8px;

    background:
        radial-gradient(
            circle at 92% 15%,
            #fff8c9 0 10px,
            transparent 11px
        ),
        linear-gradient(
            145deg,
            #fffbe2,
            #f3dda0
        );

    color: #35230f;

    font-size: clamp(16px, 2vw, 20px);
    font-weight: 1000;
    line-height: 1.35;

    text-align: left;

    box-shadow:
        0 6px 0 rgb(104 67 29 / 32%),
        0 11px 22px rgb(0 0 0 / 14%),
        inset 0 0 0 2px rgb(255 255 255 / 55%);
}

.rsvp-bubble.is-final::after {
    content: "";

    display: block;

    position: absolute;
    left: 30px;
    bottom: -18px;

    width: 27px;
    height: 27px;

    border-right: 4px solid #68431d;
    border-bottom: 4px solid #68431d;

    background: #f3dda0;

    transform:
        rotate(45deg)
        skew(-7deg, -7deg);
}

.rsvp-result:empty {
    display: none;
}

@media (max-width: 620px) {
    .rsvp-event-info {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .rsvp-event-info article {
        grid-template-columns:
            35px minmax(0, 1fr);

        gap: 8px;

        padding: 7px 2px;

        text-align: left;
    }

    .rsvp-event-icon {
        width: 32px;
        height: 32px;
    }

    .rsvp-event-info p {
        font-size: 12px;
        line-height: 1.28;
    }

    .rsvp-choices {
        grid-template-columns:
            repeat(3, minmax(0, 1fr));
    }

    .rsvp-choice {
        aspect-ratio: 1 / 1;
    }

    .rsvp-bubble.is-final {
        padding:
            14px 16px 16px;

        font-size: 14px;
    }
}

/* PJD MOD04 RSVP FINAL MESSAGE */

.rsvp-bubble.is-final {
    display: grid;
    gap: 12px;

    overflow: visible;
}

.rsvp-final__message {
    display: block;
}

.rsvp-final__close-note {
    position: relative;

    display: block;

    margin-top: 3px;
    padding:
        10px 48px 2px 0;

    border-top:
        2px dashed
        rgb(104 67 29 / 30%);

    color: #51723c;

    font-size:
        clamp(12px, 1.5vw, 14px);

    font-weight: 900;
    line-height: 1.3;
}

/* przerywany trzon strzalki */
.rsvp-final__close-note::before {
    content: "";

    position: absolute;

    right: 20px;
    top: -28px;

    width: 18px;
    height: 34px;

    border-right:
        3px dashed #5c833f;

    border-radius: 50%;

    transform:
        rotate(22deg);

    pointer-events: none;
}

/* grot skierowany do gory */
.rsvp-final__close-note::after {
    content: "";

    position: absolute;

    right: 14px;
    top: -31px;

    width: 11px;
    height: 11px;

    border-top:
        4px solid #5c833f;

    border-right:
        4px solid #5c833f;

    transform:
        rotate(-23deg);

    pointer-events: none;
}

@media (max-width: 620px) {
    .rsvp-final__close-note {
        padding-right: 38px;

        font-size: 12px;
    }

    .rsvp-final__close-note::before {
        right: 14px;
    }

    .rsvp-final__close-note::after {
        right: 8px;
    }
}

/* PJD MOD18 RSVP COMPACT FINAL FOCUS */

/* -------------------------------------------------
   INTRO
   ------------------------------------------------- */

.rsvp-intro {
    grid-template-columns:
        minmax(220px, .9fr)
        minmax(300px, 1.1fr);

    grid-template-areas:
        "title title"
        "event form";

    align-items: start;

    column-gap:
        clamp(16px, 3vw, 28px);

    row-gap: 10px;
}

.rsvp-intro-title {
    grid-area: title;

    margin: 0;

    padding:
        0
        52px
        3px
        0;

    color: #397047;

    font-size:
        clamp(30px, 4vw, 44px);

    font-weight: 1000;
    line-height: 1;

    text-align: left;
}


/* -------------------------------------------------
   GDZIE / KIEDY / UWAGA
   ------------------------------------------------- */

.rsvp-event-info {
    grid-area: event;

    gap: 2px;

    align-content: start;
}

.rsvp-event-info article {
    grid-template-columns:
        36px
        minmax(0, 1fr);

    gap: 8px;

    padding:
        4px
        2px;
}

.rsvp-event-icon {
    width: 34px;
    height: 34px;
}

.rsvp-event-info p {
    font-size: 13px;
    line-height: 1.24;
}


/* -------------------------------------------------
   FORMULARZ KODU
   ------------------------------------------------- */

.rsvp-code-form {
    grid-area: form;

    gap: 10px;

    padding:
        clamp(15px, 2.2vw, 21px);

    align-self: start;
}

.rsvp-label {
    gap: 4px;
}

.rsvp-label strong {
    color: #397047;

    font-size:
        clamp(20px, 2.4vw, 28px);

    line-height: 1.05;
}

.rsvp-label small {
    color: #6b5432;

    font-size: 11px;
    font-weight: 800;

    letter-spacing: .01em;

    line-height: 1.25;

    text-transform: none;
}


/* -------------------------------------------------
   FINAL FOCUS
   Po zapisie ostre: dymek + strzalka + X.
   ------------------------------------------------- */

.rsvp-question,
.rsvp-choices,
.rsvp-actions,
.rsvp-result {
    transition:
        filter 180ms ease,
        opacity 180ms ease;
}

.rsvp-modal.is-final-focus .rsvp-question,
.rsvp-modal.is-final-focus .rsvp-choices,
.rsvp-modal.is-final-focus .rsvp-actions,
.rsvp-modal.is-final-focus .rsvp-result {
    filter:
        blur(4px);

    opacity: .22;

    pointer-events: none;
    user-select: none;
}

.rsvp-modal.is-final-focus .rsvp-bubble.is-final {
    position: relative;
    z-index: 9;

    filter: none;

    opacity: 1;
}

.rsvp-modal.is-final-focus .rsvp-close {
    z-index: 12;

    filter: none;

    opacity: 1;
}


/* -------------------------------------------------
   MOBILE
   ------------------------------------------------- */

@media (max-width: 620px) {
    .rsvp-intro {
        grid-template-columns:
            minmax(0, 1fr);

        grid-template-areas:
            "title"
            "event"
            "form";

        gap: 8px;
    }

    .rsvp-intro-title {
        padding:
            0
            42px
            1px
            2px;

        font-size:
            clamp(26px, 8vw, 34px);
    }

    .rsvp-event-info {
        gap: 1px;
    }

    .rsvp-event-info article {
        grid-template-columns:
            30px
            minmax(0, 1fr);

        gap: 7px;

        padding:
            3px
            2px;
    }

    .rsvp-event-icon {
        width: 29px;
        height: 29px;
    }

    .rsvp-event-info p {
        font-size: 11px;
        line-height: 1.22;
    }

    .rsvp-code-form {
        gap: 9px;

        padding:
            13px
            12px;
    }

    .rsvp-label strong {
        font-size:
            clamp(19px, 6vw, 24px);
    }

    .rsvp-label small {
        font-size: 10px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .rsvp-question,
    .rsvp-choices,
    .rsvp-actions,
    .rsvp-result {
        transition: none;
    }
}

/* PJD MOD21 RSVP FINAL CONFIRMATION */


/* =================================================
   FINALNA PLANSZA
   ================================================= */

.rsvp-decision {
    position: relative;
}

.rsvp-modal.is-final-focus .rsvp-card {
    overflow: visible;
}

.rsvp-modal.is-final-focus .rsvp-decision {
    min-height: 410px;
}


/* tlo poprzedniej decyzji */

.rsvp-modal.is-final-focus .rsvp-question,
.rsvp-modal.is-final-focus .rsvp-choices,
.rsvp-modal.is-final-focus .rsvp-actions,
.rsvp-modal.is-final-focus .rsvp-result {
    filter:
        blur(6px);

    opacity: .12;

    pointer-events: none;
    user-select: none;
}


/* =================================================
   OSTRA WARSTWA FINALNA
   ================================================= */

.rsvp-final-panel {
    position: absolute;
    inset: 0;

    z-index: 10;

    display: grid;

    align-content: center;
    justify-items: center;

    gap: 15px;

    padding:
        34px
        40px
        24px;

    pointer-events: none;
}


/* =================================================
   WYBRANA ODPOWIEDZ
   ================================================= */

.rsvp-final-choice {
    min-width: 190px;

    padding:
        11px
        26px;

    border:
        4px solid
        #754619;

    border-radius: 999px;

    color: #30200e;

    font:
        1000
        clamp(26px, 4vw, 40px) /
        1
        "Trebuchet MS",
        Arial,
        sans-serif;

    text-align: center;

    box-shadow:
        0 6px 0 #754619,
        0 10px 18px rgb(0 0 0 / 22%),
        inset 0 0 0 2px rgb(255 255 255 / 32%);
}

.rsvp-final-choice--yes {
    background:
        linear-gradient(
            #d8ef8e,
            #9fc65b
        );
}

.rsvp-final-choice--maybe {
    background:
        linear-gradient(
            #ffe78f,
            #eabd49
        );
}

.rsvp-final-choice--no {
    background:
        linear-gradient(
            #f7bea0,
            #dc7959
        );
}


/* =================================================
   DYMEK
   ================================================= */

.rsvp-final-panel__bubble {
    width:
        min(
            100%,
            570px
        );

    margin: 0;

    text-align: center;

    pointer-events: none;
}

.rsvp-final-panel__bubble::after {
    left: 50%;

    margin-left: -14px;
}


/* =================================================
   MINI X + INSTRUKCJA
   ================================================= */

.rsvp-final-close-note {
    position: relative;

    display: inline-flex;

    align-items: center;
    justify-content: center;

    gap: 8px;

    padding:
        8px
        14px;

    border:
        2px dashed
        #6a823d;

    border-radius: 999px;

    background:
        rgb(255 249 213 / 90%);

    color: #446332;

    font-size:
        clamp(13px, 1.6vw, 16px);

    font-weight: 1000;

    line-height: 1;

    box-shadow:
        0 3px 0
        rgb(104 67 29 / 20%);
}

.rsvp-final-close-note img {
    width: 30px;
    height: 30px;

    display: block;

    object-fit: contain;

    filter:
        drop-shadow(
            0 2px 1px
            rgb(0 0 0 / 22%)
        );
}


/* =================================================
   KROTKA STRZALKA PRZY PRAWDZIWYM X
   ================================================= */

.rsvp-final-arrow {
    position: absolute;

    z-index: 11;

    top: 48px;
    right: 42px;

    width: 92px;
    height: 92px;

    overflow: visible;

    pointer-events: none;
}

.rsvp-final-arrow__mark {
    fill: none;

    stroke: #5d873d;

    stroke-width: 8;

    stroke-linecap: round;
    stroke-linejoin: round;

    filter:
        drop-shadow(
            0 3px 0
            rgb(255 255 210 / 75%)
        );
}


/* =================================================
   PRAWDZIWY X — MIGAJACA DIODA / OBRECZ
   ================================================= */

.rsvp-modal.is-final-focus
.rsvp-close.is-attention {
    background:
        #fff5c5;

    box-shadow:
        0 0 0 3px #477638,
        0 0 18px rgb(231 255 96 / 90%),
        0 0 32px rgb(146 223 70 / 58%);

    animation:
        rsvp-final-close-led
        680ms
        ease-in-out
        infinite
        alternate;
}

.rsvp-modal.is-final-focus
.rsvp-close.is-attention::before {
    content: "";

    position: absolute;

    inset: -12px;

    border:
        4px solid
        #fff065;

    border-radius: 50%;

    box-shadow:
        0 0 13px
        rgb(255 239 79 / 92%);

    pointer-events: none;

    animation:
        rsvp-final-close-ring
        1100ms
        ease-out
        infinite;
}

.rsvp-modal.is-final-focus
.rsvp-close.is-attention::after {
    inset: -6px;

    border:
        4px solid
        #61b54b;

    box-shadow:
        0 0 10px
        rgb(107 203 76 / 80%);

    animation:
        rsvp-close-attention
        780ms
        ease-out
        infinite;
}


@keyframes rsvp-final-close-led {
    from {
        filter:
            brightness(1)
            saturate(1);
    }

    to {
        filter:
            brightness(1.22)
            saturate(1.25);
    }
}


@keyframes rsvp-final-close-ring {
    0% {
        opacity: 1;

        scale: .82;
    }

    100% {
        opacity: 0;

        scale: 1.28;
    }
}


/* =================================================
   MOBILE
   ================================================= */

@media (max-width: 620px) {
    .rsvp-modal.is-final-focus .rsvp-decision {
        min-height: 350px;
    }

    .rsvp-final-panel {
        gap: 12px;

        padding:
            30px
            8px
            18px;
    }

    .rsvp-final-choice {
        min-width: 150px;

        padding:
            9px
            18px;

        border-width: 3px;

        font-size:
            clamp(23px, 8vw, 30px);
    }

    .rsvp-final-panel__bubble {
        width:
            min(
                100%,
                330px
            );

        padding:
            14px
            15px
            16px;

        font-size: 15px;
    }

    .rsvp-final-close-note {
        gap: 6px;

        padding:
            7px
            10px;

        font-size: 12px;
    }

    .rsvp-final-close-note img {
        width: 25px;
        height: 25px;
    }

    .rsvp-final-arrow {
        top: 52px;
        right: 34px;

        width: 76px;
        height: 76px;
    }
}


/* =================================================
   REDUCED MOTION
   ================================================= */

@media (prefers-reduced-motion: reduce) {
    .rsvp-modal.is-final-focus
    .rsvp-close.is-attention,

    .rsvp-modal.is-final-focus
    .rsvp-close.is-attention::before,

    .rsvp-modal.is-final-focus
    .rsvp-close.is-attention::after {
        animation: none;
    }
}
