@font-face{font-family:Cormorant;src:url(../fonts/cormorant-var.woff2)format("woff2");font-weight:300 700;font-style:normal;font-display:swap}@font-face{font-family:Cormorant;src:url(../fonts/cormorant-var-italic.woff2)format("woff2");font-weight:300 700;font-style:italic;font-display:swap}@font-face{font-family:Instrument Sans;src:url(../fonts/instrument-var.woff2)format("woff2");font-weight:400 700;font-style:normal;font-display:swap}@property --night{syntax:"<number>";inherits:true;initial-value:0}:root{--night:0;--cut:clamp(0, calc((var(--night) - .44) / .12), 1);--mix:calc(var(--cut) * 100%);--paper-day:#f2ede4;--paper-night:#14100c;--deep-day:#e7dfd1;--deep-night:#1f1a14;--ink-day:#16130f;--ink-night:#efe8d9;--ink2-day:#4b453b;--ink2-night:#b6ad9b;--ink3-day:#6d6659;--ink3-night:#968e7d;--thread-day:#ba4029;--thread-night:#f4643f;--paper:color-mix(in oklab, var(--paper-night) var(--mix), var(--paper-day));--paper-deep:color-mix(in oklab, var(--deep-night) var(--mix), var(--deep-day));--ink:color-mix(in oklab, var(--ink-night) var(--mix), var(--ink-day));--ink-2:color-mix(in oklab, var(--ink2-night) var(--mix), var(--ink2-day));--ink-3:color-mix(in oklab, var(--ink3-night) var(--mix), var(--ink3-day));--thread:color-mix(in oklab, var(--thread-night) var(--mix), var(--thread-day));--rule:color-mix(in srgb, var(--ink) 16%, transparent);--serif:"Cormorant", "Songti SC", "STSong", "Noto Serif CJK SC", serif;--sans:"Instrument Sans", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--measure:min(880px, 88vw);--cp:0;--tp:0;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-text-size-adjust:100%}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--serif);font-synthesis-weight:none;margin:0;font-size:17px;line-height:1.55;transition:background-color .12s linear,color .12s linear;overflow-x:hidden}body:after{content:"";z-index:60;pointer-events:none;opacity:calc(.05 * (1 - var(--night)));mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}body.holding{-webkit-user-select:none;user-select:none;cursor:grabbing}::selection{background:var(--thread);color:var(--paper)}:focus-visible{outline:2px solid var(--thread);outline-offset:4px;border-radius:1px}.moon{z-index:0;pointer-events:none;opacity:clamp(0, calc((var(--night) - .66) * 3), 1);position:fixed;inset:0}.moon__disc{aspect-ratio:1;width:min(15vmin,118px);transform:translate(-50%, -50%) translateY(calc((1 - var(--tp)) * 6vh));background:radial-gradient(circle,#fcf8ecf0 0%,#f8f2e2e6 58%,#ece4cd8c 82%,#ece4cd00 100%);border-radius:50%;position:absolute;top:13%;left:74%}.moon__disc:after{content:"";background:radial-gradient(circle,#f0e8d017 0%,#f0e8d00b 34%,#f0e8d000 68%);border-radius:50%;position:absolute;inset:-180%}.stage{z-index:1;pointer-events:none;position:fixed;inset:0}.pull-backdrop{z-index:1;pointer-events:none;opacity:0;position:fixed;top:0;left:0;overflow:hidden}.pull-backdrop img{filter:blur(clamp(2px,.35vw,3px));max-width:none;position:absolute}.page{z-index:2;position:relative}.page,.colophon{opacity:calc(1 - 4 * var(--cut) * (1 - var(--cut)))}.skip{z-index:80;background:var(--ink);color:var(--paper);font:500 12px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;padding:10px 16px;text-decoration:none;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip:focus{transform:none}.chapter{padding-inline:max(20px, env(safe-area-inset-left));flex-direction:column;align-items:center;display:flex;position:relative}.hold{grid-template-columns:minmax(0,1fr);align-content:center;place-items:center;width:100%;min-height:100svh;display:grid;position:sticky;top:0}.meta{font:500 11px/1.4 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3);margin:0}.index{font:400 16px/1.4 var(--sans);letter-spacing:.16em;color:var(--thread);margin:0 0 .9rem}.lead{letter-spacing:-.012em;text-wrap:balance;margin:0;font-size:clamp(1.5rem,3.4vw,2.5rem);font-weight:300;line-height:1.45}.body{color:var(--ink-2);max-width:34em;font-size:clamp(1.02rem,1.5vw,1.2rem);line-height:1.9}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.overture{justify-content:center;min-height:100svh;padding-block:clamp(32px,7svh,72px)}.overture__inner{text-align:center;justify-items:center;gap:clamp(24px,5svh,48px);width:min(880px,88vw);display:grid}.overture .meta{font:500 clamp(21px, 3vw, 28px)/1.6 var(--serif);letter-spacing:.07em;color:var(--ink)}.names{gap:clamp(32px,6svh,64px);width:100%;margin:0;display:grid}.names__row{justify-content:center;display:flex}.name{letter-spacing:.12em;text-indent:.12em;white-space:nowrap;font-size:clamp(50px,11.5vw,112px);font-weight:300;line-height:1.2}.overture__meta{justify-items:center;gap:1rem;display:grid}.overture__date{font:500 clamp(20px, 2.4vw, 25px)/1.6 var(--sans);color:var(--ink);gap:.5em;margin:0;display:grid}.overture__venue{font-family:var(--serif);font-size:clamp(20px,2.2vw,24px);line-height:1.6}.hint{font:400 15px/1.6 var(--sans);letter-spacing:.1em;color:var(--ink-2);margin:0}.jump{font:500 15px/1.6 var(--sans);letter-spacing:.08em;color:var(--ink-2);border-bottom:1px solid var(--rule);padding:5px 0;text-decoration:none}.jump:hover{color:var(--thread);border-color:var(--thread)}.thread{gap:36px;padding-block:clamp(60px,12svh,120px) 12svh}.thread__head{width:min(560px,86vw)}.legend{margin-top:1.4rem}.thread__story{width:min(620px,100%);padding-top:32px;position:relative}.thread__cord{pointer-events:none;width:100%;height:100%;color:var(--thread);position:absolute;inset:0}.thread__moment{justify-items:center;gap:32px;padding-bottom:clamp(144px,20svh,192px);display:grid;position:relative}.thread__moment:last-child{padding-bottom:0}.thread__photo{aspect-ratio:4/5;border:5px solid var(--paper);background:var(--paper-deep);width:min(78vw,380px);box-shadow:0 1px 0 var(--rule);margin:0;position:relative}.thread__photo img{object-fit:contain;width:100%;height:100%;display:block}.thread__pin{z-index:1;border:2px solid var(--thread);background:var(--paper);border-radius:50%;width:10px;height:10px;position:absolute;top:-9px;left:calc(50% - 5px)}.thread__aside{text-align:center;white-space:pre-line;width:80%;margin:0;font-size:19px;line-height:1.8}.pair{gap:22px;width:min(490px,80%);display:grid}.voice{margin:0;font-size:clamp(19px,2.7vw,23px);font-weight:300;line-height:1.75}.voice--a{text-align:left}.voice--b{text-align:right}.voice__who{font:500 13px/1.5 var(--sans);letter-spacing:.16em;color:var(--thread);margin-bottom:.5rem;display:block}.pull{min-height:175svh}.pull__inner{text-align:center;justify-items:center;gap:clamp(28px,4svh,48px);width:min(720px,88vw);padding-block:4svh;display:grid}.pull__photo{touch-action:pan-y pinch-zoom;-webkit-user-select:none;user-select:none;width:100%;height:clamp(240px,52svh,480px);position:relative}.pull__handle{touch-action:none;cursor:grab;position:absolute;inset:0}.pull__note{font:400 clamp(14px, 1.3vw, 18px)/1.6 var(--serif);letter-spacing:.06em;color:var(--thread);white-space:nowrap;pointer-events:none;opacity:0;will-change:transform, opacity;margin:0;position:fixed;top:0;left:0}.pull__copy{width:100%;max-width:620px}.pull__copy .body{white-space:pre-line;margin:1rem auto 0}.caption{font:400 14px/1.7 var(--sans);letter-spacing:.04em;color:var(--ink-2)}.tie{min-height:235svh}.tie__inner{text-align:center;grid-template-columns:minmax(0,1fr);justify-items:center;gap:12px;width:min(760px,92vw);padding-block:clamp(20px,4svh,40px);display:grid}.tie__inner>.index{margin-bottom:0}.tie__stack{align-items:center;width:100%;min-height:112px;display:grid}.tie__stack>*{grid-area:1/1}.tie__first{opacity:clamp(0, calc(3.34 - var(--tp) * 8.34), 1);justify-items:center;gap:10px;display:grid}.tie__before{color:var(--ink-2);margin:0;font-size:clamp(17px,2.6vw,24px)}.tie__headline{text-wrap:balance;transform:scale(calc(1 + var(--tp) * .04));margin:0;font-size:clamp(34px,9vw,68px);font-weight:300;line-height:1.3}.tie__merged{white-space:pre-line;opacity:clamp(0, calc(var(--tp) * 7.15 - 3), 1);margin:0;font-size:clamp(24px,4.5vw,36px);font-weight:300;line-height:1.6}.tie__knot{width:min(96vw,1000px);height:clamp(200px,32svh,300px)}.tie__after{font:400 clamp(36px, 5vw, 44px)/1.5 var(--serif);white-space:pre-line;color:var(--ink);opacity:clamp(0, calc(var(--tp) * 7.15 - 3.9), 1);margin:0}.day{gap:clamp(40px,8svh,72px);padding-block:14svh 16svh}.day__head{width:var(--measure)}.day__head .lead{font-size:clamp(24px,3.5vw,32px)}.day__date{gap:18px;margin:32px 0 0;display:grid}.day__date time{gap:6px;display:grid}.day__year{font-size:clamp(26px,4vw,36px);line-height:1.3}.day__monthday{color:var(--thread);font-size:clamp(54px,13vw,88px);line-height:1.15}.day__calendar{color:var(--ink-2);font-size:clamp(18px,2.5vw,22px)}.schedule{width:var(--measure);margin:0;padding:0;list-style:none;display:grid}.row{border-top:1px solid var(--rule);grid-template-columns:minmax(100px,.55fr) 1fr;align-items:baseline;column-gap:clamp(16px,4vw,40px);padding:clamp(26px,4svh,42px) 0;display:grid}.row:last-child{border-bottom:1px solid var(--rule)}.row[data-active="1"]{border-top-color:#0000}.row__time{font-variant-numeric:lining-nums;letter-spacing:.01em;color:var(--thread);white-space:nowrap;font:italic 500 clamp(38px,7vw,62px)/1.1 Cormorant,Georgia,serif}.row__name{font-size:clamp(23px,3.8vw,32px);font-weight:300;line-height:1.45;display:block}.row__where{color:var(--ink-2);margin-top:.4em;font-size:17px;display:block}.row__note{font:400 15px/1.7 var(--sans);color:var(--ink-2);margin-top:.6em;display:block}.plate{width:var(--measure);gap:.9rem;margin:0;display:grid}.plate__frame{background:var(--paper-deep);aspect-ratio:1920/1281;position:relative;overflow:hidden}.plate__frame img{object-fit:cover;width:100%;height:100%;display:block}.facts{width:var(--measure);border-top:1px solid var(--rule);grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:28px;margin:0;padding-top:2rem;display:grid}.fact dt{font:500 15px/1.6 var(--sans);color:var(--ink-2);margin-bottom:.7rem}.fact dd{margin:0;font-size:20px;line-height:1.75}.ring{padding-block:clamp(80px,14svh,140px) 12px}.ring__inner{text-align:center;justify-items:center;width:100%;display:grid}.ring__message{width:min(58vw,260px);padding-block:12px}.ring__message .index{margin-bottom:24px}.ring__lead{white-space:pre-line;margin:0;font-size:clamp(24px,4vw,32px);font-weight:300;line-height:1.55}.ring__closing{margin:clamp(72px,12svh,104px) 0 0;font-size:clamp(20px,3vw,28px)}.colophon{z-index:2;padding:20px 20px max(88px, calc(64px + env(safe-area-inset-bottom)));text-align:center;border-top:1px solid var(--rule);position:relative}.colophon p{margin:0;font-size:19px;line-height:1.8}.colophon .colophon__date{font:400 clamp(28px, 6.5vw, 38px)/1.5 var(--serif)}.colophon .colophon__calendar{color:var(--ink-2);margin-top:6px;font-size:16px}.colophon__schedule{grid-template-columns:repeat(2,minmax(0,1fr));width:min(360px,100%);margin:26px auto 22px;display:grid}.colophon__schedule p+p{border-left:1px solid var(--rule)}.colophon__schedule time{color:var(--thread);font:italic 500 38px/1.2 Cormorant,Georgia,serif;display:block}.colophon__schedule span{margin-top:6px;font-size:18px;display:block}.colophon .colophon__venue{font-size:20px;line-height:1.6}.colophon .colophon__signature{color:var(--ink-2);margin-top:24px;font-size:17px}@media (width>=800px){.colophon .colophon__date{font-size:clamp(42px,4vw,56px)}.colophon .colophon__calendar{font-size:21px}.colophon__schedule{width:min(520px,100%)}.colophon__schedule time{font-size:54px}.colophon__schedule span{font-size:24px}.colophon .colophon__venue{font-size:27px}.colophon .colophon__signature{font-size:22px}}@media (width<=640px) and (orientation:portrait){.pull__photo{aspect-ratio:4/5;height:auto}}@media (pointer:coarse){.pull__handle{height:var(--pull-touch-height,calc(10svh + 12px));top:30%;bottom:auto;transform:translateY(-50%)}}@media (width<=799px),(pointer:coarse){.colophon{padding-bottom:max(58.667px, calc(38px + env(safe-area-inset-bottom)))}}@media (height<=680px){.overture{padding-block:24px}.overture__inner{gap:20px}.names{gap:28px}.name{font-size:clamp(46px,9vw,70px)}.overture__meta{gap:10px}.overture__date,.overture__venue{font-size:18px}.pull__inner{gap:20px;padding-block:20px}.pull__copy .body{font-size:17px;line-height:1.7}.tie__inner{gap:8px;padding-block:16px}.tie__stack{min-height:100px}}@media (orientation:landscape) and (height<=500px){.hold{position:relative}.pull,.tie{min-height:0}.pull__photo{width:min(100%,97.5svh);height:65svh}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.tie__first{display:none}.tie__merged,.tie__after{opacity:1}}@font-face{font-family:Cover WenKai;src:url(../fonts/cover-wenkai.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+5586,U+5BB6,U+654F,U+6731,U+6C6A}@font-face{font-family:Cover Brush;src:url(../fonts/cover-brush.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+4EEC,U+4F60,U+5171,U+5A5A,U+6211,U+7684,U+793C,U+8BDA,U+8D74,U+9080,U+FF0C}.chapter.overture{padding-block:max(88px, calc(env(safe-area-inset-top) + 72px)) max(64px, calc(env(safe-area-inset-bottom) + 48px))}.overture .overture__inner{gap:clamp(24px,4svh,40px);width:min(880px,100%)}.overture .meta{letter-spacing:.015em;text-wrap:balance;font-family:Cover Brush,Kaiti SC,KaiTi,serif;font-size:clamp(23px,5.8vw,32px);font-weight:400;line-height:1.4}.overture .names{gap:clamp(32px,5svh,52px)}.overture .name{letter-spacing:.055em;text-indent:.055em;font-synthesis:none;font-family:Cover WenKai,Kaiti SC,KaiTi,serif;font-size:clamp(72px,21.5vw,120px);font-weight:400;line-height:1.15}.overture .overture__meta{gap:clamp(16px,2.2svh,22px)}.overture .overture__date{font-family:var(--serif);gap:6px;font-weight:400;line-height:1.4}.overture__date time{letter-spacing:.025em;white-space:nowrap;font-size:clamp(26px,6.8vw,34px)}.overture__calendar{font:400 clamp(16px, 4.1vw, 18px)/1.5 var(--sans);color:var(--ink-2);letter-spacing:.04em;white-space:nowrap}.overture .overture__venue{font:400 clamp(19px, 4.9vw, 23px)/1.55 var(--serif);letter-spacing:.045em;white-space:nowrap;gap:2px;margin:0;display:grid}.overture__room{letter-spacing:.09em;font-size:.92em}.overture .hint{letter-spacing:.14em;font-size:13px}.overture .overture__jump{top:max(14px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));letter-spacing:.06em;border:0;justify-content:center;align-items:center;gap:9px;min-height:44px;padding:8px 6px;font-size:12px;font-weight:400;line-height:1.4;display:inline-flex;position:absolute}.overture__jump span{border-bottom:1px solid var(--rule);padding-block:4px}.overture__jump:hover span{border-color:currentColor}.overture__jump svg{flex:none}@media (width>=700px){.overture .overture__jump{font-size:14px;top:24px;right:clamp(28px,4vw,64px)}}@media (height<=680px){.chapter.overture{padding-block:max(78px, calc(env(safe-area-inset-top) + 64px)) max(54px, calc(env(safe-area-inset-bottom) + 40px))}.overture .overture__inner{gap:22px}.overture .meta{font-size:22px}.overture .names{gap:30px}.overture .name{font-size:clamp(64px,20vw,90px)}.overture .overture__meta{gap:14px}.overture__date time{font-size:26px}.overture__calendar{font-size:16px}.overture .overture__venue{font-size:19px}}.day>.plate{display:block}.day>.plate>.caption{margin-block-start:.9rem}.day .plate__frame img{height:auto}.reading-nav{z-index:70;right:max(18px, env(safe-area-inset-right));bottom:max(18px, env(safe-area-inset-bottom));border:1px solid color-mix(in srgb, var(--thread) 45%, transparent);background:var(--paper);width:50px;height:50px;color:var(--thread);box-shadow:0 2px 12px color-mix(in srgb, var(--ink) 5%, transparent);cursor:pointer;touch-action:manipulation;border-radius:50%;place-items:center;padding:12px;display:grid;position:fixed}.reading-nav svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:24px;height:24px;transition:transform .24s}.reading-nav[data-direction=up] svg{transform:rotate(180deg)}.reading-nav[aria-disabled=true]{cursor:default}@media (hover:hover){.reading-nav:hover{border-color:var(--thread)}}
