:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:#121212;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}body{background:radial-gradient(circle,#1a1a2e 0%,#16213e 50%,#0f3460 100%);place-items:center;min-width:320px;min-height:100vh;margin:0;display:flex;overflow:hidden}button{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#root{justify-content:center;align-items:center;width:100%;height:100vh;display:flex}.glass-panel{-webkit-backdrop-filter:blur(10px);background:#000096d9;padding:20px;box-shadow:inset 0 0 10px #00000080,0 8px 32px #00000080}.btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff1a;border:1px solid #fff3;border-radius:8px;padding:10px 20px;font-size:1rem;transition:all .2s}.btn:hover{background:#fff3;transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.app-container{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:#000;flex-direction:column;justify-content:center;align-items:center;width:100vw;height:100vh;margin:0;padding:0;display:flex;position:relative;overflow:hidden}.main-content{width:912px;height:528px;transform:scale(var(--fs-scale,1));transform-origin:50%;position:relative}.fullscreen-toggle-btn{color:#fff;cursor:pointer;z-index:2000;background:#000064cc;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .1s;display:flex;position:absolute;top:10px;right:10px;box-shadow:0 2px 10px #00000080}.fullscreen-toggle-btn:hover{background:#000096e6;transform:scale(.85)}.fullscreen-toggle-btn:active{transform:scale(.95)}.audio-toggle-btn{color:#fff;cursor:pointer;z-index:2000;background:#000064cc;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .1s;display:flex;position:absolute;top:60px;right:10px;box-shadow:0 2px 10px #00000080}.audio-toggle-btn:hover{background:#000096e6;transform:scale(.85)}.audio-toggle-btn:active{transform:scale(.95)}.log-toggle-btn{color:#fff;cursor:pointer;z-index:101;background:#000064cc;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .1s;display:flex;position:absolute;top:160px;right:10px;box-shadow:0 2px 10px #00000080}.log-toggle-btn:hover{background:#000096e6;transform:scale(.85)}.log-toggle-btn:active{transform:scale(.95)}.map-container{background-color:#000;position:relative;overflow:hidden;box-shadow:0 10px 30px #00000080}.map-inner{transition:transform .2s linear;position:absolute;top:0;left:0}.map-wrapper{display:inline-block;position:relative}.status-toggle-btn{z-index:101;color:#fff;cursor:pointer;background:#000064cc;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .1s;display:flex;position:absolute;top:110px;right:10px;box-shadow:0 2px 10px #00000080}.status-toggle-btn:hover{background:#000096e6;transform:scale(.85)}.status-toggle-btn:active{transform:scale(.95)}.modal-overlay{z-index:200;background:#000000b3;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.modal-content{pointer-events:auto;background:#000064f2;border:2px solid #fff;border-radius:8px;width:90%;max-width:600px;padding:40px 20px 20px;position:relative;box-shadow:0 5px 20px #000c}.modal-close-btn{color:#fff;cursor:pointer;background:0 0;border:none;padding:5px 10px;font-size:1.5rem;line-height:1;position:absolute;top:5px;right:5px}.modal-close-btn:hover{color:#f55}.dialog-overlay{z-index:100;justify-content:center;width:90%;display:flex;position:absolute;left:50%;transform:translate(-50%)}.dialog-overlay.full-screen{top:20px;bottom:20px}.dialog-overlay.center{top:50%;transform:translate(-50%,-50%)}.dialog-overlay.lower-half{min-height:45%;bottom:20px}.dialog-overlay.lower-half .dialog-box p{flex:1;overflow-y:auto}.dialog-box{color:#fff;white-space:pre-wrap;box-sizing:border-box;text-align:left;background:#000096d9;border:3px solid #fff;border-radius:8px;flex-direction:column;align-items:flex-end;width:100%;padding:20px;font-size:1.2rem;display:flex;box-shadow:inset 0 0 10px #00000080,0 5px 15px #00000080}.dialog-box p{width:100%;margin-top:0;margin-bottom:15px}.map-row{display:flex}.map-tile{justify-content:center;align-items:center;width:48px;height:48px;font-size:24px;display:flex}.tile-grass{background-color:#558b2f;background-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\"><path d=\"M10,40 Q15,30 20,40 M30,20 Q35,10 40,20\" stroke=\"%237cb342\" stroke-width=\"2\" fill=\"none\" /></svg>")}.tile-mountain{background-color:#795548;background-image:conic-gradient(from 135deg at 50% 100%,#5d4037 90deg,#0000 90deg);background-size:24px 24px}.tile-water{background-color:#1e88e5;background-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\"><path d=\"M5,15 Q15,10 25,15 T45,15\" stroke=\"%2364b5f6\" stroke-width=\"2\" fill=\"none\" /><path d=\"M5,35 Q15,30 25,35 T45,35\" stroke=\"%2364b5f6\" stroke-width=\"2\" fill=\"none\" /></svg>")}.tile-forest{background-color:#1b5e20;background-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\"><circle cx=\"24\" cy=\"24\" r=\"22\" fill=\"%231b5e20\" /><circle cx=\"8\" cy=\"12\" r=\"18\" fill=\"%231b5e20\" /><circle cx=\"40\" cy=\"12\" r=\"18\" fill=\"%231b5e20\" /><circle cx=\"10\" cy=\"38\" r=\"18\" fill=\"%231b5e20\" /><circle cx=\"38\" cy=\"38\" r=\"18\" fill=\"%231b5e20\" /><circle cx=\"8\" cy=\"10\" r=\"2.5\" fill=\"%232e7d32\" /><circle cx=\"16\" cy=\"6\" r=\"2\" fill=\"%232e7d32\" /><circle cx=\"4\" cy=\"18\" r=\"3\" fill=\"%232e7d32\" /><circle cx=\"40\" cy=\"8\" r=\"2.5\" fill=\"%232e7d32\" /><circle cx=\"32\" cy=\"6\" r=\"3\" fill=\"%232e7d32\" /><circle cx=\"45\" cy=\"16\" r=\"2\" fill=\"%232e7d32\" /><circle cx=\"24\" cy=\"22\" r=\"3.5\" fill=\"%232e7d32\" /><circle cx=\"18\" cy=\"16\" r=\"2.5\" fill=\"%232e7d32\" /><circle cx=\"28\" cy=\"15\" r=\"2\" fill=\"%232e7d32\" /><circle cx=\"10\" cy=\"30\" r=\"3\" fill=\"%232e7d32\" /><circle cx=\"6\" cy=\"40\" r=\"2\" fill=\"%232e7d32\" /><circle cx=\"16\" cy=\"42\" r=\"2.5\" fill=\"%232e7d32\" /><circle cx=\"40\" cy=\"30\" r=\"3.5\" fill=\"%232e7d32\" /><circle cx=\"32\" cy=\"38\" r=\"2.5\" fill=\"%232e7d32\" /><circle cx=\"44\" cy=\"42\" r=\"2\" fill=\"%232e7d32\" /><circle cx=\"24\" cy=\"36\" r=\"3\" fill=\"%232e7d32\" /><circle cx=\"20\" cy=\"28\" r=\"2\" fill=\"%232e7d32\" /><circle cx=\"30\" cy=\"30\" r=\"2.5\" fill=\"%232e7d32\" /></svg>")}.tile-castle-floor{background-color:#e0e0e0;background-image:conic-gradient(from 90deg,#bdbdbd 90deg,#0000 90deg 270deg,#bdbdbd 270deg);background-size:24px 24px}.tile-castle-wall{background-color:#9e9e9e;background-image:linear-gradient(90deg,#757575 2px,#0000 2px),linear-gradient(#757575 2px,#0000 2px);background-size:24px 12px}.tile-town-floor{background-color:#d7ccc8;background-image:linear-gradient(90deg,#bcaaa4 2px,#0000 2px);background-size:16px 48px}.tile-town-wall{background-color:#8d6e63;background-image:linear-gradient(#795548 2px,#0000 2px);background-size:48px 12px}.tile-dungeon-floor{background-color:#424242;background-image:conic-gradient(from 90deg,#212121 90deg,#0000 90deg 270deg,#212121 270deg);background-size:32px 32px}.tile-dungeon-wall{background-color:#212121;background-image:linear-gradient(90deg,#000 2px,#0000 2px),linear-gradient(#000 2px,#0000 2px);background-size:24px 24px}.tile-castle-exterior{background-image:url(./assets/castle_exterior.jpg);background-size:cover}.tile-dungeon-entrance{background-color:#3e2723;justify-content:center;align-items:center;display:flex}.tile-exit{background-color:#8d6e63;border-bottom:4px solid #3e2723}.tile-heal-spring{background-color:#9e9e9e;justify-content:center;align-items:center;display:flex}.map-dungeon-theme{box-shadow:inset 0 0 50px #000c}.player{z-index:10;filter:drop-shadow(0 2px 4px #00000080);justify-content:center;align-items:center;width:48px;height:48px;font-size:28px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.player-stepping{transform:scaleY(.9)translateY(4px)}.status-window{flex-wrap:wrap;justify-content:space-around;gap:10px;width:100%;display:flex}.status-item{flex-direction:column;align-items:center;display:flex}.stat.quest-label{text-transform:uppercase;letter-spacing:1px;font-size:.8em}.map-banner{color:#fff;letter-spacing:4px;text-shadow:0 0 10px #000,0 0 20px #000c,0 4px 15px #000000e6;pointer-events:none;z-index:100;white-space:nowrap;font-size:3rem;font-weight:700;animation:3s ease-in-out forwards bannerFadeInOut;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}@keyframes bannerFadeInOut{0%{opacity:0;transform:translate(-50%,-40%)}15%{opacity:1;transform:translate(-50%,-50%)}85%{opacity:1;transform:translate(-50%,-50%)}to{opacity:0;transform:translate(-50%,-60%)}}.status-label{color:#aaa;text-transform:uppercase;letter-spacing:1px;font-size:.8rem}.status-value{font-size:1.2rem;font-weight:700}.battle-screen{box-sizing:border-box;flex-direction:column;gap:0;width:912px;height:528px;padding:0;display:flex;position:relative}.town-screen,.gameover-screen{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:20px;width:912px;height:528px;display:flex}.gameover-screen{background:#000000f2}.battle-arena{border-bottom:2px solid #ffffff1a;flex:1;justify-content:space-between;align-items:center;padding:0 50px;display:flex}.battle-enemy-side,.battle-player-side{width:150px;height:150px}.battle-enemy-img{object-fit:contain;width:100%;height:100%}.battle-player-img{object-fit:contain;width:70%;height:70%}.anim-player-attack{animation:.3s ease-in-out forwards playerAttack}.anim-enemy-attack{animation:.3s ease-in-out forwards enemyAttack}.anim-damage{filter:brightness(.5)sepia()hue-rotate(-50deg)saturate(5);animation:.4s cubic-bezier(.36,.07,.19,.97) both damageShake}@keyframes playerAttack{0%{transform:translate(0)}50%{transform:translate(-30px)}to{transform:translate(0)}}@keyframes enemyAttack{0%{transform:translate(0)scale(1)}50%{transform:translate(30px)scale(1.1)}to{transform:translate(0)scale(1)}}@keyframes enemyDefeat{0%{opacity:1;filter:brightness()sepia(0)hue-rotate()saturate();transform:scale(1)}20%{filter:brightness(2)sepia()hue-rotate(-50deg)saturate(5);transform:scale(.9)}40%{filter:brightness(0);opacity:.8;transform:scale(.75)skew(20deg)}60%{opacity:.5;transform:scale(.8)skew(-20deg)}to{opacity:0;transform:scale(0)}}.anim-enemy-defeat{animation:1s forwards enemyDefeat}@keyframes damageShake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-8px)}40%,60%{transform:translate(8px)}}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-10px)}to{transform:translateY(0)}}.battle-ui{box-sizing:border-box;justify-content:space-between;gap:15px;width:100%;display:flex}.battle-commands{flex-direction:column;gap:10px;width:120px;display:flex}.battle-commands .btn{margin:0;padding:10px}.town-commands{gap:15px;display:flex}.battle-character-container{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.damage-number{text-shadow:2px 2px #000,-2px -2px #000,2px -2px #000,-2px 2px #000;pointer-events:none;z-index:10;font-size:2.5rem;font-weight:700;animation:.5s ease-out forwards floatUp;position:absolute;top:20%;left:50%;transform:translate(-50%,-50%)}.enemy-damage-color,.player-damage-color{color:#fff}@keyframes floatUp{0%{opacity:1;transform:translate(-50%,-50%)translateY(0)}to{opacity:0;transform:translate(-50%,-50%)translateY(-20px)}}.action-name-overlay{color:#fff;text-shadow:2px 2px #000,-2px -2px #000,2px -2px #000,-2px 2px #000;pointer-events:none;z-index:20;font-size:2.5rem;font-weight:700;animation:.5s ease-in-out forwards popInOut;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)}.level-up-overlay{color:#ffa;text-shadow:2px 2px #000,-2px -2px #000,2px -2px #000,-2px 2px #000;pointer-events:none;z-index:20;font-size:2rem;font-weight:700;animation:2s ease-in-out forwards popInOutLevel;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}@keyframes popInOut{0%{opacity:0;transform:translate(-50%,-50%)scale(.5)}30%{opacity:1;transform:translate(-50%,-50%)scale(.85)}70%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-50%)scale(1.2)}}@keyframes popInOutLevel{0%{opacity:0;transform:translate(-50%,-50%)scale(.5)}10%{opacity:1;transform:translate(-50%,-50%)scale(.85)}20%{opacity:1;transform:translate(-50%,-50%)scale(1)}80%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-50%)scale(1.2)}}.battle-enemy-status{width:max-content;min-width:120px}.battle-player-status{width:max-content;min-width:160px}.companions-list{margin-top:4px}.companion-name{white-space:nowrap;margin-bottom:4px}.companion-name:last-child{margin-bottom:0}.battle-status-box{text-align:left;background:#00000080;border:1px solid #fff3;border-radius:8px;padding:10px}.battle-status-box h4{color:#aaa;margin:0 0 5px;font-size:.9rem}.battle-status-box p{margin:0;font-size:1rem;font-weight:700}.scene-transition{z-index:9999;pointer-events:none;opacity:0;background-color:#000;width:100vw;height:100vh;transition:opacity .3s ease-in-out;position:fixed;top:0;left:0}.scene-transition.slow{transition:opacity 3s ease-in-out}.scene-transition.active{opacity:1}@keyframes encounter-flash{0%{opacity:1;background-color:#0000}15%{opacity:1;background-color:#fff}30%{opacity:1;background-color:#0000}45%{opacity:1;background-color:#fff}60%{opacity:1;background-color:#0000}75%{opacity:1;background-color:#fff}to{opacity:1;background-color:#000}}.scene-transition.encounter{transition:none}.scene-transition.encounter.active{animation:.6s ease-out forwards encounter-flash}.scene-transition.encounter.inactive{opacity:0;background-color:#000;transition:opacity .3s ease-in-out;animation:none}.toast-notification{color:#fff;z-index:1000;pointer-events:none;white-space:pre-wrap;text-align:center;background:#000c;border:1px solid gold;border-radius:8px;padding:12px 24px;font-size:1.2rem;animation:.3s ease-out slideDownFadeIn,.5s ease-in 3.5s forwards fadeOut;position:absolute;top:30px;left:50%;transform:translate(-50%);box-shadow:0 4px 15px #00000080}@keyframes slideDownFadeIn{0%{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.title-screen{z-index:1000;background:#111;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.title-logo{color:gold;text-shadow:0 0 10px #ffd70080;letter-spacing:.1em;margin-bottom:60px;font-size:3rem}.title-menu{flex-direction:column;gap:20px;width:250px;display:flex}.title-btn{text-align:center;width:100%;padding:15px;font-size:1.2rem}.prologue-loading-screen{z-index:1000;background:#000;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.prologue-loading-screen .loading-text{color:#fff;letter-spacing:.2em;font-size:1.8rem;animation:2s ease-in-out infinite pulseLoading}.epilogue-loading-screen{box-sizing:border-box;z-index:1000;background:#000;justify-content:flex-end;align-items:flex-end;width:100%;height:100%;padding:40px;display:flex;position:absolute;top:0;left:0}.epilogue-loading-screen .loading-text{color:#fff;letter-spacing:.2em;opacity:0;font-size:1.5rem;animation:2s ease-in-out 2s infinite pulseLoading}@keyframes pulseLoading{0%{opacity:0}50%{opacity:.8;text-shadow:0 0 10px #ffffff80}to{opacity:0}}.ending-screen{color:#fff;z-index:1000;background:#000;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.ending-scroll-container{justify-content:center;width:100%;animation:65s linear forwards creditsScroll;display:flex;position:absolute}.ending-content{text-align:center;width:80%;max-width:600px;padding-bottom:50px}.epilogue-section{text-shadow:0 2px 4px #000c;text-align:left;margin-bottom:528px;padding:0 40px;font-size:1.3rem;line-height:2}.staff-section{margin-top:50px}.staff-role{color:gold;letter-spacing:.1em;margin:40px 0 10px;font-size:1rem}.staff-name{letter-spacing:.05em;margin:0;font-size:1.4rem}.staff-spacer{height:100px}@keyframes creditsScroll{0%{top:100%;transform:translateY(0)}to{top:0;transform:translateY(-100%)}}.ending-the-end{text-align:center;opacity:0;animation:3s ease-in 65s forwards fadeInEnd;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ending-the-end h1{letter-spacing:.2em;color:#fff;text-shadow:0 0 20px #ffffff80;margin-bottom:40px;font-size:4rem}.restart-btn{opacity:0;animation:2s ease-in 68s forwards fadeInEnd}@keyframes fadeInEnd{0%{opacity:0}to{opacity:1}}.hide-scrollbar::-webkit-scrollbar{display:none}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@keyframes damageShakeCrit{0%{filter:brightness();transform:translate(0)scale(1)}20%{filter:brightness(2)drop-shadow(0 0 10px #ff0);transform:translate(-10px,-10px)scale(.9)}40%{filter:brightness(2)drop-shadow(0 0 10px red);transform:translate(10px,10px)scale(.8)}60%{filter:brightness(2);transform:translate(-10px,10px)scale(.9)}80%{transform:translate(10px,-10px)scale(.8)}to{filter:brightness();transform:translate(0)scale(1)}}.anim-damage-crit{animation:.5s cubic-bezier(.36,.07,.19,.97) both damageShakeCrit}.damage-crit-text{text-shadow:0 0 10px red,2px 2px #000,-2px -2px #000,2px -2px #000,-2px 2px #000;animation:1s ease-out forwards floatUp;color:#ffeb3b!important;font-size:2.5rem!important}.damage-miss{text-shadow:2px 2px #000,-2px -2px #000,2px -2px #000,-2px 2px #000;color:#aaa!important;font-size:1.2rem!important}.tile-dungeon-bg{background-color:#212121}
