*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#4a3b35;background:radial-gradient(1200px 600px at 10% -10%,#ffe6d6 0,transparent 60%),radial-gradient(1000px 700px at 110% 10%,#ffd9e6 0,transparent 55%),linear-gradient(160deg,#fff7f0,#fdeee6 45%,#fce8ef);background-attachment:fixed;background-repeat:no-repeat;min-height:100%;line-height:1.75;-webkit-font-smoothing:antialiased}.wrap{max-width:680px;margin:0 auto;padding:48px 22px 90px}.en{font-family:Georgia,Times New Roman,serif;font-style:italic;color:#b98a7a;letter-spacing:.3px}.hero{text-align:center;margin-bottom:34px;animation:rise .9s ease both}.lamp{font-size:54px;filter:drop-shadow(0 8px 14px rgba(214,140,90,.35));animation:float 4s ease-in-out infinite}.hbd{font-size:30px;font-weight:800;margin-top:8px;color:#d9684f;letter-spacing:1px}.hbd small{display:block;font-size:14px;font-weight:600;margin-top:6px}.sub{margin-top:10px;font-size:15px;color:#9c7c70}.card{background:rgba(255,255,255,.82);border:1px solid rgba(217,104,79,.14);border-radius:22px;padding:28px 26px;box-shadow:0 18px 50px -22px rgba(180,90,60,.4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.letter{margin-bottom:26px;animation:rise 1s ease .1s both}.letter h2{font-size:19px;color:#d9684f;margin-bottom:12px}.letter p{margin:11px 0;font-size:15.5px}.letter .em{background:linear-gradient(transparent 62%,#ffe0b8 0);font-weight:700;color:#b4502f}.rules{margin:22px 0 8px;padding:16px 18px;border-radius:16px;background:linear-gradient(135deg,#fff3e6,#ffe9f0);border:1px dashed rgba(217,104,79,.35);font-size:14.5px}.photos{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin:28px 0 32px}.polaroid{background:#fff;padding:9px 9px 0;border-radius:6px;box-shadow:0 14px 30px -16px rgba(180,90,60,.55);transform:rotate(-2.5deg);transition:transform .25s;animation:rise .8s ease both}.polaroid:nth-child(2n){transform:rotate(2.5deg)}.polaroid:hover{transform:rotate(0deg) scale(1.03)}.polaroid img{display:block;width:190px;height:190px;object-fit:cover;border-radius:3px;background:#f3e7df}.polaroid .cap{text-align:center;padding:9px 4px 12px;font-size:14px;color:#b07a6a;font-family:Georgia,Times New Roman,serif;font-style:italic}@media (max-width:460px){.polaroid img{width:150px;height:150px}}.sticker{display:inline-block;height:54px;vertical-align:-15px;margin-left:4px;transform:rotate(6deg);filter:drop-shadow(2px 4px 4px rgba(150,90,60,.3))}.rules b{color:#d9684f}.rules ul{list-style:none;margin-top:8px}.rules li{margin:7px 0;padding-left:26px;position:relative}.rules li:before{content:"✦";position:absolute;left:4px;color:#e8993f}.wishes{margin-top:30px}.wishes-title{text-align:center;font-size:17px;font-weight:800;color:#d9684f;margin-bottom:4px}.wishes-title .en{display:block;font-size:12.5px;margin-top:2px}.wish{margin-top:20px;background:#fff;border-radius:18px;padding:18px 16px 16px;border:1.5px solid #f2ddd2;transition:border-color .25s,box-shadow .25s;animation:rise .8s ease both}.wish:focus-within{border-color:#f0a98c;box-shadow:0 10px 26px -16px rgba(217,104,79,.6)}.wish.invalid{border-color:#e98a8a;background:#fff6f6}.wish-no{display:flex;align-items:center;gap:8px;font-weight:800;color:#c66;margin-bottom:10px}.wish-no .dot{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#ffb38a,#ff7e9d);color:#fff;font-size:14px;flex:none}textarea{width:100%;resize:vertical;min-height:64px;font:inherit;font-size:15.5px;color:#4a3b35;background:#fffdfb;border-radius:12px;padding:11px 12px;outline:none;border:1px solid #f0e2da}textarea::placeholder{color:#c9b4a9}.scale{margin-top:12px}.scale-label{font-size:12.5px;color:#a88;margin-bottom:7px}.pills{display:flex;gap:8px;flex-wrap:wrap}.pill{flex:1 1;min-width:96px;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:1.5px solid #f0ddd3;border-radius:999px;padding:8px 6px;font-size:13px;color:#a8857a;background:#fffdfb;transition:all .18s}.pill small{display:block;font-size:10.5px;opacity:.7;margin-top:1px}.pill:hover{border-color:#f3b79e}.pill.on{color:#fff;border-color:transparent;box-shadow:0 6px 14px -6px rgba(217,104,79,.7)}.pill[data-v="1"].on{background:linear-gradient(135deg,#ffcf8b,#ffb15e)}.pill[data-v="2"].on{background:linear-gradient(135deg,#ff9d7e,#ff7e7e)}.pill[data-v="3"].on{background:linear-gradient(135deg,#ff6fa3,#d9684f)}.whisper{margin-top:24px}.whisper label{font-size:14px;color:#b98a7a;display:block;margin-bottom:8px}.whisper textarea{min-height:54px}.nudge{margin:22px 2px 6px;font-size:13.5px;color:#b07a6a;text-align:center;line-height:1.7}.submit{margin-top:18px;width:100%;border:none;cursor:pointer;background:linear-gradient(135deg,#ff8a5b,#ff5f8d);color:#fff;font-size:17px;font-weight:800;padding:16px;border-radius:16px;letter-spacing:1px;box-shadow:0 14px 30px -12px rgba(217,80,90,.7);transition:transform .15s,filter .2s}.submit:hover{filter:brightness(1.05)}.submit:active{transform:scale(.98)}.submit:disabled{filter:grayscale(.4);opacity:.7;cursor:default}.err{color:#d35;font-size:14px;margin-top:12px;min-height:20px}.done,.err{text-align:center}.done{padding:30px 10px;animation:rise .8s ease both}.done .big{font-size:52px;animation:float 3.5s ease-in-out infinite}.done h2{color:#d9684f;font-size:23px;margin:14px 0 8px}.done p{color:#9c7c70;font-size:15.5px;margin:8px auto;max-width:440px}.snap{display:inline-block;background:#fff;padding:10px 10px 0;border-radius:6px;box-shadow:0 16px 34px -18px rgba(180,90,60,.55);transform:rotate(-2deg);margin-top:26px;animation:rise .8s ease .2s both}.snap img{display:block;width:min(330px,78vw);height:auto;border-radius:3px}.snap .cap{text-align:center;padding:10px 4px 12px;font-size:14px;color:#b07a6a;font-family:Georgia,Times New Roman,serif;font-style:italic}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}.heart{position:fixed;top:-30px;font-size:18px;pointer-events:none;z-index:5;opacity:.9;animation:fall linear forwards}@keyframes fall{to{transform:translateY(105vh) rotate(220deg);opacity:0}}