@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Lato:wght@300;400;700&display=swap');

:root {
    --cor-primaria: #2c2c2c;
    --cor-secundaria: #8c8c8c;
    --cor-fundo: #faf9f7;
    --cor-hover: #444;
}

body { 
    margin: 0; 
    font-family: 'Lato', sans-serif; 
    background-color: var(--cor-fundo); 
    color: #333; 
}

h1, h2, h3, h4 { 
    font-family: 'Playfair Display', serif; 
    font-weight: 400; 
    color: var(--cor-primaria); 
}

.hero { 
    text-align: center; 
    padding: 60px 20px; 
    background-color: #ffffff; 
    border-bottom: 1px solid #eaeaea; 
}

.hero h1 { font-size: 3rem; margin: 0; }
.hero .data { font-size: 1.1rem; letter-spacing: 2px; text-transform: uppercase; color: #666; margin-top: 10px; }

.container { max-width: 900px; margin: 40px auto; padding: 0 20px; }

.card { 
    background: #ffffff; 
    padding: 40px; 
    border-radius: 12px; 
    box-shadow: 0 4px 20px rgba(0,0,0,0.04); 
    text-align: center; 
}

input[type="text"], select, input[type="number"] { 
    width: 100%; 
    padding: 12px; 
    margin: 10px 0; 
    border: 1px solid #ddd; 
    border-radius: 6px; 
    box-sizing: border-box; 
    font-family: 'Lato', sans-serif;
    outline: none;
    transition: 0.3s;
}
input:focus { border-color: var(--cor-primaria); }

button { 
    background-color: var(--cor-primaria); 
    color: #fff; 
    border: none; 
    padding: 12px 24px; 
    font-size: 1rem; 
    border-radius: 6px; 
    cursor: pointer; 
    transition: 0.3s; 
    font-family: 'Lato', sans-serif;
    font-weight: 700;
}
button:hover:not(:disabled) { background-color: var(--cor-hover); }
button:disabled { background-color: #ccc; cursor: not-allowed; }
.btn-primary { width: 100%; margin-top: 10px; }
.alerta { color: #d9534f; font-size: 0.9rem; margin-top: 10px; }

/* Grid de Presentes Moderno */
.header-presentes { text-align: center; margin-bottom: 30px; }
.grid-presentes { 
    display: grid; 
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); 
    gap: 25px; 
    margin-bottom: 40px; 
}

.presente-card { 
    background: #fff; 
    border: 1px solid #eaeaea; 
    border-radius: 12px; 
    padding: 15px; 
    text-align: center; 
    transition: 0.3s; 
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}
.presente-card:hover { 
    transform: translateY(-5px); 
    box-shadow: 0 8px 25px rgba(0,0,0,0.06); 
}

.presente-img {
    width: 100%;
    height: 180px;
    object-fit: cover;
    border-radius: 8px;
    margin-bottom: 15px;
    background-color: #f4f4f4;
}

.presente-card h4 { margin: 5px 0 10px 0; font-size: 1.3rem; }
.presente-card p { color: #666; font-size: 0.9rem; margin-bottom: 15px; }

/* Controle de Quantidade */
.quantidade-controle {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-bottom: 15px;
}
.btn-qtd {
    background: #eee;
    color: #333;
    padding: 0;
    width: 35px;
    height: 35px;
    border-radius: 50%;
    font-size: 20px;
}
.btn-qtd:hover { background: #ddd; }
.quantidade-controle input {
    width: 60px;
    height: 35px;
    text-align: center;
    font-size: 16px;
    margin: 0;
    padding: 5px;
}
.quantidade-controle input::-webkit-outer-spin-button,
.quantidade-controle input::-webkit-inner-spin-button {
    -webkit-appearance: none; margin: 0;
}

.btn-add-sacola { width: 100%; }

/* Sacola */
.sacola-resumo { 
    background: #fff; 
    padding: 25px; 
    border-radius: 12px; 
    border: 1px solid #eaeaea; 
    max-width: 450px; 
    margin: 0 auto; 
    box-shadow: 0 4px 15px rgba(0,0,0,0.03);
}
.sacola-resumo ul { list-style: none; padding: 0; margin: 0 0 15px 0; }
.sacola-resumo li { display: flex; justify-content: space-between; border-bottom: 1px dashed #ccc; padding: 10px 0; font-size: 0.95rem; }
.sacola-resumo .total { font-size: 1.3rem; text-align: right; margin-bottom: 15px; }

@media (max-width: 768px) {
    .hero h1 { font-size: 2.2rem; }
    .card { padding: 20px; }
}

/* =========================================
   CORREÇÃO DO CONTROLE DE QUANTIDADE (+ E -)
   ========================================= */
.presente-card .quantidade-controle {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 15px !important;
    margin: 15px 0 !important;
    width: 100% !important;
}

.presente-card button.btn-qtd {
    background-color: #f0f0f0 !important;
    color: #333 !important;
    padding: 0 !important;
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    border-radius: 50% !important;
    font-size: 22px !important;
    font-weight: bold !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: 1px solid #ddd !important;
}

.presente-card button.btn-qtd:hover {
    background-color: #e0e0e0 !important;
}

.presente-card .quantidade-controle input[type="number"] {
    width: 70px !important;
    min-width: 70px !important;
    height: 40px !important;
    text-align: center !important;
    font-size: 18px !important;
    font-weight: bold !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 1px solid #ccc !important;
    border-radius: 6px !important;
    -moz-appearance: textfield !important; /* Esconde setas no Firefox */
}

/* Esconde setinhas no Chrome/Edge/Safari */
.presente-card .quantidade-controle input[type="number"]::-webkit-outer-spin-button,
.presente-card .quantidade-controle input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none !important;
    margin: 0 !important;
}

/* =========================================
   FILTRO DE CATEGORIAS
   ========================================= */
.filtro-categorias {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
    margin-bottom: 30px;
}
.btn-filtro {
    background-color: transparent;
    color: var(--cor-primaria);
    border: 1px solid #ccc;
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 14px;
    font-weight: bold;
    transition: 0.3s;
}
.btn-filtro:hover {
    border-color: var(--cor-primaria);
}
.btn-filtro.active {
    background-color: var(--cor-primaria);
    color: white;
    border-color: var(--cor-primaria);
}

/* =========================================
   MODAL DE AVISO (DISCLAIMER)
   ========================================= */
.modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(4px);
    display: none; /* Escondido por padrão */
    justify-content: center;
    align-items: center;
    z-index: 9999;
    animation: fadeInModal 0.3s ease;
}

.modal-box {
    background: #fff;
    padding: 35px 30px;
    border-radius: 16px;
    max-width: 450px;
    width: 90%;
    text-align: center;
    box-shadow: 0 10px 40px rgba(0,0,0,0.2);
    animation: slideUpModal 0.4s ease;
}

.modal-icon {
    color: var(--cor-secundaria);
    margin-bottom: 15px;
}

.modal-box h3 {
    margin-top: 0;
    margin-bottom: 15px;
    font-size: 1.4rem;
    color: var(--cor-primaria);
}

.modal-box p {
    font-size: 0.95rem;
    color: #555;
    margin-bottom: 15px;
    line-height: 1.6;
}

.modal-box strong {
    color: var(--cor-primaria);
}

.btn-ciente {
    background-color: var(--cor-primaria);
    color: #fff;
    border: none;
    padding: 14px 30px;
    font-size: 1rem;
    border-radius: 8px;
    cursor: pointer;
    font-weight: bold;
    width: 100%;
    margin-top: 15px;
    transition: 0.3s;
}

.btn-ciente:hover {
    background-color: var(--cor-hover);
}

@keyframes fadeInModal {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes slideUpModal {
    from { transform: translateY(30px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}
/* =========================================================
   IDENTIDADE DO NOIVADO + EXPERIÊNCIA INTERATIVA DO CONVITE
   ========================================================= */
:root {
    --navy: #10283b;
    --navy-deep: #0a1f2f;
    --forest: #214535;
    --forest-soft: #315b49;
    --ivory: #f8f3e8;
    --ivory-deep: #eee4d3;
    --gold: #a98a4f;
    --gold-soft: #c9b17e;
    --ink: #17313a;
    --muted-green: #68786f;
    --shadow-navy: rgba(5, 18, 28, .34);
}

html { scroll-behavior: smooth; }
body.invite-locked { overflow: hidden; }

/* Site principal alinhado à nova identidade */
body {
    background: #f7f3ea;
    color: var(--ink);
}

h1, h2, h3, h4 { color: var(--navy); }

.hero {
    position: relative;
    overflow: hidden;
    padding: 78px 20px 68px;
    background:
        radial-gradient(circle at 12% 15%, rgba(169,138,79,.09), transparent 24%),
        radial-gradient(circle at 88% 80%, rgba(33,69,53,.09), transparent 26%),
        var(--ivory);
    border-bottom: 1px solid rgba(169,138,79,.24);
}
.hero::before,
.hero::after {
    content: "";
    position: absolute;
    width: 180px;
    height: 180px;
    border: 1px solid rgba(33,69,53,.14);
    border-radius: 55% 45% 55% 45%;
    transform: rotate(24deg);
}
.hero::before { left: -105px; top: -65px; }
.hero::after { right: -115px; bottom: -90px; }
.hero-eyebrow {
    margin: 0 0 14px;
    color: var(--forest);
    letter-spacing: .28em;
    text-transform: uppercase;
    font-size: .72rem;
    font-weight: 700;
}
.hero h1 {
    color: var(--navy);
    font-size: clamp(2.8rem, 8vw, 4.5rem);
    line-height: .95;
    letter-spacing: -.035em;
}
.hero h1 span { color: var(--gold); font-style: italic; font-weight: 400; }
.hero .data { color: var(--forest); font-weight: 700; font-size: .9rem; letter-spacing: .14em; }
.hero .data span { color: var(--gold); padding: 0 .4rem; }
.hero .mensagem { max-width: 540px; margin: 22px auto 12px; color: #5f6e68; }
.hero-location {
    display: inline-block;
    color: var(--navy);
    font-size: .88rem;
    text-decoration: none;
    border-bottom: 1px solid rgba(169,138,79,.55);
    padding-bottom: 3px;
}
.hero-location:hover { color: var(--forest); }
.reopen-invite {
    position: absolute;
    right: 22px;
    top: 20px;
    width: 42px;
    height: 42px;
    padding: 0;
    border-radius: 50%;
    background: var(--forest);
    color: var(--ivory);
    border: 1px solid var(--gold);
    font-family: 'Playfair Display', serif;
    font-size: .82rem;
    z-index: 2;
}

.card,
.presente-card,
.sacola-resumo {
    border-color: rgba(169,138,79,.20);
    box-shadow: 0 14px 42px rgba(16,40,59,.07);
}
.btn-primary,
.btn-add-sacola,
.btn-ciente {
    background: var(--forest);
}
.btn-primary:hover,
.btn-add-sacola:hover,
.btn-ciente:hover { background: #17382b !important; }

/* Tela do convite */
.invite-gate {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: grid;
    place-items: center;
    min-height: 100dvh;
    padding: 28px 20px;
    box-sizing: border-box;
    overflow: auto;
    background:
        radial-gradient(circle at 50% -15%, rgba(76,111,125,.24), transparent 42%),
        linear-gradient(145deg, #0a1f2f 0%, #10283b 52%, #0b2230 100%);
    color: var(--ivory);
    transition: opacity .7s ease, visibility .7s ease;
}
.invite-gate::after {
    content: "";
    position: fixed;
    inset: 18px;
    pointer-events: none;
    border: 1px solid rgba(169,138,79,.48);
    border-radius: 16px;
}
.invite-gate.is-hidden { opacity: 0; visibility: hidden; pointer-events: none; }
.invite-skip {
    position: fixed;
    top: 29px;
    right: 34px;
    z-index: 5;
    padding: 8px 12px;
    background: transparent;
    color: rgba(248,243,232,.72);
    border: 0;
    font-size: .74rem;
    font-weight: 400;
    text-decoration: underline;
    text-underline-offset: 4px;
}
.invite-skip:hover { background: transparent !important; color: #fff; }
.invite-stage {
    display: none;
    width: min(94vw, 520px);
    text-align: center;
    animation: inviteFade .65s ease both;
}
.invite-stage.is-active { display: block; }
.invite-kicker {
    margin-bottom: 24px;
    color: var(--gold-soft);
    letter-spacing: .28em;
    text-transform: uppercase;
    font-size: .67rem;
    font-weight: 700;
}

/* Envelope fechado */
.envelope-wrap { perspective: 1200px; margin: 0 auto 26px; }
.envelope {
    position: relative;
    width: min(78vw, 390px);
    aspect-ratio: 1.55 / 1;
    margin: 0 auto;
    filter: drop-shadow(0 28px 35px rgba(0,0,0,.25));
}
.envelope-back,
.envelope-front-left,
.envelope-front-right,
.envelope-flap {
    position: absolute;
    inset: 0;
}
.envelope-back {
    background: linear-gradient(140deg, #17374d, #10283b 64%);
    border: 1px solid rgba(201,177,126,.23);
    border-radius: 5px;
}
.envelope-front-left {
    clip-path: polygon(0 25%, 52% 100%, 0 100%);
    background: #122f44;
    z-index: 3;
}
.envelope-front-right {
    clip-path: polygon(100% 25%, 48% 100%, 100% 100%);
    background: #0f2a3d;
    z-index: 3;
}
.envelope-flap {
    clip-path: polygon(0 0, 100% 0, 50% 62%);
    background: linear-gradient(165deg, #1b3c52, #0c2436);
    transform-origin: top center;
    z-index: 4;
    transition: transform 1s cubic-bezier(.2,.75,.22,1);
}
.wax-seal {
    position: absolute;
    left: 50%; top: 54%;
    z-index: 6;
    width: 72px; height: 72px;
    transform: translate(-50%,-50%);
    border-radius: 50%;
    background:
        radial-gradient(circle at 34% 28%, rgba(255,255,255,.13), transparent 26%),
        radial-gradient(circle at 50% 60%, #315d48, #1a3c2e 72%);
    color: var(--ivory);
    border: 1px solid var(--gold);
    box-shadow: 0 8px 18px rgba(0,0,0,.28), inset 0 0 0 6px rgba(169,138,79,.08);
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 1.05rem;
    padding: 0;
}
.wax-seal::after {
    content: "";
    position: absolute;
    inset: 8px;
    border: 1px solid rgba(201,177,126,.6);
    border-radius: 50%;
}
.wax-seal:hover { transform: translate(-50%,-50%) scale(1.06); background-color: var(--forest); }
.invite-stage-closed.is-opening .envelope-flap { transform: rotateX(178deg); z-index: 1; }
.invite-stage-closed.is-opening .wax-seal { animation: sealPop .55s ease forwards; }
.invite-monogram-text {
    font-family: 'Playfair Display', serif;
    font-size: clamp(2rem, 8vw, 3rem);
    letter-spacing: -.03em;
}
.invite-monogram-text span { color: var(--gold); font-style: italic; }
.invite-date-line { color: var(--gold-soft); letter-spacing: .24em; font-size: .8rem; }
.invite-outline-btn {
    margin-top: 8px;
    min-width: 190px;
    border: 1px solid var(--gold);
    border-radius: 999px;
    background: transparent;
    color: var(--ivory);
    letter-spacing: .1em;
    text-transform: uppercase;
    font-size: .72rem;
}
.invite-outline-btn:hover { background: rgba(169,138,79,.12) !important; }
.invite-hint { margin-top: 14px; color: rgba(248,243,232,.52); font-size: .7rem; }

/* Envelope aberto */
.open-envelope-scene {
    position: relative;
    width: min(86vw, 420px);
    height: min(112vw, 535px);
    max-height: 535px;
    margin: 0 auto 18px;
    perspective: 1200px;
}
.open-envelope-flap {
    position: absolute;
    left: 4%; right: 4%; bottom: 15%;
    height: 38%;
    background: #0c2334;
    clip-path: polygon(0 100%, 50% 0, 100% 100%);
    opacity: .9;
}
.emerging-card {
    position: absolute;
    left: 12%; right: 12%; top: 4%; bottom: 16%;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 24px;
    color: var(--navy);
    background:
        radial-gradient(circle at 15% 15%, rgba(33,69,53,.06), transparent 24%),
        var(--ivory);
    border: 1px solid var(--gold-soft);
    box-shadow: 0 24px 44px rgba(0,0,0,.32);
    transform: translateY(52px) rotate(-.7deg);
    animation: cardRise 1s .12s cubic-bezier(.18,.78,.25,1) forwards;
}
.emerging-card::before {
    content: "";
    position: absolute;
    inset: 10px;
    border: 1px solid rgba(169,138,79,.36);
    pointer-events: none;
}
.mini-monogram { color: var(--gold); font-family: 'Playfair Display',serif; font-style: italic; font-size: 1.4rem; }
.emerging-card h2 { margin: 22px 0 8px; font-size: clamp(2rem,8vw,3rem); line-height: 1; }
.emerging-card h2 em { color: var(--gold); font-weight: 400; }
.mini-divider { width: 62px; height: 1px; margin: 14px auto; background: var(--gold); }
.emerging-card p { margin: 5px 0; color: var(--forest); letter-spacing: .08em; font-size: .78rem; text-transform: uppercase; }
.emerging-card .mini-place { color: var(--muted-green); text-transform: none; letter-spacing: .02em; }
.open-envelope-pocket {
    position: absolute;
    left: 0; right: 0; bottom: 0; height: 35%;
    z-index: 3;
    background: linear-gradient(150deg,#17374d,#0e293b);
    clip-path: polygon(0 18%, 50% 65%, 100% 18%, 100% 100%, 0 100%);
    filter: drop-shadow(0 -5px 10px rgba(0,0,0,.12));
}

/* Convite completo */
.invite-stage-card { width: min(94vw, 610px); }
.full-invite-card {
    position: relative;
    overflow: hidden;
    width: 100%;
    box-sizing: border-box;
    margin: auto;
    padding: clamp(34px,6vw,56px) clamp(24px,7vw,58px) 28px;
    background:
        radial-gradient(circle at 8% 8%, rgba(33,69,53,.075), transparent 25%),
        radial-gradient(circle at 94% 94%, rgba(169,138,79,.07), transparent 24%),
        var(--ivory);
    border: 1px solid var(--gold-soft);
    color: var(--navy);
    box-shadow: 0 28px 55px rgba(0,0,0,.27);
}
.full-invite-card::before {
    content:"";
    position:absolute;
    inset:10px;
    border:1px solid rgba(169,138,79,.34);
    pointer-events:none;
}
.botanical {
    position: absolute;
    width: 150px; height: 150px;
    opacity: .18;
    border: 1px solid var(--forest);
    border-radius: 65% 35% 70% 30%;
}
.botanical::before,
.botanical::after {
    content:""; position:absolute; border:1px solid var(--forest); border-radius:60% 40%;
}
.botanical::before { width:78px;height:35px;left:28px;top:38px;transform:rotate(35deg); }
.botanical::after { width:62px;height:28px;left:58px;top:84px;transform:rotate(-28deg); }
.botanical-top { left:-80px; top:-65px; transform:rotate(22deg); }
.botanical-bottom { right:-80px; bottom:-70px; transform:rotate(205deg); }
.gs-mark { color: var(--gold); font-family:'Playfair Display',serif; font-style:italic; font-size:1.1rem; }
.full-invite-intro { max-width: 360px; margin: 13px auto 28px; color: var(--forest); font-family:'Playfair Display',serif; font-style:italic; }
.full-invite-card h1 { margin:0; color:var(--navy); font-size:clamp(2.7rem,10vw,4.7rem); line-height:.98; letter-spacing:-.05em; }
.full-invite-card h1 span { color:var(--gold); font-style:italic; font-weight:400; }
.engagement-label { margin: 13px 0 22px; color:var(--forest); font-family:'Playfair Display',serif; font-style:italic; letter-spacing:.08em; }
.invite-rule { width:120px; height:1px; margin:0 auto 22px; background:var(--gold); }
.full-date { display:flex; justify-content:center; align-items:center; gap:14px; margin:0; color:var(--forest); }
.full-date strong { font-family:'Playfair Display',serif; font-size:1.3rem; }
.full-date span { color:var(--gold); font-size:.72rem; letter-spacing:.22em; }
.full-time { margin:10px 0 24px; color:var(--navy); font-family:'Playfair Display',serif; font-style:italic; }
.full-place { display:flex; flex-direction:column; gap:4px; }
.full-place strong { font-family:'Playfair Display',serif; font-size:1.08rem; }
.full-place span { color:var(--muted-green); font-size:.78rem; letter-spacing:.1em; text-transform:uppercase; }
.full-message { margin:24px auto; color:var(--forest); font-family:'Playfair Display',serif; font-style:italic; }
.invite-actions { display:grid; grid-template-columns:1.4fr 1fr; gap:10px; max-width:390px; margin:0 auto; }
.invite-primary-btn,
.invite-secondary-btn {
    box-sizing:border-box;
    min-height:44px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:999px;
    font-size:.74rem;
    font-weight:700;
    letter-spacing:.04em;
    text-decoration:none;
}
.invite-primary-btn { background:var(--forest); color:var(--ivory); border:1px solid var(--forest); }
.invite-primary-btn:hover { background:#17372a !important; }
.invite-secondary-btn { color:var(--forest); border:1px solid var(--gold); }
.invite-secondary-btn:hover { background:rgba(169,138,79,.08); }
.invite-site { margin:18px 0 0; color:var(--muted-green); font-size:.68rem; letter-spacing:.08em; }

@keyframes inviteFade { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:none; } }
@keyframes sealPop { 60% { transform:translate(-50%,-50%) scale(1.12); opacity:1; } 100% { transform:translate(-50%,-50%) scale(.75); opacity:0; } }
@keyframes cardRise { to { transform:translateY(0) rotate(0); } }

@media (max-width: 600px) {
    .invite-gate { padding: 58px 16px 24px; }
    .invite-gate::after { inset: 10px; border-radius: 12px; }
    .invite-skip { top: 18px; right: 18px; }
    .open-envelope-scene { height: 465px; }
    .full-invite-card { padding-top: 40px; }
    .invite-actions { grid-template-columns: 1fr; }
    .reopen-invite { right: 14px; top: 14px; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}

/* =========================================================
   REFINAMENTO PREMIUM DO CONVITE — v5
   ========================================================= */
.envelope {
    transform-style: preserve-3d;
}
.envelope-back {
    background:
        repeating-linear-gradient(93deg, rgba(255,255,255,.012) 0 1px, transparent 1px 5px),
        linear-gradient(140deg, #183a51, #10283b 64%);
    box-shadow: inset 0 0 45px rgba(0,0,0,.11);
}
.envelope-back::after {
    content:"";
    position:absolute;
    inset:0;
    border-radius:5px;
    background: radial-gradient(circle at 52% 42%, rgba(255,255,255,.035), transparent 35%);
    pointer-events:none;
}
.envelope-flap {
    backface-visibility:hidden;
    box-shadow: 0 5px 12px rgba(0,0,0,.08);
    transition: transform 1.05s cubic-bezier(.16,.78,.2,1), filter .8s ease;
}
.envelope-flap::after {
    content:"";
    position:absolute;
    inset:0;
    background: linear-gradient(to bottom, rgba(255,255,255,.035), transparent 32%, rgba(0,0,0,.08));
    clip-path: inherit;
}
.envelope-letter-shadow {
    position:absolute;
    z-index:2;
    left:10%; right:10%; bottom:8%; height:42%;
    border-radius:4px 4px 2px 2px;
    background: linear-gradient(#f7f2e8,#eee5d3);
    transform: translateY(38%);
    box-shadow: 0 -8px 18px rgba(0,0,0,.12);
    opacity:.0;
    transition: transform .85s .25s cubic-bezier(.16,.8,.22,1), opacity .3s .18s ease;
}
.wax-seal {
    overflow:visible;
    transition: transform .28s ease, filter .28s ease;
}
.wax-seal::before {
    content:"";
    position:absolute;
    left:49%; top:4%; width:1px; height:91%;
    background: linear-gradient(transparent, rgba(245,224,182,.7) 18%, rgba(8,24,18,.7) 52%, transparent 90%);
    opacity:0;
    transform: rotate(13deg) scaleY(.2);
    transform-origin:center;
}
.invite-stage-closed.is-opening .envelope-flap {
    transform: rotateX(179deg);
    filter: brightness(.84);
}
.invite-stage-closed.is-opening .envelope-letter-shadow {
    opacity:.92;
    transform: translateY(-10%);
}
.invite-stage-closed.is-opening .wax-seal::before {
    animation: sealCrack .28s ease forwards;
}
.invite-stage-closed.is-opening .wax-seal {
    animation: sealBreak .68s .12s cubic-bezier(.2,.7,.22,1) forwards;
}

.open-envelope-scene {
    transform-style:preserve-3d;
}
.open-envelope-flap {
    transform-origin: bottom center;
    filter: drop-shadow(0 7px 12px rgba(0,0,0,.16));
    animation: openFlapSettle .85s ease both;
}
.emerging-card {
    transform: translateY(92px) rotate(-1.2deg) scale(.985);
    opacity:.35;
    animation: cardRisePremium 1.18s .18s cubic-bezier(.16,.82,.22,1) forwards;
}
.open-envelope-pocket {
    box-shadow: inset 0 14px 24px rgba(255,255,255,.018), 0 -4px 12px rgba(0,0,0,.14);
}

.invite-calendar-btn {
    box-sizing:border-box;
    min-height:42px;
    grid-column:1 / -1;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:999px;
    color:var(--forest);
    border:1px solid rgba(33,69,53,.30);
    background:rgba(33,69,53,.035);
    font-size:.7rem;
    font-weight:700;
    letter-spacing:.04em;
    text-decoration:none;
}
.invite-calendar-btn::before {
    content:"＋";
    margin-right:7px;
    color:var(--gold);
    font-size:.95rem;
    font-weight:400;
}
.invite-calendar-btn:hover {
    background:rgba(33,69,53,.08);
    border-color:rgba(33,69,53,.48);
}

@keyframes sealCrack {
    45% { opacity:1; transform:rotate(13deg) scaleY(.65); }
    100% { opacity:.9; transform:rotate(13deg) scaleY(1); }
}
@keyframes sealBreak {
    0% { transform:translate(-50%,-50%) scale(1); opacity:1; }
    42% { transform:translate(-50%,-50%) rotate(-3deg) scale(1.07); opacity:1; }
    100% { transform:translate(-50%,-58%) rotate(8deg) scale(.68); opacity:0; }
}
@keyframes openFlapSettle {
    from { transform:translateY(-14px) rotateX(-9deg); opacity:.7; }
    to { transform:none; opacity:.95; }
}
@keyframes cardRisePremium {
    0% { transform:translateY(92px) rotate(-1.2deg) scale(.985); opacity:.35; }
    72% { transform:translateY(-8px) rotate(.18deg) scale(1.003); opacity:1; }
    100% { transform:translateY(0) rotate(0) scale(1); opacity:1; }
}

@media (max-width:600px) {
    .invite-calendar-btn { grid-column:auto; }
}

@media (prefers-reduced-motion: reduce) {
    .invite-stage-closed.is-opening .envelope-letter-shadow { opacity:.9; transform:none; }
}

/* =========================================================
   V6 — EXPERIÊNCIA PÓS-CONVITE
   ========================================================= */
.invite-personalized{margin:0 0 10px;color:#6b7c70;font-size:.78rem;letter-spacing:.06em}
.event-dashboard{max-width:900px;margin:22px auto 0;padding:0 20px}
.countdown-card{background:#10283b;color:#f8f3e8;border-radius:18px;padding:24px;text-align:center;box-shadow:0 14px 40px rgba(16,40,59,.12)}
.countdown-card .event-small{display:block;color:#bba16d;text-transform:uppercase;letter-spacing:.14em;font-size:.7rem;margin-bottom:6px}
.countdown-card strong{font-family:'Playfair Display',serif;font-weight:400;font-size:1.25rem}
.countdown{display:flex;justify-content:center;gap:34px;margin-top:18px}
.countdown div{min-width:62px}.countdown b{display:block;font-family:'Playfair Display',serif;font-size:2rem;color:#fff;font-weight:400}.countdown span{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:#c9d1d3}
.event-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:10px}
.event-action{appearance:none;text-decoration:none;border:1px solid #d9cfbc;background:#fff;color:#214535;border-radius:12px;padding:13px 10px;text-align:center;font-size:.8rem;font-weight:700;cursor:pointer}
button.event-action{font-family:'Lato',sans-serif;width:100%}.event-action:hover{background:#f8f3e8;color:#214535}
.rsvp-success{max-width:720px;margin:28px auto;background:#f8f3e8;border:1px solid #ded2bb;border-radius:18px;padding:34px 24px;text-align:center}
.success-mark{width:46px;height:46px;margin:0 auto 12px;border-radius:50%;display:grid;place-items:center;background:#214535;color:#fff;font-size:1.3rem}
.success-kicker{text-transform:uppercase;letter-spacing:.14em;font-size:.68rem;color:#a1844e;font-weight:700;margin:0 0 8px}
.rsvp-success h2{margin:0 0 8px;color:#10283b}.rsvp-success p{color:#65736a}
.success-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:18px}
.success-actions a{text-decoration:none;border:1px solid #214535;color:#214535;border-radius:999px;padding:10px 15px;font-size:.78rem;font-weight:700}
@media(max-width:620px){.event-actions{grid-template-columns:1fr}.countdown{gap:15px}.countdown b{font-size:1.65rem}.event-dashboard{margin-top:14px}.countdown-card{border-radius:14px}}

/* =========================================================
   V7 — RSVP COMPLETO
   status: 0 pendente · 1 confirmado · 2 não comparecerá
   ========================================================= */
.rsvp-choice-area{margin-top:22px;padding-top:8px}
.rsvp-hello{font-family:'Playfair Display',serif;font-size:1.35rem;margin-bottom:6px}
.rsvp-status-copy{max-width:560px;margin:0 auto 20px;color:#65736a;line-height:1.55;font-size:.9rem}
.rsvp-companions{max-width:420px;margin:0 auto 18px;text-align:left}
.rsvp-companions label{display:block;font-size:.82rem;font-weight:700;color:#214535;margin-bottom:4px}
.rsvp-choice-buttons{display:grid;grid-template-columns:1.15fr 1fr;gap:10px;max-width:560px;margin:0 auto}
.rsvp-choice-buttons button{min-height:50px;border-radius:12px}
.rsvp-yes{background:#214535;color:#fff}
.rsvp-yes:hover:not(:disabled){background:#17382b}
.rsvp-no{background:#fff!important;color:#7a4b4b!important;border:1px solid #d9c8c3!important}
.rsvp-no:hover:not(:disabled){background:#faf4f2!important}
.rsvp-change-name,.rsvp-edit-response{margin-top:14px;background:transparent!important;color:#65736a!important;padding:8px 12px;font-size:.76rem;text-decoration:underline;text-underline-offset:3px}
.rsvp-change-name:hover,.rsvp-edit-response:hover{background:transparent!important;color:#10283b!important}
.success-mark.is-declined{background:#8b6b62}
.rsvp-success:has(.success-mark.is-declined){background:#faf6f2;border-color:#dfd0c7}
@media(max-width:620px){.rsvp-choice-buttons{grid-template-columns:1fr}.rsvp-choice-buttons button{width:100%}}

/* V8 — identificação individual */
#rsvp-search-copy{max-width:600px;margin:0 auto 18px;color:#65736a;line-height:1.55}

.gift-optional-note{max-width:650px;margin:18px auto 0;padding:14px 16px;border:1px solid #d9cfbc;border-radius:12px;background:#faf7f0;color:#52665a;text-align:left}
.gift-optional-note strong{display:block;color:#214535;margin-bottom:4px;font-family:'Playfair Display',serif;font-weight:400;font-size:1.05rem}
.gift-optional-note span{font-size:.86rem;line-height:1.5}


/* RSVP — acompanhantes em destaque */
.rsvp-companions{
    max-width:560px;
    margin:0 auto 20px;
    padding:16px;
    border:2px solid rgba(169,138,79,.55);
    border-radius:16px;
    background:linear-gradient(180deg,#fffdf7 0%,#f9f4e8 100%);
    box-shadow:0 8px 24px rgba(16,40,59,.08);
}
.rsvp-companions-alert{display:flex;gap:12px;align-items:flex-start;margin-bottom:15px;padding-bottom:14px;border-bottom:1px solid rgba(169,138,79,.25)}
.rsvp-companions-icon{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;border-radius:50%;background:#efe4c9;font-size:20px}
.rsvp-companions-alert strong{display:block;color:#8a5a16;font-size:.92rem;letter-spacing:.02em;text-transform:uppercase}
.rsvp-companions-alert p{margin:4px 0 0;color:#495c52;font-size:.88rem;line-height:1.5}
.rsvp-companions label{display:block;margin-bottom:7px;color:var(--navy);font-size:.95rem;font-weight:800}
.rsvp-companions select{width:100%;min-height:52px;padding:0 42px 0 14px;border:2px solid #b8c7be;border-radius:12px;background:#fff;color:#17313a;font:600 .95rem/1.3 'Poppins',sans-serif;cursor:pointer}
.rsvp-companions select:focus{outline:none;border-color:var(--forest);box-shadow:0 0 0 4px rgba(33,69,53,.10)}
.rsvp-companions-help{margin:9px 0 0;color:#65736a;font-size:.78rem;line-height:1.45}
.rsvp-companions-summary{margin-top:12px;padding:11px 12px;border-radius:10px;background:#fff4dd;color:#7b5318;font-size:.84rem;font-weight:700;text-align:center}
.rsvp-companions-summary.is-selected{background:#eaf5ee;color:#24563a}
.rsvp-companions.needs-attention{animation:rsvpAttention .42s ease-in-out 0s 3 alternate;border-color:#c97924;box-shadow:0 0 0 5px rgba(201,121,36,.13)}
@keyframes rsvpAttention{from{transform:translateX(0)}to{transform:translateX(5px)}}
@media(max-width:620px){.rsvp-companions{padding:14px}.rsvp-companions-alert strong{font-size:.84rem}.rsvp-companions-alert p{font-size:.8rem}}

/* V13 — acompanhantes nominais + resposta definitiva */
.rsvp-companions-list{display:flex;flex-direction:column;gap:9px;margin-top:4px}
.rsvp-companion-person{display:flex!important;align-items:center;gap:11px;margin:0!important;padding:11px 12px;border:1px solid #d9cfbc;border-radius:12px;background:#fff;cursor:pointer}
.rsvp-companion-person:hover{border-color:#9caf9f;background:#fbfdfb}
.rsvp-companion-person input{width:19px;height:19px;flex:0 0 19px;accent-color:#214535}
.rsvp-companion-person span{display:flex;flex-direction:column;gap:2px}
.rsvp-companion-person strong{color:#17313a;font-size:.92rem;text-transform:none;letter-spacing:0}
.rsvp-companion-person small{color:#718078;font-size:.75rem;font-weight:400}
.rsvp-no small{display:block;margin-top:3px;font-size:.67rem;font-weight:600;opacity:.76}
.rsvp-choice-buttons button:disabled{opacity:.58;cursor:not-allowed}


/* v19 - Checkout Mercado Pago */
.checkout-dados{display:grid;gap:10px;margin:14px 0 12px}.checkout-dados input{width:100%;box-sizing:border-box;padding:13px 14px;border:1px solid #d7ddd9;border-radius:10px;background:#fff;font:inherit;outline:none;transition:.2s}.checkout-dados input:focus{border-color:#375846;box-shadow:0 0 0 3px rgba(55,88,70,.10)}.checkout-dados small{font-size:11px;line-height:1.45;color:#6f7b74}.pix-overlay{z-index:9999}.pix-box{position:relative;max-width:430px;width:calc(100% - 32px);text-align:center;padding:28px 24px}.pix-close{position:absolute;right:14px;top:10px;border:0;background:transparent;font-size:30px;line-height:1;color:#66736b;cursor:pointer}.pix-brand{display:inline-flex;padding:6px 10px;border-radius:999px;background:#eef7ff;color:#1677c8;font-size:11px;font-weight:800;letter-spacing:.03em;margin-bottom:10px}.pix-box h3{margin:4px 0 6px}.pix-status-text{margin:0 0 14px;color:#68756d;font-size:13px}.pix-qr{display:block;width:230px;max-width:75vw;aspect-ratio:1;object-fit:contain;margin:8px auto 18px;border:1px solid #e1e7e3;border-radius:14px;padding:8px;background:#fff}.pix-copy-wrap{text-align:left}.pix-copy-wrap label{display:block;font-size:11px;font-weight:700;color:#55635b;margin-bottom:6px}.pix-copy-wrap textarea{width:100%;height:76px;resize:none;box-sizing:border-box;border:1px solid #d7ddd9;border-radius:10px;padding:10px;font:11px/1.4 monospace;background:#f8faf9;color:#33413a;margin-bottom:10px}.pix-copy-wrap .btn-primary{width:100%}.pix-link{display:inline-block;margin-top:12px;font-size:12px;font-weight:700;color:#315f48;text-decoration:underline}.pix-confirmado{margin-top:16px;background:#eefaf2;border:1px solid #b8e0c4;color:#22663a;padding:14px;border-radius:12px;font-size:13px;font-weight:700}

/* v29 - formas de pagamento Mercado Pago */
.payment-choice{margin-top:14px}.payment-choice-title{margin:0 0 9px;font-size:13px;font-weight:800;color:#34463d}.payment-choice-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.payment-option{border:1px solid #d5dfd9;border-radius:13px;background:#fff;padding:12px 8px;cursor:pointer;color:#263b30;transition:.18s;text-align:center}.payment-option:hover:not(:disabled){border-color:#315f48;box-shadow:0 5px 16px rgba(36,73,53,.10);transform:translateY(-1px)}.payment-option:disabled{opacity:.45;cursor:not-allowed}.payment-option strong{display:block;font-size:14px}.payment-option span{display:block;margin-top:3px;font-size:10px;color:#718078}.payment-option-pix{background:#f2faf5}.payment-modal-box{position:relative;max-width:560px;width:calc(100% - 28px);padding:28px 24px;max-height:88vh;overflow:auto}.payment-modal-box h3{margin:4px 0 8px;text-align:center}.payment-modal-help{font-size:12px;line-height:1.5;color:#65736b;text-align:center;margin:0 0 14px}.payment-total{text-align:center;font-weight:800;color:#284d39;margin:8px 0 14px}.payment-result{padding:13px;border-radius:12px;margin-top:12px;font-size:13px;font-weight:700;text-align:center}.payment-result.ok{display:block!important;background:#eefaf2;border:1px solid #b8e0c4;color:#22663a}.payment-result.warn{display:block!important;background:#fff8e8;border:1px solid #edd79b;color:#735a17}.payment-result.error{display:block!important;background:#fff1f1;border:1px solid #efc1c1;color:#8b3030}.payment-full-button{width:100%;margin-top:4px}.mp-card-loading{text-align:center;padding:18px;color:#65736b;font-size:13px}@media(max-width:620px){.payment-choice-grid{grid-template-columns:1fr}.payment-option{text-align:left;padding:12px 14px}.payment-option strong,.payment-option span{display:inline}.payment-option span{margin-left:7px}.payment-modal-box{padding:25px 16px}}
