:root{--ivory: #f7f3eb;--paper: #fffcf7;--ink: #302d27;--muted: #746c60;--accent: #6b473a;--gold: #a18757;--gold-ink: #78623c;--line: #d9cebb;--danger: #8b302d;--success: #385e43;--serif: "Wedding Serif", Georgia, "Times New Roman", serif;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-xs: .76rem;--text-sm: .87rem;--text-base: 1rem;--text-md: 1.12rem;--text-lg: 1.5rem;--text-title: clamp(2.6rem, 8vw, 4.15rem);--text-hero: clamp(2.6rem, 9vw, 4.6rem);--space-1: .3rem;--space-2: .65rem;--space-3: 1rem;--space-4: 1.5rem;--space-5: 2.25rem;--space-6: 3.25rem;--space-7: 4.5rem;--radius: .45rem;--radius-card: 1rem;--page-width: 640px;--admin-width: 1050px;--page-inset: clamp(1.4rem, 5vw, 2.75rem);--control-height: 50px;--nav-height: 76px;--ease: cubic-bezier(.2, .65, .3, 1);--transition: .22s var(--ease);--shadow: 0 12px 42px #40331d0a}@font-face{font-family:"Wedding Serif";src:url(/assets/wedding-serif-CJYS_En0.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap}::selection{color:#fff;background:var(--accent)}html{scrollbar-color:var(--muted) var(--ivory)}input,textarea{caret-color:var(--accent)}*{box-sizing:border-box}html{background:var(--ivory);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6}body{margin:0}button,input,textarea{font:inherit}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button{color:inherit}a{color:var(--accent);text-underline-offset:4px}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:5px}summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button:active:not(:disabled){transform:scale(.98)}button{transition:background var(--transition),transform var(--transition),opacity var(--transition)}h1,h2,p{margin:0}h1,h2{font-family:var(--serif);font-weight:400;line-height:1.1;letter-spacing:-.025em}h1{font-size:var(--text-title);margin-bottom:var(--space-4)}h1 em{font-weight:400;color:var(--accent)}h2{font-size:2.2rem;margin:var(--space-4) 0}svg{flex-shrink:0}img,video{max-width:100%}audio{width:100%}small{font-size:var(--text-sm)}.brand{max-width:var(--page-width);margin:auto;padding:var(--space-4) var(--page-inset);display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}.brand button{min-width:0;overflow-wrap:anywhere;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.brand .language-picker{flex-shrink:0}.brand button,.brand a{background:none;border:0;text-align:left;padding:0;min-height:44px;text-decoration:none;color:var(--ink);font-family:var(--serif);font-size:var(--text-md)}.brand span:not(.brand-mark){display:block;font-family:var(--sans);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:var(--space-1)}.brand .brand-mark{font:italic 2rem var(--serif);color:var(--gold)}.guest-page{max-width:var(--page-width);margin:auto;padding:var(--space-4) var(--page-inset) var(--space-6);outline:none;min-height:65vh}.guest-page.home{padding-top:0;padding-bottom:var(--space-3);min-height:auto}.intro{font-size:var(--text-base);color:var(--muted);max-width:65ch;margin-bottom:var(--space-5)}.home-content{position:relative;isolation:isolate;background:var(--ivory);padding:clamp(2rem,5vw,3.5rem) clamp(1.5rem,6vw,3.5rem) 2rem}.invitation-material{position:absolute;inset:0;width:100%;height:100%;background-image:url(/assets/invitation-sheet-DtHqOrMt.webp);background-size:100% 100%;filter:sepia(1);mix-blend-mode:multiply;opacity:.12;z-index:-1;pointer-events:none}.hero{text-align:center;padding-bottom:var(--space-4)}.hero,.home-actions{background:var(--ivory)}.hero .wedding-names{font-family:var(--serif);font-weight:400;font-style:normal;font-size:var(--text-hero);line-height:1.12;letter-spacing:-.025em;overflow-wrap:anywhere;text-wrap:balance;margin:0 0 var(--space-4)}.wedding-date{font:400 var(--text-md)/1.5 var(--serif);color:var(--ink);overflow-wrap:anywhere}.wedding-date:before,.wedding-date:after{content:"";display:block;width:3rem;height:1px;margin:var(--space-3) auto;background:var(--accent)}.welcome{max-width:40ch;margin:var(--space-4) auto 0;color:var(--ink);font-size:var(--text-sm);overflow-wrap:anywhere;text-wrap:pretty}.home-actions{display:grid}.home-actions button{width:100%;min-height:5.4rem;display:flex;align-items:center;gap:var(--space-3);background:none;border:0;padding:var(--space-4) 0;text-align:left}.home-actions .photo-action{min-height:4.7rem;padding:var(--space-3) var(--space-3);margin-bottom:var(--space-4);border-radius:.75rem;background:var(--accent);color:#fff;justify-content:center}.photo-action .action-copy{flex:0 1 auto}.photo-action .action-copy small{color:inherit;font-size:var(--text-xs)}.home-actions .invitation-row{border-top:1px solid var(--line)}.home-actions button:hover:not(:disabled){background:var(--paper)}.home-actions .photo-action:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}.action-icon{display:grid;place-items:center;color:inherit;flex-shrink:0;width:1.75rem}.action-icon svg{width:1.6rem;height:1.6rem}.action-copy{flex:1;min-width:0}.action-copy strong{font:400 var(--text-md)/1.35 var(--serif);display:block}.action-copy small{display:block;color:var(--muted);font-size:var(--text-xs);margin-top:var(--space-1)}.home-actions>button>svg{color:var(--accent);width:1rem;height:1rem}.primary,.secondary{min-height:var(--control-height);display:inline-flex;justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);border-radius:var(--radius);border:1px solid var(--accent);font-size:var(--text-sm);font-weight:500;letter-spacing:.025em}.primary{background:var(--accent);color:#fff}.primary:hover:not(:disabled){filter:brightness(1.1)}.secondary{background:transparent;color:var(--accent)}.secondary:hover:not(:disabled){background:var(--paper)}.full{width:100%}.text-button{min-height:44px;background:none;border:0;color:var(--accent);font-size:var(--text-sm);padding:var(--space-2) 0;display:inline-flex;align-items:center;justify-content:center;text-decoration:underline;text-underline-offset:5px}.back{margin-bottom:var(--space-4);text-decoration:none}.danger{color:var(--danger)}.field{display:block;font-size:var(--text-sm);font-weight:500;margin:var(--space-5) 0 var(--space-4)}.field>span{font-size:var(--text-xs);font-weight:400;color:var(--muted);margin-left:var(--space-2)}input,textarea{width:100%;border:1px solid var(--line);background:var(--paper);border-radius:var(--radius);padding:var(--space-3);color:var(--ink);margin-top:var(--space-2);min-height:var(--control-height);font-size:16px}textarea{resize:vertical;line-height:1.6}.field>small{display:block;text-align:right;color:var(--muted);font-weight:400}input::placeholder,textarea::placeholder{color:var(--muted)}.notice{border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-3);background:var(--paper);font-size:var(--text-sm);margin:var(--space-4) 0;color:var(--success);overflow-wrap:anywhere}.notice.error{border-color:var(--danger);color:var(--danger)}.privacy,.hint{color:var(--muted);font-size:var(--text-xs);margin-top:var(--space-3);line-height:1.7}.privacy{text-align:center;margin-top:var(--space-4)}.drop-zone{width:100%;border:1px dashed var(--gold);border-radius:var(--radius-card);padding:var(--space-6) var(--space-3);display:flex;flex-direction:column;align-items:center;background:var(--paper);gap:var(--space-3);color:var(--accent)}.drop-zone>svg{width:32px;height:32px}.drop-zone strong{font-weight:500;font-size:var(--text-base)}.drop-zone span{font-size:var(--text-xs);color:var(--muted)}.photo-selection{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);margin-top:var(--space-4)}.selected{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-2);overflow:hidden}.selected img{width:100%;height:130px;object-fit:cover;border-radius:var(--radius)}.selected p{font-size:var(--text-xs);overflow-wrap:anywhere}.selected span,.selected small{font-size:var(--text-xs);display:block;color:var(--muted)}.selected small{color:var(--danger)}progress{width:100%;height:5px;appearance:none;border:0;background:var(--line);border-radius:10px;overflow:hidden;margin:var(--space-2) 0;accent-color:var(--accent)}progress::-webkit-progress-bar{background:var(--line)}progress::-webkit-progress-value{background:var(--accent)}.upload-progress{margin-bottom:var(--space-3);font-size:var(--text-xs);color:var(--muted)}.segmented{display:flex;border-bottom:1px solid var(--line);margin-bottom:var(--space-5);gap:var(--space-2)}.segmented button{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background:none;border:0;border-bottom:2px solid transparent;padding:var(--space-3) var(--space-2);font-size:var(--text-sm);color:var(--muted);min-height:var(--control-height)}.segmented svg{width:18px}.segmented button[aria-pressed=true]{color:var(--accent);border-bottom-color:var(--accent)}.recorder{text-align:center;padding:var(--space-4) 0 var(--space-5)}.record-orb{width:95px;height:95px;margin:0 auto var(--space-4);border:1px solid var(--line);border-radius:50%;background:var(--paper);display:grid;place-items:center;color:var(--accent)}.record-orb svg{width:34px;height:34px}.record-orb.recording{color:var(--danger);border-color:var(--danger)}.recorder>p{font-family:var(--serif);font-size:var(--text-md);margin-bottom:var(--space-4)}.recorder .record-time{font-family:var(--sans);font-variant-numeric:tabular-nums;font-size:var(--text-lg)}.record-time span{font-size:var(--text-sm);color:var(--muted)}.preview{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-4)}.preview p{font-size:var(--text-xs);color:var(--muted);overflow-wrap:anywhere}video{border-radius:var(--radius);background:var(--ink);max-height:380px;width:100%}.live{margin-bottom:var(--space-4)}.hidden{display:none}.success{text-align:center;padding:var(--space-6) 0}.success h1{font-size:var(--text-title)}.success>p{max-width:320px;margin:0 auto var(--space-5);color:var(--muted)}.seal{width:100px;height:100px;border:1px solid var(--gold);border-radius:50%;display:grid;place-items:center;margin:auto auto var(--space-5);color:var(--gold);position:relative}.seal:after{content:"";position:absolute;inset:6px;border:1px solid var(--line);border-radius:50%}.seal svg{width:38px;height:38px}.gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2);margin-bottom:var(--space-4)}.gallery-grid button{padding:0;border:0;background:var(--paper);text-align:left;border-radius:var(--radius);overflow:hidden;position:relative}.gallery-grid img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform .5s var(--ease)}.gallery-grid button:hover img{transform:scale(1.03)}.gallery-grid span{display:block;padding:var(--space-2);font-size:var(--text-xs);overflow-wrap:anywhere}.empty{text-align:center;padding:var(--space-6) 0;color:var(--muted)}.empty>svg{width:32px;height:32px;color:var(--gold)}.empty h2{font-size:var(--text-lg);color:var(--ink)}.lightbox{position:fixed;inset:0;z-index:20;background:#201b18f5;padding:var(--space-4);display:flex;align-items:center;justify-content:center}.lightbox img{max-height:86dvh;max-width:100%;object-fit:contain}.lightbox button{position:absolute;top:var(--space-3);right:var(--space-3);min-height:44px;border:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--paper);color:var(--ink)}footer{max-width:var(--page-width);margin:auto;text-align:center;padding:var(--space-3) var(--page-inset) calc(var(--nav-height) + var(--space-5) + env(safe-area-inset-bottom));border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-xs);overflow-wrap:anywhere}footer p{font-family:var(--serif);font-style:italic;font-size:var(--text-base);margin-bottom:var(--space-2)}footer span{margin:0 var(--space-2)}footer small{font-size:var(--text-xs)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;max-width:var(--page-width);margin:auto;z-index:5;display:flex;background:var(--paper);border-top:1px solid var(--line);padding:var(--space-2) var(--space-4) calc(var(--space-2) + env(safe-area-inset-bottom))}.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-2);border:0;background:none;color:var(--muted);font-size:var(--text-xs);letter-spacing:.02em;min-height:50px}.bottom-nav svg{width:21px;height:21px}.bottom-nav button[aria-current]{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.entry-screen,.admin-login{max-width:var(--page-width);margin:auto;padding:var(--space-6) var(--page-inset);min-height:90vh}.entry-screen{text-align:center}.entry-screen>p{color:var(--muted)}.admin-page{max-width:var(--admin-width);margin:auto;padding:var(--space-4) var(--page-inset)}.admin-tools{padding:var(--space-4) 0;border-block:1px solid var(--line);display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin:var(--space-5) 0}.admin-tools>p{width:100%;color:var(--muted)}.export-links{display:flex;gap:var(--space-3);flex-wrap:wrap;width:100%;font-size:var(--text-sm)}.export-links a{padding:var(--space-2) 0;min-height:44px}.admin-card{padding:var(--space-4) 0;margin:var(--space-4) 0;border:0;border-top:1px solid var(--line);background:transparent}.admin-card .field{margin:var(--space-3) 0}.admin-card h2{font-size:clamp(1.6rem,4vw,2rem)}.guest-invite summary{min-height:var(--control-height);padding:var(--space-2) 0;cursor:pointer;color:var(--accent)}.guest-invite[open]{margin-bottom:var(--space-4)}.event-settings h2{margin-top:0}.event-settings form,.event-settings-fields{display:grid;gap:var(--space-3)}.event-settings form{margin-top:var(--space-4)}.event-settings-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.event-settings form>button{justify-self:start}.guest-access{--qr-size: 220px;display:grid;grid-template-columns:minmax(0,1fr) var(--qr-size);align-items:center;gap:var(--space-5)}.guest-access-info{display:grid;gap:var(--space-3);min-width:0}.guest-access h2{margin:0}.guest-access-link{overflow-wrap:anywhere}.guest-access-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.guest-access-actions a{text-decoration:none}.guest-access-qr{width:var(--qr-size);max-width:100%;justify-self:center}@media(max-width:640px){.event-settings-fields{grid-template-columns:minmax(0,1fr)}.guest-access{grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.guest-access-qr{grid-row:1}.guest-access-actions>*{flex:1 1 auto}}.message-list article{border-bottom:1px solid var(--line);padding:var(--space-4) 0}.message-body{white-space:pre-wrap;font-family:var(--serif);font-size:var(--text-lg);line-height:1.5;margin-bottom:var(--space-3)}time{color:var(--muted);font-size:var(--text-xs);margin-left:var(--space-2)}.admin-media{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.admin-media article{padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);overflow:hidden}.admin-media article>img{width:100%;height:200px;object-fit:cover;border-radius:var(--radius);margin-bottom:var(--space-3)}.admin-media p{overflow-wrap:anywhere;margin-top:var(--space-2)}.admin-media small,.status{color:var(--muted);font-size:var(--text-xs)}.media-actions{display:flex;gap:var(--space-3);flex-wrap:wrap;font-size:var(--text-sm);align-items:center;margin-top:var(--space-3)}.visually-hidden{position:absolute;clip:rect(0,0,0,0);clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap}.home-content.enter{animation:invitation-open .45s var(--ease)}@keyframes invitation-open{0%{transform:translateY(6px);clip-path:inset(0 0 1.5%);filter:brightness(.98)}to{transform:translateY(0);clip-path:inset(0);filter:brightness(1)}}@media(min-width:700px){.guest-page{padding-top:var(--space-5)}.hero{padding-top:var(--space-6)}.gallery-grid,.photo-selection{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:480px){.admin-media{grid-template-columns:1fr}.action-copy strong{font-size:var(--text-md)}.home-actions button{gap:var(--space-3)}.segmented button{gap:var(--space-1)}.lightbox{padding:var(--space-2)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.deadline{font-size:var(--text-sm);display:block;width:100%;max-width:300px}.preview-placeholder{height:130px;display:grid;place-items:center;color:var(--gold);background:var(--ivory);border-radius:var(--radius)}.brand{gap:var(--space-3)}.brand>button,.brand>a{min-width:0;overflow-wrap:anywhere}.language-picker{flex-shrink:0}.language-picker select{min-height:44px;font:inherit;font-size:.82rem;color:var(--ink);border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:.55rem .4rem;max-width:110px}.entry-screen>.language-picker{position:absolute;top:1rem;right:1rem}.couple-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.couple-toolbar p{color:var(--muted);font-size:var(--text-sm)}.couple-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-1);padding:0;border-bottom:1px solid var(--line);margin:var(--space-3) 0 var(--space-5)}.couple-tabs button{border:0;background:transparent;border-bottom:2px solid transparent;min-height:var(--control-height);padding:var(--space-2);color:var(--muted);font-size:var(--text-sm)}.couple-tabs button[aria-selected=true]{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}[role=tabpanel]{min-width:0}[hidden]{display:none!important}.download-help{color:var(--muted);font-size:var(--text-sm);padding-block:var(--space-4);border-top:1px solid var(--line);margin-top:var(--space-5)}.delete-memory{color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:var(--space-4);max-width:min(var(--page-width),calc(100% - 2 * var(--page-inset)));max-height:calc(100dvh - 2 * var(--space-4));overflow:auto}.delete-memory::backdrop{background:#302d2780}.delete-memory h2{margin-top:var(--space-2)}.delete-memory img{display:block;max-height:180px;width:100%;object-fit:contain;border-radius:var(--radius)}.delete-memory small{color:var(--muted);display:block}.delete-memory-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.delete-memory-actions button{flex:1 1 auto}.danger-fill{background:var(--danger);border-color:var(--danger);color:#fff}@media(max-width:640px){.couple-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}}.theme-editor h2{margin-top:0}.theme-editor-fields{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-block:1.5rem .75rem}.theme-editor input[type=color]{width:100%;height:3rem;padding:.25rem}.theme-editor h3{margin-block:2rem .5rem}.theme-preview{background:var(--ivory);color:var(--ink);padding:1.5rem;overflow-wrap:anywhere;font-family:var(--sans)}.theme-preview .hero{padding-block:1rem}.theme-preview .hero .wedding-names{font-size:clamp(2rem,5vw,3rem)}.theme-editor-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}@media(max-width:480px){.theme-editor-fields{grid-template-columns:1fr}.theme-editor-actions>button{flex:1 1 100%}}.theme-editor select{font:inherit;font-size:1rem;color:var(--ink);background:var(--paper);min-height:48px;padding:.65rem .75rem;border:1px solid var(--line);border-radius:6px;width:100%}.theme-preview .wedding-names{font-family:var(--serif);font-style:normal;font-weight:400}.theme-editor select:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.theme-preview .wedding-names{margin-top:0;line-height:1.1;letter-spacing:-.03em}.content-editor h2{margin-top:0}.content-editor form{margin-top:1.5rem}.content-editor fieldset{border:0;padding:0;margin:0 0 1.5rem;min-width:0}.content-editor legend{font-weight:600;margin-bottom:.75rem}.content-editor .field{margin-bottom:.75rem}.content-editor textarea{resize:vertical;font-size:1rem}.content-editor-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}@media(max-width:480px){.content-editor-actions>button{flex:1 1 100%}}.hero .welcome{overflow-wrap:anywhere;white-space:pre-line}
