.landing-screen{position:relative;min-height:100dvh;overflow-x:hidden;background:linear-gradient(180deg,#fffcf8db,#f7f4eefa),radial-gradient(90% 48% at 50% -4%,rgba(184,149,107,.18),transparent 64%),radial-gradient(54% 30% at 0% 18%,rgba(138,154,123,.08),transparent 70%),radial-gradient(54% 30% at 100% 28%,rgba(184,149,107,.09),transparent 72%),var(--color-surface-base)}.landing-content{position:relative;z-index:1;display:flex;flex-direction:column;gap:16px;padding:max(32px,env(safe-area-inset-top)) var(--spacing-gutter) max(28px,env(safe-area-inset-bottom))}.landing-card{position:relative;z-index:2;width:100%;padding:16px 18px 18px;text-align:center;background:var(--color-surface-elevated);border:2px solid var(--color-border-gold);border-radius:var(--rounded-sm);overflow:hidden}.landing-card:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1px solid rgba(184,149,107,.4);border-radius:1px;pointer-events:none}.landing-card--hero:after{content:"";position:absolute;inset:auto 14px 12px;height:1px;background:linear-gradient(90deg,transparent,rgba(184,149,107,.42),transparent);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.svg) center / contain no-repeat;-webkit-mask:url(/assets/wedding_portre.svg) center / contain no-repeat}.landing-eyebrow{margin-bottom:6px;font-family:var(--font-body);font-size:.5625rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--color-ink-secondary)}.landing-names{margin-bottom:6px;font-family:var(--font-display);font-size:clamp(1.125rem,4.5vw,1.375rem);font-weight:700;line-height:1.25;letter-spacing:.01em;color:var(--color-accent-gold)}.landing-date{font-family:var(--font-body);font-size:.625rem;font-weight:600;letter-spacing:.16em;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:.75rem;font-weight:400;line-height:1.45;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:.6875rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--color-ink-secondary)}.landing-action{display:flex;flex-direction:column;gap:14px}.consent-panel{padding:16px;background:var(--color-surface-elevated);border:1px solid var(--color-border-hairline);border-radius:var(--rounded-sm)}.consent-panel-text{font-family:var(--font-body);font-size:.75rem;line-height:1.6;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:1px solid var(--color-border-gold);border-radius:2px;background:var(--color-surface-base);transition:background-color .15s ease,border-color .15s ease}.consent-panel-toggle--on .consent-panel-box{background-color:var(--color-accent-gold);border-color:var(--color-accent-gold);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='1.8' d='M1 5l3 3 7-7'/%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:.8125rem;font-weight:600;line-height:1.4;color:var(--color-ink-primary)}.landing-meta{font-size:.75rem;line-height:1.45;text-align:center;color:var(--color-ink-secondary)}.landing-error{font-size:.75rem;line-height:1.45;text-align:center;color:var(--color-status-error)}.landing-upload{display:flex;flex-direction:column;gap:12px;padding:16px;background:var(--color-surface-elevated);border:1px solid var(--color-border-hairline);border-radius:var(--rounded-sm)}.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:.6875rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--color-ink-primary)}.landing-upload-count{font-size:.6875rem;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:.6875rem;line-height:1.35;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:.625rem;letter-spacing:.04em}.landing-upload-list .file-row--compact .file-row-error{margin-top:2px;font-size:.625rem}.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:.625rem;font-weight:600;color:var(--color-accent-gold);cursor:pointer}.landing-manifesto{margin-top:2px;font-family:var(--font-display);font-size:.9375rem;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:.875rem;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}[data-theme=dark] .landing-screen{background:linear-gradient(180deg,#1c1914f5,#16130ffc),radial-gradient(90% 48% at 50% -4%,rgba(201,166,122,.1),transparent 64%),radial-gradient(54% 30% at 0% 18%,rgba(122,138,107,.06),transparent 70%),radial-gradient(54% 30% at 100% 28%,rgba(201,166,122,.07),transparent 72%),var(--color-surface-base)}[data-theme=dark] .landing-card,[data-theme=dark] .consent-panel,[data-theme=dark] .landing-upload{background:var(--color-surface-elevated)}.flow-screen{position:relative;min-height:100dvh;overflow-x:hidden;background:var(--color-surface-base);background-image:radial-gradient(ellipse at top,rgba(184,149,107,.06),transparent 55%)}.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:.9375rem;font-weight:600;letter-spacing:.04em}.flow-copy{font-family:var(--font-body);font-size:.8125rem;line-height:1.55;color:var(--color-ink-secondary)}.flow-error{font-size:.875rem;color:var(--color-status-error)}.flow-manifesto{margin-top:auto;font-size:.875rem;font-style:italic;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:.875rem}.file-row-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row-error{margin-top:6px;font-size:.8125rem;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:.875rem;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:.875rem;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:1.125rem;font-weight:600}.rate-limit-copy{font-size:.875rem;line-height:1.55;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{width:160px;height:160px;margin:0 auto;display:block}[data-theme=dark] .flow-screen{background:var(--color-surface-base);background-image:radial-gradient(ellipse at top,rgba(201,166,122,.05),transparent 55%)}:root{--color-surface-base: #f7f4ee;--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;--color-floral-opacity: .18;--spacing-gutter: 20px;--spacing-content-max: 420px;--spacing-touch-min: 48px;--rounded-sm: 2px;--font-display: "Libre Baskerville", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif}[data-theme=dark]{--color-surface-base: #1c1914;--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}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100dvh}body{font-family:var(--font-body);background:var(--color-surface-base);color:var(--color-ink-primary);-webkit-font-smoothing:antialiased;transition:background-color .25s ease,color .25s ease}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);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:.8125rem;font-weight:600;letter-spacing:.08em;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:14px;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:.875rem;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:.875rem;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)}
