@import "https://fonts.googleapis.com/css2?family=Great+Vibes&display=swap";:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;height:100%;overflow:hidden}#root{height:100%}.auth-screen{background:linear-gradient(#0000008c,#0000008c),url(/assets/mobile-B7UcS9pq.jpeg?auto=format&fit=crop&w=1920&q=80) 50%/cover no-repeat;justify-content:center;align-items:center;min-height:100dvh;padding:1.25rem;display:flex}@media (width>=641px){.auth-screen{background:linear-gradient(#0000008c,#0000008c),url(/assets/desktop-CJSR3j1G.jpeg?auto=format&fit=crop&w=1920&q=80) 50%/cover no-repeat fixed}}.auth-card{-webkit-backdrop-filter:blur(12px);background:#ffffff40;border:1px solid #ffffff59;border-radius:16px;flex-direction:column;gap:.85rem;width:100%;max-width:420px;padding:1.3rem;display:flex;box-shadow:0 24px 60px #00000059}.auth-card h1{color:#fff;text-shadow:0 1px 6px #00000059;font-family:Great Vibes,cursive;font-size:2.2rem}.auth-card p{color:#ffffffd9;font-size:.9rem}.auth-field{flex-direction:column;gap:.4rem;display:flex}.auth-field span{color:#ffffffd9;font-size:.82rem}.auth-field input{color:#fff;background:#ffffff26;border:1px solid #fff6;border-radius:10px;outline:none;padding:.6rem .75rem;font-size:.8rem}.auth-field input::placeholder{color:#fff9}.auth-field input:focus{border-color:#fff;box-shadow:0 0 0 3px #fff3}.auth-error{color:#ffb4a8;font-size:.82rem}.auth-submit{color:#fff;cursor:pointer;background:#2f2f2f;border:none;border-radius:999px;padding:.6rem 1rem;font-size:.8rem}.auth-submit:disabled{opacity:.65;cursor:not-allowed}.auth-chip{z-index:3;color:#fff;-webkit-backdrop-filter:blur(6px);background:#ffffff1f;border:1px solid #ffffff73;border-radius:999px;align-items:center;gap:.45rem;padding:.35rem .5rem .35rem .7rem;display:none;position:absolute;top:.9rem;right:.9rem}.auth-chip__user{white-space:nowrap;font-size:.78rem}.auth-chip__logout{cursor:pointer;color:#2e2e2e;background:#fff;border:none;border-radius:999px;padding:.32rem .65rem;font-size:.75rem}.info-wrap{z-index:50;position:fixed;top:.9rem;right:.9rem}.info-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);background:#ffffff26;border:1px solid #ffffff73;border-radius:50%;width:36px;height:36px;font-family:Georgia,Times New Roman,serif;font-size:1rem;font-style:italic;font-weight:700}.info-btn:hover{background:#ffffff47}.info-message{color:#fff;letter-spacing:.04em;text-align:center;-webkit-backdrop-filter:blur(6px);background:#000000a6;border-radius:8px;width:max-content;max-width:160px;padding:.45rem .6rem;font-size:.72rem;line-height:1.6;position:absolute;top:calc(100% + .5rem);right:0;box-shadow:0 10px 30px #00000059}.modal-backdrop{-webkit-backdrop-filter:blur(4px);z-index:100;background:#000000b3;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;flex-direction:column;width:100%;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0006}.preview__gallery{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:auto;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));max-width:none;min-height:0;padding:1rem 1.2rem;display:grid;overflow-y:auto}.gallery-modal{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:#fffffff7;border-radius:20px;width:min(100%,1400px);max-width:1400px;height:min(100%,100vh - 2rem);display:block;overflow:auto;box-shadow:0 20px 60px #0006}.modal__header,.gallery-modal__header{z-index:10;background:#fffffff7;border-bottom:1px solid #eee;justify-content:space-between;align-items:center;padding:.9rem 1.2rem;display:flex;position:sticky;top:0}.modal__count{color:#777;font-size:.85rem}.modal__close{color:#444;cursor:pointer;background:#f0f0f0;border:none;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:.8rem;transition:background .15s;display:flex}.modal__close:hover{background:#e0e0e0}.preview__actions{border-top:1px solid #eee;flex-shrink:0;justify-content:flex-end;gap:.75rem;padding:.9rem 1.2rem;display:flex}.preview__cancel{color:#555;cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:99px;padding:.5rem 1.2rem;font-size:.85rem;transition:background .15s}.preview__cancel:hover{background:#f5f5f5}.preview__confirm{color:#fff;cursor:pointer;background:#222;border:none;border-radius:99px;padding:.5rem 1.4rem;font-size:.85rem;transition:background .15s}.preview__confirm:hover{background:#444}.preview__confirm:disabled,.preview__cancel:disabled{opacity:.5;cursor:not-allowed}.gallery-open-btn{cursor:pointer;-webkit-backdrop-filter:blur(6px);color:#ffffffd9;white-space:nowrap;background:#ffffff1a;border:2px solid #ffffff80;border-radius:18px;align-items:center;gap:.4rem;padding:.55rem 1.4rem;font-size:.82rem;transition:border-color .2s,background .2s;display:inline-flex}.gallery-open-btn:hover{background:#ffffff38;border-color:#ffffffd9}.gallery--fullscreen{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem;width:100%;max-width:none;padding:1.25rem;display:grid}.gallery--fullscreen .gallery__item{aspect-ratio:1;justify-content:center;align-items:center;width:100%;margin:0;display:flex}.gallery--fullscreen .gallery__item img{object-fit:cover;width:100%;height:100%}.gallery--fullscreen:has(.gallery__status){text-align:center;justify-content:center;align-items:center;min-height:60vh;display:flex}.gallery__status{color:#888;margin-top:6rem;font-size:1rem}.lightbox{z-index:200;cursor:zoom-out;background:#000000eb;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox img{object-fit:cover;cursor:default;border-radius:6px;max-width:92vw;max-height:92vh;box-shadow:0 8px 40px #0009}.lightbox__close{top:calc(1rem + env(safe-area-inset-top));right:calc(1rem + env(safe-area-inset-right));color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:.9rem;transition:background .15s;display:flex;position:absolute}.lightbox__close:hover{background:#ffffff4d}.lightbox__navigation{color:#fff;cursor:pointer;background:#00000061;border:none;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;font-size:3rem;font-weight:200;line-height:1;transition:background .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.lightbox__navigation:hover{background:#0000009e}.lightbox__navigation--previous{left:calc(1rem + env(safe-area-inset-left))}.lightbox__navigation--next{right:calc(1rem + env(safe-area-inset-right))}.app{background:linear-gradient(#00000073,#00000073),url(/assets/mobile-B7UcS9pq.jpeg?auto=format&fit=crop&w=1920&q=80) 50%/cover no-repeat;flex-direction:column;justify-content:space-between;align-items:center;gap:1.5rem;min-height:100dvh;padding:2rem 1rem 4.5rem;font-family:system-ui,sans-serif;display:flex;position:relative}@media (width>=641px){.app{background:linear-gradient(#00000073,#00000073),url(/assets/desktop-CJSR3j1G.jpeg?auto=format&fit=crop&w=1920&q=80) 50%/cover no-repeat fixed}}.app__top{flex-direction:column;align-items:center;gap:1.5rem;width:100%;display:flex}.app__bottom{flex-direction:column;align-items:center;gap:.5rem;width:100%;display:flex}.app h1{color:#fff;text-shadow:0 1px 6px #00000080;letter-spacing:.03em;font-size:1.75rem;font-weight:700}.app h1.wedding-title{color:#fff;text-shadow:0 2px 16px #0000008c;letter-spacing:.06em;text-align:center;white-space:nowrap;pointer-events:none;font-family:Great Vibes,cursive;font-size:clamp(2.4rem,6vw,4.5rem);font-style:normal;font-weight:400;line-height:1.35;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.wedding-title__heart{vertical-align:middle;fill:#fff;filter:drop-shadow(0 2px 6px #0000008c);width:.72em;height:.72em;margin-left:.05em;transform:translateY(-.08em)}.drop-zone{cursor:pointer;-webkit-backdrop-filter:blur(6px);text-align:center;color:#fff;white-space:nowrap;background:#ffffff26;border:2px dashed #ffffffb3;border-radius:18px;align-items:center;gap:.5rem;width:auto;padding:.55rem 1.4rem;font-size:.85rem;transition:border-color .2s,background .2s;display:inline-flex}.drop-zone:hover,.drop-zone--active{background:#ffffff47;border-color:#fff}.drop-zone__icon{font-size:1.1rem;line-height:1}.drop-zone p{font-size:.85rem}.count{color:#ffffffbf;align-self:flex-start;width:100%;max-width:900px;font-size:.875rem}.wedding-date{color:#ffffffb3;letter-spacing:.08em;text-align:center;white-space:nowrap;pointer-events:none;font-family:Great Vibes,cursive;font-size:1.5rem;position:absolute;bottom:1rem;left:50%;transform:translate(-50%)}.gallery{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));align-items:start;gap:1rem;width:100%;max-width:1400px;display:grid}.gallery__item{aspect-ratio:1;background:#f0f0f0;border-radius:8px;justify-content:center;align-items:center;min-width:0;line-height:0;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 4px #0000001a}.gallery__item img{object-fit:cover;background:#f8f8f8;width:100%;height:100%;display:block}.gallery__remove{color:#fff;cursor:pointer;opacity:0;background:#0000008c;border:none;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:.75rem;transition:opacity .15s;display:flex;position:absolute;top:6px;right:6px}.gallery__item:hover .gallery__remove{opacity:1}.upload-progress-modal{max-width:440px}.upload-overall{flex-direction:column;gap:.5rem;padding:1.4rem 1.2rem .8rem;display:flex}.upload-overall__bar{background:#eee;border-radius:99px;height:8px;overflow:hidden}.upload-overall__fill{background:#0c66e4;border-radius:99px;height:100%;transition:width .2s}.upload-overall__fill--done{background:#22a06b}.upload-overall__meta{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.upload-overall__filename{color:#888;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.78rem;overflow:hidden}.upload-overall__pct{color:#444;flex-shrink:0;font-size:.82rem;font-weight:600}.upload-overall__summary{flex-wrap:wrap;gap:1rem;margin-top:.2rem;display:flex}.upload-summary--done{color:#22a06b;font-size:.82rem;font-weight:600}.upload-summary--error{color:#c9372c;font-size:.82rem;font-weight:600}.upload-summary--cancelled{color:#999;font-size:.82rem;font-weight:600}@media (width<=640px){.auth-chip{justify-content:space-between;top:.6rem;left:.6rem;right:.6rem}.modal-backdrop{height:100dvh;height:var(--app-vh,100dvh);padding:0}.modal{max-height:var(--app-vh,100dvh)}.preview__gallery{padding:.85rem;padding-bottom:calc(.85rem + env(safe-area-inset-bottom));flex-wrap:wrap;align-content:flex-start;gap:.85rem;display:flex}.preview__gallery .gallery__item{flex:0 0 calc(50% - .425rem)}.preview__actions{padding-bottom:max(.9rem, calc(.9rem + env(safe-area-inset-bottom)))}.gallery-modal{width:100vw;height:100dvh;height:var(--app-vh,100dvh);border-radius:0;max-width:none}.gallery-modal__header{padding-top:max(.6rem, calc(.5rem + env(safe-area-inset-top)));padding-bottom:.6rem}.gallery--fullscreen{padding:.85rem;padding-bottom:calc(.85rem + env(safe-area-inset-bottom));grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:.85rem;display:grid}.app{padding:calc(2rem + env(safe-area-inset-top)) calc(1rem + env(safe-area-inset-right)) calc(4.5rem + env(safe-area-inset-bottom)) calc(1rem + env(safe-area-inset-left))}.wedding-title{white-space:normal;max-width:92vw;font-size:clamp(1.9rem,8vw,3.2rem)}.wedding-date{white-space:normal;max-width:92vw;bottom:calc(1rem + env(safe-area-inset-bottom));font-size:clamp(1.1rem,5vw,1.5rem)}.drop-zone,.gallery-open-btn{white-space:normal;text-align:center}.modal__close,.lightbox__close{width:44px;height:44px;font-size:.95rem}.auth-submit,.preview__cancel,.preview__confirm,.gallery-open-btn,.drop-zone{justify-content:center;align-items:center;min-height:44px;display:inline-flex}}
