.reveal-source{visibility:hidden!important}
.card-reveal{position:fixed;inset:0;z-index:1000;perspective:1100px;overflow:hidden;isolation:isolate;cursor:wait}
.card-reveal:before{content:'';position:absolute;inset:0;background:#09295033;animation:reveal-dim 1050ms both}
.reveal-card{position:absolute;margin:0!important;transition:none!important;transform-style:preserve-3d;box-shadow:0 0 25px #ffeb7ba6,0 0 70px #fff3b866;pointer-events:none}
.reveal-card:after{opacity:.7;background:linear-gradient(115deg,transparent 20%,#ffffeaaa 44%,transparent 62%)}
.reveal-aura,.reveal-ring{position:absolute;left:var(--reveal-x);top:var(--reveal-y);pointer-events:none}
.reveal-aura{width:650px;height:650px;max-width:150vw;background:radial-gradient(ellipse,#fff9ccdd 0%,#ffdf6570 22%,#fff4c525 42%,transparent 68%);border-radius:50%;transform:translate(-50%,-50%);animation:reveal-aura 1050ms both}
.reveal-ring{width:180px;height:180px;border:2px solid #fff5bd;border-radius:50%;box-shadow:0 0 25px #ffe272,inset 0 0 25px #ffe272;animation:reveal-ring 1050ms ease-out both}
.reveal-shine{position:absolute;inset:-20%;pointer-events:none;background:linear-gradient(110deg,transparent 35%,#ffffffc9 48%,#fffce38c 52%,transparent 65%);mix-blend-mode:screen;animation:reveal-shine 1050ms ease-out both}
.reveal-spark{position:absolute;left:var(--reveal-x);top:var(--reveal-y);color:#fff3a7;text-shadow:0 0 9px #fff,0 0 25px #ffe567;font-size:28px;line-height:1;pointer-events:none;animation:reveal-spark 440ms cubic-bezier(.15,.6,.25,1) both}
#project-dialog.reveal-open{animation:reveal-dialog 360ms cubic-bezier(.15,.8,.25,1) both}
#project-dialog.reveal-open .dialog-art{animation:reveal-result-card 440ms cubic-bezier(.16,1,.3,1) both}
.reveal-burst,.reveal-burst-ring{position:absolute;left:var(--reveal-x);top:calc(var(--reveal-y) - 56px);pointer-events:none;border-radius:50%;opacity:0}
.reveal-burst{width:560px;height:560px;background:radial-gradient(circle,#fffcebd9 0%,#fff2bda6 12%,#ffdb5c50 30%,transparent 64%);animation:reveal-burst 340ms 710ms ease-out both;z-index:2}
.reveal-burst-ring{width:160px;height:160px;border:3px solid #fff2a1;box-shadow:0 0 20px #ffe583,inset 0 0 20px #ffe583;animation:reveal-burst-ring 340ms 710ms ease-out both;z-index:3}
.reveal-spark{top:calc(var(--reveal-y) - 56px);z-index:4}
@keyframes reveal-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.15)}30%{opacity:.85;transform:translate(-50%,-50%) scale(.55)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.2)}}
@keyframes reveal-burst-ring{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}20%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(3.4)}}
@keyframes reveal-result-card{from{opacity:0;transform:translateY(18px) scale(.9);box-shadow:0 0 45px #ffe786aa}to{opacity:1;transform:translateY(0) scale(1);box-shadow:0 0 0 #ffe78600}}
@keyframes reveal-dim{0%,100%{opacity:0}30%,75%{opacity:1}}
@keyframes reveal-aura{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}35%{opacity:.8;transform:translate(-50%,-50%) scale(.8)}75%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.1)}}
@keyframes reveal-ring{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}25%{opacity:.8}100%{opacity:0;transform:translate(-50%,-50%) scale(2.4)}}
@keyframes reveal-shine{0%{transform:translateX(-110%);opacity:0}25%{opacity:1}100%{transform:translateX(110%);opacity:0}}
@keyframes reveal-spark{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}25%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--spark-x)),calc(-50% + var(--spark-y))) scale(.5)}}
@keyframes reveal-dialog{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(prefers-reduced-motion:reduce){.card-reveal{display:none}#project-dialog.reveal-open{animation:none}}
