/* Abertura editorial e álbum de recordações. */
.opening-space{height:80vh}.opening-space[hidden],.opening[hidden]{display:none}.opening{position:fixed;inset:0;z-index:30;display:grid;place-items:center;text-align:center;overflow:hidden;background:#f6f1e8f2;backdrop-filter:blur(12px)}.opening-floral{position:absolute;inset:0;background:url('floral.svg') left -100px center/450px no-repeat,url('floral.svg') right -100px center/450px no-repeat;opacity:.5}.opening-mark{position:relative;transform-origin:center;will-change:transform}.monogram{font:clamp(5rem,14vw,11rem)/1 Georgia,serif;letter-spacing:-.08em;color:var(--sage)}.monogram span{font-size:.6em;color:var(--rose);font-style:italic;margin:0 .05em}.opening-names{font:italic 1.7rem Georgia,serif;color:var(--rose);margin:32px 0 20px}.opening-hint{font-size:.78rem;letter-spacing:.12em;color:var(--muted)}.opening-skip{position:absolute;bottom:35px;background:none;border:0;color:var(--sage);font-size:.8rem;letter-spacing:.12em}.opening-skip span{display:block;font-size:1.5rem}.opening-skip small{display:block;font-size:.65rem;letter-spacing:.04em;margin-top:5px}
.memory-preview,.polaroid-wall{display:grid;grid-template-columns:repeat(3,1fr);gap:35px;padding:15px 12px 45px;align-items:start}.polaroid{position:relative;margin:0;padding:14px 14px 24px;background:#fffdf8;box-shadow:0 7px 22px #5a4d3917;transform:rotate(var(--tilt));border:1px solid #e9e2d5}.polaroid:before{content:'';position:absolute;width:76px;height:25px;background:#ddcbaaa6;top:-10px;left:calc(50% - 38px);transform:rotate(-5deg);z-index:1;box-shadow:0 1px 3px #786c5810}.memory-image{aspect-ratio:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 35% 30%,#f4dfd4,transparent 75%),#e9ecdf;overflow:hidden}.memory-image>span{font:4.5rem Georgia,serif;color:#a17c80}.memory-image>small{font-size:.6rem;position:absolute;bottom:13px;color:#716f64;letter-spacing:.04em;text-align:center;padding:0 8px}.memory-image img{width:100%;height:100%;object-fit:cover}.memory-image.has-photo{display:block}.memory-image.viagem,.memory-image.montanha{background:linear-gradient(145deg,#dce4da,#eee3d2)}.memory-image.flores{background:#efdae0}.polaroid figcaption{padding:20px 5px 0}.polaroid h3{font-size:1.4rem;margin-bottom:12px}.polaroid p{font-size:.85rem;color:var(--muted);margin-bottom:0}.polaroid .memory-date{font-size:.67rem;letter-spacing:.04em;color:var(--rose);margin-bottom:10px}.memory-preview .polaroid figcaption>p:last-child{display:none}.scrapbook{background:radial-gradient(ellipse at 40% 0,#e5dfd040,transparent 65%),var(--paper)}.polaroid-wall{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));row-gap:55px}.undated-heading{margin-top:65px}.album-note{text-align:center;color:var(--muted);font:italic 1.2rem Georgia,serif;margin:30px auto 40px;max-width:600px}.guest-card-photo{width:76px;height:76px;object-fit:cover;border-radius:50%;border:2px solid #d9cec5;float:right;margin:0 0 15px 18px}.guest-card .eyebrow{font-size:.65rem;letter-spacing:.13em}.guest-card .guest-color{font-size:.78rem;line-height:1.7}.guest-card h3{font-size:2.3rem}.gift-group{padding:35px 0 45px}.gift-list{padding-top:55px}.gift-categories{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin:0 0 35px}.gift-categories a{border-bottom:1px solid #c3c9b4;padding:8px 12px;font-size:.8rem;text-decoration:none;color:var(--sage)}.gift-group h2{font-size:2.6rem}.gift-art{margin:-32px -32px 24px;background:#f1eee4;border-bottom:1px solid #e4dfd1;border-radius:6px 6px 0 0}.gift-art svg{display:block;width:100%;height:165px}.gift-card{display:flex;flex-direction:column}.gift-card h3{font-size:1.4rem}.gift-card .gift-price{margin-top:auto;padding-top:12px;color:var(--rose);font-size:.8rem}.gift-card .btn{align-self:flex-start}.rsvp-panel .fields{gap:14px 16px}
@media(max-width:750px){.memory-preview{gap:18px;padding-left:0;padding-right:0}.polaroid{padding:9px 9px 18px}.memory-preview .polaroid h3{font-size:1rem}.memory-preview .memory-date{font-size:.57rem}.memory-image>span{font-size:3rem}.memory-image>small{font-size:.5rem;bottom:8px}.polaroid-wall{gap:40px 25px;grid-template-columns:repeat(2,minmax(0,1fr));padding-left:0;padding-right:0}.polaroid-wall .polaroid h3{font-size:1.2rem}.guest-card h3{font-size:1.9rem}.opening-floral{background-size:300px;background-position:left -170px center,right -170px center}.gift-group h2{font-size:2rem}}
@media(max-width:500px){.memory-preview{grid-template-columns:1fr 1fr;max-width:390px;margin:auto}.memory-preview .polaroid:last-child{display:none}.polaroid-wall{grid-template-columns:1fr;max-width:360px;margin:auto}.polaroid-wall .memory-image>span{font-size:4.5rem}.polaroid-wall .memory-image>small{font-size:.65rem}.guest-card-photo{width:60px;height:60px}.guest-card .eyebrow{letter-spacing:.07em}.opening-names{font-size:1.4rem}}
.polaroid-wall .polaroid{max-width:360px;width:100%;justify-self:center}
.opening-logo{display:block;width:clamp(210px,30vw,350px);height:auto;max-height:48vh;object-fit:contain;margin:0 auto}
.memory-dialog .memory-carousel img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;min-width:0;min-height:0;object-fit:contain;margin:0}
.polaroid figcaption{display:flex;flex-direction:column}.polaroid figcaption h3{order:0;margin-bottom:6px}.polaroid figcaption .memory-date{order:1;font-size:.66rem;margin:0}.polaroid figcaption>p:not(.memory-date){display:none}
.cloth-card .cloth-date{font-size:.49rem;text-align:center;margin:4px 0 0;color:var(--rose);line-height:1.2}.cloth-card{padding-bottom:24px}
.memory-dialog{width:min(1050px,96vw);max-width:96vw}.memory-carousel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,3.6fr) minmax(0,1fr);gap:14px;align-items:center;height:min(59dvh,650px)}.memory-carousel.single{grid-template-columns:1fr}.memory-carousel img{width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain}.memory-carousel .carousel-photo{min-width:0}.memory-carousel .carousel-neighbor{height:65%;width:100%;padding:0;margin:0;border:0;background:transparent;opacity:.62;cursor:pointer;transition:opacity .2s,transform .2s}.memory-carousel .carousel-neighbor:hover{opacity:1;transform:scale(1.04)}.carousel-neighbor[hidden],.carousel-controls[hidden]{display:none}.carousel-controls{display:flex;align-items:center;justify-content:center;gap:24px;margin:15px 0}.carousel-controls .btn{margin:0;font-size:.75rem;padding:8px 12px}.carousel-controls span{font-size:.8rem;color:var(--muted);min-width:45px;text-align:center}.memory-dialog h2{font-size:1.7rem;text-align:center;margin:20px 0 6px}.memory-dialog .dialog-date{color:var(--rose);font-size:.78rem;margin:0 0 14px}.memory-dialog .dialog-description{font-size:.92rem;max-width:690px;margin:0 auto 8px;line-height:1.7;text-align:center}
@media(max-width:600px){.memory-dialog{padding:12px}.memory-carousel{gap:6px;grid-template-columns:minmax(0,1fr) minmax(0,4.2fr) minmax(0,1fr);height:48dvh}.memory-dialog h2{font-size:1.35rem}.memory-dialog .dialog-description{font-size:.82rem}.carousel-controls{gap:12px}.carousel-controls .btn{font-size:.66rem;padding:7px 10px}}
.clothesline-gallery{margin:20px -12px 0}.clothesline-tip{text-align:center;color:var(--muted);font-size:.83rem;margin:0 20px 28px}.clothesline-tip span{display:none}.clothesline-scroll{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#a5ae95 #eeebe2;margin:0 0 15px;padding:12px 12px 0;outline-offset:-2px}.clothesline-row{position:relative;min-width:1080px;height:235px}.clothesline-cord{position:absolute;top:0;left:0;width:100%;height:80px;overflow:visible}.clothesline-cord path{fill:none;stroke:#a3977c;stroke-width:1.7;vector-effect:non-scaling-stroke;filter:drop-shadow(0 2px 1px #7a6e5125)}.cloth-card{position:absolute;top:var(--hang);left:calc(var(--slot)*10% + .7%);width:8.6%;margin:0;padding:7px 7px 23px;background:#fffdf8;border:1px solid #e4ded1;box-shadow:2px 6px 10px #51463316;transform:rotate(var(--tilt));transform-origin:top center}.clothespin{position:absolute;left:calc(50% - 5px);top:-16px;width:10px;height:29px;background:linear-gradient(90deg,#bea17b,#e2c59b 45%,#ba9c72 50%,#d4b98f);border:1px solid #b79a74;border-radius:2px;z-index:2;box-shadow:1px 2px 3px #554a3330}.clothespin:after{content:'';position:absolute;left:-1px;top:12px;width:10px;height:3px;border-top:1px solid #877557;border-bottom:1px solid #877557;background:#b4a07e}.cloth-card .memory-image{background:#efebe1}.cloth-card .empty-memory{font-size:1.8rem;color:#c3afa7}.cloth-card .memory-image>small{font-size:.48rem;bottom:7px;letter-spacing:0}.cloth-card figcaption h3{font-size:.6rem;text-align:center;margin:8px 0 0;line-height:1.3;font-family:Georgia,serif}.cloth-card .cloth-number{position:absolute;bottom:5px;right:7px;font-size:.45rem;color:#a39b8d}.cloth-card .zoom-hint{padding:2px 4px;font-size:.6rem;bottom:3px;right:3px}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(max-width:1120px){.clothesline-tip span{display:block;margin-top:7px;font-size:.75rem}.clothesline-row{height:225px}}
.memory-zoom{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:#f1ece3;cursor:zoom-in}.memory-zoom img{display:block}.memory-image.fit-contain img{object-fit:contain}.zoom-hint{position:absolute;right:7px;bottom:7px;padding:4px 8px;background:#fffaf2ed;color:#646f58;border:1px solid #d1d7c5;border-radius:3px;font-size:.62rem}.memory-dialog{border:1px solid #d6d6c9;border-radius:8px;padding:16px;background:var(--paper);max-width:94vw;max-height:94dvh;overflow:auto}.memory-dialog::backdrop{background:#34372ed9;backdrop-filter:blur(4px)}.memory-dialog img{display:block;width:auto;height:auto;max-width:85vw;max-height:78dvh;object-fit:contain;margin:0 auto}.memory-dialog button{display:block;margin:0 0 12px auto}.memory-dialog p{margin:12px 0 0;text-align:center;font-size:.8rem;color:var(--muted)}
.dress-etiquette{position:relative;margin:28px 0 8px;padding:28px 26px;border:1px solid #a8b198;border-radius:18px 4px;background:#fffdf280;box-shadow:inset 0 0 0 5px #eeeee5,inset 0 0 0 6px #bcc4ac80}
.dress-etiquette:before,.dress-etiquette:after{content:'❧';position:absolute;background:#eeeee5;color:#8b9b7a;font:28px/1 Georgia,serif;padding:0 8px;pointer-events:none}
.dress-etiquette:before{top:-14px;left:18px}.dress-etiquette:after{bottom:-14px;right:18px;transform:rotate(180deg)}
.dress-etiquette p{font-size:.91rem;line-height:1.8;margin-bottom:18px}.dress-etiquette p:last-child{margin-bottom:0;color:#627153}
@media(max-width:500px){.dress-etiquette{padding:25px 20px}.dress-etiquette p{font-size:.88rem}}
@media(prefers-reduced-motion:reduce){.opening,.opening-space{display:none!important}}
/* Foto à esquerda, memória à direita. */
.reaction-particles .saved-reaction{animation:saved-reaction-drift 5s ease-in-out infinite alternate;opacity:1}.reaction-particles .reaction-rain{animation:float-reaction 1.8s ease-out both;font-size:1.9rem}.memory-details .reaction-status{font-size:.67rem;color:var(--rose);text-align:center;line-height:1.5;margin:-8px 0 16px}.reaction-status:empty{display:none}@keyframes saved-reaction-drift{from{transform:translateY(0) rotate(-2deg)}to{transform:translateY(var(--bob,12px)) rotate(2deg)}}
@media(prefers-reduced-motion:reduce){.reaction-particles .saved-reaction{animation:none}.reaction-particles .reaction-rain{animation-name:fade-reaction}}
.reaction-identity{display:flex;flex-direction:column;gap:6px;margin:0 0 14px;font-size:.72rem;color:var(--muted)}.reaction-identity input{font-size:.84rem;padding:9px 12px}
.reaction-particles[popover]{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;pointer-events:none;overflow:visible}.reaction-particles .reaction-badge{display:flex;align-items:center;gap:7px;width:148px;animation-duration:3.5s;font-size:1.7rem}.reaction-badge strong{font:600 .74rem/1.4 'Segoe UI',sans-serif;color:#615d51;background:#fffaf1f5;border:1px solid #d7d4c4;box-shadow:0 3px 14px #0002;border-radius:20px;padding:6px 11px;max-width:106px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.memory-details .moment-comments{padding:18px 0 0;border:1px solid #dedace;border-radius:15px;background:#fffaf360;overflow:hidden}.moment-comments h3{text-align:center;font:600 .9rem 'Segoe UI',sans-serif;border-bottom:1px solid var(--line);padding:0 15px 16px;margin:0}.moment-comments .comment-list{height:220px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;margin:0;padding:14px 17px}.moment-comments .social-comment{display:flex;gap:10px;padding:12px 0;border:0;align-items:flex-start}.comment-avatar{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#e5e8db;color:#727f64;font-size:.66rem;font-weight:600}.comment-content{min-width:0;flex:1}.comment-content strong{font-size:.8rem}.memory-details .comment-content p{font-size:.82rem;line-height:1.5;margin:3px 0 7px}.comment-list .comment-content time{margin:0;font-size:.65rem}.moment-comments .comment-form{display:flex;gap:9px;align-items:center;padding:13px 15px;border-top:1px solid var(--line);background:#faf7f1}.comment-composer-label{flex:1;font-size:0!important;gap:0!important}.comment-composer-label textarea{min-height:42px;height:42px;max-height:120px;border-radius:22px;font-size:.79rem;resize:vertical;padding:10px 14px}.memory-details .comment-form button{background:none;border:0;color:var(--rose);padding:5px;font-weight:600}.memory-details .moment-comments .comments-note{padding:0 15px 12px;margin:0;font-size:.64rem}.memory-details .moment-comments .comment-status{padding:0 15px;font-size:.7rem;margin:6px 0}.comment-status:empty{display:none}
.memory-details .moment-reactions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0 0 20px}.memory-details .moment-reactions button{display:inline-flex;align-items:center;justify-content:center;margin:0;padding:6px;width:39px;height:39px;font-size:1.45rem;background:#ede9df;border:1px solid #ddd6c9;border-radius:50%;transition:transform .15s}.moment-reactions button:hover{transform:scale(1.12)}.reaction-particles{position:fixed;inset:0;pointer-events:none;z-index:100}.reaction-particles span{position:absolute;font-size:1.8rem;animation:float-reaction 1.8s ease-out both}@keyframes float-reaction{0%{opacity:0;transform:translate(0,0) scale(.6)}15%{opacity:1}100%{opacity:0;transform:translate(var(--drift),-180px) rotate(15deg) scale(1.25)}}
.moment-comments{padding:25px 0 0;margin-top:25px;border-top:1px solid var(--line)}.moment-comments h3{font-size:1.5rem;margin-bottom:10px}.memory-details .comments-note{font-size:.72rem;line-height:1.6;text-align:left;margin:0 0 17px}.comment-form{display:grid;gap:12px}.comment-form label{display:flex;flex-direction:column;gap:5px;font-size:.78rem}.comment-form input,.comment-form textarea{padding:9px 11px;font-size:.85rem}.comment-form textarea{min-height:80px}.memory-details .comment-form button{margin:0;justify-self:start;font-size:.75rem;padding:9px 14px}.memory-details .comment-status{text-align:left;font-size:.74rem;line-height:1.6}.comment-list{margin-top:20px}.comment-list article{border-bottom:1px solid var(--line);padding:13px 0}.comment-list strong{font-size:.82rem}.comment-list time{font-size:.65rem;color:var(--muted);margin-left:12px}.memory-details .comment-list p{text-align:left;font-size:.82rem;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;margin:7px 0}.memory-dialog .memory-media{position:sticky;top:0}.memory-details .dialog-description{overflow-wrap:anywhere}
@media(max-width:600px){.memory-dialog .memory-media{position:relative}.memory-details .moment-reactions{margin-top:0}.moment-comments{padding-top:20px}}
@media(prefers-reduced-motion:reduce){.reaction-particles span{animation-name:fade-reaction}@keyframes fade-reaction{0%,100%{opacity:0}20%,80%{opacity:1}}}
.memory-dialog{width:min(1080px,94vw);max-width:94vw;padding:0}
.memory-dialog[open]{display:grid;grid-template-columns:minmax(0,42fr) minmax(0,58fr);align-items:stretch}
.memory-media{min-width:0;min-height:0;display:flex;flex-direction:column;background:#eae5dc;height:min(78dvh,700px)}
.memory-media .memory-carousel{flex:1;min-height:0;height:auto;gap:6px;padding:10px 4px}
.memory-media .memory-carousel.single{padding:0}
.memory-media .carousel-controls{flex:none;gap:10px;margin:0;padding:12px 8px;background:#f1ece2}
.memory-media .carousel-controls .btn{font-size:.65rem;padding:7px 9px}
.memory-details{min-width:0;padding:22px 32px 35px;align-self:stretch}
.memory-details .dialog-close{margin:0 0 25px auto;padding:9px 20px}
.memory-details h2{font-size:2rem;margin:0 0 8px;line-height:1.25}
.memory-details .dialog-date{margin:0 0 28px;color:var(--rose);font-size:.8rem}
.memory-details .dialog-description{max-width:470px;font-size:.94rem;line-height:1.85;margin:0 auto;color:var(--muted)}
@media(max-width:600px){.memory-dialog[open]{grid-template-columns:1fr}.memory-media{height:47dvh}.memory-details{padding:20px 24px 30px}.memory-details .dialog-close{margin-bottom:18px}.memory-details h2{font-size:1.5rem}.memory-details .dialog-date{margin-bottom:18px}.memory-details .dialog-description{font-size:.86rem}.memory-details .dialog-close{position:absolute;right:9px;top:9px;z-index:2;background:var(--paper);box-shadow:0 2px 8px #0001}.memory-media .memory-carousel:not(.single){padding-top:52px}}
/* O painel cabe no modal; somente a lista de comentários rola. */
.memory-dialog{height:min(90dvh,780px);max-height:90dvh;overflow:hidden}
.memory-dialog .memory-media{height:100%;position:relative;min-height:0}
.memory-details{position:relative;display:flex;flex-direction:column;min-height:0;height:100%;padding:14px 20px;overflow:hidden}
.memory-details>*{flex-shrink:0}
.memory-details .dialog-close{position:absolute;top:12px;right:14px;margin:0;padding:6px 12px;font-size:.66rem}
.memory-details .reaction-identity{font-size:.65rem;gap:4px;margin:0 85px 9px 0}
.reaction-identity input{padding:6px 9px;font-size:.76rem}
.memory-details .moment-reactions{gap:7px;margin:0 0 8px}.memory-details .moment-reactions button{width:31px;height:31px;font-size:1.15rem;padding:3px}
.memory-details h2{font-size:1.55rem;margin:4px 0 5px}.memory-details .dialog-date{font-size:.7rem;margin:0 0 9px}
.memory-details .dialog-description{font-size:.8rem;line-height:1.5;margin:0 auto 9px}
.memory-details .reaction-status{font-size:.6rem;line-height:1.3;margin:0 0 6px}
.memory-details .moment-comments{display:flex;flex-direction:column;flex:1;min-height:0;padding-top:10px;margin-top:8px}
.memory-details .moment-comments h3{font-size:.88rem;padding:0 10px 9px;margin:0}
.moment-comments .comment-list{flex:1;min-height:0;height:auto;overflow-y:auto;padding:6px 12px}
.moment-comments .comment-form{flex:none;padding:8px 10px;gap:6px}
.comment-form .comment-composer-label textarea{height:38px;min-height:38px;max-height:38px;resize:none;font-size:.75rem;padding:8px 11px}
.memory-details .moment-comments .comments-note{font-size:.57rem;line-height:1.35;padding:0 10px 7px}
.memory-details .moment-comments .comment-status{font-size:.62rem;line-height:1.3;padding:0 10px;margin:3px 0}
@media(max-width:600px){.memory-dialog[open]{grid-template-rows:minmax(0,23dvh) minmax(0,1fr)}.memory-details{padding:10px 14px}.memory-details .dialog-close{top:9px;right:12px;box-shadow:none}.memory-media .memory-carousel:not(.single){padding-top:4px}.memory-details h2{font-size:1.25rem}.memory-details .dialog-description{font-size:.74rem;line-height:1.4}.memory-media .carousel-controls{padding:4px 6px}.memory-media .carousel-controls .btn{padding:3px 7px;font-size:.6rem}}
@media(max-height:700px){.memory-details .reaction-identity{font-size:.6rem;margin-bottom:6px}.memory-details .moment-reactions{margin-bottom:4px}.memory-details .moment-reactions button{width:27px;height:27px;font-size:1rem}.memory-details h2{font-size:1.2rem;margin-top:2px}.memory-details .dialog-date{margin-bottom:5px}.memory-details .dialog-description{font-size:.72rem;line-height:1.35;margin-bottom:5px}.memory-details .moment-comments{margin-top:4px}}

.cloth-card.cloth-card-rose { background: #a45470; border-color: #8f4560; color: white; }
.cloth-card-rose figcaption h3, .cloth-card-rose .cloth-date, .cloth-card-rose .cloth-number { color: white; }

.clothesline-row.clothesline-featured { min-width: 680px; height: auto; aspect-ratio: 3 / 1; min-height: 265px; }
.clothesline-featured .cloth-card { left: calc(var(--slot) * var(--featured-step) + 1.25%); width: calc(var(--featured-step) - 2.5%); }
.clothesline-featured .cloth-card figcaption h3 { font-size: .9rem; }
.clothesline-featured .cloth-card .cloth-date { font-size: .72rem; }
.clothesline-featured .memory-image { aspect-ratio: 4 / 3; }
