html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}:root{--bg: #fbe3ec;--bg-soft: #fdeef3;--cream: #fdf3ee;--paper: #fff8fa;--primary: #e84d8a;--primary-deep: #c2185b;--accent: #ff8fb1;--red: #d23b5c;--text: #7a3b52;--text-soft: #a96e83;--gold: #e8b04b;--font-script: "Great Vibes", cursive;--font-script-alt: "Pinyon Script", cursive;--font-serif: "Cormorant Garamond", Georgia, serif;--font-body: "Montserrat", system-ui, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;padding:0;min-height:100%}body{font-family:var(--font-body);color:var(--text);background:radial-gradient(130% 70% at 50% 0%,var(--cream) 0%,var(--bg-soft) 40%,var(--bg) 100%);background-attachment:fixed;overflow-x:hidden}.app-shell{position:relative;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:16px;overflow:hidden}.app-shell--scroll{display:block;align-items:stretch;overflow:visible;padding:0}.preloader{display:flex;flex-direction:column;align-items:center;gap:18px;color:var(--text-soft)}.preloader .bow{font-size:56px;animation:bow-spin 1.6s ease-in-out infinite}@keyframes bow-spin{0%,to{transform:rotate(-12deg) scale(1)}50%{transform:rotate(12deg) scale(1.12)}}.script-title{font-family:var(--font-script);color:var(--primary);line-height:1.05;font-weight:400}.script-alt{font-family:var(--font-script-alt)}.decor-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:0}.decor{position:absolute;opacity:.92;will-change:transform}.float-slow{animation:floaty 7s ease-in-out infinite}.float-mid{animation:floaty 5.5s ease-in-out infinite}.float-fast{animation:floaty 4.2s ease-in-out infinite}.sway{animation:sway 6s ease-in-out infinite}@keyframes floaty{0%,to{transform:translateY(0) rotate(var(--rot, 0deg))}50%{transform:translateY(-16px) rotate(calc(var(--rot, 0deg) + 4deg))}}@keyframes sway{0%,to{transform:rotate(var(--rot, 0deg))}50%{transform:rotate(calc(var(--rot, 0deg) + 7deg)) translateY(-8px)}}.spin-slow{animation:spin 16s linear infinite;transform-origin:50% 0}@keyframes spin{to{transform:rotate(360deg)}}.envelope-stage{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:26px}.envelope-hint{font-size:46px;margin:0;text-align:center}.envelope-tap{font-family:var(--font-body);letter-spacing:2px;text-transform:uppercase;font-size:12px;color:var(--text-soft);margin:0}.envelope{position:relative;width:min(320px,80vw);aspect-ratio:3 / 2;cursor:pointer;perspective:1000px}.env-body{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(160deg,#ffd9e6,#ffc2d8);border-radius:12px;box-shadow:0 18px 45px #c83c6e4d}.env-pocket{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:12px;z-index:3;background:linear-gradient(135deg,transparent 49.5%,#ffb3cd 50%) bottom left / 50% 100% no-repeat,linear-gradient(225deg,transparent 49.5%,#ffb3cd 50%) bottom right / 50% 100% no-repeat}.env-flap{position:absolute;top:0;left:0;width:100%;height:56%;z-index:4;transform-origin:top center;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(160deg,#ffc2d8,#ff9fc0);border-radius:12px 12px 0 0;backface-visibility:hidden}.env-seal{position:absolute;top:42%;left:50%;transform:translate(-50%,-50%);z-index:5;width:42px;height:42px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 4px 12px #c83c6e80}.letter{position:absolute;left:8%;top:6%;width:84%;height:96%;z-index:2;background:var(--paper);border-radius:10px;box-shadow:0 8px 24px #c83c6e33;display:flex;align-items:center;justify-content:center;padding:14px}.letter-inner{text-align:center}.letter-dear{font-size:26px;color:var(--text-soft);margin:0}.letter-name{font-size:40px;margin:2px 0 6px}.letter-sub{font-family:var(--font-body);font-size:13px;letter-spacing:1px;color:var(--text-soft);margin:0}.invite-scroll{position:relative;z-index:1;width:min(600px,100%);margin:0 auto;padding:0 22px 60px}.hero{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;position:relative}.hero-dear{font-size:34px;color:var(--text-soft);margin:0}.hero-name{font-size:clamp(52px,16vw,84px);margin:-6px 0 4px}.hero-title{display:flex;align-items:center;justify-content:center;gap:6px;margin:6px 0 18px}.girls-outline{font-family:var(--font-body);font-weight:800;font-size:clamp(46px,14vw,76px);letter-spacing:2px;color:transparent;-webkit-text-stroke:2px var(--primary);text-stroke:2px var(--primary);line-height:.9}.party-script{font-size:clamp(40px,12vw,64px);color:var(--primary-deep);margin-left:-6px}.hero-lips{margin-top:14px;opacity:.9}.scroll-down{position:absolute;bottom:26px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--text-soft);animation:floaty 2.4s ease-in-out infinite}.scroll-down .chevron{font-size:22px;line-height:1}.bunting{position:absolute;top:14px;left:0;width:100%;height:40px}.hero-bride{font-size:clamp(46px,14vw,72px);margin:6px 0 2px;color:var(--primary-deep)}.date-blob{display:inline-block;margin:14px 0 6px;padding:10px 24px;border-radius:999px;background:linear-gradient(135deg,#ff5fa2,#e0567a);color:#fff;font-weight:600;font-size:19px;letter-spacing:.5px;box-shadow:0 10px 26px #e0567a73}.date-blob .dot{opacity:.7;margin:0 4px}.hero-glam{display:flex;align-items:center;gap:16px;margin-top:18px;opacity:.92}.hero-sticker{margin-top:14px;animation:floaty 5s ease-in-out infinite}.photo-frame{position:relative;display:inline-block;background:#fff;padding:12px 12px 16px;border-radius:14px;box-shadow:0 16px 40px #c83c6e38;transform:rotate(-1.5deg);max-width:320px}.photo-frame img{display:block;width:100%;max-width:296px;border-radius:8px;object-fit:cover}.photo-crown{position:absolute;top:-52px;left:50%;transform:translate(-50%) rotate(2deg);z-index:2;filter:drop-shadow(0 6px 8px rgba(200,60,110,.25));animation:floaty 4s ease-in-out infinite}.photo-caption{margin-top:8px;font-size:24px;color:var(--primary);text-align:center}.hero-photo{margin:20px 0 6px}.photo-text{display:flex;align-items:center;gap:22px;justify-content:center;flex-wrap:wrap}.photo-text.img-right{flex-direction:row-reverse}.photo-text .photo-frame{max-width:260px;flex:0 0 auto}.photo-text-body{flex:1 1 220px;min-width:200px;text-align:left}.photo-text-body .label-script{text-align:left}.date-oval{display:inline-block;position:relative;padding:10px 30px;font-family:var(--font-serif);font-weight:600;font-size:26px;color:var(--primary-deep)}.date-oval svg{position:absolute;top:-8px;right:-6px;bottom:-8px;left:-6px;width:calc(100% + 12px);height:calc(100% + 16px);overflow:visible}.block{padding:38px 0;text-align:center}.label-script{font-family:var(--font-script-alt);font-size:46px;color:var(--primary);margin:0 0 12px}.invite-body{font-family:var(--font-serif);font-size:21px;line-height:1.55;color:var(--text);margin:0}.invite-body.center{text-align:center}.invite-strong{font-weight:600;font-size:22px;color:var(--primary-deep);font-family:var(--font-serif)}.paper{background:var(--paper);border-radius:24px;padding:30px 26px;box-shadow:0 16px 40px #c83c6e24;border:1px solid rgba(232,77,138,.1)}.paper.center{text-align:center}.address-link{color:var(--primary-deep);text-decoration:none;border-bottom:1px dashed var(--accent)}.address-link:hover{color:var(--primary)}.block-glam{display:flex;justify-content:center;gap:14px;margin-top:18px;opacity:.9}.ribbon-divider{display:flex;align-items:center;justify-content:center;padding:10px 0;position:relative}.ribbon-divider:before,.ribbon-divider:after{content:"";height:1px;width:70px;background:linear-gradient(90deg,transparent,var(--accent))}.ribbon-divider:after{background:linear-gradient(90deg,var(--accent),transparent)}.calendar{margin:6px auto 14px;max-width:320px}.calendar-month{font-family:var(--font-serif);font-style:italic;font-size:30px;color:var(--text);margin-bottom:6px}.calendar-row{display:flex;align-items:center;justify-content:center;gap:18px;border-top:1px solid rgba(122,59,82,.25);border-bottom:1px solid rgba(122,59,82,.25);padding:10px 0}.cal-day{font-family:var(--font-serif);font-size:40px;color:var(--text);position:relative}.cal-day.faded{opacity:.35;font-size:30px}.cal-day.circled{color:var(--primary-deep);font-weight:600;padding:6px 14px}.cal-day.circled svg{position:absolute;top:-10px;right:-8px;bottom:-10px;left:-8px;width:calc(100% + 16px);height:calc(100% + 20px);overflow:visible}.countdown-title{font-size:clamp(40px,11vw,56px);margin:0 0 18px}.countdown{display:flex;justify-content:center;gap:14px;margin-top:10px;flex-wrap:wrap}.cd-cell{background:linear-gradient(160deg,#ffd9e8,#ffbcd6);border-radius:22px;padding:20px 14px;min-width:92px;display:flex;flex-direction:column;align-items:center;box-shadow:0 10px 24px #c83c6e38,inset 0 0 0 1px #e84d8a2e}.cd-num{font-family:var(--font-body);font-weight:800;font-size:52px;color:var(--primary-deep);line-height:1;letter-spacing:-1px;text-shadow:0 1px 0 #fff}.cd-lbl{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-soft);margin-top:8px}.rsvp-buttons{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:6px}.invite-footer{text-align:center;padding:30px 0 10px}.invite-footer .script-title{font-size:40px}.footer-lips{display:flex;justify-content:center;gap:10px;margin-top:8px;opacity:.85}.invite-card{position:relative;z-index:1;width:min(420px,100%);background:var(--paper);border-radius:24px;padding:40px 26px;text-align:center;box-shadow:0 20px 60px #c83c6e2e}.admin-login{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}.admin-login-card{width:min(380px,100%)}.admin{min-height:100dvh;background:#fff;color:#333;position:relative;z-index:5}.admin-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;background:#fff;border-bottom:1px solid #f0d7e2}.admin-body{display:flex;gap:18px;padding:18px;align-items:flex-start}.admin-side{width:280px;flex:0 0 auto}.admin-main{flex:1 1 auto;min-width:0}.admin-item{cursor:pointer;transition:background .15s}.admin-item:hover{background:#fdeef4}.admin-item.active{background:#fbe0ec}.admin-field{display:block}.admin-field-label{display:block;font-size:13px;color:#888;margin-bottom:4px}.photo-upload{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.photo-upload-preview{width:84px;height:84px;object-fit:cover;border-radius:10px;border:1px solid #f0d7e2}@media (max-width: 720px){.admin-body{flex-direction:column}.admin-side{width:100%}}.audio-btn{position:fixed;right:16px;bottom:16px;z-index:50;height:48px;padding:0 16px 0 14px;border-radius:999px;border:none;cursor:pointer;background:linear-gradient(135deg,#ff5fa2,#e0567a);color:#fff;display:flex;align-items:center;gap:8px;box-shadow:0 8px 22px #c83c6e73;transition:transform .15s ease;font-family:var(--font-body);font-weight:600;font-size:13px}.audio-btn:active{transform:scale(.94)}.audio-btn-label{white-space:nowrap}.audio-btn.pulse{animation:audio-pulse 1.8s ease-in-out infinite}@keyframes audio-pulse{0%,to{box-shadow:0 8px 22px #c83c6e73}50%{box-shadow:0 8px 30px #e84d8ad9}}@media (max-width: 480px){.audio-btn-label{display:none}.audio-btn{padding:0;width:48px;justify-content:center}}@media (max-width: 480px){.invite-scroll{padding:0 16px 50px}.label-script{font-size:38px}.invite-body{font-size:19px}.cal-day{font-size:34px}.cd-cell{min-width:70px;padding:16px 10px}.cd-num{font-size:40px}}
