@font-face{font-family:Fredoka;font-weight:400;src:url(../fonts/Fredoka-400-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fredoka;font-weight:400;src:url(../fonts/Fredoka-400-latin.woff2)format("woff2")}@font-face{font-family:Fredoka;font-weight:600;src:url(../fonts/Fredoka-600-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fredoka;font-weight:600;src:url(../fonts/Fredoka-600-latin.woff2)format("woff2")}@font-face{font-family:Fredoka;font-weight:700;src:url(../fonts/Fredoka-700-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fredoka;font-weight:700;src:url(../fonts/Fredoka-700-latin.woff2)format("woff2")}@font-face{font-family:Nunito;font-weight:400;src:url(../fonts/Nunito-400-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-weight:400;src:url(../fonts/Nunito-400-latin.woff2)format("woff2")}@font-face{font-family:Nunito;font-weight:600;src:url(../fonts/Nunito-600-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-weight:600;src:url(../fonts/Nunito-600-latin.woff2)format("woff2")}@font-face{font-family:Nunito;font-weight:700;src:url(../fonts/Nunito-700-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-weight:700;src:url(../fonts/Nunito-700-latin.woff2)format("woff2")}@font-face{font-family:Nunito;font-weight:800;src:url(../fonts/Nunito-800-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-weight:800;src:url(../fonts/Nunito-800-latin.woff2)format("woff2")}:root{--parchment:#f6e7c8;--parchment-dark:#e2cd9f;--ink:#3b2a1e;--ink-soft:#6b5239;--gold:#d9a441;--violet:#6f3fb5;--violet-light:#b58cf0;--heart:#ff4d6d;--courage:#3fb8b0;--shadow:0 10px 30px #140a2859;--title-font:"Fredoka", "Nunito", system-ui, sans-serif;--body-font:"Nunito", "Fredoka", system-ui, sans-serif}html,body{height:100%;font-family:var(--body-font);color:var(--ink);background:#0b0a14;margin:0;overflow:hidden}canvas#game{outline:none;width:100vw;height:100vh;display:block}#ui{pointer-events:none;position:fixed;inset:0;overflow:hidden}#ui *{box-sizing:border-box}#ui .clickable{pointer-events:auto}.hidden{display:none!important}.hud{transition:opacity .4s;position:absolute;inset:0}.hud.off{opacity:0}.hearts{filter:drop-shadow(0 2px 2px #0006);gap:6px;display:flex;position:absolute;top:18px;left:22px}.heart{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 29s-13-8.4-13-17A7 7 0 0 1 16 8a7 7 0 0 1 13 4c0 8.6-13 17-13 17z' fill='%23ff4d6d' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E") 50%/contain no-repeat;width:34px;height:34px;transition:transform .2s}.heart.half{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cdefs%3E%3CclipPath id='c'%3E%3Crect x='0' y='0' width='16' height='32'/%3E%3C/clipPath%3E%3C/defs%3E%3Cpath d='M16 29s-13-8.4-13-17A7 7 0 0 1 16 8a7 7 0 0 1 13 4c0 8.6-13 17-13 17z' fill='%235a4a55' stroke='%23fff' stroke-width='2'/%3E%3Cpath clip-path='url(%23c)' d='M16 29s-13-8.4-13-17A7 7 0 0 1 16 8a7 7 0 0 1 13 4c0 8.6-13 17-13 17z' fill='%23ff4d6d' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E")}.heart.empty{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 29s-13-8.4-13-17A7 7 0 0 1 16 8a7 7 0 0 1 13 4c0 8.6-13 17-13 17z' fill='%235a4a55' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E")}.heart.pulse{transform:scale(1.35)}.courage{color:#fff;font-family:var(--title-font);text-shadow:0 2px 3px #00000080;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex;position:absolute;top:60px;left:22px}.courage .label{letter-spacing:.02em}.courage .bar{background:#00000059;border:2px solid #ffffffb3;border-radius:8px;width:140px;height:12px;overflow:hidden}.courage .fill{background:linear-gradient(90deg,#3fb8b0,#9ff2ff);border-radius:6px;width:0%;height:100%;transition:width .5s}.flowers{color:#fff;font-family:var(--title-font);text-shadow:0 2px 3px #00000080;align-items:center;gap:6px;font-size:15px;font-weight:600;display:flex;position:absolute;top:88px;left:22px}.flowers .star{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l2.9 6.3 6.9.8-5.1 4.7 1.4 6.8L12 17.3 5.9 20.6l1.4-6.8L2.2 9.1l6.9-.8z' fill='%23ffe066' stroke='%23b88400' stroke-width='1.2'/%3E%3C/svg%3E") 50%/contain no-repeat;width:20px;height:20px}.objective{text-align:right;color:#fff;text-shadow:0 2px 4px #0009;max-width:360px;font-family:var(--title-font);position:absolute;top:18px;right:22px}.objective .title{opacity:.85;letter-spacing:.08em;text-transform:uppercase;font-size:13px;font-weight:600}.objective .text{margin-top:2px;font-size:18px;font-weight:600}.prompt{color:#fff;font-family:var(--title-font);box-shadow:var(--shadow);opacity:0;background:#1c122dc7;border-radius:999px;align-items:center;gap:10px;padding:8px 16px;font-size:16px;font-weight:600;transition:opacity .15s;display:flex;position:absolute;bottom:14%;left:50%;transform:translate(-50%)}.prompt.on{opacity:1}.key{min-width:28px;height:28px;color:var(--ink);background:#fff;border-radius:8px;justify-content:center;align-items:center;padding:0 8px;font-size:14px;font-weight:800;display:inline-flex;box-shadow:inset 0 -3px #c9bca8}.hint{color:var(--ink);box-shadow:var(--shadow);opacity:0;text-align:center;background:#f6e7c8f2;border-radius:14px;max-width:80vw;padding:10px 18px;font-size:17px;font-weight:600;transition:opacity .3s;position:absolute;bottom:6%;left:50%;transform:translate(-50%)}.hint.on{opacity:1}.toast{color:#ffe9a8;border:2px solid var(--gold);font-family:var(--title-font);box-shadow:var(--shadow);opacity:0;text-align:center;background:#1c122dd9;border-radius:14px;padding:10px 22px;font-size:20px;font-weight:600;transition:opacity .3s,transform .3s;position:absolute;top:14%;left:50%;transform:translate(-50%)translateY(-10px)}.toast.on{opacity:1;transform:translate(-50%)translateY(0)}.charge{opacity:0;border:3px solid #ffffff40;border-radius:50%;width:46px;height:46px;margin:-23px 0 0 -23px;transition:opacity .1s;position:absolute;top:50%;left:50%}.charge.on{opacity:1}.charge .ring{background:conic-gradient(var(--gold) var(--p), transparent 0);border-radius:50%;position:absolute;inset:-3px;-webkit-mask:radial-gradient(circle,#0000 17px,#000 18px);mask:radial-gradient(circle,#0000 17px,#000 18px)}.charge.full .ring{background:conic-gradient(#fff 100%, transparent 0)}.bossbar{opacity:0;text-align:center;color:#fff;width:420px;font-family:var(--title-font);text-shadow:0 2px 4px #0009;font-size:18px;font-weight:700;transition:opacity .4s;position:absolute;top:30px;left:50%;transform:translate(-50%)}.bossbar.on{opacity:1}.bossbar .bar{background:#0006;border:2px solid #fffc;border-radius:8px;height:14px;margin-top:4px;overflow:hidden}.bossbar .fill{background:linear-gradient(90deg,#7a3dd6,#ff5cf0);width:100%;height:100%;transition:width .3s}.dialog{background:linear-gradient(180deg, var(--parchment), var(--parchment-dark));width:min(820px,92vw);box-shadow:var(--shadow);opacity:0;border:3px solid #b48b4a;border-radius:18px;padding:18px 26px 22px;transition:opacity .2s,transform .2s;position:absolute;bottom:13%;left:50%;transform:translate(-50%)translateY(20px)}.dialog.on{opacity:1;transform:translate(-50%)translateY(0)}.dialog .speaker{background:var(--violet);color:#fff;font-family:var(--title-font);border-radius:999px;padding:4px 14px;font-size:16px;font-weight:700;position:absolute;top:-18px;left:22px;box-shadow:0 3px 8px #0000004d}.dialog .speaker.zym{background:var(--courage)}.dialog .speaker.ormuzd{background:#c98a2a}.dialog .speaker.ahriman{background:#3b1f5e}.dialog .speaker.npc{background:#5a8f3a}.dialog .text{min-height:2.9em;color:var(--ink);font-size:21px;font-weight:600;line-height:1.45}.dialog .next{color:var(--ink-soft);opacity:0;font-size:14px;animation:1s infinite bob;position:absolute;bottom:10px;right:18px}.dialog .next.on{opacity:1}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.overlay{opacity:0;background:#080512b8;justify-content:center;align-items:center;transition:opacity .6s;display:flex;position:absolute;inset:0}.overlay.on{opacity:1}.card{width:min(760px,90vw);box-shadow:var(--shadow);text-align:center;font-family:var(--title-font);color:var(--ink);background:linear-gradient(170deg,#fbf1d9,#e9d4a4);border:3px solid #b48b4a;border-radius:22px;padding:36px 44px;font-size:26px;font-weight:500;line-height:1.45;transition:transform .6s;transform:translateY(16px)}.overlay.on .card{transform:translateY(0)}.card .sub{font-family:var(--body-font);color:var(--ink-soft);margin-top:18px;font-size:15px;font-weight:600}.fade{opacity:0;background:#000;transition:opacity .8s;position:absolute;inset:0}.letterbox{background:#000;height:0;transition:height .6s;position:absolute;left:0;right:0}.letterbox.top{top:0}.letterbox.bottom{bottom:0}.letterbox.on{height:11vh}.menu{opacity:0;flex-direction:column;justify-content:center;align-items:center;gap:14px;transition:opacity .4s;display:flex;position:absolute;inset:0}.menu.on{opacity:1}.menu.dim{background:#0805128c}.title-block{text-align:center;margin-bottom:26px}.title-main{font-family:var(--title-font);color:#fff;text-shadow:0 4px #6f3fb5,0 10px 30px #00000080;letter-spacing:.01em;font-size:clamp(44px,8vw,92px);font-weight:700;line-height:1}.title-sub{font-family:var(--title-font);color:#ffe9a8;text-shadow:0 2px 6px #0009;margin-top:14px;font-size:clamp(16px,2.2vw,24px);font-weight:600}.btn{background:linear-gradient(180deg, var(--parchment), var(--parchment-dark));min-width:280px;color:var(--ink);font-family:var(--title-font);cursor:pointer;box-shadow:var(--shadow);border:3px solid #b48b4a;border-radius:16px;padding:13px 28px;font-size:22px;font-weight:700;transition:transform .12s,filter .12s}.btn:hover,.btn:focus-visible{filter:brightness(1.06);outline:none;transform:translateY(-2px)scale(1.03)}.btn:disabled{opacity:.45;cursor:default;transform:none}.btn.small{min-width:180px;padding:9px 20px;font-size:18px}.panel{background:linear-gradient(180deg, var(--parchment), var(--parchment-dark));width:min(560px,92vw);box-shadow:var(--shadow);color:var(--ink);border:3px solid #b48b4a;border-radius:20px;padding:26px 32px}.panel h2{font-family:var(--title-font);text-align:center;margin:0 0 16px;font-size:28px;font-weight:700}.row{justify-content:space-between;align-items:center;gap:14px;margin:10px 0;font-size:17px;font-weight:700;display:flex}.row select,.row input[type=range]{font-family:inherit;font-size:16px}.row select{color:var(--ink);background:#fff8e8;border:2px solid #b48b4a;border-radius:8px;padding:6px 10px;font-weight:700}.row input[type=range]{width:200px;accent-color:var(--violet)}.row input[type=checkbox]{width:20px;height:20px;accent-color:var(--violet)}.controls-list{columns:2;font-size:15px;line-height:1.7}.credits-scroll{text-align:center;max-height:60vh;font-size:17px;line-height:1.6;overflow:hidden}.credits-scroll h3{font-family:var(--title-font);color:var(--violet);margin:18px 0 6px}.loading{color:#fff;font-family:var(--title-font);background:radial-gradient(circle at 50% 40%,#2a1b4a,#0b0a14);flex-direction:column;justify-content:center;align-items:center;gap:18px;transition:opacity .6s;display:flex;position:absolute;inset:0}.loading .bar{background:#ffffff26;border:2px solid #ffffff80;border-radius:8px;width:min(420px,70vw);height:14px;overflow:hidden}.loading .fill{background:linear-gradient(90deg,#6f3fb5,#ffe9a8);width:0%;height:100%;transition:width .2s}.loading .text{font-size:20px;font-weight:600}.loading .big{text-shadow:0 4px #6f3fb5;font-size:clamp(36px,6vw,64px);font-weight:700}.vignette-hurt{transition:box-shadow .15s;position:absolute;inset:0;box-shadow:inset 0 0 120px #ff283c00}.vignette-hurt.on{box-shadow:inset 0 0 140px #ff283cbf}.end-button{opacity:0;transition:opacity .8s;position:absolute;bottom:24px;right:24px}.end-button.on{opacity:1}.debug{color:#0f0;white-space:pre;background:#00000080;border-radius:6px;padding:6px 8px;font:12px/1.4 monospace;position:absolute;bottom:10px;left:10px}.hud .marker{opacity:0;pointer-events:none;width:0;height:0;transition:opacity .3s;position:absolute;top:0;left:0}.hud .marker.on{opacity:1}.hud .marker .gem{background:linear-gradient(135deg,#ffe680,#f0a21a);border:2px solid #fff6d0;border-radius:4px;width:22px;height:22px;animation:1.4s ease-in-out infinite marker-bob;position:absolute;top:-11px;left:-11px;box-shadow:0 0 14px #ffd250e6,0 2px 4px #0006}.hud .marker .arrow{width:20px;height:20px;display:none;position:absolute;top:-10px;left:-10px}.hud .marker .arrow:before{content:"";filter:drop-shadow(0 0 4px #ffd250e6);border:8px solid #0000;border-left:14px solid #ffd862;position:absolute;top:2px;left:24px}.hud .marker.edge .arrow{display:block}.hud .marker .label{text-align:center;color:#fff5d6;text-shadow:0 1px 3px #000,0 0 6px #0009;width:80px;font:700 13px/1.2 Nunito,sans-serif;position:absolute;top:16px;left:-40px}@keyframes marker-bob{0%,to{transform:rotate(45deg)translate(0)}50%{transform:rotate(45deg)translate(-3px,-3px)}}
