/* Ritual rooms: readable controls over the approved location illustrations. */
.ritual-screen{position:relative;isolation:isolate;min-height:100dvh;padding-bottom:22px!important;background:linear-gradient(180deg,#130e28e8,#160e24aa 30%,#120c20f5 88%),var(--ritual-room) center/cover fixed}
.ritual-screen:before{content:'';position:absolute;inset:0;border-left:1px solid #e3bd7055;border-right:1px solid #e3bd7055;pointer-events:none;z-index:-1}
.ritual-screen .bar{min-height:55px;margin-bottom:4px;padding:8px 0}.ritual-screen .flow-steps{margin:8px 0 13px;font-size:10px}.ritual-screen .ritual-guide{margin:0 0 15px;text-align:left;padding:0 3px}.ritual-place{color:var(--ritual-accent);font-size:12px;font-weight:800;letter-spacing:.04em}.ritual-screen .ritual-guide h2{font:30px/1.25 var(--game-font);margin:8px 0;color:#fff0cd;text-shadow:0 3px 8px #0008}.ritual-screen .ritual-guide p{color:#e8dbef;font-size:13px;line-height:1.7;max-width:370px}.ritual-screen #quota{display:none}
.ritual-screen .ritual-table{position:relative;isolation:isolate;border:1px solid #eac17d99;border-radius:26px;background:linear-gradient(180deg,#130a1f11,#180e2ebd),var(--ritual-room) center 60%/cover;box-shadow:inset 0 0 40px #1c102a66,0 8px 0 #09041366;min-height:315px;margin:0;overflow:hidden;flex:1}
.ritual-table:after{content:'';position:absolute;left:9%;right:9%;bottom:38px;height:42px;border:1px solid #edc88755;border-radius:50%;background:radial-gradient(ellipse,#ffdda055,#5b302900 70%);z-index:-1}
.ritual-ambience{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:-1}.ritual-ambience i{position:absolute;width:4px;height:4px;border-radius:50%;background:#ffe19b;box-shadow:0 0 13px 4px #ffcc7055;bottom:10%;left:12%;animation:ritual-mote 6s ease-in-out infinite}.ritual-ambience i:nth-child(2){left:80%;animation-delay:-2s}.ritual-ambience i:nth-child(3){left:62%;animation-delay:-4s}.ritual-ambience i:nth-child(4){left:32%;animation-delay:-1s}.ritual-ambience i:nth-child(5){left:90%;animation-delay:-3s}.ritual-ambience i:nth-child(6){left:45%;animation-delay:-5s}
@keyframes ritual-mote{0%{transform:translate(0,0);opacity:0}35%{opacity:.8}100%{transform:translate(20px,-260px);opacity:0}}
.ritual-screen .tube-scene{height:245px;width:230px;margin:16px auto 0;position:relative;display:flex;align-items:flex-end;justify-content:center;flex-shrink:0;transform:scale(.9);transform-origin:center bottom}
.ritual-screen .tube{width:134px;height:157px;bottom:0}.ritual-screen .sticks{bottom:128px;width:112px;height:135px;gap:4px;overflow:visible}.ritual-screen .stick{width:7px;height:120px;border:1px solid #dfbf7b;background:linear-gradient(90deg,#a3743c,#f0d492,#ba8d49);transform:rotate(-3deg)}.ritual-screen .stick:nth-child(3n){transform:rotate(4deg)}
.ritual-screen .tube-body{border:2px solid #d5ad6a;background:linear-gradient(90deg,#302434,#684752,#332434);border-radius:7px 7px 23px 23px;box-shadow:inset 8px 0 10px #ffffff12,inset -15px 0 20px #0005,0 12px 15px #0006}.ritual-screen .tube-body:after{background:repeating-linear-gradient(90deg,#0002 0 2px,transparent 2px 16px)}.ritual-screen .tube-rim{background:linear-gradient(#e5c88a,#8f673c);height:23px;z-index:2}.ritual-tool-seal{position:absolute;top:56px;left:30px;right:30px;bottom:29px;border:1px solid #efcd88;background:#e8ca8e;color:#463026;border-radius:6px;display:flex;justify-content:center;align-items:center;font:26px serif;z-index:3;writing-mode:vertical-rl;box-shadow:0 2px 4px #0005}
.ritual-screen #shake-hint{font-size:14px;line-height:1.6;color:#ffedce;padding:10px 15px;margin:5px 0 0;min-height:48px;background:linear-gradient(90deg,transparent,#180d24aa,transparent);z-index:2;position:relative}.ritual-screen .gauge-wrap{margin:17px 0 10px}.ritual-screen .gauge{height:9px;border:1px solid #c79b7255;background:#1a102d}.ritual-screen .gauge-fill{background:linear-gradient(90deg,#b78952,var(--ritual-accent));box-shadow:0 0 12px var(--ritual-accent)}.ritual-screen .gauge-label{color:#e9d9ee;font-size:12px;margin-top:7px}.ritual-screen .alt-inputs{display:flex;flex-direction:column;gap:9px;margin:0}.ritual-screen #btn-tap,.ritual-screen #btn-toss{font:22px var(--game-font);color:#42263e;background:linear-gradient(#ffe4a0,#f3bd5f);border:2px solid #ffe6ab;border-radius:17px;min-height:57px;width:100%;box-shadow:0 5px #8a513e;flex:none}.ritual-screen #btn-tap:disabled{opacity:.7}.ritual-screen #btn-motion{border:0;background:transparent;color:#dac5e5;font-size:12px;padding:10px;box-shadow:none}
#ritual-line-track{margin:0 0 14px;padding:13px 11px;background:#142c35ec;border:1px solid #91cbc277;border-radius:18px;color:#e1fff3}#ritual-line-track[hidden]{display:none}.ritual-track-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.ritual-track-title b{font:19px var(--game-font);color:#bfffe6}.ritual-track-title span{font-size:10px;color:#b6d8d2}.ritual-line-slots{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}.ritual-line-slot{display:flex;flex-direction:column;align-items:center;border:1px dashed #658f89;border-radius:9px;padding:6px 1px;min-width:0;opacity:.65}.ritual-line-slot small{font-size:10px}.ritual-line-slot b{font-size:17px;white-space:nowrap;line-height:1.5;letter-spacing:-2px}.ritual-line-slot span{font-size:9px}.ritual-line-slot.done{background:#d5f0cc;color:#254536;border:1px solid #f3ecc3;opacity:1}.ritual-line-slot.current{border:1px solid #ffe094;color:#ffdf98;opacity:1}
.ritual-screen[data-ritual=sol] .tube-body{background:linear-gradient(90deg,#183437,#4a736b,#1f3c40);border-color:#b8d0ad}.ritual-screen[data-ritual=sol] .ritual-tool-seal{background:#e4d3a5;color:#253e38}.ritual-screen[data-ritual=sol] .stage{min-height:280px}
.ritual-screen[data-ritual=mali] .tube{width:105px;height:177px}.ritual-screen[data-ritual=mali] .tube-body{background:repeating-linear-gradient(0deg,transparent 0 49px,#4b501b 50px 54px),linear-gradient(90deg,#63743b,#adbd6a,#687b36);border-color:#d5dc8c;border-radius:8px 8px 28px 28px}.ritual-screen[data-ritual=mali] .ritual-tool-seal{writing-mode:horizontal-tb;left:6px;right:6px;font:18px sans-serif;background:#cb822f;color:#fff1b6;border-radius:50%;top:65px;bottom:35px}.ritual-screen[data-ritual=mali] .stick{background:linear-gradient(#e48543 0 20%,#e3c288 20%);border-color:#bb9d57}
.ritual-screen[data-ritual=rin] .tube{width:155px;height:180px}.ritual-screen[data-ritual=rin] .tube-body{inset:0;background:linear-gradient(90deg,#a07854 0 17%,#e9d3a2 18% 78%,#ae8154 79%);border-radius:0;clip-path:polygon(18% 0,78% 0,100% 13%,100% 89%,78% 100%,18% 100%,0 89%,0 13%);border:0}.ritual-screen[data-ritual=rin] .tube-rim{height:16px;left:30px;right:30px;top:-2px;border-radius:50%;background:#423124}.ritual-screen[data-ritual=rin] .sticks{width:10px;bottom:170px;height:62px;overflow:hidden}.ritual-screen[data-ritual=rin] .stick{flex-shrink:0;height:70px!important}.ritual-screen[data-ritual=rin] .ritual-tool-seal{background:#fff4db;color:#a13743;border-color:#b8454b;top:34px;bottom:18px;left:48px;right:48px;font-size:24px}.ritual-screen[data-ritual=rin] .ritual-ambience i{width:9px;height:6px;border-radius:80% 0;background:#ffbdd0;box-shadow:none}
.ritual-screen[data-ritual=tao] .tube-body{background:linear-gradient(90deg,#651f30,#b83c3f,#631c29);border:3px solid #e7bb65;border-radius:8px 8px 16px 16px}.ritual-screen[data-ritual=tao] .tube-body:after{border-top:8px double #e7bb65;border-bottom:8px double #e7bb65;background:none}.ritual-screen[data-ritual=tao] .ritual-tool-seal{background:#642533;color:#ffdc8d;border:2px solid #dfb767}.ritual-screen[data-ritual=tao] .stick{background:linear-gradient(#c14848 0 25%,#f2d5a6 25%)}
.ritual-charging .tube-scene{animation:ritual-rattle .17s ease-in-out infinite alternate}@keyframes ritual-rattle{from{transform:rotate(-7deg) translateX(-6px) scale(.9)}to{transform:rotate(7deg) translateX(6px) scale(.9)}}
.ritual-draw-ticket{position:absolute;z-index:8;top:35px;left:calc(50% - 62px);width:124px;min-height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;border:3px solid #ffe5ab;border-radius:13px;background:linear-gradient(90deg,#d3a15e,#fff0b8 35%,#edc786);color:#583529;box-shadow:0 15px 45px #100515cc,0 0 35px #ffdc8977;pointer-events:none}.ritual-draw-ticket small{font-size:11px}.ritual-draw-ticket strong{font:44px var(--game-font);word-break:break-all;text-align:center;line-height:1.1}.ritual-draw-ticket span{font-size:17px;font-weight:800}.paper-ticket{width:180px;left:calc(50% - 90px);background:repeating-linear-gradient(0deg,#eadbcc33 0 1px,transparent 1px 10px),#fff7e5;border:3px double #bf4f5a;border-radius:3px;color:#a13243;min-height:240px}
#screen-rice.ritual-screen .rice-body{min-height:430px;padding:100px 20px 25px;gap:15px;justify-content:flex-end;overflow:visible}.ritual-screen .rice-bowl{width:235px;height:124px;border-radius:10px 10px 110px 110px;border:3px solid #f8e0b1;background:linear-gradient(170deg,#fff2d6,#ece1c6 35%,#82a8a3 36%,#557f7f 48%,#dce6d4 49%,#adc7b8);box-shadow:inset 0 12px 14px #5a442733,0 15px 18px #11091c99}.ritual-screen .rice-bowl:before{content:'';position:absolute;width:115px;height:18px;border-radius:0 0 50% 50%;background:#e8d4a6;bottom:-15px;left:57px;z-index:-1}.ritual-screen .rice-bowl-label{font:20px var(--game-font);color:#365d58;bottom:22px}.ritual-screen .rice-hint{padding:10px 0 0;line-height:1.6;text-shadow:0 2px 3px #000}.ritual-screen .rice-toss-btn{max-width:none!important}
.ritual-screen .confirm-body{padding:24px 18px;display:flex;flex-direction:column;justify-content:center;gap:18px;min-height:430px;width:100%;text-align:center}.ritual-screen .confirm-desc{font-size:14px;color:#fff0d7;line-height:1.8;margin:0}.ritual-screen .jiao-wrap{height:145px;display:flex;align-items:center;justify-content:center;gap:28px}.ritual-screen .jiao-block{width:85px;height:100px;border-radius:70% 15% 15% 70%;background:linear-gradient(110deg,#f9b064,#bc453b 50%,#781e35);border:2px solid #f9cb8a;box-shadow:inset 8px 0 12px #fff2,0 12px 0 #3d1721,0 16px 15px #16091c99;transform:rotate(-25deg)}.ritual-screen .jiao-block:nth-child(2){transform:rotate(145deg)}.ritual-screen .jiao-block.flat{background:linear-gradient(110deg,#e9c08d,#c7975f)}.ritual-screen .jiao-block span{color:#ffefd1;font-size:24px}.ritual-screen[data-ritual=mali] .jiao-block{border-radius:50%;width:77px;height:82px;background:linear-gradient(135deg,#e4b76b,#6f4b2a)}.ritual-screen #jiao-result{font:26px var(--game-font);color:#ffe099;min-height:31px}.ritual-screen #jiao-progress{font-size:14px;color:#f2dfed;line-height:1.8}.casting .jiao-block{animation:ritual-cast .85s ease-in-out both}.casting .jiao-block:nth-child(2){animation-delay:.05s}@keyframes ritual-cast{0%{transform:translateY(0) rotate(0)}45%{transform:translateY(-75px) rotate(var(--cast-turn,300deg)) scale(.9)}100%{transform:translateY(0) rotate(15deg)}}
@media(max-height:740px){.ritual-screen .ritual-guide h2{font-size:26px}.ritual-screen .ritual-guide{margin-bottom:10px}.ritual-screen .ritual-table{min-height:270px}.ritual-screen .tube-scene{height:210px;transform:scale(.78);margin:0 auto}.ritual-screen[data-ritual=sol] .stage{min-height:240px}.ritual-screen #shake-hint{font-size:12px;padding:5px 10px}.ritual-screen .gauge-wrap{margin:12px 0 8px}#screen-rice.ritual-screen .rice-body{min-height:380px;padding-top:95px}.ritual-screen .confirm-body{min-height:380px}}
@media(prefers-reduced-motion:reduce){.ritual-ambience i,.ritual-charging .tube-scene,.casting .jiao-block{animation:none!important}}
.ritual-line-slot .yao{display:flex;gap:5px;width:80%;height:25px;align-items:center}.ritual-line-slot .yao i{height:4px;background:#295548;flex:1;border-radius:1px}

.ritual-focus{border-left:3px solid var(--ritual-accent);padding:11px 13px;margin:0 0 14px;background:#20172bdc;border-radius:0 13px 13px 0;color:#fff0db}.ritual-focus[hidden]{display:none}.ritual-focus b{font:17px var(--game-font);color:var(--ritual-accent)}.ritual-focus p{font-size:13px;line-height:1.7;margin:5px 0 0;word-break:keep-all}.ritual-focus small{display:block;margin-top:8px;padding-top:8px;border-top:1px solid #ffffff26;font-size:12px;line-height:1.6;color:#e7d2ef;overflow-wrap:anywhere}

/* Japanese closed hexagonal omikuji box: a single numbered stick, no open bundle. */
#omikuji-box{display:none}
.ritual-screen[data-ritual=rin] #tube{width:280px;height:315px;bottom:0;background:none;box-shadow:none}
.ritual-screen[data-ritual=rin] #tube>.tube-body,.ritual-screen[data-ritual=rin] #tube>.tube-rim,.ritual-screen[data-ritual=rin] #tube>.ritual-tool-seal,.ritual-screen[data-ritual=rin] #tube-sticks{display:none}
.ritual-screen[data-ritual=rin] .tube-scene{height:330px;width:300px;transform:none;margin:0 auto}
.ritual-screen[data-ritual=rin] #omikuji-box{display:block;width:280px;height:315px;filter:drop-shadow(0 12px 9px #160b1d88)}
#omikuji-box svg{width:100%;height:100%;overflow:visible}
.omikuji-assembly{transform-origin:160px 175px;transition:transform .7s ease}
.omikuji-number-stick{transform:translateY(0);transition:transform 1s .6s cubic-bezier(.2,.65,.3,1)}
.omikuji-drawing .omikuji-assembly{transform:rotate(125deg) scale(.88)}
.omikuji-drawing .omikuji-number-stick{transform:translateY(-108px)}
.ritual-screen[data-ritual=rin] .ritual-charging .tube-scene{animation:omikuji-rattle .2s ease-in-out infinite alternate}
@keyframes omikuji-rattle{from{transform:rotate(-8deg) translateY(-3px)}to{transform:rotate(8deg) translateY(3px)}}
@media(prefers-reduced-motion:reduce){.omikuji-assembly,.omikuji-number-stick{transition:none}.ritual-screen[data-ritual=rin] .ritual-charging .tube-scene{animation:none}}

/* Siam si: round, open red cylinder with a bundle of numbered bamboo sticks. */
#siamsi-cylinder{display:none}
.ritual-screen[data-ritual=mali] #tube{width:280px;height:306px;bottom:0;background:none;box-shadow:none}
.ritual-screen[data-ritual=mali] #tube>.tube-body,.ritual-screen[data-ritual=mali] #tube>.tube-rim,.ritual-screen[data-ritual=mali] #tube>.ritual-tool-seal,.ritual-screen[data-ritual=mali] #tube-sticks{display:none}
.ritual-screen[data-ritual=mali] .tube-scene{height:315px;width:300px;margin:0 auto;transform:none}
.ritual-screen[data-ritual=mali] #siamsi-cylinder{display:block;width:280px;height:306px;filter:drop-shadow(0 12px 8px #17081888)}
#siamsi-cylinder svg{width:100%;height:100%;overflow:visible}
.ritual-screen[data-ritual=mali] .ritual-table{padding-bottom:100px;min-height:430px}
.ritual-screen[data-ritual=mali] #shake-hint{position:absolute;bottom:0;left:0;right:0;margin:0;padding:12px 16px;min-height:48px}
.ritual-draw-ticket.siamsi-fallen-stick{position:absolute;width:14px;height:137px;min-height:0;gap:0;padding:0;border:1px solid #5f3120;border-radius:3px 3px 1px 1px;background:linear-gradient(#ba372b 0 29%,#edce90 29%);color:#3b211b;box-shadow:3px 5px 5px #170c1a88;transform-origin:50% 50%;display:block}
.siamsi-fallen-stick b{display:block;position:absolute;top:12px;left:1px;right:1px;background:#fff0c9;color:#3b211b;text-align:center;font:bold 10px/25px sans-serif;border-radius:1px}

/* Chinese qian: sculpted red lacquer cylinder, gold bands and vertical Chinese lots. */
#qian-cylinder{display:none}
.ritual-screen[data-ritual=tao] #tube{width:280px;height:306px;bottom:0;background:none;box-shadow:none}
.ritual-screen[data-ritual=tao] #tube>.tube-body,.ritual-screen[data-ritual=tao] #tube>.tube-rim,.ritual-screen[data-ritual=tao] #tube>.ritual-tool-seal,.ritual-screen[data-ritual=tao] #tube-sticks{display:none}
.ritual-screen[data-ritual=tao] .tube-scene{height:315px;width:300px;margin:0 auto;transform:none}
.ritual-screen[data-ritual=tao] #qian-cylinder{display:block;width:280px;height:306px;filter:drop-shadow(0 12px 8px #17081888)}
#qian-cylinder svg{width:100%;height:100%;overflow:visible}
#screen-shake[data-ritual=tao] .ritual-table{padding-bottom:100px;min-height:430px}
.ritual-screen[data-ritual=tao] #shake-hint{position:absolute;bottom:0;left:0;right:0;margin:0;padding:12px 16px;min-height:48px}
.ritual-draw-ticket.qian-fallen-stick{width:17px;background:linear-gradient(90deg,#8b142b,#d44343,#a51e32);border-color:#641b27;clip-path:polygon(50% 0,100% 6%,100% 100%,0 100%,0 6%);border-radius:0}
.qian-fallen-stick b{background:none;color:#ffe4a4;writing-mode:vertical-rl;left:1px;right:1px;top:13px;font:12px/14px serif;letter-spacing:2px}

/* Rice is cast from a bowl onto a wooden divination table. */
#screen-rice.ritual-screen .rice-body{min-height:480px;padding:315px 14px 20px;overflow:hidden;justify-content:flex-start;gap:9px}
#screen-rice.ritual-screen .rice-bowl{position:absolute;z-index:4;top:25px;left:calc(50% - 83px);width:166px;height:83px;margin:0;border-radius:50% 50% 42% 42%;border:5px solid #91553a;background:radial-gradient(ellipse at 50% 27%,#f7e9c7 0 50%,#7b422c 52%,#a3623f 65%,#50281f 100%);box-shadow:0 8px 0 #4c291f,0 15px 16px #160a1a88}
#screen-rice.ritual-screen .rice-bowl:before{display:none}
#screen-rice .rice-grains{inset:9px 17px 29px;border-radius:50%;overflow:hidden}
#screen-rice .rice-bowl-label{bottom:2px;font-size:12px;color:#ffe6b0;z-index:4}
#rice-coins{position:absolute;right:22px;top:14px;z-index:5;transform:rotate(-18deg)}
#rice-coins i{position:absolute;right:0;top:0;width:26px;height:26px;border:3px double #f9d97c;border-radius:50%;background:radial-gradient(#8b6330,#d9ad53);box-shadow:1px 3px 2px #573d25}
#rice-coins i:nth-child(2){right:14px;top:5px}#rice-coins i:nth-child(3){right:27px;top:9px}
#rice-coins i:after{content:'';position:absolute;left:7px;top:7px;width:6px;height:6px;background:#49331f;border:1px solid #8d632c}
#rice-divination-table{position:absolute;top:127px;left:5%;width:90%;height:173px;border:7px solid #985c35;border-radius:26% 26% 20% 20%/15% 15% 13% 13%;background:repeating-linear-gradient(3deg,transparent 0 13px,#29140f22 14px 15px,transparent 16px 28px),linear-gradient(125deg,#70402c,#965d3b 45%,#593122);box-shadow:inset 0 0 0 2px #c38a51,0 9px 0 #42251d,0 21px 20px #12091988}
#rice-divination-table:before,#rice-divination-table:after{content:'';position:absolute;top:100%;height:23px;width:18px;background:linear-gradient(90deg,#41251a,#77432b);left:12%;border-radius:0 0 4px 4px;z-index:-1}#rice-divination-table:after{left:auto;right:12%}
#rice-scattered-grains{position:absolute;inset:13px 14px;z-index:2}
.rice-table-inlay{position:absolute;left:0;right:0;top:42%;text-align:center;color:#cd9d6266;font:24px serif;letter-spacing:20px;pointer-events:none}
.table-rice-grain{position:absolute;width:9px;height:4px;border-radius:60% 45%;background:linear-gradient(#fffbee,#e7d7b1);box-shadow:1px 2px 2px #20120dcc}
#screen-rice.ritual-screen .rice-count{font:20px var(--game-font);color:#ffe4a1;min-height:25px;margin:0}
#screen-rice.ritual-screen .rice-hint{font-size:13px;line-height:1.6;padding:0;margin:0;color:#f5e5d2;text-align:center}
#screen-rice.ritual-screen .rice-toss-btn{font:20px var(--game-font);width:100%;min-height:54px;margin-top:5px}

/* Korean santong: dark turned wood and notched counting rods. */
#santong-vessel{display:none}
.ritual-screen[data-ritual=sol] #tube{width:260px;height:276px;bottom:0;background:none;box-shadow:none}
.ritual-screen[data-ritual=sol] #tube>.tube-body,.ritual-screen[data-ritual=sol] #tube>.tube-rim,.ritual-screen[data-ritual=sol] #tube>.ritual-tool-seal,.ritual-screen[data-ritual=sol] #tube-sticks{display:none}
.ritual-screen[data-ritual=sol] .tube-scene{height:276px;width:280px;margin:0 auto;transform:none}
.ritual-screen[data-ritual=sol] #santong-vessel{display:block;width:260px;height:276px;filter:drop-shadow(0 10px 8px #17081888)}
#santong-vessel svg{width:100%;height:100%}
.ritual-draw-ticket.santong-drawn{width:31px;left:calc(50% - 15px);top:22px;min-height:220px;border:2px solid #795632;border-radius:4px;background:linear-gradient(90deg,#a98048,#e4c88f 40%,#bd955c);gap:24px;color:#463321;box-shadow:0 10px 20px #130b1c88}
.santong-notch{display:flex;flex-direction:column;gap:6px;width:100%;padding-top:14px}.santong-notch i{height:2px;width:100%;background:#6c4d2c;box-shadow:0 1px #f5dfaf99}.santong-drawn b{font:22px serif;writing-mode:vertical-rl}
