@font-face{font-family:Cormorant;src:url('assets/cormorant-garamond-medium.ttf') format('truetype');font-weight:500;font-display:swap}
:root{--green:#2f4e20;--paper:#fffefa;--soft:#f3f1ea;--ink:#283c23;--muted:#62695d;--line:rgba(47,78,32,.24);--serif:Cormorant,Georgia,serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 Arial,Helvetica,sans-serif}body.modal-open{overflow:hidden}
[hidden]{display:none!important}h1,h2,h3,p,figure{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:4px}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--green);outline-offset:5px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:0;left:20px;z-index:20;padding:12px;background:var(--paper);transform:translateY(-120%)}.skip:focus{transform:none}
.header{min-height:74px;padding:10px 5%;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.monogram{font:500 1.8rem/1 var(--serif);letter-spacing:.04em}.header-location{font-size:.65rem;letter-spacing:.2em;margin-left:35px}.languages{display:flex;align-items:center;gap:2px;font-size:.8rem}.languages button{min-height:44px;min-width:44px;padding:8px;border:0;background:none;color:var(--green)}.languages button[aria-pressed=true]{font-weight:bold;text-decoration:underline;text-underline-offset:6px}
.eyebrow{font-size:.72rem;letter-spacing:.2em;line-height:1.7}.invitation-heading{position:relative;isolation:isolate;overflow:hidden;text-align:center;padding:55px 24px 43px}.invitation-heading:before,.invitation-heading:after{content:'';position:absolute;top:0;bottom:0;width:clamp(100px,15vw,255px);z-index:-1;background:url('kawung-white.svg') center/120px;opacity:.8;pointer-events:none}.invitation-heading:before{left:0;mask-image:linear-gradient(to right,#000,transparent);-webkit-mask-image:linear-gradient(to right,#000,transparent)}.invitation-heading:after{right:0;mask-image:linear-gradient(to left,#000,transparent);-webkit-mask-image:linear-gradient(to left,#000,transparent)}
.hero h1{font:500 clamp(4.5rem,8.8vw,9rem)/1.05 var(--serif);letter-spacing:-.025em;display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap;column-gap:.15em;margin:13px 0 20px;max-width:100%;overflow-wrap:anywhere}.hero h1 .amp{font-size:.58em;font-style:italic}.date{display:block;font-size:.95rem;letter-spacing:.08em}.city{font-size:.8rem;color:var(--muted);margin-top:7px;letter-spacing:.05em}
/* Edge-to-edge photography; crop is independent of the invitation typography. */
.hero-photo{width:100%;overflow:hidden;background:var(--soft)}.hero-image{display:block;width:100%;height:clamp(570px,78svh,900px);object-fit:cover;object-position:center 49%}.invitation-details{padding:39px 24px 45px;text-align:center}.invitation-details .eyebrow{font-size:.67rem;letter-spacing:.13em}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;max-width:100%;padding:12px 30px;border:1px solid var(--green);background:var(--green);color:var(--paper);margin-top:22px;font-size:.875rem}.button:hover{background:#233b18}.to-follow{font-size:.8rem;color:var(--muted);margin-top:17px}
/* A clear kawung motif on white, with a slim woven border between chapters. */
.batik-ribbon{height:48px;background:var(--paper) url('kawung-white.svg') center/74px;border-block:1px solid var(--line);position:relative}.batik-ribbon:after{content:'';position:absolute;inset:5px 0;border-block:1px solid var(--line);pointer-events:none}.setting{padding-top:72px}.setting-copy{text-align:center;padding:0 24px 44px}.setting h2,.gallery-heading h2{font:500 clamp(3.5rem,6.1vw,6.25rem)/1.04 var(--serif);letter-spacing:-.025em;margin:17px 0}.setting-copy>p:not(.eyebrow){font-size:.92rem}.setting-city{color:var(--muted);font-size:.8rem!important;margin-top:3px}.text-link{display:inline-flex;align-items:center;min-height:44px;border-bottom:1px solid var(--line);font-size:.8rem;margin-top:14px;padding:4px 0}.venue-photo{width:100%}.venue-photo img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;object-position:center}.venue-photo figcaption{padding:9px 4%;font-size:.65rem;color:var(--muted);text-align:right}.venue-photo figcaption a{text-decoration:underline;text-underline-offset:3px}
.destination-gallery{padding:80px 0 75px}.gallery-heading{text-align:center;padding:0 24px 38px}.kawung-mark{display:block;width:54px;height:54px;margin:0 auto 22px;background:url('kawung-white.svg') center/54px}.gallery-heading h2{margin:13px 0 17px}.gallery-intro{font-size:.875rem;color:var(--muted);max-width:42ch;margin:auto}.gallery-shell{width:92%;margin:0 auto}.gallery-slide{margin-bottom:34px}.gallery-image-wrap{width:100%;overflow:hidden;background:var(--soft)}.gallery-image-wrap img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;object-position:center;transition:opacity .25s ease}.gallery-shell.is-enhanced .gallery-image-wrap{cursor:zoom-in;touch-action:pan-y}.gallery-slide figcaption{display:flex;justify-content:space-between;align-items:start;gap:25px;padding:22px 0 18px;border-bottom:1px solid var(--line)}.scene-copy h3{font:500 clamp(2rem,3vw,3rem)/1.1 var(--serif);margin-bottom:8px}.scene-copy p{font-size:.8rem;color:var(--muted)}.photo-credit{font-size:.62rem;line-height:1.7;color:var(--muted);text-align:right;padding-top:4px;max-width:44ch}.photo-credit a{text-decoration:underline;text-underline-offset:2px}.gallery-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:-24px}.gallery-navigation{display:flex;align-items:center;gap:15px}.arrow-button{width:46px;height:46px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--line);border-radius:50%;color:inherit;font-size:1.2rem}.arrow-button:hover{background:var(--soft)}.gallery-count{font-size:.7rem;letter-spacing:.14em;white-space:nowrap;font-variant-numeric:tabular-nums}.expand-button{display:flex;align-items:center;gap:9px;min-height:46px;border:0;padding:0;background:none;color:var(--ink);font-size:.75rem}.expand-button>span:first-child{font-size:1.45rem}.closing-ribbon{height:56px}
footer{text-align:center;padding:47px 24px 50px;background:var(--paper);font-size:.8rem}.footer-names{font:500 3rem/1.2 var(--serif);margin-bottom:14px}.footer-names span{font-size:.7em;font-style:italic}.footer-note{font-size:.75rem;color:var(--muted);margin-top:10px}.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);max-width:90%;width:max-content;padding:12px 20px;background:var(--paper);border:1px solid var(--green);z-index:30;text-align:center;font-size:.875rem;box-shadow:0 5px 25px #0002}
.lightbox{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:20px 4%;border:0;background:#171c16;color:var(--paper)}.lightbox[open]{display:flex;flex-direction:column;align-items:center;gap:12px}.lightbox::backdrop{background:#171c16}.lightbox-top{display:flex;align-items:center;justify-content:space-between;width:100%;gap:20px;flex-shrink:0}.lightbox-title{font:500 clamp(1.6rem,3vw,2.5rem)/1.1 var(--serif)}.lightbox-close{border:1px solid #fff6;color:inherit;background:none;width:46px;height:46px;border-radius:50%;font-size:2rem;line-height:1}.lightbox>img{display:block;width:100%;min-height:0;flex:1;object-fit:contain}.lightbox-bottom{display:flex;align-items:center;gap:20px;flex-shrink:0}.lightbox .arrow-button{border-color:#fff6}.lightbox .arrow-button:hover{background:#fff2}.lightbox-credit{font-size:.6rem;text-align:center;flex-shrink:0}.lightbox-credit a{text-decoration:underline}.lightbox :focus-visible{outline-color:var(--paper)}
@media(min-width:1800px){.hero-image{height:950px;object-position:center 47%}}
@media(max-width:700px){.header{min-height:64px;padding:7px 5%;gap:10px}.header-location{display:none}.monogram{font-size:1.6rem}.invitation-heading{padding:39px 20px 32px}.invitation-heading:before,.invitation-heading:after{width:68px;background-size:85px;opacity:.6}.hero h1{font-size:clamp(3.05rem,12vw,5rem);margin:12px 0 17px;line-height:1.1;column-gap:.12em}.date{font-size:.85rem;letter-spacing:.045em}.city{font-size:.75rem}.eyebrow{font-size:.65rem;letter-spacing:.16em}.hero-image{height:auto;aspect-ratio:4/5;object-position:center 58%}.invitation-details{padding:29px 24px 34px}.invitation-details .eyebrow{max-width:34ch;margin:auto;line-height:1.9}.button{margin-top:17px}.to-follow{max-width:35ch;margin:17px auto 0}.batik-ribbon{height:39px;background-size:65px}.setting{padding-top:48px}.setting-copy{padding-bottom:30px}.setting h2,.gallery-heading h2{font-size:clamp(3rem,12vw,4rem)}.venue-photo img{aspect-ratio:4/3;object-position:center}.venue-photo figcaption{font-size:.6rem;padding:9px 5%}.destination-gallery{padding:50px 0}.gallery-heading{padding-bottom:28px}.kawung-mark{width:44px;height:44px;background-size:44px;margin-bottom:17px}.gallery-intro{font-size:.8rem;max-width:30ch}.gallery-shell{width:100%}.gallery-slide figcaption{padding:18px 5%;gap:15px;flex-direction:column}.gallery-image-wrap img{aspect-ratio:4/3}.scene-copy h3{font-size:2.1rem}.scene-copy p{font-size:.75rem}.photo-credit{text-align:left;font-size:.58rem;padding:0;max-width:none}.photo-credit br{display:none}.photo-credit br:after{content:' · '}.gallery-toolbar{padding:0 5%;gap:10px}.gallery-navigation{gap:10px}.expand-button{font-size:.7rem}.arrow-button{width:44px;height:44px}.gallery-count{font-size:.65rem}.closing-ribbon{height:43px}footer{padding:37px 24px}.footer-names{font-size:2.5rem}.lightbox{padding:15px 5%}.lightbox-credit{font-size:.55rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}

/* Small glass controls remain on the photograph at every screen size. */
.gallery-stage{position:relative}
.gallery-overlay{position:absolute;inset:0 0 auto;aspect-ratio:16/9;pointer-events:none;z-index:2}
.gallery-overlay button{pointer-events:auto;color:#fffefa;background:rgba(20,28,18,.38);border:1px solid rgba(255,254,250,.65);box-shadow:0 2px 10px #0002;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:background .2s ease}
.gallery-overlay button:hover{background:rgba(20,28,18,.65)}
.gallery-overlay button:focus-visible{outline-color:#fffefa;outline-offset:4px}
.gallery-overlay .arrow-button{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px}
.overlay-prev{left:22px}.overlay-next{right:22px}
.arrow-button svg,.expand-button svg{display:block;width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.gallery-overlay .gallery-count{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);padding:6px 13px;border-radius:30px;color:#fffefa;background:rgba(20,28,18,.5);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:.65rem}
.gallery-overlay .expand-button{position:absolute;top:18px;right:22px;width:44px;height:44px;min-height:44px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:50%}
.gallery-slide{margin-bottom:0}
.gallery-slide[data-title-en="Prambanan"] img{object-position:center top}
@media(max-width:700px){.gallery-overlay{aspect-ratio:4/3}.gallery-overlay .arrow-button{width:44px;height:44px}.overlay-prev{left:12px}.overlay-next{right:12px}.gallery-overlay .expand-button{top:12px;right:12px}.gallery-overlay .gallery-count{bottom:12px;padding:5px 11px}}

/* Outlined interlocking initials stay sharp without relying on a loaded font. */
.monogram{display:inline-flex;align-items:center;justify-content:center;width:60px;height:64px;flex-shrink:0}
.monogram img{display:block;width:56px;height:64px;object-fit:contain}
.header{padding-block:8px}
@media(max-width:700px){.monogram{width:48px;height:50px}.monogram img{width:44px;height:50px}.header{padding-block:7px}}

.footer-credits{margin-top:18px;font-size:.65rem;color:var(--muted)}
.footer-credits a{text-decoration:underline;text-underline-offset:3px;display:inline-flex;align-items:center;min-height:44px}
.credits-page{max-width:820px;margin:auto;padding:65px 24px 80px}
.credits-page h1{font:500 clamp(2.7rem,7vw,4.5rem)/1.1 var(--serif);margin:15px 0 8px}
.credits-subtitle{color:var(--muted);font-size:.9rem}
.credits-intro{margin:32px 0;font-size:.9rem;line-height:1.8}
.credits-intro p+p{margin-top:16px;color:var(--muted)}
.credit-item{padding:25px 0;border-top:1px solid var(--line)}
.credit-item h2{font:500 2rem/1.2 var(--serif);margin-bottom:12px}
.credit-item p{font-size:.8rem;overflow-wrap:anywhere;line-height:2}
.credit-item a{text-decoration:underline;text-underline-offset:3px}
.credits-back{font-size:.8rem;min-height:44px;display:inline-flex;align-items:center}

.full-names{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;column-gap:.5em;row-gap:2px;font-size:.78rem;letter-spacing:.045em;color:var(--muted);margin:0 auto 22px;max-width:100%;line-height:1.7}
.welcome{max-width:48ch;margin:0 auto;font-size:1.05rem;line-height:1.8;color:var(--ink);text-wrap:pretty}
.invitation-details{padding-block:43px 45px}
@media(max-width:700px){.full-names{font-size:.72rem;letter-spacing:.025em;column-gap:.45em;margin-bottom:18px}.welcome{font-size:.95rem;line-height:1.8;max-width:36ch}.invitation-details{padding-block:32px 34px}}
