/* Opt-in paper and colour details. No media downloads or extra JS loop. */
.masthead.masthead-no-brand{justify-content:flex-end}
body>.edge-cubes{display:none}
.paper-atmosphere .edge-cubes{display:block;position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;--edge-space:18px;--cube-size:62px}
html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-stage>.envelope-scene{z-index:3}
.cube-drift{position:absolute;left:var(--edge-space);top:21%;width:var(--cube-size);height:var(--cube-size);perspective:500px;opacity:.96;filter:drop-shadow(0 14px 12px #62305c24);animation:cube-float 5.5s ease-in-out infinite alternate;animation-delay:var(--drift-phase,-3s);animation-play-state:paused;--cube-color:#f14798}
.cube-drift:nth-child(2n){left:auto;right:var(--edge-space);--cube-color:#27b9dd}
.cube-drift:nth-child(2){top:34%;--cube-size:82px}
.cube-drift:nth-child(3){top:63%;--cube-size:46px;--cube-color:#ffbf38}
.cube-drift:nth-child(4){top:82%;--cube-size:68px;--cube-color:#9863ee}
.cube-drift:nth-child(5){top:88%;--cube-size:34px;--cube-color:#32cfa4}
.cube-drift:nth-child(6){top:12%;--cube-size:42px;--cube-color:#ff8950}
.color-cube{display:block;position:relative;width:100%;height:100%;transform-style:preserve-3d;transform:rotateX(-22deg) rotateY(-32deg);animation:cube-turn 14s linear infinite;animation-delay:var(--spin-phase,0s);animation-play-state:paused}
.color-cube i{position:absolute;inset:0;background:var(--cube-color);border:1px solid #ffffff70;overflow:hidden;backface-visibility:hidden;transform:translateZ(calc(var(--cube-size)/2))}
.color-cube i:after{content:"";position:absolute;inset:-35%;pointer-events:none;background:linear-gradient(120deg,transparent 24%,#ffffff15 39%,#ffffffb8 49%,#ffffff28 58%,transparent 72%);animation:cube-gleam 7s ease-in-out infinite alternate;animation-play-state:paused;opacity:.75}
.color-cube i:nth-child(2){background:color-mix(in srgb,var(--cube-color),#fff 35%);transform:rotateX(90deg) translateZ(calc(var(--cube-size)/2))}
.color-cube i:nth-child(3){background:color-mix(in srgb,var(--cube-color),#555 12%);transform:rotateY(90deg) translateZ(calc(var(--cube-size)/2))}
.color-cube i:nth-child(4){background:color-mix(in srgb,var(--cube-color),#222 18%);transform:rotateY(180deg) translateZ(calc(var(--cube-size)/2))}
.color-cube i:nth-child(5){background:color-mix(in srgb,var(--cube-color),#222 24%);transform:rotateX(-90deg) translateZ(calc(var(--cube-size)/2))}
.color-cube i:nth-child(6){background:color-mix(in srgb,var(--cube-color),#fff 16%);transform:rotateY(-90deg) translateZ(calc(var(--cube-size)/2))}
[data-ambient-active=true] :is(.cube-drift,.color-cube){animation-play-state:running}
[data-ambient-active=true] .color-cube i:after{animation-play-state:running}
@keyframes cube-float{from{translate:0 -30px}to{translate:0 30px}}
@keyframes cube-turn{from{transform:rotateX(-22deg) rotateY(-32deg) rotateZ(-8deg)}to{transform:rotateX(338deg) rotateY(328deg) rotateZ(352deg)}}
@keyframes cube-gleam{from{transform:translateX(-28%);opacity:.45}to{transform:translateX(28%);opacity:.85}}

/* Retain the original rainbow stationery, with livelier fields and clear ink. */
html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-stage{background-color:#fff0f7;background-blend-mode:multiply}
html body[data-web-theme=rainbow]:has(.edge-cubes) .our-day{background-color:#f8ddea}
html body[data-web-theme=rainbow]:has(.edge-cubes) .paper-section{background-color:#d9eff3}
html body[data-web-theme=rainbow]:has(.edge-cubes) .closing{background-color:#e9ddf6}
html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-heading h1{color:#623d79}
html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-heading h1 em{color:#a12b72}
html body[data-web-theme=rainbow]:has(.edge-cubes) :is(.envelope-toggle,.button-gold){background:#9c286c;color:#fff}
html body[data-web-theme=rainbow]:has(.edge-cubes) .button-outline{background:#277c96;color:#fff}

/* The spectrum frames the envelope without competing with the words. */
html body[data-web-theme=rainbow]:has(.edge-cubes) .rainbow-orbit{opacity:calc(.78 * var(--heading-alpha,1))}
html body[data-web-theme=rainbow]:has(.edge-cubes) .rainbow-orbit path{stroke-width:9}
html body[data-web-theme=rainbow]:has(.edge-cubes) .rainbow-orbit .orbit-echo{stroke-width:3;opacity:.42}
html body[data-web-theme=rainbow]:has(.edge-cubes) #rainbow-trail stop:nth-child(1){stop-color:#ed2589}
html body[data-web-theme=rainbow]:has(.edge-cubes) #rainbow-trail stop:nth-child(2){stop-color:#f05b48}
html body[data-web-theme=rainbow]:has(.edge-cubes) #rainbow-trail stop:nth-child(3){stop-color:#edab23}
html body[data-web-theme=rainbow]:has(.edge-cubes) #rainbow-trail stop:nth-child(4){stop-color:#e5ce2b}
html body[data-web-theme=rainbow]:has(.edge-cubes) #rainbow-trail stop:nth-child(5){stop-color:#21b38c}
html body[data-web-theme=rainbow]:has(.edge-cubes) #rainbow-trail stop:nth-child(6){stop-color:#13a9d2}
html body[data-web-theme=rainbow]:has(.edge-cubes) #rainbow-trail stop:nth-child(7){stop-color:#9761db}

/* Invitation wording gets the same care as the printed stationery. */
html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-subtitle{font:500 clamp(23px,2vw,30px)/1.3 Cormorant,Georgia,serif;letter-spacing:0;max-width:none}
html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-subtitle .intro-place{margin-top:5px}
html body[data-web-theme=rainbow]:has(.edge-cubes) .invitation-quote{font:500 clamp(24px,2.5vw,34px)/1.45 Cormorant,Georgia,serif;letter-spacing:-.01em;text-wrap:balance;max-width:48ch;margin:30px auto 46px}
html body[data-web-theme=rainbow]:has(.edge-cubes) .day-details{column-gap:72px;row-gap:30px;align-items:flex-start}
html body[data-web-theme=rainbow]:has(.edge-cubes) .day-details .eyebrow{font-size:16px!important;letter-spacing:0;text-transform:none;font-weight:500}
html body[data-web-theme=rainbow]:has(.edge-cubes) :is(#long-date,#venue){font:500 clamp(30px,3.2vw,44px)/1.18 Cormorant,Georgia,serif;letter-spacing:-.015em;max-width:18ch;text-wrap:balance;margin:12px auto 0}
html body[data-web-theme=rainbow]:has(.edge-cubes) .paper-intro>p:last-child{font:500 clamp(24px,2.2vw,30px)/1.45 Cormorant,Georgia,serif;max-width:28ch;text-wrap:balance}

/* A round paper seal, never a background-removal edit of the original logo. */
html body[data-web-theme=rainbow]:has(.edge-cubes) .closing-logo{padding:8px;border:0;border-radius:50%;background:#fff;box-shadow:none;overflow:hidden}
html body[data-web-theme=rainbow]:has(.edge-cubes) .wedding-logo-float{animation:none;transform:none}
html body[data-web-theme=rainbow]:has(.edge-cubes) .closing-logo img{border-radius:50%;filter:none}
html body[data-web-theme=rainbow]:has(.edge-cubes) .wedding-logo-aura{display:none}
html body[data-web-theme=rainbow]:has(.edge-cubes) :is(.foil-sweep-flap,.foil-sweep-flap_inside){backface-visibility:hidden;-webkit-backface-visibility:hidden}
html body[data-web-theme=rainbow]:has(.edge-cubes) .foil-sweep-flap{transform:translateZ(.1px)}
html body[data-web-theme=rainbow]:has(.edge-cubes) .foil-sweep-flap_inside{transform:rotateY(180deg) translateZ(.1px)}

/* Night changes the entire page, not only a token or a tiny toggle. */
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes){--paper:#111a2f;--ink:#f7f0fa;--muted:#ddd4e9;--gold:#f6cb7d;--line:#7e7492;background:#111a2f;color:var(--ink);color-scheme:dark}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) .opening-stage{background:#111a2f;background-image:none}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) #venue-block .eyebrow{color:#f6cb7d}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) .our-day{background:#261b38;background-image:none}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) .paper-section{background:#142c38;background-image:none}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) .closing{background:#24182f;background-image:none}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) :is(.opening-heading h1,#first-name,.paper-intro h2){color:#d7c3ff}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) :is(.opening-heading h1 em,#second-name,.closing h2){color:#ffacd9}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) :is(.opening-subtitle,.invitation-quote,.paper-intro>p:last-child,#long-date,#venue,.clock-note,.counter-label){color:#f2eaf4}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) :is(.eyebrow,.opening-heading .eyebrow,.counter-number){color:#f6cb7d}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) .counter-number{background:#352840;box-shadow:none}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) :is(.envelope-toggle,.button-gold){background:#f6cb7d;color:#302036}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) :is(footer,#card-dialog){background:#111a2f;color:#f2eaf4}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) .cube-drift{opacity:1;filter:drop-shadow(0 15px 14px #0007)}
html body[data-web-theme=rainbow][data-theme=noche]:has(.edge-cubes) .rainbow-orbit{opacity:calc(.92 * var(--heading-alpha,1))}

html body[data-card-style=editorial] .letter-glint{background:none;overflow:hidden;opacity:.65}
html body[data-card-style=editorial] .letter-glint:after,
html body[data-card-style=editorial] .card-lustre:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 25%,#d8eaf700 36%,#d8eaf738 44%,#fff9 49%,#f3dfe744 54%,transparent 66%);mix-blend-mode:screen;transform:translate3d(-135%,0,0) skewX(-12deg);animation:pearl-sweep 13s ease-in-out infinite;animation-play-state:paused}
html body[data-card-style=editorial] .paper-preview:after{content:none!important}
html body[data-card-style=editorial] .card-preview-artwork{position:relative;display:block;width:fit-content;max-width:100%;margin:0 auto;overflow:hidden;line-height:0}
html body[data-card-style=editorial] .card-preview-artwork>.invitation-image{display:block;max-width:100%;max-height:78svh;object-fit:contain;margin:0}
html body[data-card-style=editorial] .card-preview-artwork .card-lustre{position:absolute;inset:0;overflow:hidden;pointer-events:none;opacity:.6}
html body[data-card-style=editorial] .opening-stage[data-ambient-active=true] .letter-glint:after,
html body[data-card-style=editorial] .paper-section[data-ambient-active=true] .card-preview-artwork .card-lustre:after,
html body[data-card-style=editorial] #card-dialog[open] .card-lustre:after{animation-play-state:running}
html body[data-card-style=editorial] .card-artwork{position:relative;width:fit-content;max-width:100%;margin:0 auto 20px;overflow:hidden;line-height:0}
html body[data-card-style=editorial] .card-artwork>.invitation-image{display:block;max-width:100%;max-height:77svh;object-fit:contain;margin:0}
.card-lustre{position:absolute;inset:0;overflow:hidden;pointer-events:none;opacity:.65}
@keyframes pearl-sweep{0%,8%{transform:translate3d(-135%,0,0) skewX(-12deg);opacity:0}16%{opacity:.8}38%{transform:translate3d(135%,0,0) skewX(-12deg);opacity:0}100%{transform:translate3d(135%,0,0) skewX(-12deg);opacity:0}}
html[data-garden-paused=true] :is(.cube-drift,.color-cube),
html[data-page-visible=false] :is(.cube-drift,.color-cube){animation-play-state:paused!important}
html[data-garden-paused=true] .color-cube i:after,
html[data-page-visible=false] .color-cube i:after{animation-play-state:paused!important}
html[data-garden-paused=true] body[data-card-style=editorial] :is(.letter-glint,.paper-preview,.card-lustre):after,
html[data-page-visible=false] body[data-card-style=editorial] :is(.letter-glint,.paper-preview,.card-lustre):after{animation-play-state:paused!important;opacity:0}
@media(max-width:850px){.paper-atmosphere .edge-cubes{--edge-space:-10px;--cube-size:34px}.cube-drift{opacity:.9;filter:drop-shadow(0 7px 6px #62305c24)}.cube-drift:nth-child(1){top:10%;--cube-size:32px}.cube-drift:nth-child(2){top:56%;--cube-size:44px}.cube-drift:nth-child(3){top:80%;--cube-size:26px}.cube-drift:nth-child(4){top:92%;--cube-size:38px}.cube-drift:nth-child(n+5){display:none}}
@media(max-width:850px) and (max-height:650px){
 html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-heading{top:70px}
 html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-heading h1{font-size:clamp(46px,min(18vw,9svh),60px);line-height:1.08}
 html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-heading .eyebrow{font-size:11px!important;margin-bottom:10px}
 html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-subtitle{font-size:20px;line-height:1.25;margin-top:12px}
 html body[data-web-theme=rainbow]:has(.edge-cubes) .opening-subtitle .intro-place{margin-top:2px}
}
@media(prefers-reduced-motion:reduce){.cube-drift,.color-cube,.color-cube i:after{animation:none!important;translate:0 0}html body[data-card-style=editorial] :is(.letter-glint,.paper-preview,.card-lustre):after{animation:none!important;opacity:0}}

/* Separate, unfilled date and venue cards shared by every wedding invitation. */
html body[data-logo-frame=circle] .closing-logo{display:grid;place-items:center;aspect-ratio:1;padding:0;border:0;border-radius:50%;overflow:hidden;background:#fff;isolation:isolate}
html body[data-logo-frame=circle] .closing-logo .wedding-logo-float{display:grid;place-items:center;width:100%;height:100%;aspect-ratio:1;animation:none;translate:none}
html body[data-logo-frame=circle] .closing-logo img{display:block;width:100%;height:100%;aspect-ratio:1;object-fit:contain;border-radius:50%;background:#fff;filter:none!important}
html body:is([data-web-theme=waterfront],[data-web-theme=sketch]) .closing-logo{display:grid;place-items:center;aspect-ratio:1;padding:0;border-radius:50%;overflow:hidden;background:#fff;isolation:isolate}
html body:is([data-web-theme=waterfront],[data-web-theme=sketch]) .closing-logo .wedding-logo-float{display:grid;place-items:center;width:100%;height:100%;aspect-ratio:1;border-radius:50%;overflow:hidden;animation:none;translate:none}
html body:is([data-web-theme=waterfront],[data-web-theme=sketch]) .closing-logo img{display:block;width:100%;height:100%;aspect-ratio:1;object-fit:contain;border-radius:50%;clip-path:circle(50%);padding:7%!important;background:#fff;filter:none!important}
html body .day-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:clamp(16px,2.4vw,28px);width:min(100%,900px);margin-inline:auto}
html body[data-details-framed=true] .day-details>div{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;min-height:150px;padding:clamp(20px,3vw,36px);border:1px solid var(--gold,#a88b4e);border-radius:0;background:transparent;text-align:center}
html body .day-details>div[hidden]{display:none!important}
html body .day-details:not(:has(> #venue-block:not([hidden])))>div:first-of-type{grid-column:1/-1;width:min(100%,440px);justify-self:center}
html body .day-details .details-star{display:none!important}
html body .day-details>div .eyebrow{color:var(--gold,#a88b4e);font-size:12px!important;letter-spacing:.18em;text-transform:uppercase}
html body .day-details>div p{max-width:100%;margin:12px 0 0;font:500 clamp(22px,2.8vw,36px)/1.2 'Cormorant Garamond',Cormorant,Georgia,serif;text-wrap:balance;overflow-wrap:anywhere}
html body .day-details>div .venue-map{margin-top:10px}
@media(max-width:600px){html body .day-details{grid-template-columns:1fr;gap:14px}html body .day-details>div{min-height:122px;padding:20px 16px}html body .day-details:not(:has(> #venue-block:not([hidden])))>div:first-of-type{grid-column:1;width:100%;max-width:440px}html body .day-details>div p{font-size:clamp(21px,5.7vw,29px)}}
