/* Uncover the garden beneath a real autumn leaf carpet. */
/* Focus cannot scroll the oversized scenery before it transfers to the veil. */
.garden-gate{height:100%;min-height:0;overflow:clip;isolation:isolate;background:#263729;color:#f4e5c7}.garden-gate[hidden]{display:none}
.gate-landscape{position:absolute;inset:-2%;z-index:-2;overflow:hidden;animation:entry-garden-drift 22s ease-in-out infinite alternate}.gate-landscape .gate-garden{object-position:center 64%;filter:none}.gate-landscape::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgb(15 27 19/.24),rgb(20 31 22/.48) 34%,rgb(23 34 24/.18) 68%,rgb(16 28 20/.75))}
.gate-copy{position:absolute;inset:22% 22px auto;text-align:center;color:#fff0ce;text-shadow:0 2px 18px rgb(11 23 14/.75);pointer-events:none}.gate-copy .gate-wordmark{position:static;width:auto;margin:0 auto 1.1rem;max-width:29rem;font-size:clamp(.7rem,2.8vw,.9rem);line-height:1.7;font-style:italic;letter-spacing:0}.gate-copy .gate-couple{position:static;display:flex;align-items:baseline;justify-content:center;gap:.25em;font-size:clamp(2.35rem,9.8vw,4.7rem);line-height:1.2;letter-spacing:-.035em}.gate-couple>span{min-width:0;max-width:44%;overflow-wrap:anywhere;text-wrap:balance}.gate-couple>em{font-size:.53em;font-weight:400;color:#e3bd70}
#entry-leaf-motion{position:absolute;left:50%;top:55%;width:clamp(165px,48vw,265px);aspect-ratio:1;transform:translate(-50%,-50%);z-index:3;perspective:1000px;will-change:transform,opacity}.entry-leaf-button{position:absolute;inset:0;display:block;width:100%;height:100%;padding:0;border:0;background:transparent;box-shadow:none;touch-action:manipulation;cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none}.entry-leaf-button:disabled{opacity:1;cursor:default;pointer-events:none}.entry-leaf-button:focus-visible{outline:1px solid #ffdfa0;outline-offset:14px;border-radius:50%}.entry-idle-leaf{width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(8px 14px 15px rgb(16 20 9/.3));transform:rotate(-12deg);transform-origin:62% 73%}.garden-gate[data-entry-state='ready'] .entry-idle-leaf{animation:entry-last-leaf 7s ease-in-out infinite}
.gate-guidance{position:absolute;top:calc(55% + clamp(82.5px,24vw,132.5px) + 20px);left:18px;right:18px;pointer-events:none;text-align:center;opacity:0;transition:opacity .65s;z-index:4;text-shadow:0 2px 8px #19291c}.garden-gate[data-entry-state='ready'] .gate-guidance{opacity:1}.entry-hand{display:block;margin:0 auto 7px;color:#f3e0b9;animation:entry-touch 3.8s ease-in-out infinite}.entry-hand-halo{opacity:.55}.gate-guidance .gate-hint{position:static;width:auto;font-size:.8rem;line-height:1.6;font-style:italic;letter-spacing:0}.entry-date{position:absolute;bottom:7%;left:12%;right:12%;text-align:center;font-size:.72rem;letter-spacing:.02em;color:#f0d5a1;text-shadow:0 2px 10px #19291c}
#leaf-bed-shell{position:absolute;inset:0;z-index:5;pointer-events:none;overflow:hidden;transition:opacity .4s}#leaf-bed-shell:has(canvas[data-leaf-bed-state='loading']){background:#744824}#leaf-bed{display:block;width:100%;height:100%;touch-action:none;pointer-events:auto;cursor:grab;-webkit-tap-highlight-color:transparent}#leaf-bed:active{cursor:grabbing}.garden-gate[data-entry-state='ready'] #leaf-bed-shell,.garden-gate[data-entry-state='opening'] #leaf-bed-shell,.garden-gate[data-entry-state='entered'] #leaf-bed-shell{visibility:hidden;pointer-events:none}
.brush-guidance{position:absolute;left:12px;right:12px;bottom:max(8%,40px);z-index:7;text-align:center;pointer-events:none;color:#fff6dd;text-shadow:0 2px 8px #271b0d,0 1px 2px #271b0d;transition:opacity .5s,transform .7s}.brush-guidance::before{content:'';position:absolute;z-index:-1;inset:-70px -12px -90px;pointer-events:none;background:radial-gradient(ellipse at 50% 75%,rgb(25 20 10/.7),rgb(32 25 11/.12) 65%,transparent 78%)}.brush-guidance>p{font-family:var(--font-display);font-size:clamp(1.35rem,5.5vw,1.8rem);line-height:1.3;letter-spacing:-.02em}.brush-guidance>small{display:block;font-style:italic;font-size:.7rem;margin:.4rem 0 .3rem;color:#f0dfb9}.brush-hand{display:block;margin:0 auto 13px;animation:entry-brush-hint 3.5s ease-in-out infinite}#clear-leaves{pointer-events:auto;background:none;border:0;padding:10px 14px;min-height:44px;color:#eedeb9;font-size:.65rem;font-style:italic;text-decoration:underline;text-decoration-color:rgb(238 222 185/.45);text-underline-offset:5px;text-shadow:inherit}.garden-gate[data-entry-state='brushing'] .brush-guidance{opacity:.45;transform:translateY(8px)}.garden-gate[data-entry-state='ready'] .brush-guidance,.garden-gate[data-entry-state='clearing'] .brush-guidance,.garden-gate[data-entry-state='opening'] .brush-guidance{opacity:0;visibility:hidden;pointer-events:none}
.garden-gate .enter-direct{bottom:auto;top:max(12px,env(safe-area-inset-top));right:12px;z-index:10;padding:11px 14px;font-size:.65rem;line-height:1.5;color:#fff0cc;opacity:1;text-shadow:0 2px 7px #261e0f;background:rgb(34 33 17/.22);border:0}.garden-gate #load-message{z-index:8;bottom:12px;pointer-events:none}#entry-gust{position:absolute;inset:0;pointer-events:none;overflow:hidden}#opening-veil{z-index:105;background:transparent;pointer-events:none;overflow:hidden}.garden-gate[data-entry-state='opening'] .gate-copy,.garden-gate[data-entry-state='opening'] .entry-date{opacity:0;transition:opacity .6s}.garden-gate[data-entry-motion='paused'] *{animation-play-state:paused!important}
@keyframes entry-garden-drift{from{transform:scale(1)}to{transform:scale(1.035) translateY(-.35%)}}@keyframes entry-last-leaf{0%,100%{transform:rotate(-12deg) rotateY(-10deg) translateY(-3px)}50%{transform:rotate(-4deg) rotateY(10deg) translateY(5px)}}@keyframes entry-touch{0%,30%,100%{transform:translateY(2px);opacity:.55}55%{transform:translateY(-4px);opacity:1}}@keyframes entry-brush-hint{0%,18%{transform:translateX(-19px) rotate(-9deg);opacity:.6}55%{transform:translateX(19px) rotate(9deg);opacity:1}85%,100%{transform:translateX(-19px) rotate(-9deg);opacity:.6}}
@media(min-width:760px){.gate-landscape .gate-garden{object-position:center 75%}.gate-copy{top:18%}#entry-leaf-motion{top:55%;width:min(34vh,300px)}.gate-guidance{top:calc(55% + min(17vh,150px) + 20px)}.brush-guidance{bottom:8%}.garden-gate .enter-direct{top:20px;right:24px}.gate-copy .gate-couple{font-size:4.7rem}}
@media(max-height:670px) and (orientation:portrait){.gate-copy{top:21%}.gate-copy .gate-wordmark{font-size:.68rem;margin-bottom:.7rem}.gate-copy .gate-couple{font-size:2.3rem}#entry-leaf-motion{top:54%;width:165px}.gate-guidance{top:calc(54% + 92px)}.entry-hand{height:26px}.gate-guidance .gate-hint{font-size:.74rem}.entry-date{bottom:5%}.brush-guidance{bottom:5%}}
@media(max-height:580px) and (orientation:landscape){.gate-copy{left:5%;right:48%;top:32%}.gate-copy .gate-couple{font-size:2.8rem}.gate-copy .gate-wordmark{font-size:.73rem}#entry-leaf-motion{left:73%;top:42%;width:36vh}.gate-guidance{left:48%;right:3%;top:70%}.entry-hand{height:25px}.entry-date{left:5%;right:48%;bottom:22%}.brush-guidance{bottom:4%}.brush-guidance>p{font-size:1.35rem}.brush-hand{height:28px;margin-bottom:4px}}
/* Raised ivory lettering emerges as the guest uncovers the garden. */
.gate-copy{perspective:900px;color:#faf0de;text-shadow:none}
.gate-copy .gate-wordmark,.gate-copy .gate-couple>*,.entry-date{opacity:0;transform:translate3d(0,23px,0) rotateX(12deg);filter:blur(5px)}
.gate-copy .gate-wordmark{color:#f1e5cd;text-shadow:0 2px 4px #243126,0 6px 18px rgb(12 24 16/.7)}
.gate-copy .gate-couple{font-weight:500}
.gate-copy .gate-couple>span{color:#faf0de;text-shadow:0 1px 0 rgb(255 255 255/.26),0 3px 2px rgb(16 30 19/.6),0 9px 20px rgb(12 23 15/.56)}
.gate-copy .gate-couple>em{color:#e5c89c;text-shadow:0 2px 4px #243126}
.garden-gate[data-entry-copy='revealed'] .gate-wordmark{animation:entry-type-rise 1.25s cubic-bezier(.18,.72,.2,1) both}
.garden-gate[data-entry-copy='revealed'] .gate-couple>span:first-child{animation:entry-type-rise 1.6s .12s cubic-bezier(.18,.72,.2,1) both}
.garden-gate[data-entry-copy='revealed'] .gate-couple>em{animation:entry-type-rise 1.45s .27s cubic-bezier(.18,.72,.2,1) both}
.garden-gate[data-entry-copy='revealed'] .gate-couple>span:last-child{animation:entry-type-rise 1.6s .37s cubic-bezier(.18,.72,.2,1) both}
.garden-gate[data-entry-copy='revealed'] .entry-date{animation:entry-type-rise 1.35s .5s cubic-bezier(.18,.72,.2,1) both}
.entry-idle-leaf{filter:saturate(.68) brightness(.94) contrast(.94) drop-shadow(8px 14px 15px rgb(16 20 9/.3))}
.brush-guidance>p{color:#fff4df;font-weight:500;text-shadow:0 1px 0 rgb(255 255 255/.16),0 3px 3px rgb(29 23 13/.8),0 7px 18px rgb(29 23 13/.7)}
.brush-guidance>small{color:#f2e5d0}
.garden-gate[data-entry-state='brushing'] .brush-guidance{opacity:.78}
#entry-gust{z-index:4;perspective:1100px;transform-style:preserve-3d}
.entry-current-leaf{display:block;position:absolute;left:0;top:0;max-width:none;pointer-events:none;backface-visibility:visible;will-change:transform,opacity;filter:saturate(.68) brightness(.94) contrast(.94) drop-shadow(3px 7px 9px rgb(35 26 12/.2))}
#entry-gust::before{content:'';position:absolute;inset:0;opacity:0;pointer-events:none;background:radial-gradient(ellipse at 50% 52%,rgb(237 206 151/.14),transparent 52%)}
body.opening #entry-gust::before{animation:entry-current-light 2.9s ease-in-out both}
@keyframes entry-type-rise{0%{opacity:0;transform:translate3d(0,23px,0) rotateX(12deg);filter:blur(5px)}60%{opacity:1;filter:blur(.5px)}100%{opacity:1;transform:translate3d(0,0,0) rotateX(0deg);filter:blur(0)}}
@keyframes entry-current-light{0%,100%{opacity:0}45%{opacity:1}}
.garden-gate[data-entry-state='opening'] .entry-date{animation:none;transform:none;filter:none;opacity:0;transition:opacity .45s}
html[data-patjhad-ready='true'] .garden-gate:not([data-entry-state]) .gate-wordmark,html[data-patjhad-ready='true'] .garden-gate:not([data-entry-state]) .gate-couple>*,html[data-patjhad-ready='true'] .garden-gate:not([data-entry-state]) .entry-date{opacity:1;transform:none;filter:none}
html[data-patjhad-ready='true'] .garden-gate:not([data-entry-state]) #leaf-bed-shell,html[data-patjhad-ready='true'] .garden-gate:not([data-entry-state]) .brush-guidance{display:none}
html[data-patjhad-ready='true'] .garden-gate:not([data-entry-state]) .gate-guidance{opacity:1}
@media(prefers-reduced-motion:reduce){.garden-gate *{animation:none!important;transition:none!important}.gate-copy .gate-wordmark,.gate-copy .gate-couple>*,.entry-date{opacity:1;transform:none;filter:none}}
/* Two pressed heart leaves, with real names set into their papery surface. */
.gate-copy{top:15%;left:20px;right:20px}
.gate-copy .gate-wordmark{font-size:clamp(.68rem,2.6vw,.84rem);margin-bottom:1rem;color:#e7d8bc}
.gate-promise{font-family:var(--font-display);font-size:clamp(2rem,7.3vw,3.6rem);font-weight:400;line-height:1.12;letter-spacing:-.025em;color:#fff2d9;text-shadow:0 2px 3px rgb(20 33 23/.5),0 8px 24px rgb(10 25 16/.5);opacity:0;transform:translateY(20px);filter:blur(4px)}
.garden-gate[data-entry-copy='revealed'] .gate-promise{animation:entry-type-rise 1.5s .18s cubic-bezier(.18,.72,.2,1) both}
#entry-leaf-motion{top:53%;width:clamp(260px,79vw,395px);aspect-ratio:1.22}
.entry-heart-leaf{position:absolute;display:block;width:68%;height:92%;pointer-events:none;transform-origin:50% 55%;will-change:transform;backface-visibility:hidden}
.entry-heart-leaf--bride{left:-1%;top:-5%;transform:rotate(-14deg);z-index:1}
.entry-heart-leaf--groom{right:-1%;top:19%;transform:rotate(12deg);z-index:2}
.entry-heart-leaf>img{display:block;width:100%;height:100%;object-fit:contain;filter:sepia(.82) saturate(1.12) brightness(.8) contrast(.95) drop-shadow(5px 12px 12px rgb(17 25 15/.33))}
.entry-heart-leaf--groom>img{filter:sepia(.6) saturate(.84) brightness(.77) contrast(.95) drop-shadow(5px 12px 12px rgb(17 25 15/.33))}
.entry-leaf-name{position:absolute;left:12%;right:12%;top:40%;text-align:center;font-family:var(--font-display);font-size:clamp(1.35rem,5.8vw,2.05rem);line-height:1.08;font-weight:500;font-style:italic;color:#2e281b;text-shadow:0 1px 0 rgb(246 229 187/.4);overflow-wrap:anywhere;text-wrap:balance}
.entry-heart-leaf--bride .entry-leaf-name{top:39%;left:10%;right:16%;color:#30271b}
.garden-gate[data-entry-state='ready'] .entry-heart-leaf--bride{animation:entry-heart-copper 7s ease-in-out infinite}
.garden-gate[data-entry-state='ready'] .entry-heart-leaf--groom{animation:entry-heart-ochre 8s ease-in-out infinite}
.gate-guidance{top:calc(53% + clamp(125px,35vw,180px));left:20px;right:20px}
.entry-hand{width:26px;height:34px;margin-bottom:5px}
.gate-guidance .gate-hint{font-size:.75rem;color:#eadbc2}
.entry-date{bottom:6%;font-size:.73rem}
#opening-veil{position:fixed;inset:0;isolation:isolate;background:#263729}
#opening-veil .gate-landscape{animation:none}
#opening-veil .entry-heart-leaf{animation:none}
/* Keep the expanding heart visible through a quiet, translucent golden glow. */
#entry-reveal-light{position:fixed;inset:0;z-index:106;pointer-events:none;opacity:0;background:radial-gradient(ellipse at var(--reveal-x,50%) var(--reveal-y,53%),rgb(246 229 191/.68) 0%,rgb(237 212 166/.5) 20%,rgb(225 193 138/.28) 43%,rgb(207 171 111/.1) 66%,rgb(191 157 96/0) 90%);will-change:opacity}
#entry-reveal-light[hidden]{display:none}
@media(prefers-reduced-motion:reduce){#entry-reveal-light{display:none}}
body.opening{overflow:hidden;touch-action:none}
html[data-patjhad-ready='true'] .garden-gate:not([data-entry-state]) .gate-promise{opacity:1;transform:none;filter:none}
@keyframes entry-heart-copper{0%,100%{transform:rotate(-14deg) translateY(0)}50%{transform:rotate(-10deg) translateY(-4px)}}
@keyframes entry-heart-ochre{0%,100%{transform:rotate(12deg) translateY(0)}50%{transform:rotate(8deg) translateY(4px)}}
@media(min-width:760px){.gate-copy{top:13%}.gate-promise{font-size:3.2rem}#entry-leaf-motion{width:min(46vh,430px);top:54%}.gate-guidance{top:calc(54% + min(21vh,195px))}.entry-leaf-name{font-size:2.1rem}.entry-date{bottom:5%}}
@media(max-height:670px) and (orientation:portrait){.gate-copy{top:12%}.gate-copy .gate-wordmark{font-size:.63rem;margin-bottom:.6rem}.gate-promise{font-size:1.95rem}#entry-leaf-motion{width:min(71vw,290px);top:52%}.entry-leaf-name{font-size:1.35rem}.gate-guidance{top:calc(52% + 123px)}.entry-hand{height:26px}.entry-date{bottom:4%}}
@media(max-height:580px) and (orientation:landscape){.gate-copy{left:6%;right:49%;top:24%}.gate-copy .gate-wordmark{font-size:.67rem}.gate-promise{font-size:2.2rem}#entry-leaf-motion{left:73%;top:40%;width:48vh}.entry-leaf-name{font-size:1.3rem}.gate-guidance{top:75%;left:48%;right:3%}.entry-date{left:6%;right:49%;bottom:23%}}
@media(prefers-reduced-motion:reduce){.gate-promise{opacity:1;transform:none;filter:none}.entry-heart-leaf{animation:none!important}}
/* A single leaf emerges in the same warm light as the garden lanterns. */
#entry-light-reveal{--light-x:50%;--light-y:53%;position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;isolation:isolate;will-change:opacity}
.entry-light-halo{position:absolute;left:var(--light-x);top:var(--light-y);width:min(135vw,850px);aspect-ratio:1;transform:translate(-50%,-50%) scale(.86);opacity:.38;background:radial-gradient(ellipse,rgb(255 242 185/.8) 0%,rgb(245 218 151/.52) 15%,rgb(213 185 115/.23) 36%,rgb(181 151 81/.06) 54%,transparent 70%);mix-blend-mode:screen;pointer-events:none;will-change:transform,opacity}
.entry-light-rays{position:absolute;left:var(--light-x);top:var(--light-y);width:min(130vw,850px);aspect-ratio:1;transform:translate(-50%,-50%) scale(.9);pointer-events:none;mix-blend-mode:screen;opacity:.28;filter:blur(9px);will-change:transform,opacity}
.entry-light-rays::before,.entry-light-rays::after{content:'';position:absolute;left:38%;top:5%;width:24%;height:90%;border-radius:50%;background:linear-gradient(transparent,rgb(241 221 158/.02) 15%,rgb(255 238 186/.36) 45%,rgb(255 237 181/.42) 55%,rgb(227 205 139/.06) 78%,transparent);transform:rotate(32deg)}
.entry-light-rays::after{left:44%;width:12%;opacity:.65;transform:rotate(-29deg)}
#entry-light-leaf{position:absolute;left:var(--light-x);top:var(--light-y);width:clamp(150px,42vw,215px);aspect-ratio:1;object-fit:contain;transform:translate(-50%,-50%);transform-origin:50% 52%;opacity:0;pointer-events:none;will-change:transform,opacity;filter:sepia(.42) saturate(.6) brightness(.98) contrast(.95) drop-shadow(0 0 12px rgb(242 218 153/.34)) drop-shadow(0 7px 13px rgb(28 33 16/.2))}
body.opening #entry-gust::before{animation:none}
@media(min-width:760px){#entry-light-reveal{--light-y:54%}#entry-light-leaf{width:min(27vh,245px)}}
@media(max-height:670px) and (orientation:portrait){#entry-light-reveal{--light-y:52%}#entry-light-leaf{width:min(40vw,170px)}}
@media(max-height:580px) and (orientation:landscape){#entry-light-reveal{--light-x:73%;--light-y:40%}#entry-light-leaf{width:30vh}}
@media(prefers-reduced-motion:reduce){#entry-light-reveal{display:none}}
/* Each live family name arrives on its own pressed leaf, then rests in the pile. */
.entry-light-word{position:absolute;left:var(--light-x);top:calc(var(--light-y) - 1rem);transform:translate(-50%,-50%);font-family:var(--font-display);font-size:clamp(1.15rem,5vw,1.55rem);font-style:italic;color:#3a2e1a;text-shadow:0 1px 0 rgb(255 239 193/.5);opacity:0;pointer-events:none}
body.opening .entry-light-word{animation:entry-family-word .6s .8s both}
@keyframes entry-family-word{from{opacity:0;transform:translate(-50%,-35%)}to{opacity:1;transform:translate(-50%,-50%)}}
#entry-family-stack{position:absolute;inset:0;pointer-events:none;transform-origin:var(--light-x) var(--light-y)}
.entry-family-leaf{position:absolute;left:var(--light-x);top:var(--light-y);display:block;width:clamp(180px,52vw,250px);aspect-ratio:1;transform:translate(-50%,-50%);transform-origin:50% 52%;pointer-events:none;backface-visibility:hidden}
.entry-family-leaf>img{display:block;width:100%;height:100%;object-fit:contain;filter:sepia(.72) saturate(.92) brightness(.88) contrast(.95) drop-shadow(2px 5px 5px rgb(31 29 15/.28))}
.entry-family-leaf:nth-child(even)>img{filter:sepia(.58) saturate(.85) brightness(.9) contrast(.95) drop-shadow(2px 5px 5px rgb(31 29 15/.28))}
.entry-family-name{position:absolute;left:14%;right:14%;top:37%;font-family:var(--font-display);font-size:clamp(1rem,4.6vw,1.45rem);font-weight:500;font-style:italic;line-height:1.14;letter-spacing:-.015em;color:#302719;text-align:center;text-wrap:balance;overflow-wrap:anywhere;text-shadow:0 1px 0 rgb(255 239 193/.5)}
.entry-family-leaf[data-family-final='true'] .entry-family-name{top:38%;font-size:clamp(1.9rem,8vw,2.5rem);font-weight:400}
.entry-family-leaf[data-family-final='true']>img{filter:sepia(.45) saturate(.95) brightness(1.02) contrast(.96) drop-shadow(0 0 12px rgb(239 212 139/.28)) drop-shadow(2px 5px 6px rgb(31 29 15/.26))}
@media(min-width:760px){.entry-family-leaf{width:min(29vh,270px)}.entry-family-name{font-size:1.45rem}.entry-family-leaf[data-family-final='true'] .entry-family-name{font-size:2.5rem}}
@media(max-height:670px) and (orientation:portrait){.entry-family-leaf{width:min(52vw,205px)}.entry-family-name{font-size:1rem}.entry-family-leaf[data-family-final='true'] .entry-family-name{font-size:1.9rem}}
@media(max-height:580px) and (orientation:landscape){.entry-family-leaf{width:34vh}.entry-family-name{font-size:.9rem}.entry-family-leaf[data-family-final='true'] .entry-family-name{font-size:1.65rem}}
