:root{--green:#103f2a;--cream:#fffbed;--orange:#ff9844}*{box-sizing:border-box}body{margin:0;background:#faf7ed;font-family:'Arial Rounded MT Bold','PingFang SC','Microsoft YaHei',sans-serif;color:var(--green);overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;touch-action:manipulation}button:focus-visible{outline:5px solid #f7c342;outline-offset:6px}button:disabled{opacity:.55;cursor:wait}#stage{width:1672px;height:941px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(var(--scale,1));overflow:hidden;background:var(--cream);isolation:isolate}.screen{position:absolute;inset:0;display:none}.screen.active{display:block}.landscape{background:radial-gradient(ellipse at 52% 35%,#fff9da,#fffdf5 67%)}.sun{position:absolute;left:328px;top:35px;width:995px;height:620px;background:#fff5c9;border-radius:50%;opacity:.75}.hill{position:absolute;border-radius:50% 50% 0 0;background:linear-gradient(135deg,#a9bc90,#c3cea3);pointer-events:none}.hill-left{width:1080px;height:700px;left:-550px;top:370px;transform:rotate(18deg)}.hill-right{width:1040px;height:580px;left:1235px;top:422px;transform:rotate(-23deg)}.hill-mid{left:-250px;top:660px;width:2200px;height:690px;background:linear-gradient(110deg,#d4ddb5,#bdcda2)}.hill-front{left:-600px;top:856px;width:2860px;height:800px;background:linear-gradient(90deg,#a2b88c,#c2cda3 50%,#91ac7b);transform:rotate(2deg);z-index:7}.brand{font-size:47px;letter-spacing:-2px;font-weight:1000}.brand i{color:#89ad76;font-size:47px;vertical-align:middle;font-style:normal;margin-left:8px}.home-title{position:absolute;left:500px;top:128px;width:680px;height:390px;object-fit:contain;z-index:8}.orange{background:linear-gradient(135deg,#ffa34c,#ff943e);border-radius:80px;font-size:44px;font-weight:900;letter-spacing:3px;transition:filter .2s,transform .2s;box-shadow:inset 0 2px 0 #ffffff30;padding:19px 40px}.orange:hover{filter:brightness(1.06);transform:translateY(-3px)}.orange:active{transform:scale(.97)}.home-start{position:absolute;left:653px;top:538px;width:384px;height:108px;z-index:8}.instructions{position:absolute;top:675px;left:779px;font-size:27px;font-weight:900;text-decoration:underline;text-underline-offset:8px;z-index:8}.global{position:absolute;z-index:25;font-weight:900}.circle{width:65px;height:65px;background:#d2ead4;border-radius:50%;font-size:36px}.sound{right:34px;top:29px;width:76px;height:76px;background:#fffbed;font-size:45px}.back{top:28px;left:45px;font-size:59px;display:none}.home-monster{position:absolute;transform-origin:50% 100%;animation:appear 1.25s cubic-bezier(.2,.9,.3,1) both;pointer-events:none}.home-monster img{width:100%;height:100%;object-fit:contain;animation:breathe 3s ease-in-out infinite}.home-monster.purple{left:80px;top:160px;width:350px;height:380px;z-index:2;animation-delay:.2s}.home-monster.black{left:1090px;top:167px;width:350px;height:661px;z-index:4;animation-delay:.55s}.home-monster.yellow{left:54px;top:441px;width:357px;height:390px;z-index:6;animation-delay:.35s}.home-monster.blue{left:398px;top:524px;width:283px;height:305px;z-index:6;animation-delay:.8s}.home-monster.pink{left:1255px;top:405px;width:383px;height:433px;z-index:6;animation-delay:1s}.purple img{animation-delay:-1s}.pink img{animation-delay:-2s}.sprout{position:absolute;color:#84a876;font-size:125px;z-index:8}.sprout-a{left:20px;top:720px}.sprout-b{right:50px;top:725px}.home-carrot{position:absolute;right:35px;bottom:65px;font-size:102px;transform:rotate(-15deg);z-index:8}.choose-brand{position:absolute;left:129px;top:37px}.choose-title{position:absolute;width:510px;height:102px;left:580px;top:86px}.character{position:absolute;left:240px;top:151px;width:560px;height:614px;z-index:8}.character[data-character=princess]{left:871px}.character>img{position:absolute;inset:0 45px 75px;width:470px;height:539px;object-fit:contain;filter:drop-shadow(0 10px 5px #59794318);transition:transform .3s;pointer-events:none}.character:hover>img{transform:translateY(-5px)}.platform{position:absolute;bottom:60px;left:-15px;width:585px;height:90px;border-radius:50%;background:#a8bd6d55;box-shadow:inset 0 0 20px #83a24733}.aura{position:absolute;left:-15px;bottom:60px;width:585px;height:90px;border-radius:50%;opacity:0;transition:opacity .3s;background:radial-gradient(ellipse,#fff8a96b,#ffdc356b 55%,#ffe37a 65%,transparent 71%);box-shadow:0 0 25px 8px #ffcb4580;pointer-events:none}.selected .aura{opacity:1;animation:goldPulse 2s infinite}.selected .aura:before,.selected .aura:after{content:'✦';position:absolute;color:#ffe27b;font-size:37px;top:-35px;left:15%;text-shadow:0 0 12px #ffbf18;animation:sparkle 2s infinite}.selected .aura:after{left:84%;animation-delay:.9s}.character-name{position:absolute;bottom:13px;left:152px;min-width:250px;background:#fffae9;padding:10px 35px;border-radius:40px;font-size:35px;font-weight:900}.selected-tag{display:none;position:absolute;bottom:-13px;left:215px;background:#3c7653;color:white;font-size:22px;border-radius:22px;padding:4px 15px}.selected .selected-tag{display:block}.choose-tip{position:absolute;top:715px;width:100%;text-align:center;font-size:23px;font-weight:800;z-index:8}.adventure{position:absolute;left:645px;top:778px;width:381px;height:107px;z-index:8}.game-header{height:65px;background:#fffbef;position:absolute;inset:0 0 auto;display:flex;align-items:center;padding-left:83px;z-index:10}.game-header .brand{font-size:43px}.game-header #pause{position:absolute;right:117px;top:6px;width:54px;height:54px;font-size:34px}.game-header #level-label{position:absolute;right:220px;font-size:20px;font-weight:800;opacity:.7}.camera-area{position:absolute;top:65px;height:581px;width:100%;overflow:hidden;background:linear-gradient(130deg,#d5dfda,#edf0e9)}.camera-area video{position:absolute;width:100%;height:100%;object-fit:cover;transform:scaleX(-1);display:none}.camera-area.live video{display:block}#camera-empty{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:20px;font-size:38px;color:#47735b;background:radial-gradient(ellipse,#f4f5ed,#cfdcd2)}#camera-empty small{font-size:24px}.live #camera-empty{display:none}.targets{position:absolute;top:22px;left:25px;width:328px;height:188px;background:#fffbedf2;border-radius:34px;padding:20px 26px;z-index:3;box-shadow:0 5px 25px #193f2810}.targets b{font-size:29px}#target-list{display:flex;justify-content:space-between;margin-top:8px}#target-list span{width:80px;text-align:center}#target-list img{width:68px;height:68px;object-fit:contain}#target-list small{display:block;font-size:20px;font-weight:800;margin-top:2px}#food-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.combo{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);background:#fffbed;border-radius:35px;padding:5px 25px;font-size:36px;color:#f58919;font-weight:1000;white-space:nowrap;display:none}.combo strong{font-size:58px;line-height:1.05}.combo.pop{animation:comboPop .35s}.tracking-status{position:absolute;right:23px;top:22px;background:#fffbeddd;border-radius:24px;padding:9px 18px;font-size:20px;color:#255d40;max-width:460px}.tracking-status.ready:before{content:'● ';color:#70b685}.tracking-status.lost{color:#aa6529;background:#fff3df}.feedback{position:absolute;left:50%;top:40px;transform:translateX(-50%);background:#fffbeded;padding:12px 24px;border-radius:28px;font-size:25px;opacity:0;transition:opacity .2s;z-index:4}.feedback.show{opacity:1}.battle{position:absolute;inset:646px 0 0;background:#54836c;overflow:hidden}.battle-scenery{position:absolute;inset:0;width:100%;height:100%}.fighter{position:absolute;left:393px;top:2px;width:325px;height:255px;transform-origin:50% 95%;z-index:3}.fighter img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 1px #49704920)}.hero-shadow{position:absolute;left:390px;top:238px;width:230px;height:23px;border-radius:50%;background:#4a785744}.enemy{position:absolute;left:1060px;top:55px;width:225px;height:210px;z-index:4;transform-origin:50% 95%;transition:left .45s,transform .4s}.enemy:after{content:'';position:absolute;left:12px;bottom:-5px;width:204px;height:17px;background:#49765344;border-radius:50%;z-index:-1}.enemy img{width:100%;height:100%;object-fit:contain}.enemy.black-enemy{height:245px;top:26px}.health{position:absolute;left:1087px;top:13px;width:240px;height:30px;border:3px solid #fffbed;border-radius:22px;overflow:hidden;background:#164a39;box-shadow:0 0 0 2px #2d6150;z-index:5;transition:left .45s}.health>div{height:100%;width:100%;background:#ff7050;border-radius:20px;transition:width .45s}.health span{position:absolute;right:12px;top:0;color:white;font-size:21px;font-weight:900;text-shadow:0 1px 3px #284532}.battle-hint{position:absolute;bottom:7px;left:50%;transform:translateX(-50%);font-size:19px;font-weight:800;background:#fffbedc9;border-radius:20px;padding:5px 18px;z-index:5}.slash{position:absolute;left:620px;top:75px;width:420px;height:102px;border-radius:50%;border-top:17px solid #fff9c2;border-right:25px solid #ffe575;transform:rotate(-7deg);filter:drop-shadow(0 0 10px #ffc83e);opacity:0;z-index:6}.slash:after{content:'';position:absolute;left:28px;top:-30px;width:330px;height:105px;border-radius:50%;border-top:5px solid #ffd64d;transform:rotate(-5deg)}.attack .fighter{animation:lunge .7s}.attack .slash{animation:sword .7s}.impact{position:absolute;left:1030px;top:83px;font-size:110px;color:#fff8a4;text-shadow:0 0 10px #ffb922;opacity:0;z-index:7}.attack .impact{animation:hit .7s}.enemy.hurt{animation:shake .5s}.damage{position:absolute;left:-50px;top:0;font-size:45px;color:#ff754a;-webkit-text-stroke:1px #fff5c9;font-weight:1000;opacity:0}.hurt .damage{animation:damage .7s}.bandage{position:absolute;display:none;background:repeating-linear-gradient(90deg,#f4ecd3 0 7px,#d9cdb3 8px 9px);border:2px solid #d4c8a8;box-shadow:0 2px 4px #467a7655;border-radius:8px}.bandage.one{left:142px;top:90px;width:45px;height:17px;transform:rotate(-24deg)}.bandage.two{left:53px;top:56px;width:46px;height:17px;transform:rotate(28deg)}.injured .one,.dizzy .two{display:block}.stars{position:absolute;top:-17px;left:42px;width:140px;height:30px;display:none;color:#ffdf58;font-size:35px;text-shadow:0 0 8px #fff4b5}.dizzy .stars{display:flex;justify-content:space-between;animation:starsOrbit 1.6s infinite}.defeated{transform:rotate(77deg) translate(28px,13px);opacity:.65}.particle{position:absolute;width:10px;height:10px;border-radius:50%;background:#fff0a1;top:135px;z-index:8;animation:particle .7s forwards}.paused .stars,.paused .fighter,.paused .slash{animation-play-state:paused}.modal{position:absolute;inset:0;background:#153e2b55;backdrop-filter:blur(7px);z-index:40;display:grid;place-items:center}.modal[hidden]{display:none}.modal-card{width:650px;max-height:840px;overflow:auto;background:var(--cream);padding:30px 50px 40px;border-radius:44px;text-align:center;box-shadow:0 25px 100px #133b2933}.modal-icon{font-size:62px;color:#ffb92e;height:80px}.modal-icon img{height:100%;width:100%;object-fit:contain}.modal-card h1{font-size:38px;margin:10px 0 18px}.modal-card p{font-size:24px;line-height:1.7;white-space:pre-line;margin:10px 0}.modal-card button.orange{font-size:28px;padding:16px 32px;letter-spacing:1px}.modal-buttons{display:flex;justify-content:center;align-items:center;gap:15px;margin-top:25px}.secondary{font-size:23px;padding:16px 22px;border-radius:35px;background:#e5edda;font-weight:700}.level-foods{display:flex;justify-content:center;gap:22px;margin:20px 0}.level-foods span{font-size:21px}.level-foods img{height:85px;width:85px;object-fit:contain;display:block}.calibration-meter{height:13px;border-radius:12px;background:#e0e6d2;overflow:hidden;margin-top:22px}.calibration-meter i{display:block;height:100%;width:0;background:#f3b341;transition:width .1s}.status-small{font-size:19px!important;color:#63816d}.calibrating .modal{background:transparent;backdrop-filter:none;align-items:end;padding-bottom:319px;pointer-events:none}.calibrating .modal-card{padding:20px 30px;width:560px;box-shadow:0 4px 40px #133b2922;background:#fffbedeb}.calibrating .modal-icon{display:none}.calibrating .modal-card h1{font-size:30px;margin:0 0 8px}.calibrating .modal-card p{font-size:21px}.calibrating .modal-buttons{pointer-events:auto;margin-top:12px}.calibrating .modal-buttons .orange{display:none}#rotate-tip{display:none;position:absolute;left:50%;top:15px;transform:translateX(-50%);z-index:60;font-size:23px;background:#fffbeded;padding:8px 18px;border-radius:24px;pointer-events:none}.portrait #rotate-tip{display:block}.demo-badge{color:#bb7522}@keyframes appear{from{transform:translateY(400px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes breathe{50%{transform:translateY(-7px) rotate(1deg)}}@keyframes goldPulse{50%{box-shadow:0 0 40px 14px #ffce4180}}@keyframes sparkle{50%{transform:translateY(-22px) scale(.6);opacity:.4}}@keyframes comboPop{50%{scale:1.12}}@keyframes lunge{35%{transform:translateX(115px) rotate(-8deg)}65%{transform:translateX(42px) rotate(4deg)}}@keyframes sword{0%,15%{opacity:0;transform:translateX(-70px) scale(.3) rotate(-25deg)}40%{opacity:1}85%,100%{opacity:0;transform:translateX(90px) scale(1.2) rotate(7deg)}}@keyframes hit{35%{opacity:0;scale:.2}52%{opacity:1;scale:1.25}100%{opacity:0;scale:.7}}@keyframes shake{20%,60%{transform:translateX(17px) rotate(7deg)}40%,80%{transform:translateX(-9px) rotate(-6deg)}}@keyframes damage{20%{opacity:1}100%{opacity:0;transform:translateY(-55px)}}@keyframes starsOrbit{50%{transform:rotate(10deg) scaleX(.8)}}@keyframes particle{to{transform:translate(var(--px),var(--py));opacity:0}}@media(prefers-reduced-motion:reduce){.home-monster,.home-monster img,.aura,.aura:before,.aura:after,.stars{animation:none!important}button{transition:none}.attack .fighter{animation:none}.attack .slash{animation:none;opacity:1}}
.face-lost .stars,.face-lost .fighter,.face-lost .slash{animation-play-state:paused}.calibrating .modal-card{margin-right:0}.loading-assets .home-monster{opacity:0}
#home .hill-left,#home .hill-right{z-index:3}#home .hill-mid{z-index:3}#home .home-monster.black{z-index:6}.attack .fighter img{object-position:50% 100%}.sound svg{width:54px;height:54px;vertical-align:middle}
/* Full-health power gradually gives way to injury and exhaustion. */
.enemy img{transform-origin:50% 95%;transition:filter .4s;will-change:transform}.enemy.powerful img{animation:monsterPower 1.25s ease-in-out infinite;filter:saturate(1.16) drop-shadow(0 0 8px #fff4a13b)}.enemy.bruised img{animation:monsterRecover 1.9s ease-in-out infinite;filter:saturate(1.03)}.enemy.injured img{animation:monsterPant 1.7s ease-in-out infinite;filter:saturate(.88)}.enemy.dizzy img{animation:monsterWobble 2s ease-in-out infinite;filter:saturate(.73)}.enemy.entering{animation:monsterLand .75s cubic-bezier(.2,.8,.3,1)}.enemy.powerful:before{content:'';position:absolute;inset:-18px -30px -5px;background:radial-gradient(ellipse,#ffe99155,transparent 65%);z-index:-1;animation:powerAura 1.25s infinite}.power-ring{position:absolute;left:-5%;bottom:-7%;width:110%;height:20%;border-radius:50%;border:3px solid #f7dc7844;display:none}.powerful .power-ring{display:block;animation:powerRing 1.6s infinite}.body-bandage{display:none;position:absolute;left:28%;top:65%;width:49%;height:12%;border:2px solid #d5c7a5;border-radius:35%;background:repeating-linear-gradient(0deg,#fff6df 0 6px,#d8cdb7 7px 8px);transform:rotate(-9deg);box-shadow:0 2px 4px #294b4433}.injured .body-bandage{display:block}.sweat{display:none;position:absolute;right:9%;top:24%;color:#9be1f6;font-size:28px;text-shadow:0 1px 2px #4d8d9c}.injured .sweat{display:block;animation:sweatDrop 1.8s infinite}.black-enemy .body-bandage{left:35%;top:57%;width:31%;height:9%}.black-enemy .bandage.one{left:58%;top:16%}.black-enemy .bandage.two{left:35%;top:10%}.stars{left:12%;width:77%;height:45px;top:-20px;animation:none!important}.dizzy .stars{display:block}.stars span{position:absolute;left:50%;top:5px;animation:starOrbit 1.8s linear infinite}.stars span:nth-child(2){animation-delay:-.6s}.stars span:nth-child(3){animation-delay:-1.2s}.enemy.defeated img{animation:none;filter:saturate(.5)}.enemy.defeated .sweat,.enemy.defeated .power-ring{display:none}.enemy.defeated .stars{opacity:.55}.enemy.defeated{transform:translate(35px,20px) rotate(85deg) scale(.87);opacity:.65;transition:transform .7s ease-in,opacity .7s}.paused .enemy img,.paused .enemy,.paused .enemy *,.face-lost .enemy img,.face-lost .enemy,.face-lost .enemy *{animation-play-state:paused!important}.camera-area{touch-action:none}
@keyframes monsterPower{0%,100%{transform:scale(1.09,1.04)}50%{transform:scale(1.05,1.09) translateY(-4px)}}@keyframes monsterRecover{0%,100%{transform:scale(1.02)}50%{transform:translateY(-3px) scale(1.01)}}@keyframes monsterPant{0%,100%{transform:scale(1,.97) rotate(-1deg)}50%{transform:scale(.98,1) rotate(1deg)}}@keyframes monsterWobble{0%,100%{transform:rotate(-6deg) translateX(-5px) scale(.95)}50%{transform:rotate(6deg) translateX(5px) scale(.95,.92)}}@keyframes monsterLand{0%{transform:translateY(-95px) scale(1.08)}65%{transform:translateY(7px) scale(1.18,.87)}82%{transform:translateY(-6px) scale(.98,1.08)}100%{transform:none}}@keyframes powerAura{50%{opacity:.5}}@keyframes powerRing{from{transform:scale(.65);opacity:.7}to{transform:scale(1.35);opacity:0}}@keyframes sweatDrop{0%{transform:translateY(-7px) scale(.6);opacity:0}30%{opacity:1}100%{transform:translateY(25px) scale(1);opacity:0}}@keyframes starOrbit{0%,100%{transform:translate(65px,10px) scale(.9)}25%{transform:translate(0,-8px) scale(.7)}50%{transform:translate(-65px,10px) scale(.9)}75%{transform:translate(0,25px) scale(1.1)}}@media(prefers-reduced-motion:reduce){.enemy,.enemy img,.enemy *{animation:none!important}.enemy.defeated{transition:none}}
/* Wider starting distance; supplied injury sprites keep their original transparent silhouettes. */
.fighter{left:350px}.hero-shadow{left:347px}.enemy{left:1180px}.health{left:1207px}.slash{left:600px;width:580px}.slash:after{width:calc(100% - 70px)}.enemy.pose-sprite .bandage,.enemy.pose-sprite .body-bandage,.enemy.pose-sprite .stars,.enemy.pose-sprite .sweat{display:none!important}.enemy.pose-sprite img{object-position:center bottom;filter:none}.enemy.pose-sprite.injured img{filter:saturate(.97)}.enemy.pose-sprite.dizzy img{filter:saturate(.94);animation:poseWeak 2.4s ease-in-out infinite}.enemy.prone-pose,.enemy.black-enemy.prone-pose{width:295px;height:218px;top:48px}.enemy.defeated.prone-pose{transform:translate(18px,0) scale(.98);opacity:1}.enemy.defeated.prone-pose img{animation:none;filter:none}.enemy.defeated.prone-pose:after{width:250px;left:20px}.targets{height:200px}#target-list img{width:78px;height:78px}
@keyframes poseWeak{0%,100%{transform:translateY(1px) rotate(-2deg)}50%{transform:translateY(4px) rotate(2deg)}}

/* Forest arena, with a taller camera and independent live sprites. */
.camera-area{height:641px}.battle{top:706px;background-size:100% 100%;background-position:center;border-top:3px solid #fffbed}.battle-scenery{display:none}.fighter{top:8px;height:198px;width:265px;left:350px}.hero-shadow{top:192px;left:370px;width:200px;height:14px}.enemy{top:55px;height:150px;width:190px}.enemy.black-enemy{top:20px;height:185px}.enemy.prone-pose,.enemy.black-enemy.prone-pose{top:53px;height:154px;width:245px}.health{top:17px;width:215px;height:25px;border-width:2px;box-shadow:0 0 0 1px #385443}.health span{font-size:17px}.battle-hint{bottom:4px;font-size:16px;padding:3px 15px}.slash{top:64px;height:68px;border-top-width:10px;border-right-width:16px;filter:none}.slash:after{height:68px;top:-20px}.impact{top:58px;font-size:80px}.damage{font-size:34px}.enemy:after{width:170px;height:12px}.enemy.powerful:before,.powerful .power-ring{display:none}.enemy.powerful img{filter:none}.music-toggle{position:absolute;right:195px;top:15px;font-size:19px;background:#e5edda;padding:7px 13px;border-radius:20px}.game-header #level-label{right:315px}.calibrating .modal{padding-bottom:255px}.heal-number{position:absolute;left:45px;top:10px;color:#318853;font-weight:900;font-size:37px;-webkit-text-stroke:1px #f6ffe7;opacity:0}.healing .heal-number{animation:healRise 1s both}.enemy.healing:before{content:'';display:block;position:absolute;inset:-15px;border-radius:50%;background:radial-gradient(ellipse,#95e6a985,transparent 70%);animation:healGlow 1s both;z-index:-1}.healing img{filter:drop-shadow(0 0 9px #9ade9c)!important}.won-animation .fighter{animation:heroCelebrate .8s .3s 3}.lost-animation .fighter{animation:heroLose 1.2s forwards}.lost-animation .enemy img{animation:enemyCelebrate .65s infinite}.confetti{position:absolute;top:-15px;width:9px;height:16px;animation:confettiFall 2.5s var(--delay) both;z-index:12}#celebration{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:10}@keyframes healRise{20%{opacity:1}100%{opacity:0;transform:translateY(-60px)}}@keyframes healGlow{30%{opacity:1;transform:scale(1.08)}100%{opacity:0;transform:scale(1.3)}}@keyframes heroCelebrate{35%{transform:translateY(-22px) rotate(-9deg)}65%{transform:translateY(-5px) rotate(4deg)}}@keyframes heroLose{to{transform:translateX(-60px) rotate(-13deg);filter:saturate(.65)}}@keyframes enemyCelebrate{50%{transform:translateY(-14px) scale(1.07)}}@keyframes confettiFall{to{transform:translate(var(--drift),270px) rotate(550deg);opacity:.1}}

.battle{background-size:100% auto;background-position:center 68%}#sound{font-size:19px;width:86px;height:49px;top:10px!important;right:20px!important;border-radius:25px}.enemy.healing .power-ring{display:none}

/* Forest result popup: animation is isolated from the live battle underneath. */
#result-animation{display:none}.result-modal{background:#10291fcc;backdrop-filter:blur(9px)}.result-modal .modal-card{position:relative;width:730px;padding:25px 38px 32px;max-height:890px;overflow:hidden;border:3px solid #8fb29a;border-radius:35px;background:#234a36;color:#fff1ab;box-shadow:0 20px 70px #061a1866;isolation:isolate;animation:resultOpen .28s ease-out}.result-modal .modal-card:before{content:'';position:absolute;inset:0;background-image:linear-gradient(0deg,#102f26ed 0%,#193e3066 55%,#173c2c33),var(--result-bg);background-size:auto 100%;background-position:center;z-index:-1}.result-modal #modal-icon{display:none}.result-modal #result-animation{display:block;height:340px;position:relative;margin:0 0 8px}.result-modal .modal-card h1{font-size:43px;margin:4px 0 14px;color:#ffe697}.result-modal .modal-card p{font-size:24px;line-height:1.45;margin:8px 0;color:#f0f2ce}.result-modal .status-small{color:#c6d9b9!important;font-size:20px!important}.result-modal .modal-buttons{margin-top:24px;gap:18px}.result-modal .orange{background:#ff9b3e;box-shadow:none;color:#103f2a;min-width:215px}.result-modal .secondary{background:#466d4c;color:#fff5d5;min-width:190px}.result-hero{position:absolute;left:40px;bottom:13px;width:280px;height:305px;transform-origin:50% 95%}.result-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom}.result-last{opacity:0}.result-monster{position:absolute;right:39px;bottom:13px;width:235px;height:235px;transform-origin:50% 95%}.result-monster img{width:100%;height:100%;object-fit:contain;object-position:center bottom}.result-ground{position:absolute;left:65px;right:55px;height:17px;bottom:9px;border-radius:50%;background:#183b293d}.result-win .result-hero{animation:resultJump 1.1s both}.result-settled .result-first{opacity:0}.result-settled .result-last{opacity:1}.result-win.result-settled .result-hero{animation:resultWave 1s ease-in-out infinite}.result-lose .result-hero{animation:resultHeadDown 1.45s both}.result-lose.result-settled .result-hero{animation:resultResolve 1.5s ease-in-out infinite}.result-win .result-monster{animation:resultSob 1.4s ease-in-out infinite}.result-lose .result-monster{animation:resultLaugh .46s ease-in-out infinite}.tear{position:absolute;top:48%;width:9px;height:16px;border-radius:70% 30% 60% 60%;background:#a0def3;display:none}.tear-a{left:37%;animation:resultTear 1.3s infinite}.tear-b{left:61%;animation:resultTear 1.3s .5s infinite}.result-win .tear{display:block}.laugh-mark{display:none;position:absolute;right:-7px;top:35%;font-size:38px;color:#ffc56d;transform:rotate(75deg)}.result-lose .laugh-mark{display:block;animation:resultLaugh .46s infinite}.result-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}.result-paper{position:absolute;top:-20px;width:8px;height:14px;animation:resultFall 2.5s var(--fall-delay) both}.result-modal[hidden] .result-hero,.result-modal[hidden] .result-monster{animation:none}@keyframes resultOpen{from{opacity:0;transform:translateY(15px) scale(.97)}to{opacity:1;transform:none}}@keyframes resultJump{0%{transform:translateY(4px) scaleY(.94)}18%{transform:translateY(-5px)}45%{transform:translateY(-40px) rotate(-5deg)}72%{transform:translateY(-17px) rotate(3deg)}88%{transform:translateY(3px) scaleY(.96)}100%{transform:none}}@keyframes resultWave{25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}@keyframes resultHeadDown{0%{transform:translateY(-4px)}50%,100%{transform:translateY(4px) rotate(-4deg)}}@keyframes resultResolve{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px) rotate(1.5deg)}}@keyframes resultSob{0%,100%{transform:rotate(-2deg)}35%{transform:translateY(3px) rotate(2deg)}70%{transform:translateY(1px)}}@keyframes resultLaugh{50%{transform:translateY(-6px) rotate(3deg) scaleY(1.025)}}@keyframes resultTear{0%{opacity:0;transform:translateY(-3px)}25%{opacity:.9}100%{opacity:0;transform:translateY(45px)}}@keyframes resultFall{0%{opacity:0;transform:translateY(0)}10%{opacity:1}100%{opacity:0;transform:translate(var(--sway),345px) rotate(420deg)}}@media(prefers-reduced-motion:reduce){.result-hero,.result-monster,.result-paper,.tear,.result-modal .modal-card{animation:none!important}.result-settled .result-hero{animation:none!important}}

#result-background{display:none}.result-modal #result-background{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%;z-index:-2}.result-modal .modal-card:before{background:linear-gradient(0deg,#102f26ef 0%,#193e3055 58%,#173c2c22);z-index:-1}.result-modal .modal-card{background:#234a36}

.result-modal .modal-card:before{background:linear-gradient(0deg,#102f26ef 0%,#193e3077 58%,#173c2c66)}

/* Continuous forest: camera compositing and battle share one background image. */
#world-background{position:absolute;left:0;top:65px;width:1672px;height:876px;object-fit:fill;pointer-events:none}.camera-area{height:550px;background:transparent}.camera-area.live video{display:none}#player-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;display:none;mask-image:linear-gradient(#000 0%,#000 92%,transparent 100%)}.camera-area.segmented #player-canvas{display:block}.camera-area.live:not(.segmented) video{display:block;opacity:.8;mask-image:linear-gradient(#000 85%,transparent)}#camera-empty{background:transparent;text-shadow:0 1px 3px #fffbed}.battle{top:615px;height:326px;border:0;background:transparent!important}.fighter{left:350px;top:30px;width:325px;height:255px}.hero-shadow{left:385px;top:273px;width:220px;height:18px}.enemy{top:86px;width:235px;height:210px}.enemy.black-enemy{top:46px;height:250px}.enemy.prone-pose,.enemy.black-enemy.prone-pose{top:90px;height:205px;width:290px}.health{top:30px;width:240px;height:29px}.health span{font-size:20px}.slash{top:105px;height:100px}.slash:after{height:100px}.impact{top:97px;font-size:100px}.damage{font-size:43px}.battle-hint{bottom:6px}.calibrating .modal{padding-bottom:340px}.combo{bottom:14px;z-index:5}.tracking-status{font-size:17px;max-width:430px}.targets{width:315px;top:22px;height:190px}.targets b{font-size:27px}#forest-bridge{position:absolute;left:0;top:580px;width:1672px;height:95px;object-fit:none;object-position:0 -515px;mask-image:linear-gradient(transparent,#000 55%,transparent);pointer-events:none;display:none}
.mode-switch{position:absolute;right:150px;top:48px;font-size:22px;font-weight:800;background:#e2ebd5;padding:12px 20px;border-radius:28px;z-index:12}.mode-options{display:flex;gap:18px;margin:25px -10px}.mode-options button{flex:1;background:#e4edd9;border:3px solid #9fbd99;border-radius:25px;padding:25px 12px;font-size:30px;font-weight:900}.mode-options button:hover{background:#ffe2aa;border-color:#edac55}.mode-options small{display:block;font-size:18px;margin-top:16px;line-height:1.6}.monster-options{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.monster-options button{width:155px;border:3px solid transparent;border-radius:20px;background:#e9efdf;padding:8px}.monster-options button[aria-pressed=true]{border-color:#e5ad46;background:#fff0c4}.monster-options img{width:100%;height:120px;object-fit:contain}.monster-options small{font-size:17px;display:block}.duel-target,.duel-divider,.duel-identity,#hero-health,#duel-wave{display:none}.duel .targets{width:360px;height:175px;padding:15px 20px}.duel .targets b,.duel-target b{font-size:24px}.duel #target-list img{width:63px;height:63px}.duel #target-list small{font-size:17px}.duel-target{position:absolute;right:25px;top:22px;width:360px;height:175px;background:#fffbedf2;border-radius:30px;padding:15px 20px;z-index:3}.duel-target>div{display:flex;justify-content:space-between;margin-top:8px}.duel-target span{width:75px;text-align:center}.duel-target img{width:63px;height:63px;object-fit:contain}.duel-target small{display:block;font-size:17px;font-weight:800}.duel .duel-target,.duel .duel-divider,.duel .duel-identity,.duel #hero-health{display:block}.duel-divider{position:absolute;left:50%;top:12px;bottom:10px;border-left:2px dashed #fffbed88;pointer-events:none;z-index:2}.duel-identity{position:absolute;bottom:12px;font-size:19px;font-weight:900;background:#fffbeddd;padding:6px 14px;border-radius:20px;z-index:4}.identity-left{left:25px}.identity-right{right:25px}.duel .tracking-status{top:210px;left:50%;right:auto;transform:translateX(-50%);font-size:17px;white-space:nowrap}.hero-health{position:absolute;left:390px;top:14px;width:240px;height:29px;border:2px solid #fffbed;border-radius:22px;background:#164a39;overflow:hidden;z-index:5}.hero-health i{display:block;height:100%;width:100%;background:#7cbe8c;transition:width .4s}.hero-health span{position:absolute;right:12px;top:0;color:white;font-size:20px;font-weight:900}.duel-weak img{filter:saturate(.6)}.duel-heal{animation:duelHeal .9s}.duel #duel-wave{position:absolute;left:650px;top:130px;width:520px;height:28px;background:#eec494;border-radius:50%;opacity:0;display:block;z-index:5}.counterattack #enemy{animation:duelCharge .7s}.counterattack #hero{animation:shake .7s}.counterattack #duel-wave{animation:duelWave .7s}@keyframes duelCharge{40%{transform:translateX(-90px) rotate(-8deg)}}@keyframes duelWave{0%{opacity:0;transform:translateX(120px) scaleX(.1)}40%{opacity:.9}100%{opacity:0;transform:translateX(-200px) scaleX(.9)}}@keyframes duelHeal{30%{filter:drop-shadow(0 0 18px #a9f1ab)}}

.duel .health,.duel .hero-health{overflow:visible}.duel .health>div,.duel .hero-health>i{border-radius:20px}.duel-number{position:absolute;left:80px;top:28px;font-size:32px;font-weight:900;text-shadow:0 1px 3px #254b2f;z-index:8;pointer-events:none}@keyframes duelNumber{0%{opacity:0}20%{opacity:1}100%{opacity:0;transform:translateY(-55px)}}

.modal-card .music-credits{font-size:16px;line-height:1.6;color:#63816d;margin-top:20px}.music-credits a{color:inherit;text-underline-offset:3px}
