.table-cloth{min-height:322px;padding-top:24px}
.ritual-stage{position:relative;height:290px;max-width:700px;margin:0 auto;isolation:isolate;perspective:1000px;overflow:hidden}
.ritual-cards{position:absolute;inset:0;transform-style:preserve-3d}
.ritual-card{position:absolute;left:50%;top:41%;width:92px;height:138px;object-fit:contain;border-radius:6px;border:1px solid #d4ba80;box-shadow:0 2px 1px #d3c6a688,0 9px 16px #0005;will-change:transform;transform-origin:center center;backface-visibility:hidden}
.ritual-floor{position:absolute;left:calc(50% - 150px);top:173px;width:300px;height:40px;border-radius:50%;background:radial-gradient(ellipse,#0007,transparent 70%);filter:blur(7px)}
.ritual-orbit{position:absolute;left:50%;top:112px;width:350px;height:140px;border:1px solid #c6aa702b;border-radius:50%;transform:translate(-50%,-50%) rotate(-7deg)}
.ritual-orbit:before{content:'✧';position:absolute;right:30px;top:9px;font-size:15px;color:#d4ba80aa}
.ritual-orbit:after{content:'';position:absolute;inset:12px;border:1px dashed #c6aa701c;border-radius:50%}
.ritual-caption{position:absolute;top:225px;left:15px;right:15px;text-align:center;pointer-events:none}
.ritual-kicker{font:8px Georgia,serif;letter-spacing:.2em;color:#8f9d9e}
.ritual-line{font:16px/1.8 'Songti SC',STSong,serif;letter-spacing:.08em;color:#ddc99e;margin-top:6px}
.ritual-progress{position:absolute;top:210px;left:0;right:0;display:flex;justify-content:center;gap:5px}
.ritual-progress i{width:20px;height:1px;background:#cbb17e25;transition:background .2s}.ritual-progress i.active{background:#ddc99e}
.ritual-skip{position:absolute;right:18px;top:8px;font-size:10px;color:var(--muted);padding:8px}.ritual-skip:hover{color:var(--gold)}
.pile-caption{position:absolute;top:191px;font-size:10px;color:#c5b78d;opacity:0;transition:opacity .2s;transform:translateX(-50%)}
.upper-caption{left:calc(50% - min(100px,23%))}.lower-caption{left:calc(50% + min(100px,23%))}.cut-preview .pile-caption{opacity:1}.cut-preview.is-playing .pile-caption{opacity:.55}
.table-cloth:not(.show-ritual) .ritual-stage{display:none}.table-cloth.show-ritual .deck-scroll{display:none}
.table-cloth.show-ritual .deck-wheel{display:none}
.deck-page[aria-busy=true] .deck-tools{opacity:.65}.deck-page[aria-busy=true] [data-action=reveal]{opacity:.35}
.deck-scroll.dealt{animation:deal-in .5s ease both}.deck-scroll.dealt .deck-slot{animation:deal-card .55s ease both;animation-delay:calc(min(var(--index),14)*18ms)}
@keyframes deal-in{from{opacity:0}to{opacity:1}}@keyframes deal-card{from{transform:translateY(18px) rotate(-4deg);opacity:0}to{transform:rotate(calc(var(--wave)*.2deg));opacity:1}}
@media(max-width:620px){.table-cloth{padding-top:16px;min-height:312px}.ritual-stage{height:284px}.ritual-card{width:80px;height:120px}.ritual-orbit{width:260px;height:120px;top:113px}.ritual-line{font-size:14px}.ritual-caption{top:222px}.ritual-skip{right:13px}.cut-panel{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){.ritual-card{will-change:auto}}
