:root{--red-900: #581116;--red-800: #74191e;--red-700: #8f1f24;--wine-900: #3b0c12;--wine-700: #6d1720;--gold-500: #e1b457;--gold-300: #f8d68f;--ivory: #fffaf3;--ink: #281613;font-family:"Noto Serif SC",Songti SC,STSong,serif;color:var(--ivory);background:var(--red-900);font-synthesis:none}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.62}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--gold-300),white 20%);outline-offset:3px}.couple-title{display:flex;justify-content:center;align-items:baseline;gap:clamp(.35rem,2vw,.75rem);margin:.25rem 0;white-space:nowrap;font-size:clamp(1.55rem,8vw,3.2rem);font-weight:600;letter-spacing:.08em}.double-happiness{color:var(--gold-300);font-size:.78em;text-shadow:0 0 1.2rem rgb(248 214 143 / 45%)}.primary-gold-button{display:block;width:fit-content;min-width:11rem;margin-inline:auto;padding:.85rem 1.5rem;border:2px solid var(--gold-500);border-radius:.5rem;color:var(--gold-300);background:linear-gradient(135deg,#751f28,#96303a 48%,#671821);box-shadow:inset 0 0 0 1px #ffecbc38,0 .5rem 1.6rem #28070a47;font-weight:700;letter-spacing:.08em;transition:transform .18s ease,filter .18s ease}.primary-gold-button:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-2px)}.join-page{display:grid;min-height:100vh;place-items:center;padding:1.5rem 1rem 3rem;color:var(--ink);background:radial-gradient(circle at 50% 8%,rgb(225 180 87 / 28%),transparent 24rem),linear-gradient(145deg,#6d1720,#3b0c12)}.site-filing-footer{position:absolute;right:0;bottom:.65rem;left:0;z-index:2;text-align:center;font-size:.72rem;letter-spacing:.04em}.site-filing-footer a{color:#ffefc48f;text-decoration:none;transition:color .16s ease}.site-filing-footer a:hover,.site-filing-footer a:focus-visible{color:#ffefc4eb}.join-card{width:min(100%,32rem);padding:clamp(1.4rem,5vw,2.5rem);border:1px solid rgb(225 180 87 / 68%);border-radius:1.1rem;background:linear-gradient(160deg,#fffaf3fa,#faeddbf5);box-shadow:0 1.4rem 4rem #23040861}.eyebrow,.wall-page>header>p,.round-kicker{margin:0;color:var(--gold-500);font-family:Georgia,serif;font-size:.72rem;letter-spacing:.26em;text-align:center}.join-card .couple-title{color:var(--red-800)}.join-intro{margin:.8rem auto 1.5rem;color:#684d47;line-height:1.7;text-align:center}.blessing-form{display:grid;gap:1rem}.blessing-form label{display:grid;gap:.42rem;color:#5b302d;font-size:.92rem;font-weight:700}.blessing-form input,.blessing-form textarea{width:100%;border:1px solid #d8b898;border-radius:.55rem;padding:.78rem .85rem;color:var(--ink);background:#ffffffb8;resize:vertical}.blessing-form [role=alert]{color:var(--red-800)}.blessing-form [role=status]{color:#567240}.wall-page{position:relative;min-height:100vh;overflow:hidden;color:var(--ivory);background:radial-gradient(circle at 50% 45%,rgb(162 56 62 / 72%),transparent 42%),radial-gradient(circle at 10% 10%,rgb(225 180 87 / 13%),transparent 25%),linear-gradient(150deg,#6e171d,#3c0b10 72%)}.wall-page:before,.wall-page:after{position:absolute;width:24rem;height:24rem;border:1px solid rgb(225 180 87 / 14%);border-radius:50%;content:"";pointer-events:none}.wall-page:before{top:-16rem;left:-8rem;box-shadow:0 0 0 3rem #e1b4570a,0 0 0 7rem #e1b45708}.wall-page:after{right:-9rem;bottom:-17rem;box-shadow:0 0 0 4rem #e1b4570a,0 0 0 8rem #e1b45708}.wall-page>header{position:relative;z-index:3;padding:clamp(1rem,2.4vh,2rem) 2rem .4rem}.wall-page .couple-title{font-size:clamp(2rem,3.2vw,4rem);text-shadow:0 .3rem 1.4rem rgb(35 4 8 / 35%)}.wall-controls{position:fixed;z-index:40;top:0;right:0;width:14rem;height:6rem;padding:.75rem}.wall-controls-inner{display:flex;justify-content:flex-end;gap:.5rem;opacity:0;transform:translateY(-.4rem);transition:opacity .22s ease,transform .22s ease}.wall-controls:hover .wall-controls-inner,.wall-controls:focus-within .wall-controls-inner{opacity:1;transform:translateY(0)}.wall-controls button,.wall-controls a{padding:.45rem .7rem;border:1px solid rgb(225 180 87 / 55%);border-radius:999px;color:var(--gold-300);background:#3b0c12c7;font:inherit;font-size:.75rem;text-decoration:none;-webkit-backdrop-filter:blur(.35rem);backdrop-filter:blur(.35rem)}.blessing-cloud{position:relative;z-index:1;height:calc(100vh - clamp(7rem,15vh,10rem));min-height:34rem;margin-inline:clamp(1rem,3vw,4rem)}.wish{position:absolute;left:var(--wish-x);top:var(--wish-y);display:grid;align-content:center;width:var(--wish-width);min-height:var(--wish-height);box-sizing:border-box;padding:clamp(.42rem,.75vw,.8rem);border:1px solid rgb(248 214 143 / 24%);border-radius:.8rem;color:var(--ivory);background:linear-gradient(145deg,#581116c2,#3b0c1285);box-shadow:0 .7rem 2rem #1e03062e;font-size:calc(clamp(.78rem,1.18vw,1.42rem) * var(--wish-font-scale));transform:rotate(var(--wish-rotation));transition:left .65s cubic-bezier(.2,.78,.22,1),top .65s cubic-bezier(.2,.78,.22,1),width .65s cubic-bezier(.2,.78,.22,1),min-height .65s cubic-bezier(.2,.78,.22,1),opacity .18s ease;animation:wish-enter .9s cubic-bezier(.34,1.3,.64,1) both,wish-float var(--wish-float-dur, 5.6s) var(--wish-float-delay, 0s) ease-in-out infinite alternate,wish-glow 8s var(--wish-glow-delay, 0s) ease-in-out infinite}.wish-pending-landing{opacity:0;animation:none}.wish p{margin:0 0 .55rem;overflow-wrap:anywhere;font-weight:600;line-height:1.42;text-align:center;text-shadow:0 .12rem .5rem rgb(30 3 6 / 35%)}.wish footer{color:var(--gold-300);font-size:.67em;line-height:1.35;text-align:center}.winner-card>button{position:absolute;top:.3rem;right:.35rem;border:0;color:var(--gold-300);background:transparent;font-size:.68rem;opacity:.18}.winner-card:hover>button,.winner-card:focus-within>button{opacity:1}.floating-error{position:fixed;z-index:60;right:1rem;bottom:1rem;padding:.7rem 1rem;border:1px solid #f0a0a0;border-radius:.5rem;color:#fff;background:#741d25}.connection-banner{position:fixed;z-index:20;top:1rem;right:1rem;padding:.55rem .9rem;border:1px solid var(--gold-500);border-radius:999px;color:var(--gold-300);background:#3b0c12eb}.draw-controls{position:relative;z-index:5;display:flex;justify-content:center;padding:.8rem 1rem 1.25rem}.blessing-cloud+.draw-controls{position:fixed;right:0;bottom:1.25rem;left:0}.draw-stage{position:relative;z-index:4;display:grid;align-content:center;min-height:calc(100vh - 9rem);padding:1rem clamp(1rem,6vw,7rem) 2rem;text-align:center}.draw-stage h2,.winners-summary h2{margin:.4rem 0 1.6rem;color:var(--gold-300);font-size:clamp(2rem,4vw,4.5rem);font-weight:600}.winner-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,3vw,2.5rem);margin-inline:auto;width:min(100%,74rem)}.winner-card{position:relative;padding:clamp(1.2rem,3vw,2.4rem);border:1px solid rgb(248 214 143 / 55%);border-radius:1rem;background:linear-gradient(155deg,#822027eb,#3b0c12e0);box-shadow:0 1rem 3rem #1e030640;animation:winner-enter .65s cubic-bezier(.2,.8,.2,1) both}.winner-card h3{margin:.45rem 0;color:var(--gold-300);font-size:clamp(1.5rem,2.7vw,3rem)}.winner-card p,.winner-card blockquote{margin:.5rem 0}.winner-card blockquote{color:#f8e8db;line-height:1.55}.winner-order{display:inline-grid;width:2rem;height:2rem;place-items:center;border:1px solid var(--gold-500);border-radius:50%;color:var(--gold-300)}.cancelled-audit{width:min(100%,36rem);margin:1rem auto 0;color:#e8c8b8;font-size:.82rem}.winners-summary,.draw-recovery{position:relative;z-index:4;display:grid;align-content:center;min-height:calc(100vh - 9rem);padding:2rem;text-align:center}.winners-summary>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;width:min(100%,58rem);margin:0 auto 1.5rem}.winners-summary article{display:flex;justify-content:space-between;gap:.8rem;padding:.9rem 1rem;border-bottom:1px solid rgb(225 180 87 / 42%);color:var(--gold-300)}.winners-summary button,.draw-recovery button,.wish-dialog button,.confirm-dialog button:not(.primary-gold-button){width:fit-content;margin-inline:auto;padding:.65rem 1rem;border:1px solid rgb(225 180 87 / 60%);border-radius:.45rem;color:var(--gold-300);background:#76212a}.modal-backdrop{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1rem;background:#180205b8;-webkit-backdrop-filter:blur(.35rem);backdrop-filter:blur(.35rem)}.confirm-dialog,.wish-dialog{width:min(100%,30rem);padding:1.5rem;border:1px solid var(--gold-500);border-radius:.9rem;color:var(--ivory);background:linear-gradient(150deg,#741d25,#3b0c12);box-shadow:0 1.5rem 5rem #1401037a;text-align:center}.confirm-dialog{position:relative}.dialog-close{position:absolute;top:.75rem;right:.75rem;display:grid;width:2rem!important;height:2rem;margin:0!important;padding:0!important;place-items:center;border:1px solid var(--gold-500)!important;border-radius:50%!important;color:var(--gold-300)!important;background:transparent!important;font-size:1.25rem}.admin-login-dialog{display:grid;gap:1rem}.admin-login-dialog label{display:grid;gap:.4rem;text-align:left}.admin-login-dialog input{padding:.7rem .8rem;border:1px solid rgb(225 180 87 / 45%);border-radius:.45rem;color:var(--ivory);background:#1e030659}.dialog-actions{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center;margin-top:1.25rem}.dialog-actions .primary-gold-button{margin:0}.danger-button{padding:.75rem 1rem;border:1px solid #f0a0a0;border-radius:.45rem;color:#fff;background:#8c2228}@keyframes wish-enter{0%{opacity:0;scale:.75;box-shadow:0 0 #f8d68f00}40%{opacity:1;scale:1.08;box-shadow:0 0 2.5rem 1rem #f8d68f8c}70%{scale:.97;box-shadow:0 0 1.5rem .5rem #f8d68f59}85%{scale:1.02}to{opacity:1;scale:1;box-shadow:0 .7rem 2rem #1e03062e}}@keyframes wish-float{0%{translate:0 -7px;transform:rotate(calc(var(--wish-rotation) - .6deg)) scale(1.008)}30%{translate:0 -2px;transform:rotate(calc(var(--wish-rotation) - .1deg)) scale(1.002)}60%{translate:0 3px;transform:rotate(calc(var(--wish-rotation) + .3deg)) scale(.998)}to{translate:0 7px;transform:rotate(calc(var(--wish-rotation) + .6deg)) scale(.994)}}@keyframes wish-glow{0%,to{border-color:#f8d68f3d}50%{border-color:#f8d68f9e;box-shadow:0 .7rem 2rem #1e03062e,0 0 1.2rem #f8d68f47}}@keyframes winner-enter{0%{opacity:0;transform:translateY(1rem) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.admin-page{min-height:100vh;padding:clamp(1rem,3vw,3rem);color:var(--ivory);background:linear-gradient(145deg,#531017,#24060a 78%)}.admin-header,.admin-header nav,.admin-actions,.admin-blessing-list article>div{display:flex;align-items:center;justify-content:space-between;gap:1rem}.admin-header{margin-bottom:1.5rem}.admin-header p{color:var(--gold-300);letter-spacing:.18em}.admin-header h1{margin:0;font-size:clamp(1.8rem,3vw,3rem)}.admin-header a,.admin-header button,.admin-actions>a:not(.primary-gold-button),.admin-actions>button{padding:.65rem .85rem;border:1px solid rgb(225 180 87 / 45%);border-radius:.5rem;color:var(--gold-300);background:#581116a6;font:inherit;text-decoration:none}.admin-actions{justify-content:flex-start;flex-wrap:wrap;margin-bottom:1.25rem}.admin-export-menu{position:relative}.admin-export-menu summary{padding:.65rem .85rem;border:1px solid rgb(225 180 87 / 45%);border-radius:.5rem;color:var(--gold-300);background:#581116a6;cursor:pointer;list-style:none}.admin-export-menu summary::-webkit-details-marker{display:none}.admin-export-menu>div{position:absolute;z-index:20;top:calc(100% + .45rem);left:0;display:grid;min-width:12rem;overflow:hidden;border:1px solid rgb(225 180 87 / 35%);border-radius:.55rem;background:#3c0a10;box-shadow:0 1rem 2.5rem #00000059}.admin-export-menu a{padding:.7rem .85rem;color:var(--ivory);text-decoration:none}.admin-export-menu a:hover{background:#e1b4571f;color:var(--gold-300)}.admin-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:1rem}.admin-panel{margin-bottom:1rem;padding:1.2rem;border:1px solid rgb(225 180 87 / 28%);border-radius:.9rem;background:#5811166b;box-shadow:0 1rem 3rem #1401032e}.admin-panel h2{margin-top:0;color:var(--gold-300)}.admin-panel-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1rem}.admin-panel-heading h2{margin-bottom:.2rem}.admin-panel-heading span{color:#e6c8b2;font-size:.82rem}.admin-search{display:flex;align-items:end;gap:.45rem}.admin-search label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.admin-search input{min-width:min(22rem,42vw);padding:.65rem .75rem;border:1px solid rgb(225 180 87 / 35%);border-radius:.5rem;color:var(--ivory);background:#1e03066b;font:inherit}.admin-search button{padding:.65rem .75rem;border:1px solid rgb(225 180 87 / 35%);border-radius:.5rem;color:var(--gold-300);background:transparent;font:inherit}.admin-empty{color:#e6c8b2}.admin-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem}.admin-metrics article{display:grid;gap:.3rem;padding:.8rem;border-radius:.6rem;background:#1e030647}.admin-metrics span{color:#e6c8b2;font-size:.8rem}.admin-metrics strong{color:var(--gold-300);font-size:1.35rem}.admin-qr{text-align:center}.admin-qr svg{width:min(100%,14rem);height:auto;background:#fffaf3}.admin-qr code{display:block;margin:.7rem 0;overflow-wrap:anywhere}.admin-qr a{color:var(--gold-300)}.admin-blessing-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:.75rem}.admin-blessing-list article{display:flex;align-items:flex-start;gap:.6rem;padding:.85rem;border:1px solid rgb(225 180 87 / 18%);border-radius:.6rem;background:#1e030638;transition:border-color .15s,background .15s}.admin-blessing--selected{border-color:#e1b4578c!important;background:#dc963c1a!important}.admin-blessing-body{flex:1;min-width:0}.admin-blessing-check{display:flex;align-items:center;padding-top:.1rem;cursor:pointer}.admin-blessing-check input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--gold-300);cursor:pointer}.admin-select-all{display:flex;align-items:center;gap:.5rem;cursor:pointer}.admin-select-all input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--gold-300);cursor:pointer}.admin-delete-selected-btn{padding:.38rem .8rem;border:1px solid #ef8a7a;background:transparent;color:#efb7ae;border-radius:.35rem;cursor:pointer;font-size:.82rem;white-space:nowrap}.admin-delete-selected-btn:disabled{opacity:.35;cursor:not-allowed}.admin-delete-selected-btn:not(:disabled):hover{background:#b43c3240}.admin-blessing-list span{color:var(--gold-300);font-size:.8rem}.admin-blessing-list button{border:0;color:#efb7ae;background:transparent;font:inherit;font-size:.78rem}.admin-error{color:#ffd1d1}@media(max-width:760px){.admin-header,.admin-header nav{align-items:flex-start;flex-direction:column}.admin-grid{grid-template-columns:1fr}.admin-metrics{grid-template-columns:repeat(2,1fr)}.admin-panel-heading,.admin-search{align-items:stretch;flex-direction:column}.admin-search input{min-width:0;width:100%}}.demo-controls{position:fixed;z-index:80;top:.8rem;right:.8rem;display:flex;flex-direction:row;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid rgb(225 180 87 / 38%);border-radius:.7rem;background:#230408eb;opacity:.08;transition:opacity .22s ease}.demo-controls>a{align-self:flex-start}.demo-controls:hover,.demo-controls:focus-within{opacity:1}.demo-controls label{display:flex;align-items:center;gap:.5rem;color:var(--gold-300);font-size:.7rem;white-space:nowrap}.demo-controls select,.demo-controls button,.demo-controls a{box-sizing:border-box;height:2.2rem;padding:0 .6rem;border:1px solid rgb(225 180 87 / 45%);border-radius:.4rem;color:var(--ivory);background:#681820;font:inherit;font-size:.82rem;text-decoration:none;display:flex;align-items:center}.demo-tabs{display:flex;gap:.3rem}.demo-tab{flex:1;padding:.35rem .5rem;border:1px solid rgb(225 180 87 / 35%);border-radius:.35rem;color:#e1b45799;background:transparent;font:inherit;font-size:.75rem;cursor:pointer;transition:background .15s,color .15s}.demo-tab--active,.demo-tab:hover{background:#681820;color:var(--gold-300);border-color:#e1b45799}.demo-tab-panel{display:flex;flex-direction:column;gap:.5rem}.demo-draw-info{color:#e1b457b3;font-size:.78rem;line-height:1.6;margin:0}.demo-draw-info small{opacity:.6}.demo-draw-reset-btn{padding:.38rem .7rem;border:1px solid rgb(225 180 87 / 45%);background:transparent;color:var(--gold-300);border-radius:.3rem;cursor:pointer;font-size:.8rem}.demo-draw-reset-btn:hover{background:#681820}.demo-mode-btn{padding:.38rem .7rem;border:1px solid rgb(225 180 87 / 35%);background:transparent;color:#e1b457b3;border-radius:.3rem;cursor:pointer;font-size:.78rem}.demo-mode-btn:hover{border-color:#e1b45799;color:var(--gold-300)}.demo-draw-topbar{position:fixed;top:.8rem;left:50%;transform:translate(-50%);z-index:120;display:flex;align-items:center;gap:1rem;background:#1e0a0fe0;border:1px solid rgb(225 180 87 / 35%);border-radius:.5rem;padding:.4rem .8rem;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.demo-draw-back-btn{padding:.3rem .7rem;border:1px solid rgb(225 180 87 / 45%);background:transparent;color:var(--gold-300);border-radius:.3rem;cursor:pointer;font-size:.8rem;white-space:nowrap}.demo-draw-back-btn:hover{background:#681820}.demo-draw-hint{font-size:.72rem;color:#e1b4578c;white-space:nowrap}.demo-tab-panel--draw{max-height:70vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#681820 transparent}.draw-simulator{display:flex;flex-direction:column;gap:.8rem}.draw-sim-header{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}.draw-sim-title{margin:0;color:var(--gold-300);font-size:.95rem;font-weight:600}.draw-sim-desc{margin:0;color:#e1b4578c;font-size:.68rem;flex:1}.draw-sim-reset-btn{padding:.25rem .5rem;border:1px solid rgb(225 180 87 / 30%);border-radius:.3rem;background:transparent;color:#e1b4577f;font:inherit;font-size:.68rem;cursor:pointer;margin-left:auto}.draw-sim-reset-btn:hover{color:var(--gold-300);border-color:#e1b45799}.draw-sim-rounds{display:flex;flex-direction:column;gap:.6rem}.draw-sim-round{padding:.6rem;border:1px solid rgb(225 180 87 / 20%);border-radius:.5rem;background:#ffffff08}.draw-sim-round--completed{border-color:#50a0504d;background:#50a0500d}.draw-sim-round-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.45rem}.draw-sim-round-label{color:var(--gold-300);font-size:.78rem;font-weight:600}.draw-sim-round-status{font-size:.65rem;padding:.1rem .35rem;border-radius:2rem}.draw-sim-round-status--idle{color:#b4b4b499}.draw-sim-round-status--rolling{color:#fc4;animation:pulse-text .5s ease infinite alternate}.draw-sim-round-status--adjusting{color:#8cf}.draw-sim-round-status--completed{color:#80d080}@keyframes pulse-text{0%{opacity:.6}to{opacity:1}}.draw-sim-drum{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.5rem}.draw-sim-drum-label{margin:0;color:#fc4;font-size:.72rem;animation:pulse-text .5s ease infinite alternate}.draw-sim-drum-names{display:flex;gap:.5rem}.draw-sim-drum-name{padding:.2rem .5rem;border:1px solid #ffcc4466;border-radius:.3rem;color:#fd8;font-size:.82rem;font-weight:600;min-width:3rem;text-align:center;animation:drum-flash .08s ease infinite alternate}@keyframes drum-flash{0%{opacity:.7}to{opacity:1}}.draw-sim-winners{display:flex;flex-direction:column;gap:.3rem}.draw-sim-winner{display:flex;align-items:center;gap:.4rem;padding:.3rem .4rem;border:1px solid rgb(225 180 87 / 25%);border-radius:.35rem;background:#ffc8640f}.draw-sim-winner--cancelled{opacity:.45;text-decoration:line-through;border-color:#c8505040;background:#c850500d}.draw-sim-winner-name{color:var(--ivory);font-size:.82rem;font-weight:600;flex:1}.draw-sim-winner-table{color:#e1b4578c;font-size:.68rem}.draw-sim-winner-badge{font-size:.65rem;color:#c85050cc}.draw-sim-cancel-btn{padding:.15rem .4rem;border:1px solid rgb(200 80 80 / 40%);border-radius:.25rem;background:transparent;color:#c85050b3;font:inherit;font-size:.65rem;cursor:pointer}.draw-sim-cancel-btn:hover{background:#c850501f;color:#ff8080}.draw-sim-actions{display:flex;gap:.4rem;margin-top:.4rem}.draw-sim-primary-btn{flex:1;padding:.4rem .6rem;border:1px solid rgb(225 180 87 / 55%);border-radius:.35rem;background:#7a1c22;color:var(--gold-300);font:inherit;font-size:.78rem;cursor:pointer;transition:background .15s}.draw-sim-primary-btn:hover:not(:disabled){background:#8e2028}.draw-sim-primary-btn:disabled{opacity:.45;cursor:not-allowed}.draw-sim-secondary-btn{padding:.4rem .6rem;border:1px solid rgb(120 180 255 / 40%);border-radius:.35rem;background:transparent;color:#8cf;font:inherit;font-size:.78rem;cursor:pointer}.draw-sim-secondary-btn:hover:not(:disabled){background:#78b4ff14}.draw-sim-secondary-btn:disabled{opacity:.45;cursor:not-allowed}.draw-sim-round-done{margin:.3rem 0 0;color:#80d080;font-size:.72rem}.draw-sim-summary{padding:.8rem;border:1px solid rgb(80 180 80 / 35%);border-radius:.5rem;background:#50b4500f}.draw-sim-summary h3{margin:0 0 .4rem;color:var(--gold-300);font-size:.9rem}.draw-sim-summary p{margin:0 0 .4rem;color:var(--ivory);font-size:.78rem}.draw-sim-summary-list{margin:0 0 .6rem;padding-left:1rem;color:var(--ivory);font-size:.75rem;line-height:1.6}.wall-ambient{position:fixed;z-index:0;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.ambient-fireworks,.ambient-petals,.ambient-reactions{position:absolute;top:0;right:0;bottom:0;left:0}.ambient-burst{position:absolute;width:1px;height:1px;opacity:0;animation:ambient-burst 9s infinite}.ambient-burst.burst-1{top:27%;left:15%;animation-delay:.7s}.ambient-burst.burst-2{top:21%;right:13%;animation-delay:4s}.ambient-burst.burst-3{top:65%;left:72%;animation-delay:6.6s}.ambient-burst i{--angle: calc(var(--ray) * 25.714deg);position:absolute;width:2.5rem;height:1px;transform:rotate(var(--angle));transform-origin:left;background:linear-gradient(90deg,rgb(246 199 97 / 60%),transparent);box-shadow:0 0 .45rem #f7c14b47}.ambient-petals i{position:absolute;top:-8%;left:var(--petal-x);width:.42rem;height:.75rem;border-radius:80% 0;background:#e2797e59;animation:ambient-petal var(--petal-duration) var(--petal-delay) linear infinite}.reaction{position:absolute;bottom:-4rem;display:grid;width:2.4rem;height:2.4rem;place-items:center;border:1px solid rgb(238 196 104 / 22%);border-radius:50%;background:#69161f57;box-shadow:0 .6rem 1.5rem #1a00051f;opacity:0;animation:ambient-reaction 13s ease-in-out infinite}.reaction svg{width:1.35rem;fill:none;stroke:#f4ce7eb8;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.reaction-applause{left:7%;animation-delay:2s}.reaction-horn{right:8%;animation-delay:7s}.reaction-flower{left:83%;animation-delay:11s}@keyframes ambient-burst{0%,8%,to{opacity:0;scale:.15}11%{opacity:.55;scale:.45}19%{opacity:.2;scale:1.3}25%{opacity:0;scale:1.55}}@keyframes ambient-petal{0%{translate:-2vw -8vh;rotate:0deg;opacity:0}8%{opacity:.35}55%{translate:7vw 55vh;rotate:260deg}to{translate:-4vw 112vh;rotate:620deg;opacity:0}}@keyframes ambient-reaction{0%,68%,to{translate:0 0;opacity:0;scale:.7}73%{opacity:.65;scale:1}92%{translate:1.5rem -48vh;opacity:.25;scale:.9}96%{translate:-.4rem -62vh;opacity:0}}.arrival-effect{position:fixed;z-index:70;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;overflow:hidden;pointer-events:none;perspective:1600px;isolation:isolate;background:#3a080e7a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:opacity .34s ease-out}.arrival-effect--exiting{opacity:0}.effect-atmosphere{position:absolute;z-index:10;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 48%,rgb(255 226 157 / 15%) 0 12%,transparent 38%),radial-gradient(ellipse at 50% 55%,transparent 0 30%,rgb(34 2 8 / 42%) 82%)}.particle-stage{position:absolute;z-index:24;top:0;right:0;bottom:0;left:0;overflow:hidden}.particle-stage canvas{display:block;width:100%;height:100%}.cinematic-fireworks{position:absolute;z-index:25;top:0;right:0;bottom:0;left:0;overflow:hidden;mix-blend-mode:screen}.cinematic-firework-burst{position:absolute;top:var(--burst-y);left:var(--burst-x);width:1px;height:1px;scale:var(--burst-scale)}.cinematic-firework-ray{position:absolute;width:1px;height:1px;transform:rotate(var(--ray-angle))}.cinematic-firework-ray:before,.cinematic-firework-ray:after{position:absolute;left:0;width:clamp(2.2rem,5vw,5rem);height:2px;border-radius:999px;content:"";opacity:0;transform-origin:left;background:linear-gradient(90deg,#fff8d8 0 4%,#ffd870 18%,rgb(255 113 89 / 76%) 54%,transparent 100%);filter:drop-shadow(0 0 .32rem #ffd66b);animation:cinematic-firework 1.75s var(--burst-delay) cubic-bezier(.08,.62,.18,1) both}.cinematic-firework-ray:after{width:clamp(1.4rem,3.4vw,3.2rem);height:1px;background:linear-gradient(90deg,#fff 0 6%,#f8b4a9 35%,transparent 100%);animation-delay:calc(var(--burst-delay) + .12s)}@keyframes cinematic-firework{0%{opacity:0;translate:0 0;scale:.08 1}8%{opacity:1}58%{opacity:.96;translate:clamp(4rem,12vw,11rem) 0;scale:1 1}to{opacity:0;translate:clamp(8rem,22vw,19rem) clamp(.2rem,1.4vh,1rem);scale:.26 .55}}.effect-card{position:relative;z-index:30;width:min(39rem,78vw);min-height:12rem;padding:2.8rem 3.2rem 2.5rem;border:1px solid rgb(244 205 113 / 74%);border-radius:.45rem;color:var(--ivory);background:linear-gradient(135deg,transparent 0 17px,rgb(255 238 190 / 13%) 18px 19px,transparent 20px),radial-gradient(circle at 42% 0%,rgb(230 121 99 / 24%),transparent 45%),linear-gradient(145deg,#841f2af7,#430811fa);box-shadow:0 2.4rem 8rem #00000070,0 0 3rem #e1b45733,inset 0 0 2.5rem #ffe9ad12;text-align:center;transform-style:preserve-3d;will-change:transform,opacity,filter}.effect-card:before,.effect-card:after{position:absolute;top:.55rem;right:.55rem;bottom:.55rem;left:.55rem;border:1px solid rgb(237 192 96 / 22%);content:"";pointer-events:none}.effect-card:after{top:.82rem;right:.82rem;bottom:.82rem;left:.82rem;border-color:#fff2c914}.effect-card-flourish{display:block;margin:-.9rem auto .7rem;color:var(--gold-300);font-size:1.15rem;opacity:.72}.effect-card p{position:relative;z-index:1;margin:0 0 1.1rem;font-family:STKaiti,KaiTi,"Noto Serif SC",serif;font-size:clamp(1.8rem,4vw,3.7rem);font-weight:650;line-height:1.35;letter-spacing:.07em;text-shadow:0 .2rem 1.1rem rgb(34 0 6 / 72%)}.effect-card footer{position:relative;z-index:1;color:var(--gold-300);letter-spacing:.18em}.happiness-field,.fly-through-decor{position:absolute;z-index:27;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.happiness-field-glyph{position:absolute;top:var(--xi-y);left:var(--xi-x);color:#f4c969c7;font-family:STKaiti,KaiTi,serif;font-size:var(--xi-size);font-style:normal;opacity:0;text-shadow:0 0 1rem rgb(255 194 67 / 42%);transform:translate(-50%,-50%) rotate(var(--xi-rotate)) scale(.2);animation:happiness-field-bloom 3.7s var(--xi-delay) cubic-bezier(.16,.84,.22,1) both}@keyframes happiness-field-bloom{0%{opacity:0;transform:translate(-50%,-50%) rotate(var(--xi-rotate)) scale(.2);filter:blur(.4rem)}18%{opacity:.78;filter:blur(0)}34%,76%{opacity:.48;transform:translate(-50%,-50%) rotate(var(--xi-rotate)) scale(1);filter:blur(0)}to{opacity:0;transform:translate(-58%,-56%) rotate(calc(var(--xi-rotate) + 8deg)) scale(.72)}}.happiness-gold-dot{position:absolute;left:var(--dot-x);top:var(--dot-y);width:var(--dot-size);height:var(--dot-size);font-style:normal;background:#ffe566;border-radius:50%;box-shadow:0 0 calc(var(--dot-size) * 4) calc(var(--dot-size) * 1.5) #ffdc5099,0 0 calc(var(--dot-size) * 1.5) calc(var(--dot-size) * .5) #fff8d0;opacity:0;transform:translate(-50%,-50%) scale(0) rotate(0);animation:happiness-dot-pop var(--dot-dur, .9s) var(--dot-delay, 0s) ease-in-out both}.happiness-gold-dot:before,.happiness-gold-dot:after{content:"";position:absolute;left:50%;top:50%;background:linear-gradient(to bottom,transparent,#ffe566 40%,#ffe566 60%,transparent);transform:translate(-50%,-50%);border-radius:999px}.happiness-gold-dot:before{width:1px;height:calc(var(--dot-size) * 10)}.happiness-gold-dot:after{width:calc(var(--dot-size) * 10);height:1px}@keyframes happiness-dot-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(0) rotate(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.6) rotate(15deg)}50%{opacity:.9;transform:translate(-50%,-50%) scale(1) rotate(45deg)}80%{opacity:.6}to{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(90deg)}}.fly-through-decor-particle{position:absolute;left:0;top:0;opacity:0;font-style:normal;transform-origin:center;will-change:transform,opacity}.fly-through-decor-petal{color:#ffb7c5;font-size:1.4rem;text-shadow:0 0 .8rem #ff91a3}.fly-through-decor-heart{color:#ff6680;font-size:1.6rem;text-shadow:0 0 1rem #ff5577}.fly-through-decor-xi{color:#f4c030;font-family:STKaiti,KaiTi,serif;font-size:1.6rem;text-shadow:0 0 1rem rgb(240 182 58 / 90%)}.fly-through-decor-ring{width:3.5rem;height:3.5rem;border:2px solid rgb(248 214 143 / 90%);border-radius:50%;box-shadow:0 0 1.5rem #e1b457b3,inset 0 0 .8rem #ffe8b466}.fly-through-hero{position:absolute;left:var(--hero-x);top:var(--hero-y);opacity:0;animation:fly-hero-trail 3.2s var(--hero-delay, 0s) cubic-bezier(.16,1,.3,1) both}@keyframes fly-hero-trail{0%{opacity:0;transform:translate(320px,-20px) scale(.3)}22%{opacity:1}to{opacity:0;transform:translate(-120px,var(--hero-fall, 60px)) rotate(300deg) scale(1.25)}}.fly-through-energy-ring{position:absolute;left:50%;top:50%;width:8rem;height:8rem;border:2px solid rgb(248 214 143 / 80%);border-radius:50%;box-shadow:0 0 2rem #e1b45799,inset 0 0 1rem #ffe8b44d;transform:translate(-50%,-50%) scale(.25);opacity:.85;animation:fly-through-ring-expand 1.1s cubic-bezier(.08,.62,.18,1) both;pointer-events:none}@keyframes fly-through-ring-expand{0%{opacity:.85;transform:translate(-50%,-50%) scale(.25)}to{opacity:0;transform:translate(-50%,-50%) scale(6)}}.effect-seal-mark{position:absolute;z-index:45;display:grid;width:8rem;height:8rem;margin:8rem 0 0 31rem;place-items:center;border:.45rem double #e5b34b;color:#efc362;font-family:STKaiti,KaiTi,serif;font-size:4.7rem;line-height:1;text-shadow:0 0 .8rem rgb(233 163 51 / 58%);box-shadow:inset 0 0 0 .16rem #ffd57747,0 0 1.5rem #dc972552}.seal-decor{position:absolute;z-index:44;top:0;right:0;bottom:0;left:0;pointer-events:none}.seal-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;mix-blend-mode:normal}.seal-ring{position:absolute;left:50%;top:50%;width:4rem;height:4rem;border-radius:50%;border:1px solid rgba(220,170,80,.6);box-shadow:0 0 1rem .3rem #dcaa3c2e;transform:translate(-50%,-50%) scale(.1);opacity:0;animation:seal-ring-out 1.6s .25s cubic-bezier(.08,.72,.22,1) both}@keyframes seal-ring-out{0%{opacity:.8;transform:translate(-50%,-50%) scale(.1)}15%{opacity:.6}to{opacity:0;transform:translate(-50%,-50%) scale(4.5)}}.cinematic-firework-burst--mini .cinematic-firework-ray:before{width:clamp(1.2rem,3vw,3rem);height:1.5px}.cinematic-firework-burst--mini .cinematic-firework-ray:after{width:clamp(.8rem,2vw,2rem);height:1px}.effect-spotlight .effect-atmosphere{background:radial-gradient(ellipse 28% 44% at 50% 49%,rgb(255 232 178 / 22%),transparent 70%),radial-gradient(ellipse 70% 80% at 50% 56%,transparent 20%,rgb(44 4 11 / 18%) 78%);-webkit-backdrop-filter:saturate(.92) brightness(.94);backdrop-filter:saturate(.92) brightness(.94)}.effect-invitation .effect-card{transform-origin:2% 50%}.effect-fireworks .effect-card{background:linear-gradient(145deg,#701522f0,#32050ef7)}.effect-fly-through .effect-atmosphere{background:radial-gradient(ellipse at 50% 50%,rgb(255 225 153 / 12%),transparent 54%);-webkit-backdrop-filter:none;backdrop-filter:none}.effect-push-in .effect-atmosphere{background:radial-gradient(ellipse 30% 36% at 50% 52%,rgb(255 236 180 / 26%),transparent 62%),radial-gradient(ellipse 85% 90% at 50% 54%,transparent 10%,rgb(14 0 4 / 60%) 90%);-webkit-backdrop-filter:saturate(.6) brightness(.72);backdrop-filter:saturate(.6) brightness(.72)}.effect-pull-back .effect-atmosphere{background:radial-gradient(ellipse 90% 90% at 50% 48%,rgb(255 226 157 / 28%),transparent 70%),radial-gradient(ellipse 40% 30% at 50% 48%,rgb(255 248 220 / 14%),transparent 55%),radial-gradient(ellipse 110% 110% at 50% 54%,transparent 55%,rgb(20 0 6 / 52%) 100%);-webkit-backdrop-filter:saturate(1.08) brightness(1.06);backdrop-filter:saturate(1.08) brightness(1.06)}.invitation-decor{position:absolute;z-index:22;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.inv-petal{position:absolute;left:var(--inv-x);top:var(--inv-y);width:1.3rem;height:.8rem;border-radius:90% 0;background:#e56b75;box-shadow:0 0 .8rem #ffb1aa;opacity:0;transform:rotate(var(--inv-rot, 0deg)) scale(.4);animation:inv-petal-fall 2.8s var(--inv-delay, 0s) cubic-bezier(.16,1,.3,1) both}@keyframes inv-petal-fall{0%{opacity:0;transform:translate(0) rotate(var(--inv-rot)) scale(.4)}18%{opacity:.92}to{opacity:0;transform:translate(-40px,var(--inv-fall)) rotate(calc(var(--inv-rot) + 240deg)) scale(1.1)}}.inv-spark{position:absolute;left:var(--inv-x);top:var(--inv-y);width:var(--inv-size, 1rem);height:var(--inv-size, 1rem);opacity:0;background:radial-gradient(circle,#fff8d8 0%,#ffd56a 50%,transparent 80%);border-radius:50%;filter:drop-shadow(0 0 .5rem #ffd56a);animation:inv-spark-pop 1.8s var(--inv-delay, 0s) ease-out both}@keyframes inv-spark-pop{0%{opacity:0;transform:scale(0)}25%{opacity:1;transform:scale(2.5)}55%{opacity:.7;transform:scale(1.2)}to{opacity:0;transform:scale(.4)}}.inv-xi{position:absolute;left:var(--inv-x);top:var(--inv-y);font-family:STKaiti,KaiTi,serif;font-size:var(--inv-size, 1.5rem);font-style:normal;color:#f4c969;text-shadow:0 0 1rem rgb(240 182 58 / 70%);opacity:0;animation:inv-xi-bloom 3.2s var(--inv-delay, 0s) cubic-bezier(.16,.84,.22,1) both}@keyframes inv-xi-bloom{0%{opacity:0;transform:scale(.2) rotate(-10deg);filter:blur(.3rem)}20%{opacity:.8;filter:blur(0)}60%{opacity:.55;transform:scale(1) rotate(0)}to{opacity:0;transform:scale(.7) rotate(6deg)}}.push-in-shockwave{position:absolute;z-index:22;top:0;right:0;bottom:0;left:0;pointer-events:none}.push-in-ring{position:absolute;left:50%;top:50%;width:6rem;height:6rem;border:2px solid rgb(255 232 180 / 70%);border-radius:50%;box-shadow:0 0 2.5rem #ffc8647f,inset 0 0 1rem #ffe6aa47;transform:translate(-50%,-50%) scale(.15);opacity:0;animation:push-in-ring-burst 1.6s var(--ring-delay, 0ms) cubic-bezier(.08,.72,.14,1) both}@keyframes push-in-ring-burst{0%{opacity:.9;transform:translate(-50%,-50%) scale(.15)}55%{opacity:.6}to{opacity:0;transform:translate(-50%,-50%) scale(8)}}.push-in-beam{position:absolute;left:50%;top:50%;width:50vmax;height:2px;transform-origin:left center;transform:translateY(-50%) rotate(var(--beam-angle, 0deg));background:linear-gradient(90deg,rgb(255 240 200 / 0%) 0%,rgb(255 230 160 / 28%) 30%,transparent 100%);opacity:0;animation:push-in-beam-sweep 1.4s .12s cubic-bezier(.16,1,.3,1) both}@keyframes push-in-beam-sweep{0%{opacity:0}18%{opacity:1}to{opacity:0}}.pull-back-flare{position:absolute;z-index:22;top:0;right:0;bottom:0;left:0;pointer-events:none;mix-blend-mode:screen}.pull-back-ray{position:absolute;left:50%;top:50%;width:58vmax;height:3px;transform-origin:left center;transform:translateY(-50%) rotate(var(--ray-angle, 0deg)) scaleX(0);background:linear-gradient(90deg,rgb(255 248 230 / 72%) 0%,rgb(255 200 100 / 32%) 40%,transparent 80%);opacity:0;animation:pull-back-ray-shoot 1.2s var(--ray-delay, 0ms) cubic-bezier(.22,1,.36,1) both}@keyframes pull-back-ray-shoot{0%{opacity:0;transform:translateY(-50%) rotate(var(--ray-angle)) scaleX(0)}15%{opacity:.9}60%{transform:translateY(-50%) rotate(var(--ray-angle)) scaleX(1)}to{opacity:0;transform:translateY(-50%) rotate(var(--ray-angle)) scaleX(1.2)}}.spotlight-beams{position:absolute;z-index:20;top:0;right:0;bottom:0;left:0;pointer-events:none;mix-blend-mode:screen}.spotlight-beam{position:absolute;top:0;left:var(--beam-x);width:var(--beam-width);height:100%;transform:translate(-50%);background:linear-gradient(180deg,rgb(255 240 200 / 0%) 0%,rgb(255 228 160 / 18%) 12%,rgb(255 210 120 / 12%) 45%,transparent 88%);clip-path:polygon(20% 0%,80% 0%,100% 100%,0% 100%);opacity:0;animation:spotlight-beam-fade 3.8s var(--beam-delay, 0ms) ease-in-out both}@keyframes spotlight-beam-fade{0%{opacity:0}18%{opacity:1}72%{opacity:.88}to{opacity:0}}.effect-reduced .particle-stage{display:none}@media(max-width:720px){.effect-card{width:84vw;min-height:10rem;padding:2rem 1.7rem}.effect-seal-mark{width:5.8rem;height:5.8rem;margin:7rem 0 0 64vw;font-size:3.2rem}}@media(max-width:700px){.join-page{align-items:start;padding:.75rem}.join-card{margin-top:.5rem;padding:1.25rem 1rem 1.5rem}.couple-title{gap:.28rem;letter-spacing:.02em}.winner-grid,.winners-summary>div{grid-template-columns:1fr}.draw-stage,.winners-summary{min-height:auto}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.petal-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:35;overflow:hidden}.petal-overlay-particle{position:absolute;left:0;top:0;font-style:normal;font-size:1.5rem;text-shadow:0 0 .8rem #ff91a3;opacity:0;will-change:transform,opacity;transform-origin:center}
