*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-deep:#0f0610;--bg-mid:#1a0a14;--gold:#d4a853;--gold-light:#f0d48a;--rose:#c45c7a;--rose-soft:#e8a0b4;--cream:#faf3eb;--cream-muted:#c9b8a8;--glass:#fff5eb0f;--glass-border:#d4a85338;--tab-h:72px;--font-display:"Cormorant Garamond", Georgia, serif;--font-script:"Great Vibes", cursive}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}html,body,#root{overscroll-behavior:none;height:100%;overflow:hidden}body{font-family:var(--font-body);background:var(--bg-deep);color:var(--cream);-webkit-font-smoothing:antialiased}.wedding-shell{height:100dvh;max-height:100dvh;padding-top:env(safe-area-inset-top,0);flex-direction:column;display:flex;position:relative;overflow:hidden}.wedding-main{z-index:1;min-height:0;padding:.75rem .75rem 0;padding-left:max(.75rem, env(safe-area-inset-left,0));padding-right:max(.75rem, env(safe-area-inset-right,0));flex:1;position:relative;overflow:hidden}.ambient{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.ambient-glow{filter:blur(70px);opacity:.72;border-radius:50%;animation:12s ease-in-out infinite alternate drift;position:absolute}.glow-1{background:radial-gradient(circle,#6b2040 0%,#0000 70%);width:50vw;height:50vw;top:-15%;left:-10%}.glow-2{background:radial-gradient(circle,#8b5a20 0%,#0000 70%);width:40vw;height:40vw;animation-delay:-4s;bottom:10%;right:-10%}.glow-3{background:radial-gradient(circle,#4a1530 0%,#0000 70%);width:30vw;height:30vw;animation-delay:-8s;top:40%;left:30%}.sparkle{background:var(--gold-light);opacity:.35;border-radius:50%;width:4px;height:4px;animation:2.2s ease-in-out infinite twinkle;position:absolute;box-shadow:0 0 8px 2px #f0d48ad9,0 0 16px 4px #f0d48a59}.sparkle-md{width:6px;height:6px;box-shadow:0 0 12px 3px #f0d48af2,0 0 24px 6px #f0d48a73}.sparkle-lg{background:#fff8e8;width:8px;height:8px;box-shadow:0 0 14px 4px #fff8e8,0 0 28px 8px #f0d48a8c,0 0 40px 12px #c45c7a33}@keyframes drift{0%{transform:translate(0)scale(1)}to{transform:translate(3%,5%)scale(1.08)}}@keyframes twinkle{0%,to{opacity:.25;transform:scale(.7)}50%{opacity:1;transform:scale(1.35)}}.tab-bar{z-index:2;height:calc(var(--tab-h) + env(safe-area-inset-bottom,0));min-height:var(--tab-h);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--glass-border);padding:0 .25rem env(safe-area-inset-bottom,0);padding-left:max(.25rem, env(safe-area-inset-left,0));padding-right:max(.25rem, env(safe-area-inset-right,0));background:#0a0408d9;flex-shrink:0;display:flex;position:relative}.tab-btn{min-height:44px;color:var(--cream-muted);cursor:pointer;font-family:var(--font-body);letter-spacing:.06em;text-transform:uppercase;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.2rem;padding:.5rem .25rem;font-size:.65rem;font-weight:500;transition:color .25s,transform .2s;display:flex}.tab-btn:hover{color:var(--cream)}.tab-btn.active{color:var(--gold-light)}.tab-btn.active .tab-icon{text-shadow:0 0 12px #f0d48a80;transform:scale(1.15)}.tab-btn.tab-locked:not(.active) .tab-icon{opacity:.75;font-size:.95rem}.tab-icon{font-size:1.25rem;line-height:1;transition:transform .25s,text-shadow .25s}.panel{flex-direction:column;height:100%;animation:.5s both fadeUp;display:flex;overflow:hidden}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.panel-header{text-align:center;flex-shrink:0;padding-bottom:.75rem}.panel-header h2{font-family:var(--font-display);color:var(--gold-light);letter-spacing:.04em;font-size:clamp(1.6rem,5vw,2rem);font-weight:600}.panel-subtitle{color:var(--cream-muted);margin-top:.25rem;font-size:.85rem}.highlight-pill{border:1px solid var(--glass-border);background:#d4a85326;border-radius:999px;margin-top:.5rem;padding:.35rem 1rem;font-size:.8rem;display:inline-block}.highlight-pill strong{color:var(--gold-light)}.invitation-panel{justify-content:center;align-items:center;gap:.65rem;padding-bottom:.5rem}.card-png-actions{flex-shrink:0;gap:.5rem;width:100%;max-width:420px;display:flex}.card-png-actions .card-png-btn{flex:1}.card-png-btn{min-height:44px;font-family:var(--font-body);letter-spacing:.04em;text-transform:uppercase;text-align:center;color:var(--cream-muted);background:var(--glass);border:1px solid var(--glass-border);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:999px;justify-content:center;align-items:center;padding:.5rem .75rem;font-size:.68rem;font-weight:500;text-decoration:none;transition:color .2s,border-color .2s,background .2s;display:inline-flex}.card-png-btn:hover{color:var(--cream);border-color:var(--gold)}.card-png-btn-accent{color:var(--bg-deep);background:var(--gold);border-color:var(--gold)}.card-png-btn-accent:hover{background:var(--gold-light);border-color:var(--gold-light);color:var(--bg-deep)}.card-preview-overlay{z-index:1000;padding:1rem;padding-top:max(1rem, env(safe-area-inset-top,0));padding-bottom:max(1rem, env(safe-area-inset-bottom,0));padding-left:max(1rem, env(safe-area-inset-left,0));padding-right:max(1rem, env(safe-area-inset-right,0));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overscroll-behavior:contain;background:#080206eb;justify-content:center;align-items:stretch;animation:.25s both fadeUp;display:flex;position:fixed;inset:0}.card-preview-content{grid-template-rows:1fr auto;place-items:center;gap:.75rem;width:min(100%,480px);height:100%;max-height:100dvh;padding-bottom:.25rem;display:grid;position:relative}.card-preview-close{z-index:2;border:1px solid var(--glass-border);width:2.75rem;height:2.75rem;color:var(--cream);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:#0a0408e6;border-radius:50%;justify-content:center;align-items:center;font-size:.85rem;transition:border-color .2s;display:flex;position:absolute;top:0;right:0}.card-preview-close:hover{border-color:var(--gold)}.card-preview-image-wrap{justify-content:center;align-items:center;width:100%;height:100%;min-height:0;padding-top:2.5rem;display:flex}.card-preview-image{object-fit:contain;border-radius:4px;width:auto;max-width:100%;height:auto;max-height:100%;box-shadow:0 24px 60px #0009}.card-preview-download{width:auto;min-width:9rem;max-width:12rem;height:auto;min-height:unset;font-family:var(--font-body);letter-spacing:.04em;text-transform:uppercase;color:var(--bg-deep);background:var(--gold);border:1px solid var(--gold);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:999px;flex:none;justify-self:center;padding:.5rem 1.1rem;font-size:.65rem;font-weight:500}.card-preview-download:hover{background:var(--gold-light);border-color:var(--gold-light)}.invitation-panel .invitation-card{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--gold) transparent;border:1px solid var(--glass-border);text-align:center;width:min(100%,420px);min-height:0;max-height:calc(100% - 3.25rem);color:var(--cream);background:linear-gradient(160deg,#fff5eb1a 0%,#fff5eb0a 100%);border-radius:4px;flex:auto;padding:1.25rem 1.1rem 1rem;animation:.8s cubic-bezier(.22,1,.36,1) both cardReveal;position:relative;overflow:hidden auto;box-shadow:inset 0 0 0 1px #ffffff0a,0 24px 60px #00000080,0 0 80px #c45c7a1f}@keyframes cardReveal{0%{opacity:0;transform:scale(.92)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}.invite-script{font-family:var(--font-script);color:var(--cream-muted);margin-bottom:.75rem;font-size:clamp(1.65rem,6vw,2rem);line-height:1.2}.invite-couple-row{grid-template-columns:1fr auto 1fr;align-items:center;gap:.35rem;margin-bottom:.85rem;display:grid}.invite-couple-side{min-width:0}.invite-name-script{font-family:var(--font-script);background:linear-gradient(135deg, var(--cream) 30%, var(--gold-light) 70%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:.2rem;font-size:clamp(1.5rem,5.5vw,1.9rem);line-height:1.15}.invite-parents{font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;color:var(--cream-muted);font-size:clamp(.62rem,2.8vw,.72rem);font-weight:600;line-height:1.4}.invite-couple-center{justify-content:center;align-items:center;padding:0 .15rem;display:flex}.invite-couple-icon{color:var(--rose-soft);opacity:.9;font-size:1rem}.invite-label{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--cream-muted);margin-bottom:.25rem;font-size:clamp(.72rem,3.2vw,.82rem);font-weight:600;line-height:1.45}.invite-guest-name{font-family:var(--font-display);background:linear-gradient(135deg, var(--cream) 20%, var(--gold-light) 80%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:.15rem 0 .35rem;font-size:clamp(1.2rem,5vw,1.45rem);font-weight:600;line-height:1.2}.invite-dotted-line{border-bottom:1px dotted #d4a85373;width:min(100%,16rem);height:1px;margin:0 auto .65rem}.invite-day{margin-bottom:.55rem}.invite-date-block{width:min(100%,15rem);margin:.5rem auto .65rem}.invite-date-row{grid-template-columns:1fr auto 1fr;align-items:end;gap:.5rem;margin-bottom:.25rem;display:grid}.invite-date-part{font-family:var(--font-display);letter-spacing:.08em;color:var(--cream-muted);font-size:clamp(.78rem,3.2vw,.88rem);font-weight:700}.invite-date-day{font-family:var(--font-display);color:var(--gold-light);font-size:clamp(2rem,9vw,2.75rem);font-weight:700;line-height:1}.invite-date-rules{grid-template-columns:1fr auto 1fr;align-items:center;gap:.5rem;display:grid}.invite-date-rules span{background:linear-gradient(90deg, transparent, var(--gold), transparent);height:1px;display:block}.invite-date-rules span:nth-child(2){width:2.5rem}.invite-poruwa{margin-bottom:.55rem}.invite-venue{font-family:var(--font-display);letter-spacing:.06em;color:var(--gold-light);margin:.15rem 0 .25rem;font-size:clamp(1.05rem,4vw,1.25rem);font-weight:600}.invite-city{margin-bottom:.65rem}.invite-footer{border-top:1px solid var(--glass-border);margin-top:.15rem;padding-top:.55rem}.invite-rsvp-line{font-family:var(--font-display);letter-spacing:.03em;color:var(--cream-muted);margin-bottom:.4rem;font-size:clamp(.68rem,3vw,.78rem);font-weight:600;line-height:1.55}.invite-rsvp-link{color:var(--gold-light);text-decoration:none}.invite-rsvp-link:hover{color:var(--cream)}.invite-maps-link{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--gold-light);font-size:clamp(.68rem,3vw,.78rem);font-weight:600;text-decoration:none}.invite-maps-link:hover{text-decoration:underline}.locked-panel{justify-content:center;align-items:center}.locked-content{text-align:center;max-width:340px;padding:1rem;animation:.5s both fadeUp}.locked-icon{filter:drop-shadow(0 0 12px #d4a85359);margin-bottom:.75rem;font-size:2.5rem;display:block}.locked-title{font-family:var(--font-display);color:var(--gold-light);margin-bottom:.35rem;font-size:clamp(1.5rem,5vw,1.85rem);font-weight:600}.locked-message{font-family:var(--font-display);color:var(--rose-soft);margin-bottom:.25rem;font-size:1rem;font-style:italic}.locked-date{color:var(--cream-muted);letter-spacing:.06em;margin-bottom:1.25rem;font-size:.8rem}.countdown-grid{grid-template-columns:repeat(4,1fr);gap:.5rem;margin-bottom:1.25rem;display:grid}.countdown-unit{background:var(--glass);border:1px solid var(--glass-border);border-radius:8px;flex-direction:column;align-items:center;gap:.3rem;padding:.65rem .35rem;display:flex}.countdown-value{font-family:var(--font-display);color:var(--gold-light);font-size:clamp(1.35rem,5vw,1.75rem);font-weight:700;line-height:1}.countdown-label{letter-spacing:.1em;text-transform:uppercase;color:var(--cream-muted);font-size:.55rem;font-weight:600}.locked-hint{color:var(--cream-muted);font-size:.75rem;line-height:1.45}.table-panel{padding-bottom:.5rem}.table-grid{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--gold) transparent;flex:1;grid-template-columns:repeat(2,1fr);align-content:start;gap:.6rem;min-height:0;padding-bottom:.5rem;display:grid;overflow-y:auto}.table-card{background:var(--glass);border:1px solid #ffffff0f;border-radius:8px;padding:.75rem;transition:border-color .3s,box-shadow .3s;position:relative}.table-card.yours{border-color:var(--gold);background:#d4a85314;box-shadow:0 0 20px #d4a85333}.your-badge{text-transform:uppercase;letter-spacing:.08em;background:var(--gold);color:var(--bg-deep);border-radius:999px;padding:.15rem .5rem;font-size:.55rem;font-weight:600;position:absolute;top:-.4rem;right:.5rem}.table-card h3{font-family:var(--font-display);color:var(--gold-light);margin-bottom:.15rem;font-size:1rem}.table-location{color:var(--cream-muted);margin-bottom:.4rem;font-size:.65rem}.table-card ul{color:var(--cream-muted);font-size:.7rem;line-height:1.4;list-style:none}.gallery-panel{padding-bottom:.5rem}.gallery-grid{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;grid-template-columns:repeat(2,1fr);align-content:start;gap:.6rem;min-height:0;display:grid;overflow-y:auto}.gallery-item{border:1px solid var(--glass-border);border-radius:8px;animation:.5s both fadeUp;overflow:hidden}.gallery-item img{object-fit:cover;width:100%;height:100%;display:block}.placeholder-inner{aspect-ratio:1;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;padding:.5rem;display:flex}.placeholder-icon{opacity:.7;font-size:1.5rem}.placeholder-label{font-family:var(--font-display);color:var(--cream);font-size:1rem}.placeholder-inner small{color:#ffffff80;font-size:.6rem}.gallery-item figcaption{color:var(--cream-muted);background:#0006;padding:.35rem .5rem;font-size:.7rem}.agenda-panel{padding-bottom:.5rem}.agenda-timeline{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-color:var(--gold) transparent;scrollbar-width:thin;flex:1;min-height:0;padding:0 .25rem .5rem;list-style:none;position:relative;overflow-y:auto}.agenda-timeline:before{content:"";background:linear-gradient(180deg, transparent, var(--gold), transparent);width:1px;position:absolute;top:.5rem;bottom:.5rem;left:calc(4.5rem + 6px)}.agenda-item{grid-template-columns:4.5rem 12px 1fr;align-items:start;gap:.5rem;padding:.5rem 0;animation:.4s both fadeUp;display:grid}.agenda-time{color:var(--gold);text-align:right;letter-spacing:.02em;padding-top:.15rem;font-size:.7rem;font-weight:600}.agenda-dot{background:var(--gold);z-index:1;border-radius:50%;width:10px;height:10px;margin-top:.25rem;position:relative;box-shadow:0 0 8px #d4a85399}.agenda-content h3{font-family:var(--font-display);color:var(--cream);margin-bottom:.1rem;font-size:1rem;font-weight:600}.agenda-content p{color:var(--cream-muted);font-size:.72rem;line-height:1.4}.loading-screen,.error-screen{background:var(--bg-deep);height:100dvh;color:var(--cream-muted);flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex}.loading-ring{border:2px solid #d4a85333;border-top-color:var(--gold);border-radius:50%;width:48px;height:48px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:var(--font-display);color:var(--gold-light);font-size:1.1rem;font-style:italic}.error-screen small{opacity:.6}.invitation-panel:not(:has(.card-png-actions)) .invitation-card{max-height:100%}@media (width<=380px){.wedding-main{padding:.5rem .5rem 0;padding-left:max(.5rem, env(safe-area-inset-left,0));padding-right:max(.5rem, env(safe-area-inset-right,0))}.invitation-panel .invitation-card{padding:1rem .85rem .85rem}.invite-couple-row{grid-template-columns:1fr;gap:.45rem}.invite-couple-center{display:none}.card-png-btn{padding:.5rem;font-size:.62rem}.card-preview-overlay{padding:.65rem;padding-top:max(.65rem, env(safe-area-inset-top,0));padding-bottom:max(.65rem, env(safe-area-inset-bottom,0))}.card-preview-content{gap:.45rem}.card-preview-close{width:2.25rem;height:2.25rem;font-size:.75rem}.card-preview-image-wrap{padding-top:2rem}.card-preview-download{min-width:8rem;max-width:10rem;padding:.45rem .9rem;font-size:.6rem}.panel-header{padding-bottom:.5rem}.highlight-pill{max-width:100%;padding:.3rem .75rem;font-size:.72rem;line-height:1.35}.agenda-item{grid-template-columns:3.5rem 10px 1fr;gap:.35rem}.agenda-timeline:before{left:calc(3.5rem + 5px)}.agenda-time{font-size:.62rem}.agenda-content h3{font-size:.9rem}.agenda-content p{font-size:.68rem}.table-grid{grid-template-columns:1fr;gap:.5rem}.table-card{padding:.65rem}}@media (height<=700px){.invitation-panel .invitation-card{padding:.85rem .9rem .75rem}.invite-script{margin-bottom:.5rem}.invite-couple-row{margin-bottom:.55rem}.invite-dotted-line{margin-bottom:.45rem}.invite-date-block{margin:.35rem auto .45rem}.invite-city{margin-bottom:.45rem}}@media (height<=600px){:root{--tab-h:56px}.tab-label{font-size:.58rem}.tab-icon{font-size:1.1rem}.invitation-panel{gap:.4rem}.invitation-panel .invitation-card{max-height:calc(100% - 2.75rem)}}@media (width>=480px){.wedding-main{padding:1.25rem 1.5rem 0;padding-left:max(1.5rem, env(safe-area-inset-left,0));padding-right:max(1.5rem, env(safe-area-inset-right,0))}.invitation-panel .invitation-card{padding:1.5rem 1.75rem}.gallery-grid{gap:.75rem}.card-png-btn{font-size:.7rem}}@media (width>=768px){.wedding-main{padding:1.5rem 2rem 0}.table-grid,.gallery-grid{grid-template-columns:repeat(3,1fr);gap:.75rem}}
