/* Fonts are loaded from the public font CDN; the archive does not redistribute font binaries. */
/* Witch's Ritual V1.1: safe composition, local Jersey fonts, responsive tap areas. */
/* Put original ornament animation on a dedicated noninteractive layer. */
.landing-glimmer{position:absolute;inset:0;z-index:2}
.glimmer{position:absolute;width:24px;height:28px;image-rendering:pixelated;animation:star-twinkle 2.4s steps(2,end) infinite alternate;opacity:.72}
.g1{left:98px;top:420px}.g2{left:450px;top:375px;animation-delay:.8s}.g3{left:304px;top:170px;animation-delay:1.6s}
@keyframes star-twinkle{0%,32%{opacity:0;transform:scale(.65)}62%{opacity:.9;transform:scale(1)}100%{opacity:.2;transform:scale(.8)}}
/* The loading label is allowed only when assets fail or are still loading. */
.asset-status{top:802px;left:117px;width:306px;height:22px;font-size:16px;line-height:20px;overflow:hidden}
.mission-start{top:731px;left:117px;width:306px;height:56px}
.mission-loading{top:661px}
.mission-surprise{font-size:17px;line-height:19px}
/* Empty original frame + live labels; never overlay another pre-rendered number. */
.score-hud{top:29px;width:154px;height:77px;isolation:isolate}
.score-hud img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.score-hud:before{content:'';position:absolute;z-index:-1;background:#020307;left:8px;top:7px;right:8px;bottom:7px}
.hud-caption{position:absolute;left:15px;right:10px;top:10px;font:22px/1 'Jersey 25',monospace;color:#5ce883;letter-spacing:.35px;white-space:nowrap}
.hud-value{position:absolute;left:14px;right:12px;top:33px;height:34px;min-width:0;width:auto;overflow:hidden;background:transparent;color:#f9f8f3;font:42px/33px 'Jersey 10',monospace;white-space:nowrap;letter-spacing:0;text-align:left}
.hud-right .hud-caption{font-size:20px}.hud-right .hud-value{font-size:39px}
.game-logo{top:5px;width:138px;height:80px;left:201px}
/* HUD row two has three disjoint cells and dedicated whitespace. */
.hp-meter{top:112px;left:31px;width:129px;height:38px;font-size:30px;letter-spacing:5px;line-height:35px;white-space:nowrap}
.stage-counter{top:110px;left:182px;width:176px;height:37px;font:28px/36px 'Jersey 25',monospace;letter-spacing:.1px;white-space:nowrap}
.demo-mark{display:none!important}
/* Gameplay has no visible pause/audio controls; HUD remains uncluttered. */
/* Mission and Result text should never sit on the gold frame. */
.result-score{top:196px;left:113px;width:314px;font-size:66px;line-height:65px;white-space:nowrap;overflow:hidden}
.result-reached{top:257px;font-size:25px;line-height:29px}
.result-trapped{top:300px;left:126px;width:288px;height:93px}
.result-message{top:407px;left:103px;width:334px;font-size:20px;line-height:22px}
.result-community{top:478px;left:108px;width:324px;font-size:19px;line-height:24px}
.result-community>span{gap:8px;align-items:baseline;white-space:nowrap}
.result-community b{font-weight:400}
.result-community small{font-size:17px;line-height:22px}
.claim-button{left:114px;top:614px;width:312px;height:56px;font:30px/1 'Jersey 25',monospace;padding:3px 9px;white-space:nowrap;display:flex;align-items:center;justify-content:center;background:#f4e52a url('assets/ui-v11/cta_stars.png') center/100% 100% no-repeat;border:0;box-shadow:none}
.result-share{left:120px;top:681px;width:300px;height:52px}
.result-social{left:124px;top:747px;width:292px;height:63px}
/* Reward CTA typography is constrained to its button area. */
.reward-heading{top:112px;font-size:46px}
.reward-description{top:171px;font-size:21px}
.mystery-card{top:223px;left:108px;width:324px;height:453px}
.reward-card-name{top:694px;left:50px;width:440px;font-size:29px;line-height:32px;white-space:normal}
.reward-buttons{left:56px;top:752px;width:428px;gap:15px}
.reward-buttons button{min-width:0;white-space:nowrap;overflow:hidden;font:25px/1 'Jersey 25',monospace;padding:12px 5px;height:54px}
.replay-button{top:828px}
.reward-tip{top:887px;width:446px;left:47px;font:19px/21px 'Jersey 25',monospace}
/* Sound uses device volume; no on-screen sound toggle. */
/* Landscape and different mobile heights use the same 9:16 authored canvas.
   The host scales the composition uniformly, so pixel artwork is not stretched. */
@media(prefers-reduced-motion:reduce){.glimmer{animation:none;opacity:.55}}

/* Reserve both ornaments inside the artwork button, keeping lettering centered. */
.claim-button{padding-left:44px;padding-right:44px}
