@font-face{font-family:OperaSans;src:url('/fonts/Manrope-Regular.woff2')}
@font-face{font-family:OperaSans;src:url('/fonts/Manrope-SemiBold.woff2');font-weight:600}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:#120709;color:#f5e8cf;font-family:OperaSans,Arial,sans-serif}
body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:99;box-shadow:inset 0 0 100px #0008}
main{width:450px;margin-left:auto;overflow:hidden;background:#1a090d}
main>section,main>footer{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:74px 48px 86px;background:#17090d;color:#f6e9d2}
main>section:before,main>footer:before{content:"";position:absolute;inset:11px;z-index:-1;border:1px solid #a97b3985;box-shadow:inset 0 0 0 3px #12070ab8,inset 0 0 0 4px #d1a75b35;pointer-events:none}
main>section:after,main>footer:after{content:"◆";position:absolute;top:20px;left:50%;transform:translateX(-50%);color:#c99a4e;font-size:10px;text-shadow:-22px 0 #79501f,22px 0 #79501f}
h1,h2,h3,p,figure,blockquote{margin:0}
h1,h2,h3,.finale-mark{font-family:Georgia,'Times New Roman',serif;font-weight:400}
h2{font-size:clamp(31px,5dvh,43px);line-height:1.05;color:#f3d69e}
h2 em{display:block;color:#fff6e5;font-weight:400}
.act-label{display:block;margin-bottom:12px;color:#d5af69;font-size:7px;font-weight:600;line-height:1.4;letter-spacing:2.5px}
.section-lead{max-width:325px;margin:12px auto 18px;color:#d7c6b1;font-size:10px;line-height:1.7}
.button,.ticket-button,button{font-family:OperaSans,Arial,sans-serif}
a{color:inherit}
.desktop{position:fixed;inset:0 450px 0 0;display:grid;place-items:center;overflow:hidden;background:#16090d url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover no-repeat;color:#f5e7cd;text-align:center}
.desktop:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#09020555,#13070a18 40%,#13070a88),linear-gradient(0deg,#090306c7,#0000 48%,#0903068f)}
.desktop-inner{position:relative;z-index:2;width:min(480px,70%);padding-top:6vh}
.desktop .kicker,.desktop-act{font-size:8px;letter-spacing:3px;color:#d8ae62}
.desktop-act{margin:8px 0 16px}
.desktop-photo{width:150px;height:190px;margin:0 auto 20px;padding:5px;border:1px solid #b98a43;border-radius:80px 80px 8px 8px;background:#190b0e;box-shadow:0 0 0 5px #100609,0 0 0 6px #7c5428,0 18px 40px #0009}
.desktop-photo img{width:100%;height:100%;object-fit:cover;border-radius:72px 72px 4px 4px}
.desktop h2{font-size:clamp(34px,4vw,54px)}
.desktop h2 em{color:#d9ad62}
.desktop p:not(.desktop-act){margin:18px 0;color:#e5d8c5;font:12px/1.8 Georgia,serif}
.desktop a{font-size:9px;letter-spacing:1.3px;text-decoration:none;border-bottom:1px solid #b3884e;padding-bottom:5px}
.cover{overflow:hidden;padding:80px 40px 64px!important;background:#16080c url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover no-repeat!important}
.cover:before{inset:10px;border-color:#d2a3549c;box-shadow:inset 0 0 0 3px #100407d1,inset 0 0 0 4px #efc16a4d}
.cover:after{content:"";inset:0;top:0;left:0;transform:none;background:radial-gradient(ellipse at 50% 46%,#2a10103b 0 23%,#0903069e 76%);z-index:-1}
.stage-copy{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;width:100%;padding-top:8vh}
.cover .act-label{margin:0 0 9px;color:#ecd39d;text-shadow:0 2px 4px #000}
.royal-mark{display:flex;align-items:center;gap:9px;margin-bottom:6px;color:#dab367}
.royal-mark i{font:italic 13px Georgia}
.royal-mark span{font-size:14px}
.presenting{font-size:6px;letter-spacing:3px;color:#caa863}
.cover h1{font-size:clamp(45px,7.2dvh,65px);line-height:.83;letter-spacing:-2px;text-shadow:0 3px 18px #000}
.cover h1 i{display:block;margin:5px 0;color:#d6a85c;font-size:23px;line-height:1}
.cover .date{margin:13px 0;color:#e5c78d;font:italic 12px Georgia;letter-spacing:.6px}
.recipient{width:min(290px,84%);margin:3px 0 12px;padding:10px 18px;border-block:1px solid #a67639b5;background:#14080a8a}
.recipient small{display:block;color:#bd9a62;font-size:6px;letter-spacing:1.8px}
.recipient strong{display:block;margin-top:5px;font:italic 14px Georgia;color:#fff5df;overflow-wrap:anywhere}
.ticket-button{display:flex;align-items:center;gap:11px;min-height:42px;padding:7px 18px;border:1px solid #d0a358;background:linear-gradient(#bd8f45,#76501f);box-shadow:inset 0 0 0 2px #241006,0 8px 24px #0009;color:#fff8e8;font-size:9px;letter-spacing:1px;text-decoration:none}
.ticket-button span{padding-right:11px;border-right:1px dashed #f1d5999c;font-size:6px;letter-spacing:1.5px}
.demo-info{margin-top:9px;color:#b59b75;font-size:6px;letter-spacing:1px}
.footlights{position:absolute;bottom:25px;z-index:3;display:flex;gap:19px}
.footlights i{width:6px;height:6px;border-radius:50%;background:#ffdda0;box-shadow:0 0 7px 3px #ef9e43,0 -10px 24px 7px #dc723359}
.prologue{background:radial-gradient(circle at 50% 50%,#561824 0,#270c13 43%,#12070a 80%)!important}
.prologue .ornament{color:#c79a4d;font-size:27px;margin-bottom:15px}
.script-card{position:relative;width:calc(100% - 20px);max-width:330px;margin-top:22px;padding:28px 26px;border:1px solid #9f753c;background:#efe2ca;color:#3e1a1d;box-shadow:0 20px 50px #0008,inset 0 0 0 5px #f8efd9,inset 0 0 0 6px #b98d4b}
.script-card:before{content:"";position:absolute;inset:-8px;border:1px solid #7a5429;z-index:-1}
.script-card p{font-size:10px;line-height:1.8}
.script-card b{display:block;margin:12px;color:#9d722f}
.script-card blockquote{font:italic 13px/1.55 Georgia;color:#6f3436}
.scene-number{margin-top:22px;color:#ac8348;font:8px Georgia;letter-spacing:4px}
.couple{background:radial-gradient(circle at 50% 40%,#5d1b27 0,#270b12 46%,#120609 78%)!important}
.portrait{position:relative;width:155px;height:210px;margin:17px auto 15px;padding:5px;border:1px solid #c39750;border-radius:82px 82px 5px 5px;background:#17090c;box-shadow:0 0 0 5px #2b0d14,0 0 0 6px #845c2c,0 20px 42px #0008}
.portrait:before,.portrait:after{content:"";position:absolute;top:50%;width:40px;height:1px;background:linear-gradient(90deg,transparent,#c5974c)}
.portrait:before{right:100%}
.portrait:after{left:100%;transform:scaleX(-1)}
.portrait img{width:100%;height:100%;object-fit:cover;border-radius:74px 74px 2px 2px}
.crown{position:absolute;top:-17px;left:50%;z-index:2;transform:translateX(-50%);color:#dbb66d;font-size:23px;text-shadow:0 2px 4px #000}
.names{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;width:100%;max-width:360px}
.names small{color:#bd9151;font-size:6px;letter-spacing:1.3px}
.names h3{margin:4px 0;color:#f2d59a;font-size:20px;line-height:1}
.names p{color:#cbbdaf;font-size:7px;line-height:1.5}
.amp{color:#c39952;font:italic 25px Georgia}
.events{background:linear-gradient(#17090ddd,#17090ddd),url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover!important}
.event-list{display:grid;gap:10px;width:100%;max-width:355px}
.event-card{display:grid;grid-template-columns:45px 1fr;text-align:left;border:1px solid #8f6735;background:#17090de8;box-shadow:inset 0 0 0 4px #2e1217,0 12px 24px #0006}
.event-card>span{display:grid;place-items:center;border-right:1px solid #8f6735;color:#d5ad68;font:18px Georgia}
.event-card>div{padding:11px 14px}
.event-card small{color:#aa8045;font-size:6px;letter-spacing:1.4px}
.event-card h3{color:#f3d69d;font-size:21px}
.event-card time{display:block;color:#cbb9a4;font-size:7px}
.event-card p,.event-card strong{font-size:7px;line-height:1.45}
.event-card .time{margin:3px 0;color:#e2c890;font-size:9px}
.event-card strong{display:block;color:#eee0ca}
.event-card a{display:inline-block;margin-top:6px;color:#d9ae62;font-size:7px;text-underline-offset:3px}
.gallery{background:radial-gradient(circle at 50% 50%,#4b1520,#1b090e 60%,#100608)!important}
.gallery .photos{display:grid;grid-template-columns:1.1fr .9fr;grid-template-rows:1fr 1fr;gap:7px;width:100%;max-width:350px;height:min(45dvh,355px);margin-top:3px}
.photos figure{position:relative;overflow:hidden;border:1px solid #9d733c;padding:4px;background:#16090c}
.photos figure:first-child{grid-row:1/3}
.photos img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.78) contrast(1.06)}
.photos figcaption{position:absolute;left:9px;bottom:8px;padding:3px 8px;background:#16090dd9;color:#e5c480;font:italic 8px Georgia;letter-spacing:1px}
.gift{background:radial-gradient(circle at 50% 50%,#60202a 0,#270c13 48%,#13070a 85%)!important}
.accounts{width:100%;max-width:330px}
.gift-card{position:relative;padding:27px 24px;border:1px solid #af8242;background:linear-gradient(135deg,#e8d4af,#f8edda 52%,#cfad77);color:#3b171b;box-shadow:0 20px 40px #0008,inset 0 0 0 5px #f8ead3,inset 0 0 0 6px #9e743d}
.gift-card:before{content:"♛";position:absolute;top:14px;right:17px;color:#8e642f;font-size:20px}
.gift-card>span,.gift-card>small,.gift-card>b,.gift-card>p{display:block;text-align:left}
.gift-card>span{font:17px Georgia}
.gift-card>small{margin-top:3px;font-size:6px;letter-spacing:2px}
.gift-card>b{margin:20px 0 3px;font:25px Georgia;letter-spacing:2px;overflow-wrap:anywhere}
.gift-card>p{font-size:8px}
.gift-card button{display:block;margin-top:16px;padding:8px 13px;border:1px solid #6f4225;background:#42191c;color:#f9e7c5;font-size:7px;letter-spacing:.8px;cursor:pointer}
.gift-card .copy-status{min-height:10px;margin-top:4px}
.gift-note{margin-top:17px;color:#bfa67e;font:italic 11px Georgia}
.rsvp{background:linear-gradient(#16090def,#16090def),url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover!important}
.rsvp form{display:grid;grid-template-columns:1fr 1fr;gap:6px 9px;width:100%;max-width:345px;margin-top:2px;text-align:left}
.rsvp label{margin-top:2px;color:#caa967;font-size:7px;letter-spacing:.7px}
.rsvp label[for=name],.rsvp label[for=message],.rsvp input#name,.rsvp textarea,.rsvp button,.rsvp #rsvp-status{grid-column:1/-1}
.rsvp input,.rsvp select,.rsvp textarea{width:100%;min-width:0;border:1px solid #805d34;border-radius:0;background:#10070ad9;color:#f7ead5;padding:9px 10px;font:16px OperaSans}
.rsvp textarea{height:55px;resize:none}
.rsvp button{min-height:37px;margin-top:6px;border:1px solid #d1a459;background:linear-gradient(#af7e3b,#69451c);color:#fff7e5;font-size:8px;letter-spacing:1.4px;cursor:pointer}
.rsvp #rsvp-status{margin:0;color:#dbc28f;font-size:8px;text-align:center}
.rsvp #rsvp-status:empty{display:none}
footer{background:radial-gradient(circle at 50% 45%,#591a25,#260b12 47%,#110609 82%)!important}
.finale-mark{margin:8px 0 11px;color:#dfbd79;font-size:28px;letter-spacing:8px}
.finale-mark i{color:#fff0d1;font-size:18px}
footer h2{font-size:36px}
footer>p{max-width:310px;margin:14px auto 0;color:#d5c4af;font:11px/1.75 Georgia}
footer .closing-rule{display:flex;align-items:center;gap:9px;margin:20px 0 5px;color:#d2a75d}
.closing-rule span{width:58px;height:1px;background:#815927}
footer p.date{margin:5px 0;color:#dab66f;font-size:10px;letter-spacing:2px}
footer>small{color:#927b5e;font-size:6px;letter-spacing:2px}
footer>a{margin-top:20px;color:#cfad70;font-size:8px}
main nav{position:fixed;right:20px;bottom:16px;z-index:30;display:flex;align-items:center;justify-content:space-around;width:410px;padding:7px 10px;border:1px solid #a67a3e;border-radius:4px;background:#17090ded;box-shadow:0 9px 30px #0009;backdrop-filter:blur(12px)}
main nav a,main nav button{display:grid;place-items:center;gap:1px;min-width:42px;padding:3px;border:0;background:transparent;color:#e8d4b1;font-size:6px;text-decoration:none}
main nav a span{color:#c79a52;font:10px Georgia}
main nav button{cursor:pointer}
.pause-icon{display:none}
main nav button[aria-pressed=true] .play-icon{display:none}
main nav button[aria-pressed=true] .pause-icon{display:inline}

/* Royal opera art direction: every slide reads as another scene on the same stage. */
:root{--opera-wine:#4b0f1c;--opera-wine-deep:#16070b;--opera-gold:#d5a957;--opera-gold-light:#f1d59a;--opera-ivory:#fff4dd}
main>section,main>footer{overflow:hidden;background-color:var(--opera-wine-deep);background-image:linear-gradient(#16070bd9,#16070bee),url('/images/undangan/opera-kerajaan-eropa/stage.webp');background-position:center;background-size:cover;box-shadow:inset 22px 0 40px #07020466,inset -22px 0 40px #07020466}
main>section:before,main>footer:before{inset:10px;border-color:#c69548a8;box-shadow:inset 0 0 0 2px #120609,inset 0 0 0 3px #5c371d,inset 0 0 0 4px #e0b96735,inset 0 0 28px #0008}
main>section:not(.cover):after,main>footer:after{top:18px;width:88px;height:13px;content:"";background:linear-gradient(90deg,transparent,#9b6b31 22%,#e2bb70 50%,#9b6b31 78%,transparent);clip-path:polygon(0 47%,38% 47%,44% 0,50% 34%,56% 0,62% 47%,100% 47%,100% 55%,62% 55%,56% 100%,50% 67%,44% 100%,38% 55%,0 55%);filter:drop-shadow(0 2px 2px #000)}
h2{color:var(--opera-gold-light);text-shadow:0 2px 12px #000c;letter-spacing:-.02em}
.act-label{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;color:#e6c47f;text-shadow:0 1px 4px #000;letter-spacing:2.1px}
.act-label:before,.act-label:after{content:"";width:24px;height:1px;background:linear-gradient(90deg,transparent,#c89b50)}
.act-label:after{transform:scaleX(-1)}
.section-lead{color:#eadcc7}

.prologue{background:linear-gradient(180deg,#120508c7 0,#280b14cf 42%,#100507ed 100%),radial-gradient(ellipse at 50% 46%,transparent 0 18%,#080204a8 74%),url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover!important}
.prologue:before{background:linear-gradient(90deg,#160309cc 0 5%,transparent 17% 83%,#160309cc 95% 100%);box-shadow:inset 0 0 0 2px #110407,inset 0 0 0 3px #7c542b,inset 0 0 0 4px #e5bb673d,inset 0 0 55px #000b}
.prologue .ornament{margin-bottom:10px;color:#edcd8d;text-shadow:0 0 14px #d18e35}
.prologue h2{color:#f1d59b;text-shadow:0 3px 14px #000,0 0 30px #24080e}
.libretto-frame{position:relative;width:calc(100% - 10px);max-width:342px;margin-top:21px;padding:7px;background:linear-gradient(135deg,#6b431e 0,#f0cb7f 24%,#9a682e 48%,#f5d993 72%,#6e461f 100%);clip-path:polygon(8% 0,39% 0,44% 3%,50% 0,56% 3%,61% 0,92% 0,100% 8%,100% 92%,92% 100%,61% 100%,56% 97%,50% 100%,44% 97%,39% 100%,8% 100%,0 92%,0 8%);filter:drop-shadow(0 24px 25px #000b)}
.libretto-frame:before{content:"";position:absolute;inset:3px;z-index:2;border:1px solid #3e210e;clip-path:inherit;pointer-events:none}
.libretto-frame:after{content:"◆";position:absolute;bottom:1px;left:50%;z-index:3;transform:translateX(-50%);color:#5d3517;font-size:8px;text-shadow:-12px 0 #956128,12px 0 #956128}
.script-card{width:100%;max-width:none;margin:0;padding:38px 27px 28px;border:0;background:linear-gradient(145deg,#fff7e5 0,#ecd9b8 52%,#ddc294 100%);color:#3e1a1d;clip-path:polygon(7% 0,40% 0,45% 3%,50% 1%,55% 3%,60% 0,93% 0,100% 8%,100% 92%,93% 100%,60% 100%,55% 97%,50% 99%,45% 97%,40% 100%,7% 100%,0 92%,0 8%);box-shadow:inset 0 0 0 2px #fff9e9,inset 0 0 0 3px #9b6d36,inset 0 0 28px #895d2029}
.script-card:before{content:"";position:absolute;inset:9px;z-index:0;border:1px solid #a67a424d;box-shadow:none;pointer-events:none}
.script-card:after{content:"R  ♛  S";position:absolute;top:14px;left:50%;width:auto;height:auto;transform:translateX(-50%);border:0;background:transparent;color:#8b5e28;font:11px/1 Georgia;text-align:center;letter-spacing:4px;white-space:nowrap}
.script-card p,.script-card b,.script-card blockquote{position:relative;z-index:1}
.script-card p{color:#4b2925}
.script-card blockquote{color:#72363a}
.scene-number{display:flex;align-items:center;gap:10px;color:#d6ac61;text-shadow:0 2px 5px #000}
.scene-number:before,.scene-number:after{content:"";width:29px;height:1px;background:linear-gradient(90deg,transparent,#b98039)}
.scene-number:after{transform:scaleX(-1)}

.couple{background:linear-gradient(180deg,#100407d4 0,#2d0a14d1 42%,#100507f2 100%),radial-gradient(ellipse at 50% 45%,transparent 0 19%,#080204b5 73%),url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover!important}
.couple:before{background:linear-gradient(90deg,#130308d9 0 5%,transparent 17% 83%,#130308d9 95% 100%);box-shadow:inset 0 0 0 2px #110407,inset 0 0 0 3px #7c542b,inset 0 0 0 4px #e5bb673d,inset 0 0 58px #000c}
.couple h2{position:relative;color:#f4d99f;text-shadow:0 3px 14px #000,0 0 30px #2b0910}
.couple h2:after{content:"";display:block;width:86px;height:1px;margin:10px auto 0;background:linear-gradient(90deg,transparent,#e6bc6c,transparent)}
.portrait{width:225px;height:305px;margin-top:19px;border-color:#f0ca80;background:linear-gradient(145deg,#c18d40,#f3d48c 30%,#755022 55%,#dfb568);box-shadow:0 0 0 3px #160609,0 0 0 4px #c18c42,0 0 0 7px #19070c,0 0 0 8px #6f4924,0 25px 48px #000c}
.portrait:before,.portrait:after{top:46%;width:62px;background:linear-gradient(90deg,transparent,#e8be70 65%,#8d5b28);box-shadow:0 4px 0 -1px #70441f}
.portrait img{border:2px solid #2a0d13;box-shadow:inset 0 0 18px #0008}
.crown{color:#f0ce88;text-shadow:0 2px 4px #000,0 0 12px #c78b35}
.names{position:relative;margin-top:3px;padding:8px 0 4px}
.names:before{content:"";position:absolute;top:0;left:8%;right:8%;height:1px;background:linear-gradient(90deg,transparent,#b88440,#edc979,#b88440,transparent)}
.names article{display:flex;min-height:78px;padding:9px 7px 8px;flex-direction:column;justify-content:center;border:1px solid #8c612e9c;background:linear-gradient(180deg,#35101ae8,#19080cd9);box-shadow:inset 0 0 0 2px #160609,inset 0 0 0 3px #5f3b1e,0 10px 20px #0007}
.names small{color:#ddb66d}
.names h3{color:#f4dca9;text-shadow:0 2px 8px #000}
.names p{margin-top:3px;color:#e1d2bf;font-size:7px;line-height:1.35}
.amp{position:relative;z-index:2;width:31px;height:31px;margin-inline:-5px;border:1px solid #b47f38;border-radius:50%;background:#260b12;color:#e8c270;font-size:21px;line-height:29px;box-shadow:0 0 0 3px #17070a,0 0 14px #000}

.events{background:linear-gradient(#17090dcf,#17090df0),url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover!important}
.event-list{position:relative}
.event-list:before{content:"";position:absolute;top:-8px;bottom:-8px;left:22px;width:1px;background:linear-gradient(transparent,#e2b663 12%,#e2b663 88%,transparent);z-index:2;pointer-events:none}
.event-card{border-color:#bd8a44;background:linear-gradient(110deg,#270d14f2,#15080bed);box-shadow:inset 0 0 0 3px #100508,inset 0 0 0 4px #6d4524,0 14px 28px #0009}
.event-card>span{position:relative;border-color:#9f7037;color:#f0cd85;text-shadow:0 2px 6px #000}
.event-card>span:after{content:"";position:absolute;width:5px;height:5px;border:1px solid #d8aa5a;background:#2a0d14;transform:rotate(45deg);bottom:8px}
.event-card h3{color:#f3d79e}

.gallery{background:linear-gradient(180deg,#100407dc 0,#350c18d5 45%,#100507f4 100%),radial-gradient(ellipse at 50% 48%,transparent 0 18%,#070203b8 72%),url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover!important}
.gallery:before{background:linear-gradient(90deg,#130308d9 0 5%,transparent 17% 83%,#130308d9 95% 100%);box-shadow:inset 0 0 0 2px #110407,inset 0 0 0 3px #7c542b,inset 0 0 0 4px #e5bb673d,inset 0 0 58px #000c}
.gallery h2{color:#f4d99f;text-shadow:0 3px 14px #000,0 0 30px #2b0910}
.gallery .section-lead{text-shadow:0 2px 7px #000}
.gallery .photos{gap:9px;filter:drop-shadow(0 18px 22px #0008)}
.photos figure{border-color:#d0a258;padding:5px;background:#230c12;box-shadow:inset 0 0 0 2px #140609,inset 0 0 0 3px #765027}
.photos img{filter:sepia(.12) saturate(.82) contrast(1.08)}
.photos figcaption{border-left:2px solid #c89444;background:#16090deb;color:#f0cf8d}

.gift{background:linear-gradient(180deg,#100407d8 0,#310b16d0 44%,#100507f2 100%),radial-gradient(ellipse at 50% 47%,transparent 0 18%,#080204b5 73%),url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover!important}
.gift:before{background:linear-gradient(90deg,#130308d9 0 5%,transparent 17% 83%,#130308d9 95% 100%);box-shadow:inset 0 0 0 2px #110407,inset 0 0 0 3px #7c542b,inset 0 0 0 4px #e5bb673d,inset 0 0 58px #000c}
.gift h2{color:#f4d99f;text-shadow:0 3px 14px #000,0 0 30px #2b0910}
.gift .section-lead{max-width:310px;text-shadow:0 2px 7px #000}
.accounts{position:relative;width:calc(100% - 8px);max-width:342px;padding:7px;background:linear-gradient(135deg,#6b431e 0,#efc978 22%,#95602a 48%,#f3d58b 74%,#6c431e 100%);clip-path:polygon(7% 0,41% 0,46% 3%,50% 0,54% 3%,59% 0,93% 0,100% 10%,100% 90%,93% 100%,59% 100%,54% 97%,50% 100%,46% 97%,41% 100%,7% 100%,0 90%,0 10%);filter:drop-shadow(0 25px 28px #000c)}
.accounts:before{content:"";position:absolute;inset:3px;z-index:3;border:1px solid #3d200d;clip-path:inherit;pointer-events:none}
.accounts:after{content:"◆";position:absolute;bottom:1px;left:50%;z-index:3;transform:translateX(-50%);color:#5d3517;font-size:8px;text-shadow:-12px 0 #956128,12px 0 #956128}
.gift-card{position:relative;padding:42px 29px 28px;border:0;background:linear-gradient(145deg,#fff5df 0,#ead5ae 53%,#d6b67f 100%);color:#3b171b;clip-path:polygon(6% 0,42% 0,46% 3%,50% 1%,54% 3%,58% 0,94% 0,100% 9%,100% 91%,94% 100%,58% 100%,54% 97%,50% 99%,46% 97%,42% 100%,6% 100%,0 91%,0 9%);box-shadow:inset 0 0 0 2px #fff9ea,inset 0 0 0 3px #9b6b34,inset 0 0 30px #87591933}
.gift-card:before{content:"R  ♛  S";position:absolute;top:15px;left:0;right:0;color:#855826;font:11px/1 Georgia;text-align:center;letter-spacing:4px}
.gift-card:after{content:"";position:absolute;inset:9px;border:1px solid #8f612e66;pointer-events:none}
.gift-card>span,.gift-card>small,.gift-card>b,.gift-card>p{text-align:center}
.gift-card>span{font-size:19px;color:#4b2020}
.gift-card>small{color:#8b602f;letter-spacing:1.6px}
.gift-card>b{position:relative;z-index:1;margin:23px 0 5px;color:#421a1c;font-size:27px}
.gift-card>b:before{content:"ACCOUNT OF HONOUR";display:block;margin-bottom:6px;color:#8b602f;font:6px OperaSans;letter-spacing:1.8px}
.gift-card>p{color:#67413b}
.gift-card button{position:relative;z-index:1;margin:17px auto 0;background:linear-gradient(#651f2a,#351017);border-color:#a6783e;box-shadow:inset 0 0 0 2px #351017,0 0 0 1px #bb8b48;color:#fae9c8;letter-spacing:1px}
.gift-note{color:#e2c992;text-shadow:0 2px 7px #000}

.rsvp{background:linear-gradient(#16090dde,#16090df2),url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover!important}
.rsvp form{gap:12px;padding:18px;border:1px solid #b98540;background:linear-gradient(145deg,#1e0910ed,#100609ed);box-shadow:inset 0 0 0 3px #120609,inset 0 0 0 4px #724a24,inset 0 0 24px #0008,0 18px 40px #0009}
.rsvp .form-field{display:flex;min-width:0;flex-direction:column;gap:5px}
.rsvp .form-field-wide{grid-column:1/-1}
.rsvp label{margin:0;padding-left:2px;color:#dbb96f;font-size:7px;line-height:1.3;letter-spacing:1px;text-transform:uppercase}
.rsvp input,.rsvp select,.rsvp textarea{height:43px;border-color:#9d7038;background:#0c0507e8;box-shadow:inset 0 1px 7px #000b,0 1px #e3bd6a1c;color:#fff2dc}
.rsvp select{padding-right:24px;font-size:14px}
.rsvp textarea{height:58px}
.rsvp input::placeholder,.rsvp textarea::placeholder{color:#b8a795;opacity:.72}
.rsvp button{min-height:40px;margin-top:1px;background:linear-gradient(#c79b53,#765020);box-shadow:inset 0 0 0 2px #35170b,0 5px 14px #0008;letter-spacing:1.8px}

footer{background:linear-gradient(180deg,#100407cf 0,#350b18c7 45%,#0d0306f4 100%),radial-gradient(ellipse at 50% 47%,transparent 0 17%,#070203b8 72%),url('/images/undangan/opera-kerajaan-eropa/stage.webp') center/cover!important}
footer:before{background:linear-gradient(105deg,#2d0615e8 0 8%,#510c25b8 13%,transparent 28%),linear-gradient(255deg,#2d0615e8 0 8%,#510c25b8 13%,transparent 28%);box-shadow:inset 0 0 0 2px #110407,inset 0 0 0 3px #7c542b,inset 0 0 0 4px #e5bb673d,inset 0 -130px 85px #080204d9,inset 0 0 60px #000c}
.finale-mark{position:relative;padding:13px 24px 10px;border-block:1px solid #b17c38;color:#efd08d;background:#19070bbd;text-shadow:0 2px 9px #000;box-shadow:0 8px 25px #0006}
.finale-mark:before,.finale-mark:after{content:"";position:absolute;top:50%;width:27px;height:1px;background:linear-gradient(90deg,transparent,#d3a558)}
.finale-mark:before{right:100%}
.finale-mark:after{left:100%;transform:scaleX(-1)}
footer h2{color:#fff0cc;text-shadow:0 3px 15px #000,0 0 30px #2b0910}
footer>p{color:#efe1ce;text-shadow:0 2px 7px #000}
footer .closing-rule{color:#e5bd70;text-shadow:0 2px 8px #000}
footer>small{color:#c5aa82}
main nav{border-color:#c5964d;background:linear-gradient(180deg,#35111aef,#16080bef);box-shadow:inset 0 1px #efd18a33,0 9px 30px #000b}
.invitation-locked body{overflow:hidden}
.invitation-locked main nav{display:none}
[hidden]{display:none!important}
:focus-visible{outline:2px solid #efc471;outline-offset:3px}
@media(max-width:700px){body:before{display:none}
.desktop{display:none}
main{width:100%;margin:0}
main>section,main>footer{padding-inline:32px}
main nav{right:14px;bottom:12px;width:calc(100% - 28px)}
}
@media(max-width:370px){main>section,main>footer{padding-inline:26px}
.cover{padding-inline:28px!important}
.stage-copy{padding-top:6vh}
.portrait{width:185px;height:250px}
.names h3{font-size:17px}
.event-card>div{padding:9px 10px}
.rsvp form{gap:4px 7px}
}
@media(max-width:420px){.prologue h2{max-width:100%;font-size:28px}
}
@media(max-height:700px){main>section,main>footer{padding-top:48px;padding-bottom:65px}
h2{font-size:29px}
.stage-copy{padding-top:4vh}
.cover h1{font-size:43px}
.cover .date{margin:8px 0}
.recipient{padding:7px 14px;margin-bottom:8px}
.footlights{bottom:20px}
.script-card{margin-top:12px;padding:20px}
.portrait{width:120px;height:157px;margin:11px auto 9px}
.names h3{font-size:17px}
.event-list{gap:6px}
.event-card>div{padding-block:7px}
.gallery .photos{height:40dvh}
.gift-card{padding:21px}
.gift-card>b{margin-top:12px}
.rsvp .section-lead{margin-bottom:9px}
.rsvp input,.rsvp select{padding-block:6px}
.rsvp textarea{height:42px}
.libretto-frame{margin-top:10px}
.libretto-frame .script-card{margin-top:0;padding:30px 19px 18px}
.libretto-frame .script-card:after{top:11px}
}
@media(prefers-reduced-motion:no-preference){.cover{animation:royal-stage 12s ease-in-out infinite alternate}
.footlights i{animation:footlight 2.8s ease-in-out infinite alternate}
.footlights i:nth-child(2n){animation-delay:.7s}
.royal-mark span,.crown{animation:crown-glow 2.5s ease-in-out infinite alternate}
}
@keyframes royal-stage{to{background-position:50% 47%}
}
@keyframes footlight{to{opacity:.55;transform:scale(.82)}
}
@keyframes crown-glow{to{filter:drop-shadow(0 0 7px #e5b85e)}
}
