@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&display=swap');
:root{--paper:#f7f1e8;--ink:#493b37;--muted:#8d7c73;--rose:#a95058;--line:#dfd1c5}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #a95058;outline-offset:5px}header,footer{display:flex;justify-content:space-between;align-items:center;padding:28px 6vw}header{position:relative;z-index:2}.brand{color:var(--ink);text-decoration:none;font:italic 22px 'Playfair Display',Georgia,serif}.brand span{display:block;font:9px 'DM Sans',sans-serif;letter-spacing:2px;margin-top:7px;color:var(--muted)}.quiet{background:transparent;border:1px solid var(--line);padding:10px 17px;border-radius:24px;color:var(--muted);font-size:12px}.grain{position:fixed;inset:0;pointer-events:none;opacity:.15;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%238c6f56' filter='url(%23n)' opacity='.2' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}main{min-height:calc(100svh - 183px);max-width:1100px;margin:auto;padding:35px 28px 55px}.scene{animation:enter .65s ease both;text-align:center}.eyebrow{font-size:10px;letter-spacing:3px;color:var(--rose);text-transform:uppercase;margin-bottom:22px}h1,h2,h3{font-family:'Playfair Display',Georgia,serif;font-weight:400}h1{font-size:clamp(48px,6.5vw,83px);line-height:1.12;margin:0 0 23px;letter-spacing:-2px}h2{font-size:clamp(36px,5vw,55px);line-height:1.2;margin:10px 0 20px}h3{font-size:27px}em{color:var(--rose);font-weight:400}p{line-height:1.85;color:var(--muted);font-size:14px}.lead{max-width:390px;margin:0 auto 27px}.primary{background:var(--rose);border:0;color:white;padding:16px 27px;border-radius:5px;font-size:12px;letter-spacing:.4px;box-shadow:0 8px 20px #a9505818}.primary:hover{background:#91434b;transform:translateY(-1px)}.secondary{display:block;margin:20px auto 0;background:none;border:0;color:var(--muted);font-size:12px;text-decoration:underline;text-underline-offset:5px}.hero{display:grid;grid-template-columns:1fr 1fr;text-align:left;align-items:center;gap:65px;min-height:540px}.hero .lead{margin-left:0}.hero .secondary{margin-left:0}.hero-art{position:relative;min-height:460px;display:grid;place-items:center}.halo{position:absolute;width:350px;height:400px;background:#eddcd4;border-radius:48% 48% 45% 45%;transform:rotate(-9deg)}.postcard{width:270px;height:340px;padding:15px;background:#fffdf7;box-shadow:0 15px 40px #69534b20;transform:rotate(8deg);position:relative;display:flex;flex-direction:column;align-items:center}.postcard:before{content:'';position:absolute;width:95px;height:29px;background:#d9c7a9a6;top:-13px;left:85px;transform:rotate(-4deg)}.postcard .drawing{background:#ead7cf;width:100%;height:260px;display:grid;place-items:center;position:relative;overflow:hidden}.drawing .num{font:italic 112px 'Playfair Display',serif;color:#fff8ed;z-index:1}.drawing:before,.drawing:after{content:'✿';position:absolute;font-size:160px;color:#c18587;left:-32px;bottom:-35px}.drawing:after{font-size:120px;left:auto;right:-15px;top:-30px;color:#d0a7a0}.postcard small{font:italic 20px 'Playfair Display',serif;margin-top:19px}.stamp{position:absolute;right:0;bottom:34px;border:1px solid #bb9082;border-radius:50%;width:95px;height:95px;display:grid;place-items:center;font:italic 18px 'Playfair Display';color:var(--rose);transform:rotate(-13deg);background:#f7f1e8dd}.spark{position:absolute;font-size:30px;color:#b89566;top:35px;right:30px}.note{font:italic 17px 'Playfair Display',serif;color:var(--rose);margin-top:24px}.progress{width:180px;height:3px;background:var(--line);margin:25px auto;overflow:hidden}.progress i{display:block;height:100%;background:var(--rose);width:0}.choices{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:24px 0}.choice{border:1px solid var(--line);background:#fffaf2;padding:14px 20px;border-radius:6px;color:var(--ink)}.choice:hover,.choice.selected{border-color:var(--rose);background:#efdedb}.polaroid{background:#fffdf8;padding:15px 15px 23px;max-width:380px;margin:30px auto;box-shadow:0 12px 30px #69534b14;transform:rotate(-2deg)}.photo{height:210px;background:linear-gradient(135deg,#e7d4c5,#ddbbb6);display:grid;place-items:center;overflow:hidden}.photo img{width:100%;height:100%;object-fit:cover}.photo span{font-size:68px}.polaroid .photo{height:auto;min-height:210px;max-height:480px}.polaroid .photo img{width:100%;height:auto;max-height:480px;object-fit:contain;display:block}.polaroid p{margin-bottom:0}.demo{display:inline-block;border:1px solid var(--line);color:var(--muted);font-size:10px;padding:6px 10px;border-radius:20px;margin-bottom:20px}.heartfield{height:300px;max-width:550px;position:relative;margin:auto;border-bottom:1px solid var(--line)}.heart{position:absolute;background:none;border:0;color:var(--rose);font-size:45px;padding:15px;animation:bob 3s ease-in-out infinite}.words{min-height:40px;max-width:500px;margin:20px auto;color:var(--rose);font-family:'Playfair Display',serif;font-size:23px}.envelope{font-size:110px;margin:35px;filter:drop-shadow(0 12px 10px #69534b15)}.letter{max-width:650px;margin:30px auto;text-align:left;background:#fffaf1;border:1px solid #e9dccd;padding:45px clamp(24px,5vw,65px);box-shadow:0 14px 50px #69534b0b;position:relative}.letter p{white-space:pre-line;line-height:2.1;color:#6f5c53}.letter h3{color:var(--rose);font-style:italic}.cake{position:relative;width:260px;height:230px;margin:50px auto 25px}.cakebase{position:absolute;bottom:25px;left:15px;width:230px;height:105px;background:linear-gradient(#e5b9b2 0 20%,#f1d5c8 20% 45%,#e5b9b2 45% 60%,#f1d5c8 60%);border-radius:50% 50% 14% 14% / 18% 18% 12% 12%;box-shadow:0 8px 0 #cfa693}.cakebase:after{content:'';position:absolute;width:260px;height:20px;bottom:-17px;left:-15px;border-radius:50%;background:#d9c8ae;z-index:-1}.candles{position:absolute;top:33px;left:0;width:100%;font:bold 78px 'Playfair Display';color:#a95058;line-height:1}.flame{display:inline-block;width:13px;height:23px;background:#efb452;border-radius:80% 0 70% 70%;position:absolute;top:-24px;left:106px;transform:rotate(-20deg);box-shadow:0 0 25px #edbd62;animation:flicker .6s infinite alternate}.flame.two{left:151px}.blown .flame{display:none}.hold{touch-action:none;user-select:none}.flowers{position:relative;max-width:400px;height:290px;margin:20px auto}.stem{position:absolute;height:180px;width:4px;background:#839376;bottom:10px;left:50%;transform-origin:bottom}.stem:nth-child(1){transform:rotate(-28deg)}.stem:nth-child(3){transform:rotate(28deg)}.stem button{position:absolute;left:-42px;top:-50px;border:0;background:none;color:#b56f79;font-size:90px;line-height:1;filter:drop-shadow(0 6px 8px #a9505818)}.stem:nth-child(2) button{color:#d6999c}.stem:after{content:' ';position:absolute;left:0;top:80px;width:36px;height:16px;background:#9aa58a;border-radius:0 100% 0 100%}.ribbon{position:absolute;bottom:-8px;left:calc(50% - 23px);font-size:45px}.flower-message{min-height:60px;font:italic 23px 'Playfair Display';color:var(--rose);max-width:480px;margin:auto}.restaurant-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:30px auto;max-width:900px}.restaurant{text-align:left;border:1px solid var(--line);background:#fffaf2;padding:12px;color:var(--ink);border-radius:3px}.restaurant .photo{height:150px}.restaurant h3{font-size:23px;margin:18px 5px 8px}.restaurant p{font-size:12px;margin:8px 5px}.restaurant.selected{outline:2px solid var(--rose)}.ticket{max-width:480px;margin:30px auto;border:1px solid #c7a79a;background:#fffbf3;padding:35px;outline:1px dashed #c7a79a;outline-offset:-10px}.ticket .big{font:italic 38px 'Playfair Display';color:var(--rose);margin:24px 0}.ticket hr{border:0;border-top:1px dashed var(--line);margin:25px 0}footer{font-size:9px;letter-spacing:2px;color:var(--muted);border-top:1px solid #dfd1c566;margin:0 6vw;padding:22px 0}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.confetti{position:fixed;top:-20px;pointer-events:none;animation:fall 3s ease-in forwards;z-index:20}.status{min-height:25px;color:var(--rose);font-size:13px}.back{margin-bottom:15px}.small{font-size:11px}.badge{font-size:10px;letter-spacing:2px;color:var(--muted)}@keyframes enter{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes bob{50%{transform:translateY(-12px) rotate(8deg)}}@keyframes flicker{to{transform:rotate(-10deg) scale(.9)}}@keyframes fall{to{transform:translateY(105vh) rotate(540deg)}}@media(max-width:700px){header{padding:22px 24px}.brand{font-size:19px}main{padding:22px 24px 40px}.hero{grid-template-columns:1fr;gap:15px;text-align:center;min-height:0}.hero .lead{margin-left:auto}.hero .secondary{margin-left:auto}.hero-art{grid-row:1;min-height:285px}.halo{width:215px;height:250px}.postcard{width:180px;height:225px;padding:10px}.postcard .drawing{height:170px}.drawing .num{font-size:78px}.postcard small{font-size:16px;margin-top:12px}.postcard:before{width:65px;left:60px;height:22px}.stamp{width:72px;height:72px;right:calc(50% - 143px);bottom:5px;font-size:14px}.spark{right:calc(50% - 135px);top:8px}.eyebrow{margin:15px 0}h1{font-size:49px}.hero .note{margin:20px 0}footer{font-size:8px;letter-spacing:1px}.restaurant-grid{grid-template-columns:1fr}.restaurant{display:grid;grid-template-columns:95px 1fr;gap:0 13px}.restaurant .photo{grid-row:1/4;height:115px}.restaurant h3{font-size:21px;margin-top:7px}.restaurant p{margin:3px 5px}.letter{padding-top:25px}.heartfield{height:290px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}
