:root{
  --bg:#1d130c;--text:#f2e6cf;--muted:#b7a688;--accent:#c9a24b;--accent2:#ecd28c;
  --card:rgba(201,162,75,.06);--line:rgba(201,162,75,.45);--btn-text:#2a1a08;
  --f-body:'Jost',sans-serif;--f-head:'Cinzel',serif;--f-script:'Great Vibes',cursive;
  --batik:radial-gradient(ellipse at 0 50%,transparent 52%,rgba(201,162,75,.38) 53% 58%,transparent 59%),
          radial-gradient(ellipse at 100% 50%,transparent 52%,rgba(201,162,75,.38) 53% 58%,transparent 59%),
          radial-gradient(ellipse at 50% 0,transparent 52%,rgba(201,162,75,.38) 53% 58%,transparent 59%),
          radial-gradient(ellipse at 50% 100%,transparent 52%,rgba(201,162,75,.38) 53% 58%,transparent 59%);
}
body{background-color:var(--bg);background-image:var(--batik);background-size:46px 46px}
.section,.hero,.footer{position:relative}
.section::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(29,19,12,.92) 40%,rgba(29,19,12,.55));z-index:-1}
.hero{background:radial-gradient(ellipse at center,rgba(29,19,12,.85) 35%,rgba(29,19,12,.5))}
.eyebrow{font-family:var(--f-head);letter-spacing:.3em}
.jv{font:italic 1.2rem var(--f-body);color:var(--accent2);letter-spacing:.1em;margin:.2rem 0 .6rem}
.btn{font-family:var(--f-head);border-radius:4px}

.cover{background:var(--bg);background-image:var(--batik);background-size:46px 46px;animation:drift 40s linear infinite}
@keyframes drift{to{background-position:46px 46px}}
.cover::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(29,19,12,.94) 35%,rgba(29,19,12,.6))}
.batik-band{position:absolute;left:0;right:0;height:56px;background:linear-gradient(var(--accent),var(--accent)) center/100% 2px no-repeat,var(--batik);background-size:100% 2px,28px 28px;background-color:#2b1b0f;border-block:2px solid var(--accent);z-index:3}
.batik-band.top{top:0}.batik-band.bottom{bottom:0}
.batik-band.static{position:relative;margin-top:2.5rem}
.cover h1{font-size:clamp(3rem,13vw,5rem);line-height:1.15;margin:.6rem 0}
.guest-box{border:1px solid var(--line);background:rgba(29,19,12,.7);border-radius:4px;outline:1px solid var(--line);outline-offset:4px}
.gunungan{width:170px;height:210px;margin:.6rem auto;clip-path:polygon(50% 0,64% 14%,86% 26%,100% 46%,100% 100%,0 100%,0 46%,14% 26%,36% 14%);background:var(--accent);padding:3px}
.gunungan img,.gunungan.ph{clip-path:polygon(50% 0,64% 14%,86% 26%,100% 46%,100% 100%,0 100%,0 46%,14% 26%,36% 14%)}
.gunungan.ph{background:#2b1b0f;width:164px;height:204px;margin:3px}

.hero{padding:6rem 2rem}
.hero .batik-band{position:absolute}
.orn{color:var(--accent);letter-spacing:.6em;font-size:1.1rem;margin-bottom:1rem}
.quote{color:var(--text)}
.frame{position:relative;padding:2rem 1.4rem;border:2px solid var(--accent);outline:1px solid var(--line);outline-offset:6px;background:rgba(29,19,12,.82);margin:1.4rem 0}
.frame h3{font-family:var(--f-script);font-size:2.6rem;color:var(--accent2);font-weight:400}
.frame::before,.frame::after{content:"❖";position:absolute;color:var(--accent);background:#1d130c;padding:0 .4rem;font-size:.9rem}
.frame::before{top:-.7rem;left:50%;transform:translateX(-50%)}.frame::after{bottom:-.7rem;left:50%;transform:translateX(-50%)}
.events{gap:1.6rem}
.gallery.gold .g,.gallery.gold .g-img{border:2px solid var(--accent);border-radius:2px;padding:3px;background:#2b1b0f}
.countdown div{border-radius:2px;border-color:var(--accent);background:rgba(29,19,12,.8)}
.countdown b{font-family:var(--f-head)}
.footer{padding-bottom:0}.footer h3{font-size:3rem}
