:root{--cream: #faf6f1;--brown: #4a3b32;--accent: #8a6a52;--soft: #e9ddd1}*{box-sizing:border-box}body{margin:0;background:#e9e4de;color:var(--brown);font-family:Poppins,sans-serif;font-weight:300}body.locked{overflow:hidden}.floral{max-width:480px;margin:0 auto;background:var(--cream);min-height:100svh;position:relative}.floral section{padding:3.5rem 1.5rem;text-align:center}.script{font-family:Great Vibes,cursive;font-weight:400}.big{font-size:3rem;margin:.3rem 0}.title{font-size:2.6rem;margin:0 0 1.5rem;color:var(--accent)}.small{font-size:.8rem;letter-spacing:.15em;text-transform:uppercase}h4{font-family:Cormorant Garamond,serif;font-size:1.5rem;font-weight:600;margin:.2rem 0}a{color:var(--accent)}.btn{display:inline-block;border:0;cursor:pointer;background:var(--accent);color:#fff;padding:.75rem 1.5rem;border-radius:999px;font:inherit;font-weight:500;text-decoration:none}.btn.sm{padding:.5rem 1rem;font-size:.85rem}.btn.outline{background:transparent;color:var(--accent);border:1px solid var(--accent)}.btn:disabled{opacity:.6}.card{background:#fff;border-radius:1rem;padding:1.5rem;margin:1rem 0;box-shadow:0 4px 20px #4a3b3214}.row{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-top:1rem}#cover{position:fixed;inset:0;z-index:50;max-width:480px;margin:0 auto;display:grid;place-items:center;color:#fff;background:linear-gradient(#00000073,#0000008c),var(--bg, var(--accent)) center / cover;transition:transform .9s ease,opacity .9s}#cover.gone{transform:translateY(-100%);opacity:0;pointer-events:none}#cover h1{font-size:3.4rem;margin:.5rem 0}.guest{margin:2rem 0 1.5rem}.guest-name{font-family:Cormorant Garamond,serif;font-size:1.6rem;font-weight:600;margin:.3rem 0}.hero{min-height:100svh;display:grid;place-items:center;color:#fff;background:linear-gradient(#0000004d,#00000080),var(--bg, var(--accent)) center / cover}.quote p{font-family:Cormorant Garamond,serif;font-style:italic;font-size:1.2rem;line-height:1.6}.amp{font-size:3rem;margin:.5rem 0;color:var(--accent)}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin-bottom:1rem}.countdown div{background:var(--accent);color:#fff;border-radius:.8rem;padding:.7rem 0}.countdown b{display:block;font-size:1.5rem;font-weight:500}.countdown span{font-size:.7rem}.story-item{border-left:2px solid var(--soft);padding:0 0 1.5rem 1.2rem;text-align:left;position:relative}.story-item:before{content:"";position:absolute;left:-7px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--accent)}.year{font-size:.8rem;color:var(--accent);font-weight:500}.grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:.6rem;cursor:zoom-in;background:var(--soft)}#lightbox{position:fixed;inset:0;z-index:60;background:#000000e6;display:grid;place-items:center;padding:1rem}#lightbox[hidden]{display:none}#lightbox img{max-width:100%;max-height:90svh;border-radius:.5rem}form.card{display:grid;gap:.7rem;text-align:left}input,select,textarea{font:inherit;padding:.7rem .9rem;border:1px solid var(--soft);border-radius:.6rem;background:var(--cream);color:inherit;width:100%}.hp{position:absolute;left:-9999px}.msg{margin:0;font-size:.85rem;min-height:1em}#wish-list{list-style:none;padding:0;margin:1rem 0 0;text-align:left;max-height:420px;overflow-y:auto}#wish-list li{background:#fff;border-radius:.8rem;padding:.9rem 1rem;margin-bottom:.6rem}#wish-list b{display:block;font-weight:500}#wish-list p{margin:.3rem 0 0;font-size:.9rem;white-space:pre-line;overflow-wrap:anywhere}.acc{font-size:1.3rem;font-weight:500;letter-spacing:.08em;margin:.3rem 0}.qris{width:220px;max-width:100%;border-radius:.8rem}footer{padding:3rem 1.5rem 5rem;text-align:center;background:var(--soft)}#music-btn{position:fixed;bottom:1rem;right:max(1rem,calc(50vw - 240px + 1rem));z-index:40;width:44px;height:44px;border-radius:50%;border:0;background:var(--accent);color:#fff;font-size:1.2rem;cursor:pointer}#music-btn.playing{animation:spin 3s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease}.reveal.show{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}
