/* Second study: an illustrated red sanctuary, with a functional touch scanner. */
#ritual{isolation:isolate;overflow:hidden;padding:115px 24px 135px;background:#130407;min-height:100svh}
.ritual-backdrop{position:absolute;inset:0;z-index:-4;background:url('assets/bloom-art.jpg') center 43%/cover no-repeat;filter:saturate(1.25);opacity:.65;transform:scale(1.025)}
.ritual-veil{position:absolute;inset:0;z-index:-3;background:radial-gradient(ellipse 31% 70% at 50% 45%,#12040cf5 12%,#200612e8 55%,#1b071472 100%),linear-gradient(0deg,#160207 0%,transparent 25%,#26010a7a 70%,#0b0308 100%)}
.temple-ring{position:absolute;left:50%;top:51%;width:min(83vw,970px);aspect-ratio:1;transform:translate(-50%,-50%);border:1px solid #f04e4770;border-radius:50%;box-shadow:0 0 90px #9c05134d,inset 0 0 110px #c309202c;z-index:-1;pointer-events:none}
.temple-ring::before,.temple-ring::after{content:'';position:absolute;inset:22px;border:1px solid #e1383740;border-radius:50%}.temple-ring::after{inset:44px;border:1px dashed #c7514130}
.ritual-inner{max-width:710px}.ritual-logo{display:block;width:260px;height:95px;object-fit:contain;margin:-10px auto 0;filter:drop-shadow(0 0 18px #fe345b60)}
#ritual #overline{font-size:12px;letter-spacing:.3em;color:#dd9299;margin:4px 0 10px}
#ritual h1{font-size:clamp(42px,5vw,65px);line-height:1.35;letter-spacing:.28em;text-indent:.28em;color:#ffefe7;text-shadow:0 0 30px #b9153470}
.ritual-whisper{font-family:"Songti TC",serif;font-size:16px;letter-spacing:.18em;color:#d6a4a7;margin:10px 0 0}
.side{color:#d79299}.side.right{letter-spacing:.4em}.oracle,body[data-phase=result] .oracle{width:280px;height:280px;margin:22px auto 16px}
.orbit-one{border-color:#d23d555c;border-top-color:#ff9b97;border-bottom-color:#ff9b97;box-shadow:0 0 45px #d1153833,inset 0 0 35px #ca072828;animation:revolve 40s linear infinite}
.orbit-two{inset:20px;border-color:#c5606670;animation:revolve 70s linear infinite reverse}
.coordinate{bottom:23px;font-size:12px;letter-spacing:.14em;color:#dba2a8;z-index:4}
.fingerprint-control{position:absolute;inset:45px 52px 49px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:12px 18px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:pointer;color:#f3a8b0;background:linear-gradient(180deg,#7507220a,#b01a3930);border:1px solid #db556d40;border-radius:22px;transition:box-shadow .3s,color .3s,background .3s;z-index:3;overflow:hidden}
.fingerprint-control:hover{color:#ffded5;box-shadow:0 0 35px #f6245340;background:#b01a3930}.fingerprint-control:focus-visible{outline:2px solid #ffbeb2;outline-offset:5px}
.fingerprint{width:91px;height:113px;filter:drop-shadow(0 0 5px #fa436480);pointer-events:none}
.sensor-label{font:12px monospace;letter-spacing:.08em;white-space:nowrap;color:#eac2c6;pointer-events:none}
.sensor-corner{position:absolute;width:14px;height:14px;border:solid #ff9cab;pointer-events:none}.c1{top:8px;left:8px;border-width:1px 0 0 1px}.c2{top:8px;right:8px;border-width:1px 1px 0 0}.c3{bottom:8px;left:8px;border-width:0 0 1px 1px}.c4{bottom:8px;right:8px;border-width:0 1px 1px 0}
.scan-sweep{position:absolute;top:15%;left:0;right:0;height:2px;background:#ffeee7;box-shadow:0 0 10px #fff2e3,0 -15px 24px 8px #f3456460;opacity:0;pointer-events:none}
.scan-progress{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);pointer-events:none;z-index:2;fill:none;stroke:#ffc4b4;stroke-width:2;filter:drop-shadow(0 0 5px #f62858);stroke-dasharray:100;stroke-dashoffset:calc(100 - var(--progress,0));opacity:0}
.signal-core{position:absolute;width:3px;height:3px;background:#ffede0;border-radius:50%;box-shadow:0 0 18px 7px #ed5171,0 0 75px 35px #d200313d;opacity:0;pointer-events:none}
body[data-phase=scanning] .scan-sweep{opacity:1;animation:scanPass .8s ease-in-out infinite alternate}body[data-phase=scanning] .scan-progress{opacity:1}
body[data-phase=scanning] .fingerprint-control{background:#c620442e;color:#ffe8e0;box-shadow:0 0 40px #f4235355,inset 0 0 40px #de103833}
body[data-phase=scanning] .orbit-one{animation-duration:8s}body[data-phase=scanning] .fingerprint path{stroke-dasharray:240;animation:ridgeRead .8s ease-in-out infinite alternate}
body[data-phase=gathering] .fingerprint-control{animation:sensorCollapse .65s ease-in forwards;pointer-events:none}
body[data-phase=gathering] .scan-progress{opacity:1;animation:aperture .8s ease-in both}
body[data-phase=gathering] .signal-core{animation:coreCharge 1.1s ease-out both}
body[data-phase=gathering] .orbit-one{animation-duration:1.2s}body[data-phase=gathering] .orbit-two{animation-duration:2s}
body[data-phase=casting] .signal-core{animation:coreRelease .7s ease-out both}
body[data-phase=casting] .orbit-one{animation-duration:3s}
#ritual .hex{width:116px;gap:12px;z-index:3}#ritual .yao{height:9px;opacity:0;filter:none;transition:none}#ritual .yao i{background:#f4c9b5;box-shadow:0 0 12px #ff496f,0 0 30px #eb154c66}
#ritual .yao.lit{opacity:1;animation:lineResolve .52s cubic-bezier(.2,.8,.2,1) both}
#ritual .yao.lit i{animation:lineMaterialize .48s ease-out both}
#ritual .invitation{color:#f1cccb;font-size:16px;margin:15px 0 3px;letter-spacing:.08em}
#ritual .live{color:#dca0a9;margin:5px 0 0;letter-spacing:.08em;min-height:25px}
#ritual #single{margin:0 auto;color:#caa6ab;padding:12px}
body[data-phase=result] #ritual h1,body[data-phase=reject] #ritual h1{font-size:25px;letter-spacing:.14em}
body[data-phase=result] .ritual-whisper,body[data-phase=reject] .ritual-whisper{display:none}
body[data-phase=result] #ritual .oracle,body[data-phase=reject] #ritual .oracle{margin:14px auto 20px}
#ritual .result #verdict{color:#ffdfd2;text-shadow:0 0 25px #ae2547}
#ritual .classification{color:#ff9baa}#ritual .primary{border-color:#eb8190;background:#a216333d}#ritual .primary:hover{background:#c024475e}
#ritual .ritual-footer{color:#d9a5ab}#ritual .ritual-footer small{color:#c7a1a5}#ritual .ritual-footer .text-button{color:#eed5d7}
@keyframes scanPass{from{top:13%}to{top:75%}}@keyframes ridgeRead{from{stroke-dashoffset:35;opacity:.5}to{stroke-dashoffset:0;opacity:1}}
@keyframes sensorCollapse{0%{opacity:1;transform:scale(1)}60%{opacity:1;transform:scaleX(.04) scaleY(1.2);filter:blur(1px)}100%{opacity:0;transform:scale(.01);filter:blur(8px)}}
@keyframes aperture{0%{transform:rotate(-90deg) scale(1);opacity:1}100%{transform:rotate(90deg) scale(.04);opacity:0}}
@keyframes coreCharge{0%{opacity:0;transform:scale(.1)}45%{opacity:1;transform:scale(2)}100%{opacity:1;transform:scale(1)}}
#sound{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px;color:#d6b7bd}
#sound svg{width:20px;height:20px}#sound #sound-label{font-size:12px;margin:0;letter-spacing:.05em}
#sound .sound-cross{display:none}#sound[data-muted=true] .sound-cross{display:block}#sound[data-muted=true] .sound-waves{display:none}
.flower{background-image:url('assets/chosen.jpg');background-position:center 47%;background-size:cover}
.film-options{display:flex;flex-wrap:wrap;gap:12px;padding:12px 0 20px}
.home-actions{display:flex;flex-wrap:wrap;gap:14px}.home-actions a{color:inherit;text-decoration:none}.read-comic{background:#852b40aa}.explore-link{display:inline-block;margin-top:24px;color:#cbb2bb;font-size:13px;text-decoration:none;letter-spacing:.15em}
a:focus-visible{outline:2px solid #e9bbb3;outline-offset:6px}
#world{padding:88px 8vw 100px;background:#100b10;position:relative;z-index:5}.world-heading h2,.party-teaser h2{font-family:"Songti TC",serif;font-weight:400;font-size:clamp(26px,3vw,40px);letter-spacing:.12em;margin:12px 0 36px}.world-films{display:grid;grid-template-columns:1fr 1fr;gap:28px}.media-card{text-align:left;padding:0;border:1px solid #62414d;overflow:hidden;background:#170e17}.media-card img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;transition:filter .3s}.media-card:hover img{filter:brightness(1.15)}.media-caption{display:flex;justify-content:space-between;gap:16px;padding:22px;font-size:16px}.media-caption>span:last-child{font-size:12px;color:#bca5b0;white-space:nowrap}.party-teaser{margin-top:80px;padding:48px 0;border-top:1px solid #6b3448;border-bottom:1px solid #6b3448;display:flex;align-items:center;justify-content:space-between;gap:24px}.party-teaser h2{margin:16px 0}.party-teaser p:not(.eyebrow){color:#c4a8b6;font-size:16px;line-height:1.8}.coming-soon{font-size:12px;letter-spacing:.15em;color:#bd889b;white-space:nowrap}
@media(max-width:600px){#world{padding:60px 24px}.world-films{grid-template-columns:1fr;gap:24px}.party-teaser{margin-top:48px;display:block}.coming-soon{display:block;margin-top:28px}.home-actions .primary{font-size:14px;padding:13px 16px;gap:16px}}
.film-options button{padding:10px 12px;border:1px solid #68414c;color:#c7abb3;font-size:13px}
.film-options button[aria-pressed=true]{background:#561b30;color:#fff;border-color:#db7b94}
@keyframes coreRelease{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(28)}}
@keyframes lineResolve{0%{opacity:0;transform:translateY(-25px) scaleX(.05);filter:blur(5px)}40%{opacity:1;transform:translateY(0) scaleX(1.12);filter:blur(1px)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes lineMaterialize{0%{clip-path:inset(0 48%)}100%{clip-path:inset(0 0)}}
@media(max-width:600px){#ritual{padding:108px 18px 138px}.ritual-logo{width:230px;height:83px;margin:0 auto}.ritual-backdrop{background-size:auto 100%;background-position:46% center;opacity:.6}.ritual-veil{background:radial-gradient(ellipse 66% 65% at 50% 48%,#21040ee8 10%,#270414bf 60%,#1c04066b 100%),linear-gradient(0deg,#100207,transparent 40%)}.temple-ring{width:130vw;top:48%}#ritual h1{font-size:45px}.oracle,body[data-phase=result] .oracle{width:260px;height:260px;margin:18px auto 14px}.fingerprint-control{inset:41px 44px 46px}.fingerprint{height:107px}#ritual .ritual-footer span{max-width:235px}#ritual .ritual-footer{left:20px;right:14px}.ritual-whisper{font-size:16px}#ritual #overline{font-size:12px;letter-spacing:.18em}}
@media(prefers-reduced-motion:reduce){#ritual .scan-sweep{display:none}.signal-core{display:none}body[data-phase=gathering] .fingerprint-control{opacity:0}.scan-progress{filter:none}#ritual .yao.lit{opacity:1}#ritual .fingerprint path{opacity:1}}

.live-entry{font-size:12px;color:#dbb2c1;text-decoration:none;margin-left:auto;margin-right:20px;border-bottom:1px solid #8d5365;padding:12px 0}.party-teaser a{color:inherit;text-decoration:none}@media(max-width:600px){header{flex-wrap:wrap;gap:8px}.live-entry{order:3;margin:0;width:100%;text-align:right;padding:2px 0;border:0}#ritual{padding-top:152px}}
