:root{color-scheme:dark;--ink:#111019;--panel:#191721;--paper:#eee4c9;--muted:#9c98a6;--gold:#d9b777;--mint:#8bdbc8;--red:#ca5b64}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--ink);color:var(--paper);font-family:'Noto Sans KR',system-ui,sans-serif;touch-action:none;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid var(--mint);outline-offset:5px}button:disabled{opacity:.45;cursor:wait}#game-shell{position:relative;width:100%;height:100dvh;overflow:hidden;background:#12121b}#world{width:100%;height:100%;display:block;image-rendering:pixelated}#vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 18vw 2vw #06060a99}#ui{position:absolute;inset:0;pointer-events:none}#ui>*{pointer-events:auto}.menu{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(0deg,#0a090fdc 1%,#0a090f28 70%,#0a090f48);padding:26px;text-align:center}.eyebrow{font-size:12px;letter-spacing:.32em;color:var(--gold);font-weight:700}.brand{font-family:'Cinzel',Georgia,serif;font-size:clamp(42px,7.1vw,98px);font-weight:500;line-height:1.08;margin:14px 0 9px;text-shadow:0 4px 30px #060508;letter-spacing:.055em}.brand-ko{letter-spacing:.44em;font-size:clamp(16px,2.1vw,23px);margin-left:.44em;color:#e9ddc3}.menu-top{position:absolute;top:max(26px,env(safe-area-inset-top));left:30px;right:30px;display:flex;justify-content:space-between;align-items:center;gap:12px}.wordmark{font-family:'Cinzel',Georgia,serif;letter-spacing:.18em;font-size:14px;color:#cec5b4}.build-label{font-size:12px;color:#bbb0a4}.menu-copy{font-size:14px;color:#c0b8b6;line-height:1.9;margin:25px 0 0}.start-block{margin-top:clamp(38px,10vh,110px);display:flex;align-items:center;flex-direction:column;gap:15px}.btn-primary{min-width:248px;padding:17px 35px;border:1px solid #dabc80;background:linear-gradient(110deg,#c6a66e,#ecd5a1 50%,#c3a068);color:#211c1a;font-weight:800;letter-spacing:.12em;box-shadow:0 0 38px #dbb56a1d;transition:filter .15s,transform .15s}.btn-primary:hover{filter:brightness(1.1);transform:translateY(-2px)}.btn-secondary{border:1px solid #7c71674d;background:#16151bba;padding:13px 22px;font-size:14px;min-height:44px;transition:border-color .15s}.btn-secondary:hover{border-color:var(--gold)}.menu-actions{display:flex;gap:12px}.key-hint{color:#a5a0a6;font-size:12px;line-height:1.7;margin-top:6px}.menu-footer{position:absolute;bottom:max(22px,env(safe-area-inset-bottom));left:30px;right:30px;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#a09a9a}.line-dot{color:var(--gold);padding:0 9px}.hud{position:absolute;inset:0;pointer-events:none!important;padding:22px max(20px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));display:flex;flex-direction:column;justify-content:space-between}.hud-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.player-status{width:min(240px,38vw);padding:11px 13px;background:#111019b8;border:1px solid #ffffff12;backdrop-filter:blur(5px)}.status-label{display:flex;justify-content:space-between;font-size:12px;line-height:1.4;margin-bottom:7px;color:#c7c1c9}.bar{height:5px;background:#ffffff10;overflow:hidden}.bar>i{height:100%;display:block;transition:width .15s;background:var(--red)}.xp-bar{height:3px;margin-top:5px}.xp-bar>i{background:var(--mint)}.timer{text-align:center;min-width:74px}.time-value{font-family:'Cinzel',Georgia,serif;font-size:32px;font-variant-numeric:tabular-nums;letter-spacing:.06em;text-shadow:0 2px 8px #000}.wave-label{font-size:12px;color:var(--gold);margin-top:3px}.hud-right{display:flex;gap:9px;align-items:center}.kill-count{color:#c9c3c8;font-size:13px;font-variant-numeric:tabular-nums}.icon-btn{pointer-events:auto;width:44px;height:44px;border:1px solid #ffffff20;background:#15131baf;display:grid;place-items:center;font-size:17px}.hud-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:10px}.equipment{display:flex;gap:6px}.slot{width:43px;height:43px;display:grid;place-items:center;border:1px solid #b8a07155;background:#16151dcc;position:relative;color:var(--gold);font-size:21px}.slot small{position:absolute;bottom:2px;right:4px;font-size:10px;color:#d8d1c2}.biome-label{color:#bbb1a7;font-size:12px;letter-spacing:.06em;line-height:1.8;text-align:right;text-shadow:0 1px 4px #000}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:#0b0911c7;backdrop-filter:blur(7px);overflow:auto}.panel{width:min(850px,100%);padding:34px;border:1px solid #b8a07238;background:linear-gradient(145deg,#24202bef,#15121beb);box-shadow:0 25px 100px #0008}.panel-head{text-align:center;margin-bottom:26px}.panel h1,.panel h2{font-size:27px;font-weight:600;letter-spacing:.06em;margin:9px 0 7px}.subtext{color:var(--muted);font-size:14px;line-height:1.75}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.card{position:relative;text-align:left;padding:25px 20px 20px;border:1px solid #b2a48235;background:linear-gradient(150deg,#302a37,#201c27);min-height:230px;display:flex;flex-direction:column;align-items:flex-start;transition:transform .18s,border-color .18s,background .18s}.card:hover{transform:translateY(-6px);border-color:var(--gold);background:linear-gradient(150deg,#423745,#28202e)}.card-icon{font-family:Georgia,serif;font-size:40px;line-height:1;color:var(--gold);height:60px}.card-type{font-size:11px;letter-spacing:.12em;color:#b3a0bc}.card-name{font-size:18px;font-weight:700;margin:10px 0}.card-desc{font-size:13px;color:#bbb1c1;line-height:1.7;margin-bottom:20px}.card-level{font-size:12px;color:var(--gold);margin-top:auto}.card-shortcut{position:absolute;top:12px;right:12px;font-size:11px;color:#776c83}.panel-note{text-align:center;color:#8f8499;font-size:12px;margin-top:20px}.pause-panel,.result-panel{max-width:490px;text-align:center}.panel-buttons{display:flex;flex-direction:column;align-items:stretch;gap:11px;margin-top:27px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:28px 0}.stat-value{font-family:'Cinzel',Georgia,serif;font-size:27px;color:#e5cea0}.stat-label{font-size:12px;color:var(--muted);margin-top:5px}.result-crest{font-size:52px;color:var(--gold);font-family:Georgia,serif}.codex{max-height:90dvh;overflow:auto;scrollbar-color:#6b5b73 #17141d;touch-action:pan-y}.codex-tabs{display:flex;gap:9px;justify-content:center;margin-bottom:24px}.codex-tabs button.active{border-color:var(--gold);color:var(--gold)}.bestiary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}.bestiary-item{border:1px solid #b2a48220;text-align:center;padding:12px 5px;background:#13111955}.bestiary-item canvas{display:block;margin:auto;width:64px;height:64px;image-rendering:pixelated}.bestiary-name{font-size:12px;margin-top:7px;color:#d0c4d5}.bestiary-role{font-size:10px;color:#95869f;margin-top:3px}.book-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.book-card{padding:16px;background:#13111966;border:1px solid #b2a48220}.book-card h3{font-size:15px;margin:0 0 8px;color:var(--gold)}.book-card p{font-size:12px;line-height:1.7;margin:0;color:#b5aabb}.book-card small{font-size:11px;color:#81758a}#toast{position:absolute;left:50%;top:24%;transform:translate(-50%,-12px);opacity:0;transition:opacity .3s,transform .3s;padding:11px 22px;border:1px solid #c2a47355;background:#17121bdd;color:#e6d2ac;font-size:14px;text-align:center;pointer-events:none;min-width:210px}#toast.show{opacity:1;transform:translate(-50%,0)}#flash{position:absolute;inset:0;background:#bb334a;opacity:0;pointer-events:none}#joystick{display:none;position:absolute;width:106px;height:106px;border-radius:50%;border:1px solid #d6cdb736;background:#eeeeee09;pointer-events:none;transform:translate(-50%,-50%)}#joystick>div{position:absolute;width:40px;height:40px;left:33px;top:33px;border:1px solid #d6cdb762;background:#e8d5ad36;border-radius:50%}.storage-note{font-size:12px;color:#edb189;margin-top:12px}.sound-label{font-size:12px}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid #ffffff10;font-size:14px}.settings-row button{min-width:70px}.difficulty{display:flex;gap:8px}.difficulty button{font-size:12px;padding:9px 12px}.difficulty button.active{border-color:var(--gold);color:var(--gold)}.danger-zone{margin-top:20px}.loading-note{font-size:12px;color:#c3b8a7;min-height:20px}.game-tip{position:absolute;bottom:110px;left:50%;transform:translateX(-50%);color:#ded5c3;background:#111019a8;padding:10px 18px;font-size:13px;white-space:nowrap;pointer-events:none}.hidden{display:none!important}@media(max-width:600px){.menu{padding:20px}.menu-top{left:20px;right:20px;top:max(20px,env(safe-area-inset-top))}.brand{font-size:48px;max-width:300px}.brand-ko{font-size:17px}.start-block{margin-top:64px}.menu-footer{left:18px;right:18px;font-size:10px;align-items:flex-end;gap:20px}.menu-footer>span:first-child{max-width:170px}.menu-copy{font-size:13px}.hud{padding:14px 12px max(18px,env(safe-area-inset-bottom))}.player-status{width:136px;padding:9px}.hud-top{gap:8px}.time-value{font-size:26px}.kill-count{font-size:12px}.hud-right{gap:6px}.icon-btn{width:38px;height:38px}.overlay{padding:15px}.panel{padding:23px 17px}.panel h2{font-size:23px}.panel-head{margin-bottom:18px}.cards{grid-template-columns:1fr;gap:9px}.card{min-height:102px;padding:15px 14px 15px 76px;display:block}.card-icon{position:absolute;left:20px;top:29px;font-size:34px}.card-name{font-size:16px;margin:5px 0}.card-type{font-size:10px}.card-desc{font-size:12px;line-height:1.55;margin:0 0 6px}.card-level{font-size:11px}.panel-note{font-size:11px;margin-top:14px}.bestiary-grid{grid-template-columns:repeat(3,1fr)}.book-cards{grid-template-columns:1fr}.codex{max-height:88dvh}.equipment{gap:4px}.slot{width:32px;height:35px;font-size:18px}.biome-label{font-size:10px}.game-tip{font-size:12px;bottom:95px}.menu-actions{gap:8px}.menu-actions .btn-secondary{padding:12px 17px}.build-label{font-size:10px}}@media(max-height:600px) and (min-width:601px){.brand{font-size:52px}.start-block{margin-top:22px}.menu-copy{margin-top:13px}.menu-top{top:15px}.menu-footer{bottom:13px}.panel{padding:20px}.card{min-height:180px;padding:16px}.card-desc{margin-bottom:10px}.card-icon{height:43px;font-size:30px}.panel-head{margin-bottom:15px}.overlay{padding:15px}.codex{max-height:95dvh}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
:root .equipment{flex-wrap:wrap;max-width:72%}
/* Dawn's Echo: persistent progression and accessible touch combat controls. */
.gold{color:var(--gold)}.text-btn{border:0;background:transparent;color:#c8bdad;text-decoration:underline;text-underline-offset:4px;padding:5px 12px;min-height:40px;font-size:12px}.continue-note{font-size:12px;color:#d3c29d}.menu .start-block{margin-top:clamp(20px,5vh,52px);gap:11px}.menu-actions{flex-wrap:wrap;justify-content:center}.menu{overflow-y:auto;touch-action:pan-y}.panel{max-height:calc(100dvh - 36px);overflow:auto;touch-action:pan-y;scrollbar-color:#6b5b73 #17141d}.overlay{align-items:safe center}.dash-btn{position:absolute;right:max(22px,env(safe-area-inset-right));bottom:max(105px,calc(env(safe-area-inset-bottom) + 90px));width:70px;height:70px;border:1px solid #dfcb9866;border-radius:50%;background:conic-gradient(#d1bd8a55 var(--charge,100%),#16151de0 0);color:#f1dec0;pointer-events:auto;display:flex;align-items:center;justify-content:center;flex-direction:column;touch-action:none;box-shadow:inset 0 0 0 6px #111019b3}.dash-btn span{font-size:27px;line-height:1}.dash-btn small{font-size:11px;margin-top:3px;font-variant-numeric:tabular-nums}.dash-btn.cooldown{color:#c9beae}.reroll-row{text-align:center;margin-top:18px}.reroll-row .btn-secondary{padding:10px 20px}.reward-strip{margin:20px 0 14px;padding:15px;border:1px solid #cfb98836;background:#d7b6790a;color:var(--gold);font-size:20px}.reward-strip small{display:block;font-size:12px;margin-top:6px;color:#b6a999}.result-detail{font-size:12px}.sanctuary-panel{max-width:650px}.ember-total{font-family:Georgia,serif;font-size:38px;color:var(--gold);margin-top:18px}.ember-total small{font:12px system-ui;color:var(--muted)}.talent-list{display:flex;flex-direction:column;gap:12px}.talent{display:grid;grid-template-columns:45px 1fr auto;align-items:center;gap:16px;padding:19px 17px;border:1px solid #c5a9732a;background:#110f1866}.talent h3{font-size:15px;font-weight:600;margin:0 0 5px}.talent p{font-size:12px;color:#b1a6b8;line-height:1.6;margin:0}.talent-icon{font-size:33px;color:var(--gold);text-align:center}.talent-pips{display:flex;gap:5px;margin-top:10px}.talent-pips i{width:19px;height:3px;background:#443848}.talent-pips i.lit{background:var(--gold)}.talent button{min-width:78px;padding:12px}.privacy-button{margin-top:20px}.bestiary-item.discovered{border-color:#c9a55f60}.bestiary-discovery{font-size:10px;color:#c6ae7c;margin-top:5px}button:disabled{cursor:default}.btn-primary,.btn-secondary{touch-action:manipulation}.menu .loading-note:empty{display:none}
@media(max-width:600px){.menu .brand{font-size:clamp(37px,11vw,48px)}.menu .start-block{margin-top:32px}.menu .key-hint{font-size:11px}.menu-top{top:max(16px,env(safe-area-inset-top))}.dash-btn{width:64px;height:64px;right:17px;bottom:max(106px,calc(env(safe-area-inset-bottom) + 84px))}.talent{grid-template-columns:28px 1fr auto;gap:10px;padding:17px 11px}.talent h3{font-size:14px}.talent-icon{font-size:28px}.talent button{min-width:64px;padding:10px 8px;font-size:12px}.result-panel .panel-buttons{margin-top:20px;gap:8px}.result-panel .stats{margin:20px 0}.result-panel .reward-strip{margin-top:15px}.hud .status-label{font-size:11px}.hud-right{flex-direction:column-reverse;align-items:flex-end}.hud .icon-btn{min-width:44px;min-height:44px}.player-status{max-width:40vw}.game-tip{bottom:180px}.panel{max-height:calc(100dvh - 30px)}}
@media(max-height:700px){.menu{justify-content:flex-start;padding-top:70px;padding-bottom:70px}.menu .brand{font-size:42px;margin-top:9px}.menu .menu-copy{margin-top:14px;font-size:12px}.menu .start-block{margin-top:18px}.menu .key-hint{margin-top:0}.menu .menu-footer{bottom:14px}.menu .btn-primary{padding:14px 24px}.menu .brand-ko{font-size:16px}.menu-top{top:18px}.menu .start-block{gap:8px}}
@media(max-height:440px){.menu{padding-top:55px;min-height:100%;display:block}.menu .eyebrow,.menu .menu-copy,.menu .brand-ko{display:none}.menu .brand{font-size:34px}.menu .start-block{margin:18px auto 60px}.menu .menu-footer{position:static;display:block}.menu .menu-footer>span{margin:8px;display:block;max-width:none}.panel{max-height:calc(100dvh - 20px)}}

.grave-return-caption{position:absolute;inset:0;z-index:90;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;text-align:center;pointer-events:all;color:#e6dccb;transition:opacity .15s;direction:inherit}.grave-return-caption strong{font-family:Georgia,serif;font-size:clamp(24px,5vw,36px);font-weight:400;letter-spacing:.08em}.grave-return-caption p{max-width:30em;font-size:clamp(13px,3vw,16px);line-height:1.8;color:#b4aea3}#ui[hidden]{display:none!important}
