html,body,#root{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none}body{touch-action:manipulation}#root>.app{height:100dvh;max-height:100dvh;overflow:hidden;display:flex;flex-direction:column}.app>header{flex:0 0 auto}.app>main,.app>.onboarding,.app>.treasureScreen,.app>.restorationMoment{flex:1 1 auto;min-height:0;overflow:hidden}.world,.panel,.game{height:100%;min-height:0;box-sizing:border-box}.world{display:flex;flex-direction:column}.world .hero,.world .valleyScene,.world .stats{flex:0 0 auto}.world .adventureTrail{flex:1 1 auto;min-height:0;height:auto!important;margin-bottom:0!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain;scrollbar-width:none;scroll-behavior:smooth}.world .adventureTrail::-webkit-scrollbar{display:none}.app>nav{flex:0 0 auto;position:relative!important;bottom:auto!important}.game{display:flex;flex-direction:column;overflow:hidden;position:relative}.gameTop,.boss,.chain,.objectives,.numbers,.tools,.noviTalk{flex:0 0 auto}.game .board{flex:0 1 auto;max-height:min(48dvh,560px);aspect-ratio:1/1;margin-inline:auto}.panel{overflow:auto;overscroll-behavior:contain;scrollbar-width:none}.panel::-webkit-scrollbar{display:none}.noviReaction{position:absolute;z-index:80;top:58px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;padding:8px 13px;border-radius:999px;background:rgba(9,35,65,.94);border:1px solid rgba(168,239,255,.7);box-shadow:0 8px 28px rgba(0,0,0,.28);color:white;animation:nfReaction .24s ease both;pointer-events:none}.noviReaction.hide{animation:nfReactionOut .3s ease both}.noviReaction.happy .miniNovi{animation:nfMiniHappy .35s ease-in-out 2 alternate}.noviReaction.sad{background:rgba(50,30,72,.95);border-color:rgba(205,183,255,.75)}.noviReaction.sad .miniNovi{animation:nfMiniSad .32s ease-in-out 2 alternate}.miniNovi{display:grid;place-items:center;width:28px;height:28px;border-radius:10px;background:linear-gradient(145deg,#2a9ee0,#143f85);color:#bdefff;font-size:18px;box-shadow:0 0 12px rgba(105,222,255,.5)}.noviReaction b{font-size:13px;white-space:nowrap}.transitionOverlay{position:fixed;inset:0;z-index:500;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;background:radial-gradient(circle at 50% 42%,rgba(41,118,150,.98),rgba(4,16,39,.98) 58%,rgba(2,8,22,.99));animation:nfFade .28s ease both;pointer-events:none}.transitionOverlay.failure{background:radial-gradient(circle at 50% 42%,rgba(92,49,91,.98),rgba(18,17,48,.98) 58%,rgba(4,8,22,.99))}.nativeNovi{width:112px;height:112px;border-radius:34% 34% 46% 46%;display:grid;place-items:center;position:relative;font-size:58px;color:#a8efff;background:linear-gradient(145deg,#2a9ee0,#143f85);border:4px solid #bdefff;box-shadow:0 0 38px rgba(105,222,255,.65),inset 0 -10px 20px rgba(5,25,66,.55);animation:nfHappy .9s ease-in-out infinite alternate}.nativeNovi:before,.nativeNovi:after{content:'';position:absolute;top:-20px;width:32px;height:42px;background:linear-gradient(#53bff2,#1f63a9);border:3px solid #bdefff;border-radius:60% 60% 20% 20%}.nativeNovi:before{left:5px;transform:rotate(-25deg)}.nativeNovi:after{right:5px;transform:rotate(25deg)}.nativeNovi span{position:absolute;bottom:20px;font-size:28px;color:white}.transitionOverlay.failure .nativeNovi{animation:nfSad .8s ease-in-out infinite alternate;filter:saturate(.72)}.transitionOverlay h2{margin:14px 0 6px;font-size:clamp(30px,8vw,54px);color:#fff}.transitionOverlay p{max-width:520px;margin:0;color:#d6edf6;font-weight:700}.transitionBurst{font-size:30px;letter-spacing:16px;color:#ffe66d;animation:nfBurst .7s ease-in-out infinite alternate}.transitionOverlay.failure .transitionBurst{color:#c5a8ff}.transitionPulse{position:absolute;width:130px;height:130px;border-radius:50%;border:2px solid rgba(255,255,255,.35);animation:nfPulse 1s ease-out infinite}@keyframes nfFade{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}@keyframes nfHappy{to{transform:translateY(-10px) scale(1.06) rotate(2deg)}}@keyframes nfSad{to{transform:translateY(5px) scale(.97) rotate(-2deg);filter:saturate(.72)}}@keyframes nfBurst{to{transform:scale(1.2);filter:drop-shadow(0 0 16px currentColor)}}@keyframes nfPulse{from{transform:scale(.7);opacity:.8}to{transform:scale(3.2);opacity:0}}@keyframes nfReaction{from{opacity:0;transform:translate(-50%,-8px) scale(.9)}to{opacity:1;transform:translate(-50%,0) scale(1)}}@keyframes nfReactionOut{to{opacity:0;transform:translate(-50%,-8px) scale(.92)}}@keyframes nfMiniHappy{to{transform:translateY(-3px) rotate(8deg) scale(1.08)}}@keyframes nfMiniSad{to{transform:translateY(2px) rotate(-6deg) scale(.95)}}@media(max-width:620px){.app>nav{overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.app>nav::-webkit-scrollbar{display:none}.game{padding-bottom:0}.game .board{width:min(96vw,48dvh);max-height:none}.tools{overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.tools::-webkit-scrollbar{display:none}.tools button{flex:0 0 auto}.panel{padding-bottom:12px}.onboarding,.treasureScreen,.restorationMoment{min-height:0!important;height:100%!important;padding-bottom:24px!important}.noviReaction{top:50px}}
