/* Viewport-driven event workspace: 2880×1920 physical pixels and scaled Windows viewports. */
:root{font-size:clamp(14px,1vw,28px);--workspace-gap:1.35rem}
body{font-size:1rem}.button,.text-button,.segmented button,.module-tabs button,.sidebar nav button{font-size:1rem;min-height:3rem}.button{padding:.7rem 1.15rem;border-radius:.5rem}.muted,.status,.check-label,label{font-size:1rem}.eyebrow{font-size:.72rem;letter-spacing:.15em}.field-help{font-size:.82rem}.topbar{height:4.8rem;min-height:0;padding:.65rem 1.6rem;gap:1rem;flex-wrap:nowrap;justify-content:space-between}.brand{font-size:1.5rem;gap:.75rem}.monogram{width:2.7rem;height:2.7rem;font-size:2.3rem}.account-actions{gap:1.2rem}.page-heading h1,h1{font-size:2.25rem;margin-bottom:.4rem}.page-heading{margin-bottom:0;gap:1rem;align-items:center}.page-heading .eyebrow{margin-bottom:.4rem}.site-footer{padding:.75rem 1.6rem;gap:2rem;min-height:4rem;flex-shrink:0}.footer-brand{gap:.75rem}.footer-brand strong{font-size:1.4rem}.footer-brand>div{gap:.15rem}.footer-brand>div>span{font-size:.72rem}.footer-about{max-width:36rem;display:flex;align-items:center;gap:1rem}.footer-about h2{font-size:.9rem;margin:0;white-space:nowrap}.footer-about p{font-size:.82rem;line-height:1.4}
body.event-open{height:100dvh;min-height:0;overflow:hidden}.event-open .app-shell{display:grid;grid-template-columns:clamp(220px,21vw,620px) minmax(0,1fr);gap:0;flex:1;min-height:0;overflow:hidden}.event-open .sidebar{display:flex;flex-direction:column;justify-content:flex-start;gap:1.4rem;padding:1.7rem 1.4rem;overflow:auto;border-right:1px solid var(--line);border-bottom:0;background:color-mix(in srgb,var(--theme-paper) 50%,white)}.event-open main{display:flex;flex-direction:column;gap:var(--workspace-gap);min-height:0;max-width:none;padding:1.3rem 1.6rem;width:100%;margin:0;overflow:hidden}.event-open .sidebar .eyebrow,.event-open .sidebar h2{display:block}.event-open .sidebar h2{font-size:1.65rem;margin:0 0 .8rem}.event-open .sidebar nav{display:grid;gap:.4rem;overflow:visible}.event-open .sidebar nav button{white-space:normal;padding:.7rem .85rem;gap:.7rem}.event-open .sidebar nav button span:first-child{font-size:1.15rem;width:1.5rem}.sidebar-bottom{display:none}.module-context{border-top:1px solid var(--line);padding-top:1.25rem}.event-portrait{min-width:0}.event-portrait>.eyebrow{text-align:center;font-size:.65rem}.polaroid{margin:1.2rem .4rem 1.5rem;padding:.75rem .75rem .25rem;background:#fffef9;box-shadow:0 .8rem 1.8rem #162d2917,0 0 0 1px #d8d8c8;transform:rotate(-3deg);position:relative}.polaroid:before{content:'';position:absolute;top:-.6rem;left:35%;width:30%;height:1.2rem;z-index:1;background:color-mix(in srgb,var(--gold) 75%,transparent);transform:rotate(4deg)}.polaroid-image{aspect-ratio:4/5;background:color-mix(in srgb,var(--accent) 9%,var(--theme-paper));display:grid;place-items:center;overflow:hidden}.polaroid-image img{width:100%;height:100%;object-fit:contain;min-height:0;min-width:0}.polaroid figcaption{font:1.9rem/1.35 var(--script);text-align:center;padding:.65rem .1rem;overflow-wrap:anywhere;max-height:5.6rem;overflow:auto}#event-photo-empty{text-align:center;color:var(--accent);padding:1rem}#event-photo-empty span{font:4rem 'Cormorant Garamond',serif}#event-photo-empty p{font:italic 1.3rem/1.5 'Cormorant Garamond',serif}.portrait-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.25rem .75rem}.portrait-actions .button{width:100%}.portrait-actions .text-button{font-size:.82rem;min-height:2rem;padding:.3rem}#event-photo-status:empty{display:none}
.event-open .celebration{flex:0 0 clamp(135px,20dvh,400px);min-height:0;border-radius:.75rem}.event-open .celebration .event-content{padding:1rem 5rem;width:100%}.event-open .event-kicker{font-size:.65rem;margin:0 0 .4rem;letter-spacing:.18em}.event-open #event-names{font-size:clamp(2.5rem,4vw,7rem);line-height:1.15;margin:.35rem 0}.event-open .event-title{font-size:1.3rem;margin:.4rem 0}.event-open .event-meta{font-size:.75rem;margin:0;letter-spacing:.08em}.event-open .event-rule{display:none}.event-open .preview-label,.event-open .event-tag{display:none}.event-open #hero-booth{display:none}.event-open .fullscreen-button{top:.8rem;right:.8rem;padding:.5rem .7rem;font-size:.85rem;min-height:2.6rem}.event-open .fullscreen-button span{font-size:.8rem}.event-open .celebration-border{inset:.65rem}
.event-open .module-tabs{align-self:auto;flex:0 0 auto;width:100%;display:flex;justify-content:flex-start;gap:1rem;border-bottom:1px solid var(--line);min-height:3.6rem;height:auto;padding:0 .25rem}.event-open .module-tabs button{padding:.75rem 1.4rem;gap:.5rem;flex:0 1 auto;font-size:1rem;border-bottom-width:3px}.event-module-content{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:.2rem}.event-module-content>section{min-height:100%}.event-open main[data-view=home] .celebration{flex:1;min-height:170px}.event-open main[data-view=home] .event-module-content{flex:0 0 auto;max-height:28%;}.event-open main[data-view=home] #event-names{font-size:clamp(3.5rem,6vw,10rem)}.event-open main[data-view=home] .event-title{font-size:2rem}.event-open main[data-view=home] .event-rule{display:flex}.event-open main[data-view=home] .event-kicker{font-size:.8rem}.event-open main[data-view=home] .event-meta{font-size:.85rem;margin-top:.7rem}.event-open main[data-view=home] #hero-booth{display:inline-flex;margin-top:1.3rem;font-size:1rem}.event-open .home-bottom{margin:0;gap:1rem;grid-template-columns:1fr 1fr}.event-open .module-card,.event-open .detail-card{min-height:0;padding:1rem 1.2rem}.event-open .card-copy{gap:.4rem}.event-open .card-copy strong{font-size:1.65rem}.event-open .detail-card h3{font-size:1.5rem}.event-open .card-copy>span:last-child,.event-open .detail-card p{font-size:.85rem}.event-open .card-icon{width:3rem;height:3.5rem;font-size:2rem}.event-open .footnote{display:none}
.event-open #booth-module{display:flex;flex-direction:column;gap:.7rem;height:100%;min-height:0}.event-open #booth-module>.page-heading h1,.event-open #gallery-module h1{font-size:1.7rem}.event-open #booth-module>.page-heading .eyebrow,.event-open #gallery-module .eyebrow{display:none}.event-open #booth-subtitle{font-size:.85rem}.event-open #camera-step{display:flex;flex-direction:column;flex:1;min-height:0;gap:.6rem}.capture-kind{margin:0;max-width:26rem;padding:.25rem}.capture-kind button{min-height:2.8rem;font-size:.95rem;padding:.4rem}#video-hint{margin:0;font-size:.75rem}.event-open .camera-layout{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(205px,17rem);gap:1.2rem}.event-open .camera-layout>div:first-child{min-height:0;display:flex;flex-direction:column;gap:.5rem}.event-open .camera-stage{flex:1;min-height:140px;aspect-ratio:auto;max-height:none}.event-open .camera-controls{flex:0 0 auto;margin:0;gap:.7rem;flex-wrap:wrap}.event-open #camera-status{margin:0;font-size:.78rem;min-height:1.2em}.event-open .camera-layout>.settings-card{display:block;overflow:auto;max-height:100%;height:100%;padding:1rem}.event-open .settings-card h3,.event-open .settings-card h2{font-size:1.6rem;margin-bottom:1rem}.event-open .settings-card label{font-size:.9rem;margin:.8rem 0 .4rem}.event-open .camera-layout .small-tip{display:none}.event-open .settings-card .eyebrow{display:none}.event-open input:not([type=checkbox]):not([type=color]),.event-open select,.event-open textarea{font-size:1rem;padding:.6rem;min-height:2.8rem}.event-open #camera-empty h2{font-size:2.4rem}.event-open #camera-empty p{font-size:.9rem;margin:.6rem 0 1rem}.event-open .camera-icon{font-size:3rem}.event-open .camera-watermark{font-size:1.5rem;bottom:.7rem}.event-open #message-step,.event-open #review-step{flex:1;min-height:0;overflow:auto}.event-open .message-layout,.event-open .review-layout{min-height:100%;gap:1.2rem;grid-template-columns:minmax(0,1.4fr) minmax(230px,.8fr)}.event-open .message-card{padding:1rem 1.3rem}.event-open .message-card>.eyebrow{display:none}.event-open .message-card h2{font-size:1.6rem;margin:0 0 .6rem}.event-open .segmented{margin-bottom:.5rem}.event-open .message-card label{margin:.5rem 0}.event-open .message-card textarea{height:5rem}.event-open .action-row{margin-top:.7rem}.event-open .message-photo{display:block;margin:.5rem;padding:.7rem}.event-open .message-photo img{max-height:30dvh;object-fit:contain}.event-open .message-photo p{font-size:1.2rem}.event-open .keepsake-wrap{padding:.8rem;display:flex;align-items:center;justify-content:center;gap:.6rem;flex-wrap:wrap}.event-open .keepsake-wrap img,.event-open .keepsake-wrap video{width:auto;max-width:100%;max-height:40dvh;margin:0;object-fit:contain}.event-open .review-layout .settings-card{margin:0;padding:1rem}.event-open .settings-card .button{margin-top:.6rem}.event-open .settings-card>.text-button{margin:.3rem 0}.event-open .gallery-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:1rem;margin-top:1rem}.event-open .gallery-image-button img{height:16rem}.event-open .gallery-image-button{padding:.75rem}.event-open .gallery-card-content{padding:1rem}.event-open .gallery-card-content h2{font-size:1.4rem}.event-open .gallery-card-content p{font-size:.9rem}.event-open .gallery-card-content time{font-size:.75rem}.event-open .gallery-empty{padding:2rem}.event-open .gallery-empty h2{font-size:1.8rem}.event-open .gallery-empty p{font-size:1rem}
dialog:not(.photo-dialog){width:min(34rem,calc(100vw - 24px))}.dialog-body,#event-form{padding:1.8rem}.drawer-heading h2{font-size:2rem}.editor-tabs button{font-size:1rem}.font-sample{font-size:3rem;padding:1rem}.event-picker{max-width:none;width:100%;padding:3rem;min-height:calc(100dvh - 5rem)}.event-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr));gap:1.5rem;margin-top:2rem}.event-tile{padding:2rem;min-height:14rem}.event-tile h2{font-size:2.8rem}.landing-form{max-width:48rem;padding:3rem 5rem}.landing-form h2{font-size:3.5rem}.landing-story{padding:3rem 5rem}.landing-story h1{font-size:5rem}.landing-story>p:not(.eyebrow){max-width:34rem}.landing-brand{font-size:3rem;margin-bottom:4rem}.landing-brand span{font-size:1.6rem}.landing-note{font-size:.72rem;letter-spacing:.15em}.photo-dialog{width:min(90vw,1800px)}
.event-open .celebration:fullscreen,.event-open .celebration.presentation-fallback{min-height:100dvh}.event-open .celebration:fullscreen #event-names,.event-open .celebration.presentation-fallback #event-names{font-size:clamp(4rem,10vw,17rem)}.event-open .celebration:fullscreen .event-title,.event-open .celebration.presentation-fallback .event-title{font-size:3rem}.event-open .celebration:fullscreen #hero-booth,.event-open .celebration.presentation-fallback #hero-booth{display:inline-flex;margin-top:2rem}
@media(max-width:900px),(max-height:620px){body.event-open{height:auto;min-height:100dvh;overflow:auto}.event-open .app-shell{overflow:visible;grid-template-columns:190px minmax(0,1fr)}.event-open main{overflow:visible;gap:1rem;padding:1rem}.event-module-content{overflow:visible;min-height:400px}.event-open main[data-view=home] .event-module-content{max-height:none;min-height:0}.event-open main[data-view=home] .celebration{min-height:370px}.event-open .celebration{min-height:150px}.event-open #booth-module{height:auto}.event-open #camera-step{min-height:520px}.event-open .camera-layout{grid-template-columns:1fr}.event-open .camera-stage{min-height:280px}.event-open .camera-layout>.settings-card{height:auto;max-height:none}.event-open .message-layout,.event-open .review-layout{grid-template-columns:1fr}.event-open .home-bottom{grid-template-columns:1fr}.event-open .sidebar{padding:1.5rem 1rem}.event-open .module-tabs{gap:0}.event-open .module-tabs button{padding:.65rem .8rem}.event-open .page-heading{flex-wrap:wrap}.event-open .fullscreen-button span{display:none}.footer-about{display:block}.landing-form,.landing-story{padding:2rem}.landing-story h1{font-size:3.5rem}}
@media(max-width:600px){.event-open .app-shell{display:flex;flex-direction:column}.event-open .sidebar{overflow:visible;display:grid;grid-template-columns:140px minmax(0,1fr);gap:1rem;border-right:0;border-bottom:1px solid var(--line);padding:1.2rem}.event-portrait>.eyebrow{display:none!important}.polaroid{margin:.5rem .4rem 1rem;padding:.45rem}.polaroid-image{aspect-ratio:1}.polaroid figcaption{font-size:1.3rem;padding:.3rem}.portrait-actions .button{font-size:.8rem;padding:.4rem;min-height:2.6rem}#event-photo-empty{padding:.5rem}#event-photo-empty span{font-size:2rem}#event-photo-empty p{font-size:.8rem}.module-context{border-top:0;padding-top:0}.event-open .sidebar h2{font-size:1.25rem}.event-open .sidebar nav button{padding:.4rem;font-size:.85rem}.topbar{height:auto;flex-wrap:wrap;padding:.7rem 1rem}.topbar .account-actions{width:auto;gap:1rem;margin:0}.event-open .celebration .event-content{padding:3rem 1rem}.event-open main[data-view=home] #event-names{font-size:3.5rem}.event-open .module-tabs button{font-size:.9rem;flex:1;padding:.6rem .3rem}.event-open .module-tabs button>span{white-space:normal}.site-footer{padding:1rem;gap:1rem}.footer-brand strong{font-size:1.2rem}.event-open .message-photo{display:none}.event-picker{padding:1.5rem}.event-picker .page-heading{align-items:flex-start}.event-open .keepsake-wrap img,.event-open .keepsake-wrap video{max-height:60dvh}}

.polaroid-image{aspect-ratio:1}
@media(min-width:901px) and (min-height:621px){
 .event-open main:not([data-view=home])>.page-heading .eyebrow,.event-open main:not([data-view=home])>.page-heading .muted{display:none}
 .event-open main:not([data-view=home])>.page-heading h1{font-size:1.45rem;margin:0}
 .event-open main:not([data-view=home]) .celebration{flex-basis:clamp(100px,14dvh,240px)}
 .event-open main:not([data-view=home]) .event-kicker{display:none}
 .event-open main:not([data-view=home]) #event-names{font-size:3rem;line-height:1.1}
 .event-open main:not([data-view=home]) .event-title{font-size:1.1rem;margin:.25rem 0}
 .event-open main:not([data-view=home]) .event-content{padding:.6rem 5rem}
 .event-open .camera-layout{grid-template-rows:minmax(0,1fr)}
 .event-open #camera-empty{padding:.6rem}
 .event-open #camera-empty h2{font-size:2rem;margin:.2rem}
 .event-open #camera-empty p{margin:.35rem 0 .6rem}
 .event-open .camera-icon{font-size:2rem}
}

@media(min-width:901px) and (min-height:621px) and (max-height:850px){
 .event-open main{gap:.75rem;padding:.9rem 1.2rem}
 .event-open .sidebar{gap:.8rem;padding:1rem}
 .polaroid{max-width:22dvh;margin:.7rem auto 1rem}
 .polaroid figcaption{font-size:1.55rem}
 .event-open .module-context{padding-top:.7rem}
 .event-open .sidebar h2{margin-bottom:.4rem}
 .event-open #booth-subtitle{display:none}
 .event-open .settings-card h3{display:none}
 .event-open .settings-card label{margin:.45rem 0 .3rem}
 .event-open .camera-icon{display:none}
 .event-open .module-tabs{min-height:3rem}
 .event-open .module-tabs button{padding:.5rem 1rem}
}
.photo-dialog{width:calc(100vw - 2rem);padding:1.2rem}.slide-caption h2{font-size:1.8rem}.slide-caption p,#slide-counter,#close-photo span{font-size:1rem}.slide-arrow{width:3rem;min-height:3.5rem;font-size:2.5rem}.slideshow-stage{grid-template-columns:3rem minmax(0,1fr) 3rem;gap:.8rem}.slideshow-playback .field-help{font-size:.8rem}
@media(max-width:600px){.slideshow-stage{grid-template-columns:44px minmax(0,1fr) 44px;gap:3px}.slide-arrow{width:44px}.photo-dialog{padding:12px;width:calc(100vw - 20px)}}

@media(min-width:901px) and (min-height:621px){
 .event-open #message-step{overflow:hidden}
 .event-open .message-layout{height:100%;min-height:0;grid-template-rows:minmax(0,1fr)}
 .event-open .message-card{display:flex;flex-direction:column;min-height:0}
 .event-open .message-card h2,.event-open .message-card .segmented,.event-open .message-card .action-row{flex-shrink:0}
 .event-open #typed-fields,.event-open #draw-fields{flex:1;min-height:0;overflow:auto}
 .event-open .message-card .action-row{margin-top:.6rem}
 .event-open .review-layout .settings-card{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;align-content:start}
 .event-open .review-layout .settings-card h2,.event-open .review-layout .settings-card p{grid-column:1/-1;margin:0 0 .4rem}
 .event-open .review-layout .settings-card button{margin:0;font-size:.9rem}
 .event-open .review-layout .settings-card .text-button{text-align:center}
}
@media(min-width:901px) and (min-height:621px) and (max-height:850px){
 .event-open main:not([data-view=home])>.page-heading{display:none}
 #event-photo-empty span{font-size:2rem}
 #event-photo-empty p{font-size:1rem;margin:.4rem 0}
}

/* The guest arrival uses the existing celebration in a viewport-sized modal.
   This also works after async PIN login, when native fullscreen is unavailable. */
body.guest-welcome-open{overflow:hidden}
#guest-welcome-dialog{position:fixed;inset:0;width:100vw;max-width:none;height:100vh;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0;overflow:auto;background:var(--ink);color:var(--theme-paper)}
#guest-welcome-dialog::backdrop{background:var(--ink)}
#guest-welcome-dialog #celebration{display:flex;align-items:center;justify-content:center;width:100%;min-height:100vh;min-height:100dvh;height:auto;max-height:none;margin:0;border-radius:0;overflow:hidden}
#guest-welcome-dialog .event-content{width:100%;padding:clamp(36px,7vh,130px) clamp(24px,7vw,180px);margin:auto;text-align:center}
#guest-welcome-dialog #event-names{font-size:clamp(46px,9vw,240px);line-height:1.2;overflow-wrap:anywhere;margin:.25em 0}
#guest-welcome-dialog .event-title{font-size:clamp(22px,3vw,70px);line-height:1.35;overflow-wrap:anywhere;margin:.6em 0}
#guest-welcome-dialog .event-kicker{display:block;font-size:clamp(11px,1.2vw,28px);letter-spacing:.16em;line-height:1.6}
#guest-welcome-dialog .event-meta{font-size:clamp(12px,1.3vw,30px);line-height:1.6;overflow-wrap:anywhere;margin:1em 0}
#guest-welcome-dialog .event-rule{display:flex}
#guest-welcome-dialog #hero-booth{display:inline-flex;align-items:center;justify-content:center;min-width:150px;min-height:52px;margin-top:clamp(20px,4vh,70px);padding:.8em 2.5em;font-size:clamp(18px,1.5vw,38px)}
#guest-welcome-dialog .preview-label,#guest-welcome-dialog .event-tag{display:none}

/* Device photo uploads share the event's color story and module layout. */
.upload-intro{display:grid;grid-template-columns:1.3fr 1fr;gap:2rem;background:var(--theme-paper);border:1px solid var(--line);border-radius:1rem;padding:1.5rem}
.upload-intro .field-help{max-width:42rem;line-height:1.6}
.upload-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin:1rem 0}
#upload-progress{display:block;width:100%;height:.7rem;margin:1rem 0;accent-color:var(--ink)}
.upload-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;padding-bottom:1rem}
.upload-card{min-width:0;border:1px solid var(--line);border-radius:.8rem;padding:.8rem;background:var(--theme-paper)}
.upload-card img{display:block;width:100%;height:150px;object-fit:contain;background:#e9e6dd;border-radius:.4rem}
.upload-filename{font-weight:600;overflow-wrap:anywhere;margin:.8rem 0 .4rem}
.upload-card .field-help{overflow-wrap:anywhere;line-height:1.5}
.upload-card .text-button{min-height:44px}
@media(max-width:900px){.upload-intro{grid-template-columns:1fr;gap:.75rem}.event-open .module-tabs{gap:.25rem;overflow-x:auto}.event-open .module-tabs button{flex:0 0 auto;padding:.7rem .8rem;white-space:nowrap}.upload-grid{grid-template-columns:repeat(auto-fill,minmax(145px,1fr))}}
