:root{--bg:#f5f9ff;--fg:#2f4660;--accent:#4f86c6;--on-accent:#fff;--card:rgba(255,255,255,.88);--head:'Playfair Display',Georgia,serif;--fxanim:fxReveal;--fxdur:.9s;--step:110ms;--cover-bg:linear-gradient(#f5f9ffb0,#e3eefacc 55%,#cfe2f6f2)}
body{font-family:'Nunito Sans',system-ui,sans-serif;background:linear-gradient(#f5f9ff,#e9f1fb) fixed}
/* cover: foto dari buram menjadi fokus */
.cover,.cover.clear{background-image:none;color:#2f4660}
.cover::before{content:"";position:fixed;inset:0;z-index:-1;background:var(--cover-img,none) center 30%/cover no-repeat;animation:focusIn 3.2s ease-out both}
.cover::after{content:"";position:fixed;inset:0;z-index:-1;background:var(--cover-bg)}
@keyframes focusIn{from{filter:blur(18px);transform:scale(1.12)}to{filter:none;transform:none}}
.cover .inner::before{content:"🕊";display:block;font-size:2.4rem;line-height:1;animation:fade 2.4s both}
.cover h1{font-style:italic;font-weight:500}
.sec h2{font-size:2rem;font-style:italic;font-weight:500}
.sec h2::after{content:"";display:block;width:70px;height:2px;margin:12px auto 0;background:linear-gradient(90deg,transparent,var(--accent),transparent)}
.card{border-radius:28px;box-shadow:0 12px 34px #4f86c622}
.btn{box-shadow:0 6px 18px #4f86c655}
/* foto: bulat */
.pf{width:min(56vw,210px);aspect-ratio:1;border-radius:50%;border:4px solid #fff;padding:0;outline:2px solid var(--accent);outline-offset:6px;box-shadow:0 12px 30px #4f86c633}
.story img{border-radius:50%;border:4px solid #fff;max-width:320px;aspect-ratio:1;max-height:none;box-shadow:0 10px 26px #4f86c62e}
.gal{grid-template-columns:repeat(3,1fr);gap:10px}
.gal img,.gal img:first-child,.gal img:last-child:nth-child(even){grid-column:auto;grid-row:auto;aspect-ratio:1;max-height:none;border-radius:50%;border:3px solid #fff;box-shadow:0 8px 20px #4f86c62e}

/* ===== Animasi khas: fokus lembut dari buram, bulu/awan melayang pelan ===== */
:root{--pva:anFocus;--pvd:1.6s;--pve:ease-out;--cva:anSoft;--cvd:1.3s;--fxmove:anFeather}
@keyframes anFocus{from{opacity:0;filter:blur(18px) brightness(1.25);transform:scale(1.08)}to{opacity:1;filter:none;transform:none}}
@keyframes anSoft{from{opacity:0;filter:blur(8px);transform:translateY(14px)}to{opacity:1;filter:none;transform:none}}
.js .gal img.gi.in,.js .gal img.gi:first-child.in{animation:anFocus 1.5s var(--d,0s) ease-out backwards}
@keyframes anFeather{0%{transform:translate(0,0) rotate(0);filter:blur(1px)}33%{transform:translate(50px,38vh) rotate(25deg);filter:blur(0)}66%{transform:translate(-40px,76vh) rotate(-20deg);filter:blur(1px)}100%{transform:translate(20px,115vh) rotate(15deg)}}
@keyframes anBreath{0%,100%{letter-spacing:0}50%{letter-spacing:.04em}}
.nm{animation:anBreath 6s ease-in-out infinite}
