@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/roboto-latin-500-normal-7RbcRiD8.woff2)format("woff2"),url(/assets/roboto-latin-500-normal-DQZyH_nt.woff)format("woff")}:root{color:#151515;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#fff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}.mobile-carousel{overscroll-behavior:contain;scrollbar-width:none;-webkit-user-select:none;user-select:none;width:100%;min-width:0;max-width:100%;display:block;position:relative;overflow:auto}.mobile-carousel::-webkit-scrollbar{display:none}.mobile-carousel{touch-action:pan-y;overflow:auto hidden}.mobile-carousel[data-dragging=true]{cursor:none}.mobile-carousel-content{width:max-content;min-width:100%;transform:translateX(var(--mobile-carousel-overdrag));will-change:transform;display:flex}.mobile-carousel-scrollbar{z-index:4;opacity:0;pointer-events:none;transition:opacity .15s;position:absolute;inset:0}.mobile-carousel-scrollbar[data-visible=true]{opacity:1}.mobile-carousel-scrollbar-thumb{background:#00000059;border-radius:999px;height:3px;position:absolute;bottom:4px;right:4px}body{min-width:320px;overflow:hidden}button,input,textarea{font:inherit}button{cursor:pointer}.phone-stage{place-items:center;width:100%;height:100%;padding:24px;display:grid;position:relative}.device-menu-bar{z-index:100;border-radius:12px;padding:3px;position:absolute;top:18px;right:18px}.device-picker-trigger{color:#151515;background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;height:34px;padding:0 10px 0 12px;font:600 14px/1 ui-sans-serif,system-ui,sans-serif;display:flex}.device-picker-trigger:hover,.device-picker-trigger[data-state=open]{background:#0000000e}.device-picker-trigger:focus-visible{outline-offset:2px;outline:2px solid #000000b8}.device-picker-menu{z-index:200;min-width:168px;transform-origin:var(--radix-dropdown-menu-content-transform-origin);background:#fffffffa;border-radius:12px;padding:3px;animation:.12s ease-out device-menu-in;box-shadow:0 0 1px #0000000f,0 0 0 1px #00000014,0 4px 4px #0000000d}.device-picker-item{color:#181818;-webkit-user-select:none;user-select:none;border-radius:8px;outline:none;justify-content:space-between;align-items:center;height:34px;padding:0 9px 0 10px;font:500 14px/1 ui-sans-serif,system-ui,sans-serif;display:flex}.device-picker-item[data-highlighted]{background:#f0f0f0}.device-picker-item[data-state=checked]{font-weight:600}.device-picker-check{color:#181818;place-items:center;display:grid}@keyframes device-menu-in{0%{opacity:0;transform:scale(.98)translateY(-2px)}to{opacity:1;transform:scale(1)translateY(0)}}.phone-scale-box{position:relative}.phone-device{transform-origin:0 0;-webkit-user-select:none;user-select:none;position:absolute;top:0;left:0}.phone-bezel{object-fit:contain;z-index:2;-webkit-user-drag:none;pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.device-screen{cursor:none;z-index:1;-webkit-user-select:none;user-select:none;background:#fff;border-radius:42px;position:absolute;overflow:hidden;box-shadow:inset 0 0 0 1px #00000014}.device-camera{z-index:75;pointer-events:none;background:#050505;border-radius:50%;display:block;position:absolute;box-shadow:inset 0 0 0 1px #ffffff14}.device-screen,.device-screen *{cursor:none!important}.device-screen img,.keyboard-asset{-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.device-screen input,.device-screen textarea,.device-screen select,.device-screen option,.device-screen [contenteditable=true]{-webkit-user-select:auto;user-select:auto}.device-screen:active,.device-screen:active *,.device-screen input,.device-screen textarea,.device-screen button,.device-screen a,.device-screen [role=button]{cursor:none!important}.device-screen[data-cursor-debug=true],.device-screen[data-cursor-debug=true] *{cursor:default!important}.device-screen :focus,.device-screen :focus-visible{box-shadow:none!important;outline:0!important}.flow-stack,.flow-scenes,.flow-screen,.mobile-app-viewport{position:absolute;inset:0}.public-site-runtime{background:#fff;position:fixed;inset:0;overflow:hidden}.public-site-runtime .mobile-page{--device-safe-area-bottom:env(safe-area-inset-bottom,0px);--mobile-safe-area-height:env(safe-area-inset-bottom,0px)}.public-site-runtime .wedding-screen{--wedding-viewport-height:100dvh}.mobile-app-viewport[data-platform=android][data-keyboard-visible=false]{bottom:var(--device-safe-area-bottom,48px)}.flow-stack{--flow-header-height:0px;--flow-header-content-height:0px;--flow-header-safe-area:0px;--flow-footer-height:0px;--keyboard-height:0px;touch-action:pan-y;background:0 0;overflow:hidden}.flow-fixed-header{z-index:12;height:var(--flow-header-height);padding-top:var(--flow-header-safe-area);box-sizing:border-box;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-bottom:0;position:absolute;top:0;left:0;right:0}.flow-fixed-footer{z-index:12;right:0;bottom:var(--keyboard-height);height:var(--flow-footer-height);background:0 0;transition:bottom .26s cubic-bezier(.2,.8,.2,1);position:absolute;left:0}.flow-scenes{top:var(--flow-header-height);bottom:0;overflow:hidden}.flow-screen{will-change:transform;background:0 0;overflow:hidden}.mobile-page{--mobile-safe-area-height:var(--device-safe-area-bottom,34px);--keyboard-height:0px;position:absolute;inset:0}.mobile-page[data-keyboard-visible=true],.mobile-app-viewport[data-platform=android] .mobile-page{--mobile-safe-area-height:0px}.mobile-scroll{top:0;right:0;bottom:var(--keyboard-height);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none;touch-action:none;-webkit-user-select:none;user-select:none;transition:bottom .26s cubic-bezier(.2,.8,.2,1);position:absolute;left:0;overflow:hidden auto}.mobile-scroll::-webkit-scrollbar{display:none}.mobile-scroll[data-dragging=true]{cursor:none}.mobile-cursor{z-index:80;opacity:0;pointer-events:none;will-change:transform;background:radial-gradient(circle at 50% 44%,#ffffffb3 0 34%,#ffffff8a 58%,#eeeeee7a 100%);border:.5px solid #0000001f;border-radius:999px;width:48px;height:48px;transition:opacity 90ms,background 80ms,box-shadow 80ms;position:absolute;top:0;left:0;box-shadow:inset 0 1px 2px #fff9,inset 0 -5px 10px #0000000d,inset 0 0 0 1px #00000006}.mobile-cursor:before{content:"";pointer-events:none;background:linear-gradient(#ffffff61,#fff0);border-radius:999px;width:32px;height:17px;position:absolute;top:3px;left:50%;transform:translate(-50%)}.mobile-cursor:after{border-radius:inherit;content:"";pointer-events:none;position:absolute;inset:0;box-shadow:inset 1px 0 3px #ffffff47,inset -1px 0 3px #00000005}.mobile-cursor-hotspot{pointer-events:none;background:#ffffffd1;border:1px solid #007afff2;border-radius:999px;width:9px;height:9px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffbf,0 0 0 3px #007aff29}.mobile-cursor-hotspot:before,.mobile-cursor-hotspot:after{content:"";background:#007afff2;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.mobile-cursor-hotspot:before{width:17px;height:1px}.mobile-cursor-hotspot:after{width:1px;height:17px}.mobile-cursor[data-visible=true]{opacity:1}.mobile-cursor[data-active=true]{background:radial-gradient(circle at 50% 55%,#e8e8e894 0 30%,#f8f8f880 62%,#ffffffad 100%);box-shadow:inset 0 3px 7px #00000014,inset 0 -4px 8px #ffffff57,inset 0 0 0 1px #00000008}.mobile-cursor[data-active=true]:before{background:linear-gradient(#0000000e,#0000)}.mobile-cursor[data-active=true]:after{box-shadow:inset 0 5px 9px #0000000b,inset 0 -3px 7px #ffffff47}.mobile-scroll-content{will-change:transform;grid-template-columns:minmax(0,1fr);gap:0;min-width:0;padding:0;display:grid}.app-screen{background:#fff}.mobile-scrollbar{z-index:9;top:4px;right:5px;bottom:calc(var(--mobile-safe-area-height) + var(--keyboard-height) + 4px);opacity:0;pointer-events:none;width:4px;transition:bottom .26s cubic-bezier(.2,.8,.2,1),opacity .18s;position:absolute}.mobile-page[data-keyboard-dragging=true] .mobile-scroll,.mobile-page[data-keyboard-dragging=true] .mobile-scrollbar,.flow-stack[data-keyboard-dragging=true] .flow-fixed-footer{transition:none}.mobile-scrollbar[data-visible=true]{opacity:1}.mobile-scrollbar-thumb{background:#00000047;border-radius:999px;width:4px;min-height:36px;transition:background .12s;box-shadow:0 0 0 1px #ffffff2e}.status-bar{z-index:72;color:#050505;pointer-events:none;background:0 0;grid-template-columns:1fr auto;align-items:center;height:54px;padding:10px 34px 0 36px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Helvetica Neue,Arial,sans-serif;display:grid;position:absolute;top:0;left:0;right:0}.device-screen[data-device=pixel-10] .status-bar{align-items:start;height:auto;padding:32px 32px 0;font-family:Roboto,Arial,sans-serif}.status-time{text-align:center;letter-spacing:0;justify-self:start;min-width:58px;font-size:15px;font-weight:600;line-height:1}.status-indicators{justify-self:end;align-items:center;display:flex}.status-indicator-svg{display:block}.status-indicator-svg[data-platform=ios]{width:79px;height:13px}.status-indicator-svg[data-platform=android]{width:50px;height:14px}.device-screen[data-device=pixel-10] .status-time{font-weight:500;transform:translateY(2px)}.home-indicator-svg{z-index:70;width:100%;height:var(--device-safe-area-bottom,34px);pointer-events:none;display:block;position:absolute;bottom:0;left:0;right:0}.android-navigation-bar{z-index:70;width:428px;height:var(--device-safe-area-bottom,48px);pointer-events:none;-webkit-user-drag:none;display:block;position:absolute;bottom:-1px;left:-1px}h1,h2,p{margin:0}h1{letter-spacing:0;font-size:26px;line-height:1.08}h2{font-size:15px}p{color:#555;font-size:14px;line-height:1.45}.field-label{color:#555;font-size:13px;font-weight:800}.mobile-field{gap:8px;display:grid}.mobile-field input{color:#151515;background:#fff;border:1px solid #0000001a;border-radius:8px;outline:0;width:100%;min-height:44px;padding:0 12px}.mobile-field input:focus{box-shadow:none;border-color:#00000029}.device-screen .mobile-field input:focus,.device-screen .mobile-field input:focus-visible{border-color:#0000001f;box-shadow:none!important;outline:0!important}.sheet-overlay{z-index:20;background:#00000057;position:absolute;inset:0}.bottom-sheet{z-index:21;touch-action:none;background:#fff;border-radius:22px 22px 0 0;flex-direction:column;min-height:260px;display:flex;position:absolute;left:0;right:0;overflow:hidden;box-shadow:0 -16px 48px #0003}.sheet-handle-zone{touch-action:none;place-items:center;height:30px;display:grid}.sheet-handle{background:#c9c9c4;border-radius:999px;width:42px;height:5px}.sheet-header{gap:4px;padding:0 18px 14px;display:grid}.sheet-title{margin:0;font-size:18px;font-weight:900}.sheet-description{color:#737373;margin:0;font-size:13px;line-height:1.35}.sheet-content{padding:0 18px 24px;overflow:auto}.keyboard-dock{z-index:30;height:339px;box-shadow:none;pointer-events:none;will-change:transform;background:#d8d9de;border-radius:32px 32px 0 0;padding:0;position:absolute;bottom:-1px;left:0;right:0;overflow:hidden}.keyboard-dock[data-platform=android]{background:#f3f2f6;border-radius:0;box-shadow:0 -1px 2px #00000014}.keyboard-dock[data-visible=true]{pointer-events:auto}.keyboard-asset{z-index:1;border-radius:inherit;object-fit:cover;object-position:center bottom;-webkit-user-drag:none;pointer-events:none;width:100%;height:100%;display:block;position:relative}.keyboard-dock[data-platform=android] .keyboard-asset{object-fit:fill;border-radius:0}@font-face{font-family:Cormorant Garamond Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/cormorant-garamond-latin-wght-normal-CUoBjw-S.woff2)format("woff2-variations")}@font-face{font-family:Cormorant Garamond Variable;font-style:italic;font-display:swap;font-weight:300 700;src:url(/assets/cormorant-garamond-latin-wght-italic-C-nL33vl.woff2)format("woff2-variations")}.wedding-screen{--wedding-viewport-height:852px;--ink:#17130f;--paper:#f7f2e8;--paper-bright:#fffdf8;--burgundy:#781b27;--pink:#df0b5b;--muted:#756f68;--ink-soft:#504a45;--paper-rule:#17130f24;--photo-rule:#17130f12;--layout-inset:28px;--layout-section-narrative:92px;--layout-section-functional:84px;--layout-group-gap:24px;--layout-display-gap:40px;--font-editorial:"Cormorant Garamond Variable", "Times New Roman", serif;--font-serif-zh:"Songti SC", "STSong", "Noto Serif CJK SC", serif;--font-ui:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", ui-sans-serif, system-ui, sans-serif;background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-kerning:normal;text-rendering:optimizelegibility}.wedding-page{background:var(--paper);min-height:100%;overflow:hidden}.wedding-page h1,.wedding-page h2,.wedding-page p{margin:0}.wedding-page h1,.wedding-page h2{font-synthesis:none;font-feature-settings:"palt" 1}.wedding-page img{width:100%;display:block}.wedding-visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.lettering-image{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;height:auto}.hero-section{height:var(--wedding-viewport-height);color:#fff;background:#171513;position:relative;overflow:hidden}.hero-image{object-fit:cover;object-position:50% 58%;height:100%;position:absolute;inset:0}.hero-shade{background:linear-gradient(#08070659 0%,#08070605 31%),linear-gradient(#08070605 61%,#080706a3 100%);position:absolute;inset:0}.hero-groom-light{clip-path:polygon(44% 36%,94% 36%,98% 88%,40% 88%);mix-blend-mode:screen;pointer-events:none;background:radial-gradient(34% 34% at 66% 60%,#afbbd224 0%,#707e9a0e 48%,#0000 78%);position:absolute;inset:0}.hero-content{z-index:1;box-sizing:border-box;text-align:center;text-shadow:0 2px 16px #0000005c;flex-direction:column;justify-content:space-between;height:100%;padding:64px 22px 30px;display:flex;position:relative}.hero-title-block{align-self:center;justify-items:center;display:grid;transform:translateY(-40px)}.hero-date{filter:drop-shadow(0 2px 6px #0000007a);width:min(172px,46vw);transform:rotate(-2deg)}.hero-title-block h1{filter:drop-shadow(0 2px 7px #0000006b);width:min(230px,64vw);margin-top:-2px;transform:rotate(-2deg)}.hero-subtitle{filter:drop-shadow(0 2px 6px #00000075);width:118px;transform:rotate(-.5deg);margin-top:-18px!important}.hero-meta{align-items:end;gap:12px;display:grid}.hero-names{grid-template-columns:1fr 1fr;gap:26px;display:grid}.hero-names>div{gap:5px;display:grid}.hero-names>div:first-child{text-align:left}.hero-names>div:last-child{text-align:right}.hero-names span{color:var(--pink);font-family:var(--font-editorial);letter-spacing:.065em;text-shadow:0 1px 6px #000000c7;font-size:20px;font-style:italic;font-weight:550}.hero-names strong{font-family:var(--font-serif-zh);letter-spacing:.1em;font-size:21px;font-weight:500}.hero-timing{color:#fffffff0;font-family:var(--font-editorial);letter-spacing:.1em;text-shadow:0 1px 6px #000000d1;grid-template-columns:repeat(3,auto);justify-content:center;align-items:center;column-gap:16px;font-size:13px;font-weight:600;display:grid}.hero-timing span+span{position:relative}.hero-timing span+span:before{content:"";opacity:.62;background:currentColor;border-radius:50%;width:2px;height:2px;position:absolute;top:50%;left:-10px;transform:translateY(-50%)}.hero-scroll-hint{color:#ffffffeb;letter-spacing:.2em;opacity:.76;justify-content:center;align-items:center;gap:5px;min-height:16px;font-size:9px;font-weight:500;display:inline-flex}.hero-scroll-hint svg{width:14px;height:14px}.mobile-app-viewport[data-platform=android] .wedding-screen{--wedding-viewport-height:904px}.music-control{z-index:30;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#14121080;border:1px solid #ffffffc7;border-radius:50%;place-items:center;width:46px;height:46px;padding:0;transition:background .18s,transform .18s;display:grid;position:absolute;top:58px;right:18px}.music-control svg{width:19px;height:19px}.music-control:active{transform:scale(.94)}.music-control.is-playing{background:var(--pink)}.music-control:disabled{cursor:not-allowed;opacity:.68}.section-pad{padding-right:var(--layout-inset);padding-left:var(--layout-inset)}.eyebrow,.section-en{color:var(--muted);font-family:var(--font-editorial);font-optical-sizing:auto;letter-spacing:.22em;font-size:11px;font-weight:600}.invitation-intro{padding-top:var(--layout-section-narrative);background:var(--paper-bright);text-align:center;padding-bottom:96px}.invitation-intro h1{font-family:var(--font-serif-zh);letter-spacing:.1em;text-wrap:balance;margin-top:0;font-size:38px;font-weight:500;line-height:1.25}.invitation-intro .eyebrow{justify-content:center;align-items:center;gap:12px;margin-top:16px;display:flex}.invitation-intro .eyebrow:before,.invitation-intro .eyebrow:after{background:var(--paper-rule);content:"";width:28px;height:1px}.intro-copy{color:var(--ink-soft);font-family:var(--font-serif-zh);letter-spacing:.075em;font-size:15px;line-height:2.2;margin-top:34px!important}.hand-note{color:var(--pink);font-family:var(--font-editorial);letter-spacing:.025em;font-size:24px;font-style:italic;font-weight:500;margin-top:32px!important}.moon-section{background:var(--paper-bright);color:var(--ink);text-align:center;padding-top:64px;padding-bottom:88px}.moon-identity{margin-bottom:32px}.moon-names{font-family:var(--font-serif-zh);letter-spacing:.1em;font-size:23px;margin-top:20px!important}.moon-names span{color:var(--burgundy);font-family:var(--font-editorial);margin:0 12px;font-size:18px;font-style:italic}.moon-artwork-frame{background:#050505;margin:0 18px;position:relative;overflow:hidden}.moon-artwork-source,.moon-artwork-half img{aspect-ratio:4/3;object-fit:cover}.moon-artwork-source{visibility:hidden}.moon-artwork-half{pointer-events:none;position:absolute;inset:0;overflow:hidden}.moon-artwork-half img{height:100%;transform:scale(var(--moon-scale,1));transition:transform 80ms linear}.moon-artwork-half--left{clip-path:inset(0 50% 0 0);transform:translate3d(var(--moon-left-offset,0), 0, 0)}.moon-artwork-half--right{clip-path:inset(0 0 0 50%);transform:translate3d(var(--moon-right-offset,0), 0, 0)}.moon-copy{padding-top:48px}.moon-copy:after{content:"";border-top:1px solid #781b2761;border-radius:50%;width:54px;height:11px;margin:34px auto 0;display:block;transform:rotate(-7deg)}.moon-kicker{color:var(--ink-soft);font-family:var(--font-serif-zh);letter-spacing:.12em;font-size:16px}.moon-en{color:#4a4540;font-family:var(--font-editorial);letter-spacing:.045em;text-transform:none;font-size:20px;font-style:italic;font-weight:500;margin-top:16px!important}.moon-copy h2{font-family:var(--font-serif-zh);letter-spacing:.1em;text-wrap:balance;margin-top:16px;font-size:25px;font-weight:400;line-height:1.4}.story-gallery{color:var(--ink);background:#fffaf2;position:relative;overflow:hidden}.story-gallery-head{background:#151311;padding:82px 24px 50px}.story-gallery-head img{filter:invert()brightness(1.08);opacity:.94;width:min(86%,380px);margin:0 auto;display:block}.story-gallery figure{margin:0}.story-gallery-hero,.story-gallery-immersive{aspect-ratio:3/2;background:#08100b;width:100%;overflow:hidden}.story-gallery-hero img,.story-gallery-immersive img,.story-gallery-portrait img,.story-gallery-color-notes img{width:100%;height:100%;display:block}.story-gallery-hero img,.story-gallery-immersive img,.story-gallery-portrait img{object-fit:cover}.story-gallery-hero img{object-position:50% 50%}.story-gallery-paper,.story-gallery-finale{background:#fffaf2}.story-gallery-paper{padding:72px 0 76px}.story-gallery-intro{grid-template-columns:1px minmax(0,1fr);align-items:center;gap:22px;padding:0 30px 52px;display:grid}.story-gallery-intro>span{border-left:1px solid #781b27b8;height:46px;display:block}.story-gallery-intro-lead{color:var(--ink-soft);font-family:var(--font-serif-zh);letter-spacing:.08em;margin:0;font-size:16px;font-weight:400;line-height:1.8}.story-gallery-intro-copy{min-width:0}.story-gallery-prose{color:var(--ink-soft);font-family:var(--font-serif-zh);letter-spacing:.065em;font-size:15px;font-weight:400;line-height:2.05}.story-gallery-intro-copy .story-gallery-prose{color:var(--muted);margin-top:18px}.story-gallery-pair{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px;padding:0 24px;display:grid}.story-gallery-portrait{box-sizing:border-box;background:#f0eadd;outline:1px solid #17130f1a;overflow:hidden;box-shadow:0 10px 26px #28211a0e}.story-gallery-portrait--arch,.story-gallery-portrait--bridge{aspect-ratio:1}.story-gallery-portrait--bridge{margin-top:8px!important}.story-gallery-portrait--arch img{object-position:50% 45%}.story-gallery-portrait--bridge img{object-position:50% 43%}.story-gallery-bridge-copy{text-align:right;width:calc(100% - 60px);margin:56px 30px 0 auto}.story-gallery-immersive img{object-position:50% 50%}.story-gallery-finale{padding:0 0 96px}.story-gallery-finale-copy{text-align:center;padding:92px 28px 48px}.story-gallery-finale-copy>span{border-top:1px solid #781b27b8;width:38px;margin:0 auto 24px;display:block}.story-gallery-finale-copy p{margin:0}.story-gallery-finale-en{color:var(--burgundy);font-family:var(--font-editorial);letter-spacing:.2em;font-size:11px;font-weight:600}.story-gallery-finale-zh{color:var(--ink);font-family:var(--font-serif-zh);letter-spacing:.09em;font-size:19px;font-weight:400;line-height:1.7;margin-top:18px!important}.story-gallery-finale-copy .story-gallery-finale-body{color:var(--muted);margin-top:22px}.story-gallery-color-notes{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0 24px;display:grid}.story-gallery-color-notes figure{aspect-ratio:1;background:var(--paper);outline:1px solid #17130f14;overflow:hidden}.story-gallery-color-notes img{object-fit:contain}.cat-witness-section{padding-top:var(--layout-section-narrative);background:var(--paper-bright);text-align:center;padding-bottom:96px;overflow:hidden}.cat-witness-section h2{font-family:var(--font-serif-zh);letter-spacing:.1em;text-wrap:balance;margin-top:0;font-size:31px;font-weight:500;line-height:1.35}.cat-witness-section .eyebrow{margin-top:13px}.cat-portraits{margin-top:var(--layout-display-gap);justify-content:center;padding-bottom:12px;display:flex;position:relative}.cat-portrait{background:#f4efe5;border:1px solid #781b2733;border-radius:50%;width:136px;height:136px;margin:0;position:relative;overflow:hidden;box-shadow:0 8px 22px #231b1409}.cat-portrait+.cat-portrait{margin-left:-4px}.cat-portrait:after{content:none}.cat-portrait img{object-fit:cover;object-position:center 25%;transform-origin:50% 34%;width:100%;height:100%;transform:scale(1.72)}.cat-portrait-warm{z-index:2;transform:translateY(1px)rotate(-1.5deg)}.cat-portrait-tuxedo{z-index:1;transform:translateY(1px)rotate(.75deg)}.cat-portrait-tuxedo img{object-position:center 18%;transform-origin:50% 32%;transform:translateY(16px)scale(1.34)}.cat-story{color:var(--ink-soft);font-family:var(--font-serif-zh);letter-spacing:.065em;font-size:14px;line-height:2.1;margin-top:24px!important}.cat-signature{color:var(--pink);font-family:var(--font-editorial);letter-spacing:.02em;font-size:21px;font-style:italic;font-weight:500;margin-top:20px!important}.schedule-section{padding-top:var(--layout-section-functional);background:var(--paper);padding-bottom:96px}.schedule-atmosphere{aspect-ratio:4/3;background:0 0;border:0;width:min(55%,220px);margin:48px 0 0;padding:0;overflow:hidden}.schedule-atmosphere>img{object-fit:contain;object-position:left bottom;width:100%;height:100%}.schedule-heading{color:var(--ink)}.schedule-heading .hand-note{color:var(--pink);font-size:24px;margin-top:0!important}.schedule-heading h2{font-family:var(--font-serif-zh);letter-spacing:.1em;text-wrap:balance;margin-top:32px;font-size:34px;font-weight:500;line-height:1.3}.schedule-heading .section-en{color:var(--muted);margin-top:7px!important}.date-lockup{width:100%;margin-top:var(--layout-display-gap);color:var(--burgundy);font-family:var(--font-editorial);border-bottom:1px solid #781b2780;grid-auto-flow:column;justify-content:start;align-items:baseline;gap:8px;padding-bottom:19px;display:grid}.wedding-page.is-motion-ready .schedule-section .date-lockup{clip-path:inset(0 0 100%);opacity:.72;transition:clip-path .56s cubic-bezier(.16,1,.3,1),opacity .36s cubic-bezier(.16,1,.3,1),transform .56s cubic-bezier(.16,1,.3,1);transform:translateY(12px)}.wedding-page.is-motion-ready .schedule-section.is-motion-visible .date-lockup{clip-path:inset(0);opacity:1;transform:translateY(0)}.date-day{font-size:62px;font-weight:500;line-height:.84}.date-month{font-size:30px;font-weight:550;line-height:1}.date-year,.date-slash{font-size:20px;font-weight:550;line-height:1}.date-slash{opacity:.72}.schedule-list{border-top:1px solid var(--paper-rule);margin-top:32px}.schedule-list>div{border-bottom:1px solid var(--paper-rule);grid-template-columns:86px 1fr;align-items:baseline;padding:17px 0;display:grid}.wedding-page.is-motion-ready .schedule-list>div{opacity:0;transition:opacity .36s cubic-bezier(.16,1,.3,1),transform .42s cubic-bezier(.16,1,.3,1);transform:translateY(8px)}.wedding-page.is-motion-ready .schedule-section.is-motion-visible .schedule-list>div{opacity:1;transform:translateY(0)}.wedding-page.is-motion-ready .schedule-section.is-motion-visible .schedule-list>div:first-child{transition-delay:.1s}.wedding-page.is-motion-ready .schedule-section.is-motion-visible .schedule-list>div:nth-child(2){transition-delay:.16s}.wedding-page.is-motion-ready .schedule-section.is-motion-visible .schedule-list>div:nth-child(3){transition-delay:.22s}.schedule-list span{font-family:var(--font-editorial);font-variant-numeric:tabular-nums;font-size:23px;font-weight:550}.schedule-list p{color:#5f5953;letter-spacing:.08em;font-size:14px}.calendar-button,.submit-button{background:var(--ink);color:#fff;letter-spacing:.12em;border:0;border-radius:0;justify-content:center;align-items:center;gap:9px;width:100%;min-height:52px;font-size:15px;font-weight:550;transition:background .18s,transform .14s;display:flex}.calendar-button:active,.submit-button:active{transform:scale(.985)}.calendar-button{margin-top:28px}.calendar-button svg{width:18px;height:18px}.submit-button:disabled{opacity:.72}.location-card{border-top:1px solid #17130f2e;margin-top:30px;padding:24px 0 0}.location-card p{font-family:var(--font-serif-zh);font-size:22px}.location-card span,.location-card small{color:var(--muted);margin-top:8px;display:block}.location-card span{font-size:14px}.location-card small{font-size:11px}.location-card a{color:var(--burgundy);border-bottom:1px solid;margin-top:18px;font-size:13px;text-decoration:none;display:inline-block}.rsvp-section{padding-top:var(--layout-section-functional);background:var(--paper-bright);padding-bottom:96px}.rsvp-section h2{font-family:var(--font-serif-zh);letter-spacing:.1em;text-wrap:balance;margin-top:0;font-size:36px;font-weight:500;line-height:1.3}.rsvp-section .eyebrow{align-items:center;gap:12px;margin-top:12px;display:flex}.rsvp-section .eyebrow:after{background:var(--paper-rule);content:"";width:52px;height:1px}.rsvp-lead{color:var(--ink-soft);font-family:var(--font-serif-zh);letter-spacing:.04em;font-size:14px;margin-top:16px!important}.rsvp-form{margin-top:40px}.rsvp-form label,.rsvp-form fieldset{border:0;margin:0 0 25px;padding:0;display:block}.rsvp-form label>span,.rsvp-form legend{color:var(--ink);letter-spacing:.08em;margin-bottom:10px;font-size:13px;font-weight:600;display:block}.rsvp-form input,.rsvp-form textarea{width:100%;color:var(--ink);font-family:var(--font-ui);background:0 0;border:0;border-bottom:1px solid #17130f94;border-radius:0;outline:none;font-size:16px;line-height:1.5;transition:border-color .16s}.rsvp-form input:focus,.rsvp-form textarea:focus{border-color:var(--burgundy);box-shadow:0 1px 0 var(--burgundy)}.rsvp-form input{height:46px;padding:0}.rsvp-form textarea{resize:none;min-height:88px;padding:11px 0}.rsvp-form input::placeholder,.rsvp-form textarea::placeholder{color:#68615b}.attendance-toggle{grid-template-columns:1fr 1fr;gap:12px;display:grid}.attendance-toggle button{min-height:46px;color:var(--ink);font-family:var(--font-ui);isolation:isolate;background:0 0;border:1px solid #17130f6b;border-radius:0;font-size:14px;transition:border-color .16s,background .16s,color .16s,transform .14s;position:relative;overflow:hidden}.attendance-toggle button:before{z-index:-1;background:var(--burgundy);content:"";transform-origin:0;transition:transform .22s cubic-bezier(.16,1,.3,1);position:absolute;inset:0;transform:scaleX(0)}.attendance-toggle button:active{transform:scale(.985)}.attendance-toggle button.is-selected{border-color:var(--burgundy);background:var(--burgundy);color:#fff}.attendance-toggle button.is-selected:before{transform:scaleX(1)}.wedding-page button:focus-visible,.wedding-page a:focus-visible{outline:2px solid var(--pink);outline-offset:3px}.guest-counts{grid-template-columns:1fr 1fr;gap:18px;display:grid}.guest-counts .count-summary{color:var(--ink-soft);grid-column:1/-1;font-size:12px;margin-top:-10px!important}.form-error{color:var(--burgundy);border-top:1px solid #781b2770;border-bottom:1px solid #781b2770;padding:10px 0;font-size:13px;font-weight:600;line-height:1.55;margin:-4px 0 18px!important}.privacy-note{color:var(--ink-soft);text-align:center;font-size:10px;margin-top:13px!important}.rsvp-confirmation{margin-top:32px}.rsvp-confirmation-copy{border:1px solid var(--paper-rule);background:#ffffff94;margin-bottom:20px;padding:18px}.rsvp-confirmation-copy p{color:var(--pink);font-family:var(--font-editorial);letter-spacing:.16em;font-size:11px}.rsvp-confirmation-copy h3{font-family:var(--font-serif-zh);margin:8px 0 0;font-size:20px;font-weight:500}.rsvp-confirmation-copy span{color:var(--muted);margin-top:8px;font-size:11px;line-height:1.7;display:block}.feishu-form-frame{border:1px solid var(--paper-rule);background:#fff;min-height:680px;overflow:hidden}.feishu-form-frame iframe{background:#fff;border:0;width:100%;min-height:680px;display:block}.rsvp-confirmation-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;display:grid}.rsvp-confirmation-actions button,.rsvp-confirmation-actions a{min-height:44px;color:var(--ink);font-family:var(--font-ui);background:0 0;border:1px solid #17130f3d;border-radius:0;place-items:center;font-size:13px;text-decoration:none;display:grid}.rsvp-confirmation-actions a{border-color:var(--burgundy);background:var(--burgundy);color:#fff}.wedding-footer{padding:64px 28px calc(var(--mobile-safe-area-height) + 48px);color:#fff;text-align:center;background:#151311}.wedding-footer span{font-family:var(--font-serif-zh);letter-spacing:.1em;font-size:20px}.wedding-footer b{color:var(--pink);font-family:var(--font-editorial);margin:0 12px;font-size:18px}.wedding-footer p{color:#ffffff94;font-family:var(--font-editorial);letter-spacing:.18em;margin-top:18px;font-size:14px;font-weight:500}.device-screen:has(.wedding-screen)>.keyboard-dock[data-visible=false]{visibility:hidden}@media (prefers-reduced-motion:no-preference){.wedding-page.is-motion-ready .cat-witness-section.is-motion-visible .cat-portrait{transition:transform 1.15s cubic-bezier(.16,1,.3,1)}.wedding-page.is-motion-ready .cat-portrait-warm{transform:translate(-34px)translateY(1px)rotate(-1.5deg)}.wedding-page.is-motion-ready .cat-portrait-tuxedo{transform:translate(34px)translateY(1px)rotate(.75deg)}.wedding-page.is-motion-ready .cat-witness-section.is-motion-visible .cat-portrait-warm{transform:translate(0)translateY(1px)rotate(-1.5deg)}.wedding-page.is-motion-ready .cat-witness-section.is-motion-visible .cat-portrait-tuxedo{transform:translate(0)translateY(1px)rotate(.75deg)}.wedding-page.is-motion-ready .hero-date .lettering-image{animation:.62s cubic-bezier(.16,1,.3,1) 40ms both hero-ink-reveal}.wedding-page.is-motion-ready .hero-title-block h1 .lettering-image{animation:.72s cubic-bezier(.16,1,.3,1) .12s both hero-ink-reveal}.wedding-page.is-motion-ready .hero-subtitle .lettering-image{animation:.54s cubic-bezier(.16,1,.3,1) .29s both hero-ink-reveal}}@media (prefers-reduced-motion:reduce){.music-control,.calendar-button,.submit-button,.attendance-toggle button,.attendance-toggle button:before,.rsvp-form input,.rsvp-form textarea{transition-duration:.01ms!important}.music-control,.hero-scroll-hint svg{animation:none!important}}@keyframes hero-ink-reveal{0%{clip-path:inset(0 100% 0 0);opacity:.28}to{clip-path:inset(0);opacity:1}}
