:root{--rose:#a53f5b;--ink:#793d4f;--cream:#fff9ee}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden}body{background:#ecd4da;font-family:Georgia,'Times New Roman',serif;color:var(--ink)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #95465d;outline-offset:5px}button{color:inherit}.experience{position:relative;width:100%;max-width:580px;height:100%;height:100svh;margin:auto;overflow:hidden;background:#fff8ee;isolation:isolate;box-shadow:0 0 90px #7b40562a}.world{position:absolute;inset:-2%;background:url('world.png') center/100% 100% no-repeat;z-index:-3;transition:transform 1.8s ease;transform:scale(1.035)}.entered .world{transform:scale(1)}.haze{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 45%,#fffaf1aa 0%,#fffaf155 27%,transparent 60%);z-index:-2;pointer-events:none}.gate{position:absolute;inset:0;z-index:10;text-align:center;transition:opacity .9s .8s,visibility 0s 1.7s}.gate-copy{position:absolute;top:21%;width:100%;padding:0 18%}.small{text-transform:uppercase;letter-spacing:.19em;font:9px/1.7 Arial,sans-serif;margin:0 0 15px}h1{font-weight:normal;font-size:clamp(27px,6vw,40px);line-height:1.25;margin:0}em{font-weight:normal;font-style:italic}h1 em{font-size:1.1em}.intro{font-size:14px;line-height:1.6;margin:15px 0}.envelope{position:absolute;left:15%;top:48%;width:70%;height:22%;min-height:140px;max-height:195px;border:0;background:#dba1b2;box-shadow:0 14px 25px #8d456530;perspective:900px;border-radius:4px;padding:0;transition:transform 1.2s .7s,opacity .6s 1s}.pocket{position:absolute;inset:0;background:linear-gradient(30deg,#f0c6d1 49.8%,transparent 50%) left/50% 100% no-repeat,linear-gradient(-30deg,#f8d9df 49.8%,transparent 50%) right/50% 100% no-repeat;z-index:3;box-shadow:inset 0 -1px #dca4b6;border-radius:3px}.flap{position:absolute;inset:0;background:linear-gradient(#ffe5eb,#edbecd);clip-path:polygon(0 0,100% 0,50% 61%);transform-origin:top;z-index:4;transition:transform .8s ease,z-index 0s .4s;backface-visibility:hidden}.seal{position:absolute;top:42%;left:calc(50% - 28px);width:56px;height:56px;border-radius:50%;border:4px double #eabdbd;background:radial-gradient(circle at 35% 25%,#c78d9c,#a75c75);color:#fff2db;z-index:5;display:grid;place-items:center;font-size:22px;font-style:italic;box-shadow:0 3px 7px #8f48604a;transition:opacity .3s,transform .4s}.letter{position:absolute;inset:5% 6% 0;background:#fff9ed;border:1px solid #e5c2b6;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;transition:transform 1s .45s;box-shadow:0 0 8px #87505210}.letter span{font-size:12px}.letter strong{font-size:27px;font-weight:normal;font-style:italic}.opening .flap{transform:rotateX(180deg);z-index:1}.opening .seal{opacity:0;transform:scale(1.2)}.opening .letter{transform:translateY(-65%)}.opening .envelope{transform:translateY(40px);opacity:0}.opening .gate{opacity:0;visibility:hidden}.tap{position:absolute;top:73%;width:100%;font:9px Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase}.tap span{display:block;font-size:25px;margin-top:10px;animation:twinkle 3s infinite}.gate-date{position:absolute;bottom:11%;width:100%;font:9px Arial,sans-serif;letter-spacing:.2em}.curtain{position:absolute;top:0;bottom:0;width:51%;z-index:8;pointer-events:none;opacity:.9;background:repeating-linear-gradient(90deg,#f5c4d3,#ffe0e6 14%,#edb4c6 26%);transition:transform 1.7s cubic-bezier(.65,0,.2,1),opacity 1.5s;border-bottom:1px solid #bc8192;display:none}.curtain.left{left:0;transform-origin:left}.curtain.right{right:0;transform-origin:right}.opening .curtain{display:block}.entered .curtain.left{transform:translateX(-104%)}.entered .curtain.right{transform:translateX(104%)}.entered .curtain{opacity:0}.chapters{height:100%;overflow-y:auto;scroll-snap-type:y mandatory;scrollbar-width:none;overscroll-behavior:contain;opacity:0;transition:opacity 1.2s;position:relative}.chapters::-webkit-scrollbar{display:none}.entered .chapters{opacity:1}.chapter{position:relative;height:100%;min-height:100%;scroll-snap-align:start;scroll-snap-stop:always;text-align:center}.copy{position:absolute;top:23%;left:15%;width:70%;height:48%;display:flex;flex-direction:column;align-items:center;justify-content:center}.copy h2{font-weight:normal;font-size:clamp(27px,7.5vw,43px);line-height:1.13;margin:0 0 18px}.copy h2 em{font-size:1.02em}.copy h3{font-size:clamp(23px,5.5vw,31px);font-weight:normal;margin:10px 0}.copy p{font-size:clamp(12px,3.35vw,17px);line-height:1.55;margin:10px 0}.copy .small{font:9px/1.65 Arial,sans-serif;margin:0 0 18px}.copy h2.name{font-size:clamp(48px,12vw,73px);font-style:italic;letter-spacing:-3px;margin:5px 0 10px;white-space:nowrap}.copy .turning{font-size:22px;margin:0}.turning b{font-weight:normal;font-size:32px}.ornament{color:#b47d68;font-size:16px;letter-spacing:5px;margin:14px 0}.copy .verse{font-size:clamp(12px,3.1vw,16px);font-style:italic;line-height:1.7}.date{display:flex;flex-direction:column;gap:2px;margin:5px 0!important}.date span{font-size:15px}.date strong{font-weight:normal;font-size:58px;line-height:1}.copy .time{font-size:13px}.next{position:absolute;bottom:3%;left:12%;width:76%;border:0;background:#fff8eccf;border-radius:30px;padding:10px 12px 7px;text-transform:uppercase;letter-spacing:.13em;font:9px Arial,sans-serif;box-shadow:0 2px 12px #a3576312}.next span{display:block;font-size:20px;margin-top:3px;animation:drift 2s ease-in-out infinite}.toolbar{position:absolute;z-index:20;top:max(12px,env(safe-area-inset-top));left:12px;right:12px;display:flex;justify-content:space-between}.toolbar[hidden],nav[hidden],[hidden]{display:none!important}.toolbar button{border:1px solid #d7a6aa88;background:#fff8eeda;backdrop-filter:blur(7px);border-radius:30px;padding:9px 12px;min-height:36px;font:13px Georgia;color:#8f4960}.toolbar span{font:9px Arial;margin-left:3px}.dots{position:absolute;z-index:20;right:8px;top:43%;display:flex;flex-direction:column;gap:5px}.dots button{border:0;padding:8px;background:transparent}.dots button:after{content:'';display:block;width:5px;height:5px;border-radius:50%;background:#b7798c66;transition:transform .4s}.dots button[aria-current]:after{background:#a34e66;transform:scale(1.6)}.chapter-label{position:absolute;bottom:14px;left:10px;font:8px Arial;letter-spacing:.15em;color:#a5747e}.stagger{opacity:0;transform:translateY(20px);filter:blur(3px);transition:opacity 1.1s,transform 1.1s,filter 1.1s}.entered .active .stagger{opacity:1;transform:none;filter:none}.stagger:nth-child(2){transition-delay:.15s}.stagger:nth-child(3){transition-delay:.3s}.stagger:nth-child(4){transition-delay:.45s}.stagger:nth-child(5){transition-delay:.6s}.stagger:nth-child(6){transition-delay:.75s}.stagger:nth-child(7){transition-delay:.9s}.count{display:flex;align-items:flex-start;justify-content:center;gap:8px;margin:20px -8px 10px;width:110%}.count div{flex:1}.count b{display:block;font-size:clamp(27px,8vw,43px);font-weight:normal;font-variant-numeric:tabular-nums}.count span{display:block;font:8px Arial;letter-spacing:.12em;text-transform:uppercase;margin-top:8px}.count i{font-size:24px;color:#c6a287;font-style:normal}.button{border:1px solid #b67d88;background:#fff8eddd;border-radius:30px;text-decoration:none;color:var(--ink);padding:13px 22px;font:10px Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;display:inline-block;margin-top:15px;box-shadow:0 4px 12px #ad778512;min-height:42px}.button:hover{background:#f6dce2}.copy .tiny{font-size:10px;line-height:1.6}.wish-star{background:transparent;border:0;color:#bd9271;font-size:74px;line-height:1;margin:7px;animation:starbreath 3s ease-in-out infinite}.copy .signature{font-size:24px;font-style:italic;margin:20px 0 10px}.save{font:10px Arial;color:#8b485a;text-underline-offset:4px;padding:10px}.sparkles{position:absolute;inset:0;pointer-events:none;z-index:6;overflow:hidden}.sparkle{position:absolute;font-size:11px;color:#c49a68;animation:float 8s ease-in-out infinite;opacity:0}.confetti{position:absolute;top:45%;left:50%;font-size:20px;animation:burst 2.8s ease-out forwards;color:#c7956d}.toast{position:absolute;bottom:12%;left:15%;width:70%;text-align:center;background:#fff7ed;border-radius:20px;padding:12px;font-size:12px;z-index:22;opacity:0;pointer-events:none;transition:opacity .4s}.toast.show{opacity:1}@keyframes float{0%,100%{opacity:0;transform:translateY(15px) rotate(0)}40%,60%{opacity:.7}50%{transform:translateY(-30px) rotate(40deg)}}@keyframes burst{0%{opacity:1;transform:translate(0,0) scale(.2)}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--r)) scale(1.3)}}@keyframes drift{50%{transform:translateY(4px)}}@keyframes twinkle{50%{opacity:.35;transform:scale(.8)}}@keyframes starbreath{50%{transform:scale(1.1);filter:drop-shadow(0 0 9px #d7a66b55)}}@media(min-width:700px){body{background:radial-gradient(ellipse,#fcebe4,#e7c8d2)}.experience{max-width:540px}.copy h2.name{font-size:68px}}@media(max-height:700px){.copy{top:22%;height:50%}.copy h2{font-size:28px;margin-bottom:9px}.copy h2.name{font-size:49px}.copy p{margin:6px 0;font-size:12px}.copy .small{margin-bottom:9px;font-size:8px}.copy h3{font-size:23px;margin:7px 0}.ornament{margin:7px 0}.copy .verse{font-size:11px}.count{margin:10px 0}.count b{font-size:29px}.button{margin-top:8px;padding:10px 14px}.date strong{font-size:40px}.wish-star{font-size:45px}.copy .signature{font-size:20px;margin:10px 0}.gate-copy{top:20%}.intro{font-size:12px;margin:10px 0}.envelope{top:49%;min-height:110px}.small{font-size:8px}.tap{top:74%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.stagger{filter:none}.sparkles{display:none}}
.letter{opacity:0}.opening .letter{opacity:1}.copy{top:21%;height:42%}.haze{background:radial-gradient(ellipse at 50% 45%,#fffaf1ee 0%,#fffaf1a6 26%,transparent 55%)}.entered .world{animation:world-breathe 18s ease-in-out infinite alternate}@keyframes world-breathe{from{transform:scale(1)}to{transform:scale(1.025) translateY(-3px)}}.gate .tap{display:inline-block;width:70%;left:15%;background:#fff9eecf;padding:9px;border-radius:20px}.tap span{display:none}.copy h2.name{margin:0 0 7px}.copy .ornament{margin:10px 0}.welcome-copy h3{margin:5px 0}.copy .verse{background:#fff9ee66;border-radius:9px;padding:4px 6px}@media(max-height:700px){.copy{top:20%;height:45%}}

#venue-title{font-size:clamp(25px,6.3vw,36px)}#venue-title em{display:block}#venue .button{background:#a53f5b;color:#fff9ee;font-size:9px;padding:14px 16px}#venue h3{font-size:clamp(24px,6vw,32px)}

.venue-address{display:block;color:inherit;text-decoration:none;position:relative;z-index:2;touch-action:manipulation}.venue-address h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.venue-address p{margin:7px 0}#location-link{position:relative;z-index:3;min-height:48px;touch-action:manipulation}.entered .gate{pointer-events:none}
