 :root {
  --cream: #f5efe5; --paper: #fffdf9; --brown: #4b3028; --brown2: #725247;
  --gold: #b18a52; --gold-light: #d9bd8b; --ink: #30241f; --muted: #796a61;
  --line: rgba(75,48,40,.17); --rose: #a76b63;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans",sans-serif;line-height:1.7}h1,h2,h3,.brand{font-family:"Cormorant Garamond",serif;font-weight:500;line-height:1.05}h1{font-size:clamp(3.4rem,7vw,6.5rem);margin:12px 0 22px}h2{font-size:clamp(2.4rem,4vw,4rem);margin:12px 0 20px}h3{font-size:2rem;margin:10px 0}p{margin:0 0 16px}.hidden{display:none!important}.eyebrow{font-size:.68rem;letter-spacing:.22em;font-weight:600;color:var(--gold);text-transform:uppercase}.ornament{font-size:1.6rem;letter-spacing:.4em;color:var(--gold);margin:22px 0}.ornament.dark{color:var(--brown2)}em{font-weight:400;color:var(--gold);font-style:italic}.button{display:inline-flex;gap:20px;align-items:center;justify-content:center;border:1px solid var(--brown);background:var(--brown);color:white;text-decoration:none;padding:14px 22px;font:500 .82rem "DM Sans",sans-serif;letter-spacing:.04em;cursor:pointer;transition:.2s}.button:hover{background:var(--brown2);transform:translateY(-2px)}.button-gold{background:var(--gold);border-color:var(--gold);color:#fff}.button-outline{background:transparent;color:var(--brown);border-color:var(--gold)}.button-outline:hover{color:white;background:var(--brown)}.cover{min-height:100svh;display:grid;place-items:center;position:relative;overflow:hidden;background:var(--cream)}.cover-image{position:absolute;inset:0;background:linear-gradient(90deg,rgba(245,239,229,.96) 0%,rgba(245,239,229,.86) 42%,rgba(245,239,229,.2) 100%),url("images/pengantin-jawa.png") center/cover;opacity:.95}.cover-content{position:relative;width:min(620px,90%);margin:50px auto 50px 8%;text-align:left}.cover-content h1{color:var(--brown)}.cover-content h1 span,.footer h2 span,.brand span{color:var(--gold)}.cover-date{letter-spacing:.08em;color:var(--brown2)}.guest-label{margin-top:28px;margin-bottom:2px;color:var(--muted);font-size:.88rem}.cover-content h2{font-size:1.6rem;margin:0 0 10px}.cover-note{max-width:410px;color:var(--muted);margin-bottom:25px}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 7%;border-bottom:1px solid var(--line);background:rgba(255,253,249,.94);position:sticky;top:0;z-index:10;backdrop-filter:blur(10px)}.brand{text-decoration:none;font-size:2rem;color:var(--brown)}.nav-links{display:flex;gap:26px}.nav-links a{color:var(--brown2);text-decoration:none;font-size:.82rem}.nav-links a:hover{color:var(--gold)}.section{padding:100px max(7%,calc((100% - 1120px)/2))}.hero{min-height:650px;display:grid;grid-template-columns:1fr 1fr;gap:7%;align-items:center;position:relative;overflow:hidden}.hero-copy{position:relative;z-index:1}.hero-copy .lead{max-width:420px;color:var(--muted);font-size:1.05rem}.hero-meta{display:flex;align-items:center;gap:13px;margin:28px 0;color:var(--brown2);font-size:.78rem;flex-wrap:wrap}.hero-meta i{width:4px;height:4px;background:var(--gold);border-radius:50%}.hero-photo{position:relative;z-index:1}.hero-photo img{display:block;width:100%;height:480px;object-fit:cover;object-position:70% center}.photo-caption{display:block;text-align:right;padding-top:12px;font-size:.68rem;letter-spacing:.12em;color:var(--muted)}.hero-watermark{position:absolute;right:2%;bottom:-45px;font-size:15rem;color:rgba(177,138,82,.07);pointer-events:none}.intro{text-align:center;background:var(--cream)}.intro h2{font-size:clamp(2.2rem,4vw,3.5rem)}.narrow{max-width:650px;margin:0 auto;color:var(--muted)}.section-heading{text-align:center;max-width:650px;margin:0 auto 55px}.section-heading>p:last-child{color:var(--muted)}.couple{background:var(--paper)}.couple-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:40px;align-items:center;max-width:900px;margin:auto;text-align:center}.person-image{height:360px;overflow:hidden;background:var(--cream);margin-bottom:25px}.person-image img{width:100%;height:100%;object-fit:cover;object-position:72% center;transition:transform .5s}.person-image:hover img{transform:scale(1.04)}.person-image-right img{object-position:58% center}.person h3{font-size:2.5rem}.person>p:last-child{color:var(--muted);font-size:.9rem}.ampersand{font:italic 3.5rem "Cormorant Garamond",serif;color:var(--gold)}.countdown{text-align:center;background:var(--brown);color:var(--cream)}.countdown .eyebrow{color:var(--gold-light)}.countdown h2 em{color:var(--gold-light)}.timer{display:flex;justify-content:center;gap:clamp(20px,5vw,70px);margin:42px 0}.timer div{display:flex;flex-direction:column;min-width:70px}.timer strong{font:500 clamp(2.5rem,5vw,4.5rem) "Cormorant Garamond",serif;color:var(--gold-light)}.timer span{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#d7c7b7}.countdown .button-outline{border-color:var(--gold-light);color:var(--cream)}.story{background:var(--cream)}.timeline{max-width:700px;margin:auto;border-left:1px solid var(--gold-light);padding-left:38px}.timeline article{position:relative;padding:0 0 30px}.timeline article:last-child{padding-bottom:0}.timeline-dot{position:absolute;left:-44px;top:4px;width:12px;height:12px;border:1px solid var(--gold);background:var(--cream);border-radius:50%}.timeline h3{font-size:1.8rem}.timeline article>p:last-child{color:var(--muted);max-width:600px}.event{text-align:center}.event-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;max-width:850px;margin:0 auto 35px}.event-card{padding:38px 24px;border:1px solid var(--line);background:#fffdf9}.event-icon{font-size:2rem;color:var(--gold);margin-bottom:16px}.event-card h3{font-size:1.65rem}.event-card p:not(.eyebrow){color:var(--muted)}hr{border:0;border-top:1px solid var(--line);margin:22px auto;width:45%}.gallery{background:var(--cream)}.gallery-grid{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:16px}.gallery-item{position:relative;min-height:250px;border:0;padding:0;overflow:hidden;background:var(--brown);cursor:pointer;text-align:left}.gallery-item.tall{min-height:400px;grid-row:span 2}.gallery-item img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:70% center;transition:transform .5s;opacity:.85}.gallery-item:hover img{transform:scale(1.05)}.gallery-item span{position:absolute;left:18px;bottom:18px;color:white;font-size:.78rem;letter-spacing:.04em}.small-note{font-size:.75rem;color:var(--muted);margin:18px auto 0;max-width:650px}.gallery .small-note{text-align:center}.rsvp{display:grid;grid-template-columns:.9fr 1.1fr;gap:8%;background:var(--brown);color:var(--cream)}.rsvp .eyebrow{color:var(--gold-light)}.rsvp-copy h2 em{color:var(--gold-light)}.rsvp-copy>p:last-child{max-width:390px;color:#d7c7b7}.rsvp-form,.guest-form{display:grid;gap:17px}.rsvp-form label{display:grid;gap:7px;font-size:.8rem;color:#e4d8cb}.rsvp-form input,.rsvp-form select,.rsvp-form textarea,.guest-form input,.guest-form textarea{width:100%;border:1px solid rgba(255,255,255,.28);padding:13px 14px;background:rgba(255,255,255,.06);color:white;border-radius:0;font:400 .9rem "DM Sans",sans-serif;outline:none}.rsvp-form select option{color:var(--ink)}.rsvp-form input::placeholder,.rsvp-form textarea::placeholder{color:#c5b3a6}.rsvp-form .button{justify-self:start;background:var(--gold);border-color:var(--gold)}.rsvp-form .small-note{color:#d7c7b7;margin:0}.gift{text-align:center;background:var(--cream)}.gift-card{max-width:370px;margin:35px auto 0;padding:30px;background:var(--paper);border:1px solid var(--line)}.gift-symbol{font-size:2rem;color:var(--gold)}.gift-card h3{margin:10px}.account-number{font-size:1.2rem;letter-spacing:.1em;color:var(--brown);font-weight:600}.guestbook{text-align:center}.guest-form{max-width:600px;margin:0 auto 30px}.guest-form input,.guest-form textarea{color:var(--ink);border-color:var(--line);background:white}.guest-form input::placeholder,.guest-form textarea::placeholder{color:#9b8b80}.guest-form .button{justify-self:center}.guestbook-list{display:grid;gap:12px;max-width:600px;margin:auto;text-align:left}.guest-note{padding:18px 22px;background:var(--cream);border-left:2px solid var(--gold)}.guest-note strong{font-family:"Cormorant Garamond",serif;font-size:1.3rem}.guest-note p{margin:4px 0 0;color:var(--muted)}.footer{padding:70px 20px;text-align:center;background:#34231f;color:var(--cream)}.footer h2{font-size:3.5rem;margin:10px}.footer>p:not(.eyebrow){max-width:480px;margin:15px auto;color:#d7c7b7}.footer-date{font-size:.78rem;letter-spacing:.15em}.music-button{margin-top:22px;border:1px solid var(--gold-light);color:var(--cream);background:transparent;padding:10px 16px;cursor:pointer}.lightbox{position:fixed;inset:0;z-index:30;background:rgba(28,18,14,.94);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px}.lightbox img{max-width:min(900px,90vw);max-height:78vh;object-fit:contain}.lightbox p{color:white;margin-top:12px}.lightbox button{position:absolute;right:30px;top:15px;color:white;background:none;border:0;font-size:2.5rem;cursor:pointer}
@media(max-width:760px){.section{padding:72px 6%}.cover-image{background:linear-gradient(90deg,rgba(245,239,229,.94),rgba(245,239,229,.62)),url("images/pengantin-jawa.png") 65% center/cover}.cover-content{margin:40px auto;text-align:center}.cover-note{margin-left:auto;margin-right:auto}.topbar{height:65px;padding:0 5%}.nav-links{gap:12px}.nav-links a{font-size:.7rem}.hero{grid-template-columns:1fr;gap:30px;padding-top:70px}.hero-photo img{height:360px}.hero-watermark{font-size:8rem}.couple-grid{grid-template-columns:1fr;gap:20px}.person-image{height:350px;max-width:440px;margin:0 auto 20px}.ampersand{line-height:.7}.timer{gap:12px}.timer div{min-width:58px}.timer strong{font-size:2.5rem}.timer span{font-size:.58rem}.event-grid{grid-template-columns:1fr}.gallery-grid{grid-template-columns:1fr 1fr}.gallery-item.tall{grid-column:span 2;grid-row:auto;min-height:320px}.gallery-item{min-height:210px}.rsvp{grid-template-columns:1fr;gap:30px}.footer h2{font-size:3rem}}
@media(max-width:390px){.nav-links{gap:8px}.nav-links a{font-size:.63rem}.timer strong{font-size:2rem}.timer div{min-width:50px}.gallery-grid{gap:9px}}
