@import url("https://fonts.googleapis.com/css2?family=Moul&family=Moulpali&family=Battambang:wght@400;700&family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&family=Great+Vibes&display=swap");:root{--gold:#c27a22;--gold-light:#e0a24a;--gold-deep:#8f520e;--brown:#5f3609;--text:#6b4313;--green:#1f4d2b;--paper:#fbfbfc;--km-display:"Moul",serif;--km-title:"Moulpali","Moul",serif;--km-body:"Battambang",sans-serif;--en-display:"Cormorant Garamond",serif;--en-script:"Great Vibes",cursive;--pattern:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96'%3E%3Cg fill='none' stroke='%23c9963f' stroke-opacity='.09' stroke-width='1'%3E%3Crect x='28' y='28' width='40' height='40'/%3E%3Crect x='28' y='28' width='40' height='40' transform='rotate(45 48 48)'/%3E%3Ccircle cx='48' cy='48' r='9'/%3E%3Cpath d='M0 0L20 20M96 0L76 20M0 96L20 76M96 96L76 76M48 0V8M48 96V88M0 48H8M96 48H88'/%3E%3C/g%3E%3C/svg%3E");--texture:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .55 0 0 0 0 .58 0 0 0 0 .64 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E")}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--text);font-family:var(--km-body);background-color:#eef0f3;background-image:var(--pattern),var(--texture),radial-gradient(ellipse at 20% 10%,#ffffff 0,transparent 55%),radial-gradient(ellipse at 80% 70%,#ffffff 0,transparent 50%),linear-gradient(180deg,#f3f4f7,#e7eaee);background-attachment:fixed;-webkit-font-smoothing:antialiased}a,button{font:inherit;color:inherit}.page{position:relative;min-height:100svh;overflow-x:hidden}.lang-en{font-family:var(--en-display);font-size:18px}.display{margin:0;font-family:var(--km-display);font-weight:400;line-height:1.9}.lang-en .display{font-family:var(--en-display);font-weight:700;letter-spacing:.03em;line-height:1.3}.gold-text{background:linear-gradient(180deg,var(--gold-light) 0,var(--gold) 45%,var(--gold-deep) 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 1px 0 rgba(255,255,255,.8)) drop-shadow(0 2px 3px rgba(150,90,20,.18));padding-block:.45em .2em;margin-block:-.45em -.2em;-webkit-box-decoration-break:clone;box-decoration-break:clone}.body-text{margin:0 auto;max-width:820px;color:var(--text);font-size:clamp(16px,3.9vw,21px);line-height:2.05}.lang-en .body-text{font-size:clamp(19px,4.4vw,24px);line-height:1.7}.label{display:block;color:var(--text);font-size:clamp(16px,3.9vw,22px)}.lang-en .label{text-transform:uppercase;letter-spacing:.18em;font-size:14px;font-weight:700}.script{margin:18px 0 0;color:var(--gold-deep);font-family:var(--en-script);font-size:clamp(38px,9vw,56px);line-height:1.2}.floral-frame,.side-flowers{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}.floral{position:absolute;width:clamp(150px,42vw,330px);height:auto}.floral.tl{top:-8px;left:-8px}.floral.tr{top:-8px;right:-8px;transform:scaleX(-1)}.floral.bl{bottom:-8px;left:-8px;transform:scaleY(-1)}.floral.br{bottom:-8px;right:-8px;transform:scale(-1)}.cover .floral{width:clamp(260px,40vw,520px)}.side-flowers .floral{width:clamp(90px,22vw,180px);top:0}.side-flowers .sl{left:-12px;transform:rotate(-12deg)}.side-flowers .sr{right:-12px;transform:scaleX(-1) rotate(-12deg)}.flourish{width:min(240px,70%);margin:6px auto 20px}.flourish svg{display:block;width:100%;height:auto}.gold-heart{flex:none;filter:drop-shadow(0 2px 3px rgba(150,90,20,.2))}.petals{position:fixed;inset:0;pointer-events:none;z-index:5;overflow:hidden}.petals span{position:absolute;top:-20px;border-radius:80% 0 80% 0;background:linear-gradient(135deg,#fbd3dc,#ef9fb2);opacity:.7;animation:fall linear infinite}@keyframes fall{0%{transform:translateY(-20px) rotate(0);opacity:0}10%{opacity:.75}to{transform:translate(var(--drift),105vh) rotate(540deg);opacity:0}}.lang-switch{position:fixed;top:14px;right:14px;z-index:30;display:inline-flex;padding:3px;border-radius:999px;background:linear-gradient(180deg,#fff6e8,#f3dbb6);box-shadow:0 4px 14px rgba(150,90,20,.2)}.lang-switch button{min-width:44px;padding:4px 11px;border:0;border-radius:999px;background:transparent;color:var(--brown);font-family:var(--km-body);font-size:13px;cursor:pointer}.lang-switch button.active{background:linear-gradient(180deg,#f0bd68,#c98226);color:#fff;font-weight:700}.side-nav{position:fixed;right:10px;top:50%;z-index:30;display:grid;grid-gap:8px;gap:8px;padding:12px 7px;transform:translateY(-50%);border-radius:999px;background:linear-gradient(180deg,#fbefdc,#f1d3a6);box-shadow:0 6px 18px rgba(150,90,20,.22)}.side-nav button{display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:50%;background:transparent;color:#4b3015;cursor:pointer}.side-nav button:hover{background:rgba(255,255,255,.6)}.btn-gold{min-width:200px;min-height:52px;margin-top:28px;padding:0 34px;border:0;border-radius:999px;color:#5b3608;font-family:var(--km-display);font-size:18px;background:linear-gradient(180deg,#fff4dd,#f2cf8f 40%,#d79a45);box-shadow:0 6px 0 #b67a2c,0 12px 24px rgba(150,90,20,.3),inset 0 1px 0 #fff;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;animation:pulse 2.4s ease-in-out infinite}.lang-en .btn-gold{font-family:var(--en-display);font-weight:700;font-size:20px;letter-spacing:.05em}.btn-gold:active{transform:translateY(4px);box-shadow:0 2px 0 #b67a2c,0 6px 14px rgba(150,90,20,.3)}@keyframes pulse{50%{transform:scale(1.04)}}.btn-green,.btn-outline{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 22px;border-radius:999px;text-decoration:none;cursor:pointer}.btn-outline{margin-top:24px;border:1.5px solid var(--gold);color:var(--gold-deep);background:rgba(255,255,255,.6)}.btn-green{margin-top:16px;color:#fff;background:var(--green);box-shadow:0 6px 16px rgba(31,77,43,.25)}.cover{position:relative;min-height:100svh;display:grid;place-items:center;padding:72px 22px 90px;text-align:center}.arch{position:absolute;z-index:-1;left:50%;top:-56px;bottom:-36px;width:calc(100% + 64px);max-width:calc(100vw - 8px);transform:translateX(-50%);pointer-events:none}.pointed-arch{display:block;width:100%;height:100%}.lanterns{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}.lantern{position:absolute;top:0;transform-origin:50% 0;animation:sway 4.5s ease-in-out infinite;filter:drop-shadow(0 4px 8px rgba(240,166,58,.35))}.lantern.l1{left:4%}.lantern.l2{left:12%}.lantern.r1{right:4%}.lantern.r2{right:12%}@media (max-width:760px){.lanterns .lantern{top:-80px}}@keyframes sway{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}.cover-content{position:relative;z-index:1;width:min(100%,520px);padding-top:44px;animation:rise 1s ease both}.cover-title{font-family:var(--km-title);font-size:clamp(24px,7vw,38px)}.lang-en .cover-title{font-family:var(--en-display);text-transform:uppercase;letter-spacing:.14em;font-size:clamp(20px,5vw,28px)}.cover-names{display:flex;flex-direction:column;align-items:center;gap:0;margin:18px 0 16px;font-family:var(--km-display);font-weight:400;font-size:clamp(34px,10vw,56px);line-height:1.75}.lang-en .cover-names{font-family:var(--en-script);font-size:clamp(48px,13vw,72px);line-height:1.25}.cover-respect{font-family:var(--km-title);font-size:clamp(22px,6vw,32px)}.lang-en .cover-respect{font-family:var(--en-script);font-weight:400;font-size:clamp(30px,8vw,40px);letter-spacing:0}.cover-guest{position:relative;display:grid;place-items:center;width:min(88%,420px);min-height:72px;margin:16px auto 36px;padding:6px 26px;border:1.5px solid rgba(194,122,34,.75);border-radius:10px;background:rgba(255,255,255,.75);box-shadow:inset 0 0 0 5px rgba(255,255,255,.75),inset 0 0 0 6px rgba(194,122,34,.35)}.cover-guest:after,.cover-guest:before{content:"";position:absolute;top:50%;width:12px;height:12px;background:linear-gradient(135deg,#e0a24a,#8f520e);transform:translateY(-50%) rotate(45deg)}.cover-guest:before{left:-7px}.cover-guest:after{right:-7px}.cover-guest strong{color:var(--brown);font-size:clamp(26px,7vw,36px);line-height:1.6;word-break:break-word}.lang-en .cover-guest strong{font-style:italic;font-size:clamp(30px,8vw,42px);line-height:1.3}.sheet{position:relative;padding:clamp(80px,14vw,120px) 18px 50px;text-align:center}.sheet-inner{position:relative;z-index:1;width:min(100%,900px);margin:0 auto}.header-title{font-family:var(--km-title);font-size:clamp(22px,5.8vw,46px)}.lang-en .header-title{font-family:var(--en-script);font-weight:400;font-size:clamp(38px,9vw,52px);letter-spacing:0}.parents{display:flex;justify-content:space-between;gap:16px;margin:18px 0 10px;text-align:left;font-size:clamp(16px,3.9vw,22px);color:var(--text)}.parent-col{display:grid;grid-template-columns:auto auto;grid-column-gap:.7em;column-gap:.7em;grid-row-gap:2px;row-gap:2px;align-items:baseline;align-content:end}.parent-col p{display:contents}.parent-col .p-title{white-space:nowrap}.parent-col strong{font-family:var(--km-body);font-weight:700;font-size:clamp(18px,4.6vw,27px);white-space:nowrap}.lang-en .parent-col strong{font-family:var(--en-display);font-weight:700;font-size:clamp(19px,4.6vw,26px)}.honored{margin:22px 0 2px;color:var(--brown);font-size:clamp(17px,4.1vw,44px)}.kbach{width:min(520px,92%);margin:0 auto 14px}.kbach svg{display:block;width:100%;height:auto}.lang-km .body-text,.lang-km .header-title,.lang-km .honored{word-break:keep-all;overflow-wrap:anywhere}.couple-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;grid-gap:10px;gap:10px;margin:22px 0 12px}.couple-row strong{display:block;font-size:clamp(20px,5.4vw,38px)}.lang-en .couple-row strong{font-family:var(--en-script);font-weight:400;font-size:clamp(30px,7vw,52px);letter-spacing:0}.big-date{display:flex;align-items:center;justify-content:center;gap:14px;margin:14px 0 12px;color:var(--brown);font-family:var(--km-display);font-size:clamp(28px,7.2vw,52px);line-height:1.6;scroll-margin-top:90px}.lang-en .big-date{font-family:var(--en-display);font-weight:700}.big-date i{flex:none;width:2px;height:1.1em;background:var(--gold)}.date-text{font-size:clamp(16px,3.9vw,21px);color:var(--brown)}.nw{white-space:nowrap}.guest-line{margin:10px 0 0;color:var(--text);font-size:clamp(16.5px,3.9vw,20px)}.guest-line strong{color:var(--brown)}.section{position:relative;padding:clamp(56px,10vw,90px) 18px;text-align:center}.section>*{position:relative;z-index:1}.section>.side-flowers{position:absolute;z-index:0}.section-title{font-size:clamp(22px,6vw,32px)}.letter-gap{margin-top:48px}.countdown{display:flex;justify-content:center;flex-wrap:wrap;gap:10px}.countdown-item{display:grid;grid-gap:0;gap:0;width:clamp(68px,19vw,96px);padding:12px 4px;border-radius:14px;background:rgba(255,255,255,.75);border:1px solid rgba(214,141,44,.4);box-shadow:0 6px 18px rgba(150,90,20,.08)}.countdown-item strong{color:var(--gold-deep);font-family:var(--en-display);font-size:clamp(28px,7vw,40px);line-height:1.2}.lang-km .countdown-item strong{font-family:var(--km-display);font-weight:400;font-size:clamp(22px,6vw,32px);line-height:1.7}.countdown-item span{font-size:14.5px;color:var(--text)}.program{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:20px;gap:20px;width:min(100%,940px);margin:0 auto;align-items:start}.day-card{padding:26px clamp(16px,4vw,28px);border-radius:18px;background:rgba(255,255,255,.78);border:1px solid rgba(214,141,44,.35);box-shadow:0 10px 28px rgba(150,90,20,.08)}.day-label{font-size:18px}.day-card h3{margin:2px 0 16px;color:var(--brown);font-size:16px}.timeline{list-style:none;margin:0;padding:0;text-align:left}.timeline li{display:grid;grid-template-columns:112px 12px 1fr;align-items:start;grid-gap:10px;gap:10px;padding:9px 0;border-bottom:1px dashed rgba(214,141,44,.35)}.timeline li:last-child{border-bottom:0}.timeline .time{color:var(--gold-deep);font-size:14px;font-weight:700;white-space:nowrap}.timeline .dot{width:10px;height:10px;margin-top:7px;border:2px solid var(--gold);border-radius:50%;background:#fff}.timeline .what{color:var(--brown);font-size:15px;line-height:1.7}.lang-en .timeline .what{font-size:18px;line-height:1.4}.location{width:min(100%,680px);margin:0 auto}.map-image{width:100%;margin-bottom:18px;border-radius:12px}.location-row{display:flex;align-items:center;justify-content:center;gap:clamp(18px,5vw,40px);text-align:left}.qr-box{flex:none}.scan{color:#1d1d1d;font-size:17px;line-height:1.8}.qr{width:132px;padding:6px;border-radius:10px;background:#fff;border:3px solid var(--green)}.qr svg{display:block;width:100%;height:auto}.venue-text h3{margin:0;font-size:21px}.venue-text .body-text{margin:0}.card-preview{display:block;width:min(100%,380px);height:auto;margin:0 auto;border-radius:10px;box-shadow:0 14px 34px rgba(150,90,20,.18)}.card-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:6px}.card-actions .btn-outline{margin-top:16px}.btn-green.disabled{opacity:.5;pointer-events:none}.card-hint{margin:10px 0 0;color:var(--text);font-size:14px}.gallery{columns:200px 3;column-gap:12px;width:min(100%,980px);margin:0 auto}.gallery img{width:100%;margin-bottom:12px;border-radius:12px;border:4px solid #fff;box-shadow:0 8px 22px rgba(0,0,0,.08);page-break-inside:avoid;break-inside:avoid}.gift{width:min(100%,500px);margin:0 auto}.gift-qr{display:block;width:min(230px,70vw);margin:20px auto 10px;padding:10px;border-radius:12px;background:#fff}.gift p{margin:4px 0}.footer{position:relative;min-height:300px;display:grid;place-content:center;justify-items:center;padding:70px 18px;text-align:center}.footer>:not(.floral-frame){position:relative;z-index:1}.footer-names{margin-top:8px;font-size:clamp(20px,5.5vw,28px)}.lang-en .footer-names{font-family:var(--en-script);font-weight:400;font-size:clamp(36px,9vw,48px);letter-spacing:0}.music-btn{position:fixed;right:14px;bottom:18px;z-index:30;display:grid;place-items:center;width:46px;height:46px;border:0;border-radius:50%;color:#5b3608;background:linear-gradient(180deg,#fbefdc,#f1d3a6);box-shadow:0 6px 18px rgba(150,90,20,.25);cursor:pointer}@keyframes rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:none}@media (max-width:720px){.program,.timeline li{grid-template-columns:1fr}.timeline li{gap:0;padding:10px 0}.timeline .dot{display:none}.location-row{flex-direction:column;text-align:center}.side-nav{right:6px;padding:10px 5px}.side-nav button{width:32px;height:32px}.program,.section>div:not(.side-flowers),.section>h2,.sheet-inner{padding:0 34px}.couple-row strong{font-size:clamp(17px,4.8vw,26px)}.countdown{flex-wrap:nowrap;gap:6px}.countdown-item{flex:1 1;width:auto;max-width:80px}.cover .floral{width:clamp(210px,64vw,420px)}}@media (max-width:390px){.header-title{font-size:20px}.honored{font-size:14px}.lang-en .honored{font-size:16px}.lang-en .couple-row strong{font-size:25px;white-space:nowrap}.lang-en .label{letter-spacing:.08em;font-size:12.5px;white-space:nowrap}.couple-row strong{font-size:16px}.parents{font-size:14.5px}.parent-col strong{font-size:16px}.parent-col{column-gap:.45em}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.btn-gold,.lantern,.petals{animation:none}.petals{display:none}.cover-content{animation:none}}