@charset "UTF-8";
:root{--ink:#633e4f;--muted:#947581;--rose:#ac436d;--rose-hover:#913355;--rose-light:#f6e5eb;--paper:#fffaf6;--line:#eadce0;--gold:#b58c52;--serif:Georgia,'Times New Roman',serif;--sans:'Segoe UI',Arial,sans-serif;color-scheme:light;font-family:var(--sans);color:var(--ink);background:#faedf0;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}button{color:inherit}button:disabled{cursor:not-allowed;opacity:.5}[hidden]{display:none!important}.icon-defs{position:absolute;width:0;height:0;overflow:hidden}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #b58c52;outline-offset:4px}button{touch-action:manipulation}.button{border:0;border-radius:100px;min-height:54px;padding:15px 26px;display:inline-flex;gap:18px;justify-content:center;align-items:center;font-size:14px;letter-spacing:.02em;font-weight:600;text-decoration:none;transition:background .2s,transform .2s,box-shadow .2s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--rose);color:white;box-shadow:0 6px 20px #9e3d6020}.button-primary:hover{background:var(--rose-hover);box-shadow:0 9px 25px #9e3d6030}.button-outline{border:1px solid #ddc9d0;background:transparent;color:var(--ink)}.button-outline:hover{background:#f7eaf0}.text-button{border:0;background:none;padding:10px 4px;min-height:44px;font-size:13px;display:inline-flex;gap:8px;align-items:center;justify-content:center;text-underline-offset:4px}.text-button:hover{text-decoration:underline}.icon-button{display:grid;place-items:center;border:1px solid var(--line);background:transparent;border-radius:50%;width:42px;height:42px}.icon-button:hover{background:var(--rose-light)}.eyebrow{font-size:10px;letter-spacing:.23em;font-weight:600}.welcome{min-height:100svh;position:relative;isolation:isolate;display:flex;flex-direction:column;overflow:hidden;background:#faedf0}.welcome-scene{position:absolute;inset:0;z-index:-2;background-image:linear-gradient(90deg,#faedf0d9,#fff2ed92 40%,#faedf0b0),url('assets/confeitaria.jpg');background-size:cover;background-position:center 46%;opacity:.72;animation:scene-enter 1.4s ease-out both}.welcome:after{content:'';position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at 50% 45%,#fff7f2e8 0%,#fff7f2bf 25%,transparent 68%),linear-gradient(0deg,#faedf0fa,transparent 22%,transparent 80%,#faedf0ba);pointer-events:none}.masthead{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:30px 4.5vw;font-size:9px;letter-spacing:.2em;color:#835a6b}.tiny-star{font-size:25px;color:var(--gold)}.welcome-content{margin:auto;text-align:center;padding:24px 24px 50px;animation:content-enter .85s .1s both}.bow{display:block;margin:0 auto 22px}.welcome-content .eyebrow{color:#97617a;margin:0 0 18px}.welcome h1{font-family:var(--serif);font-size:clamp(78px,9.5vw,128px);font-weight:400;line-height:.95;letter-spacing:-.065em;margin:0;color:#a74d74}.welcome h1 span{display:block;font-size:clamp(31px,4vw,43px);letter-spacing:-.025em;line-height:1.5;color:var(--ink)}.welcome h1 em{font-size:1.35em;font-weight:400;color:var(--rose)}.welcome-copy{font-size:15px;line-height:1.8;margin:22px 0 24px;color:#805c6c}.date-line{display:flex;gap:15px;align-items:center;justify-content:center;font-size:12px;margin:0 0 30px}.date-dot{color:var(--gold);font-size:11px}.welcome-content>.button{min-width:244px}.sound-hint{font-size:10px;display:flex;gap:6px;align-items:center;justify-content:center;color:#8e6d7b;margin:13px 0 0}.sound-hint .icon{width:13px;height:13px}.welcome-footer{display:flex;justify-content:space-between;gap:12px;margin:0 4.5vw 45px;font-size:9px;letter-spacing:.14em;color:#8a6775}.welcome-footer .family-label{letter-spacing:.04em}.preview-label{position:fixed;z-index:4;bottom:9px;left:50%;transform:translateX(-50%);font-size:9px;letter-spacing:.13em;color:#8d6b78;background:#fffaf6dd;border:1px solid #eadce0;border-radius:20px;padding:5px 11px;white-space:nowrap;pointer-events:none}.preview-label span{letter-spacing:.02em;text-transform:none}
/* O vídeo é a experiência inteira. A moldura segue a proporção da arte,
   de modo que as áreas clicáveis nunca se desloquem ou sejam cortadas. */
body.watching-invite{overflow:hidden;background:#000}
.invitation{position:fixed;inset:0;width:100%;height:100dvh;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);place-items:center;background:#000;overflow:hidden}
.invitation:fullscreen{width:100%;height:100%;background:#000}
.video-frame{position:relative;width:min(100vw,56.25dvh);height:min(100dvh,177.7777778vw);overflow:hidden;isolation:isolate;container-type:inline-size;background:#000}
.video-frame video,.final-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.final-art{z-index:1}
.final-hotspots{position:absolute;inset:0;z-index:2;pointer-events:none}
.hotspot{position:absolute;top:70.2%;height:11.7%;width:19%;border:0;border-radius:16px;background:transparent;padding:0;pointer-events:auto}
.hotspot-location{left:31.5%}
.hotspot-rsvp{left:50.1%}
.hotspot:hover{background:transparent}
.hotspot:focus-visible{outline:2px solid #fff;outline-offset:2px}
.is-final .final-art{animation:final-art-enter .7s ease-out both}
.button-content{display:none;pointer-events:none}
.is-final .button-content{display:block;animation:final-art-enter .7s ease-out both}
/* Os ícones usam janelas de recorte com a mesma proporção e tamanho.
   A legenda tem a mesma tipografia e altura nos dois botões. */
.button-icon{display:block;width:100%;aspect-ratio:122/132;background-repeat:no-repeat}
.button-icon-rsvp{background-image:url('assets/botao-confirmar.png');background-size:590.163934% 969.696970%;background-position:69.063545% 77.787456%}
.button-icon-location{background-image:url('assets/convite-final.jpg');background-size:750% 1230.769231%;background-position:39.743590% 76.275510%;mix-blend-mode:multiply;mask-image:radial-gradient(ellipse 45% 42% at 50% 62%,#000 96%,transparent 100%),radial-gradient(ellipse 26% 23% at 25% 24%,#000 96%,transparent 100%),radial-gradient(ellipse 26% 23% at 75% 24%,#000 96%,transparent 100%),radial-gradient(ellipse 25% 17% at 50% 21%,#000 96%,transparent 100%);mask-repeat:no-repeat}
.button-caption{display:block;margin-top:.8cqw;font-family:'Segoe Print','Comic Sans MS',cursive;font-size:2.6cqw;font-weight:700;line-height:1.15;text-align:center;white-space:nowrap}
.hotspot-location .button-caption{color:#bc5e9c}
.hotspot-rsvp .button-caption{color:#27b0e2}
.is-final .hotspot{top:69.6%;width:18%;height:auto;transform-origin:50% 75%;will-change:transform;animation:button-hop 3.6s .75s ease-in-out infinite}
.is-final .hotspot-location{left:29.6%;animation-delay:2.55s}
.is-final .hotspot-rsvp{left:56.8%}
.is-final .hotspot:hover,.is-final .hotspot:focus-visible,.is-final .hotspot:active{animation-play-state:paused}
@keyframes final-art-enter{from{opacity:0}to{opacity:1}}
@keyframes button-hop{
  0%,5%,43%,100%{transform:translateY(0) rotate(0) scale(1)}
  10%{transform:translateY(1%) rotate(0) scale(1.035,.96)}
  20%{transform:translateY(-13%) rotate(-3deg) scale(1.025)}
  29%{transform:translateY(0) rotate(1deg) scale(1.025,.975)}
  35%{transform:translateY(-5%) rotate(1.5deg) scale(1.01)}
}
.video-retry{position:absolute;inset:0;width:100%;height:100%;z-index:3;border:0;padding:0;background:transparent}
/* Em celulares altos, preenche a tela cortando apenas as laterais decorativas.
   A arte e os hotspots compartilham a mesma superfície 9:16. */
@media (max-aspect-ratio:9/16) and (min-aspect-ratio:2/5){
  .video-frame{width:56.25dvh;height:100dvh}
}
.sheet{position:fixed;inset:0 0 0 auto;margin:0;width:min(560px,100%);max-width:100%;height:100%;max-height:100%;padding:0;border:0;background:var(--paper);color:var(--ink);box-shadow:-20px 0 80px #4c263525;overflow-y:auto;overscroll-behavior:contain}.sheet::backdrop{background:#3f263954;backdrop-filter:blur(7px)}.sheet[open]{animation:sheet-enter .35s cubic-bezier(.2,.8,.2,1)}body:has(dialog[open]){overflow:hidden}.sheet-shell{min-height:100%;display:flex;flex-direction:column}.sheet-handle{display:none}.sheet-top{display:flex;justify-content:space-between;align-items:center;padding:26px 32px 20px;border-bottom:1px solid var(--line)}.sheet-brand{font-family:var(--serif);font-size:24px;letter-spacing:-.04em}.sheet-brand i{font-size:14px;color:var(--rose);margin-left:5px}#rsvp-content{display:flex;flex:1;flex-direction:column}.form-body{padding:30px 32px 10px;flex:1}.step-label{font-size:10px;letter-spacing:.15em;color:#967481;margin:0 0 14px}.steps{display:flex;gap:5px;margin-bottom:30px}.steps span{height:3px;flex:1;border-radius:10px;background:#eadde1}.steps span.current{background:var(--rose)}h2{font-family:var(--serif);font-size:38px;font-weight:400;line-height:1.12;letter-spacing:-.04em;margin:0 0 13px}.form-intro{font-size:13px;color:#8b6b78;line-height:1.7;margin:0 0 24px}.attendance-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:23px}.choice{border:1px solid var(--line);border-radius:13px;padding:16px 10px;background:transparent;text-align:center;min-height:74px;font-size:13px}.choice.selected{border-color:var(--rose);background:#f8eaf0;color:#973c62;box-shadow:inset 0 0 0 1px var(--rose)}.choice>span{display:block;font-size:19px;margin-bottom:5px}.person-row{padding:17px 0;border-bottom:1px solid var(--line)}.person-check{display:flex;align-items:center;gap:12px;cursor:pointer;min-height:30px}.person-check input{appearance:none;width:23px;height:23px;flex-shrink:0;border:1px solid #cbb2be;border-radius:7px;margin:0;background:white;display:grid;place-content:center}.person-check input:checked{background:var(--rose);border-color:var(--rose)}.person-check input:checked:after{content:'';width:10px;height:5px;border-bottom:2px solid white;border-left:2px solid white;transform:rotate(-45deg) translateY(-1px)}.person-name{font-size:15px;font-weight:600}.person-extra{font-size:10px;color:#98717e;margin-left:auto}.person-fields{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 0 35px;animation:content-enter .2s both}.field{display:flex;flex-direction:column;gap:6px;flex:1;min-width:100px}.field label,.field-label{font-size:11px;color:#886574}.field input,.field select{width:100%;height:43px;background:#fff;border:1px solid #ddcbd2;border-radius:8px;padding:8px 10px;color:var(--ink);font-size:13px}.field input:focus,.field select:focus{border-color:var(--rose)}.field input[aria-invalid=true],.field select[aria-invalid=true]{border-color:#b23149;background:#fff1f2}.age-fields{display:flex;gap:8px;flex:1;min-width:165px}.age-fields .field:first-child{min-width:60px;flex:.65}.age-fields .field:last-child{min-width:90px}.small-note{font-size:11px;line-height:1.6;color:#937680}.form-error{font-size:12px;line-height:1.6;color:#a62c49;background:#fff0f1;border-radius:8px;padding:10px 12px;margin:15px 0 0}.form-footer{padding:20px 32px 28px;background:var(--paper);border-top:1px solid var(--line);margin-top:25px}.form-footer>.button{width:100%}.footer-back{display:block;margin:5px auto -8px}.form-footer .small-note{text-align:center;margin:10px 0 0}.extra-prompt{border-top:1px solid var(--line);padding:22px 0}.extra-prompt h3{font-family:var(--serif);font-size:24px;font-weight:400;margin:0 0 8px;letter-spacing:-.03em}.extra-prompt p{font-size:12px;color:#8b6b78;line-height:1.65}.add-guest{width:100%;border:1px dashed #cda3b4;background:#fff7fa;border-radius:11px;padding:15px;min-height:50px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px}.add-guest:hover{background:#f6e4eb}.extra-editor{border-bottom:1px solid var(--line);padding:20px 0;animation:content-enter .2s both}.extra-heading{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-bottom:12px}.remove-guest{color:#9c526a;font-size:11px;min-height:32px}.extra-fields{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.review-family{font-size:11px;letter-spacing:.06em;color:#997383;margin:25px 0 7px}.review-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 0;border-bottom:1px solid var(--line);font-size:13px}.review-row small{display:block;color:#957785;font-size:11px;margin-top:4px}.review-row>span:last-child{font-size:11px;color:#967282;white-space:nowrap}.review-total{display:flex;justify-content:space-between;align-items:center;margin:22px 0;padding:17px 19px;background:#f6e8ed;border-radius:12px;font-size:13px}.review-total strong{font-family:var(--serif);font-size:32px;font-weight:400;line-height:1}.edit-inline{margin-top:10px;color:var(--rose)}.success-body{text-align:center;padding-top:36px}.success-seal{display:grid;place-items:center;width:68px;height:68px;margin:0 auto 25px;border-radius:50%;background:#f2e3e9;color:var(--rose);outline:1px solid #d9b3c2;outline-offset:6px}.success-seal .icon{width:30px;height:30px}.success-body h2{font-size:43px}.success-body .form-intro{margin-top:16px}.success-summary{text-align:left;margin-top:25px}.success-date{font-family:var(--serif);font-size:21px;line-height:1.6;margin:25px 0 10px}.local-note{margin:22px 0 0;padding:12px 14px;background:#f3eded;border-radius:9px;font-size:11px;color:#8a6d77;line-height:1.65}.closed-notice{padding:15px;background:#f6e8ed;border-radius:10px;font-size:12px;line-height:1.7;margin:20px 0}.location-sheet{height:auto;max-height:100%;top:auto;bottom:0}.location-body{padding:25px 38px 30px;text-align:center}.location-illustration{position:relative;width:86px;height:86px;margin:0 auto 20px;border-radius:50%;background:#f5e6ed;display:grid;place-items:center}.location-illustration>.icon{width:36px;height:36px;color:var(--rose)}.location-illustration>span{position:absolute;right:-6px;top:0;font-size:32px;color:var(--gold)}.location-body h2{font-size:37px}.location-address{font-size:14px;line-height:1.8;margin:20px 0 8px}.location-date{font-size:11px;color:#8a6c78;margin:0 0 27px}.location-body>.button{display:flex;width:100%;margin-top:10px}.location-body>.text-button{margin-top:10px}.location-body #copy-feedback{min-height:17px;margin:0}.toast{position:fixed;z-index:20;left:50%;bottom:45px;transform:translateX(-50%);background:var(--ink);color:white;font-size:12px;line-height:1.5;border-radius:12px;padding:13px 20px;max-width:90vw;text-align:center;box-shadow:0 5px 20px #0002}.invalid-invite{min-height:100svh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:25px}.invalid-invite h1{font-family:var(--serif);font-weight:400;font-size:48px;letter-spacing:-.04em}.invalid-invite p{font-size:14px;line-height:1.7}.invalid-invite .button{margin-top:20px}.noscript{position:fixed;bottom:0;background:white;padding:20px;width:100%;text-align:center}
@keyframes content-enter{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes scene-enter{from{opacity:0;transform:scale(1.025)}to{opacity:.72;transform:scale(1)}}@keyframes sheet-enter{from{opacity:.5;transform:translateX(35px)}to{opacity:1;transform:translateX(0)}}@media(min-width:1600px){.welcome-scene{background-size:auto,auto 150%;background-repeat:no-repeat;background-color:#f6e4e7}.welcome:after{background:radial-gradient(ellipse at center,#fff7f2db,transparent 80%)}}
@media(max-width:700px){.masthead{margin:23px 23px;font-size:8px;gap:10px;letter-spacing:.13em}.masthead .tiny-star{display:none}.welcome-scene{background-position:50% 50%;background-image:linear-gradient(#faedf07a,#fff2ed20),url('assets/confeitaria.jpg')}.welcome:after{background:radial-gradient(ellipse at 50% 45%,#fff7f2f0 0%,#fff7f2c9 25%,#fff7f24a 65%,transparent),linear-gradient(0deg,#faedf0,transparent 25%,transparent 80%,#faedf080)}.welcome-content{padding:20px 20px 40px}.bow{width:72px;height:52px;margin-bottom:24px}.welcome h1{font-size:87px}.welcome h1 span{font-size:34px}.welcome-content .eyebrow{font-size:9px;letter-spacing:.2em}.welcome-copy{font-size:14px;margin-top:18px}.welcome-footer{margin:0 23px 45px;justify-content:center;flex-direction:column;align-items:center;font-size:8px;gap:9px}.welcome-footer>span:first-child{letter-spacing:.13em}.sheet{inset:auto 0 0;margin:0;width:100%;max-height:94svh;height:auto;border-radius:24px 24px 0 0}.sheet[open]{animation:sheet-mobile-enter .32s ease-out}.sheet-handle{display:block;width:35px;height:4px;border-radius:10px;background:#d9c8cf;margin:10px auto 0;flex-shrink:0}.sheet-top{padding:15px 23px 16px}.sheet-brand{font-size:23px}.sheet-top .icon-button{width:36px;height:36px}.form-body{padding:24px 23px 10px}.form-footer{padding:18px 23px max(23px,env(safe-area-inset-bottom));margin-top:20px}.steps{margin-bottom:24px}h2{font-size:34px}.form-intro{font-size:12px;margin-bottom:20px}.location-body{padding:20px 25px max(25px,env(safe-area-inset-bottom))}.location-illustration{height:65px;width:65px;margin-bottom:17px}.location-body h2{font-size:34px}.location-address{margin-top:16px}.location-date{margin-bottom:20px}.person-fields{margin-left:0}.success-body{padding-top:28px}.success-body h2{font-size:38px}.success-seal{width:58px;height:58px;margin-bottom:24px}.success-date{font-size:19px}.local-note{font-size:10px}.age-fields{min-width:155px}.preview-label{font-size:8px;bottom:8px}.step-label{font-size:9px}.invalid-invite h1{font-size:40px}}
@media(max-width:360px){.welcome h1{font-size:76px}.masthead{font-size:7px}.date-line{font-size:11px;gap:9px}.welcome-content{padding-top:10px}.welcome-copy{margin:15px 0}.bow{margin-bottom:16px}.field{min-width:90px}.form-body{padding-left:18px;padding-right:18px}.age-fields{min-width:145px}}
@media(max-height:710px) and (max-width:700px){.welcome-content{padding-top:8px;padding-bottom:22px}.welcome-content .bow{height:42px;margin-bottom:12px}.welcome h1{font-size:74px}.welcome h1 span{font-size:28px}.welcome-copy{margin:12px 0;font-size:12px}.date-line{margin-bottom:20px}.welcome-footer{margin-bottom:38px}}
@keyframes sheet-mobile-enter{from{opacity:.5;transform:translateY(45px)}to{opacity:1;transform:translateY(0)}}
.sheet:modal{scrollbar-width:thin;scrollbar-color:#d6bbc6 var(--paper)}
.form-footer{position:sticky;bottom:0;z-index:2;box-shadow:0 -8px 18px #fffaf6c9}
@media(max-width:700px){.sheet input,.sheet select{font-size:16px}.sheet input[type=number]{min-width:0}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
