.poster-editor{position:fixed;inset:0;z-index:300;overflow:auto;background:#090b10e8;color:#fff;padding:24px;display:grid;place-items:center}
.poster-editor-card{width:min(100%,1060px);display:grid;grid-template-columns:minmax(250px,320px) minmax(0,1fr);gap:26px;align-items:start;background:#1b1c27;border:1px solid #ffffff26;border-radius:22px;padding:24px}
.poster-controls{display:grid;gap:14px}.poster-controls h2{margin:0}.poster-controls label{display:grid;gap:6px;font-weight:650}.poster-controls input,.poster-controls select{box-sizing:border-box;width:100%;max-width:100%;padding:11px;border-radius:10px;border:1px solid #ffffff55;background:#11131d;color:#fff}.poster-controls input[type=file]{font-size:13px}.poster-controls .privacy-note{font-size:13px;line-height:1.45;margin:0;color:#c7c9d2}
.poster-controls [hidden]{display:none!important}
.poster-preview{display:grid;place-items:center;min-width:0;overflow:auto}.poster-preview .poster-sheet{width:min(100%,420px);aspect-ratio:148/210}.poster-preview .poster-sheet.landscape{width:min(100%,620px);aspect-ratio:210/148}
.poster-sheet{box-sizing:border-box;position:relative;isolation:isolate;overflow:hidden;background:var(--poster-bg);color:#fff;container-type:inline-size;font-family:Arial,sans-serif}.poster-sheet:before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at 90% 12%,var(--poster-secondary),transparent 36%),radial-gradient(circle at 8% 85%,var(--poster-accent),transparent 34%);opacity:.35}.poster-art{position:absolute;inset:0;z-index:-2}.poster-art img{width:100%;height:100%;object-fit:cover}.poster-art:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#060711b8,#06071175 40%,#060711dc)}
.poster-content{position:relative;z-index:1;height:100%;box-sizing:border-box;padding:7%;display:flex;flex-direction:column;justify-content:space-between}.poster-content header{display:flex;align-items:flex-start;justify-content:space-between;gap:1em}.poster-brand{font-size:5cqw;font-weight:900;letter-spacing:-.06em;color:var(--poster-accent)}.poster-kicker{font-size:2.35cqw;text-align:right;max-width:35%;line-height:1.2}.poster-headline span{text-transform:uppercase;font-size:3.1cqw;letter-spacing:.14em;font-weight:800;color:var(--poster-accent)}.poster-headline h1{font-size:10cqw;line-height:1.02;overflow-wrap:anywhere;margin:.2em 0;letter-spacing:-.05em}.poster-headline p{font-size:4.2cqw;line-height:1.2;margin:0}.poster-content footer{display:flex;align-items:center;gap:5%;padding:4%;border:2px solid var(--poster-accent);background:#0a0a12df;border-radius:5cqw}.poster-qr{width:37%;aspect-ratio:1;flex:none;background:#fff;padding:3%;box-sizing:border-box;border-radius:2cqw}.poster-qr img{width:100%;height:100%;display:block}.poster-join{min-width:0;display:grid;gap:.45em;font-size:3.5cqw}.poster-join strong{color:var(--poster-accent);font-size:3.1cqw}.poster-join b{font-size:1.35em;letter-spacing:.08em}.poster-join small{font-size:2.35cqw;overflow-wrap:anywhere}
.poster-sheet.landscape .poster-headline h1{font-size:7cqw}.poster-sheet.landscape .poster-headline p{font-size:3cqw}.poster-sheet.landscape .poster-content{padding:5%}.poster-sheet.landscape .poster-content footer{width:52%;align-self:flex-end;padding:2%;gap:3%}.poster-sheet.landscape .poster-qr{width:40%}.poster-sheet.landscape .poster-join{font-size:2.3cqw}.poster-sheet.landscape .poster-join strong{font-size:2.2cqw}.poster-sheet.landscape .poster-join small{font-size:1.45cqw}
.poster-guide>span{font-size:calc(2.8cqw * var(--guide-scale,1));font-weight:800;letter-spacing:.15em;color:var(--poster-accent)}.poster-guide h1{font-size:calc(8cqw * var(--guide-scale,1));line-height:1.05;letter-spacing:-.04em;margin:.18em 0 .38em}.poster-guide ol{list-style:none;padding:0;margin:0;display:grid;gap:2.4cqw}.poster-guide li{display:flex;gap:3%;align-items:flex-start}.poster-guide li>b{flex:none;display:grid;place-items:center;width:9cqw;height:9cqw;border-radius:50%;background:var(--poster-accent);color:#111;font-size:calc(5cqw * var(--guide-scale,1))}.poster-guide li strong{font-size:calc(4.5cqw * var(--guide-scale,1))}.poster-guide li p{font-size:calc(3.25cqw * var(--guide-scale,1));line-height:1.25;margin:.12em 0 0}.poster-sheet.guide footer{padding:3%}.poster-sheet.guide .poster-qr{width:31%}.poster-sheet.guide.landscape .poster-content{display:grid;grid-template-columns:minmax(0,1fr) 39%;grid-template-rows:auto minmax(0,1fr);gap:3%;align-items:center}.poster-sheet.guide.landscape header{grid-column:1/-1}.poster-sheet.guide.landscape .poster-guide{grid-column:1;grid-row:2}.poster-sheet.guide.landscape footer{grid-column:2;grid-row:2;width:auto;align-self:stretch;flex-direction:column;justify-content:center;text-align:center;padding:5%;gap:3%}.poster-sheet.guide.landscape .poster-qr{width:62%}.poster-sheet.guide.landscape .poster-guide>span{font-size:calc(1.8cqw * var(--guide-scale,1))}.poster-sheet.guide.landscape .poster-guide h1{font-size:calc(5cqw * var(--guide-scale,1));margin:.08em 0 .22em}.poster-sheet.guide.landscape .poster-guide ol{gap:1.3cqw}.poster-sheet.guide.landscape .poster-guide li>b{width:5cqw;height:5cqw;font-size:calc(2.8cqw * var(--guide-scale,1))}.poster-sheet.guide.landscape .poster-guide li strong{font-size:calc(2.5cqw * var(--guide-scale,1))}.poster-sheet.guide.landscape .poster-guide li p{font-size:calc(1.85cqw * var(--guide-scale,1))}.poster-sheet.guide.landscape .poster-join{font-size:2.1cqw}.poster-sheet.guide.landscape .poster-join small{font-size:1.35cqw}
.poster-guide{min-width:0;min-height:0;font-size:calc(3.25cqw * var(--guide-scale,1));line-height:1.25;align-self:stretch;display:flex;flex-direction:column;justify-content:center}
.poster-guide>*{flex-shrink:0}
.poster-guide li>div{min-width:0}
.poster-guide li strong,.poster-guide>span{display:block;line-height:1.2}
/* Keep the print copy laid out at real A5 dimensions, including before printing. */
#print-poster{position:absolute;left:-10000px;top:0;pointer-events:none}
#print-poster .poster-sheet{width:var(--poster-width);height:var(--poster-height)}
.poster-content{position:absolute;inset:0;height:auto;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:4cqw}
.poster-content header,.poster-content footer{min-width:0;min-height:0}
.poster-headline{min-width:0;min-height:0;display:flex;flex-direction:column;justify-content:center}
.poster-headline>*{flex-shrink:0}
.poster-qr img{width:100%;height:auto;aspect-ratio:1;object-fit:contain}
.poster-sheet.landscape.invitation .poster-content{grid-template-columns:minmax(0,1fr) 40%;grid-template-rows:auto minmax(0,1fr);gap:3cqw}
.poster-sheet.landscape.invitation header{grid-column:1/-1}
.poster-sheet.landscape.invitation .poster-headline{grid-column:1;grid-row:2}
.poster-sheet.landscape.invitation footer{grid-column:2;grid-row:2;width:auto;align-self:stretch;flex-direction:column;justify-content:center;text-align:center;padding:5%;gap:3%}
.poster-sheet.landscape.invitation .poster-qr{width:70%}
.poster-sheet.landscape.invitation .poster-headline span{font-size:2.2cqw;letter-spacing:.08em}
.poster-sheet.landscape.invitation .poster-headline h1{font-size:6cqw}
.poster-sheet.landscape.invitation .poster-headline p{font-size:2.5cqw}

@media(max-width:720px){.poster-editor{padding:10px;place-items:start center}.poster-editor-card{grid-template-columns:1fr;padding:15px;gap:16px}.poster-preview .poster-sheet{width:min(100%,330px)}}
@media print{
html,body{width:auto!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;background:#fff!important;overflow:visible!important}
body>:not(#print-poster){display:none!important}
#print-poster{display:block!important;position:static!important;width:auto;height:auto;margin:0;padding:0}
#print-poster .poster-sheet{width:var(--poster-width)!important;height:var(--poster-height)!important;aspect-ratio:auto!important;margin:0;break-inside:avoid;break-after:avoid;print-color-adjust:exact;-webkit-print-color-adjust:exact}
#print-poster img{visibility:visible!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}
}

.poster-fixed-guide{display:block;width:100%;height:100%;object-fit:contain}
