/* Jasmine Courtyard (wedding): design motion on top of assets/scenes/scenes.css.
   Plain rules = the final/rest state (reduced motion, editor, still render). */

/* fountain ripples: rings spread from the jet and fade; at rest none is drawn */
.sc-jasmine_courtyard [data-jc=ripple]{opacity:0;transform-origin:50% 50%}
.sc-js .sc-jasmine_courtyard.sc-in [data-jc=ripple]{animation:sc-jc-ripple 2.6s cubic-bezier(.2,.6,.35,1) var(--t,0ms) infinite both}
@keyframes sc-jc-ripple{
  0%{opacity:0;transform:scale(.18)}
  12%{opacity:.85}
  100%{opacity:0;transform:scale(1)}}

/* falling blossoms: spread across the stage by their seeded --r1; slow, with a wide drift and turn */
.sc-jasmine_courtyard [data-jc=petal]{left:calc(4% + var(--r1,.5) * 88%)!important;width:calc(2.4% + var(--r3,.5) * 1.4%)!important;--sw:calc(8px + var(--r3,.5) * 16px)}
.sc-js .sc-jasmine_courtyard.sc-in [data-jc=petal]{animation-duration:calc(11s + var(--r3,.5) * 6s)}

/* ---- programme (generated by gen_sections.py) ---- */
body.sc-jasmine_courtyard .sc-p-program-head{width:min(62%,250px);margin:0 auto 6px}
/* the timeline line becomes a vine; it grows down as the section comes into view */
body.sc-jasmine_courtyard #program .sa-prog-line-v{width:30px!important;background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 30 72%22%3E%3Cpath d=%22M15 0C12 18 18 36 15 54S13 66 15 72%22 fill=%22none%22 stroke=%22%235B7A52%22 stroke-width=%221.6%22/%3E%3Cpath d=%22M15 14Q22.3 17.4 28.9 22%22 fill=%22none%22 stroke=%22%235B7A52%22 stroke-width=%22.9%22/%3E%3Cpath d=%22M19.3 16.2C19.9 13.9 22 12.7 24.4 12.3C23.5 14.8 21.6 16.4 19.3 16.2Z%22 fill=%22%237C9A6B%22 stroke=%22%231F3B3A%22 stroke-width=%22.8%22/%3E%3Cpath d=%22M19.3 16.2C20.9 17.8 20.9 20.2 19.4 22.4C18.1 20.4 18 18 19.3 16.2Z%22 fill=%22%237C9A6B%22 stroke=%22%231F3B3A%22 stroke-width=%22.8%22/%3E%3Cpath d=%22M28.9 22C31.8 21.1 34.5 22.7 36.4 25.4C33.1 25.8 30.2 24.7 28.9 22Z%22 fill=%22%237C9A6B%22 stroke=%22%231F3B3A%22 stroke-width=%22.8%22/%3E%3Cpath d=%22M15 40Q7.7 43.2 1.1 48%22 fill=%22none%22 stroke=%22%235B7A52%22 stroke-width=%22.9%22/%3E%3Cpath d=%22M10.7 42.2C12.2 43.6 12.2 45.8 11.6 47.8C10 46 9.6 43.9 10.7 42.2Z%22 fill=%22%237C9A6B%22 stroke=%22%231F3B3A%22 stroke-width=%22.8%22/%3E%3Cpath d=%22M10.7 42.2C8.4 42.9 6.2 41.7 4.9 39.2C7.4 39 9.6 40.1 10.7 42.2Z%22 fill=%22%237C9A6B%22 stroke=%22%231F3B3A%22 stroke-width=%22.8%22/%3E%3Cpath d=%22M1.1 48C-0.2 50.7 -3.2 51.7 -6.4 51.3C-4.6 48.5 -1.8 47.1 1.1 48Z%22 fill=%22%237C9A6B%22 stroke=%22%231F3B3A%22 stroke-width=%22.8%22/%3E%3Cpath d=%22M15 62Q22.2 65.5 28.9 70%22 fill=%22none%22 stroke=%22%235B7A52%22 stroke-width=%22.9%22/%3E%3Cpath d=%22M19.2 64.3C20 62.2 22.1 61.2 24.3 60.9C23.2 63.3 21.4 64.6 19.2 64.3Z%22 fill=%22%237C9A6B%22 stroke=%22%231F3B3A%22 stroke-width=%22.8%22/%3E%3Cpath d=%22M19.2 64.3C20.7 66 20.5 68.4 18.8 70.6C17.7 68.4 17.8 66 19.2 64.3Z%22 fill=%22%237C9A6B%22 stroke=%22%231F3B3A%22 stroke-width=%22.8%22/%3E%3Cpath d=%22M28.9 70C31.8 69.2 34.5 70.8 36.3 73.6C33 73.9 30.1 72.7 28.9 70Z%22 fill=%22%237C9A6B%22 stroke=%22%231F3B3A%22 stroke-width=%22.8%22/%3E%3C/svg%3E") center top/30px 72px repeat-y!important;opacity:1!important}
.sc-js body.sc-jasmine_courtyard #program:not(.sc-in) .sa-prog-line-v{clip-path:inset(0 0 100% 0)}
.sc-js body.sc-jasmine_courtyard #program.sc-in .sa-prog-line-v{animation:sc-unroll 2.4s cubic-bezier(.45,0,.2,1) .5s both}
/* each stop is a jasmine flower that opens as its row arrives (every row on its own .sc-in) */
body.sc-jasmine_courtyard .sa-prog-row>div:first-child{width:28px!important;height:28px!important;margin-top:1px!important;border:0!important;border-radius:0!important;background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 40 40%22%3E%3Cpath d=%22M22.7 20.4C29.3 16.2 38 13.9 36.8 22.4C35.7 30.8 27.9 26.3 22.7 20.4ZM20.5 22.7C26.5 27.7 31.3 35.3 23 36.7C14.6 38.2 16.5 29.4 20.5 22.7ZM17.6 21.3C14.7 28.6 9 35.5 5 28C1 20.5 10 19.6 17.6 21.3ZM18 18.1C10.2 17.6 1.9 14.3 7.8 8.2C13.7 2.1 17.3 10.3 18 18.1ZM21.2 17.6C19.2 10 19.8 1 27.5 4.7C35.1 8.4 28.4 14.4 21.2 17.6Z%22 fill=%22%23FFFDF8%22 stroke=%22%231F3B3A%22 stroke-width=%221.5%22 stroke-linejoin=%22round%22/%3E%3Ccircle cx=%2220%22 cy=%2220%22 r=%223.7%22 fill=%22%23E7D27E%22/%3E%3C/svg%3E") center/contain no-repeat!important}
body.sc-jasmine_courtyard .sa-prog-row>div:first-child svg{visibility:hidden}
.sc-js body.sc-jasmine_courtyard #program .sa-prog-row:not(.sc-in){opacity:0}
.sc-js body.sc-jasmine_courtyard #program .sa-prog-row.sc-in{animation:sc-rise .8s var(--ease,cubic-bezier(.23,1,.32,1)) calc(.2s + var(--k,0) * .18s) both}
.sc-js body.sc-jasmine_courtyard #program .sa-prog-row:not(.sc-in)>div:first-child{transform:scale(.2) rotate(-40deg)}
.sc-js body.sc-jasmine_courtyard #program .sa-prog-row.sc-in>div:first-child{animation:sc-jc-bloom .7s cubic-bezier(.34,1.4,.64,1) calc(.35s + var(--k,0) * .18s) both}
@keyframes sc-jc-bloom{from{transform:scale(.2) rotate(-40deg);opacity:0}to{transform:none;opacity:1}}
body.sc-jasmine_courtyard .sa-prog-row:nth-child(1){--k:0}body.sc-jasmine_courtyard .sa-prog-row:nth-child(2){--k:1}body.sc-jasmine_courtyard .sa-prog-row:nth-child(3){--k:2}body.sc-jasmine_courtyard .sa-prog-row:nth-child(4){--k:3}body.sc-jasmine_courtyard .sa-prog-row:nth-child(n+5){--k:4}

/* ---- welcome: the letter sits on an arched paper card ----
   welcome.html covers the letter (behind its words): the arch head is an actor across the top; the stage's ::after is
   the card below the springline (paper), its ::before the card's straight sides and foot (they draw down). */
body.sc-jasmine_courtyard .wg-letter{position:relative;padding:calc(min(100%,34rem) * .24) 30px 46px}
body.sc-jasmine_courtyard .wg-letter>:not(.sc-piece){position:relative;z-index:1}
body.sc-jasmine_courtyard .wg-letter>.sc-p-welcome{position:absolute;inset:0;z-index:0;filter:drop-shadow(0 12px 18px rgba(31,59,58,.1))}
body.sc-jasmine_courtyard .wg-letter>.sc-p-welcome>.sc-stage{aspect-ratio:auto!important;height:100%}
body.sc-jasmine_courtyard .sc-p-welcome>.sc-stage::after{content:'';position:absolute;left:0;right:0;top:calc(100cqw * 0.64167 - 1px);bottom:0;max-width:none;background:var(--paper)}
body.sc-jasmine_courtyard .sc-p-welcome>.sc-stage::before{content:'';position:absolute;z-index:1;left:-.75px;right:-.75px;top:calc(100cqw * 0.64167 - 2px);bottom:-.75px;max-width:none;
  --c:var(--ink);--c2:color-mix(in srgb,var(--ink) 45%,transparent);--i:calc(100cqw * 14 / 600);
  background:linear-gradient(var(--c),var(--c)) 0 0/1.5px 100% no-repeat,linear-gradient(var(--c),var(--c)) 100% 0/1.5px 100% no-repeat,
    linear-gradient(var(--c),var(--c)) 0 100%/100% 1.5px no-repeat,
    linear-gradient(var(--c2),var(--c2)) calc(var(--i) + .25px) 0/1px calc(100% - var(--i)) no-repeat,
    linear-gradient(var(--c2),var(--c2)) calc(100% - var(--i) - .25px) 0/1px calc(100% - var(--i)) no-repeat,
    linear-gradient(var(--c2),var(--c2)) 0 calc(100% - var(--i) - .25px)/100% 1px no-repeat}
/* the outline is wiped up from the springline; the clip reaches past the box so the strokes on its edges are whole */
.sc-js .sc-piece.sc-jasmine_courtyard:not(.sc-in) [data-jc=up]{clip-path:inset(100% -8px -8px -8px)}
.sc-js .sc-piece.sc-jasmine_courtyard.sc-in [data-jc=up]{animation:jc-up var(--d,1100ms) cubic-bezier(.45,0,.2,1) var(--t,0ms) both}
@keyframes jc-up{from{clip-path:inset(100% -8px -8px -8px)}to{clip-path:inset(-8px -8px -8px -8px)}}
.sc-js .sc-piece.sc-jasmine_courtyard.sc-p-welcome:not(.sc-in)>.sc-stage::before{clip-path:inset(0 0 100% 0)}
.sc-js .sc-piece.sc-jasmine_courtyard.sc-p-welcome.sc-in>.sc-stage::before{animation:sc-unroll 1.1s cubic-bezier(.45,0,.2,1) 1.1s both}
.sc-js .sc-piece.sc-jasmine_courtyard.sc-p-welcome:not(.sc-in)>.sc-stage::after{opacity:0}
.sc-js .sc-piece.sc-jasmine_courtyard.sc-p-welcome.sc-in>.sc-stage::after{animation:sc-fade .6s ease-out both}
.sc-js body.sc-jasmine_courtyard .wg-welcome:not(.sc-in) .wg-letter>:not(.sc-piece){opacity:0}
.sc-js body.sc-jasmine_courtyard .wg-welcome.sc-in .wg-letter>:not(.sc-piece){animation:sc-rise .9s cubic-bezier(.23,1,.32,1) 1s both}

/* ---- countdown: a tile on its point draws and fills; each digit sits on an encaustic tile, the tiles fill in turn ---- */
body.sc-jasmine_courtyard #countdown>.sc-p-countdown{width:min(52%,210px);margin:-6px auto 4px}
body.sc-jasmine_courtyard #countdown .grid{gap:10px!important}
body.sc-jasmine_courtyard #countdown .grid>div+div::before{content:none!important}
/* each cell carries its tile (a pseudo-element behind the digit): the tile fills in from the centre, then the digit
   appears on it; a digit that changes settles in */
body.sc-jasmine_courtyard #countdown .grid>div{position:relative;isolation:isolate}
body.sc-jasmine_courtyard #countdown .grid>div::after{content:'';position:absolute;z-index:-1;left:4px;right:4px;top:0;aspect-ratio:1;max-width:none;
  background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22%3E%3Cpath d=%22M0 0H100V100H0Z%22 fill=%22%23F1E3CE%22/%3E%3Cpath d=%22M0 0L23 0A23 23 0 0 1 0 23Z%22 fill=%22%23B5654A%22 fill-opacity=%220.92%22/%3E%3Cpath d=%22M100 0L100 23A23 23 0 0 1 77 0Z%22 fill=%22%23B5654A%22 fill-opacity=%220.92%22/%3E%3Cpath d=%22M100 100L77 100A23 23 0 0 1 100 77Z%22 fill=%22%23B5654A%22 fill-opacity=%220.92%22/%3E%3Cpath d=%22M0 100L0 77A23 23 0 0 1 23 100Z%22 fill=%22%23B5654A%22 fill-opacity=%220.92%22/%3E%3Cpath d=%22M50 -8L58 0L50 8L42 0Z%22 fill=%22%233E7470%22 fill-opacity=%220.9%22/%3E%3Cpath d=%22M100 42L108 50L100 58L92 50Z%22 fill=%22%233E7470%22 fill-opacity=%220.9%22/%3E%3Cpath d=%22M50 92L58 100L50 108L42 100Z%22 fill=%22%233E7470%22 fill-opacity=%220.9%22/%3E%3Cpath d=%22M0 42L8 50L0 58L-8 50Z%22 fill=%22%233E7470%22 fill-opacity=%220.9%22/%3E%3Cpath d=%22M50 10L62 21L78.3 21.7L79 38L90 50L79 62L78.3 78.3L62 79L50 90L38 79L21.7 78.3L21 62L10 50L21 38L21.7 21.7L38 21Z%22 fill=%22%23FBF3E4%22 stroke=%22%233E7470%22 stroke-width=%221.4%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22/%3E%3Cpath d=%22M50 17L59.9 26.1L73.3 26.7L73.9 40.1L83 50L73.9 59.9L73.3 73.3L59.9 73.9L50 83L40.1 73.9L26.7 73.3L26.1 59.9L17 50L26.1 40.1L26.7 26.7L40.1 26.1Z%22 fill=%22none%22 stroke=%22%233E7470%22 stroke-width=%220.8%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 stroke-opacity=%220.5%22/%3E%3Cpath d=%22M1.5 1.5H98.5V98.5H1.5Z%22 fill=%22none%22 stroke=%22%231F3B3A%22 stroke-width=%221.4%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 stroke-opacity=%220.8%22/%3E%3C/svg%3E") center/contain no-repeat;box-shadow:0 10px 14px -12px rgba(31,59,58,.45)}
body.sc-jasmine_courtyard #countdown [id^=cd_]{display:grid;place-items:center;aspect-ratio:1;color:#1F3B3A!important}
body.sc-jasmine_courtyard #countdown .grid span:last-child{margin-top:8px}
.sc-js body.sc-jasmine_courtyard #countdown .grid:not(.sc-in)>div::after{clip-path:circle(0% at 50% 50%)}
.sc-js body.sc-jasmine_courtyard #countdown .grid.sc-in>div::after{animation:jc-tile .9s cubic-bezier(.23,1,.32,1) calc(.3s + var(--k,0) * .16s) both}
body.sc-jasmine_courtyard #countdown .grid>div:nth-child(2){--k:1}body.sc-jasmine_courtyard #countdown .grid>div:nth-child(3){--k:2}body.sc-jasmine_courtyard #countdown .grid>div:nth-child(4){--k:3}
@keyframes jc-tile{from{clip-path:circle(0% at 50% 50%)}to{clip-path:circle(75% at 50% 50%)}}
.sc-js body.sc-jasmine_courtyard #countdown .grid:not(.sc-in) :is([id^=cd_],span:last-child){opacity:0}
.sc-js body.sc-jasmine_courtyard #countdown .grid.sc-in :is([id^=cd_],span:last-child){animation:sc-fade .6s ease-out calc(.75s + var(--k,0) * .16s) both}
/* a tick keeps the entrance in the list (it carries on, it is not restarted) and only nudges the digit, so a digit that
   changes before its tile has filled in stays hidden until then */
.sc-js body.sc-jasmine_courtyard #countdown .grid.sc-in [id^=cd_].sc-tick{animation:sc-fade .6s ease-out calc(.75s + var(--k,0) * .16s) both,jc-tick .5s cubic-bezier(.23,1,.32,1)}
@keyframes jc-tick{from{transform:translateY(-3px)}to{transform:none}}

/* ---- venue: an arched window with a lantern; each detail stands in a small arch and arrives in turn ---- */
body.sc-jasmine_courtyard #details>.sc-p-details{width:min(70%,270px);margin:-6px auto 2px}
body.sc-jasmine_courtyard #details .sa-map-rows>div>div:first-child{width:44px;height:48px;background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 44 48%22%3E%3Cpath d=%22M4 44C4 43.6 4 42.4 4.1 41.6C4.1 40.9 4.2 40.1 4.3 39.3C4.4 38.5 4.5 37.7 4.7 37C4.8 36.2 5 35.4 5.2 34.7C5.4 33.9 5.7 33.2 5.9 32.4C6.2 31.7 6.4 30.9 6.7 30.2C7 29.5 7.4 28.8 7.7 28.1C8.1 27.4 8.4 26.7 8.8 26C9.2 25.3 9.6 24.7 10.1 24C10.5 23.3 11 22.7 11.4 22.1C11.9 21.5 12.4 20.9 12.9 20.3C13.5 19.7 14 19.1 14.5 18.5C15.1 18 15.7 17.5 16.3 16.9C16.9 16.4 17.5 15.9 18.1 15.4C18.7 15 19.3 14.5 20 14.1C20.7 13.6 21.3 12.8 22 12.8C22.7 12.8 23.3 13.6 24 14.1C24.7 14.5 25.3 15 25.9 15.4C26.5 15.9 27.1 16.4 27.7 16.9C28.3 17.5 28.9 18 29.5 18.5C30 19.1 30.5 19.7 31.1 20.3C31.6 20.9 32.1 21.5 32.6 22.1C33 22.7 33.5 23.3 33.9 24C34.4 24.7 34.8 25.3 35.2 26C35.6 26.7 35.9 27.4 36.3 28.1C36.6 28.8 37 29.5 37.3 30.2C37.6 30.9 37.8 31.7 38.1 32.4C38.3 33.2 38.6 33.9 38.8 34.7C39 35.4 39.2 36.2 39.3 37C39.5 37.7 39.6 38.5 39.7 39.3C39.8 40.1 39.9 40.9 39.9 41.6C40 42.4 40 43.6 40 44V46H4V44%22 fill=%22none%22 stroke=%22%231F3B3A%22 stroke-width=%221%22 stroke-opacity=%22.45%22/%3E%3C/svg%3E") center bottom/contain no-repeat!important;align-items:flex-end;padding-bottom:6px}
.sc-js body.sc-jasmine_courtyard #details .sa-map-rows>:not(.sc-in),.sc-js body.sc-jasmine_courtyard #details .sa-map-actions:not(.sc-in){opacity:0}
.sc-js body.sc-jasmine_courtyard #details .sa-map-rows>.sc-in,.sc-js body.sc-jasmine_courtyard #details .sa-map-actions.sc-in{animation:sc-rise .8s cubic-bezier(.23,1,.32,1) calc(.25s + var(--k,0) * .15s) both}
body.sc-jasmine_courtyard #details .sa-map-rows>:nth-child(2){--k:1}body.sc-jasmine_courtyard #details .sa-map-rows>:nth-child(3){--k:2}
body.sc-jasmine_courtyard #details .sa-map-embed .sa-gallery-card{padding:6px;background:var(--paper);border:1px solid #D8C3A3!important;border-radius:0!important}

/* ---- gallery: an arch rule draws; every photo is framed by a pointed arch and rises in when it scrolls in ---- */
body.sc-jasmine_courtyard #gallery>.sc-p-gallery{width:min(92%,380px);margin:-4px auto 8px}
body.sc-jasmine_courtyard #gallery .sa-gallery-card{border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;overflow:visible!important;
  filter:drop-shadow(0 10px 12px rgba(31,59,58,.16))}
body.sc-jasmine_courtyard #gallery .sa-gallery-card img{aspect-ratio:4/5;height:auto!important;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 125%22%3E%3Cpath d=%22M0 58L0.1 55L0.3 52L0.6 49L1 46L1.6 43L2.3 40L3.1 37.1L4 34.3L5.1 31.4L6.3 28.6L7.6 25.9L9 23.2L10.5 20.6L12.1 18.1L13.8 15.6L15.7 13.2L17.6 10.8L19.6 8.6L21.7 6.4L24 4.4L26.2 2.4L28.6 0.5L31.1 -1.2L33.6 -2.9L36.2 -4.5L38.8 -5.9L41.6 -7.2L44.3 -8.5L47.1 -9.6L50 -10.6L52.9 -9.6L55.7 -8.5L58.4 -7.2L61.2 -5.9L63.8 -4.5L66.4 -2.9L68.9 -1.2L71.4 0.5L73.8 2.4L76 4.4L78.3 6.4L80.4 8.6L82.4 10.8L84.3 13.2L86.2 15.6L87.9 18.1L89.5 20.6L91 23.2L92.4 25.9L93.7 28.6L94.9 31.4L96 34.3L96.9 37.1L97.7 40L98.4 43L99 46L99.4 49L99.7 52L99.9 55L100 58L100 125L0 125Z%22 fill=%22%23000%22/%3E%3C/svg%3E") center/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 125%22%3E%3Cpath d=%22M0 58L0.1 55L0.3 52L0.6 49L1 46L1.6 43L2.3 40L3.1 37.1L4 34.3L5.1 31.4L6.3 28.6L7.6 25.9L9 23.2L10.5 20.6L12.1 18.1L13.8 15.6L15.7 13.2L17.6 10.8L19.6 8.6L21.7 6.4L24 4.4L26.2 2.4L28.6 0.5L31.1 -1.2L33.6 -2.9L36.2 -4.5L38.8 -5.9L41.6 -7.2L44.3 -8.5L47.1 -9.6L50 -10.6L52.9 -9.6L55.7 -8.5L58.4 -7.2L61.2 -5.9L63.8 -4.5L66.4 -2.9L68.9 -1.2L71.4 0.5L73.8 2.4L76 4.4L78.3 6.4L80.4 8.6L82.4 10.8L84.3 13.2L86.2 15.6L87.9 18.1L89.5 20.6L91 23.2L92.4 25.9L93.7 28.6L94.9 31.4L96 34.3L96.9 37.1L97.7 40L98.4 43L99 46L99.4 49L99.7 52L99.9 55L100 58L100 125L0 125Z%22 fill=%22%23000%22/%3E%3C/svg%3E") center/100% 100% no-repeat}
.sc-js body.sc-jasmine_courtyard #gallery .sa-gallery-card:not(.sc-in){opacity:0}
.sc-js body.sc-jasmine_courtyard #gallery .sa-gallery-card.sc-in{animation:sc-rise .9s cubic-bezier(.23,1,.32,1) calc(.1s + var(--k,0) * .15s) both}
body.sc-jasmine_courtyard #gallery .sa-gallery-card:nth-child(even){--k:1}

/* ---- dress code: tile swatches fan out; gifts: a bracket lantern glows; the words follow ---- */
body.sc-jasmine_courtyard #dress_code>.sc-p-dress_code{width:min(66%,250px);margin:-8px auto 0}
.sc-piece.sc-jasmine_courtyard [data-jc=fan]{transform:rotate(var(--r,0deg))}
.sc-js .sc-piece.sc-jasmine_courtyard:not(.sc-in) [data-jc=fan]{opacity:0;transform:rotate(0deg)}
.sc-js .sc-piece.sc-jasmine_courtyard.sc-in [data-jc=fan]{animation:jc-fan var(--d,900ms) cubic-bezier(.23,1,.32,1) var(--t,0ms) both}
@keyframes jc-fan{from{opacity:0;transform:rotate(0deg)}25%{opacity:1;transform:rotate(0deg)}to{opacity:1;transform:rotate(var(--r,0deg))}}
body.sc-jasmine_courtyard #gifts>.sc-p-gifts{width:min(44%,170px);margin:-10px auto 0}
.sc-js body.sc-jasmine_courtyard :is(#dress_code,#gifts,#closing) .sa-text-section__body:not(.sc-in),.sc-js body.sc-jasmine_courtyard #closing .sa-closing-sign:not(.sc-in){opacity:0}
.sc-js body.sc-jasmine_courtyard :is(#dress_code,#gifts,#closing) .sa-text-section__body.sc-in,.sc-js body.sc-jasmine_courtyard #closing .sa-closing-sign.sc-in{animation:sc-rise .9s cubic-bezier(.23,1,.32,1) .3s both}

/* ---- rsvp: a jasmine sprig draws; a "yes" reply is sealed with terracotta wax as it is sent (jasmine_courtyard.js) ---- */
body.sc-jasmine_courtyard #rsvp>.sc-p-rsvp{width:min(84%,320px);margin:-10px auto 8px}
body.sc-jasmine_courtyard #rsvp form button[type=submit]{position:relative}
body.sc-jasmine_courtyard #rsvp form.sc-sealed button[type=submit]::after{content:'';position:absolute;inset-inline-start:calc(100% + 10px);top:50%;width:58px;height:58px;margin-top:-29px;
  max-width:none;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 72 72%22%3E%3Cpath d=%22M7 40a31 31 0 1 0 62 0a31 31 0 1 0 -62 0Z%22 fill=%22%23000000%22 fill-opacity=%220.16%22/%3E%3Cpath d=%22M65.4 36C65.4 38.7 63.9 41.2 63.4 44C62.8 46.8 63.5 50.5 62 52.7C60.5 54.9 56.7 55.5 54.4 57.3C52.2 59.1 51 62.3 48.6 63.6C46.2 65 43 65.2 40.2 65.3C37.4 65.3 34.8 64.1 32 63.8C29.2 63.5 25.8 64.6 23.4 63.5C21.1 62.4 19.8 59 17.7 57.1C15.6 55.3 12.3 54.4 10.9 52.2C9.4 50 9.5 46.6 9 43.9C8.5 41.2 8 38.7 7.8 36C7.5 33.3 7.1 30.5 7.4 27.6C7.6 24.7 7.6 21 9.3 18.8C10.9 16.6 15 16.1 17.4 14.5C19.9 13 21.6 11.2 24 9.7C26.4 8.2 28.8 6.5 31.6 5.5C34.4 4.5 37.8 3.5 40.6 4C43.5 4.4 46.2 6.6 48.7 8.2C51.2 9.8 53 11.8 55.5 13.6C57.9 15.3 62.1 16 63.3 18.4C64.6 20.9 62.6 25.2 62.9 28.1C63.2 31 65.3 33.3 65.4 36Z%22 fill=%22%23B5654A%22 stroke=%22%237E3F2A%22 stroke-width=%221.2%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22/%3E%3Cpath d=%22M16 36a20 20 0 1 0 40 0a20 20 0 1 0 -40 0Z%22 fill=%22none%22 stroke=%22%239A4B31%22 stroke-width=%222.4%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 stroke-opacity=%220.9%22/%3E%3Cpath d=%22M15 35a20 20 0 1 0 40 0a20 20 0 1 0 -40 0Z%22 fill=%22none%22 stroke=%22%23E4A68A%22 stroke-width=%221%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 stroke-opacity=%220.6%22/%3E%3Cpath d=%22M38 36.6C43.5 34.3 50.4 33.8 48.4 40C46.4 46.2 41.1 41.8 38 36.6ZM36 38.1C39.9 42.6 42.5 49 36 49C29.5 49 32.1 42.6 36 38.1ZM34 36.6C30.9 41.8 25.6 46.2 23.6 40C21.6 33.8 28.5 34.3 34 36.6ZM34.8 34.3C28.9 32.9 23.1 29.3 28.4 25.5C33.6 21.7 35.3 28.3 34.8 34.3ZM37.2 34.3C36.7 28.3 38.4 21.7 43.6 25.5C48.9 29.3 43.1 32.9 37.2 34.3Z%22 fill=%22%23A9553A%22 stroke=%22%23E0A084%22 stroke-width=%22.8%22 stroke-opacity=%22.7%22/%3E%3Ccircle cx=%2236%22 cy=%2236%22 r=%223%22 fill=%22%23E6A184%22/%3E%3C/svg%3E") center/contain no-repeat}
.sc-js body.sc-jasmine_courtyard #rsvp form.sc-sealed button[type=submit]::after{animation:jc-seal .6s cubic-bezier(.23,1,.32,1) both}
@keyframes jc-seal{0%{opacity:0;transform:translateY(-18px) scale(1.35)}45%{opacity:1;transform:scale(1.08,.86)}70%{transform:scale(.97,1.03)}100%{opacity:1;transform:none}}
.sc-js body.sc-jasmine_courtyard #rsvp form>:not(.sc-in):not([type=hidden]){opacity:0}
.sc-js body.sc-jasmine_courtyard #rsvp form>.sc-in{animation:sc-fade .7s cubic-bezier(.23,1,.32,1) .1s both}

/* ---- closing: the arch at night; the petals fall slower than in the hero ---- */
body.sc-jasmine_courtyard #closing>.sc-p-closing{width:min(100%,420px);margin:-10px auto 26px}
/* petals drop from the vine on the arch and fade before the floor (they wait unseen before their first fall) */
.sc-jasmine_courtyard [data-jc=cpetal]{left:calc(24% + var(--r1,.5) * 52%)!important;width:calc(2.6% + var(--r3,.5) * 1.2%)!important;top:9%!important}
.sc-js .sc-piece.sc-jasmine_courtyard.sc-in [data-jc=cpetal]{animation:jc-cfall calc(15s + var(--r3,.5) * 7s) linear calc(var(--t,0ms) + var(--r2,0) * 14s) infinite both}
@keyframes jc-cfall{
  0%{transform:translate3d(0,0,0) rotate(0);opacity:0}
  10%{opacity:1}
  33%{transform:translate3d(var(--sw,10px),22cqh,0) rotate(calc(var(--turn,120deg) * .33))}
  66%{transform:translate3d(calc(var(--sw,10px) * -1),44cqh,0) rotate(calc(var(--turn,120deg) * .66))}
  86%{opacity:1}
  100%{transform:translate3d(0,64cqh,0) rotate(var(--turn,120deg));opacity:0}}
/* the couple's closing photo (when there is one) comes up softly as it scrolls in */
.sc-js body.sc-jasmine_courtyard .wg-closing-photo:not(.sc-in){opacity:0}
.sc-js body.sc-jasmine_courtyard .wg-closing-photo.sc-in{animation:sc-fade 1.3s cubic-bezier(.23,1,.32,1) .15s both}
