@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&display=swap');
:root{--ink:#492f37;--muted:#674e57;--plum:#753d52;--paper:#fffbf7;--line:#e4cfc8;--petal:#f7e9e5;--serif:"Instrument Serif",Georgia,serif;--sans:"DM Sans",system-ui,sans-serif;color:var(--ink);background:var(--paper);font-family:var(--sans);font-size:16px;color-scheme:light}
*{box-sizing:border-box}
body{margin:0}
a{color:var(--plum)}
h1,h2,p{margin:0}
h1,h2{font-family:var(--serif);font-weight:400}
button,input{font:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid #843c61;outline-offset:4px}
.hero{position:relative;display:grid;place-items:center;min-height:min(790px,95svh);padding:60px 18px 42px;background:#f8eee8 url('/jardim.webp') center 54%/cover no-repeat;border-bottom:1px solid var(--line);isolation:isolate}
.hero::after{position:absolute;z-index:-1;inset:0;content:"";background:radial-gradient(ellipse at center,#fffaf1ed 10%,#fff8ef87 45%,transparent 74%)}
.hero-inner{position:relative;display:flex;align-items:center;flex-direction:column;justify-content:center;text-align:center;width:min(100%,38rem);padding:32px 30px 35px;background:#fff9f0e6;border:1px solid #d2a895;outline:1px solid #edd9d0;outline-offset:5px;border-radius:17rem 17rem 1.4rem 1.4rem;box-shadow:0 22px 64px #6e384721}
.theme{color:var(--plum);font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;line-height:1.6}
.hero .theme{max-width:210px;margin:12px auto}
.figures{display:flex;align-items:end;justify-content:center;gap:.16em;font-size:clamp(154px,24vh,210px);margin:4px auto 10px}
.figure-mary,.figure-jesus{display:block;flex:none;background-image:url('/figuras.jpeg');background-repeat:no-repeat}
.figure-mary{
  width:.528em;height:1em;background-size:337.95% 267.42%;background-position:6.24% 93.55%;
  clip-path:polygon(37.29% 1.05%,47.19% 1.05%,54.13% 1.92%,60.73% 3.83%,66.67% 7.14%,70.63% 11.15%,73.60% 15.85%,76.90% 25.09%,80.53% 33.97%,86.47% 44.25%,86.47% 48.43%,91.09% 50.35%,96.70% 50.52%,98.02% 51.39%,95.71% 52.61%,98.35% 54.88%,99.67% 56.45%,98.35% 58.01%,95.71% 58.71%,92.74% 58.54%,87.13% 58.01%,86.47% 65.51%,88.78% 68.99%,87.46% 71.95%,86.47% 75.44%,82.84% 77.35%,78.88% 81.18%,73.27% 84.15%,75.25% 90.59%,71.95% 93.03%,68.32% 94.25%,70.96% 95.82%,71.95% 97.39%,69.31% 98.43%,61.39% 98.78%,56.11% 98.08%,53.47% 96.69%,53.14% 94.25%,47.85% 94.43%,46.86% 96.34%,43.23% 98.26%,38.28% 99.13%,33.33% 99.13%,29.70% 97.91%,30.36% 95.99%,33.00% 94.08%,27.72% 93.38%,19.14% 90.77%,21.78% 85.71%,15.51% 85.19%,11.88% 83.80%,15.18% 80.49%,10.56% 78.75%,11.22% 74.04%,8.91% 73.34%,6.60% 71.25%,6.60% 67.25%,7.26% 62.37%,8.91% 60.63%,5.28% 60.80%,4.29% 59.93%,2.31% 59.23%,1.32% 58.01%,2.64% 56.45%,0.99% 55.40%,0.99% 54.36%,4.29% 53.66%,2.97% 51.74%,0.99% 48.61%,1.65% 44.43%,6.60% 34.15%,8.58% 23.34%,9.90% 16.90%,11.55% 11.67%,15.18% 7.84%,20.46% 4.88%,28.38% 2.26%);
}
.figure-jesus{
  width:.523em;height:.927em;background-size:341.33% 288.53%;background-position:93.78% 93.42%;
  clip-path:polygon(57.33% 0.94%,65.67% 0.56%,71.00% 1.50%,75.00% 3.38%,79.00% 2.82%,85.00% 3.57%,89.67% 5.45%,93.67% 8.65%,95.00% 12.22%,96.33% 15.60%,98.67% 17.29%,97.00% 18.61%,98.67% 19.92%,96.67% 21.80%,97.67% 24.62%,96.67% 26.88%,94.00% 28.01%,92.33% 29.89%,89.67% 31.02%,91.33% 32.71%,89.00% 34.21%,86.00% 34.77%,85.00% 36.09%,80.33% 37.22%,83.67% 39.85%,90.00% 41.73%,94.00% 46.62%,97.67% 50.56%,99.00% 55.45%,97.67% 60.53%,95.00% 64.10%,94.67% 69.74%,94.00% 73.31%,96.67% 77.26%,96.00% 80.08%,91.33% 81.77%,88.00% 84.40%,89.67% 89.85%,89.00% 92.11%,83.33% 94.36%,78.33% 95.30%,80.33% 97.37%,79.00% 98.87%,76.67% 99.62%,69.67% 99.62%,64.00% 98.50%,59.00% 97.74%,57.33% 95.68%,51.33% 95.30%,50.00% 96.43%,45.33% 97.74%,40.67% 98.68%,33.67% 98.31%,30.33% 97.37%,30.00% 96.05%,31.67% 93.98%,37.00% 91.17%,29.00% 89.29%,27.00% 87.59%,28.33% 82.33%,24.00% 81.02%,22.33% 79.51%,22.00% 77.63%,23.33% 72.37%,27.00% 65.04%,29.67% 59.77%,26.33% 61.84%,23.00% 62.78%,20.33% 61.65%,17.00% 59.02%,14.67% 55.64%,14.33% 52.82%,8.00% 51.88%,3.33% 50.94%,1.00% 49.62%,1.00% 48.31%,3.00% 47.37%,3.33% 46.24%,7.00% 45.30%,10.33% 44.92%,8.33% 43.80%,8.67% 42.48%,12.00% 42.67%,18.00% 44.17%,23.00% 44.74%,29.00% 42.67%,36.33% 39.85%,42.33% 37.41%,38.33% 37.78%,35.33% 37.03%,35.67% 35.90%,32.33% 33.46%,37.00% 34.21%,34.33% 32.52%,32.67% 30.26%,29.33% 28.57%,28.00% 26.32%,28.33% 23.68%,26.67% 22.56%,28.67% 20.11%,26.67% 18.05%,26.67% 15.60%,29.33% 15.98%,31.33% 14.10%,34.67% 11.09%,38.33% 8.08%,44.00% 4.89%,50.33% 2.44%);
}
.ornament{font-family:var(--serif);font-size:4rem;line-height:1.1;color:#b27489;padding:10px}
h1{font-size:clamp(4.4rem,10vw,8.75rem);line-height:.92;color:#69374b}
.title-prefix{display:block;font-style:italic;font-size:.44em;margin-bottom:.07em}
.title-name{display:block}
.title-word,.title-letter{display:inline-block}
.hero time{display:block;margin-top:23px;color:#6a414e;font-size:1rem;font-weight:600}
.dedication{max-width:30ch;font-size:.86rem;font-weight:700;letter-spacing:.06em;line-height:1.4;margin:12px auto 0}
.button{display:inline-flex;justify-content:center;align-items:center;gap:8px;text-align:center;text-decoration:none;padding:11px 19px;min-height:47px;border:1px solid var(--plum);background:var(--plum);color:#fffdf8;border-radius:999px;font-size:.9rem;font-weight:700;line-height:1.2;transition:background .16s,color .16s}
.button:hover{background:#592f41;color:white}
.button.secondary{background:transparent;color:var(--plum);border-color:#c69bac}
.button.secondary:hover{background:#f5e2e7}
.hero .button{margin-top:26px}
.music{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 12px;border:1px solid #d6b8aa;border-radius:999px;background:#fffaf7;color:var(--plum);font-size:.77rem}
.music svg{width:14px;height:14px}
.content{width:min(100%,58rem);padding:0 24px;margin:auto;text-align:center}
blockquote{max-width:27ch;margin:0 auto;color:#74495a;font:italic clamp(2rem,5vw,3.3rem)/1.16 var(--serif);padding:73px 0 62px;text-wrap:balance}
.details{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.card{border:1px solid var(--line);border-radius:26px;background:#fffdfb;padding:28px 15px 30px}
h2{font-size:clamp(2rem,4vw,2.8rem);line-height:1.05;color:#69374b;margin:8px 0 12px}
.card-icon{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--petal);color:var(--plum)}
.card p,.rsvp>p{font-size:.96rem;line-height:1.55;color:var(--muted);margin-top:6px}
.rsvp{border-radius:2rem;background:var(--petal);border:1px solid var(--line);margin:30px auto 0;padding:36px 20px}
.actions{display:flex;justify-content:center;flex-wrap:wrap;gap:9px;margin:20px auto 0}
.status{font-weight:700}
.status:empty{display:none}
.helper,.rsvp>.helper{color:var(--muted);font-size:.84rem;line-height:1.5;margin-top:18px}
footer{padding:58px 0 62px;color:#6d4553;line-height:1.7}
.envelope-stage{display:none}
.awaiting-invitation .invitation{display:none}
.awaiting-invitation .envelope-stage{
  display:grid;place-items:center;overflow:hidden;min-height:100vh;min-height:100svh;
  padding:36px 26px;background:#f8eee8 url('/jardim.webp') center/cover no-repeat;
}
.envelope-intro{width:min(100%,31rem);text-align:center}
.envelope-caption{
  color:#69374b;font:italic clamp(2.4rem,7vw,4rem)/1 var(--serif);
  margin:0 0 clamp(36px,7vh,65px);
}
.envelope-caption:has(+.envelope-recipient){margin-bottom:14px}
.envelope-recipient{
  display:table;max-width:100%;margin:0 auto clamp(27px,5vh,46px);padding:7px 15px;
  border:1px solid #e4c7bc;border-radius:999px;background:#fff9f1;color:#69374b;
  font-size:.86rem;line-height:1.35;overflow-wrap:anywhere;
}
.envelope-button{
  display:grid;justify-items:center;gap:25px;width:100%;padding:6px 4px;
  border:0;background:none;color:var(--plum);border-radius:16px;
  -webkit-tap-highlight-color:transparent;
}
.envelope{position:relative;display:block;width:min(100%,28rem);aspect-ratio:1.62;perspective:1000px;isolation:isolate}
.envelope-back,.envelope-pocket,.envelope-flap{position:absolute;inset:0;display:block}
.envelope-back{
  z-index:0;background:linear-gradient(156deg,#d6a198,#edd0c4 76%);border:1px solid #bb8a83;
  border-radius:9px;box-shadow:0 22px 32px #6d354b29,0 5px 10px #6d354b1c;
}
.envelope-pocket{
  z-index:2;border-radius:9px;clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%);
  background:
    linear-gradient(33deg,transparent 49.5%,#ae727442 50%,transparent 50.6%) left bottom / 50% 100% no-repeat,
    linear-gradient(-33deg,transparent 49.5%,#ae727442 50%,transparent 50.6%) right bottom / 50% 100% no-repeat,
    linear-gradient(156deg,#f6e1d9,#e6b9b0);
}
.envelope-flap{
  z-index:3;height:62%;transform-origin:50% 0;border-radius:9px 9px 0 0;
  clip-path:polygon(0 0,100% 0,50% 100%);
  background:linear-gradient(172deg,#fae7de,#ecc2b8);
}
.envelope-card{
  position:absolute;z-index:1;top:8%;left:7%;width:86%;height:83%;display:grid;align-content:center;gap:3px;
  border:1px solid #e2c6b8;border-radius:7px;background:#fff9f0 url('/jardim.webp') center/cover;
  color:#794653;font:clamp(2rem,8vw,4rem)/.95 var(--serif);box-shadow:0 4px 14px #703e4b23;
}
.envelope-card-text i{display:block;font-size:.5em}
.envelope-card:has(.figures){grid-template-columns:auto minmax(0,1fr);align-items:center;padding:9px 7%;gap:5%}
.envelope-card .figures{font-size:clamp(62px,14vw,116px);gap:.01em;margin:0}
.envelope-card-text{white-space:nowrap;font-size:clamp(1.3rem,5vw,2.65rem)}
.envelope-seal{
  position:absolute;z-index:4;top:57%;left:50%;transform:translate(-50%,-50%);display:grid;place-items:center;
  width:clamp(34px,10vw,53px);aspect-ratio:1;border-radius:46% 52% 46% 53%;
  color:#ffe7d9;background:radial-gradient(circle at 34% 31%,#ca8899,#9b526a 76%);
  box-shadow:inset 0 0 0 3px #ac617680,0 3px 6px #753c5266;font-size:clamp(18px,5vw,25px);
}
.open-label{display:inline-flex;align-items:center;gap:10px;padding:9px 15px;font-weight:700;font-size:.84rem;letter-spacing:.035em}
.open-label span{font-size:1.05em}
.envelope-button:hover .open-label{text-decoration:underline;text-underline-offset:5px}
.opening-invitation .envelope-button{pointer-events:none}
.opening-invitation .envelope-seal{animation:seal-away .28s ease-in forwards}
.opening-invitation .envelope-flap{animation:unfold .48s cubic-bezier(.3,.1,.3,1) .08s both}
.opening-invitation .envelope-card{animation:lift-card .54s cubic-bezier(.22,.8,.24,1) .35s both}
.opening-invitation .envelope-intro{animation:envelope-out .22s ease-in .76s both}
.invitation-open .hero-inner{animation:arrive .88s cubic-bezier(.2,.75,.21,1) both}
.invitation-open .hero .figures{animation:arrive .9s cubic-bezier(.2,.75,.21,1) .1s both}
.invitation-open .title-prefix{animation:arrive .8s ease .18s both}
.invitation-open .title-letter{animation:letter-in .84s cubic-bezier(.22,.7,.23,1) both;animation-delay:calc(.28s + var(--letter)*42ms)}
[data-reveal]{transition:opacity .68s ease,translate .68s cubic-bezier(.2,.75,.21,1)}
.waiting-for-scroll:not(:focus-within){opacity:0;translate:0 18px}
#detalhes,#presenca,#recados{scroll-margin-block-start:22px}
.guestbook{max-width:42rem;margin:72px auto 0;text-align:center}
.guestbook .card-icon{font-size:1.45rem}
.guestbook-intro,.guestbook-empty{color:var(--muted);font-size:.95rem;line-height:1.55}
.guestbook-form{
  display:grid;text-align:left;gap:9px;margin:24px 0;padding:clamp(17px,5vw,30px);
  background:#fffdfb;border:1px solid var(--line);border-radius:26px;
}
.guestbook-form label{font-size:.91rem;font-weight:700}
.guestbook-form input,.guestbook-form textarea{
  width:100%;padding:12px 13px;background:#fffaf7;border:1px solid #d7b9bd;border-radius:10px;
  color:var(--ink);font:inherit;
}
.guestbook-form input{margin-bottom:7px}
.guestbook-form textarea{resize:vertical}
.guestbook-form .helper{margin:3px 0 4px}
.guestbook-form button{justify-self:start}
.note-feedback{color:var(--plum);font-size:.91rem;font-weight:700}
.note-feedback:empty,.guestbook-empty[hidden]{display:none}
.dashboard{
  width:min(100% - 40px,68rem);margin:42px auto 65px;color:var(--ink);
}
.dashboard-header{
  padding:30px clamp(18px,4vw,40px);border:1px solid var(--line);border-radius:24px;
  background:linear-gradient(112deg,#fff9f2 43%,#fcebe9a3),url('/jardim.webp') right 34%/cover;
}
.dashboard-header h1{font-size:clamp(3rem,8vw,5.4rem);margin:9px 0 13px}
.dashboard-header>p:last-child,.dashboard-list-head p,.guest-identity p{color:var(--muted);font-size:.9rem;line-height:1.55}
.dashboard-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:15px 0 32px}
.dashboard-stats div{
  display:grid;gap:4px;padding:15px clamp(10px,2vw,20px);background:#fffdfb;border:1px solid var(--line);border-radius:14px;
}
.dashboard-stats strong{font:2.3rem/1 var(--serif);color:var(--plum)}
.dashboard-stats span{color:var(--muted);font-size:.86rem;line-height:1.3}
.dashboard-list-head,.dashboard-controls{display:flex;align-items:end;justify-content:space-between;flex-wrap:wrap;gap:12px}
.dashboard-list-head h2{margin:0 0 4px}
.dashboard-actions,.guest-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.dashboard-controls{margin:18px 0;justify-content:start}
.dashboard-controls label{display:grid;gap:5px;color:var(--muted);font-size:.83rem;font-weight:700}
.dashboard-controls input,.dashboard-controls select{
  padding:9px 12px;min-height:45px;border:1px solid #d7b9bd;border-radius:10px;background:#fffdfb;color:var(--ink);font:inherit;
}
#painel-aviso{min-height:1.4em;margin:0 0 8px;color:var(--plum);font-size:.88rem}
.dashboard-guests{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.dashboard-guest{
  display:grid;grid-template-columns:minmax(9rem,1fr) minmax(12rem,1fr) minmax(16rem,1.18fr);
  gap:14px;align-items:center;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fffdfb;
}
.dashboard-guest[hidden]{display:none}
.guest-identity h3{margin:0 0 4px;font-size:.94rem;overflow-wrap:anywhere}
.guest-progress{display:grid;grid-template-columns:auto 1fr;gap:10px}
.guest-progress>div{display:grid;justify-items:start;align-content:start;gap:4px}
.progress-label,.response-time{color:var(--muted);font-size:.72rem}
.response-time:empty{display:none}
.guest-actions .button,.dashboard-actions .button{font-size:.77rem;min-height:39px;padding:7px 12px}
.guest-actions .copy,.guest-open{font-size:.78rem;margin:0}
@media(max-width:760px){
  .dashboard{width:min(100% - 28px,38rem);margin-top:20px}
  .dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-guest{grid-template-columns:minmax(0,1fr)}
  .guest-progress{grid-template-columns:minmax(7rem,auto) 1fr}
  .dashboard-controls label{flex:1 1 9rem;min-width:0}
  .dashboard-controls input,.dashboard-controls select{width:100%}
}
.guestbook-messages{display:grid;gap:10px}
.guestbook-note{
  padding:15px 20px 17px;text-align:left;overflow-wrap:anywhere;background:#f7ece8;
  border-radius:0 15px 15px 0;border-inline-start:3px solid #c892a4;
}
.guestbook-note h3{margin:0 0 5px;font:1.45rem/1.1 var(--serif);color:var(--plum)}
.guestbook-note p{color:var(--muted);line-height:1.55;font-size:.94rem;white-space:pre-wrap}
#title:focus{outline:none}
@keyframes seal-away{to{opacity:0;transform:translate(-50%,-61%) scale(.87)}}
@keyframes unfold{0%{transform:rotateX(0);z-index:3}49%{z-index:3}50%{z-index:0}100%{transform:rotateX(176deg);z-index:0}}
@keyframes lift-card{to{translate:0 -49%;rotate:-3deg}}
@keyframes envelope-out{to{opacity:0;translate:0 -12px}}
@keyframes arrive{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}
@keyframes letter-in{from{opacity:0;translate:0 .17em;filter:blur(3px)}to{opacity:1;translate:0 0;filter:blur(0)}}
@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
.organizer{width:min(100% - 32px,67rem);margin:42px auto 60px}
.organizer h1{font-size:clamp(2.8rem,7vw,5rem);margin:12px 0 22px}
.organizer .counts{display:flex;flex-wrap:wrap;gap:12px 24px;margin-bottom:20px}
.table-scroll{overflow:auto;margin-top:22px;border:1px solid var(--line);border-radius:14px}
table{width:100%;border-collapse:collapse;text-align:left}
caption{text-align:left;padding:12px 14px;background:#f9eeea}
td,th{padding:11px 14px;border-bottom:1px solid #ecdcd8;white-space:nowrap}
thead{background:#f7e6e8}
td small,th small{color:var(--muted)}
.pill{font-size:.83rem;padding:4px 9px;border-radius:99px;background:#f0e5db}
.pill.yes{background:#dee8d3;color:#344c2c}
.pill.no{background:#f1dce2;color:#703d4d}
.copy-source{position:absolute;width:1px;height:1px;clip-path:inset(50%);opacity:0}
.copy{color:var(--plum);border:1px solid #cfadb6;border-radius:8px;background:white;padding:5px 8px;margin-right:5px}
.sign-in{max-width:26rem;margin-top:13vh}
.sign-in form{display:grid;gap:12px}
.sign-in input{border:1px solid #c69bac;border-radius:8px;padding:11px;background:#fffdfb}
@media(max-width:560px){
  .hero{padding:32px 22px;min-height:min(690px,91svh);background-position:center}
  .hero-inner{padding:22px 13px 26px;min-height:440px}
  .hero .button{margin-top:19px}
  .hero h1{font-size:clamp(3.4rem,14vw,5.4rem)}
  .content{padding:0 17px}
  blockquote{padding:46px 6px 40px}
  .details{grid-template-columns:1fr;gap:12px}
  .rsvp{padding:29px 15px}
}
@media(prefers-reduced-motion:reduce){
  *,*::after,*::before{transition:none!important;animation:none!important;scroll-behavior:auto!important}
  .waiting-for-scroll:not(:focus-within){opacity:1;translate:none}
}

