@font-face{font-family:ChenYuluoyan;src:url(/fonts/chenyuluoyan-v2.woff2) format("woff2");font-weight:100 900;font-display:swap}.wedding-home{font-family:Plus Jakarta Sans,PingFang TC,Microsoft JhengHei,Noto Sans TC,sans-serif}.wedding-home .has-sec-font,.wedding-home .has-sec-font :is(h1,h2,h3,h4,p,li,div,span,button,time,small,a):not(.guest-eyebrow,.hero-art-note:not(.is-cjk),.home-couple-english,.amp,svg *){font-family:var(--sec-font),"Noto Serif TC","PingFang TC","Microsoft JhengHei",serif!important}.wedding-home .guest-nav,.wedding-home .preview-banner,.wedding-home .guest-footer{font-family:Plus Jakarta Sans,PingFang TC,Microsoft JhengHei,sans-serif}.wedding-home :where(p,li,small,time,label,div,a,button){font-family:inherit}.wedding-home .home-meet{font-family:Plus Jakarta Sans,"Noto Serif TC",serif}.wedding-home .home-meet :is(h1,h2,h3){font-family:"Noto Serif TC",serif}.wedding-home{max-width:1080px;padding-top:16px}.home-masthead{display:flex;align-items:center;gap:18px;border-bottom:1px solid var(--border-highlight);padding:6px 0 16px;min-height:61px}.home-edition{font-size:12px;letter-spacing:.2em;margin-right:auto;color:var(--ink-soft)}.invitation-replay{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;border:0;background:transparent;color:var(--milk-tea-700);font:14px "Noto Serif TC",serif;letter-spacing:.08em;cursor:pointer}.invitation-replay{margin-left:auto;flex-shrink:0}.wedding-home :is(h1,h2,h3){font-family:var(--holit-title),"Noto Serif TC",serif;font-weight:500;color:var(--milk-tea-900)}.wedding-home h2{font-size:clamp(22px,3vw,30px);line-height:1.6}.wedding-home :is(a,button):focus-visible,.invitation-intro button:focus-visible{outline:3px solid var(--milk-tea-700);outline-offset:5px}.wedding-hero{display:grid;grid-template-columns:1fr;justify-items:center;text-align:center;padding:40px 14px}.wedding-hero-copy{min-width:0;max-width:100%}.home-greeting{font-size:17px;margin:18px 0 20px;color:var(--milk-tea-700)}.wedding-hero h1{font-size:clamp(30px,4vw,56px);line-height:1.5;letter-spacing:.08em;text-wrap:balance}.wedding-hero h1:focus{outline:none}.hero-line{display:block;overflow:hidden;padding:.04em .14em}.hero-line>span{display:block}.hero-line-accent{color:var(--milk-tea-700)}.hero-ornament{width:150px;margin:22px auto 0}.home-couple{font:26px/1.6 var(--holit-title),"Noto Serif TC",serif;letter-spacing:.13em;color:var(--milk-tea-900);margin-top:18px;overflow-wrap:anywhere}h1.home-couple{font-size:clamp(30px,6vw,40px);font-weight:500}h1.home-couple:focus{outline:none}.home-couple .amp{font:26px Cormorant Garamond,Georgia,serif;color:var(--milk-tea-500);margin:0 10px}.home-couple-english{font:italic 24px Cormorant Garamond,Georgia,serif;margin-top:5px;overflow-wrap:anywhere}.home-couple-english .amp{font-style:normal}.home-wedding-date{font:28px Cormorant Garamond,Georgia,serif;letter-spacing:.14em;margin:16px 0 4px;color:var(--milk-tea-900)}.home-archived{font:18px/1.8 "Noto Serif TC",serif;color:var(--milk-tea-700);margin:20px 0 6px;letter-spacing:.06em}.wedding-home .home-primary{display:inline-flex;align-items:center;justify-content:center;gap:12px;width:auto;min-height:58px;padding:15px 34px;margin:24px 0 0;font-family:Plus Jakarta Sans,"Noto Serif TC",serif}.wedding-hero-art{position:relative;min-width:0;width:min(400px,82%);margin:40px auto 76px}.hero-arch-frame{position:relative;overflow:hidden;border-radius:220px 220px 16px 16px;background:var(--milk-tea-100);aspect-ratio:4 / 5;border:1px solid var(--milk-tea-200);box-shadow:0 44px 70px -44px rgba(var(--shadow-rgb),.4),0 12px 26px -16px rgba(var(--shadow-rgb),.14);outline:1px solid var(--milk-tea-200);outline-offset:12px}.hero-arch-frame:after{content:"";position:absolute;inset:10px;border:1px solid #ffffff90;border-radius:inherit;pointer-events:none}.hero-arch-frame img,.hero-arch-frame .hero-illustration{display:block;width:100%;height:100%;object-fit:cover}.hero-arch-frame .hero-color-reveal{position:absolute;inset:0}.invitation-opened .hero-color-reveal{animation:photoUnveil 1.6s .25s cubic-bezier(.22,1,.36,1) backwards}.hero-art-caption{display:flex;justify-content:center;align-items:center;gap:14px;margin:34px 2px 0;color:var(--milk-tea-700)}.hero-art-caption span{font:clamp(11.5px,3.3vw,15px) "Cormorant Garamond",Georgia,serif;letter-spacing:.3em;text-transform:uppercase;white-space:nowrap}.hero-art-note{position:absolute;right:-54px;top:28%;writing-mode:vertical-rl;font:24px var(--holit-script),cursive;letter-spacing:.04em;color:var(--milk-tea-700)}.hero-illustration .ha-sky-top{stop-color:var(--milk-tea-100)}.hero-illustration .ha-sky-bottom{stop-color:var(--milk-tea-50)}.hero-illustration .ha-glow-in{stop-color:var(--gold-light);stop-opacity:.55}.hero-illustration .ha-glow-out{stop-color:var(--gold-light);stop-opacity:0}.hero-illustration .ha-sun{fill:var(--gold-light);opacity:.9}.hero-illustration .ha-sun-ring{fill:none;stroke:var(--gold-accent);stroke-width:1;opacity:.45;stroke-dasharray:2 5}.hero-illustration .ha-birds path{fill:none;stroke:var(--milk-tea-700);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;opacity:.7}.hero-illustration .ha-hill-far{fill:var(--milk-tea-200);opacity:.75}.hero-illustration .ha-hill-near{fill:var(--milk-tea-300);opacity:.55}.hero-illustration .ha-ground{fill:var(--paper-bottom)}.hero-illustration .ha-stem{fill:none;stroke:var(--milk-tea-500);stroke-width:1.5;stroke-linecap:round}.hero-illustration .ha-leaf{fill:var(--milk-tea-100);stroke:var(--milk-tea-500);stroke-width:1.2;stroke-linejoin:round}.hero-illustration .ha-bud{fill:var(--rose-accent);opacity:.8}.hero-illustration .ha-ring{fill:none;stroke:var(--gold-accent);stroke-width:2.6}.hero-illustration .ha-gem{fill:var(--paper-top);stroke:var(--gold-accent);stroke-width:1.4;stroke-linejoin:round}.hero-illustration .ha-spark{fill:none;stroke:var(--gold-accent);stroke-width:1.4;stroke-linecap:round}.hero-illustration .ha-dots circle{fill:var(--milk-tea-300)}.invitation-opened .hero-illustration .ha-sun-group{animation:haSunRise 2.2s .2s var(--ease-out-expo) backwards}.invitation-opened .hero-illustration .ha-ring{stroke-dasharray:1;animation:haDraw 1.8s .9s cubic-bezier(.65,0,.35,1) backwards}.invitation-opened .hero-illustration .ha-sprig{animation:haGrow 1.6s .5s var(--ease-out-expo) backwards;transform-box:fill-box;transform-origin:50% 100%}.invitation-opened .hero-illustration .ha-gem,.invitation-opened .hero-illustration .ha-spark{animation:homeArrive 1s 2.2s var(--ease-out-expo) backwards}@keyframes haSunRise{0%{transform:translateY(26px);opacity:0}to{transform:none;opacity:1}}@keyframes haDraw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes haGrow{0%{transform:scaleY(.4);opacity:0}to{transform:none;opacity:1}}.invitation-opened .wedding-hero-copy>*{animation:homeArrive 1s .1s var(--ease-out-expo) backwards}.invitation-opened .wedding-hero-copy>h1:not(.home-couple){animation:none}.invitation-opened .home-greeting{animation-delay:.18s}.invitation-opened .hero-line>span{animation:heroLineUp 1.25s .3s var(--ease-out-expo) backwards}.invitation-opened .hero-line+.hero-line>span{animation-delay:.46s}.invitation-opened .hero-ornament{animation:ornamentOpen 1.3s .78s var(--ease-out-expo) backwards}.invitation-opened .home-couple{animation-delay:.9s}.invitation-opened .home-couple-english{animation-delay:.98s}.invitation-opened .home-wedding-date{animation-delay:1.06s}.invitation-opened :is(.home-primary,.home-archived){animation-delay:1.16s}.home-primary svg{transition:transform .4s var(--ease-out-expo)}.home-primary:hover svg{transform:translate(4px)}.home-countdown{border-block:1px solid var(--border-highlight);padding:28px 12px 32px;text-align:center}.home-countdown:empty{display:none}.wedding-clock>.guest-eyebrow{font-size:17px;letter-spacing:.1em;color:var(--milk-tea-700);margin-bottom:0}.wedding-clock-digits{display:flex;justify-content:center;margin-top:16px}.clock-unit{position:relative;padding:0 clamp(13px,3.8vw,40px)}.clock-unit+.clock-unit:before{content:"";position:absolute;left:0;top:10px;width:1px;height:48px;background:linear-gradient(transparent,var(--milk-tea-300) 30%,var(--milk-tea-300) 70%,transparent)}.clock-window{overflow:hidden;height:66px}.clock-window span{display:block;font:clamp(40px,11vw,60px)/1.1 "Cormorant Garamond",Georgia,serif;font-variant-numeric:lining-nums tabular-nums;color:var(--milk-tea-900);animation:clockTick .35s ease-out}.clock-unit small{display:block;margin-top:8px;font:13px/1.4 "Noto Serif TC",serif;letter-spacing:.3em;padding-left:.3em;color:var(--text-muted)}.wedding-clock-message p{font:24px/1.6 var(--holit-title),"Noto Serif TC",serif}.moving-photo{overflow:hidden;background:var(--milk-tea-100)}.moving-photo img{display:block;width:100%;height:100%;object-fit:cover;transform:translateY(var(--photo-shift, 0px)) scale(1.12)}.home-meet{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:60px;padding:60px 62px;border-radius:18px;background:var(--paper-grain-card),linear-gradient(180deg,var(--paper-top),var(--paper-bottom));border:1px solid var(--paper-edge);box-shadow:var(--shadow-paper);align-items:center}.home-meet:before{content:"";position:absolute;inset:8px;border:1px solid var(--paper-frame);border-radius:11px;pointer-events:none}.wedding-home .home-meet h2{font-size:clamp(25px,3vw,33px);letter-spacing:.06em}.home-meet-heading>p:not(.guest-eyebrow){margin-top:16px;font-size:15px}.home-info-link{margin-top:18px}.home-meet.home-meet-multi{grid-template-columns:1fr;gap:40px;align-items:start}.home-meet-multi .home-meet-heading{text-align:center;max-width:34em;margin:0 auto}.home-signoff{text-align:center;padding:80px 0 30px}.home-signoff svg{color:var(--rose-accent);stroke-width:1}.home-signoff p{font:23px/1.8 var(--holit-title),"Noto Serif TC",serif;margin:16px 0}.home-signoff>span{font:30px var(--holit-script),"Noto Serif TC",cursive;color:var(--milk-tea-700)}.home-signoff>span.is-cjk{font:19px/1.8 "Noto Serif TC",serif;letter-spacing:.12em}.home-signoff>span .amp{font:26px Cormorant Garamond,Georgia,serif}.home-signoff>span.is-cjk .amp{font-size:20px;margin:0 4px}.wedding-home .footnote{font:14px/1.8 Plus Jakarta Sans,"Noto Serif TC",serif;color:var(--milk-tea-700);letter-spacing:.04em}.wedding-reveal{opacity:0;transform:translateY(24px);transition:opacity .7s var(--reveal-delay, 0ms),transform .7s cubic-bezier(.22,1,.36,1) var(--reveal-delay, 0ms)}.wedding-reveal[data-visible=true],.wedding-reveal:focus-within{opacity:1;transform:none}.invitation-intro{position:fixed;z-index:1000;inset:0;height:100%;height:100dvh;overflow:hidden;isolation:isolate;outline:none}.invitation-paper{position:absolute;inset-block:0;width:calc(50% + 1px);background:var(--milk-tea-50)}.invitation-paper:after{content:"";position:absolute;top:20px;bottom:20px;border:1px solid var(--milk-tea-200);pointer-events:none}.invitation-paper-left{left:0;background:var(--paper-grain),linear-gradient(110deg,var(--milk-tea-100),var(--milk-tea-50) 70%);box-shadow:inset -18px 0 26px -22px rgba(var(--shadow-rgb),.32)}.invitation-paper-left:after{left:18px;right:0;border-right:0}.invitation-paper-right{right:0;background:var(--paper-grain),linear-gradient(250deg,var(--milk-tea-100),var(--milk-tea-50) 70%);box-shadow:inset 18px 0 26px -22px rgba(var(--shadow-rgb),.32)}.invitation-paper-right:after{right:18px;left:0;border-left:0}.invitation-content{position:relative;z-index:2;display:flex;align-items:center;justify-content:flex-start;flex-direction:column;gap:18px;height:100%;width:min(100%,480px);margin:auto;padding:max(68px,calc(env(safe-area-inset-top) + 44px)) 30px max(36px,calc(env(safe-area-inset-bottom) + 20px));text-align:center;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}.invitation-content::-webkit-scrollbar{display:none}.invitation-content>*{flex-shrink:0}.invitation-content>:first-child{margin-top:auto}.invitation-content>:last-child{margin-bottom:auto}.invitation-card{width:min(100%,calc((100dvh - 170px) * 5 / 7),520px);aspect-ratio:5 / 7;border-radius:10px;overflow:hidden;box-shadow:0 18px 50px rgba(var(--shadow-rgb),.18);background:var(--paper-bottom);animation:invitationCardIn .45s cubic-bezier(.22,1,.36,1) both}.invitation-card.invitation-upload{width:auto;max-width:min(100%,520px);aspect-ratio:auto;background:none}.invitation-upload img{display:block;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 170px);object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}@keyframes invitationCardIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.invitation-made{position:relative;container-type:inline-size;overflow:visible;background:var(--paper-grain-card),linear-gradient(180deg,var(--paper-top),var(--paper-bottom));border:1px solid var(--paper-edge)}.inv-frame{position:absolute;inset:4.2cqw;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:6cqw 7cqw 13cqw;border:1px solid var(--milk-tea-300);border-radius:6px;color:var(--milk-tea-900);overflow:hidden}.inv-frame:before{content:"";position:absolute;inset:1.6cqw;border:1px solid var(--paper-frame);border-radius:4px;pointer-events:none}.inv-sprig{width:30cqw;height:auto;margin-bottom:3cqw;overflow:visible}.inv-sprig-stem{fill:none;stroke:var(--milk-tea-500);stroke-width:1.2;stroke-linecap:round}.inv-sprig-leaf{fill:var(--milk-tea-100);stroke:var(--milk-tea-500);stroke-width:1}.inv-sprig-bud{fill:var(--rose-accent)}.inv-kicker{font:600 3.3cqw/1.4 Cormorant Garamond,Georgia,serif;letter-spacing:.42em;padding-left:.42em;color:var(--ink-soft)}.inv-script{font:12cqw/1.25 var(--holit-script),"Cormorant Garamond",cursive;color:var(--milk-tea-700);margin-top:3.4cqw;white-space:nowrap;max-width:100%}.inv-script .amp{font:8.5cqw Cormorant Garamond,Georgia,serif;color:var(--milk-tea-500);margin:0 .2em}.inv-names{font:600 5cqw/1.5 "Noto Serif TC",serif;letter-spacing:.28em;padding-left:.28em;margin-top:1.5cqw;overflow-wrap:anywhere}.inv-names .amp{font:400 4.6cqw Cormorant Garamond,Georgia,serif;color:var(--milk-tea-500);margin:0 .5em;letter-spacing:0}.inv-names-lead{font-size:7.6cqw;letter-spacing:.2em;padding-left:.2em;margin-top:4.5cqw}.inv-ornament.guest-ornament{width:34cqw;margin:4.5cqw auto 4cqw}.inv-date{display:flex;align-items:baseline;gap:.32em;font:11cqw/1.1 Cormorant Garamond,Georgia,serif;font-variant-numeric:lining-nums;letter-spacing:.04em;color:var(--milk-tea-900)}.inv-date i{font-style:normal;color:var(--milk-tea-300);font-size:.7em}.inv-when{font:3.8cqw/1.6 "Noto Serif TC",serif;letter-spacing:.3em;padding-left:.3em;color:var(--milk-tea-700);margin-top:2cqw}.inv-pending{font-size:4.2cqw;letter-spacing:.14em;margin-top:0}.inv-venue{font:600 4.3cqw/1.6 "Noto Serif TC",serif;letter-spacing:.12em;margin-top:4cqw;overflow-wrap:anywhere}.inv-address{font:3.2cqw/1.6 "Noto Serif TC",serif;color:var(--text-muted);margin-top:.6cqw;overflow-wrap:anywhere}.inv-others{list-style:none;padding:2.6cqw 0 0;margin:3.4cqw 0 0;border-top:1px solid var(--milk-tea-100);display:grid;gap:.8cqw;font:3.1cqw/1.6 "Noto Serif TC",serif;color:var(--text-muted)}.inv-others strong{color:var(--milk-tea-900);font-weight:600;margin-right:.6em}.inv-invite{font:3.4cqw/1.6 "Noto Serif TC",serif;letter-spacing:.2em;padding-left:.2em;color:var(--milk-tea-700);margin-top:5cqw}.invitation-made .receipt-seal{position:absolute;left:50%;bottom:0;width:22cqw;height:22cqw;margin:0;border:0;border-radius:50%;transform:translate(-50%,34%) rotate(-8deg);filter:drop-shadow(0 6px 7px var(--wax-shadow))}.invitation-made .receipt-seal svg{display:block;width:100%;height:100%}.invitation-made{margin-bottom:18px}.inv-has-others .inv-sprig{display:none}.inv-has-others .inv-ornament.guest-ornament{margin:3.4cqw auto 3cqw}.inv-has-others .inv-invite{margin-top:3.6cqw}.invitation-open{display:inline-flex;align-items:center;justify-content:center;gap:23px;min-height:52px;width:min(100%,262px);border:1px solid var(--milk-tea-700);border-radius:28px;padding:12px 22px;background:var(--milk-tea-700);color:var(--on-accent);box-shadow:0 7px 18px rgba(var(--shadow-rgb),.11);font:14px/1.6 Plus Jakarta Sans,sans-serif;letter-spacing:.08em;cursor:pointer;touch-action:manipulation}.invitation-open{transition:background-color .25s,transform .35s var(--ease-out-expo),box-shadow .35s var(--ease-out-expo)}.invitation-open:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:0 16px 30px -14px rgba(var(--shadow-rgb),.5)}.invitation-open:active{background:var(--milk-tea-900);transform:none}.invitation-footnote{font-size:12px;letter-spacing:.14em;color:var(--text-muted)}.is-opening .invitation-content{animation:invitationContentLeave .18s ease-out both;pointer-events:none}.is-opening .invitation-paper-left{animation:invitationPaperLeft .9s .18s cubic-bezier(.65,0,.25,1) both}.is-opening .invitation-paper-right{animation:invitationPaperRight .9s .18s cubic-bezier(.65,0,.25,1) both}@keyframes invitationContentLeave{to{opacity:0;transform:translateY(-10px)}}@keyframes invitationPaperLeft{to{transform:translate(-100%)}}@keyframes invitationPaperRight{to{transform:translate(100%)}}@keyframes homeArrive{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes photoUnveil{0%{clip-path:inset(100% 0 0)}to{clip-path:inset(0)}}@keyframes heroLineUp{0%{transform:translateY(108%)}to{transform:none}}@keyframes ornamentOpen{0%{opacity:0;transform:scaleX(.15)}to{opacity:1;transform:none}}@keyframes clockTick{0%{opacity:.4;transform:translateY(12px)}to{opacity:1;transform:none}}@media(max-width:760px){.home-edition{max-width:135px;font-size:9px;line-height:1.7}.home-masthead{gap:12px}.wedding-hero{grid-template-columns:1fr;gap:36px;padding:38px 6px 32px;text-align:center}.wedding-hero h1{font-size:clamp(20px,6.5vw,37px)}.wedding-hero .guest-eyebrow{font-size:10px;letter-spacing:.14em}.home-greeting{margin:12px 0 14px;font-size:16px}.home-couple{margin-top:22px}.wedding-hero-art{width:min(290px,74%);margin:4px auto 12px}.hero-arch-frame{aspect-ratio:1}.hero-art-note{right:-38px;font-size:19px}.hero-arch-frame{outline-offset:9px}.hero-art-caption{margin-top:28px}.home-meet{grid-template-columns:1fr;gap:28px;padding:40px 24px 30px;border-radius:15px}.home-meet:before{inset:6px;border-radius:9px}.home-meet-heading{text-align:center}.home-meet .event-card-actions{justify-content:center}.home-signoff{padding-top:64px}}@media(max-height:680px){.invitation-content{gap:13px;padding-top:60px;padding-bottom:27px}.invitation-footnote{font-size:9px}}@media(max-height:480px){.invitation-content{gap:10px;padding-block:55px 24px}.invitation-paper:after{inset-block:12px}}@media(prefers-reduced-motion:reduce){.wedding-home *,.invitation-intro *{animation:none!important;transition:none!important}.wedding-reveal,.wedding-hero-copy{opacity:1;transform:none}.moving-photo img{transform:none}}@media(min-width:1200px){.wedding-hero-art{width:clamp(420px,32vw,500px)}.hero-arch-frame{border-radius:260px 260px 18px 18px}}
