:root {--paper:#fff9ef;--white:#fffefd;--gold:#f4bc43;--gold-deep:#d89720;--brown:#81532e;--dark:#55412e;--green:#7c9161;--muted:#8e806f;--line:#e9d9bb;--shadow:0 24px 70px rgba(108,75,32,.12)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:var(--paper);color:var(--dark);font-family:'DM Sans',system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}button,input,a{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--green);outline-offset:4px}svg{display:block;width:1em;height:1em}.svg-defs{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
body::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(ellipse at 3% 4%,#fff2c4 0,transparent 27%),radial-gradient(ellipse at 97% 95%,#f6f2dc 0,transparent 32%),linear-gradient(115deg,#fffdf7,#fff7e8 65%,#fcf7e8)}
.background-flowers,.petals,.confetti-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden}.background-flowers{z-index:-1}.petals{z-index:20}.confetti-layer{z-index:50}.decor{position:absolute;width:110px;height:110px;filter:drop-shadow(0 6px 5px #b18d4b10);opacity:.7;animation:gentle-float 7s ease-in-out infinite}.decor-a{left:-46px;top:-30px;transform:rotate(-18deg);width:160px;height:160px}.decor-b{right:-38px;top:22%;width:100px;height:100px;animation-delay:-2s}.decor-c{left:-44px;bottom:7%;width:130px;height:130px;animation-delay:-4s}.decor-d{right:-26px;bottom:-18px;width:98px;height:98px;animation-delay:-1s}.decor-e{right:17%;top:7%;width:35px;height:35px;opacity:.38;animation-delay:-3s}
.intro-screen{min-height:100svh;display:grid;place-items:center;padding:56px 20px 35px;transition:opacity .6s ease,visibility .6s ease}.intro-screen.is-hidden{opacity:0;visibility:hidden;pointer-events:none;position:absolute;inset:0}.intro-content{width:100%;max-width:590px;text-align:center;display:flex;align-items:center;flex-direction:column}.eyebrow,.card-kicker,.top-note{font-size:10px;letter-spacing:.24em;font-weight:800;color:#9b8a67}.eyebrow{display:flex;align-items:center;gap:12px}.eyebrow-dot{width:5px;height:5px;border-radius:50%;background:var(--gold)}.intro-content h1{margin:15px 0 11px;font:600 clamp(34px,7vw,56px)/1.17 'Fraunces',Georgia,serif;letter-spacing:-.045em;color:#80552f}.intro-content h1 em{font-style:normal;color:#d9a02c}.intro-lead{margin:0;max-width:330px;color:var(--muted);font-size:14px;line-height:1.65}
.envelope-hit{appearance:none;display:block;padding:0;border:0;background:transparent;width:min(82vw,350px);height:270px;margin:31px 0 0;perspective:1000px;touch-action:manipulation;overflow:visible}.envelope-visual{position:relative;display:block;width:100%;height:230px;top:25px;filter:drop-shadow(0 22px 20px rgba(132,88,38,.17));transform:rotate(-3deg);transition:transform .65s ease}.envelope-hit:hover .envelope-visual{transform:rotate(0deg) translateY(-5px)}.envelope-back{position:absolute;left:0;right:0;bottom:0;height:100%;border-radius:9px;background:#edd5aa;box-shadow:inset 0 0 0 1px #d9ba89}.envelope-letter{position:absolute;left:9%;width:82%;top:16px;height:189px;z-index:2;border-radius:9px;background:#fffefa;box-shadow:0 0 2px #bca77b50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--brown);transform:translateY(18px);transition:transform .9s cubic-bezier(.2,.85,.2,1) .25s}.letter-flower{width:43px;height:43px;margin-bottom:7px}.envelope-letter span{font-size:12px;color:var(--muted)}.envelope-letter strong{font-family:'Fraunces',serif;font-size:22px}.envelope-flap{position:absolute;inset:0 0 auto;height:142px;z-index:5;background:#f6dfb8;clip-path:polygon(0 0,100% 0,50% 97%);transform-origin:top;transition:transform .7s cubic-bezier(.2,.8,.3,1);backface-visibility:hidden}.envelope-front{position:absolute;inset:0;z-index:4;border-radius:0 0 9px 9px;background:linear-gradient(145deg,#f8e6c7 48%,transparent 48.3%),linear-gradient(215deg,#f3d9ac 48%,transparent 48.3%),linear-gradient(0deg,#f7dfbb,#f9eaca);clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%);box-shadow:inset 0 -1px 0 #dfc390}.envelope-seal{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);width:68px;height:68px;z-index:6;background:#e0aa38;border:3px solid #f2cc76;border-radius:50%;display:grid;place-items:center;box-shadow:0 3px 0 #c38a2478;transition:opacity .28s .15s,transform .45s}.envelope-seal svg{width:52px;height:52px}.envelope-visual.open .envelope-flap{transform:rotateX(180deg);z-index:1}.envelope-visual.open .envelope-letter{transform:translateY(-125px)}.envelope-visual.open .envelope-seal{transform:translate(-50%,-50%) scale(.7);opacity:0}.envelope-visual.open{transform:rotate(0deg) translateY(6px)}.tap-hint{color:#a08b70;font-size:12px;letter-spacing:.02em;display:flex;align-items:center;gap:8px;margin:1px 0 22px}.tap-arrow{font-size:18px;animation:point-up 2s infinite}.primary-button,.secondary-button{border:0;min-height:55px;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:15px 23px;font-size:14px;font-weight:800;text-decoration:none;border-radius:100px;transition:transform .2s,box-shadow .2s;background:var(--gold);color:#613c18;box-shadow:0 6px 0 #d39b2a2b}.primary-button:hover,.secondary-button:hover{transform:translateY(-3px)}.primary-button:active,.secondary-button:active{transform:translateY(1px)}.open-button{width:245px}.open-button span{font-size:20px;font-weight:400}.intro-foot{font-size:11px;color:#a49a88;letter-spacing:.07em;margin:25px 0 0}
.invitation-screen{display:none;opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .8s ease}.invitation-screen.visible{display:block;opacity:1;transform:none}.invitation-wrap{width:min(100% - 28px,580px);margin:0 auto;padding:37px 0 30px;text-align:center}.top-note{display:flex;justify-content:center;align-items:center;gap:12px;margin:0 0 17px;color:#a18b5c}.top-note svg{width:19px;height:19px}.invitation-card{isolation:isolate;position:relative;overflow:hidden;background:linear-gradient(160deg,#fffefa,#fffdf7 75%,#fff9ed);border:1px solid #eadbc2;border-radius:26px;box-shadow:var(--shadow);padding:43px clamp(18px,5vw,42px) 28px}.corner-frame{position:absolute;inset:11px;border:1.5px dashed #edc96b;border-radius:18px;pointer-events:none;opacity:.8}.card-flower{position:absolute;width:91px;height:91px;z-index:1}.card-flower.top-left{left:-37px;top:-39px;transform:rotate(-13deg)}.card-flower.top-right{right:-39px;top:-38px;transform:rotate(16deg)}.card-head{position:relative;z-index:2}.card-kicker{margin:0 0 8px;font-size:10px;letter-spacing:.15em}.card-head h2{font:600 clamp(30px,7vw,44px)/1.09 'Fraunces',Georgia,serif;letter-spacing:-.045em;color:#8b572e;margin:0}.card-head h2 small{font-size:.64em}.card-head h2 span{display:inline-block;font-family:'Pacifico',cursive;font-weight:400;letter-spacing:0;font-size:1.26em;color:#e9a72d;transform:rotate(-3deg);line-height:1.3}.head-subtitle{font-size:13px;color:#8b7c67;margin:4px 0 0}.portrait-zone{position:relative;width:min(100%,382px);margin:10px auto -7px}.portrait-zone img{position:relative;z-index:2;width:100%;display:block;mix-blend-mode:multiply;aspect-ratio:1;object-fit:contain;mask-image:linear-gradient(to bottom,#000 0%,#000 88%,transparent 100%)}.portrait-halo{position:absolute;z-index:0;top:9%;left:9%;width:82%;height:82%;border-radius:50%;background:radial-gradient(circle,#fff8e3 45%,#fff9e900 69%)}.portrait-flower{position:absolute;z-index:3;width:72px;height:72px;filter:drop-shadow(0 3px 3px #b89b4c30)}.flower-one{bottom:23%;left:-6%;transform:rotate(-25deg)}.flower-two{right:-5%;bottom:18%;width:59px;height:59px;transform:rotate(18deg)}.age-sticker{position:absolute;right:1%;bottom:8%;z-index:3;background:#ffdf78;color:#8f5e2b;border:3px solid white;border-radius:50%;width:76px;height:76px;display:flex;flex-direction:column;align-items:center;justify-content:center;font:700 27px/.95 'Fraunces',serif;box-shadow:0 7px 16px #c99d3838;transform:rotate(9deg)}.age-sticker small{font:700 12px/1.3 'DM Sans',sans-serif}.invitation-copy{font-size:14px;line-height:1.68;max-width:345px;margin:0 auto 14px;color:#75624b}.floral-divider{display:flex;align-items:center;justify-content:center;gap:13px;margin:20px auto 23px}.floral-divider span{width:65px;height:1px;background:#efcd7e}.floral-divider svg{width:28px;height:28px}.when-where{text-align:left;background:#fff7e8;border:1px solid #f2e1c4;border-radius:20px;padding:9px 15px;position:relative;z-index:2}.info-line{display:flex;gap:14px;align-items:center;padding:14px 0}.info-line+.info-line{border-top:1px solid #eadcc6}.info-icon{flex:0 0 43px;height:43px;border-radius:15px;background:white;color:#c99121;display:grid;place-items:center}.info-icon svg{width:22px;height:22px}.info-text{display:flex;flex-direction:column;gap:2px;min-width:0}.info-text small{font-size:9px;letter-spacing:.14em;color:#a59271;font-weight:800}.info-text strong{font:700 15px/1.35 'DM Sans',sans-serif;color:#78502b}.info-text>span{font-size:12px;color:#9b8468}.card-tail{font:400 16px 'Pacifico',cursive;color:#9b7e3d;display:flex;align-items:center;justify-content:center;gap:10px;margin-top:20px}.card-tail svg{width:19px;height:19px;color:#e3b44a}
.countdown{padding:30px 20px 20px}.countdown-title{font:600 24px 'Fraunces',serif;margin:0 0 12px;color:#795331}.countdown-units{display:flex;align-items:center;justify-content:center;gap:12px}.count-unit{min-width:73px;display:flex;flex-direction:column;align-items:center;gap:1px}.count-unit strong{font:600 clamp(32px,9vw,47px)/1.2 'Fraunces',serif;color:#cb9127;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.count-unit small{font-size:11px;font-weight:700;color:#968574}.count-sep{font:600 28px 'Fraunces',serif;color:#e1bd6d;align-self:flex-start;transform:translateY(5px)}.countdown-message{margin:13px 0 0;font-size:12px;color:#978572}.action-panel{padding:7px 10px 9px}.map-button{width:100%;background:#778c60;color:white;box-shadow:0 6px 0 #53684429}.map-button svg,.secondary-button svg{width:19px;height:19px}.map-button span{margin-left:auto;font-size:21px;font-weight:400}.button-row{display:flex;gap:10px;margin-top:12px}.secondary-button{min-width:0;flex:1;background:#fffefd;border:1px solid #e8dbc4;color:#775636;font-size:12px;padding:14px 10px;box-shadow:none;white-space:nowrap}.secondary-button svg{width:17px;height:17px;flex:0 0 17px}.small-link{display:inline-block;margin-top:20px;font-size:12px;color:#896736;text-underline-offset:4px}.bloom-button{padding:7px 11px;border:0;background:none;color:#947d5a;font-weight:700;font-size:11px;display:inline-flex;align-items:center;gap:5px}.bloom-button svg{width:20px;height:20px}.bloom-button span{font-size:17px}footer{margin-top:10px;color:#aa9b85;font-size:11px}footer span{color:#e3ac3b;font-size:18px;vertical-align:middle}
.rsvp-dialog{position:fixed;border:1px solid #eedec0;border-radius:26px;max-width:min(410px,calc(100vw - 34px));width:100%;padding:26px;box-shadow:0 30px 90px #38250e50;background:#fffcf5;color:#60482d}.rsvp-dialog::backdrop{background:#30211080;backdrop-filter:blur(5px)}.rsvp-dialog form{display:flex;flex-direction:column;text-align:left}.modal-close{position:absolute;top:10px;right:16px;border:0;background:transparent;color:#9e8062;font-size:28px}.modal-flower{width:40px;height:40px;align-self:center}.rsvp-dialog h2{font:600 31px 'Fraunces',serif;margin:8px 0 5px;text-align:center}.rsvp-dialog p{color:#8d7d6a;font-size:13px;line-height:1.5;text-align:center;margin:0 0 16px}.rsvp-dialog label{font-size:12px;font-weight:800;margin:13px 0 8px}.rsvp-dialog input{border:1px solid #dac9ac;background:white;border-radius:13px;min-height:48px;padding:12px 14px;outline-offset:2px;width:100%}.counter-control{display:flex;align-items:center;justify-content:space-between;background:#fff7e8;border-radius:12px;padding:5px}.counter-control button{width:42px;height:42px;border-radius:10px;border:0;background:white;color:#876030;font-size:25px}.counter-control output{font-weight:700;font-size:15px}.modal-submit{width:100%;margin:20px 0 12px}.rsvp-dialog .modal-help{font-size:11px;line-height:1.5;margin:0}.toast{position:fixed;bottom:max(22px,env(safe-area-inset-bottom));left:50%;z-index:100;max-width:calc(100vw - 30px);width:max-content;background:#5b6045;color:#fff;padding:14px 20px;border-radius:100px;box-shadow:0 10px 35px #231d1630;text-align:center;font-size:13px;line-height:1.4;transform:translate(-50%,30px);opacity:0;pointer-events:none;transition:opacity .3s,transform .3s}.toast.visible{opacity:1;transform:translate(-50%,0)}.falling-petal{position:absolute;top:-80px;display:block;width:13px;height:24px;border-radius:100% 0 100% 0;background:#fffaf0;border:1px solid #efdfb8;box-shadow:0 0 6px #ead5b7;animation:petal-fall var(--duration) linear forwards;left:var(--x);transform:rotate(var(--rotate));opacity:.95}.party-flower{position:fixed;left:var(--x);top:var(--y);width:var(--size);height:var(--size);animation:flower-burst 1.55s ease-out forwards;transform:translate(-50%,-50%);pointer-events:none}
@keyframes gentle-float{0%,100%{translate:0 0}50%{translate:0 -10px}}@keyframes point-up{0%,100%{transform:translateY(1px)}50%{transform:translateY(-6px)}}@keyframes petal-fall{to{transform:translate(var(--drift),110vh) rotate(650deg);opacity:0}}@keyframes flower-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(-25deg)}18%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1) rotate(280deg)}}
@media (max-width:420px){.intro-screen{padding-top:39px}.intro-content h1{font-size:35px}.envelope-hit{margin-top:19px;height:249px}.envelope-visual{height:214px}.envelope-flap{height:132px}.invitation-card{padding-top:42px}.card-head h2{font-size:32px}.portrait-zone{margin-top:0}.button-row{flex-direction:column}.secondary-button{min-height:52px}.invitation-wrap{width:calc(100% - 22px)}.when-where{padding:8px 12px}.info-text strong{font-size:14px}}
@media (min-width:700px){.decor-a{left:7%;top:4%}.decor-b{right:11%}.decor-c{left:15%}.decor-d{right:11%}.invitation-wrap{padding-top:50px}.invite-screen{min-height:100vh}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* Respiro extra entre o envelope e a instrução, inclusive em celulares menores. */
.envelope-hit{margin-bottom:25px}
.tap-hint{margin-top:6px}
/* Mantém a foto quadrada apesar dos atributos width/height no HTML. */
.portrait-zone img{height:auto}
