*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:#fcfcfa}
body{color:#4f5b46;font-family:'Cormorant Garamond',Georgia,serif}
[hidden]{display:none!important}
button,input,select,textarea{font:inherit}
button,a,select,input{touch-action:manipulation}
.variant-hero{position:relative;min-height:max(720px,100svh);isolation:isolate;overflow:hidden;background:var(--paper-color,#f5f1e8)}
.variant-hero picture{position:absolute;inset:0;z-index:-1;display:block}
.variant-hero picture img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.variant-minimal .variant-hero{background:var(--paper-color,#ffffff)}
.variant-minimal .variant-hero:after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.18;z-index:-1;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Cpath fill='%236c604e' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
.minimal-header{position:absolute;z-index:2;top:28px;left:5%;right:5%;display:flex;align-items:center;justify-content:space-between;color:var(--name-color,#505d46)}
.minimal-header a{font-size:25px;color:inherit;text-decoration:none;letter-spacing:.1em}
.minimal-header em{color:var(--accent-color,#bb9863);font-weight:400}
.minimal-header span{font:10px/1.6 system-ui,sans-serif;letter-spacing:.28em;color:#7f8a77}
.corner-flourish{position:absolute;width:94px;height:94px;color:var(--accent-color,#bb9863);opacity:.48;pointer-events:none;fill:none;stroke:currentColor;stroke-width:.85}
.corner-flourish.top-left{top:96px;left:5%}.corner-flourish.top-right{top:96px;right:5%;transform:scaleX(-1)}
.corner-flourish.bottom-left{bottom:106px;left:5%;transform:scaleY(-1)}.corner-flourish.bottom-right{bottom:106px;right:5%;transform:scale(-1)}
.invitation-copy{position:absolute;z-index:2;left:50%;top:var(--copy-y,48%);transform:translate(-50%,-50%);width:min(var(--copy-width,680px),90%);text-align:center}
.name-composition{transform:translate(var(--names-x,0px),var(--names-y,0px))}
.invitation-copy h1{font-family:var(--name-font,'Cormorant Garamond',Georgia,serif);font-size:var(--name-size,68px);font-weight:var(--name-weight,500);line-height:var(--name-leading,1.08);letter-spacing:var(--name-spacing,.02em);font-variant:var(--name-variant,small-caps);text-transform:var(--name-case,none);color:var(--name-color,#a37e37);margin:0 0 var(--text-gap,32px)}
.invitation-copy h1>span{display:block;overflow-wrap:anywhere}
.invitation-copy h1 em{display:flex;justify-content:center;align-items:center;gap:24px;font-size:.45em;font-weight:400;font-variant:normal;margin:.18em 0;font-style:italic;color:inherit}
.variant-minimal .name-amp:before,.variant-minimal .name-amp:after{content:'';height:1px;width:75px;background:var(--accent-color,#bb9863);opacity:.45}
.invitation-copy p{font-family:var(--copy-font,'Cormorant Garamond',Georgia,serif);line-height:1.85;letter-spacing:var(--copy-spacing,.15em);text-transform:var(--copy-case,uppercase);white-space:pre-line;margin:0}
.invitation-copy .parents{font-size:var(--parents-size,14px);color:var(--parents-color,#315773);margin:0 0 var(--wording-gap,8px);transform:translate(var(--parents-x,0px),var(--parents-y,0px))}
.invitation-copy .wording{font-size:var(--wording-size,14px);color:var(--wording-color,#315773);transform:translate(var(--wording-x,0px),var(--wording-y,0px))}
.invitation-copy .extra-line{font-size:var(--extra-size,11px);color:var(--extra-color,#7f8a77);margin-top:var(--extra-gap,30px);letter-spacing:.22em}
.wedding-overline{position:absolute;left:50%;top:var(--overline-y,12%);transform:translateX(-50%);margin:0;text-align:center;width:80%;color:var(--accent-color,#bb9863);font:11px/1.6 system-ui,sans-serif;letter-spacing:.35em;text-transform:uppercase;white-space:pre-line}
.variant-hero .dancing-rings{z-index:3}
.variant-hero .ring-move-selector{display:none!important}
.variant-tools{position:fixed;z-index:15;right:16px;bottom:16px;display:flex;gap:8px;align-items:flex-end;font:13px/1.4 system-ui,sans-serif;color:#314c60}
.variant-tools button,.variant-tools summary,.variant-tools a,.background-picker{background:#ffffffed;border:1px solid #dce2e7;border-radius:9px;color:inherit;box-shadow:0 3px 16px #00000009}
.variant-tools button,.variant-tools summary{padding:12px 15px;cursor:pointer;font:inherit;list-style:none}
.variant-tools summary::-webkit-details-marker{display:none}
.variant-tools summary:before{content:'▸ ';font-size:11px}
.variant-tools details[open] summary:before{content:'▾ '}
.variant-tools nav{position:relative}
.variant-tools nav div{position:absolute;bottom:50px;right:0;display:flex;flex-direction:column;min-width:160px;gap:4px;padding:6px;background:white;border:1px solid #dce2e7;border-radius:10px;box-shadow:0 5px 30px #132b481a}
.variant-tools a{text-decoration:none;padding:10px 12px;border:0;white-space:nowrap}
.variant-tools a[aria-current]{background:#edf2f6}
.background-picker{position:fixed;left:16px;bottom:16px;z-index:15;padding:10px 12px;display:flex;align-items:center;gap:10px;color:#314c60;font:13px/1.4 system-ui,sans-serif}
.background-picker select{padding:8px 25px 8px 10px;border:1px solid #cad4de;border-radius:6px;background:white;color:inherit;font:inherit;max-width:100%}
:is(a,button,select,input,summary,textarea):focus-visible{outline:2px solid #597e9b;outline-offset:3px}
#design-panel{position:fixed;z-index:50;top:16px;right:16px;width:360px;height:calc(100svh - 32px);max-height:900px;display:flex;flex-direction:column;border:1px solid #dce3e8;border-radius:16px;box-shadow:0 12px 60px #132b4830;background:#fcfdff;color:#283747;font:13px/1.5 system-ui,sans-serif;overflow:hidden}
#design-panel .ds-top{display:flex;justify-content:space-between;align-items:center;padding:20px 20px 10px;cursor:grab;touch-action:none}
#design-panel .ds-top.is-dragging{cursor:grabbing}
#design-panel .ds-kicker{font-size:10px;letter-spacing:.15em;color:#7a8b9b}
#design-panel h2{font-size:21px;line-height:1.3;margin:3px 0;color:#253544}
#design-panel .ds-description{margin:0;padding:0 20px 16px;color:#71808d;font-size:12px}
#design-panel button{font:inherit;padding:8px 10px;background:white;border:1px solid #cdd8e2;border-radius:8px;cursor:pointer;color:#314c60}
#design-panel #design-close{font-size:25px;border:0;width:36px;height:36px;padding:0;background:#eff3f6}
#design-panel .ds-content{overflow:auto;overscroll-behavior:contain;flex:1;padding:0 20px 15px}
#design-panel .ds-group{border-top:1px solid #dfe6ec;padding-bottom:4px}
#design-panel summary{padding:16px 0;font-weight:600;cursor:pointer}
#design-panel .ds-note{font-size:12px;color:#71808d;margin:0 0 15px;line-height:1.6}
#design-panel .ds-control{display:grid;grid-template-columns:1fr auto;gap:8px 10px;align-items:center;margin-bottom:18px}
#design-panel .ds-control[hidden]{display:none!important}
#design-panel .ds-control label{font-size:12px;letter-spacing:0}
#design-panel output{font-size:11px;color:#6b7e8e;font-variant-numeric:tabular-nums}
#design-panel input,#design-panel textarea,#design-panel select{font:13px/1.5 system-ui,sans-serif;color:#314c60;background:white;border:1px solid #cdd8e2;border-radius:6px;min-width:0}
#design-panel .ds-control input[type=text],#design-panel textarea,#design-panel select{grid-column:1/-1;width:100%;padding:9px}
#design-panel textarea{min-height:72px;resize:vertical}
#design-panel input[type=range]{grid-column:1/-1;width:100%;height:22px;padding:0;border:0;accent-color:#647f8b;cursor:pointer}
#design-panel input[type=number]{grid-column:2;width:82px;justify-self:end;padding:5px 8px}
#design-panel input[type=checkbox]{grid-column:2;grid-row:1;width:18px;height:18px;accent-color:#647f8b}
#design-panel input[type=color]{width:44px;height:34px;padding:3px;grid-column:1;grid-row:2}
#design-panel .ds-color-control>label{grid-column:1/-1}
#design-panel .ds-color-control .ds-hex{grid-column:2;grid-row:2;width:100%;font-family:ui-monospace,monospace}
#design-panel [aria-invalid=true]{border-color:#b44740}
#design-panel .ds-hex-error{grid-column:1/-1;font-size:11px;color:#b44740}
#design-panel .ds-bottom{display:flex;flex-wrap:wrap;gap:7px;border-top:1px solid #dfe6ec;background:#f5f8fa;padding:13px 20px}
#design-panel #design-status{width:100%;font-size:11px;color:#71808d;margin:3px 0 0}
#design-panel .cloud-actions,#design-panel .gold-actions{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 15px}
#design-panel .ring-move-selector{position:static!important;display:flex!important;transform:none;width:100%;margin-bottom:18px;padding:10px;border:1px solid #e0e6ed;box-shadow:none}
#design-panel .ring-move-selector[hidden]{display:none!important}
#design-panel .ring-time-control input[type=number]{width:100%}
@media(max-width:700px){
 .variant-hero{min-height:max(740px,100svh)}
 .invitation-copy{width:min(var(--copy-width,680px),90%);top:var(--copy-y-mobile,46%)}
 .invitation-copy h1{font-size:var(--name-size-mobile,44px);letter-spacing:calc(var(--name-spacing,.02em) * .65)}
 .invitation-copy .parents{font-size:var(--parents-size-mobile,11px)}
 .invitation-copy .wording{font-size:var(--wording-size-mobile,11px)}
 .variant-hero picture img{object-position:65% center}
 .minimal-header{top:24px;left:7%;right:7%}.minimal-header span{font-size:8px;letter-spacing:.18em}
 .corner-flourish{width:58px;height:58px}.corner-flourish.top-left,.corner-flourish.top-right{top:90px}.corner-flourish.bottom-left,.corner-flourish.bottom-right{bottom:110px}
 .variant-minimal .name-amp:before,.variant-minimal .name-amp:after{width:45px}
 .wedding-overline{font-size:9px;letter-spacing:.25em}
 .variant-tools{right:10px;bottom:12px;gap:6px;font-size:12px}
 .variant-tools button,.variant-tools summary{padding:11px 12px}
 .variant-landscape .variant-tools{bottom:82px}
 .background-picker{left:10px;bottom:10px;width:calc(100% - 20px);justify-content:space-between;font-size:12px}
 .background-picker select{width:65%;min-width:0}
 #design-panel{top:8px;right:8px;width:min(360px,calc(100vw - 16px));height:calc(100svh - 16px)}
}
@media(prefers-reduced-motion:reduce){.invitation-copy *{animation:none!important}}
@media print{.variant-tools,.background-picker,#design-panel{display:none!important}.variant-hero{min-height:100vh}}

/* Plain cotton stationery: no decorative rules around the ampersand. */
.variant-minimal .name-amp:before,.variant-minimal .name-amp:after{display:none}

.wedding-overline{font-size:var(--overline-size,11px)}
