@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.block{display:block}.hidden{display:none}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@font-face{font-family:"Wedding Sans 1";src:url(/fonts/source-han-sans-cn-medium-1.ttf)format("truetype");font-display:swap}@font-face{font-family:"Wedding Sans 2";src:url(/fonts/source-han-sans-cn-medium-2.ttf)format("truetype");font-display:swap}@font-face{font-family:"Wedding Serif 1";src:url(/fonts/source-han-serif-cn-medium-1.ttf)format("truetype");font-display:swap}@font-face{font-family:"Wedding Serif 2";src:url(/fonts/source-han-serif-cn-medium-2.ttf)format("truetype");font-display:swap}@font-face{font-family:SourceHanSansCN-Medium_1;src:url(/invite4/fonts/source-han-sans-1.ttf)format("truetype");font-display:swap}@font-face{font-family:SourceHanSansCN-Medium_2;src:url(/invite4/fonts/source-han-sans-2.ttf)format("truetype");font-display:swap}@font-face{font-family:SourceHanSerifCN-Medium_1;src:url(/invite4/fonts/source-han-serif-1.ttf)format("truetype");font-display:swap}@font-face{font-family:SourceHanSerifCN-Medium_2;src:url(/invite4/fonts/source-han-serif-2.ttf)format("truetype");font-display:swap}@font-face{font-family:SourceHanSerifCN-Medium_3;src:url(/invite4/fonts/source-han-serif-extra.ttf)format("truetype");font-display:swap}@font-face{font-family:"Siyuan Song Regular 1";src:url(/invite4/fonts/siyuan-song-regular-1.ttf)format("truetype");font-display:swap}@font-face{font-family:"Siyuan Song Regular 2";src:url(/invite4/fonts/siyuan-song-regular-2.ttf)format("truetype");font-display:swap}@font-face{font-family:Xin Yahei Cover;src:url(/invite4/fonts/xinyahei-cover.ttf)format("truetype");font-display:swap}@font-face{font-family:sacramento_2;src:url(/invite4/fonts/sacramento-2.ttf)format("truetype");font-display:swap}@font-face{font-family:NewYork_1;src:url(/invite4/fonts/newyork.ttf)format("truetype");font-display:swap}@font-face{font-family:NewYork_2;src:url(/invite4/fonts/newyork.ttf)format("truetype");font-display:swap}@font-face{font-family:Tahu_1;src:url(/invite4/fonts/tahu.ttf)format("truetype");font-display:swap}@font-face{font-family:Tahu_2;src:url(/invite4/fonts/tahu.ttf)format("truetype");font-display:swap}@font-face{font-family:Wedding Sacramento;src:url(/fonts/sacramento-regular.ttf)format("truetype");font-display:swap}@font-face{font-family:Wedding NewYork;src:url(/fonts/newyork-regular.ttf)format("truetype");font-display:swap}@font-face{font-family:Wedding Tahu;src:url(/fonts/tahu-regular.ttf)format("truetype");font-display:swap}:root{--paper:#f7f5ef;--surface:#fff;--ink:#1f2923;--muted:#606b64;--crimson:#851b2a;--crimson-dark:#66121f;--green:#204d3a;--green-soft:#dfe9e1;--gold:#98651f;--line:#d9ddd8;--danger:#b42318;--success:#176b43;--shadow:0 12px 36px #1f29231a;--radius:6px;--content:min(1120px, calc(100% - 40px));--font-display:"Songti SC", "STSong", "Noto Serif CJK SC", Georgia, serif;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html{overscroll-behavior:none;scroll-behavior:smooth;-webkit-user-select:none;user-select:none;max-width:100%;overflow-x:clip}body{overscroll-behavior:none;background:var(--paper);max-width:100%;color:var(--ink);font-family:var(--font-body);letter-spacing:0;margin:0;font-size:16px;line-height:1.6;overflow-x:clip}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;letter-spacing:0}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}img{max-width:100%}:focus-visible{outline-offset:3px;outline:3px solid #851b2a59}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.eyebrow{color:var(--crimson);text-transform:uppercase;margin:0 0 8px;font-size:.75rem;font-weight:750}h1,h2,h3,p{overflow-wrap:anywhere}h1,h2{font-family:var(--font-display);font-weight:600;line-height:1.16}h1{font-size:clamp(2.4rem,6vw,5.4rem)}h2{font-size:clamp(1.8rem,3.6vw,3.2rem)}label{color:var(--ink);gap:7px;font-size:.9rem;font-weight:650;display:grid}input,select,textarea{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:100%;min-height:48px;color:var(--ink);padding:11px 13px;transition:border-color .18s,box-shadow .18s}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 3px #204d3a21}input::placeholder,textarea::placeholder{color:#838b86}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:8px;font-size:.9rem;font-weight:650}.primary-button,.secondary-button{border-radius:var(--radius);justify-content:center;align-items:center;gap:9px;min-height:48px;padding:11px 18px;font-weight:750;transition:background .18s,color .18s,border-color .18s,box-shadow .18s;display:inline-flex}.primary-button{border:1px solid var(--crimson);background:var(--crimson);color:#fff;box-shadow:0 8px 18px #851b2a2e}.primary-button:hover:not(:disabled){background:var(--crimson-dark);border-color:var(--crimson-dark)}.secondary-button{border:1px solid var(--line);background:var(--surface);color:var(--ink)}.secondary-button:hover:not(:disabled){border-color:var(--green);color:var(--green)}.icon-button{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--ink);border-radius:50%;place-items:center;transition:color .18s,border-color .18s,background .18s;display:inline-grid}.icon-button:hover{border-color:var(--green);color:var(--green);background:#f2f7f3}.icon-button.danger-button{color:var(--danger);border-color:#e3b8b2}.icon-button.danger-button:hover{border-color:var(--danger);color:var(--danger);background:#fff1ef}.form-error{color:var(--danger);margin:0;font-size:.9rem;font-weight:600}.form-success{color:var(--success);align-items:center;gap:8px;margin:0;font-size:.9rem;font-weight:700;display:flex}.field-grid{gap:16px;display:grid}.two-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.background-music-control{top:max(10px, env(safe-area-inset-top));right:max(10px, env(safe-area-inset-right));z-index:103;width:32px;height:32px;box-shadow:none;background:#d3b69454;border:0;border-radius:50%;place-items:center;padding:0;display:grid;position:fixed;overflow:hidden}.background-music-control:before{content:"";border-radius:50%;position:absolute;inset:-6px}.background-music-control:focus-visible{outline-offset:2px;outline:2px solid #fff}.background-music-icon{background:url(/invite4/music-icon.png) 50%/100% 100% no-repeat;width:100%;height:100%;display:block;position:relative}.background-music-icon:after{content:"";background:#fff;width:100%;height:2px;position:absolute;top:50%;left:0;transform:rotate(45deg)}.background-music-control[data-playing=true] .background-music-icon{animation:5s linear infinite background-music-spin}.background-music-control[data-playing=true] .background-music-icon:after{display:none}@keyframes background-music-spin{to{transform:rotate(360deg)}}.invitation-page{background:#f7f3eb;font-family:"Wedding Sans 1","Wedding Sans 2",PingFang SC,Microsoft YaHei,sans-serif}#invitation-details{background-color:#f7f3eb;background-image:url(/invitation-decor/paper-texture.webp);background-position:top;background-repeat:repeat-y;background-size:min(1170px,100vw)}.invitation-page h1,.invitation-page h2,.invitation-page h3{font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);font-weight:400}.invitation-hero{isolation:isolate;background-color:#f7f3eb;background-image:url(/invitation-decor/paper-texture.webp);background-position:top;background-repeat:repeat-y;background-size:min(1170px,100vw);min-height:min(88dvh,880px);position:relative;overflow:hidden}.invitation-hero>img{object-fit:cover;object-position:center 56%;z-index:-1}.invitation-hero:after{content:"";z-index:-1;pointer-events:none;background:0 0;position:absolute;inset:0}.hero-copy{width:var(--content);flex-direction:column;justify-content:center;align-items:flex-start;min-height:min(88dvh,880px);margin:0 auto;padding:12vh 0 110px;display:flex}.hero-kicker{color:#263229;margin:0 0 18px;font-size:.83rem;font-weight:400}.hero-copy h1{color:#243229;text-wrap:balance;text-shadow:0 1px 18px #ffffffd1;max-width:720px;margin:0;font-family:"Wedding Sans 1","Wedding Sans 2",sans-serif;font-size:4.6rem;font-weight:400}.script-accent{color:#a40f1b;margin:0;font-family:Wedding Tahu,Segoe Print,cursive;font-size:1.45rem;line-height:1.45}.hero-message{max-width:470px;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);color:#2c3a31;text-shadow:0 1px 10px #fff;margin:26px 0;font-size:1.28rem}.hero-meta{color:#263b2e;flex-wrap:wrap;gap:10px 28px;font-weight:700;display:flex}.hero-meta span{align-items:center;gap:8px;display:inline-flex}.wedding-photo{isolation:isolate;background:#e7ddd1;position:relative;overflow:hidden}.wedding-photo img{object-fit:cover}.editorial-intro{text-align:center;justify-items:center;width:min(760px,100% - 40px);margin:0 auto;padding:94px 0 112px;display:grid}.record-composition{aspect-ratio:1;place-items:center;width:min(295px,70vw);margin:24px 0 34px;display:grid;position:relative}.photo-record{z-index:3;border-radius:50%;position:absolute;inset:15.5%}.record-ring{z-index:2;object-fit:cover;clip-path:circle(49.6%);pointer-events:none;transform-origin:50%;backface-visibility:hidden;will-change:transform;border-radius:50%;width:100%;height:100%;animation:3s linear infinite record-ring-spin;position:absolute;inset:0;overflow:hidden}.record-welcome-script{z-index:4;object-fit:contain;opacity:1;pointer-events:none;width:77%;height:auto;position:absolute;top:-8%;left:-4%;transform:none}.record-love-script{z-index:4;object-fit:contain;opacity:1;pointer-events:none;width:45%;height:auto;position:absolute;bottom:8%;right:10%;transform:none}@keyframes record-ring-spin{0%{transform:translate(0)rotate(0)}to{transform:translate(0)rotate(360deg)}}.decor-wedding-invitation{object-fit:contain;width:206px;height:auto}.decor-dancing-guests{object-fit:contain;width:198px;height:auto;margin:24px 0 10px}.section-bracket{color:#000;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:1.04px;opacity:1;margin:22px 0 34px;padding:5px 0;font-size:14px;font-weight:400;line-height:2.2}.photo-primary{aspect-ratio:2/3;width:min(496px,80%)}.couple-intro{grid-template-columns:repeat(2,min(130px,33.333vw));justify-content:center;column-gap:min(34px,8.667vw);margin:12px 0 56px;display:grid;position:relative}.couple-person{justify-items:center;display:grid}.photo-avatar{aspect-ratio:1;border-radius:50%;width:min(130px,33.333vw)}.couple-name{color:#000;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:min(2.08px,.533vw);margin-top:min(23px,5.9vw);font-size:min(15.6px,4vw);font-weight:400;line-height:1}.couple-role{color:#000;width:min(98.8px,25.333vw);font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:min(2.08px,.533vw);margin-top:min(5px,1.282vw);font-size:14px;line-height:1}.couple-person-groom .couple-role{text-align:left;justify-self:start;transform:translate(calc(-1*min(9.4px,2.4vw)))}.couple-person-bride .couple-role{text-align:right;justify-self:end;transform:translate(min(9.4px,2.4vw))}.couple-rings{object-fit:contain;width:min(37.5px,9.6vw);height:auto;position:absolute;top:calc(min(130px,33.333vw) + min(13.75px,3.526vw));left:50%;transform:translate(-50%)}.decor-plenty-quote{object-fit:contain;width:190px;height:auto;margin:0 0 24px}.editorial-intro h2{margin:0;font-size:2.8rem}.editorial-intro .future-vow{color:#000;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:min(1.04px,.267vw);white-space:nowrap;font-size:14px;font-weight:400;line-height:2.2}.photo-wide-intro{aspect-ratio:3/2;width:min(700px,80%);margin-top:72px}.story-section{justify-items:center;gap:58px;width:min(920px,100% - 40px);margin:0 auto;padding-bottom:120px;display:grid}.reference-story-block{justify-items:center;gap:min(10px,2.564vw);width:100%;display:grid}.story-copy{width:100%;max-width:660px}.story-copy-centered{text-align:center}.story-date-title{color:#000;width:100%;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:min(3.12px,.8vw);grid-template-columns:minmax(0,119px) minmax(70px,92px) minmax(0,119px);justify-content:center;align-items:center;margin:0;font-size:min(15.6px,4vw);font-weight:400;line-height:1;display:grid}.story-date-title>span:first-child{text-align:right}.story-date-title>span:last-child{text-align:left}.story-date-title time{color:#000;letter-spacing:min(3.12px,.8vw);flex-direction:column;justify-content:space-between;align-items:center;min-height:min(70px,17.95vw);font-family:Wedding NewYork,Georgia,serif;font-size:min(17.68px,4.533vw);font-style:normal;line-height:1;display:flex;position:relative}.story-date-title time i{color:#9b0000;font:inherit;font-style:oblique;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.story-pinyin{color:#9b0000;letter-spacing:min(1.04px,.267vw);margin:min(20px,5.128vw) 0 0;font-family:Wedding Sacramento,cursive;font-size:min(14.56px,3.733vw);line-height:1}.photo-portrait{aspect-ratio:773/1147;background:0 0;width:min(258px,66.133vw)}.photo-portrait img{-webkit-mask-image:linear-gradient(#000 0% 76%,#000000eb 83%,#0000008c 93%,#0000 100%);mask-image:linear-gradient(#000 0% 76%,#000000eb 83%,#0000008c 93%,#0000 100%)}.photo-portrait-two{aspect-ratio:2/3;width:min(258px,66.133vw)}.photo-wide{aspect-ratio:932/623;width:min(760px,80%)}.story-quote{color:#000;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:min(1.04px,.267vw);text-align:center;margin:0;font-size:14px;line-height:1.9}.story-knowing{color:#000;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:min(1.04px,.267vw);text-align:center;margin:0;font-size:14px;line-height:2.2}.decor-happily{object-fit:contain;width:min(266px,68.2vw);height:auto;margin-top:min(20px,5.128vw)}.gallery-story{grid-template-columns:repeat(12,minmax(0,1fr));gap:26px;width:min(960px,100% - 40px);margin:0 auto;padding-bottom:124px;display:grid}.encounter-layout{grid-column:1/-1;grid-template-columns:min(70px,17.867vw) min(29px,7.436vw) min(200px,51.2vw);justify-self:start;align-items:start;margin-left:min(17px,4.359vw);display:grid}.encounter-poem{color:#000;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:min(1.04px,.267vw);text-align:center;grid-column:1;margin:min(36px,9.231vw) 0 0;font-size:14px;line-height:2.5}.encounter-photo{aspect-ratio:599/901;grid-column:3;width:min(200px,51.2vw)}.forever-gallery{aspect-ratio:390/684.32;grid-column:1/-1;justify-self:center;width:min(390px,100vw);margin-top:34px;position:relative}.forever-photo-primary{aspect-ratio:736/1107;width:62.933%;position:absolute;top:0;left:50%;transform:translate(-50%)}.forever-script{z-index:2;color:#9b0000;letter-spacing:0;text-align:right;white-space:nowrap;width:44%;margin:0;padding:5.2px;font-family:Wedding Tahu,Segoe Print,cursive;font-size:20.8px;line-height:1;position:absolute;top:57.905%;left:45.6%}.forever-photo-small{z-index:1;aspect-ratio:483/726;width:41.333%;position:absolute}.forever-photo-left{top:61.25%;left:6.933%}.forever-photo-right{top:64.591%;left:52.267%}.gallery-copy{color:#000;width:min(282px,72.267vw);font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:0;text-align:left;grid-column:1/-1;justify-self:center;margin:27px 0 0;padding:5.2px;font-size:14px;line-height:2.2}.gallery-wide-bottom{aspect-ratio:1041/695;grid-column:2/12;justify-self:center;width:80%;margin-top:26px}.orderly-countdown-block{grid-column:1/-1;justify-self:center;justify-items:center;width:min(390px,100vw);display:grid}.hunbei-countdown{place-items:center;width:100%;height:88px;margin-top:36px;display:grid}.countdown-grid{grid-template-columns:repeat(4,45px);justify-content:space-between;width:220px;display:grid}.countdown-unit{color:#fff;background:#7b0000;align-content:center;justify-items:center;width:45px;min-height:50px;padding:4px 0 5px;display:grid}.countdown-unit strong{color:#fff;min-width:0;font-family:"Wedding Sans 1", "Wedding Sans 2", var(--font-body);font-variant-numeric:tabular-nums;letter-spacing:0;text-align:center;font-size:18px;font-weight:400;line-height:24px}.countdown-unit span{color:#fff;font-family:"Wedding Sans 1", "Wedding Sans 2", var(--font-body);letter-spacing:0;font-size:10.67px;font-weight:400;line-height:16px}.decor-time-love{object-fit:contain;width:274px;height:auto;margin-top:28px;display:block}.time-orderly-copy{color:#000;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:0;text-align:center;margin:12px 0 0;padding:5.2px;font-size:14px;line-height:1}.decor-forever-begins{object-fit:contain;width:min(225px,100%);height:auto;margin-bottom:12px}.decor-section-label{object-fit:contain;width:138px;height:auto}.wedding-schedule{justify-items:center;width:min(390px,100vw);margin:0 auto;padding:0 0 80px;display:grid}.wedding-time-heading{width:100%;min-height:83px;position:relative}.decor-wedding-time{object-fit:contain;width:35.267%;height:auto;position:absolute;top:0;left:9.867%}.wedding-time-date{color:#000;width:72.267%;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:0;text-align:right;padding:5.2px;font-size:14px;line-height:2.2;position:absolute;top:17px;right:8%}.hunbei-calendar{color:#9b0000;width:289px;min-height:289px;padding:20px 0}.hunbei-calendar-title{font-family:"Wedding Sans 1", "Wedding Sans 2", var(--font-body);justify-content:space-between;align-items:flex-end;padding:0 42px 18px;line-height:1;display:flex}.hunbei-calendar-title>span:first-child{padding-bottom:3.5px;font-size:22px}.hunbei-calendar-title>span:last-child{font-size:22px}.hunbei-calendar-title b{font-size:51px;font-weight:400;position:relative;top:2px}.hunbei-calendar-main{padding:0 20.5px}.hunbei-calendar-weekdays{color:#fff;text-align:center;background:#9b0000;border-radius:12px;grid-template-columns:repeat(7,minmax(0,1fr));align-items:center;height:22px;padding:0 9px;display:grid}.hunbei-calendar-weekdays strong{font-family:"Wedding Sans 1", "Wedding Sans 2", var(--font-body);font-size:10.67px;font-weight:400}.hunbei-calendar-days{color:#666;text-align:center;grid-template-columns:repeat(7,minmax(0,1fr));padding:4.5px 9px 0;display:grid}.hunbei-calendar-days>span{height:22px;font-family:"Wedding Sans 1", "Wedding Sans 2", var(--font-body);font-variant-numeric:tabular-nums;place-items:center;margin-top:7px;font-size:11.56px;display:grid;position:relative}.hunbei-calendar-blank{visibility:hidden}.hunbei-wedding-day{z-index:1;color:#fff}.hunbei-wedding-day:before{content:"♥";z-index:-1;color:#9b0000;font-size:23px;line-height:1;animation:.8s infinite alternate hunbei-heart;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes hunbei-heart{to{transform:translate(-50%,-50%)scale(1.2)}}.hunbei-timeline{grid-template-columns:minmax(0,1fr) 62px minmax(0,1fr);align-items:start;width:min(338px,100% - 52px);margin-top:48px;display:grid}.hunbei-timeline>div{text-align:center;justify-items:center;min-width:0;display:grid}.hunbei-timeline img{object-fit:contain;height:auto}.timeline-floral-arch{width:54px}.timeline-rings{width:49px}.hunbei-timeline time{color:#9b0000;letter-spacing:0;margin-top:8px;font-family:Wedding NewYork,Georgia,serif;font-size:14px;line-height:1}.hunbei-timeline div>span{color:#000;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:0;margin-top:10px;font-size:14px;line-height:1}.hunbei-timeline>i{background:#999;width:62px;height:1px;margin-top:31px;display:block}.venue-section{background:0 0}.venue-details{width:min(390px,100vw);margin:0 auto;padding:0}.venue-address-block{width:100%;min-height:210px;position:relative}.decor-wedding-address{object-fit:contain;width:34.667%;height:auto;position:absolute;top:0;left:9.867%}.venue-copy{color:#000;width:82%;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:0;text-align:right;justify-items:end;display:grid;position:absolute;top:49px;right:8%}.venue-copy p,.venue-copy address{white-space:nowrap;margin:0;font-style:normal;font-weight:400}.venue-copy p{font-size:14px;line-height:2.2}.venue-copy address{font-size:10.67px;line-height:2.2}.venue-map-link{color:#9b0000;min-height:44px;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);vertical-align:middle;background:0 0;border:0;align-items:center;gap:6px;margin:8px 0 0;padding:5px 0;font-size:14px;font-weight:400;transition:color .18s;display:inline-flex}.venue-map-link:hover{color:var(--crimson-dark)}.dress-code{width:100%;min-height:129px;position:relative}.decor-dress-code{object-fit:contain;width:34.933%;height:auto;position:absolute;top:0;left:9.867%}.dress-code>div{gap:19.24px;display:flex;position:absolute;top:51px;right:13.333%}.dress-code i{border:0;border-radius:50%;width:14.56px;height:14.56px;display:block}.closing-note{text-align:center;justify-items:center;gap:20px;width:min(720px,100% - 40px);margin:0 auto;padding:118px 0 32px;display:grid}.venue-section+.closing-note{padding-top:0}.closing-photo{aspect-ratio:2/3;background:0 0;width:min(620px,80%);margin-bottom:44px}.closing-photo img{-webkit-mask-image:linear-gradient(#000 0% 76%,#000000eb 83%,#0000008c 93%,#0000 100%);mask-image:linear-gradient(#000 0% 76%,#000000eb 83%,#0000008c 93%,#0000 100%)}.closing-copy{color:#000;width:100%;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:1.04px;text-align:center;margin:0;padding:5.2px;font-size:14px;font-weight:400;line-height:2.2}.decor-dinner-sketch{object-fit:contain;width:min(204px,58vw);height:auto;margin-top:24px}.decor-thank-you{object-fit:contain;width:124px;height:auto;margin-top:8px}.invitation-ending{text-align:center;justify-items:center;gap:20px;width:min(390px,100vw);margin:0 auto;padding:24px 0 88px;display:grid}.invitation-ending>p{color:#000;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:1.04px;margin:0;padding:5.2px;font-size:14px;font-weight:400;line-height:2.2}.invitation-day-link{color:#7d2029;min-height:48px;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:1.04px;border-top:1px solid #9b00006b;border-bottom:1px solid #9b00006b;align-items:center;gap:8px;margin-top:20px;padding:9px 14px;font-size:14.56px;font-weight:400;transition:color .18s,border-color .18s;display:inline-flex}.invitation-day-link:hover{color:#9b0000;border-color:#9b0000}.invitation-rsvp-notice{z-index:100;top:max(72px, calc(env(safe-area-inset-top) + 16px));color:#fff;width:min(330px,100% - 40px);font-family:var(--font-body);letter-spacing:0;text-align:center;pointer-events:none;background:#7d2029;border-radius:4px;padding:12px 22px;font-size:14px;line-height:1.5;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 18px #46141929}.invitation-rsvp-notice:empty{display:none}.rsvp-section{background:0 0;padding:32px 0 24px}.rsvp-section,.rsvp-section input,.rsvp-section button{font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display)}.rsvp-layout{grid-template-columns:1fr;width:min(390px,100vw);margin:0 auto;display:grid}.rsvp-form{background:0 0;align-content:center;gap:22px;width:min(282px,100% - 64px);margin:0 auto;padding:0;display:grid}.rsvp-form .field-grid{gap:18px}.rsvp-form .two-columns{grid-template-columns:1fr}.rsvp-form .field-grid>label{grid-template-columns:48px minmax(0,1fr);align-items:center;gap:8px}.rsvp-form label,.rsvp-form legend{color:#000;letter-spacing:1.04px;font-size:14px;font-weight:400}.rsvp-form input{color:#000;min-height:44px;box-shadow:none;background:0 0;border:0;border-bottom:1px solid #9b000047;border-radius:0;padding:8px 0;font-size:14px;font-weight:400}.rsvp-form input::placeholder{color:#0000006b}.rsvp-form input[readonly]{color:#5e3439;cursor:default}.rsvp-form input[name=phone]::placeholder{letter-spacing:0;font-size:10px}.rsvp-form input:focus{border-color:#9b0000;box-shadow:0 1px #9b000033}.attendance-field{gap:8px;display:grid}.attendance-field legend{margin-bottom:5px}.attendance-options{flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:8px;min-height:44px;display:flex}.attendance-option{color:#555;letter-spacing:0;cursor:pointer;align-items:center;gap:6px;font-size:14px;font-weight:400;transition:color .18s;display:inline-flex}.attendance-option:hover,.attendance-option[data-selected=true]{color:var(--crimson)}.attendance-dot{border:1px solid #aaa097;border-radius:50%;flex:none;place-items:center;width:14.56px;height:14.56px;transition:border-color .18s;display:grid}.attendance-dot:after{content:"";background:0 0;border-radius:50%;width:6px;height:6px;transition:background .18s}.attendance-option[data-selected=true] .attendance-dot{border-color:var(--crimson)}.attendance-option[data-selected=true] .attendance-dot:after{background:var(--crimson)}.guest-counts{grid-template-columns:repeat(2,1fr);gap:18px;display:grid}.stepper{border:0;border-bottom:1px solid #9b000033;border-radius:0;justify-content:space-between;align-items:center;min-height:50px;padding:2px 0;display:flex}.stepper>span{letter-spacing:1.04px;font-size:14px;font-weight:400}.stepper>div{align-items:center;display:flex}.stepper button{color:#9b0000;background:0 0;border:0;place-items:center;width:34px;height:44px;display:grid}.stepper output{color:#000;text-align:center;font-variant-numeric:tabular-nums;width:22px;font-size:14px;font-weight:400}.rsvp-submit{color:#9b0000;letter-spacing:1.04px;width:160px;min-height:44px;box-shadow:none;background:#ffffff29;border-color:#9b00009e;border-radius:2px;justify-self:center;font-size:14px;font-weight:400}.rsvp-submit:hover:not(:disabled){color:#fff;background:#9b0000;border-color:#9b0000}.day-paper-page{color:#241f1d;background-color:#f7f3eb;background-image:url(/invitation-decor/paper-texture.webp);background-position:top;background-repeat:repeat-y;background-size:min(1170px,100vw);min-height:100dvh;font-family:"Wedding Sans 1","Wedding Sans 2",PingFang SC,Microsoft YaHei,sans-serif}.day-paper-page,.day-paper-page *{font-family:var(--font-body)!important}.day-paper-page .day-paper-eyebrow,.day-paper-page .day-paper-date,.day-paper-page .day-paper-date *,.day-paper-page .day-paper-links small,.day-paper-page .card-corner strong{font-family:Wedding NewYork,Georgia,serif!important}.day-paper-page .card-corner span,.day-paper-page .card-center span{font-family:Georgia,Times New Roman,serif!important}.day-paper-content{width:min(430px,100%);min-height:100dvh;padding:max(64px, calc(env(safe-area-inset-top) + 44px)) 30px 36px;flex-direction:column;margin:0 auto;display:flex}.day-paper-welcome{text-align:center;padding:8px 0 30px}.day-paper-eyebrow{color:#9b0000;margin:0 0 20px;font-family:Wedding NewYork,Georgia,serif;font-size:16px;line-height:1.2}.day-paper-welcome h1{color:#241f1d;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);margin:0;font-size:28px;font-weight:400;line-height:1.65}.day-paper-welcome h1 span{color:#8c1523}.day-paper-date{color:#6f343c;justify-content:center;align-items:baseline;gap:7px;margin:18px 0 0;font-family:Wedding NewYork,Georgia,serif;font-size:17px;line-height:1;display:flex}.day-paper-date b{font-size:24px;font-weight:400}.day-paper-date i{font-style:normal}.day-paper-date span{color:#9b00007a;margin:0 5px}.day-paper-links{border-top:1px solid #9b000057;width:80%;margin:0 auto}.day-paper-links>a{color:#251f1d;border-bottom:1px solid #9b000057;grid-template-columns:30px minmax(0,1fr) 20px;align-items:center;gap:13px;min-height:72px;padding:10px 4px;transition:color .18s,padding .18s;display:grid}.day-paper-links>a:hover{color:#9b0000;padding-left:10px}.day-paper-links>a>svg:first-child{color:#8c1523;stroke-width:1.45px}.day-paper-links>a>svg:last-child{color:#522d2f9e;stroke-width:1.4px}.day-paper-links span{gap:2px;display:grid}.day-paper-links strong{font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:1.04px;font-size:18px;font-weight:400}.day-paper-links small{color:#8b555b;font-family:Wedding NewYork,Georgia,serif;font-size:10px;line-height:1.2}.day-paper-dinner{object-fit:contain;opacity:.78;width:180px;height:auto;margin:28px auto 0}.day-paper-loading{position:relative}.day-paper-loading:after{content:"";border:1px solid #9b00007a;border-radius:50%;width:26px;height:26px;animation:1.2s ease-in-out infinite alternate day-paper-pulse;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes day-paper-pulse{to{opacity:.28;transform:translate(-50%,-50%)scale(.82)}}.day-identity-page{height:100dvh;min-height:0}.day-identity-page .day-identity-content{height:100%;min-height:0;padding:max(24px, min(7dvh, 56px), env(safe-area-inset-top)) 24px max(20px, env(safe-area-inset-bottom));grid-template-rows:auto auto minmax(0,1fr);justify-items:center;display:grid}.day-identity-content .day-paper-welcome{padding:0 0 28px}.day-identity-content .day-paper-eyebrow{margin-bottom:12px}.day-identity-greeting{color:#805058;margin:8px 0 0;font-size:14px}.day-identity-form{text-align:center;width:min(282px,100%)}.day-identity-form form{gap:28px;width:100%;display:grid}.day-identity-form label{color:#251f1d;letter-spacing:0;text-align:left;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:8px;font-size:14px;font-weight:400}.day-identity-form input{min-height:44px;box-shadow:none;background:0 0;border:0;border-bottom:1px solid #9b00004d;border-radius:0;padding:8px 0;font-size:16px}.day-identity-form input::placeholder{font-size:12px}.day-identity-form input[name=phone]::placeholder{font-size:10px}.day-identity-form input::placeholder{color:#8a7778}.day-identity-form input:focus{border-color:#9b0000;box-shadow:0 1px #9b00002e}.day-identity-form button{color:#8c1523;letter-spacing:0;background:#ffffff29;border:1px solid #9b000080;border-radius:2px;justify-content:center;justify-self:center;align-items:center;gap:8px;width:170px;min-height:44px;margin-top:6px;font-size:14px;font-weight:400;display:inline-flex}.day-identity-form button:hover:not(:disabled){background:#9b00000f;border-color:#9b0000}.day-identity-form>a{color:#805058;align-items:center;gap:7px;min-height:44px;margin-top:2px;padding:8px 4px;font-size:12px;display:inline-flex}.day-identity-form button:focus-visible,.day-identity-form>a:focus-visible{outline-offset:4px;outline:2px solid #8c1523}.day-identity-form .form-error{text-align:left;margin:0}.day-identity-content .day-paper-dinner{align-self:center;width:160px;height:min(114px,100%);min-height:0;margin:0}@media (max-height:600px){.day-identity-page .day-identity-content{padding-top:max(16px, env(safe-area-inset-top));padding-bottom:max(12px, env(safe-area-inset-bottom))}.day-identity-content .day-paper-welcome{padding-bottom:18px}.day-identity-content .day-paper-welcome h1{font-size:22px;line-height:1.5}.day-identity-content .day-paper-welcome h1 br{display:none}.day-identity-form form{gap:14px}}.day-subpage{text-align:center;place-items:center;min-height:100dvh;padding:40px 24px;display:grid}.day-subpage>section{justify-items:center;width:min(390px,100%);display:grid}.day-subpage .day-paper-eyebrow{margin-bottom:16px}.day-subpage h1{font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);margin:0;font-size:34px;font-weight:400}.day-subpage p:not(.day-paper-eyebrow){color:#74565a;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);margin:18px 0 30px;font-size:14px;line-height:2}.day-subpage a{color:#8c1523;min-height:44px;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);border-top:1px solid #9b000059;border-bottom:1px solid #9b000059;align-items:center;gap:7px;padding:8px 4px;font-size:14px;display:inline-flex}.interaction-page{min-height:100dvh;padding-bottom:max(72px, calc(env(safe-area-inset-bottom) + 52px));position:relative}.interaction-back-link{top:max(16px, env(safe-area-inset-top));z-index:20;color:#8c1523;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f7f3ebdb;border:1px solid #9b000057;border-radius:50%;place-items:center;width:42px;height:42px;transition:color .18s,border-color .18s,background .18s;display:grid;position:fixed;left:max(16px,50vw - 199px)}.interaction-back-link:hover{color:#fff;background:#9b0000;border-color:#9b0000}.interaction-header{width:min(430px,100% - 48px);padding:max(88px, calc(env(safe-area-inset-top) + 68px)) 0 38px;text-align:center;margin:0 auto}.interaction-header .day-paper-eyebrow{margin-bottom:18px;font-size:14px}.moments-page .interaction-header{padding-top:max(62px, calc(env(safe-area-inset-top) + 46px));padding-bottom:16px}.moments-page .interaction-header .day-paper-eyebrow{margin-bottom:10px}.moments-page .interaction-header h1,.moments-page .upload-band h2{font-size:24px}.moments-page .wall-band{padding-bottom:24px}.moments-page .upload-band{padding-top:24px}.interaction-header h1{color:#241f1d;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);margin:0;font-size:32px;font-weight:400;line-height:1.55}.interaction-header h1 span{color:#8c1523}.interaction-header>p:last-child{color:#74565a;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);margin:14px 0 0;font-size:14px;line-height:1.8}.interaction-page .primary-button,.interaction-page .secondary-button{color:#8c1523;min-height:46px;box-shadow:none;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);letter-spacing:1.04px;background:#ffffff1f;border:1px solid #9b00008f;border-radius:2px;font-size:14px;font-weight:400}.interaction-page .primary-button:hover:not(:disabled),.interaction-page .secondary-button:hover:not(:disabled){color:#fff;background:#9b0000;border-color:#9b0000}.interaction-decoration{object-fit:contain;opacity:.74;width:min(236px,60%);height:auto;margin:64px auto 0;display:block}.card-results{text-align:center;width:min(520px,100% - 48px);margin:0 auto;padding:8px 0 24px}.lucky-card{aspect-ratio:5/7;perspective:1000px;flex:none;width:min(45%,39dvh);position:relative;container-type:inline-size}.card-flipper{width:100%;height:100%;transform-style:preserve-3d;transition:transform 2.5s cubic-bezier(.4,0,.2,1);position:relative}.lucky-card[data-revealed=true] .card-flipper{transform:rotateY(180deg)}.card-face{backface-visibility:hidden;border-radius:1.7cqw;position:absolute;inset:0;box-shadow:0 18px 42px #4b2b2726}.card-face-back{overflow:hidden}.card-face-back img{object-fit:cover;width:100%;height:100%;display:block;transform:scale(1.06)}.card-face-front{transform:rotateY(180deg)}.card-face-front .playing-card{border-radius:inherit;box-shadow:none}.card-reveal-toggle{z-index:2;background:0 0;border:0;border-radius:5px;width:100%;height:100%;padding:0;position:absolute;inset:0}.card-reveal-toggle:focus-visible{outline-offset:5px;outline:2px solid #8c1523}.card-reveal-caption{color:#74565a;min-height:26px;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);text-align:center;margin:0;font-size:14px;line-height:1.8}@media (prefers-reduced-motion:reduce){.card-flipper{transition:none}}.cards-stage{justify-content:center;align-items:center;gap:18px;min-height:385px;padding:10px 0 20px;display:flex}.playing-card{border:3.5cqw solid var(--deck-edge);background-color:#faf7f0;background-image:url(/invitation-decor/paper-texture.webp);background-position:50%;background-size:430px;border-radius:1.7cqw;width:100%;height:100%;position:relative;overflow:hidden;box-shadow:0 18px 42px #4b2b2726}.playing-card:after{content:"";pointer-events:none;border:1.1cqw solid #ab8b4cc7;border-radius:.4cqw;position:absolute;inset:1cqw;box-shadow:inset 0 0 0 .4cqw #fff8d985}.playing-card[data-deck="1"]{--deck-edge:#7b1f31}.playing-card[data-deck="2"]{--deck-edge:#527d68}.playing-card[data-deck="3"]{--deck-edge:#587b9b}.playing-card[data-deck="4"]{--deck-edge:#6b4d70}.playing-card[data-deck="5"]{--deck-edge:#98713f}.playing-card[data-deck="6"]{--deck-edge:#252725}.playing-card.red-suit{color:#8c1523}.playing-card.black-suit{color:#241f1d}.card-corner{align-items:center;gap:5px;line-height:1;display:flex;position:absolute;top:14px;left:13px}.card-corner strong{font-family:Wedding NewYork,Georgia,serif;font-size:44px;font-weight:400}.card-corner span{font-family:Georgia,Times New Roman,serif;font-size:34px}.card-corner-bottom{inset:auto 13px 14px auto;transform:rotate(180deg)}.card-center{place-items:center;display:grid;position:absolute;inset:0}.card-center span{font-family:Georgia,Times New Roman,serif;font-size:clamp(78px,14vw,116px)}.card-page{padding-bottom:max(18px, env(safe-area-inset-bottom))}.card-page .interaction-header{padding-top:max(68px, calc(env(safe-area-inset-top) + 48px));padding-bottom:14px}.card-page .card-results{padding-bottom:0}.wall-band{padding:10px 20px 64px;overflow:hidden}.heart-wall,.heart-wall-overflow{--cell:clamp(25px, 5.2vw, 58px);--gap:clamp(3px, .55vw, 6px);grid-template-columns:repeat(11, var(--cell));justify-content:center;gap:var(--gap);display:grid}.heart-wall{grid-template-rows:repeat(9, var(--cell))}.heart-wall-overflow{grid-auto-rows:var(--cell);margin-top:calc(var(--cell) + var(--gap))}.heart-cell{width:var(--cell);height:var(--cell);background:#8f6c651f;border:1px solid #70162917;border-radius:2px;position:relative;overflow:hidden}.heart-cell:nth-child(3n){background:#9c1c2d21}.heart-cell:nth-child(4n){background:#70534d29}.heart-cell.filled{background:#f7f3eb;border-color:#f7f3ebb3;box-shadow:0 3px 9px #4b2b271a}.heart-photo-trigger{background:0 0;border:0;border-radius:0;width:100%;height:100%;min-height:0;padding:0;display:block;position:absolute;inset:0}.heart-cell img{object-fit:cover;transition:transform .22s}.heart-cell:hover img,.heart-photo-trigger:focus-visible img{transform:scale(1.06)}.photo-lightbox{z-index:100;min-width:0;min-height:100dvh;padding:max(68px, calc(env(safe-area-inset-top) + 54px)) 68px max(28px, calc(env(safe-area-inset-bottom) + 20px));overscroll-behavior:contain;background-blend-mode:multiply;color:#f7f3eb;background-color:#271317f7;background-image:url(/invitation-decor/paper-texture.webp);background-position:50%;background-size:min(1170px,100vw);grid-template-rows:minmax(0,1fr) auto;align-items:center;gap:18px;display:grid;position:fixed;inset:0;overflow:hidden}.photo-lightbox-stage{touch-action:pan-y;-webkit-user-select:none;user-select:none;width:min(900px,100%);height:min(74dvh,760px);margin:auto;position:relative}.photo-lightbox-image-frame{animation:.38s cubic-bezier(.22,.72,.24,1) both photo-lightbox-fade;position:absolute;inset:0}.photo-lightbox-image-next{animation-name:photo-lightbox-enter-next}.photo-lightbox-image-previous{animation-name:photo-lightbox-enter-previous}.photo-lightbox-stage img{object-fit:contain;pointer-events:none}@keyframes photo-lightbox-fade{0%{opacity:0;transform:scale(.965)}}@keyframes photo-lightbox-enter-next{0%{opacity:0;transform:translate(42px)scale(.965)}}@keyframes photo-lightbox-enter-previous{0%{opacity:0;transform:translate(-42px)scale(.965)}}.photo-lightbox-close,.photo-lightbox-save,.photo-lightbox-arrow{z-index:2;color:#f7f3eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#36161c94;border:1px solid #f7f3eb6b;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;transition:color .18s,border-color .18s,background .18s;display:grid}.photo-lightbox-close:hover,.photo-lightbox-save:hover,.photo-lightbox-arrow:hover{color:#8c1523;background:#f7f3eb;border-color:#f7f3eb}.photo-lightbox-close{top:max(16px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));position:absolute}.photo-lightbox-save{top:max(16px, env(safe-area-inset-top));right:max(68px, calc(env(safe-area-inset-right) + 52px));position:absolute}.photo-lightbox-save-spinner{animation:.8s linear infinite photo-lightbox-save-spin}@keyframes photo-lightbox-save-spin{to{transform:rotate(360deg)}}.photo-lightbox-arrow{position:absolute;top:50%;transform:translateY(-50%)}.photo-lightbox-previous{left:max(14px, env(safe-area-inset-left))}.photo-lightbox-next{right:max(14px, env(safe-area-inset-right))}.photo-lightbox-caption{text-align:center;width:min(680px,100%);margin:0 auto}.photo-lightbox-caption span{color:#f7f3ebad;font-family:var(--font-body);font-size:12px;display:block}.photo-lightbox-save-error{color:#f3b6bd;margin-top:7px;font-size:12px;display:block}.upload-band{color:#241f1d;border-top:1px solid #9b000057;border-bottom:1px solid #9b000057;grid-template-columns:minmax(0,.8fr) minmax(300px,1fr);align-items:start;gap:56px;width:min(720px,100% - 48px);margin:0 auto;padding:54px 0 58px;display:grid}.upload-band header{padding-top:4px}.upload-band .day-paper-eyebrow{margin-bottom:16px;font-size:14px}.upload-band h2{font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);margin:0;font-size:29px;font-weight:400;line-height:1.55}.upload-band header>p:last-child{color:#74565a;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);margin:14px 0 0;font-size:13px;line-height:1.8}.photo-upload{color:#241f1d;background:0 0;border-radius:0;gap:16px;padding:0;display:grid}.photo-picker{color:#8c1523;min-height:154px;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);background:#ffffff1a;border:1px dashed #9b00006b;border-radius:2px;align-content:center;justify-items:center;gap:10px;padding:14px;font-size:14px;display:grid;overflow:hidden}.photo-picker.has-preview{text-align:left;grid-template-columns:88px minmax(0,1fr);align-items:center}.photo-preview{aspect-ratio:1;background-position:50%;background-size:cover;border-radius:2px;width:88px;display:block}.interaction-page .photo-upload label{color:#4f3a3c;font-family:"Wedding Serif 1", "Wedding Serif 2", var(--font-display);font-size:13px;font-weight:400}.interaction-page .photo-upload input{min-height:42px;box-shadow:none;background:0 0;border:0;border-bottom:1px solid #9b000052;border-radius:0;padding:6px 0;font-size:14px}.interaction-page .photo-upload input:focus{border-color:#9b0000;box-shadow:0 1px #9b00002e}.admin-login-page{background:#eef1ed;place-items:center;min-height:100dvh;padding:24px;display:grid}.admin-login-form{border:1px solid var(--line);border-radius:var(--radius);width:min(430px,100%);box-shadow:var(--shadow);background:#fff;gap:20px;padding:36px;display:grid}.admin-login-form h1{margin:0;font-size:2.5rem}.admin-login-form>div>p:last-child{color:var(--muted);margin:8px 0 0}.password-field{display:block;position:relative}.password-field input{padding-right:52px}.password-field button{width:44px;height:44px;color:var(--muted);background:0 0;border:0;place-items:center;display:grid;position:absolute;top:2px;right:2px}.admin-page{background:#f3f5f2;min-height:100dvh;padding:0 max(20px,50% - 620px) 100px}.admin-header{justify-content:space-between;align-items:center;gap:20px;min-height:96px;display:flex}.admin-header h1{font-family:var(--font-body);margin:0;font-size:1.65rem}.admin-header .eyebrow{margin-bottom:0}.admin-header-actions{gap:8px;display:flex}.admin-toast{z-index:100;border-radius:var(--radius);min-height:44px;color:var(--success);box-shadow:var(--shadow);background:#edf8f0;border:1px solid #a4c4ae;align-items:center;gap:8px;padding:9px 16px;font-weight:700;display:flex;position:fixed;top:20px;left:50%;transform:translate(-50%)}.stats-grid{border:1px solid var(--line);border-radius:var(--radius);background:#fff;grid-template-columns:repeat(4,1fr);display:grid}.stat-item{border-right:1px solid var(--line);gap:16px;min-width:0;padding:24px;display:grid}.stat-item:last-child{border-right:0}.stat-item>span{color:var(--muted);font-size:.87rem;font-weight:650}.stat-item>strong{font-variant-numeric:tabular-nums;font-size:2.25rem;line-height:1}.stat-item small{color:var(--muted);margin-left:4px;font-size:.8rem}.stat-item.accent strong{color:var(--crimson)}.admin-section{border:1px solid var(--line);border-radius:var(--radius);background:#fff;margin-top:24px;padding:28px}.section-heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px;display:flex}.section-heading h2{font-family:var(--font-body);margin:0;font-size:1.35rem}.section-heading>span{color:var(--muted);font-size:.86rem}.source-form{border-bottom:1px solid var(--line);grid-template-columns:1fr 220px auto;align-items:end;gap:12px;padding-bottom:24px;display:grid}.invitee-create-form{grid-template-columns:repeat(2,minmax(0,1fr)) auto;align-items:end;gap:12px;display:grid}.invitee-import-form{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;margin:18px 0 10px;padding:18px 0;display:flex}.invitee-import-form>small{color:var(--muted);flex:280px;font-weight:400}.file-picker{border-radius:var(--radius);min-height:48px;color:var(--green);cursor:pointer;background:#f7f9f6;border:1px dashed #aeb7b0;grid-template-columns:auto auto;align-items:center;gap:9px;padding:10px 16px;display:inline-flex;position:relative;overflow:hidden}.file-picker input{opacity:0;pointer-events:none;width:1px;height:1px;min-height:0;position:absolute}.invitee-table-wrap{margin-top:6px}.invitee-table-wrap input{min-width:130px;min-height:40px;padding:7px 9px}.invitee-name{align-items:baseline;display:inline-flex}.invitee-mobile-salutation{display:none}.invitee-link-row{align-items:center;gap:8px;display:flex}.personal-link-code{max-width:280px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;display:block;overflow:hidden}.personal-link-copy{text-align:left;cursor:pointer;background:0 0;border:0;min-width:0;min-height:38px;padding:0}.personal-link-copy code{color:inherit;font-size:inherit}.invitee-link-row .icon-button{flex:0 0 38px;width:38px;height:38px}.invitee-actions{white-space:nowrap;min-width:96px}.invitee-actions .icon-button{width:38px;height:38px;margin-right:4px}.source-list{display:grid}.source-row{border-bottom:1px solid var(--line);grid-template-columns:9px minmax(190px,1fr) minmax(180px,.8fr) auto;align-items:center;gap:14px;min-height:72px;display:grid}.source-row:last-child{border-bottom:0}.source-row>div{display:grid}.source-row>.source-actions{gap:6px;display:flex}.source-row small{color:var(--muted)}.source-row code{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.side-marker{background:var(--green);border-radius:3px;width:7px;height:34px}.side-marker.bride{background:var(--crimson)}.side-marker.shared{background:var(--gold)}.filter-tabs{border:1px solid var(--line);border-radius:var(--radius);background:#f1f3f0;gap:4px;margin-bottom:16px;padding:4px;display:inline-flex}.filter-tabs button{min-height:40px;color:var(--muted);background:0 0;border:0;border-radius:4px;padding:7px 14px;font-size:.85rem;font-weight:700}.filter-tabs button[aria-pressed=true]{color:var(--ink);background:#fff;box-shadow:0 2px 6px #1f292314}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th{border-bottom:1px solid var(--line);color:var(--muted);text-align:left;padding:12px 10px;font-size:.78rem}td{vertical-align:top;border-bottom:1px solid #eceeeb;padding:14px 10px}td:first-child{display:grid}td small{color:var(--muted)}.status-dot{background:var(--gold);border-radius:50%;width:8px;height:8px;margin-right:7px;display:inline-block}.status-dot.yes{background:var(--success)}.status-dot.no{background:var(--danger)}.note-cell{max-width:340px;color:var(--muted)}.empty-row{color:var(--muted);text-align:center;padding:38px}.photo-review-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.photo-review{border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px;display:grid}.photo-review-preview{aspect-ratio:1;cursor:zoom-in;border:0;border-radius:4px;width:72px;padding:0;position:relative;overflow:hidden}.photo-review-preview:focus-visible{outline:2px solid var(--crimson);outline-offset:3px}.admin-photo-preview{color:#fff8ed;background:#140f0ff5;border:0;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:64px 20px 24px;position:fixed;inset:0}.admin-photo-preview[open]{flex-direction:column;align-items:center;gap:16px;display:flex}.admin-photo-preview::backdrop{background:#0009}.admin-photo-preview-image{flex:1;width:min(1100px,100%);min-height:0;position:relative}.admin-photo-preview-image img{object-fit:contain}.admin-photo-preview p{text-align:center;overflow-wrap:anywhere;margin:0}body:has(.admin-photo-preview[open]){overflow:hidden}.photo-review img{object-fit:cover}.photo-review p{min-width:0;margin:0;display:grid}.photo-review p span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.photo-review-actions{align-items:center;gap:6px;display:flex}.approved-label{color:var(--success);font-size:.76rem;font-weight:750}.empty-copy{color:var(--muted)}.settings-form{gap:18px;display:grid}.settings-form .primary-button{justify-self:start}.music-settings{border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:16px;padding:20px 0;display:grid}.music-settings h3{font-family:var(--font-body);margin:0;font-size:1rem}.music-preview{width:min(520px,100%);height:44px}.toggle-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding:16px 0;display:flex}.music-settings .toggle-row{border-top:0;padding-block:4px}.toggle-row>span{display:grid}.toggle-row small{color:var(--muted);font-weight:400}.toggle-row input{width:48px;min-height:26px;accent-color:var(--crimson)}.toggle-row input:disabled{cursor:not-allowed;opacity:.45}.admin-toast.error{color:var(--danger);background:#fff1f0;border-color:#d9aaa8}.lottery-summary{border:1px solid var(--line);border-radius:var(--radius);background:#fff;grid-template-columns:repeat(4,minmax(0,1fr));display:grid;overflow:hidden}.lottery-summary-item{border-right:1px solid var(--line);gap:12px;min-width:0;padding:20px 22px;display:grid;box-shadow:inset 0 3px #919994}.lottery-summary-item:last-child{border-right:0}.lottery-summary-item.first{box-shadow:inset 0 3px #a47c36}.lottery-summary-item.second{box-shadow:inset 0 3px #76828a}.lottery-summary-item.third{box-shadow:inset 0 3px #98664b}.lottery-summary-item.none{box-shadow:inset 0 3px #8a8d88}.lottery-summary-item>span{color:var(--muted);font-size:.82rem;font-weight:700}.lottery-summary-item>strong{font-variant-numeric:tabular-nums;font-size:1.8rem;line-height:1}.lottery-summary-item small{color:var(--muted);font-size:.8rem;font-weight:500}.lottery-layout{grid-template-columns:minmax(300px,.72fr) minmax(480px,1.28fr);gap:24px;display:grid}.lottery-pool-section,.lottery-draw-section{min-width:0}.lottery-pool-form{gap:4px;display:grid}.lottery-pool-form label{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) 104px;align-items:center;gap:16px;min-height:66px;display:grid}.lottery-pool-form label>span{gap:3px;display:grid}.lottery-pool-form label small{color:var(--muted);font-weight:400}.lottery-pool-form input{text-align:right;font-variant-numeric:tabular-nums;min-height:42px;padding:7px 10px}.lottery-pool-form .primary-button{justify-self:stretch;margin-top:18px}.lottery-card-back{z-index:1;color:#fff8e8;background:repeating-linear-gradient(45deg,#7b1f31 0 8px,#8b2a3b 8px 16px);border:3.5cqw solid #f7f4ec;border-radius:5px;place-items:center;display:grid;position:absolute;inset:0;overflow:hidden;box-shadow:0 16px 36px #26221f29;container-type:inline-size}.lottery-card-back:before{content:"";border:1.1cqw solid #e5cb91e6;position:absolute;inset:3cqw}.lottery-card-back span{text-align:center;font-family:Georgia,serif;font-size:1rem;line-height:1.5;position:relative}.lottery-prize-tag.first{color:#8f681e}.lottery-prize-tag.second{color:#64727a}.lottery-prize-tag.third{color:#8f5a3e}.lottery-prize-tag.none{color:#727672}.lottery-action-button{border-radius:var(--radius);color:#fff;background:#273b32;border:0;justify-content:center;align-items:center;gap:9px;width:100%;min-height:54px;margin-top:14px;font-weight:800;display:inline-flex}.lottery-action-button.prize-button{background:var(--crimson)}.lottery-action-button:disabled{cursor:not-allowed;opacity:.45}.lottery-action-row{gap:10px;display:grid}.lottery-action-row .lottery-action-button{margin-top:0}.lottery-reset-button{color:var(--danger);border-color:#d8aaa8}.lottery-reset-button:disabled{cursor:not-allowed;opacity:.42}.lottery-prize-tag{border:1px solid;border-radius:3px;padding:4px 8px;font-size:.8rem;font-weight:750;display:inline-block}.lottery-history-section td:first-child strong{font-size:1rem;display:inline}.lottery-history-section td:first-child small{margin-top:3px;display:block}.lottery-fullscreen{z-index:1000;padding:max(28px, env(safe-area-inset-top)) max(28px, env(safe-area-inset-right)) max(28px, env(safe-area-inset-bottom)) max(28px, env(safe-area-inset-left));color:#f5f0e6;background-color:#171b19;background-image:repeating-linear-gradient(90deg,#0000 0 79px,#ffffff06 79px 80px);place-items:center;display:grid;position:fixed;inset:0;overflow:auto}.lottery-fullscreen:before{content:"";pointer-events:none;border:1px solid #d4b47552;position:fixed;inset:18px}.lottery-fullscreen-close{top:max(28px, env(safe-area-inset-top));right:max(28px, env(safe-area-inset-right));z-index:2;color:#fff;background:#171b19db;border:1px solid #ffffff47;border-radius:50%;place-items:center;width:48px;height:48px;display:grid;position:fixed}.lottery-card-overlay{display:block;overflow:hidden}.lottery-card-overlay-header,.lottery-prize-overlay-header{top:max(8dvh, calc(env(safe-area-inset-top) + 30px));z-index:1;text-align:center;width:min(560px,100vw - 96px);position:fixed;left:50%;transform:translate(-50%)}.lottery-card-overlay-header p,.lottery-prize-overlay-header p{color:#d3b779;margin:0 0 7px;font-size:.76rem;font-weight:800}.lottery-card-overlay-header h2,.lottery-prize-overlay-header h2{color:#fff;font-family:var(--font-body);margin:0;font-size:2rem;line-height:1.15}.lottery-card-overlay-stage{place-items:safe center;padding:120px 48px 118px;display:grid;position:fixed;inset:0;overflow-y:auto}.lottery-card-setup{background:#171b19e6;border:1px solid #d4b47573;border-radius:6px;gap:14px;width:min(340px,100%);padding:28px;display:grid;box-shadow:0 24px 70px #00000052}.lottery-card-setup label{color:#f5f0e6;text-align:center}.lottery-card-setup input{color:#fff;text-align:center;background:#ffffff14;border-color:#d4b47573;min-height:54px;font-size:1.3rem;font-weight:800}.lottery-card-setup .lottery-fullscreen-action{width:100%;min-width:0}.lottery-card-grid{flex-wrap:wrap;justify-content:center;align-items:center;gap:22px;width:min(1200px,100%);display:flex}.lottery-drawn-card{color:#f5f0e6;justify-items:center;gap:7px;display:grid}.lottery-drawn-card>.lottery-prize-tag{color:#f5f0e6}.lottery-card-grid.multiple .lottery-wipe-card{width:min(190px,20vw,27dvh)}.lottery-wipe-card{aspect-ratio:5/7;width:min(300px,32dvh);position:relative;container-type:inline-size}.lottery-wipe-card-back,.lottery-wipe-card-front{border-radius:5px;position:absolute;inset:0;overflow:hidden;container-type:inline-size}.lottery-wipe-card-back .lottery-card-back{box-shadow:0 28px 70px #00000057}.lottery-wipe-card-front{z-index:1;clip-path:inset(0 100% 0 0)}.lottery-wipe-card-front .playing-card{box-shadow:0 30px 80px #00000061}.lottery-wipe-card.is-revealing .lottery-wipe-card-front{animation:6.2s linear forwards lottery-card-wipe}.lottery-wipe-card.is-revealed .lottery-wipe-card-front{clip-path:inset(0)}.lottery-wipe-edge{z-index:2;opacity:0;background:#fff4cfeb;border-radius:50%;width:3%;position:absolute;top:-1%;bottom:-1%;left:0;box-shadow:0 0 20px #e7c67ec7,8px 0 24px #00000052}.lottery-wipe-card.is-revealing .lottery-wipe-edge{animation:6.2s linear forwards lottery-card-wipe-edge}.lottery-wipe-card .card-corner strong{font-size:19cqw}.lottery-wipe-card .card-corner span{font-size:15.5cqw}.lottery-loading-line{background:#ffffff26;width:min(360px,70vw);height:2px;overflow:hidden}.lottery-card-overlay-header .lottery-loading-line{margin:18px auto 0;display:block}.lottery-loading-line:after{content:"";background:#d3b779;width:42%;height:100%;animation:.9s ease-in-out infinite alternate lottery-loading;display:block}.lottery-fullscreen-action{color:#171b19;background:#d3b779;border:1px solid #d3b779;border-radius:4px;justify-content:center;align-items:center;gap:9px;min-width:220px;min-height:54px;margin-top:8px;font-weight:850;display:inline-flex}.lottery-fullscreen-action.secondary{color:#fff;background:#171b19c2;border-color:#ffffff52}.lottery-card-overlay-actions{bottom:max(7dvh, calc(env(safe-area-inset-bottom) + 24px));z-index:2;gap:12px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.lottery-prize-overlay{z-index:1100;color:#f5f0e6;background-color:#141615;background-image:repeating-linear-gradient(90deg,#0000 0 79px,#ffffff06 79px 80px);position:fixed;inset:0;overflow:hidden}.lottery-prize-overlay:before{content:"";z-index:3;pointer-events:none;border:1px solid #d4b47552;position:fixed;inset:18px}.lottery-reel-window{--reel-card:min(25vw, 250px);--reel-gap:24px;--reel-step:calc(var(--reel-card) + var(--reel-gap));width:100%;height:min(53dvh,470px);position:fixed;top:50%;left:0;overflow:hidden;transform:translateY(-50%);-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.lottery-reel-track{gap:var(--reel-gap);width:max-content;transform:translate3d(calc(var(--reel-card) / -2), -50%, 0);will-change:transform;display:flex;position:absolute;top:50%;left:50%}.lottery-reel-track.is-rolling{transform:translate3d(calc((var(--reel-card) / -2) - (var(--reel-stop) * var(--reel-step))), -50%, 0);transition:transform 7.2s cubic-bezier(.06,.72,.09,1)}.lottery-reel-item{flex:0 0 var(--reel-card);width:var(--reel-card);color:#f2ecdf;background:#f8f4e912;border:1px solid #e5dac333;border-radius:6px;grid-template-rows:minmax(0,1fr) auto;place-items:center;gap:8px;height:min(46dvh,380px);padding:22px 18px 24px;display:grid;box-shadow:0 18px 48px #0003}.lottery-reel-image{background-position:50%;background-repeat:no-repeat;background-size:contain;width:100%;height:100%;display:block}.lottery-reel-item.first .lottery-reel-image{background-image:url(/lottery/prize-gift-first.webp)}.lottery-reel-item.second .lottery-reel-image{background-image:url(/lottery/prize-gift-second.webp)}.lottery-reel-item.third .lottery-reel-image{background-image:url(/lottery/prize-red-envelope.webp)}.lottery-reel-item.none .lottery-reel-image{background-image:url(/lottery/prize-thank-you.webp)}.lottery-reel-item strong{font-family:var(--font-display);font-size:clamp(1.35rem,2.5vw,2rem);font-weight:600}.lottery-reel-focus{z-index:2;width:calc(var(--reel-card) + 18px);pointer-events:none;border-top:2px solid #d3b779;border-bottom:2px solid #d3b779;height:calc(min(46dvh,380px) + 18px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.lottery-reel-focus:before,.lottery-reel-focus:after{content:"";border-block:9px solid #0000;width:0;height:0;position:absolute;top:50%;transform:translateY(-50%)}.lottery-reel-focus:before{border-left:0;border-right:11px solid #d3b779;left:-14px}.lottery-reel-focus:after{border-left:11px solid #d3b779;border-right:0;right:-14px}.lottery-reel-item.is-winner{z-index:1;border-color:currentColor;position:relative;transform:scale(1.025)}.lottery-reel-item.is-winner.first{color:#f0cc77;box-shadow:0 0 24px #e2b74f57}.lottery-reel-item.is-winner.second{color:#c5a0ff;box-shadow:0 0 24px #965be657}.lottery-reel-item.is-winner.third{color:#e58b8d;box-shadow:0 0 42px #c1343f5c}.lottery-reel-item.is-winner.none{color:#c4cec2;box-shadow:0 0 38px #97ab9738}.lottery-prize-loading-line{background:#ffffff21;width:min(420px,70vw);height:2px;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.lottery-prize-loading-line:after{content:"";background:#d3b779;width:38%;height:100%;animation:.8s ease-in-out infinite alternate lottery-loading;display:block}.lottery-prize-ready{place-content:center;justify-items:center;gap:16px;padding:120px 24px;display:grid;position:fixed;inset:0}.lottery-prize-ready p{color:#e4b6b2;margin:0}.lottery-prize-overlay-actions{bottom:max(7dvh, calc(env(safe-area-inset-bottom) + 24px));z-index:4;gap:12px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.lottery-prize-done{color:#171b19;background:#d3b779;border:1px solid #d3b779;border-radius:4px;justify-content:center;align-items:center;gap:9px;min-width:220px;min-height:54px;font-weight:850;display:inline-flex}.lottery-prize-done.secondary{color:#fff;background:#141615c7;border-color:#ffffff52}@keyframes lottery-card-wipe{0%{clip-path:inset(0 100% 0 0)}20%{clip-path:inset(0 96% 0 0)}50%{clip-path:inset(0 88% 0 0)}78%{clip-path:inset(0 74% 0 0)}to{clip-path:inset(0)}}@keyframes lottery-card-wipe-edge{0%{opacity:0;left:0}4%{opacity:1}20%{left:4%}50%{left:12%}78%{left:26%}96%{opacity:1}to{opacity:0;left:97%}}@keyframes lottery-loading{0%{transform:translate(-100%)}to{transform:translate(240%)}}@media (max-width:900px){.gallery-story{grid-template-columns:repeat(8,minmax(0,1fr))}.gallery-tall{grid-column:2/8}.gallery-copy{grid-column:1/-1}.gallery-wide-bottom{grid-column:1/9}.venue-details{min-height:0;padding:0}.rsvp-layout{grid-template-columns:1fr}.upload-band{grid-template-columns:1fr;gap:32px}.stats-grid{grid-template-columns:repeat(2,1fr)}.stat-item:nth-child(2){border-right:0}.stat-item:nth-child(-n+2){border-bottom:1px solid var(--line)}.photo-review-grid{grid-template-columns:repeat(2,1fr)}.source-form{grid-template-columns:1fr 180px}.invitee-create-form{grid-template-columns:repeat(2,minmax(0,1fr))}.invitee-create-form .secondary-button,.source-form .secondary-button{grid-column:1/-1;justify-self:start}}@media (max-width:640px){:root{--content:calc(100% - 32px)}h1{font-size:2.65rem}.background-music-control{top:max(10px, env(safe-area-inset-top));right:max(10px, env(safe-area-inset-right))}.two-columns{grid-template-columns:1fr}.invitation-hero{min-height:82dvh}.invitation-hero>img{object-position:58% center}.invitation-hero:after{background:0 0}.hero-copy{justify-content:flex-start;min-height:82dvh;padding:80px 0 90px}.hero-kicker{max-width:76%;margin-bottom:14px;font-size:.76rem}.hero-copy h1{max-width:74%;font-size:2.7rem}.hero-copy .script-accent{max-width:72%;margin-top:12px;font-size:1.25rem}.hero-message{max-width:76%;margin:18px 0;font-size:1.08rem}.hero-meta{gap:8px;max-width:78%;font-size:.88rem;display:grid}.editorial-intro{width:calc(100% - 32px);padding:68px 0 30px}.record-composition{margin-top:20px;margin-bottom:30px}.section-bracket{margin:22px 0 26px}.photo-primary{width:80%}.couple-intro{width:100%;margin-bottom:42px}.editorial-intro h2{font-size:2.05rem}.photo-wide-intro{margin-top:36px}.story-section{gap:42px;width:calc(100% - 32px);padding-bottom:36px}.gallery-story{gap:14px;width:calc(100% - 32px);padding-bottom:86px}.gallery-copy{grid-column:1/-1}.venue-details{padding-bottom:0}.closing-note{width:calc(100% - 32px);padding:82px 0 24px}.closing-note h2{font-size:2rem}.rsvp-section{padding-top:24px}.guest-counts{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.day-paper-content{padding:max(54px, calc(env(safe-area-inset-top) + 36px)) 24px 24px}.day-paper-welcome{padding-bottom:24px}.day-paper-welcome h1{font-size:24px;line-height:1.55}.day-paper-eyebrow{margin-bottom:16px;font-size:14px}.day-paper-date{margin-top:16px}.day-paper-links>a{min-height:68px;padding-block:8px}.day-paper-dinner{width:min(160px,22dvh);margin-top:20px}.interaction-header{width:calc(100% - 48px);padding:max(82px, calc(env(safe-area-inset-top) + 62px)) 0 32px;text-align:center}.interaction-header h1{font-size:28px}.interaction-header>p:last-child{margin-top:11px}.card-results{width:calc(100% - 48px)}.lucky-card{width:min(68%,33dvh)}.cards-stage{gap:10px;min-height:0}.card-page{padding-bottom:max(14px, env(safe-area-inset-bottom))}.card-page .interaction-header{padding:max(62px, calc(env(safe-area-inset-top) + 46px)) 0 10px}.card-page .cards-stage{padding:4px 0 8px}.card-corner{gap:4px;top:9px;left:8px}.card-corner-bottom{inset:auto 8px 9px auto}.card-corner strong{font-size:2.15rem}.card-corner span{font-size:1.85rem}.card-center span{font-size:5rem}.heart-wall,.heart-wall-overflow{--cell:calc((100vw - 64px) / 11);--gap:3px}.wall-band{padding:8px 16px 48px}.photo-lightbox{padding:max(64px, calc(env(safe-area-inset-top) + 52px)) 16px max(24px, calc(env(safe-area-inset-bottom) + 18px));gap:14px}.photo-lightbox-stage{width:100%;height:min(70dvh,620px)}.photo-lightbox-previous{left:max(8px, env(safe-area-inset-left))}.photo-lightbox-next{right:max(8px, env(safe-area-inset-right))}.photo-lightbox-caption{width:calc(100% - 40px)}.upload-band{gap:30px;width:calc(100% - 48px);padding:42px 0 46px}.upload-band header{text-align:center}.upload-band h2{font-size:26px}.photo-picker{min-height:138px}.interaction-decoration{margin-top:52px}.admin-page{padding-inline:12px}.admin-header{padding-inline:4px}.admin-header h1{font-size:1.4rem}.admin-toast{justify-content:center;width:calc(100% - 24px);top:12px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-item{padding:18px 14px}.stat-item>strong{font-size:1.75rem}.admin-section{padding:20px 14px}.section-heading{flex-wrap:wrap;align-items:flex-start;gap:12px}.section-heading .secondary-button{justify-content:center;width:100%;min-height:44px;padding-inline:11px;font-size:.82rem}.source-form,.invitee-create-form{grid-template-columns:1fr}.invitee-create-form .secondary-button{grid-column:auto;justify-self:stretch}.invitee-import-form{align-items:stretch}.invitee-import-form>.file-picker,.invitee-import-form>.secondary-button{width:100%}.source-form .secondary-button{grid-column:auto;justify-self:stretch}.source-row{grid-template-columns:7px minmax(0,1fr) auto;padding:12px 0}.source-row code{grid-area:2/2/auto/3}.source-row .source-actions{grid-area:1/3/3}.photo-review-grid{grid-template-columns:1fr}.filter-tabs{grid-template-columns:repeat(4,1fr);width:100%;display:grid}.filter-tabs button{padding-inline:4px}.admin-page .table-wrap{overflow:visible}.admin-page table,.admin-page tbody{display:block}.admin-page thead{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.admin-page tbody{gap:12px;display:grid}.admin-page tbody tr{border:1px solid var(--line);border-radius:var(--radius);background:#fafbf9;padding:10px 14px;display:grid}.admin-page tbody td{border-bottom:1px solid #eceeeb;grid-template-columns:82px minmax(0,1fr);align-items:start;gap:10px;width:100%;padding:8px 0;display:grid}.admin-page tbody td:last-child{border-bottom:0}.admin-page tbody td:before{content:attr(data-label);color:var(--muted);font-size:.76rem;font-weight:700}.admin-page .invitee-table-wrap tbody tr{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;column-gap:8px}.admin-page .invitee-table-wrap tbody td:before{display:none}.admin-page .invitee-table-wrap .invitee-identity{border-bottom:0;grid-column:1;min-width:0;padding-block:8px;display:block}.admin-page .invitee-mobile-salutation{font-weight:400;display:inline}.admin-page .invitee-table-wrap .invitee-salutation{display:none}.admin-page .invitee-table-wrap .invitee-rsvp{white-space:nowrap;border-bottom:0;grid-column:2;width:auto;padding-block:8px;display:block}.admin-page .invitee-table-wrap .invitee-link{border-top:1px solid #eceeeb;border-bottom:0;grid-area:2/1/auto/-1;padding-block:10px 0;display:block}.admin-page .invitee-link-row{grid-template-columns:minmax(0,1fr) 44px;display:grid}.admin-page .personal-link-code{white-space:nowrap;width:100%;max-width:none;min-height:44px}.admin-page .invitee-actions{white-space:normal;border-bottom:0;grid-column:3;align-items:center;width:auto;min-width:0;padding-block:0;display:flex}.admin-page .invitee-actions .icon-button{width:44px;height:44px;margin:0}.admin-page .invitee-table-wrap .is-editing .invitee-salutation{border-bottom:0;grid-area:2/1/auto/-1;padding-block:4px 8px;display:block}.admin-page .invitee-table-wrap .is-editing .invitee-rsvp{display:none}.admin-page .invitee-table-wrap .is-editing .invitee-link{grid-row:3}.admin-page .empty-row{text-align:center;padding:28px 8px;display:block}.admin-page .empty-row:before{display:none}.settings-form .primary-button{width:100%}.lottery-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.lottery-summary-item{padding:17px 15px}.lottery-summary-item:nth-child(2){border-right:0}.lottery-summary-item:nth-child(-n+2){border-bottom:1px solid var(--line)}.lottery-layout{grid-template-columns:1fr;gap:0}.lottery-reset-button{min-height:44px;padding-inline:12px}.lottery-fullscreen{padding:max(66px, calc(env(safe-area-inset-top) + 52px)) 24px max(34px, calc(env(safe-area-inset-bottom) + 22px))}.lottery-fullscreen:before{inset:10px}.lottery-fullscreen-close{top:max(18px, env(safe-area-inset-top));right:max(18px, env(safe-area-inset-right));width:44px;height:44px}.lottery-card-overlay-header,.lottery-prize-overlay-header{top:max(7dvh, calc(env(safe-area-inset-top) + 26px));width:calc(100vw - 96px)}.lottery-card-overlay-header h2,.lottery-prize-overlay-header h2{font-size:1.65rem}.lottery-card-overlay-stage{padding:max(116px, calc(env(safe-area-inset-top) + 102px)) 18px max(116px, calc(env(safe-area-inset-bottom) + 102px))}.lottery-card-setup{padding:22px}.lottery-card-grid{gap:16px 10px}.lottery-wipe-card{width:min(54vw,29dvh)}.lottery-card-grid.multiple .lottery-wipe-card{width:min(42vw,22dvh)}.lottery-card-overlay-actions{bottom:max(5dvh, calc(env(safe-area-inset-bottom) + 18px));width:calc(100vw - 48px)}.lottery-card-overlay-actions .lottery-fullscreen-action{width:50%;min-width:0;margin-top:0;padding-inline:10px}.lottery-prize-overlay:before{inset:10px}.lottery-reel-window{--reel-card:min(58vw, 220px);--reel-gap:14px;height:min(49dvh,410px)}.lottery-reel-item{height:min(42dvh,350px);padding:16px 12px 20px}.lottery-reel-focus{height:calc(min(42dvh,350px) + 14px)}.lottery-prize-overlay-actions{bottom:max(5dvh, calc(env(safe-area-inset-bottom) + 18px));width:calc(100vw - 48px)}.lottery-prize-overlay-actions .lottery-prize-done{width:50%;min-width:0;padding-inline:10px}}@media (prefers-reduced-motion:reduce){.lottery-reel-track.is-rolling{transition-duration:1ms}html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.heart-cell.selected{outline-offset:2px;background:#9b00003d;outline:2px solid #9b0000;box-shadow:0 0 0 4px #9b00001a}.heart-cell:not(.filled) .heart-photo-trigger{cursor:pointer}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}
