*{box-sizing:border-box}:root{--ink:#e6dfcf;--muted:#9a927f;--gold:#c8a96a;--panel:#0c0b0ae0;--line:#c8a96a59;--serif:"Noto Serif KR", "Batang", serif;--sans:"Noto Sans KR", "Malgun Gothic", system-ui, sans-serif}html,body{background:#0a0908;height:100%;margin:0;overflow:hidden}body{font-family:var(--sans);color:var(--ink);-webkit-user-select:none;user-select:none}canvas#game{width:100vw;height:100vh;display:block}#ui{pointer-events:none;position:fixed;inset:0}#ui .interactive,#ui button{pointer-events:auto}button{font:600 14px var(--serif);color:var(--ink);border:1px solid var(--line);cursor:pointer;letter-spacing:1px;background:#28221ae6;border-radius:2px;padding:7px 16px}button:hover{border-color:var(--gold);color:#fff3d6;background:#3c3224f2}button:disabled{opacity:.35;cursor:default;border-color:var(--line)}button.secondary{color:var(--muted);background:#141311e6}.hud-top{flex-direction:column;gap:8px;display:flex;position:absolute;top:24px;left:28px}.hp{background:#0009;border:1px solid #ffffff1f;width:300px;height:10px;position:relative}.hp-fill{background:linear-gradient(#b8302a,#7a1a16);height:100%;transition:width .25s}.hp-text{color:var(--muted);letter-spacing:1px;font-size:11px;position:absolute;top:13px;left:0}.gold{font:600 14px var(--serif);color:var(--gold);text-shadow:0 1px 3px #000;letter-spacing:1px;margin-top:14px}.quick{gap:8px;display:flex;position:absolute;bottom:28px;left:28px}.slot{border:1px solid var(--line);background:#0a0a0a99;place-items:center;width:54px;height:54px;font-size:22px;display:grid;position:relative}.slot .key{color:var(--muted);font-size:10px;position:absolute;top:2px;left:5px}.slot .count{font-size:12px;font-weight:700;position:absolute;bottom:2px;right:5px}.help{color:#e6dfcf8c;text-align:right;font-size:11px;line-height:1.8;position:absolute;top:20px;right:24px}.help b{color:#c8a96acc;font-weight:600}.prompt{background:var(--panel);border-top:1px solid var(--line);border-bottom:1px solid var(--line);font:500 14px var(--serif);letter-spacing:1px;padding:8px 28px;display:none;position:absolute;bottom:150px;left:50%;transform:translate(-50%)}.prompt kbd{color:var(--gold);font-family:var(--sans);margin-right:10px}.toasts{flex-direction:column-reverse;align-items:center;gap:4px;display:flex;position:absolute;bottom:200px;left:50%;transform:translate(-50%)}.toast{font:14px var(--serif);letter-spacing:1px;white-space:nowrap;background:linear-gradient(90deg,#0000,#000000b3,#0000);padding:5px 60px;animation:3s forwards toast}@keyframes toast{0%{opacity:0}10%,75%{opacity:1}to{opacity:0}}.region-name{font:400 38px var(--serif);letter-spacing:10px;text-shadow:0 2px 16px #000000e6;opacity:0;white-space:nowrap;position:absolute;top:20%;left:50%;transform:translate(-50%)}.region-name.show{animation:4s forwards region}@keyframes region{0%{opacity:0;letter-spacing:16px}20%,70%{opacity:1;letter-spacing:10px}to{opacity:0}}.lock-hint{background:var(--panel);font:14px var(--serif);border:1px solid var(--line);padding:10px 24px;display:none;position:absolute;top:12%;left:50%;transform:translate(-50%)}.boss{opacity:0;width:min(820px,100vw - 48px);transition:opacity .8s;position:absolute;bottom:90px;left:50%;transform:translate(-50%)}.boss.show{opacity:1}.boss-name{font:500 17px var(--serif);letter-spacing:3px;text-shadow:0 1px 4px #000;margin-bottom:6px}.boss-track{background:#000000a6;border:1px solid #ffffff24;height:9px;position:relative}.boss-fill,.boss-lag{position:absolute;top:0;bottom:0;left:0}.boss-fill{background:linear-gradient(#9a2a22,#5a120e);transition:width .15s}.boss-lag{background:#d8b870;transition:width .6s .5s}.boss.enraged .boss-name{color:#ff9a7a}.boss.enraged .boss-fill{background:linear-gradient(#d0401e,#7a1a0a)}.hurt{opacity:0;position:absolute;inset:0;box-shadow:inset 0 0 160px #a00a00b3}.hurt.on{animation:.5s ease-out hurt}@keyframes hurt{0%{opacity:1}to{opacity:0}}.banner{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.banner span{text-align:center;width:100%;font:400 52px var(--serif);letter-spacing:12px;color:#e8c878;text-shadow:0 0 30px #e8c87880;background:linear-gradient(90deg,#0000,#000000bf 30% 70%,#0000);padding:22px 0;animation:5.2s forwards banner;display:block}@keyframes banner{0%{opacity:0;letter-spacing:24px}15%,70%{opacity:1;letter-spacing:12px}to{opacity:0}}.floats{position:absolute;inset:0;overflow:hidden}.float{will-change:transform;font:700 18px var(--serif);text-shadow:0 2px 3px #000,0 0 2px #000;white-space:nowrap;position:absolute;top:0;left:0;transform:translate(-50%,-50%)}.overlay{background:#00000080;place-items:center;display:grid;position:absolute;inset:0}.panel{background:var(--panel);border:1px solid var(--line);width:min(680px,100vw - 32px);max-height:calc(100vh - 48px);padding:24px;overflow:auto;box-shadow:0 20px 60px #000000b3}.panel h2{font:500 22px var(--serif);letter-spacing:3px;color:var(--gold);margin:0 0 4px}.panel .sub{color:var(--muted);margin-bottom:16px;font-size:12px}.panel .row-actions{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.cols{grid-template-columns:1fr 1fr;gap:18px;display:grid}@media (width<=600px){.cols{grid-template-columns:1fr}}.list{flex-direction:column;gap:4px;display:flex}.list h3{font:500 14px var(--serif);color:var(--muted);letter-spacing:2px;border-bottom:1px solid var(--line);margin:0 0 6px;padding-bottom:6px}.item{background:#ffffff08;border-left:2px solid #0000;align-items:center;gap:10px;padding:8px 10px;display:flex}.item:hover{border-left-color:var(--gold);background:#ffffff0f}.item .icon{text-align:center;filter:saturate(.6);width:28px;font-size:20px}.item .info{flex:1;min-width:0}.item .name{font:500 14px var(--serif)}.item .desc{color:var(--muted);font-size:12px}.item .tag{color:var(--gold);border:1px solid var(--line);margin-left:8px;padding:0 5px;font-size:10px}.item button{padding:4px 10px;font-size:12px}.empty{color:var(--muted);padding:8px;font-size:13px}.msg{min-height:20px;font:13px var(--serif);color:var(--gold);margin-top:12px}.stats{font:500 14px var(--serif);flex-wrap:wrap;gap:18px;margin-bottom:16px;display:flex}.stats span{color:var(--ink)}.dialogue{background:linear-gradient(#0000,#000000d9 20%);width:min(760px,100vw - 32px);padding:30px 28px 20px;position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.dialogue .who{font:500 16px var(--serif);color:var(--gold);letter-spacing:2px;margin-bottom:8px}.dialogue .who small{color:var(--muted);margin-left:10px;font-size:12px;font-weight:400}.dialogue .text{font:17px/1.7 var(--serif);min-height:58px}.title{background:radial-gradient(at 50% 45%,#2a2620,#070606 70%);place-items:center;display:grid;position:absolute;inset:0}.title .box{text-align:center;padding:16px}.title h1{font:400 clamp(34px, 6vw, 58px) var(--serif);letter-spacing:14px;color:#e6d6b0;text-shadow:0 0 40px #c8a96a40;margin:0 0 14px}.title p{color:var(--muted);font:14px var(--serif);letter-spacing:2px;margin:0 0 42px}.title .buttons{flex-direction:column;align-items:center;gap:12px;display:flex}.title .buttons button{background:0 0;border-color:#0000;width:240px;padding:12px;font-size:15px}.title .buttons button:hover{border-color:var(--line);background:#c8a96a14}.title .controls{color:#9a927fb3;margin-top:42px;font-size:12px;line-height:1.9}.loading{font:16px var(--serif);letter-spacing:4px;color:var(--muted);background:#070606;place-items:center;display:grid;position:absolute;inset:0}.death{background:#00000073;place-items:center;animation:1s fadein;display:grid;position:absolute;inset:0}.death span{text-align:center;width:100%;font:400 56px var(--serif);letter-spacing:14px;color:#9a1a12;text-shadow:0 0 20px #96140a99;background:linear-gradient(90deg,#0000,#000c 30% 70%,#0000);padding:20px 0;display:block}@keyframes fadein{0%{opacity:0}}svg.icon{vertical-align:middle;flex:none;display:inline-block}.with-icon{align-items:center;gap:6px;display:inline-flex}.item .icon{place-items:center;display:grid}.slot svg.icon{margin-top:2px}.slot.empty-slot{opacity:.45}.gold svg.icon{color:var(--gold)}.buffs{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.buff{font:12px var(--serif);color:#e8c878;border:1px solid var(--line);background:#00000073;padding:2px 8px}.buff svg.icon{color:#e8c878}.recipe .needs{flex-wrap:wrap;gap:4px 10px;margin-top:4px;display:flex}.need{align-items:center;gap:4px;font-size:12px;display:inline-flex}.need.ok{color:#a8c890}.need.lack{color:#c86a5a}.panel.narrow{width:min(460px,100vw - 32px)}.loading{flex-direction:column;justify-content:center;align-items:center;gap:22px;transition:opacity .4s;display:flex}.loading.fade{opacity:0}.loading-title{font:400 30px var(--serif);letter-spacing:10px;color:var(--ink)}.loading-bar{background:#ffffff14;width:min(420px,70vw);height:3px}.loading-fill{background:linear-gradient(90deg,#8a6a3a,#e8c878);width:0;height:100%;transition:width .2s}.loading-tip{text-align:center;max-width:min(560px,86vw);font:14px/1.8 var(--serif);color:var(--muted);letter-spacing:1px}.panel::-webkit-scrollbar{width:8px}.panel::-webkit-scrollbar-track{background:0 0}.panel::-webkit-scrollbar-thumb{background:#c8a96a4d}.panel{scrollbar-color:#c8a96a4d transparent;scrollbar-width:thin}.skill-slot{border-color:#7fc8dc80;overflow:visible}.skill-slot .cooldown{background:#000000a6;position:absolute;bottom:0;left:0;right:0}.skill-slot .cd-text{font:700 18px var(--serif);color:#fff;text-shadow:0 1px 3px #000;place-items:center;display:grid;position:absolute;inset:0}.skill-slot .skill-name{white-space:nowrap;font:11px var(--serif);color:#9fd8ff;text-shadow:0 1px 2px #000;position:absolute;top:-18px;left:50%;transform:translate(-50%)}.touch-controls{display:none}body.touch.playing .touch-controls{display:block}body.touch.panel-open .touch-controls{display:none}body.touch .help,body.touch .lock-hint{display:none!important}body.touch canvas#game{touch-action:none}.touch-controls,.touch-controls *{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.t-stick{left:max(24px, env(safe-area-inset-left));background:radial-gradient(circle,#ffffff14,#00000040);border:1px solid #c8a96a59;border-radius:50%;width:150px;height:150px;position:absolute;bottom:28px}.t-knob{background:#e6dfcf4d;border:1px solid #e6dfcf8c;border-radius:50%;width:60px;height:60px;margin:-30px 0 0 -30px;position:absolute;top:50%;left:50%;box-shadow:0 2px 10px #00000080}.t-btn{width:58px;height:58px;color:var(--ink);background:#0c0b0a8c;border:1px solid #c8a96a66;border-radius:50%;align-content:center;place-items:center;display:grid;position:absolute}.t-btn span{font:10px var(--serif);color:var(--muted);margin-top:1px}.t-btn.on{background:#c8a96a59;transform:scale(.94)}.t-btn svg.icon{color:#e6dfcf}.t-attack{right:max(34px, env(safe-area-inset-right));border-color:#c8a96ab3;width:88px;height:88px;bottom:40px}.t-roll{right:max(136px, calc(env(safe-area-inset-right) + 102px));bottom:28px}.t-jump{right:max(128px, calc(env(safe-area-inset-right) + 94px));bottom:100px}.t-lock{right:max(64px, calc(env(safe-area-inset-right) + 30px));bottom:148px}.t-use{right:max(138px, calc(env(safe-area-inset-right) + 104px));bottom:172px}.t-bag{right:max(20px, env(safe-area-inset-right));width:48px;height:48px;top:20px}body.touch .quick{left:auto;right:max(20px, env(safe-area-inset-right));bottom:232px}body.touch .quick .slot{width:50px;height:50px}body.touch .prompt{pointer-events:auto;bottom:200px}body.touch .prompt kbd{display:none}body.touch .hud-top{top:14px;left:max(18px, env(safe-area-inset-left))}body.touch .hp{width:min(240px,40vw)}body.touch .boss{width:min(560px,60vw);bottom:196px}body.touch .toasts{bottom:250px}body.touch .toast{padding:4px 30px;font-size:13px}body.touch .panel{max-height:calc(100vh - 24px);padding:16px}body.touch .dialogue{bottom:8px}.overlay,.dialogue{z-index:5}.rotate-hint{display:none}@media (orientation:portrait){body.touch .rotate-hint{z-index:50;color:var(--ink);font:16px var(--serif);letter-spacing:2px;pointer-events:auto;background:#070606;align-content:center;place-items:center;gap:16px;display:grid;position:fixed;inset:0}}.quest{border-left:2px solid var(--gold);background:linear-gradient(90deg,#0000008c,#0000);max-width:280px;margin-top:10px;padding:8px 12px}.quest-title{font:600 13px var(--serif);color:var(--gold);letter-spacing:1px}.quest-goal{font:12px var(--serif);color:var(--ink);margin-top:3px}.quest-goal.ready{color:#e8c878}body.touch .quest{max-width:220px;padding:6px 10px}.inv{border:1px solid var(--line);background:linear-gradient(160deg,#161411f5,#090807f5);grid-template-columns:84px 1fr;width:min(1080px,100vw - 32px);height:min(640px,100vh - 40px);display:grid;box-shadow:0 24px 70px #000000bf}.inv-tabs{background:#00000059;border-right:1px solid #c8a96a2e;flex-direction:column;gap:4px;padding:14px 8px;display:flex}.inv-tab{color:var(--muted);font:12px var(--serif);background:0 0;border:1px solid #0000;flex-direction:column;align-items:center;gap:4px;padding:12px 0;display:flex;position:relative}.inv-tab svg.icon{color:#c8a96a8c}.inv-tab:hover{background:#c8a96a12;border-color:#0000}.inv-tab.on{border-color:var(--line);color:var(--ink);background:#c8a96a1f}.inv-tab.on svg.icon{color:var(--gold)}.inv-tab .dot{background:#e8c878;border-radius:50%;width:7px;height:7px;position:absolute;top:8px;right:12px;box-shadow:0 0 8px #e8c878}.inv-main{flex-direction:column;min-width:0;min-height:0;padding:18px 22px 12px;display:flex}.inv-head{border-bottom:1px solid #c8a96a33;justify-content:space-between;align-items:center;margin-bottom:14px;padding-bottom:10px;display:flex}.inv-head h2{font:500 22px var(--serif);letter-spacing:4px;color:var(--gold);margin:0}.inv-meta{font:500 14px var(--serif);align-items:center;gap:14px;display:flex}.lv-badge{border:1px solid var(--line);color:#e8d6a8;letter-spacing:1px;padding:2px 10px}.gold-t{color:var(--gold);align-items:center;gap:5px;display:inline-flex}.inv-meta .x{padding:5px 12px;font-size:12px}.inv .msg{min-height:18px;margin-top:8px}.sec-h{font:500 12px var(--serif);letter-spacing:3px;color:var(--muted);margin:2px 0 10px}.gear-tab{flex:1;grid-template-columns:190px 1fr 270px;gap:18px;min-height:0;display:grid}.equip-grid{grid-template-columns:repeat(2,76px);gap:10px 12px;display:grid}.equip-grid .tile{width:76px;height:76px}.mini-stats,.derived{flex-direction:column;gap:6px;margin-top:18px;display:flex}.stat-line{font:13px var(--serif);color:var(--muted);border-bottom:1px dashed #c8a96a1f;justify-content:space-between;padding:3px 0;display:flex}.stat-line b{color:var(--ink);font-weight:600}.bag{flex-direction:column;min-height:0;display:flex}.filters{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.chip{color:var(--muted);background:0 0;border-color:#c8a96a2e;padding:4px 12px;font-size:12px}.chip.on{border-color:var(--gold);color:var(--ink);background:#c8a96a1a}.grid{scrollbar-color:#c8a96a4d transparent;scrollbar-width:thin;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));align-content:start;gap:8px;padding:2px 4px 2px 2px;display:grid;overflow-y:auto}.tile{--r:#c8a96a2e;aspect-ratio:1;background:radial-gradient(circle at 50% 38%, color-mix(in srgb, var(--r) 22%, transparent), #00000073 75%);border:1px solid color-mix(in srgb, var(--r) 70%, transparent);place-items:center;min-width:0;padding:0;transition:transform 80ms,border-color .15s;display:grid;position:relative;box-shadow:inset 0 0 0 1px #00000080}.tile:hover{border-color:var(--r);background:radial-gradient(circle at 50% 38%, color-mix(in srgb, var(--r) 34%, transparent), #0006 75%);transform:translateY(-1px)}.tile.sel{box-shadow:0 0 0 1px #f0dca8, 0 0 14px color-mix(in srgb, var(--r) 60%, transparent);border-color:#f0dca8}.tile.empty{background:#0000004d;border-style:dashed}.tile .cnt{font:700 11px var(--sans);color:#fff;text-shadow:0 1px 2px #000;position:absolute;bottom:2px;right:4px}.tile .eq{font:700 10px var(--sans);color:#1a1408;background:var(--gold);padding:0 4px;position:absolute;top:2px;left:3px}.tile .lbl{font:10px var(--serif);color:var(--muted);background:linear-gradient(#0000,#000000b3);padding:6px 0 2px;position:absolute;bottom:-1px;left:0;right:0}.tile svg.icon{filter:drop-shadow(0 2px 3px #0009)}.detail{border-left:1px solid #c8a96a26;flex-direction:column;gap:10px;min-height:0;padding-left:18px;display:flex;overflow-y:auto}.detail.blank{color:var(--muted);font:13px/1.8 var(--serif);text-align:center;justify-content:center}.d-head{align-items:center;gap:12px;display:flex}.d-icon{--r:#888;border:1px solid var(--r);background:radial-gradient(circle, color-mix(in srgb, var(--r) 30%, transparent), #00000080 75%);flex:none;place-items:center;width:64px;height:64px;display:grid}.d-name{font:600 18px var(--serif);letter-spacing:1px}.d-kind{color:var(--muted);margin-top:2px;font-size:12px}.d-kind .tag{color:var(--gold);border:1px solid var(--line);margin-left:8px;padding:0 5px;font-size:10px}.d-stat{font:600 14px var(--serif);color:#e8d6a8}.d-skill{font:13px/1.6 var(--serif);color:#9fd8ff}.d-desc{font:13px/1.7 var(--serif);color:var(--muted)}.cmp{background:#0000004d;border:1px solid #c8a96a1f;padding:8px 10px}.cmp-h{color:var(--muted);margin-bottom:4px;font-size:11px}.cmp-row{font:13px var(--serif);justify-content:space-between;display:flex}.cmp-row.up b{color:#8fc47a}.cmp-row.down b{color:#d0705a}.d-foot{align-items:center;gap:8px;margin-top:auto;display:flex}.d-own{color:var(--muted);flex:1;font-size:12px}.skills-tab,.stats-tab{flex:1;max-width:720px;min-height:0;overflow-y:auto}.skill-row{border-left:2px solid var(--gold);background:#ffffff06;align-items:center;gap:14px;margin-bottom:6px;padding:10px 12px;display:flex}.skill-row.off{opacity:.6;border-left-color:#c8a96a33}.skill-row kbd{text-align:center;min-width:48px;font:600 12px var(--sans);color:var(--gold);border:1px solid var(--line);padding:4px 6px}.skill-row kbd:empty{visibility:hidden}.sk-icon{color:#9fd8ff;background:#0006;border:1px solid #7fc8dc59;flex:none;place-items:center;width:44px;height:44px;display:grid}.sk-name{font:600 15px var(--serif)}.sk-desc{font:12px/1.6 var(--serif);color:var(--muted)}.skills-tab .sec-h{margin-top:14px}.lv-card{background:#00000059;border:1px solid #c8a96a33;align-items:center;gap:18px;margin-bottom:14px;padding:14px 16px;display:flex}.lv-num{font:600 36px var(--serif);color:#e8d6a8;line-height:1}.lv-num small{color:var(--muted);margin-right:4px;font-size:13px}.lv-body{flex:1}.xp-bar{background:#ffffff12;border:1px solid #ffffff14;height:8px}.xp-fill{background:linear-gradient(90deg,#6a5230,#e8c878);height:100%}.xp-text{color:var(--muted);margin-top:5px;font-size:12px}.pts{text-align:center;font:600 26px var(--serif);color:var(--muted)}.pts small{font:11px var(--sans);display:block}.pts.has{color:#e8c878;text-shadow:0 0 14px #e8c87866}.stat-row{border-bottom:1px solid #c8a96a1a;grid-template-columns:70px 50px 1fr 40px;align-items:center;gap:12px;padding:10px 12px;display:grid}.st-name{font:600 15px var(--serif)}.st-val{font:600 18px var(--serif);color:#e8d6a8;text-align:right}.st-eff{color:var(--muted);font-size:12px}.plus{place-items:center;width:34px;height:34px;padding:0;display:grid}.plus svg.icon{color:var(--gold)}@media (width<=900px),(height<=520px){.inv{grid-template-columns:62px 1fr;width:calc(100vw - 16px);height:calc(100vh - 16px)}.inv-tab span{font-size:10px}.inv-main{padding:10px 12px 6px}.inv-head{margin-bottom:8px;padding-bottom:6px}.gear-tab{grid-template-columns:150px 1fr 200px;gap:10px}.equip-grid{grid-template-columns:repeat(2,64px);gap:8px}.equip-grid .tile{width:64px;height:64px}.mini-stats{gap:2px;margin-top:10px}.grid{grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:6px}.detail{padding-left:10px}.d-icon{width:48px;height:48px}}.lvl-row{align-items:center;gap:10px;width:300px;display:flex}.lvl{font:600 13px var(--serif);color:#e8d6a8;border:1px solid var(--line);white-space:nowrap;background:#00000080;padding:1px 8px}.lvl.pts-on{border-color:#e8c878;box-shadow:0 0 10px #e8c87859}.hud-xp{background:#0009;border:1px solid #ffffff14;flex:1;height:4px}.hud-xp-fill{background:linear-gradient(90deg,#6a5230,#e8c878);height:100%;transition:width .4s}body.touch .lvl-row{width:min(240px,40vw)}.levelup span{color:#f0dca8}.float.crit{color:#ffd76a;font-size:24px}.dialogue .text .caret{width:8px;color:var(--gold);animation:.9s steps(2,end) infinite caret;display:inline-block}@keyframes caret{50%{opacity:0}}.dialogue{cursor:pointer}.t-sound{right:max(20px, env(safe-area-inset-right));width:44px;height:44px;top:78px}.t-sound span{font-size:9px}.keys-tab{flex:1;max-width:820px;min-height:0;overflow-y:auto}.key-row{--r:#888;background:linear-gradient(90deg, color-mix(in srgb, var(--r) 12%, transparent), #ffffff05 60%);border-left:2px solid var(--r);grid-template-columns:56px 58px 1fr auto;align-items:center;gap:14px;margin-bottom:6px;padding:8px 12px;display:grid}.key-row.locked{opacity:.45;filter:grayscale(.7)}.k-tier{text-align:center;font:600 22px var(--serif);color:var(--r);line-height:1}.k-tier small{font:10px var(--sans);color:var(--muted);margin-bottom:2px;display:block}.k-icon{border:1px solid color-mix(in srgb, var(--r) 60%, transparent);background:radial-gradient(circle, color-mix(in srgb, var(--r) 25%, transparent), #00000080 75%);place-items:center;width:52px;height:52px;display:grid;position:relative}.k-icon .cnt{font:700 11px var(--sans);color:#fff;text-shadow:0 1px 2px #000;position:absolute;bottom:1px;right:3px}.k-name{font:600 15px var(--serif)}.k-boss{font:12px var(--serif);color:var(--muted);margin-left:10px}.k-hint{color:var(--muted);margin-top:2px;font-size:12px}.k-lock svg.icon{color:#c8a96a59}.map-panel{border:1px solid var(--line);background:linear-gradient(160deg,#161411f7,#090807f7);grid-template-columns:auto 1fr;gap:20px;width:min(1080px,100vw - 32px);height:min(680px,100vh - 40px);padding:18px;display:grid;box-shadow:0 24px 70px #000000bf}.map-frame{aspect-ratio:1;background:#14110c;border:1px solid #c8a96a73;max-width:calc(100vw - 300px);height:100%;position:relative;overflow:hidden;box-shadow:inset 0 0 0 4px #0009,0 0 0 1px #000c}.map-img{width:100%;height:100%;display:block}.mk{pointer-events:auto;align-items:center;gap:4px;display:flex;position:absolute;transform:translate(-50%,-50%)}.mk .mk-dot{flex:none}.mk-dot{border:1px solid var(--gold);background:#0a0908d9;border-radius:50%;place-items:center;width:24px;height:24px;display:inline-grid}.mk-dot svg.icon{color:#e8d6a8}.mk-label{white-space:nowrap;font:11px var(--serif);color:#f0e6cc;text-shadow:0 1px 2px #000,0 0 4px #000;position:absolute;left:28px}.mk.dim{opacity:.55}.mk-player .mk-dot,.mk-dot.mk-player{background:#e8c878;border-color:#fff3d6;width:30px;height:30px;box-shadow:0 0 14px #e8c878cc}.mk-player .mk-dot svg.icon,.mk-dot.mk-player svg.icon{color:#1a1408}.mk-player{z-index:2}.mk-player .mk-dot{animation:1.6s ease-in-out infinite mkpulse}@keyframes mkpulse{50%{box-shadow:0 0 22px #e8c878}}.mk-dot.mk-boss,.mk-boss .mk-dot{border-color:#d0705a}.mk-dot.mk-boss svg.icon,.mk-boss .mk-dot svg.icon{color:#f0a080}.mk-dot.mk-portal,.mk-portal .mk-dot{border-color:#8fc0d4}.mk-dot.mk-waypoint svg.icon,.mk-waypoint .mk-dot svg.icon{color:#9fd8ff}.map-side{flex-direction:column;min-width:180px;min-height:0;display:flex;overflow-y:auto}.map-title{font:500 24px var(--serif);letter-spacing:5px;color:var(--gold);border-bottom:1px solid #c8a96a33;margin-bottom:14px;padding-bottom:10px}.map-legend{flex-direction:column;gap:6px;margin-bottom:18px;display:flex}.lg{font:13px var(--serif);color:var(--ink);align-items:center;gap:8px;display:flex}.lg .mk-dot{width:22px;height:22px}.map-world{flex-direction:column;gap:4px;display:flex}.wd{font:14px var(--serif);background:#ffffff05;border-left:2px solid #c8a96a4d;padding:6px 10px}.wd.here{border-left-color:var(--gold);color:#f0dca8;background:#c8a96a14}.wd.unknown{color:#9a927f80;letter-spacing:3px}.wd small{color:var(--gold);margin-left:8px;font-size:11px}.map-close{align-self:flex-start;margin-top:auto}.t-map{right:max(20px, env(safe-area-inset-right));width:44px;height:44px;top:130px}.t-map span{font-size:9px}@media (width<=900px),(height<=520px){.map-panel{gap:12px;width:calc(100vw - 16px);height:calc(100vh - 16px);padding:10px}.map-frame{max-width:calc(100vw - 210px)}.map-side{min-width:150px}.map-title{margin-bottom:8px;padding-bottom:6px;font-size:18px}.map-legend{gap:3px;margin-bottom:10px}.lg{font-size:11px}.wd{padding:3px 8px;font-size:12px}.mk-label{font-size:10px}.key-row{grid-template-columns:44px 48px 1fr auto;gap:8px}.k-icon{width:44px;height:44px}}.keys-tab,.skills-tab,.stats-tab,.detail,.map-side{scrollbar-color:#c8a96a4d transparent;scrollbar-width:thin}.keys-tab::-webkit-scrollbar{width:8px}.skills-tab::-webkit-scrollbar{width:8px}.stats-tab::-webkit-scrollbar{width:8px}.detail::-webkit-scrollbar{width:8px}.map-side::-webkit-scrollbar{width:8px}.grid::-webkit-scrollbar{width:8px}.keys-tab::-webkit-scrollbar-thumb{background:#c8a96a4d}.skills-tab::-webkit-scrollbar-thumb{background:#c8a96a4d}.stats-tab::-webkit-scrollbar-thumb{background:#c8a96a4d}.detail::-webkit-scrollbar-thumb{background:#c8a96a4d}.map-side::-webkit-scrollbar-thumb{background:#c8a96a4d}.grid::-webkit-scrollbar-thumb{background:#c8a96a4d}.keys-tab::-webkit-scrollbar-track{background:0 0}.skills-tab::-webkit-scrollbar-track{background:0 0}.stats-tab::-webkit-scrollbar-track{background:0 0}.detail::-webkit-scrollbar-track{background:0 0}.map-side::-webkit-scrollbar-track{background:0 0}.grid::-webkit-scrollbar-track{background:0 0}.quest{flex-direction:column;gap:7px;display:flex}.quest-item+.quest-item{border-top:1px solid #c8a96a26;padding-top:6px}body.touch .quest-item:nth-child(n+3){display:none}.buff.debuff{background:#280a088c;border-color:#c85a4699}.hurt.poisoned{opacity:1;animation:1.6s ease-in-out infinite poisonPulse;box-shadow:inset 0 0 140px #46961e73}.hurt.webbed{opacity:1;box-shadow:inset 0 0 160px #dcdceb59}@keyframes poisonPulse{50%{box-shadow:inset 0 0 180px #46961e99}}.points{font:600 12px var(--serif);color:#f0dca8;cursor:pointer;background:#282012bf;border:1px solid #e8c8788c;align-self:flex-start;align-items:center;gap:6px;margin-top:2px;padding:3px 10px;animation:2.4s ease-in-out infinite ptsGlow;display:inline-flex}.points svg.icon{color:#e8c878}.points kbd{font:600 10px var(--sans);color:var(--gold);border:1px solid var(--line);padding:0 4px}body.touch .points kbd{display:none}@keyframes ptsGlow{50%{box-shadow:0 0 12px #e8c87873}}body.has-points .t-bag:after{content:"";background:#e8c878;border-radius:50%;width:9px;height:9px;position:absolute;top:4px;right:4px;box-shadow:0 0 8px #e8c878}.mk-dot.mk-secret,.mk-secret .mk-dot{border-color:#b8ccff}.mk-dot.mk-secret svg.icon,.mk-secret .mk-dot svg.icon{color:#c8d8ff}
