:root{--bordo:#641E3E;--escuro:#3d0f26;--rosa:#F4A6C1;--verm:#C62850;--creme:#FFF8F2;--ouro:#E8C889;--rosa2:#E879A9;--sombra:0 10px 30px rgba(0,0,0,.3)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(64px + env(safe-area-inset-top,0px))}
body{margin:0;font-family:Nunito,system-ui,sans-serif;color:var(--creme);line-height:1.7;overflow-x:hidden;
  background:linear-gradient(180deg,var(--escuro),var(--bordo) 45%,var(--escuro));background-attachment:fixed}
body.lock{overflow:hidden}
#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
#main{position:relative;z-index:1;opacity:0;transition:opacity 1.2s}
body:not(.lock) #main{opacity:1}
img{max-width:100%}
button{font-family:inherit}
:focus-visible{outline:3px solid var(--ouro);outline-offset:2px}

/* navegação */
#nav{position:sticky;top:0;z-index:50;display:flex;gap:6px;overflow-x:auto;padding:calc(8px + env(safe-area-inset-top,0px)) 10px 8px;background:rgba(61,15,38,.92);backdrop-filter:blur(8px);scrollbar-width:none}
#nav a{flex:none;min-height:44px;display:grid;place-items:center;padding:0 14px;border-radius:999px;color:var(--creme);text-decoration:none;font-size:.9rem;transition:background .3s}
#nav a.on{background:var(--rosa2);color:#fff}

/* secções */
.sec{max-width:880px;margin:0 auto;padding:60px 20px;text-align:center}
h1,h2,h3{font-family:"Playfair Display",Georgia,serif;font-weight:600}
h2{font-style:italic;font-weight:500;font-size:clamp(1.7rem,6vw,2.3rem);color:var(--rosa);margin:0 0 22px}
h1{font-size:clamp(1.9rem,7vw,3rem);line-height:1.2;margin:8px 0}
.kicker{min-height:3em;color:var(--ouro);font-style:italic}
.nomes{font-family:"Great Vibes",cursive;font-size:clamp(2.2rem,10vw,3.6rem);color:var(--ouro);margin:6px 0}
.texto{max-width:620px;margin:20px auto;font-size:1.05rem}
.frase{font-style:italic;color:var(--rosa);margin:16px 0}
.nota{font-size:.8rem;opacity:.75}
.hero{padding-top:36px}

/* moldura de foto */
.moldura{width:min(320px,82%);margin:26px auto;padding:10px;background:var(--creme);border-radius:22px;box-shadow:var(--sombra);border:2px solid var(--ouro)}
.moldura img,.vazio{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:14px}
.vazio{display:grid;place-items:center;padding:14px;color:var(--bordo);font-size:.85rem;background:linear-gradient(135deg,#fde3ec,#f9cfe0);white-space:pre-line}

/* contadores */
.cartoes{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;max-width:520px;margin:0 auto}
.cart{background:var(--creme);color:var(--bordo);border:1px solid var(--ouro);border-radius:18px;padding:14px 2px;box-shadow:var(--sombra)}
.cart b{display:block;font:600 clamp(1.5rem,7vw,2.2rem) "Playfair Display",Georgia,serif;line-height:1.1}
.cart small{font-size:.65rem;letter-spacing:.08em;text-transform:uppercase}
.tick{animation:tk .35s ease-out}
@keyframes tk{from{transform:translateY(-6px);opacity:.4}}
.aniv{margin:46px auto 0;max-width:560px;padding:22px 14px;border:1px solid var(--ouro);border-radius:24px;background:rgba(255,248,242,.06)}
.aniv h3{margin:0 0 14px;color:var(--ouro);font-size:1.2rem}
.aniv.hoje{animation:brilho 3s ease-in-out infinite}
.aniv.hoje #anivC{display:none}
@keyframes brilho{50%{box-shadow:0 0 28px rgba(232,200,137,.45)}}

/* galeria */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px}
.foto{border:0;padding:7px 7px 0;background:var(--creme);color:var(--bordo);border-radius:16px;box-shadow:var(--sombra);cursor:pointer;overflow:hidden;transition:transform .3s}
.foto:active{transform:scale(.98)}
.foto img,.foto .vazio{width:100%;aspect-ratio:1;object-fit:cover;border-radius:11px;display:grid}
.foto span.l{display:block;padding:8px 4px;font-size:.8rem;line-height:1.35}
#lb{position:fixed;inset:0;z-index:200;background:rgba(30,5,18,.95);display:none;flex-direction:column;align-items:center;justify-content:center;padding:16px;gap:12px}
#lb.on{display:flex}
#lbImg img,#lbImg .vazio{max-width:92vw;max-height:66vh;width:auto;aspect-ratio:auto;border-radius:14px;margin:0 auto}
#lbImg .vazio{width:min(320px,86vw);aspect-ratio:1}
#lbCap{max-width:520px;text-align:center;font-style:italic;color:var(--rosa);margin:0}
.lbb{display:flex;gap:14px}
.lbb button,.player button,.topo{min-width:48px;height:48px;border-radius:50%;border:1px solid var(--ouro);background:var(--bordo);color:var(--creme);font-size:1.3rem;cursor:pointer}

/* envelope e carta */
.env{position:relative;display:block;width:min(240px,70vw);aspect-ratio:3/2;margin:18px auto;border:0;background:none;padding:0;cursor:pointer;perspective:700px}
.env .corpo{position:absolute;inset:0;border-radius:10px;background:linear-gradient(160deg,var(--rosa),var(--rosa2));box-shadow:var(--sombra);display:grid;place-items:center;font-size:2.4rem}
.env .flap{position:absolute;left:0;right:0;top:0;height:60%;background:var(--verm);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:transform .8s;z-index:2}
.env.aberto .flap{transform:rotateX(180deg);z-index:0}
.papel{background:var(--creme);color:var(--bordo);border-radius:14px;padding:0 22px;text-align:left;white-space:pre-wrap;font-family:"Playfair Display",Georgia,serif;font-size:1.02rem;max-height:0;overflow:hidden;opacity:0;transition:max-height .9s ease,opacity .6s,padding .6s;box-shadow:var(--sombra)}
.papel.aberto{max-height:2400px;opacity:1;padding:24px 22px;margin-top:10px}
.acoes{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:16px}
.btn{min-height:48px;padding:0 26px;border:0;border-radius:999px;color:#fff;font-weight:600;font-size:1rem;cursor:pointer;background:linear-gradient(135deg,var(--verm),var(--rosa2));box-shadow:0 6px 18px rgba(198,40,80,.4);transition:transform .2s}
.btn:active{transform:scale(.97)}
.btn.alt{background:transparent;border:2px solid var(--ouro);color:var(--ouro);box-shadow:none}

/* segredo, rodapé, extras */
.segredo{position:relative;max-width:620px;margin:22px auto 0;font-family:"Playfair Display",Georgia,serif;font-style:italic;max-height:0;opacity:0;overflow:hidden;transition:max-height 1s ease,opacity 1s}
.segredo.on{max-height:900px;opacity:1}
.cor{position:absolute;pointer-events:none;animation:sobe 1.6s ease-out forwards}
@keyframes sobe{to{transform:translate(var(--dx),-70px);opacity:0}}
.rod{padding:50px 20px calc(90px + env(safe-area-inset-bottom,0px));text-align:center}
.pulsa{font-size:1.8rem;animation:pulsa 1.6s ease-in-out infinite}
@keyframes pulsa{50%{transform:scale(1.15)}}
.player{position:fixed;left:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:60;display:flex;align-items:center;gap:8px;background:rgba(61,15,38,.94);border:1px solid var(--ouro);border-radius:999px;padding:5px 8px}
.player[hidden]{display:none}
.player input{width:70px}
.player .nota{max-width:120px;line-height:1.2}
.player.toca #bMus{animation:pulsa 1.2s ease-in-out infinite;background:var(--verm)}
.topo{position:fixed;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:60;opacity:0;pointer-events:none;transition:opacity .3s}
.topo.v{opacity:1;pointer-events:auto}
.rv{opacity:0;transform:translateY(14px);transition:opacity .7s,transform .7s}
.rv.in{opacity:1;transform:none}

/* introdução */
#intro{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;text-align:center;background:radial-gradient(circle at 50% 30%,var(--bordo),var(--escuro));transition:opacity .8s}
#intro.fora{opacity:0;pointer-events:none}
#intro h1{color:var(--rosa);font-style:italic;font-weight:500}
#intro p{max-width:380px;margin:12px auto 26px}
.i1{transition:opacity .4s}.i1.sai{opacity:0}
.i2{display:none}#intro.env2 .i1{display:none}#intro.env2 .i2{display:block}

@media (prefers-reduced-motion:reduce){
  *,*:before{animation:none!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}.rv{opacity:1;transform:none}
}
