:root{--cream:#e8dfc9;--teal:#2f5c5a;--leather:#5a3e2b;--ink:#12110f}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--cream);-webkit-user-select:none;user-select:none;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Pretendard,Noto Sans KR,sans-serif;overflow:hidden}canvas#app{cursor:crosshair;outline:none;width:100%;height:100%;display:block;position:fixed;inset:0}#hud{pointer-events:none;position:fixed;inset:0}.hint{-webkit-backdrop-filter:blur(10px);text-align:center;background:#12110f8c;border:1px solid #e8dfc91f;border-radius:12px;padding:14px 22px;transition:opacity .6s,transform .6s;position:absolute;bottom:6vh;left:50%;transform:translate(-50%)}.hint.hidden{opacity:0;transform:translate(-50%)translateY(10px)}.hint-title{letter-spacing:.02em;margin-bottom:8px;font-size:15px}.hint-keys{opacity:.85;flex-wrap:wrap;justify-content:center;gap:18px;font-size:12px;display:flex}kbd{background:#e8dfc914;border:1px solid #e8dfc959;border-radius:4px;min-width:18px;margin:0 1px;padding:1px 6px;font-family:inherit;font-size:11px;display:inline-block}.stats{color:#e8dfc9bf;white-space:pre;font:11px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;position:absolute;top:12px;left:12px}.tp-dfwv{pointer-events:auto}#loading{z-index:20;color:var(--cream);background:radial-gradient(120% 120% at 50% 40%,#243b33 0%,#12110f 70%);justify-content:center;align-items:center;transition:opacity .9s;display:flex;position:fixed;inset:0}#loading.hidden{opacity:0;pointer-events:none}.loading-inner{text-align:center;width:min(360px,80vw)}.loading-title{letter-spacing:.18em;margin-bottom:6px;font-size:34px;font-weight:300}.loading-sub{opacity:.7;margin-bottom:22px;font-size:13px}.loading-bar{background:#e8dfc926;border-radius:2px;height:3px;overflow:hidden}.loading-fill{background:var(--cream);width:0%;height:100%;transition:width .25s}.loading-pct{opacity:.6;margin-top:8px;font:11px ui-monospace,Menlo,monospace}.start-btn{color:var(--cream);letter-spacing:.04em;cursor:pointer;background:#e8dfc914;border:1px solid #e8dfc973;border-radius:999px;margin-top:26px;padding:12px 28px;font-size:15px;transition:background .2s,transform .2s}.start-btn:hover{background:#e8dfc92e;transform:translateY(-1px)}.start-btn[hidden]{display:none}#touch-ui{pointer-events:none;z-index:5;position:fixed;inset:0}.joy{background:#12110f40;border:1.5px solid #e8dfc959;border-radius:50%;width:112px;height:112px;display:none;position:absolute}.joy-knob{background:#e8dfc9bf;border-radius:50%;width:44px;height:44px;margin:-22px 0 0 -22px;position:absolute;top:50%;left:50%}.jump-btn,.walk-btn,.atk-btn,.inv-btn{pointer-events:auto;color:var(--cream);touch-action:none;-webkit-user-select:none;user-select:none;background:#12110f59;border:1.5px solid #e8dfc966;border-radius:50%;font-size:22px;position:absolute}.jump-btn{width:72px;height:72px;bottom:44px;right:28px}.walk-btn{width:52px;height:52px;font-size:12px;bottom:56px;right:118px}.atk-btn{width:64px;height:64px;bottom:132px;right:40px}.inv-btn{border-radius:10px;width:44px;height:44px;font-size:18px;top:16px;right:16px}.jump-btn.down,.walk-btn.down,.atk-btn.down{color:var(--ink);background:#e8dfc980}body.touch .hint,body.touch .stats{display:none}@media (max-width:720px){.hint{max-width:92vw;padding:10px 14px;bottom:4vh}.hint-title{margin-bottom:6px;font-size:13px}.hint-keys{gap:8px 12px;font-size:11px}}.inv{z-index:15;-webkit-backdrop-filter:blur(6px);background:#12110f73;justify-content:center;align-items:center;transition:opacity .2s;display:flex;position:fixed;inset:0}.inv.hidden{opacity:0;pointer-events:none}.inv-panel{width:min(560px,92vw);color:var(--cream);background:#1c1a16eb;border:1px solid #e8dfc924;border-radius:14px;padding:18px 20px 22px;position:relative;box-shadow:0 30px 80px #00000080}.inv-head{justify-content:space-between;align-items:baseline;margin-bottom:14px;display:flex}.inv-title{letter-spacing:.08em;font-size:17px}.inv-hint{opacity:.6;font-size:11px}.inv-body{grid-template-columns:110px 1fr;align-items:start;gap:18px;display:grid}.inv-equip{flex-direction:column;align-items:center;gap:8px;display:flex}.inv-label{opacity:.6;letter-spacing:.06em;font-size:11px}.inv-equipname{opacity:.85;text-align:center;min-height:1.4em;font-size:12px}.inv-grid{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.inv-slot{aspect-ratio:1;cursor:pointer;-webkit-user-select:none;user-select:none;background:#e8dfc90f;border:1px solid #e8dfc91f;border-radius:10px;justify-content:center;align-items:center;font-size:26px;transition:background .15s,border-color .15s;display:flex;position:relative}.inv-slot:hover{background:#e8dfc924;border-color:#e8dfc959}.inv-slot.filled{border-color:#e8dfc947}.inv-slot-equip{background:#2f5c5a40;border-color:#2f5c5ae6;width:72px;font-size:32px}.inv-icon{filter:drop-shadow(0 2px 4px #00000080)}.inv-img{object-fit:cover;border-radius:3px;width:82%;height:82%;box-shadow:0 2px 6px #0009}.inv-slot-equip .inv-img{width:78%;height:78%}.inv-count{opacity:.85;font:11px ui-monospace,Menlo,monospace;position:absolute;bottom:3px;right:5px}.inv-tooltip{z-index:2;pointer-events:none;background:#12110ff2;border:1px solid #e8dfc933;border-radius:8px;max-width:240px;padding:8px 10px;font-size:12px;line-height:1.45;position:absolute}.inv-tooltip.hidden{display:none}.inv-tooltip i{opacity:.7;font-style:normal}#popups{pointer-events:none;z-index:6;position:fixed;inset:0}.dmg{color:#ffe8b0;text-shadow:0 2px 6px #000000b3,0 0 2px #000000e6;font:700 22px/1 -apple-system,Pretendard,sans-serif;animation:.8s ease-out forwards dmg-rise;position:absolute;transform:translate(-50%,-50%)}.dmg.crit{color:#ff9a5c;font-size:28px}@keyframes dmg-rise{0%{opacity:0;transform:translate(-50%,-30%)scale(.7)}15%{opacity:1;transform:translate(-50%,-60%)scale(1.15)}to{opacity:0;transform:translate(-50%,-140%)scale(1)}}.prompt{color:var(--cream);pointer-events:none;background:#12110f99;border:1px solid #e8dfc933;border-radius:8px;padding:8px 14px;font-size:13px;transition:opacity .2s;position:absolute;bottom:20vh;left:50%;transform:translate(-50%)}.prompt.hidden{opacity:0}.toast{color:var(--cream);opacity:0;z-index:30;pointer-events:none;background:#12110fcc;border:1px solid #e8dfc933;border-radius:8px;padding:9px 14px;font-size:12.5px;transition:opacity .4s,transform .4s;position:fixed;top:18px;left:50%;transform:translate(-50%,-20px)}.toast.show{opacity:1;transform:translate(-50%)}.death-fade{opacity:0;pointer-events:none;z-index:40;background:#000;justify-content:center;align-items:center;transition:opacity .45s ease-in;display:flex;position:fixed;inset:0}.death-fade.show{opacity:1;pointer-events:auto}.death-text{color:#7a1420;letter-spacing:1.2rem;text-indent:1.2rem;opacity:0;font-size:2rem;font-weight:700;transition:opacity 1.2s .5s}.death-fade.show .death-text{opacity:1}.game-hud{pointer-events:none;z-index:20;flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:fixed;bottom:16px;right:18px}.mission{color:#f3ead6;pointer-events:none;z-index:22;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);letter-spacing:.03em;text-shadow:0 1px 2px #000;background:#06080e8c;border:1px solid #f3ead624;border-radius:4px;min-width:220px;max-width:300px;padding:10px 14px;font-size:12px;position:fixed;top:16px;right:18px}.mission-title{letter-spacing:.28em;text-indent:.28em;color:#f3ead680;margin-bottom:4px;font-size:10px}.mission-goal{margin-bottom:8px;font-size:14px;line-height:1.35}.mission-goal b{color:#ffc876;font-weight:700}.mission-list{border-top:1px solid #f3ead61a;flex-direction:column;gap:3px;margin:0;padding:7px 0 0;list-style:none;display:flex}.mission-list li{color:#f3ead68c;grid-template-columns:10px 1fr auto;align-items:center;gap:8px;display:grid}.mission-list .dot{border:1px solid var(--c);background:0 0;border-radius:50%;width:7px;height:7px}.mission-list .where{color:#f3ead659;font-size:10px}.mission-list li.got{color:#f3ead6f2}.mission-list li.lock{opacity:.38}.mission-list li.carry{color:#ffd9a0}.mission-list li.carry .dot{background:var(--c);box-shadow:0 0 10px var(--c);animation:1.6s ease-in-out infinite carry-pulse}.mission-list li.carry .where{color:#ffc876}@keyframes carry-pulse{50%{box-shadow:0 0 3px var(--c)}}.mission-list li.got .dot{background:var(--c);box-shadow:0 0 8px var(--c)}.mission-list li.got .nm{-webkit-text-decoration:line-through #f3ead673;text-decoration:line-through #f3ead673}.mission-list li.got .where{color:var(--c)}.mission.done .mission-list{display:none}.mission.done .mission-goal{color:#ffc876}.prompt-line{color:#f3ead6;text-shadow:0 1px 3px #000;opacity:0;background:#00000073;border-radius:4px;padding:6px 12px;font-size:14px;transition:opacity .2s;position:relative;overflow:hidden}.prompt-line.show{opacity:1}.prompt-line .prompt-bar{background:#ffc876;width:0;height:2px;transition:width 50ms linear;position:absolute;bottom:0;left:0;box-shadow:0 0 6px #ffc876b3}.pickup-toast{color:#f3ead6;letter-spacing:.08em;text-shadow:0 1px 4px #000;opacity:0;pointer-events:none;z-index:21;background:#00000059;border-radius:4px;padding:8px 16px;font-size:16px;transition:opacity .5s;position:fixed;top:18%;left:50%;transform:translate(-50%)}.pickup-toast.show{opacity:1}.ending{opacity:0;pointer-events:none;z-index:45;background:radial-gradient(at 50% 60%,#3a4f72 0%,#0b1020 70%);flex-direction:column;justify-content:center;align-items:center;gap:12px;transition:opacity 2.2s;display:flex;position:fixed;inset:0}.ending.show{opacity:1;pointer-events:auto}.ending-title{color:#f5ead2;letter-spacing:1.5rem;text-indent:1.5rem;font-size:3rem;font-weight:300}.ending-sub{color:#f5ead2b3;letter-spacing:.3rem;font-size:1rem}.ending-hint{color:#f5ead273;margin-top:28px;font-size:.85rem}.stamina{opacity:0;pointer-events:none;z-index:20;background:#ffffff1f;border-radius:3px;width:180px;height:5px;transition:opacity .35s;position:fixed;bottom:42px;left:50%;transform:translate(-50%)}.stamina.show{opacity:1}.stamina-fill{background:#d8cba8;border-radius:3px;height:100%;transition:background .3s}.stamina.low .stamina-fill{background:#a3392e}.salt-count{color:#f3ead6bf;letter-spacing:.08em;text-shadow:0 1px 3px #000;pointer-events:none;z-index:20;background:#00000059;border-radius:4px;padding:5px 10px;font-size:12px;position:fixed;bottom:16px;left:18px}.hidden-badge{color:#9fb8d8;letter-spacing:.35em;text-indent:.35em;opacity:0;pointer-events:none;z-index:20;text-shadow:0 1px 4px #000;font-size:12px;transition:opacity .4s;position:fixed;bottom:60px;left:50%;transform:translate(-50%)}.hidden-badge.show{opacity:.85}.mission-goal.voice-gm{letter-spacing:.06em;font-family:Noto Serif KR,Apple SD Gothic Neo,serif}.mission-goal.voice-sayo{color:#ffe2b8;font-family:Nanum Pen Script,Apple SD Gothic Neo,cursive;font-size:18px;transform:rotate(-.6deg)}.mission-goal.voice-none{color:#f3ead6cc;font-family:inherit}.mission-goal.glitching{color:#f0dcc8;text-shadow:1px 0 #ff4646cc,-1px 0 #5ac8ff99,0 1px 2px #000;animation:.12s steps(2,end) infinite q-jitter}@keyframes q-jitter{50%{transform:translate(1px,-1px)}}.dialogue{text-align:center;z-index:42;pointer-events:none;opacity:0;width:min(760px,86vw);transition:opacity .25s;position:fixed;bottom:13.5vh;left:50%;transform:translate(-50%)}.dialogue.show{opacity:1}body.phone-up .dialogue{width:min(500px,46vw);transition:left .34s,width .34s;left:28%}.dialogue .who{letter-spacing:.3em;text-indent:.3em;color:var(--who,#f3ead699);text-shadow:0 1px 3px #000;margin-bottom:6px;font-size:12px}.dialogue .line{color:#f3ead6;text-shadow:0 1px 3px #000,0 0 18px #000c;font-family:Noto Serif KR,Apple SD Gothic Neo,serif;font-size:17px;line-height:1.65}.phone{z-index:43;pointer-events:none;aspect-ratio:9/18.5;opacity:0;width:min(186px,21vw);transition:opacity .34s,transform .34s cubic-bezier(.2,.9,.3,1);position:fixed;bottom:5vh;left:57%;transform:translateY(22px)rotate(-4deg)scale(.97)}.phone.show{opacity:1;transform:translateY(0)rotate(-4deg)scale(1)}.phone .scr{color:#dce6f0;background:linear-gradient(168deg,#161c24 0%,#0d1117 58%,#0a0d12 100%);border:1px solid #b4c8dc29;border-radius:16px;flex-direction:column;align-items:center;padding:10px 8px 14px;font-family:Noto Sans JP,Hiragino Sans,Apple SD Gothic Neo,sans-serif;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:0 0 0 3px #080a0ee6,0 10px 30px #000000b3,0 0 34px #78a0d233,0 0 90px #5a82b41a}.phone .bar{letter-spacing:.06em;color:#c8d6e49e;justify-content:space-between;width:100%;font-size:10px;display:flex}.phone .sig{color:#e2b0b0c7}.phone .mid{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;display:flex}.phone .big{letter-spacing:.01em;color:#eef4fa;font-size:40px;font-weight:200;line-height:1}.phone .sub{letter-spacing:.08em;color:#c8d6e4a8;font-size:11px}.phone .note{letter-spacing:.06em;color:#e88a8ae6;min-height:14px;font-size:11.5px}.phone.failed .big{color:#eef4fa8c}.photoview{z-index:60;opacity:0;cursor:pointer;background:radial-gradient(#06080bb8 0%,#040508eb 100%);justify-content:center;align-items:center;transition:opacity .22s;display:flex;position:fixed;inset:0}.photoview.show{opacity:1}.photoview.hidden{display:none}.pv-card{aspect-ratio:1400/1005;width:min(660px,78vw);transform-style:preserve-3d;transition:transform .5s cubic-bezier(.3,.85,.35,1);position:relative;transform:rotate(-1.6deg)}.pv-card.flipped{transform:rotate(-1.6deg)rotateY(180deg)}.pv-face{backface-visibility:hidden;image-rendering:auto;border-radius:2px;width:100%;height:100%;position:absolute;inset:0;box-shadow:0 18px 40px #000000bf}.pv-back{transform:rotateY(180deg)}.pv-hint{letter-spacing:.08em;color:#f3ead680;font-size:12px;position:absolute;bottom:7vh;left:50%;transform:translate(-50%)}.pv-hint kbd{font:inherit;color:#f3ead6b3;border:1px solid #f3ead647;border-radius:3px;padding:1px 5px}.dread{pointer-events:none;z-index:23;opacity:0;transition:opacity .5s;position:fixed;inset:0}.dread:after{content:"";background:radial-gradient(at 50% 55%,#0000 34%,#60080a4d 72%,#340206b8 100%);position:absolute;inset:0}.flash{pointer-events:none;z-index:23;opacity:0;mix-blend-mode:screen;background:#cfe0ff;position:fixed;inset:0}@media (prefers-reduced-motion:reduce){.flash{display:none}}.letterbox{z-index:24;pointer-events:none;background:#000;height:12vh;transition:transform .8s cubic-bezier(.4,0,.2,1);position:fixed;left:0;right:0;transform:scaleY(0)}.letterbox.top{transform-origin:top;top:0}.letterbox.bottom{transform-origin:bottom;bottom:0}.letterbox.show{transform:scaleY(1)}.seq-fade{opacity:0;pointer-events:none;z-index:40;background:#000;transition-property:opacity;transition-timing-function:ease;position:fixed;inset:0}.seq-skip{z-index:41;color:#f3ead6b3;letter-spacing:.12em;opacity:0;pointer-events:none;font-size:11px;transition:opacity .3s;position:fixed;bottom:24px;right:24px}.seq-skip.show{opacity:1}.seq-skip .bar{background:#f3ead638;height:2px;margin-top:5px}.seq-skip .bar i{background:#ffc876;width:0;height:100%;display:block}.seq-scrub{z-index:60;color:#f3ead6;background:#06080ec7;border:1px solid #f3ead62e;border-radius:4px;align-items:center;gap:8px;padding:6px 10px;font-size:11px;display:flex;position:fixed;bottom:16px;left:16px}.seq-scrub input[type=range]{accent-color:#ffc876;width:220px}.seq-scrub button{color:inherit;cursor:pointer;background:0 0;border:1px solid #f3ead64d;border-radius:3px;padding:2px 8px;font-family:inherit;font-size:11px}.seq-scrub .tm{font-variant-numeric:tabular-nums;min-width:92px}.title-card{opacity:0;pointer-events:none;z-index:44;background:#000;flex-direction:column;justify-content:center;align-items:center;gap:18px;transition:opacity 1.6s;display:flex;position:fixed;inset:0}.title-card.show{opacity:1}.tc-kanji{letter-spacing:.22em;text-indent:.22em;color:#f0e6d2;text-shadow:0 0 42px #be28208c;font-family:Noto Serif KR,serif;font-size:clamp(3.4rem,12vw,7rem);font-weight:600}.tc-kanji:first-letter{color:#c8362a}.tc-ko{letter-spacing:.9em;text-indent:.9em;color:#f0e6d28c;font-family:Noto Serif KR,serif;font-size:clamp(.9rem,2.4vw,1.15rem)}.title-card.show .tc-kanji{animation:2.4s cubic-bezier(.2,0,.1,1) both tc-in}@keyframes tc-in{0%{letter-spacing:.6em;opacity:0}to{letter-spacing:.22em;opacity:1}}@media (prefers-reduced-motion:reduce){.title-card.show .tc-kanji{animation:none}}#hud.cine .hint,#hud.cine .stamina,#hud.cine .salt-count,#hud.cine .hidden-badge,#hud.cine .mission,#hud.cine .game-hud,#hud.cine .prompt{transition:opacity .4s;opacity:0!important}
