@import "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&display=swap";@import "https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&display=swap";:root{color:#27231f;font-synthesis:none;--paper:#f5f0e7;--paper-deep:#ece4d7;--ink:#27231f;--muted:#766b60;--red:#a8463b;--gold:#a58c65;--line:#27231f2e;background:#f5f0e7;font-family:Noto Serif SC,Songti SC,STSong,serif}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{min-width:320px;margin:0;overflow-x:hidden}button{font:inherit}.app-shell{background:radial-gradient(circle at 75% 15%, #bea8871f, transparent 28%), var(--paper);position:relative;overflow:hidden}.app-shell:before{content:"";pointer-events:none;opacity:.18;z-index:1;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E");position:fixed;inset:0}main{z-index:2;position:relative}.section-frame{width:min(100%,1100px);margin:0 auto;padding:clamp(6rem,15vw,12rem) clamp(1.4rem,7vw,6rem);position:relative}.section-kicker{color:var(--muted);letter-spacing:.25em;font:10px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}.brush-caption{color:var(--red);letter-spacing:.35em;writing-mode:vertical-rl;margin:0;font-size:clamp(13px,2vw,16px);line-height:1}h2,h3,p{margin-top:0}h2{letter-spacing:.04em;font-size:clamp(2rem,5vw,4.35rem);font-weight:500;line-height:1.5}h2 em{color:var(--red);font-style:normal}p{line-height:2}.opening.section-frame{isolation:isolate;place-items:center;height:100svh;min-height:100svh;padding:0;display:grid;overflow:hidden}.opening-stage{aspect-ratio:9/16;background:#f3e5d3;width:min(100%,56.25svh);margin:0 auto;position:relative;overflow:hidden}.wedding-background{background:radial-gradient(at 50% 40%,#fffaeff2,#dec09db3 68%,#b68162 100%);position:absolute;inset:0;overflow:hidden}.wedding-background:before{content:"";opacity:.55;background:linear-gradient(#ffffff52,#0000),repeating-linear-gradient(90deg,#9a67451a 0 2px,#0000 2px 26px);height:33%;position:absolute;bottom:0;left:8%;right:8%}.background-lattice{opacity:.28;background:repeating-linear-gradient(90deg,#0000 0 8%,#8b5b3b80 8.2% 8.55%),repeating-linear-gradient(0deg,#0000 0 11%,#8b5b3b6b 11.2% 11.55%);border:1px solid #8b5b3b73;position:absolute;inset:10% 12% 28%}.background-arch{border:2px solid #a1654157;border-bottom:0;border-radius:52% 52% 0 0;width:54%;height:60%;position:absolute;top:15%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 50px #fffaef4d}.background-knot{color:#a8463b66;font-size:clamp(1rem,5vw,2.4rem);position:absolute;top:20%}.knot-left{left:12%}.knot-right{right:12%}.curtain{z-index:4;background:linear-gradient(90deg,#702e2f,#a04b42 55%,#7b3032);width:53%;animation-duration:2.2s;animation-timing-function:cubic-bezier(.7,0,.2,1);animation-delay:2s;animation-fill-mode:forwards;position:absolute;top:-2%;bottom:-2%;box-shadow:inset 0 0 45px #2b0c0e61}.curtain:before{content:"";opacity:.35;background:repeating-linear-gradient(90deg,#0000 0 24px,#ffddc933 26px 29px,#0000 32px 52px);position:absolute;inset:0}.curtain span{background:linear-gradient(90deg,#2b0c0e4d,#ffddc938,#2b0c0e4d);border-radius:50%;width:18px;height:70%;position:absolute;top:15%}.curtain-left{transform-origin:0;clip-path:polygon(0 0,100% 0,90% 16%,82% 32%,92% 50%,83% 68%,93% 84%,82% 100%,0 100%);left:0}.curtain-left span{right:3%}.curtain-right{transform-origin:100%;clip-path:polygon(0 0,100% 0,100% 100%,18% 100%,7% 84%,17% 68%,8% 50%,18% 32%,10% 16%);right:0}.curtain-right span{left:3%}.character{z-index:3;transform-origin:bottom;pointer-events:none;position:absolute;bottom:17%}.character img{filter:drop-shadow(0 8px 8px #4b2b1c33);max-width:none;display:block;position:absolute}.character-groom{aspect-ratio:381/1318;opacity:0;height:48%;left:10%;transform:translate(-16%)}.character-groom img{width:246.982%;height:126.859%;top:-12.1396%;left:-59.8425%}.character-bride{aspect-ratio:817/1186;opacity:0;height:45%;right:5%;transform:translate(16%)}.character-bride img{width:115.177%;height:140.978%;top:-27.656%;left:-15.1775%}.opening-started .character-groom{animation:1.2s cubic-bezier(.2,.7,.2,1) .25s forwards groom-enter,2.4s ease-in-out 5.3s infinite groom-invite}.opening-started .character-bride{animation:1.2s cubic-bezier(.2,.7,.2,1) .35s forwards bride-enter,2.4s ease-in-out 5.3s infinite bride-invite}.opening-vignette{z-index:5;pointer-events:none;opacity:.55;background:radial-gradient(#0000 45%,#37161138 100%);transition:opacity 1s;position:absolute;inset:0}.opening-started .opening-vignette{opacity:.12}.opening-copy{z-index:6;padding:5% 8% max(1rem, env(safe-area-inset-bottom));text-align:center;pointer-events:none;flex-direction:column;align-items:center;display:flex;position:absolute;inset:0}.opening-page-index{color:#673e2aad;letter-spacing:.12em;opacity:0;margin:0;font:9px ui-monospace,monospace;position:absolute;top:4%;left:8%;transform:translateY(-8px)}.opening-started .opening-page-index{animation:.7s 4.2s forwards fade-up}.opening-kicker{color:#673e2abd;letter-spacing:.23em;opacity:0;margin:0;font:9px ui-monospace,monospace;transform:translateY(-10px)}.opening-started .opening-kicker{animation:.8s 4.25s forwards fade-up}.opening-invitation-copy{opacity:0;overflow-wrap:anywhere;letter-spacing:0;width:84%;position:absolute;top:8%;left:50%;transform:translate(-50%,12px)}.opening-started .opening-invitation-copy{animation:1s 4.35s forwards copy-in}.opening-invitation-copy p{color:var(--red);margin:0 0 .5rem;font-size:14px;line-height:1.5}.opening-invitation-copy strong{color:var(--ink);font-size:20px;font-weight:500;line-height:1.5;display:block}.opening-invitation-copy span,.opening-invitation-copy small{color:var(--muted);font-size:12px;line-height:1.75;display:block}.opening-invitation-copy span{margin-top:.5rem}.opening-invitation-copy small{margin-top:.35rem}.opening-enter{bottom:max(4%, env(safe-area-inset-bottom));pointer-events:auto;color:var(--red);letter-spacing:0;cursor:pointer;opacity:0;background:#faf6eecc;border:1px solid #a8463bb3;padding:.72rem 1.35rem;font-size:14px;position:absolute;transform:translateY(10px)}.opening-started .opening-enter{animation:1s 4.9s forwards fade-up,2.8s ease-in-out 5.9s infinite enter-breathe}.opening-enter span{margin-left:.65rem;font-size:1.05em}.opening-start-prompt{z-index:7;color:#fffaefe6;letter-spacing:.24em;pointer-events:none;flex-direction:column;align-items:center;gap:.55rem;font-size:11px;animation:2.2s ease-in-out infinite prompt-pulse;display:flex;position:absolute;bottom:9%;left:50%;transform:translate(-50%)}.opening-start-prompt i{background:#fffaefd1;width:1px;height:30px}.letter{padding-top:clamp(7rem,15vw,12rem)}.letter-sheet{background:#faf7f0c2;border:1px solid #a58c658c;justify-content:center;align-items:center;max-width:640px;min-height:min(72vw,670px);margin:3.5rem auto 0;display:flex;position:relative;box-shadow:0 18px 50px #3e302414}.letter-sheet:after{content:"";pointer-events:none;border:1px solid #a58c6557;position:absolute;inset:16px}.sheet-corner{border-color:var(--red);opacity:.65;z-index:1;width:32px;height:32px;position:absolute}.sheet-corner.tl{border-top:1px solid;border-left:1px solid;top:27px;left:27px}.sheet-corner.br{border-bottom:1px solid;border-right:1px solid;bottom:27px;right:27px}.letter-content{text-align:center;z-index:2;position:relative}.letter-content .brush-caption{writing-mode:horizontal-tb;letter-spacing:.7em;margin:0 auto 2rem}.letter-content h2{margin:0 0 1.5rem;font-size:clamp(2.4rem,8vw,4.4rem);line-height:1.3}.letter-content h2 em{color:var(--ink)}.letter-rule{background:var(--gold);opacity:.7;width:110px;height:1px;margin:2rem auto}.letter-content p{letter-spacing:.22em;font-size:14px}.letter-invite{color:var(--red);margin-top:2rem;line-height:2.3;font-size:1rem!important}.letter-sign{color:var(--muted);writing-mode:vertical-rl;letter-spacing:.15em;font-size:12px;position:absolute;bottom:38px;right:56px}.vertical-label{color:var(--gold);writing-mode:vertical-rl;letter-spacing:.35em;font-size:11px;position:absolute;top:52px;left:56px}.seal{width:42px;height:42px;color:var(--red);border:1px solid var(--red);place-items:center;font-size:22px;line-height:1;display:inline-grid}.seal-small{color:var(--red);border:1px solid var(--red);z-index:2;place-items:center;width:29px;height:29px;margin:0;font-size:16px;display:grid;position:absolute;top:48px;right:57px}.story{padding-top:clamp(8rem,16vw,13rem)}.story-heading{align-items:flex-start;gap:2.5rem;margin:4rem 0 5rem;display:flex}.story-heading h2{margin:0}.story-list{border-left:1px solid var(--line);max-width:680px;margin-left:auto}.story-item{grid-template-columns:72px 1fr;gap:2rem;padding:0 0 4.5rem 3rem;display:grid;position:relative}.story-item:before{content:"";background:var(--red);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;left:-4px}.story-index{color:var(--gold);font:10px ui-monospace,monospace;position:absolute;top:0;left:-5.2rem}.story-item time{color:var(--red);letter-spacing:.08em;font-size:1.6rem}.story-item h3{letter-spacing:.15em;margin:0 0 .7rem;font-size:1.25rem;font-weight:500}.story-item p{color:var(--muted);margin:0;font-size:.9rem}.couple{padding-top:clamp(9rem,18vw,15rem)}.couple-layout{grid-template-columns:.82fr 1.18fr;align-items:center;gap:clamp(2rem,8vw,8rem);margin-top:4rem;display:grid}.couple-copy{padding-left:1.2rem;position:relative}.couple-copy h2{margin:1.6rem 0;font-size:clamp(2.2rem,5vw,4.4rem);line-height:1.35}.couple-copy h2 span{color:var(--red);font-family:Georgia,serif;font-size:.7em}.couple-note{color:var(--muted);font-size:.9rem}.couple-copy .seal{margin-top:2rem}.portrait{background:#fbf8f1;margin:0;padding:12px 12px 18px;box-shadow:0 16px 34px #2d22191f}.portrait.tilted{transform:rotate(2.5deg)}.portrait img{aspect-ratio:4/5;object-fit:cover;width:100%;display:block}.portrait figcaption,figure figcaption{color:var(--muted);letter-spacing:.16em;margin-top:11px;font:10px ui-monospace,monospace}.gallery{padding-top:clamp(10rem,20vw,16rem)}.gallery-heading{gap:2.5rem;margin:4rem 0 5rem;display:flex}.gallery-heading h2{margin:0}.gallery-grid{grid-template-columns:repeat(12,1fr);align-items:start;gap:5rem 1.2rem;display:grid}.gallery-grid figure{margin:0}.gallery-grid img{object-fit:cover;background:var(--paper-deep);width:100%;display:block}.gallery-main{grid-column:1/9}.gallery-small img{aspect-ratio:1}.small-a{grid-column:9/13;margin-top:7rem!important}.small-b{grid-column:2/6;margin-top:1rem!important}.gallery-wide{grid-column:5/13;margin-top:1rem!important}.gallery-wide img{aspect-ratio:1.9}.gallery-tall{grid-column:1/5;margin-top:-4rem!important}.gallery-tall img{aspect-ratio:.75}.info{padding-top:clamp(10rem,20vw,16rem)}.info-layout{grid-template-columns:1fr 1.25fr;align-items:start;gap:6rem;margin-top:4rem;display:grid}.info-layout h2{margin:1.5rem 0 .3rem;font-size:clamp(2.1rem,4.7vw,3.9rem)}.weekday{color:var(--red);letter-spacing:.24em}.info-details{border-top:1px solid var(--line);grid-template-columns:1fr auto;gap:2rem;padding-top:1.8rem;display:grid}.info-details span{color:var(--gold);letter-spacing:.2em;margin-bottom:1rem;font:10px ui-monospace,monospace;display:block}.info-details strong{letter-spacing:.1em;font-size:1.35rem;font-weight:500;display:block}.info-details p{color:var(--muted);margin:.35rem 0;font-size:.9rem}.info-aside{text-align:right}.info-aside strong{color:var(--red);letter-spacing:.08em;font:2rem Georgia,serif}.route-button{border:1px solid var(--ink);color:var(--ink);cursor:pointer;background:0 0;grid-column:1/-1;justify-self:start;margin-top:1rem;padding:.8rem 1.5rem;font-size:.9rem;transition:background .3s,color .3s}.route-button:hover{background:var(--ink);color:var(--paper)}.route-button span{color:var(--red);margin-left:.7rem}.invitation{justify-content:center;align-items:center;min-height:85vh;padding-top:clamp(10rem,22vw,18rem);display:flex}.invitation-center{text-align:center}.invitation-center .brush-caption{writing-mode:horizontal-tb;letter-spacing:.55em;margin:0 auto 2rem}.invitation-center h2{margin:0;font-size:clamp(1.8rem,4.5vw,3.3rem);line-height:2}.invitation-mark{color:var(--red);margin:2.5rem 0;font-size:3.5rem}.invitation-sign{color:var(--muted);letter-spacing:.18em;font-size:.9rem}.invitation-sign span{color:var(--red);padding:0 .4em}.ending{text-align:center;background:linear-gradient(#0000,#e8e0d399);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding-bottom:10rem;display:flex}.ending-seal{border:1px solid var(--red);width:58px;height:58px;color:var(--red);place-items:center;margin-bottom:3rem;font-size:28px;display:grid}.ending .brush-caption{writing-mode:horizontal-tb;letter-spacing:.45em;margin-bottom:1rem}.ending h2{margin:0;font-size:clamp(2.5rem,7vw,5rem)}.ending-year{color:var(--gold);letter-spacing:.18em;margin:4rem 0 .8rem;font:2.5rem Georgia,serif}.ending-line{letter-spacing:.4em;font-size:1rem}.ending-final{color:var(--muted);letter-spacing:.2em;margin-top:5rem;font-size:.9rem}.end-line{background:var(--red);width:1px;height:42px;margin-top:1rem}.music-control{top:max(1.2rem, env(safe-area-inset-top));right:max(1.2rem, env(safe-area-inset-right));z-index:10;width:43px;height:43px;color:var(--red);cursor:pointer;background:#f8f4ecc7;border:1px solid #a58c65b3;border-radius:50%;place-items:center;display:grid;position:fixed;box-shadow:0 5px 18px #32261c14}.music-control span{font:20px/1 Georgia,serif}.music-control i{border:1px solid #0000;border-top-color:var(--gold);border-radius:50%;position:absolute;inset:5px}.music-control.is-playing i{animation:5s linear infinite spin}[data-reveal]{opacity:0;transition:opacity 1.2s cubic-bezier(.2,.7,.2,1),transform 1.2s cubic-bezier(.2,.7,.2,1);transform:translateY(28px)}.opening[data-reveal]{opacity:1;transform:none}.is-visible{opacity:1;transform:translateY(0)}.loading-screen{z-index:20;background:var(--paper);color:var(--muted);align-content:center;place-items:center;gap:1.2rem;transition:opacity 1s,visibility 1s;display:grid;position:fixed;inset:0}.loading-screen.is-done{opacity:0;visibility:hidden;pointer-events:none}.loading-seal{color:var(--red);font-size:5.5rem;line-height:1;animation:2.2s ease-in-out infinite breathe}.loading-screen span{letter-spacing:.3em;font-size:11px}@keyframes rise{to{opacity:1;transform:translateY(0)}}@keyframes breathe{0%,to{opacity:.45;transform:translateY(0)}50%{opacity:1;transform:translateY(4px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes groom-enter{0%{opacity:0;transform:translate(-16%)}to{opacity:1;transform:translate(0)}}@keyframes bride-enter{0%{opacity:0;transform:translate(16%)}to{opacity:1;transform:translate(0)}}@keyframes curtain-left-open{0%{transform:translate(0)}to{transform:translate(-108%)}}@keyframes curtain-right-open{0%{transform:translate(0)}to{transform:translate(108%)}}@keyframes groom-invite{0%,to{transform:translateY(0)rotate(0)}45%{transform:translateY(-7px)rotate(-1deg)}70%{transform:translateY(-2px)rotate(1deg)}}@keyframes bride-invite{0%,to{transform:translateY(0)rotate(0)}45%{transform:translateY(-7px)rotate(1deg)}70%{transform:translateY(-2px)rotate(-1deg)}}@keyframes fade-up{to{opacity:1;transform:translateY(0)}}@keyframes copy-in{to{opacity:1;transform:translate(-50%)}}@keyframes enter-breathe{0%,to{box-shadow:0 0 #a8463b00}50%{box-shadow:0 0 0 7px #a8463b17}}@keyframes prompt-pulse{0%,to{opacity:.6;transform:translate(-50%)}50%{opacity:1;transform:translate(-50%,5px)}}@media (width<=700px){.section-frame{padding-left:1.25rem;padding-right:1.25rem}.letter-sheet{min-height:122vw}.letter-sign{bottom:27px;right:31px}.vertical-label{top:36px;left:28px}.seal-small{top:31px;right:31px}.story-heading,.gallery-heading{gap:1.4rem;margin-top:3rem;margin-bottom:3.3rem}.story-item{grid-template-columns:55px 1fr;gap:1.25rem;padding-bottom:3.8rem;padding-left:1.7rem}.story-index{left:-3.2rem}.story-item time{font-size:1.25rem}.story-item h3{font-size:1.05rem}.couple-layout,.info-layout{grid-template-columns:1fr;gap:3.5rem}.couple-copy{padding-left:.2rem}.portrait.tilted{justify-self:end;width:88%}.gallery-grid{gap:3rem .7rem}.gallery-main{grid-column:1/13}.small-a{grid-column:7/13;margin-top:1.5rem!important}.small-b{grid-column:1/7;margin-top:0!important}.gallery-wide{grid-column:2/13}.gallery-tall{grid-column:1/7;margin-top:-1rem!important}.info-details{grid-template-columns:1fr auto;gap:1rem}.ending{min-height:92vh}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--page-width:min(100vw, 56.25svh);--page-height:min(177.778vw, 100svh);--paper:#fcf2f0;--paper-deep:#f2dedc;--ink:#452b31;--muted:#80656b;--red:#9e3447;--gold:#ad8d60;--line:#9e34472b;color:var(--ink);background:#e6e1e2}html,body{background:#e6e1e2}.app-shell{width:var(--page-width);background:var(--paper);margin:0 auto}.app-shell:before{display:none}.section-frame,.opening.section-frame{width:100%;height:var(--page-height);min-height:0;max-height:var(--page-height);background:var(--paper);scrollbar-width:thin;margin:0;padding:8%;overflow:hidden auto}.section-frame[data-reveal]{opacity:1;transform:none}.section-frame :is(h2,h3,p,span,strong,time,small,figcaption,button){letter-spacing:0}.section-frame h2{font-size:26px;line-height:1.45}.section-kicker{color:var(--muted);letter-spacing:0;font-size:9px}.brush-caption{color:var(--red);font-size:12px}.opening.section-frame{padding:0;overflow:hidden}.opening-stage{background:var(--paper);width:100%;height:100%}.wedding-background{background:var(--paper)}.wedding-background:before{background:var(--paper-deep);opacity:.3}.background-lattice{opacity:.12;border-color:var(--red)}.background-arch{border-color:var(--line);box-shadow:none}.background-knot{color:var(--red);opacity:.25;font-size:24px}.curtain{background:linear-gradient(90deg, #702638, var(--red) 55%, #7d2a3d);width:66%}.opening-started .curtain-left{animation-name:curtain-left-open}.opening-started .curtain-right{animation-name:curtain-right-open}.opening-kicker{color:var(--muted)}.opening-vignette{display:none}.opening-enter{background:var(--paper);border-color:var(--red)}.opening-stage .real-character{z-index:3;opacity:0;border-radius:0;bottom:9%;overflow:visible}.opening-stage .real-character img{object-fit:contain;filter:saturate(.86)contrast(.95)sepia(.04)brightness(1.03)drop-shadow(0 8px 8px #4b2b1c29);mix-blend-mode:normal;width:100%;max-width:none;height:100%;inset:0}.opening-stage .real-character.character-groom{aspect-ratio:1086/1448;width:auto;height:48%;left:2%;transform:translate(-16%)}.opening-stage .real-character.character-bride{aspect-ratio:1023/1537;width:auto;height:45%;right:1%;transform:translate(16%)}.music-control{right:max(12px, calc((100vw - var(--page-width)) / 2 + 12px));top:max(12px, env(safe-area-inset-top));background:var(--paper);border-color:var(--line);width:34px;height:34px}.loading-screen{width:var(--page-width);background:var(--paper);margin:0 auto}.letter-sheet{background:var(--paper);height:88%;min-height:0;box-shadow:none;border:1px solid #ae7474;margin:5% 0 0;padding:0;overflow:hidden}.letter-sheet:before{content:"囍";z-index:1;color:#ae7474;border:1px solid #ae7474;border-radius:50%;place-items:center;width:44px;height:44px;font-size:27px;line-height:1;display:grid;position:absolute;top:18px;left:50%;transform:translate(-50%)}.letter-sheet:after{border:1px solid #ae747466;inset:12px}.marriage-background-art{z-index:0;opacity:.24;filter:saturate(.45)sepia(.08)contrast(.92);mix-blend-mode:multiply;background:url(/images/marriage-reference.jpg) 50%/auto 100% no-repeat;position:absolute;inset:0}.marriage-background-mask{z-index:1;background:var(--paper);position:absolute;inset:20% 5% 17%;box-shadow:inset 0 0 30px #fcf2f033}.seal-small{width:25px;height:25px;font-size:14px;top:20px;right:18px}.marriage-background-edge-mask{z-index:1;background:var(--paper);width:7%;position:absolute;top:20%;bottom:17%;right:1%}.marriage-content{z-index:2;flex-direction:row-reverse;justify-content:center;align-items:center;gap:clamp(8px,2.2vw,16px);width:100%;height:100%;padding:70px 24px 72px;display:flex;position:relative}.marriage-title,.marriage-certify,.marriage-column,.marriage-names{font-synthesis:none;font-family:Ma Shan Zheng,Kaiti SC,STKaiti,KaiTi,Hanzipen SC,Hiragino Mincho ProN,Songti SC,serif}.marriage-title,.marriage-certify{writing-mode:vertical-rl;text-orientation:upright;color:#2f4246;white-space:nowrap;flex:none;font-size:34px;line-height:1.1;display:block}.marriage-title{color:#452b31;font-size:42px}.marriage-certify{margin-right:4px;font-size:36px}.marriage-columns{flex-direction:row-reverse;justify-content:center;align-items:flex-start;gap:clamp(6px,1.8vw,12px);min-width:0;max-width:80%;display:flex}.marriage-column{color:#283d42;flex-direction:column;align-items:center;gap:18px;min-width:20px;display:flex}.marriage-column span{writing-mode:vertical-rl;text-orientation:mixed;white-space:nowrap;letter-spacing:.04em;font-size:clamp(15px,3.8vw,20px);line-height:1.32;display:block}.marriage-names{z-index:3;color:#2f4246;white-space:nowrap;gap:46px;font-size:19px;font-weight:500;display:flex;position:absolute;bottom:20%;left:50%;transform:translate(-50%)}.marriage-names span{writing-mode:vertical-rl}.story.section-frame{flex-direction:column;padding:6%;font-family:Ma Shan Zheng,Kaiti SC,STKaiti,KaiTi,Hanzipen SC,Hiragino Mincho ProN,Songti SC,serif;display:flex;overflow:hidden}.story-heading,.gallery-heading{gap:12px;margin:12px 0 10px}.story-heading h2,.gallery-heading h2{font-size:21px}.story-list{border-left:1px solid var(--red);flex:1;grid-template-rows:repeat(6,minmax(0,1fr));min-height:0;margin-left:12px;padding-left:12px;display:grid}.story-item[data-reveal]{opacity:1;transform:none}.story-item{grid-template-columns:36px minmax(0,1fr) 36px;align-items:center;gap:6px;min-height:0;padding:0}.story-item:last-child{padding-bottom:0}.story-item:before{background:var(--red);width:7px;height:7px;top:6px;left:-17px}.story-index{display:none}.story-item time{color:var(--red);letter-spacing:0;font-size:18px;line-height:1.15}.story-copy{min-width:0}.story-item h3{margin:0 0 3px;font-size:15px;line-height:1.25}.story-item p{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:11px;line-height:1.42}.story-photo-slot{border:1px solid var(--line);background:#f2dedc59;width:36px;height:36px}.couple-layout{grid-template-columns:1fr;gap:14px;margin-top:16px}.couple-copy{text-align:center;padding:0}.couple-copy .brush-caption{writing-mode:horizontal-tb;margin-bottom:8px}.couple-copy h2{margin:6px 0;font-size:21px}.couple-copy h2 br{display:none}.couple-copy h2 span{padding:0 8px}.couple-note{margin:6px 0;font-size:11px;line-height:1.6}.couple-copy .seal{display:none}.portrait.tilted{background:var(--paper-deep);width:100%;box-shadow:none;justify-self:center;padding:6px;transform:none}.portrait img{aspect-ratio:1.42;object-fit:cover}.portrait figcaption,figure figcaption{margin-top:6px;font-size:9px}.couple-moments{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.couple-moments img{aspect-ratio:1.18;object-fit:cover;background:var(--paper-deep);width:100%;display:block}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gallery-grid figure{grid-column:auto;min-width:0;margin:0!important}.gallery-grid img{aspect-ratio:1.5;object-fit:cover;height:auto}.gallery-grid .gallery-main{grid-column:1/-1}.gallery-main img{aspect-ratio:2.5}.info.section-frame{flex-direction:column;display:flex;overflow:hidden}.info-main{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:0;padding:14px 0 8px;font-family:Noto Serif SC,Songti SC,STSong,serif;display:flex}.info-main .brush-caption{writing-mode:horizontal-tb;color:var(--red);margin:0 0 18px;font-size:18px}.info-main h2{color:var(--ink);overflow-wrap:anywhere;margin:0;font-size:27px;line-height:1.45}.info-calendar{color:var(--red);margin:10px 0 40px;font-size:14px;line-height:1.6}.info-address{border-top:1px solid var(--line);border-bottom:1px solid var(--line);width:min(100%,280px);color:var(--ink);padding:21px 14px 20px}.info-address span{color:var(--gold);letter-spacing:.12em;margin-bottom:10px;font:10px ui-monospace,monospace;display:block}.info-address p{overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.9}.route-button{border-color:var(--red);color:var(--red);margin-top:26px;font-size:14px}.info-closing{color:var(--muted);text-align:center;margin:40px 0 0;font-size:14px;line-height:2}.info-closing p{margin:0}.invitation.section-frame{flex-direction:column;justify-content:flex-start;align-items:stretch;display:flex}.invitation-center{margin:auto 0}.invitation-center .brush-caption{margin-bottom:24px}.invitation-center h2{font-size:22px;line-height:1.9}.invitation-mark{margin:24px 0;font-size:44px}.invitation-sign{font-size:13px}.ending{background:var(--paper)}.ending h2{font-size:32px}.ending-seal{margin-bottom:24px}.ending-year{margin:28px 0 8px;font-size:32px}.ending-line{font-size:14px}.ending-final{margin-top:28px;font-size:13px}@media (height<=600px),(width<=350px){.section-frame{padding:6%}.story-heading,.gallery-heading{margin:16px 0}.story-heading h2,.gallery-heading h2{font-size:21px}.story-item{padding-bottom:16px}.letter-sheet{height:90%;padding:32px 24px}.letter-content h2{font-size:24px}.letter-content .brush-caption{margin-bottom:10px}.letter-rule{margin:12px auto}.portrait.tilted{width:60%}.couple-layout{gap:12px;margin-top:16px}}
