/* Formal centered cover and crop-safe editorial compositions. */
.ed-cover{display:block;min-height:100svh;text-align:center;padding:28px 5vw 50px}.ed-cover-meta{display:flex;text-align:left}.ed-cover-title{margin:45px auto 30px}.ed-cover h1{font-size:clamp(68px,7.4vw,108px);line-height:.86}.editorial .ed-cover-photo{width:min(450px,78vw);height:auto;aspect-ratio:2/3;margin:0 auto 32px}.ed-cover-photo img{object-fit:contain;object-position:center}.editorial .ed-cover-bottom{max-width:850px;margin:0 auto;display:flex;text-align:left}.ed-cover-bottom a{flex:none}.ed-cover .ed-sky:before{left:-5%;width:110%;top:11%}.ed-cover .ed-sky:after{left:14%;width:72%;top:47%}
.ed-ribbon,.ed-field-cards,.ed-castle-grid,.ed-joy-collage,.ed-sunset-story{position:relative}.ed-ribbon figure,.ed-field-cards figure,.ed-castle-grid figure,.ed-joy-collage figure,.ed-sunset-story figure{background:#cbbda744}.ed-ribbon img,.ed-field-cards img,.ed-castle-grid img,.ed-joy-collage img,.ed-sunset-story img{object-fit:contain;object-position:center}
.ed-ribbon{grid-template-columns:1fr 1fr;gap:22px}.ed-ribbon figure{height:auto;aspect-ratio:2/3}.ed-ribbon p{min-height:420px;writing-mode:horizontal-tb;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;font-size:20px;letter-spacing:.12em}.ed-ribbon p span{margin:18px 0 0}.ed-ribbon figure:last-child{grid-column:1/-1;aspect-ratio:1.5/1}.ed-ribbon figure:last-child img{object-fit:contain}
.ed-field-cards{grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto;gap:22px}.ed-field-cards .ed-card-tall{grid-column:1;grid-row:1/3;height:auto;align-self:stretch;position:relative;background:radial-gradient(circle at 18% 15%,#bea16d22 0 2px,transparent 3px),radial-gradient(circle at 78% 88%,#bea16d22 0 2px,transparent 3px),#24241f}.ed-field-cards .ed-card-tall:before{content:'HAND IN HAND';position:absolute;z-index:2;top:20px;left:0;right:0;text-align:center;font:9px var(--western);letter-spacing:.22em;color:#c9b58f}.ed-field-cards .ed-card-tall img{object-fit:contain}.ed-field-note{grid-column:2;grid-row:1;min-height:300px;height:auto}.ed-field-cards>figure:nth-of-type(2){grid-column:2;grid-row:2;height:auto;aspect-ratio:1.5/1}.ed-field-cards .ed-card-wide{grid-column:1/-1;grid-row:3;height:auto;aspect-ratio:1.5/1}.ed-field-cards figcaption{margin:0;background:#1a1b18;color:#d6c5aa}.ed-field-note:after{content:'02';display:block;font:italic 72px/.8 var(--western);color:#c5a56d2e;align-self:flex-end}
.ed-castle-grid{margin:-55px auto 0;grid-template-columns:1fr 1fr;gap:22px;align-items:stretch}.ed-castle-grid figure,.ed-castle-grid figure:nth-of-type(2),.ed-castle-grid .ed-castle-arch{height:auto;margin:0;border:8px solid #e8dcc7;clip-path:none;aspect-ratio:2/3}.ed-castle-grid blockquote{margin:0;min-height:100%;padding:48px 30px;display:flex;flex-direction:column;align-items:center;justify-content:center}.ed-castle-grid blockquote span{font-size:14px;line-height:2;letter-spacing:.05em;margin-top:28px;color:#675740}.ed-castle-grid .ed-castle-arch{border-radius:48% 48% 0 0;overflow:hidden}.ed-castle-grid:after{content:'TIMELESS';position:absolute;right:-4vw;top:48%;font:italic clamp(58px,10vw,140px)/1 var(--western);letter-spacing:.04em;color:#6f512411;pointer-events:none;transform:rotate(-90deg) translateX(50%);transform-origin:right center;z-index:-1}
.ed-joy-collage{grid-template-columns:1fr 1fr;gap:22px}.ed-joy-collage figure,.ed-joy-collage figure:nth-child(2),.ed-joy-collage figure:nth-child(3){height:auto;margin:0;transform:none}.ed-joy-collage figure:first-child{grid-column:1/-1;aspect-ratio:1.5/1}.ed-joy-collage figure:nth-child(2),.ed-joy-collage figure:nth-child(3){aspect-ratio:2/3}.ed-joy-collage:before{content:'JOY';position:absolute;left:-7vw;bottom:9%;font:italic clamp(90px,16vw,220px)/.8 var(--western);color:#f5d7af0c;pointer-events:none;z-index:2}
.ed-sunset-story{grid-template-columns:1fr 1fr;align-items:stretch}.ed-sunset-story>figure:not(.ed-sunset-wide){height:auto;aspect-ratio:2/3}.ed-sunset-words{height:auto;min-height:0}.ed-sunset-story .ed-sunset-wide{height:auto;min-height:0;aspect-ratio:1.5/1}.ed-field-hero img,.ed-castle-wide img,.ed-sunset-hero img{object-position:center}
.ed-portrait:after,.ed-castle:after,.ed-joy:after{content:'';position:absolute;inset:-30%;z-index:-1;background:linear-gradient(110deg,transparent 42%,#fff5 49%,transparent 56%);animation:composition-light calc(var(--beat)*22) ease-in-out infinite alternate;pointer-events:none}.ed-castle:after{opacity:.35}.ed-joy:after{opacity:.1}.motion-paused .ed-portrait:after,.motion-paused .ed-castle:after,.motion-paused .ed-joy:after{animation-play-state:paused}
@keyframes composition-light{from{transform:translateX(-18%)}to{transform:translateX(18%)}}
@media(max-width:700px){.ed-cover{padding:18px 20px 36px}.ed-cover-title{margin:30px auto 24px}.ed-cover h1{font-size:clamp(57px,18vw,73px)}.editorial .ed-cover-photo{width:min(100%,320px);margin:0 auto 25px}.editorial .ed-cover-bottom{display:block;text-align:center}.ed-ribbon{gap:12px}.ed-ribbon p{min-height:0;padding:25px 15px;font-size:16px}.ed-ribbon figure:last-child{aspect-ratio:1.5/1}.ed-field-cards{grid-template-columns:1fr 1fr;gap:12px;padding:55px 18px 70px}.ed-field-cards .ed-card-tall{grid-column:1;grid-row:1/3;aspect-ratio:auto}.ed-field-note{grid-column:2;grid-row:1;min-height:260px;padding:24px 16px}.ed-field-note:after{font-size:48px}.ed-field-cards>figure:nth-of-type(2){grid-column:2;grid-row:2;aspect-ratio:1.5/1}.ed-field-cards .ed-card-wide{grid-column:1/-1;grid-row:3}.ed-field-cards figcaption{font-size:12px;padding:12px}.ed-castle-grid{margin:-28px 14px 0;gap:12px}.ed-castle-grid figure,.ed-castle-grid figure:nth-of-type(2),.ed-castle-grid .ed-castle-arch{border-width:5px}.ed-castle-grid blockquote{padding:25px 12px;font-size:19px}.ed-castle-grid blockquote span{font-size:12px;margin-top:18px}.ed-joy-collage{grid-template-columns:1fr 1fr;gap:12px;padding:0 16px}.ed-joy-collage figure:first-child{grid-column:1/-1}.ed-joy-collage figure:nth-child(3){grid-column:2;margin:0}.ed-sunset-story{gap:12px}.ed-sunset-words{padding:30px 16px}.ed-sunset-words p{font-size:18px}}
@media(prefers-reduced-motion:reduce){.ed-portrait:after,.ed-castle:after,.ed-joy:after{animation:none!important}}

/* Purposeful type-led fillers complete the editorial grids without adding more photographs. */
.ed-vow-card{position:relative;isolation:isolate;min-height:420px;overflow:hidden;background:linear-gradient(145deg,#181a19,#27251f);color:#e8d8bc;border:1px solid #a98b5d73;padding:42px 30px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.ed-vow-card:before,.ed-vow-card:after{content:'';position:absolute;z-index:-1;width:270px;aspect-ratio:1;border:1px solid #c5a66d48;border-radius:50%;animation:vow-orbit calc(var(--beat)*18) ease-in-out infinite alternate}
.ed-vow-card:before{left:-118px;top:-80px}.ed-vow-card:after{right:-155px;bottom:-130px;animation-direction:alternate-reverse}
.ed-vow-card>span{font:italic 49px/1 var(--western);letter-spacing:.08em;color:#d4b781}.ed-vow-card>span i{font-size:.58em;font-weight:400}.ed-ribbon .ed-vow-card p{min-height:0;padding:0;margin:38px 0 24px;background:none;color:#eee1ce;font:300 20px/2 WeddingElegant,serif;letter-spacing:.13em;writing-mode:horizontal-tb}.ed-vow-card small{font:9px/1.7 var(--western);letter-spacing:.24em;color:#bca47d}
.ed-night-note{position:relative;isolation:isolate;min-height:100%;overflow:hidden;border:1px solid #b899635c;background:radial-gradient(circle at 78% 18%,#d4b77c20 0 2px,transparent 3px),radial-gradient(circle at 18% 75%,#d4b77c18 0 2px,transparent 3px),linear-gradient(145deg,#20211e,#111210);background-size:auto,auto,auto;padding:58px 44px;display:flex;flex-direction:column;justify-content:center;color:#eadcc4}
.ed-night-note:after{content:'';position:absolute;z-index:-1;width:360px;height:160px;border:1px solid #c6a66d3b;border-radius:50%;right:-180px;bottom:18%;transform:rotate(-28deg);animation:night-orbit calc(var(--beat)*16) ease-in-out infinite alternate}
.ed-night-note>span{font:italic 70px/.8 var(--western);color:#c5a56d30}.ed-night-note p{font:300 22px/2 WeddingElegant,serif;letter-spacing:.12em;margin:34px 0}.ed-night-note small{font:italic 12px/1.8 var(--western);letter-spacing:.18em;color:#c9b187}
@keyframes vow-orbit{from{transform:translate3d(-10px,-8px,0) scale(.94)}to{transform:translate3d(18px,14px,0) scale(1.05)}}
@keyframes night-orbit{from{transform:rotate(-28deg) translateX(-12px)}to{transform:rotate(-20deg) translateX(20px)}}
@media(max-width:700px){.ed-vow-card{min-height:0;padding:28px 14px}.ed-vow-card>span{font-size:36px}.ed-ribbon .ed-vow-card p{padding:0;margin:24px 0 18px;font-size:16px}.ed-night-note{min-height:0;padding:32px 18px}.ed-night-note>span{font-size:48px}.ed-night-note p{font-size:17px;margin:22px 0}.ed-night-note small{font-size:9px;letter-spacing:.12em}}
@media(prefers-reduced-motion:reduce){.ed-vow-card:before,.ed-vow-card:after,.ed-night-note:after{animation:none!important}}
.motion-paused .ed-vow-card:before,.motion-paused .ed-vow-card:after,.motion-paused .ed-night-note:after{animation-play-state:paused}

/* Keep both sunset text panels in one typographic voice. */
.ed-sunset-words>span,.ed-night-note>p{font-family:WeddingElegant,"Noto Serif SC","Songti SC",serif;font-weight:300;font-style:normal;letter-spacing:.12em}
.ed-sunset-words>span{font-size:20px;line-height:2}.ed-night-note>p{font-size:20px;line-height:2}
@media(max-width:700px){.ed-sunset-words>span,.ed-night-note>p{font-size:16px;line-height:2;letter-spacing:.08em}}

/* Match the portrait chapter to the same text-left, image-right editorial rhythm. */
.ed-ribbon>p,.ed-ribbon .ed-vow-card>p{font-family:WeddingElegant,"Noto Serif SC","Songti SC",serif;font-size:20px;font-weight:300;font-style:normal;line-height:2;letter-spacing:.12em}
@media(max-width:700px){.ed-ribbon>p,.ed-ribbon .ed-vow-card>p{font-size:16px;line-height:2;letter-spacing:.08em}}

/* Desktop headings keep complete short phrases together; mobile keeps its existing flow. */
@media(min-width:701px){
  .ed-field-hero figcaption,.ed-sunset-hero figcaption{max-width:min(88vw,920px)}
  #portrait-title,#field-title,#joy-title,#sunset-title,.ed-details>h2,.ed-ending>h2{white-space:nowrap}
}

/* Champagne old-money cover: warm, ceremonial, and still connected to the star-orbit motif. */
.ed-cover{background:radial-gradient(circle at 15% 12%,#fffdf8cc 0 8%,transparent 30%),radial-gradient(circle at 88% 68%,#a9855530 0 8%,transparent 34%),linear-gradient(145deg,#f4eee4 0%,#e6d5bc 48%,#ceb18a 100%);color:#352d24}
.ed-cover-meta{border-color:#8e6a3d52;color:#66523a}
.ed-cover-title>p{color:#80633e}.ed-cover h1{color:#372e25;text-shadow:0 1px 0 #fff8}.ed-cover h1 em{color:#9b7445}.ed-cover h2{color:#514130}
.editorial .ed-cover-photo{background:#efe3d1;border-color:#9e784b88;box-shadow:0 24px 65px #6e4d2730,0 1px 0 #fff inset}
.ed-cover-photo figcaption{background:#403326dc;color:#f1dfc1}
.editorial .ed-cover-bottom{border-color:#8e6a3d52}.ed-cover-bottom p{color:#5f4d39}.ed-cover-bottom a{border-color:#8c683f88;background:#fff8;color:#443627;box-shadow:0 8px 24px #79572e1a}
.ed-cover .ed-sky{background:radial-gradient(ellipse at 20% 45%,#9a75412b,transparent 48%)}
.ed-cover .ed-sky:before,.ed-cover .ed-sky:after{border-color:#92704452}
.ed-cover .ed-sky i{background:#9b7440;box-shadow:0 0 9px #b88c4b99}.ed-cover .ed-sky b{background:linear-gradient(90deg,transparent,#9d713b)}

/* A continuous bilingual date lockup replaces the isolated oversized day number. */
.ed-date{display:flex;flex-direction:column;align-items:center;gap:7px;margin:42px 0 34px}
.ed-date strong{font:300 clamp(44px,5.5vw,72px)/1.25 WeddingElegant,"Noto Serif SC","Songti SC",serif;letter-spacing:.08em;color:#332b23;white-space:nowrap}
.ed-date>span{font:300 15px/1.6 WeddingElegant,"Noto Serif SC","Songti SC",serif;letter-spacing:.22em;color:#63513a;text-align:center}
.ed-date>small{font:10px/1.5 var(--western);letter-spacing:.26em;color:#8b704b}
@media(max-width:700px){.ed-date{gap:6px;margin:34px 0 28px}.ed-date strong{font-size:39px;letter-spacing:.04em}.ed-date>span{font-size:14px;letter-spacing:.16em}.ed-date>small{font-size:9px;letter-spacing:.2em}}
