.landing-screen{position:relative}.landing-petals{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;overflow:hidden;pointer-events:none;animation:petals-container-fade 2s ease-in 7s forwards}@keyframes petals-container-fade{0%{opacity:1}to{opacity:0}}.landing-petal{position:absolute;top:-5%;width:7px;height:11px;background:var(--color-accent-gold);border-radius:50% 5%;opacity:0;animation:petal-fall linear infinite}@keyframes petal-fall{0%{opacity:0;transform:translateY(0) translate(0) rotate(0)}5%{opacity:.55}38%{transform:translateY(38vh) translate(20px) rotate(118deg)}72%{transform:translateY(72vh) translate(-10px) rotate(216deg)}93%{opacity:.3}to{opacity:0;transform:translateY(110vh) translate(8px) rotate(325deg)}}.landing-petal--0{left:5%;animation-duration:8.4s;animation-delay:0s;width:7px;height:11px}.landing-petal--1{left:15%;animation-duration:11.2s;animation-delay:2.4s;width:6px;height:9px}.landing-petal--2{left:26%;animation-duration:9.7s;animation-delay:.5s;width:8px;height:12px}.landing-petal--3{left:36%;animation-duration:7.8s;animation-delay:3.1s;width:6px;height:10px}.landing-petal--4{left:47%;animation-duration:10.5s;animation-delay:1.4s;width:9px;height:13px}.landing-petal--5{left:57%;animation-duration:8.9s;animation-delay:2.8s;width:7px;height:11px}.landing-petal--6{left:64%;animation-duration:12.1s;animation-delay:.8s;width:6px;height:9px}.landing-petal--7{left:72%;animation-duration:9.3s;animation-delay:3.5s;width:8px;height:12px}.landing-petal--8{left:80%;animation-duration:7.6s;animation-delay:1.8s;width:7px;height:10px}.landing-petal--9{left:88%;animation-duration:11.4s;animation-delay:.2s;width:6px;height:9px}.landing-petal--10{left:21%;animation-duration:8.2s;animation-delay:2.1s;width:9px;height:13px}.landing-petal--11{left:70%;animation-duration:10.8s;animation-delay:1.1s;width:7px;height:11px}@media(prefers-reduced-motion:reduce){.landing-petal{animation:none;opacity:0}.landing-portrait{animation:none}}.landing-content{display:flex;flex-direction:column;gap:16px;padding:max(8px,env(safe-area-inset-top)) var(--spacing-gutter) max(28px,env(safe-area-inset-bottom))}.landing-hero{width:100%;padding:4px 0 18px;text-align:center}.landing-hero:before{content:"";position:absolute;left:50%;top:50%;z-index:-1;width:min(100%,360px);height:90%;border-radius:50%;transform:translate(-50%,-52%);background:radial-gradient(ellipse at center,color-mix(in srgb,var(--color-accent-gold) 10%,transparent) 0%,transparent 72%);pointer-events:none}.landing-portrait{display:block;width:min(42%,88px);aspect-ratio:1;margin:0 auto 10px;background-color:var(--color-accent-gold);mask:url(/assets/wedding_portre-Syx8_NP9.svg) center / contain no-repeat;-webkit-mask:url(/assets/wedding_portre-Syx8_NP9.svg) center / contain no-repeat;transform-origin:50% 0%;animation:portrait-swing 2.8s ease-out .3s both;will-change:transform}@keyframes portrait-swing{0%{transform:rotate(0)}12%{transform:rotate(4deg)}30%{transform:rotate(-2.2deg)}47%{transform:rotate(1.2deg)}62%{transform:rotate(-.5deg)}76%{transform:rotate(.2deg)}to{transform:rotate(0)}}.landing-eyebrow{margin-bottom:6px;font-family:var(--font-body);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-overline);text-transform:uppercase;color:var(--color-ink-secondary)}.landing-names{margin-bottom:6px;font-family:var(--font-display);font-size:var(--text-display);font-weight:700;line-height:var(--leading-tight);letter-spacing:.01em;color:var(--color-accent-gold)}.landing-date{font-family:var(--font-body);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-overline);text-transform:uppercase;color:var(--color-ink-secondary)}.divider-ornament{display:flex;align-items:center;gap:8px;margin:8px auto;width:58%;color:var(--color-accent-gold)}.divider-ornament:before,.divider-ornament:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--color-accent-gold),transparent)}.divider-ornament span{width:4px;height:4px;background:var(--color-accent-gold);transform:rotate(45deg)}.landing-welcome{font-family:var(--font-body);font-size:var(--text-base);font-weight:400;line-height:var(--leading-relaxed);color:var(--color-ink-primary)}.landing-section-title{display:flex;align-items:center;gap:12px;margin-top:4px;color:var(--color-accent-gold)}.landing-section-title:before,.landing-section-title:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--color-accent-gold-muted, rgba(184, 149, 107, .4)),transparent)}.landing-section-title span{font-family:var(--font-body);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-overline);text-transform:uppercase;color:var(--color-ink-secondary)}.landing-action{display:flex;flex-direction:column;gap:14px;margin-top:-8px}.consent-panel{padding:16px}.consent-panel-text{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-ink-secondary)}.consent-panel-toggle{display:flex;align-items:center;gap:11px;margin-top:14px;padding-top:14px;border-top:1px solid var(--color-border-hairline);cursor:pointer;-webkit-user-select:none;user-select:none}.consent-panel-toggle input{position:absolute;opacity:0;width:1px;height:1px}.consent-panel-box{flex-shrink:0;width:20px;height:20px;border:1.5px solid var(--color-border-gold);border-radius:5px;background:color-mix(in srgb,var(--color-accent-gold) 6%,var(--color-surface-elevated));transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.consent-panel-toggle--on .consent-panel-box{background-color:var(--color-accent-gold);border-color:var(--color-accent-gold);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-accent-gold) 22%,transparent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10'%3E%3Cpath fill='none' stroke='%23FFFCF8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M1.5 5l3 3 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:11px 9px}.consent-panel-label{font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;line-height:var(--leading-snug);color:var(--color-ink-primary)}.landing-meta{font-size:var(--text-xs);line-height:var(--leading-relaxed);text-align:center;color:var(--color-ink-secondary)}.landing-error{font-size:var(--text-xs);line-height:var(--leading-relaxed);text-align:center;color:var(--color-status-error)}.landing-upload{display:flex;flex-direction:column;gap:12px;padding:16px}.landing-upload-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-shrink:0;padding-bottom:10px;border-bottom:1px solid var(--color-border-hairline)}.landing-upload-title{font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-overline);text-transform:uppercase;color:var(--color-ink-primary)}.landing-upload-count{font-size:var(--text-2xs);color:var(--color-ink-secondary)}.landing-upload-list{display:flex;flex-direction:column}.landing-upload-list--scroll{max-height:min(420px,48vh);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-right:4px;scrollbar-gutter:stable}.landing-upload-list--scroll::-webkit-scrollbar{width:6px}.landing-upload-list--scroll::-webkit-scrollbar-track{background:var(--color-progress-track);border-radius:3px}.landing-upload-list--scroll::-webkit-scrollbar-thumb{background:var(--color-accent-gold-muted);border-radius:3px}.landing-upload-footer{flex-shrink:0;padding-top:4px;scroll-margin-bottom:max(24px,env(safe-area-inset-bottom))}.landing-upload-list .file-row--compact{padding:5px 0;border-bottom:1px solid var(--color-border-hairline)}.landing-upload-list .file-row--compact:last-child{border-bottom:none}.landing-upload-list .file-row--compact .file-row-main{font-size:var(--text-xs);line-height:var(--leading-snug);gap:8px}.landing-upload-list .file-row--compact .file-row-thumb{width:36px;height:36px}.landing-upload-list .file-row--compact .file-row-name{max-width:66%}.landing-upload-list .file-row--compact .file-row-status{font-size:var(--text-2xs);letter-spacing:.04em}.landing-upload-list .file-row--compact .file-row-error{margin-top:2px;font-size:var(--text-2xs)}.landing-upload-list .file-row--compact .progress-bar--compact{height:3px;margin-top:5px}.landing-upload-list .file-row-retry{margin-top:2px;padding:0;border:none;background:none;font-family:var(--font-body);font-size:var(--text-2xs);font-weight:600;color:var(--color-accent-gold);cursor:pointer}.landing-manifesto{margin-top:2px;font-family:var(--font-display);font-size:var(--text-md);font-style:italic;text-align:center;color:var(--color-ink-secondary);padding-bottom:4px}.file-row-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.file-row-remove{display:flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:1px solid var(--color-border-hairline);border-radius:50%;background:transparent;color:var(--color-ink-secondary);font-size:var(--text-base);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.file-row-remove:hover{background:var(--color-status-error);border-color:var(--color-status-error);color:#fff}.flow-screen{position:relative}.flow-content{position:relative;z-index:1;display:flex;min-height:100dvh;flex-direction:column;gap:20px;padding:max(48px,env(safe-area-inset-top)) var(--spacing-gutter) max(32px,env(safe-area-inset-bottom))}.flow-heading{font-family:var(--font-body);font-size:var(--text-lg);font-weight:600;letter-spacing:.04em}.flow-copy{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-ink-secondary)}.flow-error{font-size:var(--text-base);color:var(--color-status-error)}.flow-manifesto{margin-top:auto;font-size:var(--text-md);font-style:italic;line-height:var(--leading-relaxed);text-align:center;color:var(--color-ink-secondary)}.file-list{display:flex;flex-direction:column;border-top:1px solid var(--color-border-hairline)}.file-row{padding:12px 0;border-bottom:1px solid var(--color-border-hairline)}.file-row-main{display:flex;justify-content:space-between;gap:12px;font-size:var(--text-base)}.file-row-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row-error{margin-top:6px;font-size:var(--text-sm);color:var(--color-status-error)}.progress-bar{height:6px;margin-top:10px;overflow:hidden;background:var(--color-progress-track);border-radius:var(--rounded-sm)}.upload-counter{font-size:var(--text-base);font-weight:500;color:var(--color-ink-secondary)}.btn-secondary{color:var(--color-accent-gold);background:transparent}.btn-ghost{width:auto;min-height:auto;padding:8px 0;border:none;color:var(--color-accent-gold);background:transparent;font-size:var(--text-base);font-weight:600}.rate-limit-screen{display:flex;min-height:100dvh;flex-direction:column;justify-content:center;gap:16px;padding:var(--spacing-gutter);text-align:center}.rate-limit-heading{font-size:var(--text-lg);font-weight:600}.rate-limit-copy{font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-ink-secondary)}.review-content{justify-content:center;align-items:stretch}.review-checkmark{display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;border-radius:50%;border:2px solid var(--color-accent-gold);background:var(--color-surface-elevated);color:var(--color-accent-gold);font-size:1.5rem;font-weight:300}.thanks-illustration{display:block;width:min(52%,200px);aspect-ratio:1;margin:0 auto 4px;background-color:var(--color-accent-gold);opacity:.88;mask:url(/assets/thx-DrvdvSRK.svg) center / contain no-repeat;-webkit-mask:url(/assets/thx-DrvdvSRK.svg) center / contain no-repeat}[data-theme=dark] .thanks-illustration{opacity:.92}.flow-content--thanks{gap:18px}@keyframes thanks-enter{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.thanks-enter{animation:thanks-enter .45s ease-out both}.thanks-enter--delay-1{animation-delay:.12s}.thanks-enter--delay-2{animation-delay:.24s}@media(prefers-reduced-motion:reduce){.thanks-enter{animation:none}.thanks-confetti-piece{animation:none!important;opacity:0!important}}.thanks-hero{width:100%;padding:8px 0 4px;text-align:center}.thanks-hero:before{content:"";position:absolute;left:50%;top:50%;z-index:-1;width:min(100%,340px);height:95%;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(ellipse at center,color-mix(in srgb,var(--color-accent-gold) 9%,transparent) 0%,transparent 72%);pointer-events:none}.thanks-names{margin-bottom:6px;font-family:var(--font-display);font-size:var(--text-display);font-weight:700;line-height:var(--leading-tight);letter-spacing:.01em;color:var(--color-accent-gold)}.thanks-date{margin-bottom:2px;font-family:var(--font-body);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-overline);text-transform:uppercase;color:var(--color-ink-secondary)}.thanks-heading{margin-bottom:10px}.thanks-stats{display:flex;justify-content:center;flex-wrap:wrap;gap:16px 24px;margin:4px 0 2px}.thanks-stat{display:inline-flex;flex-direction:row;align-items:center;gap:8px;color:var(--color-accent-gold)}.thanks-stat-icon{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:24px;height:24px}.thanks-stat-icon svg{width:22px;height:22px}.thanks-stat-text{display:inline-flex;align-items:baseline;gap:.35em;font-family:var(--font-body);line-height:1.2}.thanks-stat-count{font-size:var(--text-lg);font-weight:700;color:var(--color-ink-primary)}.thanks-stat-label{font-size:var(--text-sm);font-weight:500;color:var(--color-ink-secondary)}.thanks-partial-note{margin-top:8px;font-size:var(--text-xs);line-height:var(--leading-relaxed);color:var(--color-ink-secondary)}.thanks-manifesto{margin:0;font-size:var(--text-md);font-style:italic;line-height:var(--leading-relaxed);color:var(--color-ink-secondary)}.thanks-actions{display:flex;flex-direction:column;align-items:stretch;gap:8px}.thanks-confetti{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;overflow:hidden;pointer-events:none}.thanks-confetti-piece{position:absolute;opacity:0;box-shadow:0 0 1px #ffffff59;animation:thanks-confetti-fall ease-out forwards}@keyframes thanks-confetti-fall{0%{opacity:0;transform:translateZ(0) rotate(0) scale(.5)}6%{opacity:.95;transform:translate3d(calc(var(--drift) * .3),8vh,0) rotate(calc(var(--spin) * .15)) scale(1.1)}25%{opacity:.88;transform:translate3d(var(--drift),28vh,0) rotate(calc(var(--spin) * .4)) scale(1)}55%{opacity:.7;transform:translate3d(calc(var(--drift) * 1.4),58vh,0) rotate(calc(var(--spin) * .7)) scale(.95)}to{opacity:0;transform:translate3d(calc(var(--drift) * 2),112vh,0) rotate(var(--spin)) scale(.85)}}@font-face{font-family:Libre Baskerville;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/libre-baskerville-latin-400-normal-C42RasBZ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Libre Baskerville;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/libre-baskerville-latin-700-normal-CLGq6Yj4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-surface-base: #f7f4ee;--color-surface-center: #fffcf8;--color-surface-side: #f7f7f7;--color-surface-elevated: #fffcf8;--color-ink-primary: #5c5347;--color-ink-secondary: #8a8278;--color-ink-disabled: #b5afa5;--color-ink-on-gold: #fffcf8;--color-accent-gold: #b8956b;--color-accent-gold-hover: #a07f56;--color-accent-gold-muted: rgba(184, 149, 107, .35);--color-border-gold: #b8956b;--color-border-hairline: #e8e2d8;--color-sage-leaf: #8a9a7b;--color-status-success: #6b8f71;--color-status-error: #b85c5c;--color-progress-track: #e8e2d8;--color-progress-fill: #b8956b;--rounded-md: 4px;--spacing-gutter: 20px;--spacing-content-max: 420px;--spacing-touch-min: 48px;--rounded-sm: 2px;--font-display: "Libre Baskerville", Georgia, serif;--font-body: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--text-2xs: .625rem;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: .9375rem;--text-lg: 1.125rem;--text-display: clamp(1.25rem, 5vw, 1.5rem);--leading-tight: 1.25;--leading-snug: 1.35;--leading-normal: 1.5;--leading-relaxed: 1.6;--tracking-overline: .14em;--tracking-wide: .08em;--frame-line-width: 2px;--frame-line-gap: 5px;--frame-line-inset: 6px}[data-theme=dark]{--color-surface-base: #1c1914;--color-surface-center: #252019;--color-surface-side: #12100e;--color-surface-elevated: #252019;--color-ink-primary: #e4ddd3;--color-ink-secondary: #a09488;--color-ink-disabled: #6a6258;--color-ink-on-gold: #1a1612;--color-accent-gold: #c9a67a;--color-accent-gold-hover: #d4b48a;--color-accent-gold-muted: rgba(201, 166, 122, .28);--color-border-gold: #c9a67a;--color-border-hairline: #38322a;--color-sage-leaf: #7a8a6b;--color-status-success: #6b8f71;--color-status-error: #c87070;--color-progress-track: #38322a;--color-progress-fill: #c9a67a}:root{--color-surface-center: #fffcf8;--color-surface-side: #f4efe7}[data-theme=dark]{--color-surface-center: #252019;--color-surface-side: #1a1713}html,body,#root{min-height:100dvh;background-color:var(--color-surface-center)}.app-shell,.screen-surface{position:relative;min-height:100dvh;background-color:var(--color-surface-center)}.app-shell:before,.app-shell:after{content:"";position:absolute;top:0;bottom:0;width:calc(var(--frame-line-width) * 2 + var(--frame-line-gap));background:linear-gradient(to right,color-mix(in srgb,var(--color-border-gold) 55%,transparent) 0%,color-mix(in srgb,var(--color-border-gold) 55%,transparent) var(--frame-line-width),transparent var(--frame-line-width),transparent calc(var(--frame-line-width) + var(--frame-line-gap)),color-mix(in srgb,var(--color-border-gold) 55%,transparent) calc(var(--frame-line-width) + var(--frame-line-gap)),color-mix(in srgb,var(--color-border-gold) 55%,transparent) 100%);pointer-events:none;z-index:3}.app-shell:before{left:var(--frame-line-inset)}.app-shell:after{right:var(--frame-line-inset)}.screen-surface{overflow-x:hidden}.screen-surface>*{position:relative;z-index:1}html.admin-route[data-admin-theme=dark]{--color-surface-center: #1a1814;--color-surface-side: #131210}html.admin-route[data-admin-theme=light]{--color-surface-center: #fffcf7;--color-surface-side: #f4efe7}.admin-page.screen-surface{background-color:transparent}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100dvh}body{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-ink-primary);-webkit-font-smoothing:antialiased;transition:background-color .25s ease,color .25s ease}.content-section{position:relative;width:100%}.surface-panel{background:color-mix(in srgb,var(--color-surface-elevated) 90%,transparent);border-radius:var(--rounded-md, 4px);box-shadow:0 1px #b8956b14}[data-theme=dark] .surface-panel{box-shadow:0 1px #c9a67a0f}button:focus-visible{outline:2px solid var(--color-accent-gold);outline-offset:2px}.app-shell{width:100%;max-width:var(--spacing-content-max);margin:0 auto;min-height:100dvh}.status-message{padding:48px var(--spacing-gutter);font-size:var(--text-base);line-height:var(--leading-relaxed);text-align:center;color:var(--color-ink-secondary)}.btn{width:100%;min-height:var(--spacing-touch-min);border:1px solid var(--color-border-gold);border-radius:var(--rounded-sm);font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;letter-spacing:var(--tracking-wide);text-transform:uppercase;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.btn:disabled{cursor:not-allowed;color:var(--color-ink-disabled, #b5afa5);background:var(--color-surface-base);border-color:var(--color-border-hairline)}.btn-primary{color:var(--color-ink-on-gold);background:var(--color-accent-gold)}.btn-primary:not(:disabled):hover,.btn-primary:not(:disabled):active{background:var(--color-accent-gold-hover);border-color:var(--color-accent-gold-hover)}.theme-toggle{position:fixed;top:14px;right:26px;z-index:200;width:34px;height:34px;border-radius:50%;border:1px solid var(--color-border-gold);background:var(--color-surface-elevated);color:var(--color-accent-gold);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease,color .2s ease,border-color .2s ease;box-shadow:0 1px 6px #0000001f}.theme-toggle svg{width:18px;height:18px;display:block}.theme-toggle:hover{background:var(--color-accent-gold);color:var(--color-ink-on-gold)}.hidden-input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.btn-back{min-height:var(--spacing-touch-min);border:none;background:transparent;color:var(--color-accent-gold);font-family:inherit;font-size:var(--text-base);cursor:pointer}.file-row-main{display:flex;justify-content:space-between;gap:10px;align-items:center}.file-row-thumb{flex-shrink:0;width:40px;height:40px;border-radius:6px;object-fit:cover;border:1px solid var(--color-border-hairline);background:var(--color-surface-elevated)}.file-row-thumb--placeholder{display:flex;align-items:center;justify-content:center;font-size:var(--text-base);color:var(--color-ink-secondary)}.file-row-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row-status{flex-shrink:0;color:var(--color-ink-secondary)}.file-row--uploaded .file-row-status{color:var(--color-status-success)}.file-row--error .file-row-status{color:var(--color-status-error)}.progress-bar{height:6px;overflow:hidden;background:var(--color-progress-track);border-radius:var(--rounded-sm)}.progress-bar--compact{height:2px}.progress-bar-fill{height:100%;background:var(--color-progress-fill)}
