@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+KR:wght@400;500;600;700&family=Noto+Sans+KR:wght@400;500;600;700&display=swap');
:root{--bg:#101410;--panel:#171b17;--line:#363b30;--gold:#ceb484;--muted:#878e7f;--text:#e0e3d7;--green:#8eac80}*{box-sizing:border-box}body{margin:0;background:#0c100d;color:var(--text);font:13px 'Noto Sans KR',sans-serif}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}button:hover{color:#f2d9a7}button:focus-visible,canvas:focus-visible{outline:2px solid #d9bd83;outline-offset:-3px}button:disabled{opacity:.35;cursor:not-allowed}h1,h2,h3,p{margin:0}button,kbd{user-select:none}[hidden]{display:none!important}.app{max-width:1800px;min-height:100vh;margin:auto;background:var(--bg);padding:0 26px}header{height:86px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:40px}.brand{display:flex;align-items:center;gap:15px;min-width:200px}.moon{font-size:48px;color:var(--gold);line-height:1;transform:rotate(-20deg)}h1{font:600 29px 'Noto Serif KR',serif;letter-spacing:8px}h1 span{font-size:11px;letter-spacing:3px;color:#a19174}.brand p{font-size:10px;letter-spacing:4px;color:var(--muted);margin-top:3px}nav{align-self:stretch;display:flex;gap:36px;align-items:stretch;margin-right:auto}nav>*{display:flex;align-items:center;font-size:13px;padding:0 2px;position:relative;color:var(--muted)}nav .active{color:var(--gold)}nav .active:after{content:'';position:absolute;bottom:-1px;height:2px;background:var(--gold);left:0;right:0}.header-right{display:flex;align-items:center;gap:12px}.build{color:#929784;letter-spacing:1px;font-size:10px;margin-right:12px}.build b{color:var(--gold);padding:0 8px}.icon-button{border:1px solid var(--line);height:32px;width:32px;font-size:17px}.icon-button.on{color:var(--gold);background:#393728}main{display:grid;grid-template-columns:minmax(0,1fr) 274px;gap:20px;padding-top:20px}.field-shell{position:relative;background:#111810;aspect-ratio:1.5;max-height:calc(100vh - 290px);min-height:430px;border:1px solid #5a5541;overflow:hidden;box-shadow:0 8px 35px #0005}#field{display:block;width:100%;height:100%;cursor:crosshair;touch-action:none}.field-top,.field-bottom{position:absolute;left:0;right:0;padding:20px 23px;display:flex;justify-content:space-between;pointer-events:none}.field-top{top:0;background:linear-gradient(#060e0bc9,transparent);padding-bottom:55px}.location{display:flex;gap:12px;align-items:center}.location-icon{font-size:30px;color:var(--gold)}.location h2{font:600 19px 'Noto Serif KR',serif;letter-spacing:2px}.location p{font-size:10px;color:#afb7a2;margin-top:6px}.location p span{padding:0 6px}.weather{font-size:11px;color:#b1b79f;display:flex;gap:10px;align-items:flex-start;padding-top:9px}.weather span{font-size:17px;margin-top:-5px}.weather i,.saved i{width:5px;height:5px;background:#8cae7e;border-radius:50%;display:inline-block;margin:4px}.field-bottom{bottom:0;align-items:center;background:linear-gradient(transparent,#050d09cf);padding-top:42px;color:#d1d6be;font-size:11px}.field-bottom button{pointer-events:auto;color:var(--gold);background:#141c14d9;border:1px solid #776c4b;padding:9px 12px;display:flex;gap:9px;align-items:center}kbd{font:10px sans-serif;border:1px solid #6a6c595f;border-radius:2px;color:#9a9f89;padding:2px 4px}#loading{position:absolute;inset:0;background:#182119;display:grid;place-content:center;color:var(--gold);letter-spacing:4px}#target-card{position:absolute;left:50%;top:20px;transform:translateX(-50%);width:220px;text-align:center;background:#10180fd9;border:1px solid #766a4b;padding:10px;pointer-events:none}#target-card b{font:500 13px 'Noto Serif KR',serif}.target-bar{height:4px;background:#312720;margin-top:8px}.target-bar i{display:block;height:100%;background:#b4634e}#target-card small{display:block;color:#aeb19a;font-size:10px;margin-top:5px}#toast{position:absolute;bottom:80px;left:50%;transform:translate(-50%,10px);background:#142118ed;border:1px solid #8f8060;color:#e5d8b7;pointer-events:none;padding:13px 24px;max-width:90%;text-align:center;opacity:0;transition:.2s;white-space:nowrap;font-size:13px}#toast.show{opacity:1;transform:translate(-50%,0)}#pause-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#07110aca;backdrop-filter:blur(5px);z-index:4}#pause-overlay>span{font-size:70px;color:var(--gold)}#pause-overlay h2{font:24px 'Noto Serif KR',serif}#pause-overlay p{margin:15px;color:var(--muted)}#pause-overlay button{padding:12px 40px;border:1px solid var(--gold);margin-top:12px;color:var(--gold)}aside{background:linear-gradient(135deg,#1c211a,#121813);padding:17px 18px;display:flex;flex-direction:column;border:1px solid #323b2b}.aside-heading{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.8px;color:#7e8973;border-bottom:1px solid var(--line);padding-bottom:15px}.aside-heading i{color:var(--gold);font-style:normal}.objective{padding:20px 0 17px;border-bottom:1px solid var(--line)}.eyebrow{font-size:10px;color:var(--gold);margin-bottom:11px;letter-spacing:1px}.objective h2{font:500 18px 'Noto Serif KR',serif;margin-bottom:12px}.objective>p:not(.eyebrow){color:#929c87;font-size:11px;line-height:1.9}.quest-track{height:3px;background:#32382c;margin-top:18px}.quest-track>div{height:100%;background:var(--gold);width:0;transition:.5s}.quest-count{display:flex;justify-content:space-between;color:#8f9883;font-size:10px;margin-top:8px}.outline-button{width:100%;display:flex;justify-content:space-between;border:1px solid #55543a;padding:10px 12px;margin-top:16px;color:#c1b28e;font-size:11px}.section-title{display:flex;align-items:center;justify-content:space-between;margin:16px 0 11px}.section-title h3{font-size:11px;font-weight:500;color:#b6beaa}.section-title span,.section-title button{font-size:9px;color:#808d74}.minimap-section{border-bottom:1px solid var(--line);padding-bottom:13px}#minimap{width:100%;height:115px;border:1px solid #3c4432;background:#17251c;display:block}.map-legend{display:flex;gap:15px;font-size:9px;color:#86917b;margin-top:9px}.dot{display:inline-block;width:4px;height:4px;margin:0 5px 2px 0;border-radius:50%}.player{background:#f1df9e}.safe{background:#77b68e}.enemy{background:#ba7558}.species{width:100%;display:flex;align-items:center;text-align:left;gap:10px;border-bottom:1px solid #2a3228;padding:7px 0}.species:last-child{border:0}.species>b{font-size:12px}.species small{display:block;font-size:9px;color:#a59a7b;margin-top:4px}.species small em{font-style:normal;color:#737e6e;margin-left:8px}.species i{margin-left:auto;color:#5e6b56}.creature-icon{width:43px;height:43px;display:block;background-image:url('assets/monsters.png');background-size:129px 86px;flex-shrink:0}.wolf{background-position:-43px 0}.golem{background-position:-86px 0}.session-stats{display:flex;border-top:1px solid var(--line);padding-top:12px;margin-top:auto;justify-content:space-between;font-size:10px;color:#89967d}.session-stats b{display:block;color:#d8d7bb;font:17px 'Noto Serif KR',serif;margin-top:5px}.session-stats small{font-size:10px;color:#8d9175}.saved{color:#737e68;font-size:9px;letter-spacing:.2px;margin-top:12px}footer{display:grid;grid-template-columns:330px minmax(200px,1fr) 295px;gap:23px;margin-top:18px;border-top:1px solid #4a4b36;border-bottom:1px solid #303829;background:linear-gradient(#1b2118,#141a13);padding:17px 18px;min-height:139px}.character{display:flex;gap:14px;border-right:1px solid var(--line);padding-right:18px;align-items:center}.portrait{height:97px;width:66px;flex-shrink:0;position:relative;overflow:hidden;background:radial-gradient(#647051,#1f281f);border:1px solid #7c795a}.portrait img{position:absolute;width:654px;max-width:none;left:-20px;top:-8px}.char-details{flex:1}.char-name{display:flex;gap:10px;align-items:center;margin-bottom:12px}.char-name h2{font:500 17px 'Noto Serif KR',serif}.char-name>span{font-size:11px;color:var(--gold)}.char-name .class-tag{font-size:9px;color:#859879;margin-left:auto}.bar{height:15px;background:#2d2520;position:relative;font-size:9px;border:1px solid #69513d;margin-top:5px}.bar>div{position:absolute;height:100%;background:linear-gradient(90deg,#622d2a,#a14f43);transition:width .2s}.bar span,.bar b{position:absolute;z-index:1;top:0;line-height:13px;font-weight:400;text-shadow:0 1px 2px #000}.bar span{left:5px;color:#c7b49a}.bar b{right:5px;color:#e3cfb7}.bar.xp{height:10px;border-color:#4a5837;background:#263020}.xp>div{background:linear-gradient(90deg,#4b6038,#8a9c51)}.xp span,.xp b{font-size:7px;line-height:8px}.combat-stats{display:flex;justify-content:space-between;font-size:9px;color:#929b84;margin-top:10px}.combat-stats b{font-weight:400;color:#cfcbb1;margin-left:5px}.log-heading{display:flex;gap:15px;font-size:10px;color:#c3c7b2;margin-bottom:9px}.log-heading small{color:#697960;font-size:9px}.battle-log{overflow:hidden}#log{height:75px;overflow:auto;font-size:10px;line-height:1.85;scrollbar-width:thin;scrollbar-color:#39452e transparent}#log p{color:#929f83}#log p.loot{color:#c5b785}#log p.rare{color:#8eb3ba}#log p.warn{color:#cd8977}#log time{color:#586b52;margin-right:9px;font-size:9px}.quickbar{border-left:1px solid var(--line);padding-left:23px}.wallet{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:10px;color:#8d987e}.wallet b{font:20px 'Noto Serif KR',serif;color:var(--gold)}.wallet i{font-size:14px;font-style:normal}.wallet small{font:10px sans-serif}.quickbuttons{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.quickbuttons button{height:62px;position:relative;border:1px solid #5c5b3b;background:linear-gradient(140deg,#303522,#192018);display:flex;align-items:center;justify-content:center;flex-direction:column}.quickbuttons button:hover{border-color:var(--gold);background:#354029}.quickbuttons button>span{font-size:23px;color:#b4b58b;line-height:30px}.quickbuttons button .potion-icon{color:#cd7b65;text-shadow:0 0 10px #b85246}.quickbuttons small{font-size:9px;color:#9aa68b}.quickbuttons small b{color:#ddbf87;font-weight:400}.quickbuttons kbd{position:absolute;top:1px;left:2px;font-size:7px;border:0;padding:1px;color:#9ea17b}.bottom-note{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.3px;color:#5e7057;padding:12px 2px}.bottom-note b{margin:0 8px;font-weight:400;color:#3b4a32}dialog{background:linear-gradient(145deg,#20271e,#121a14);color:var(--text);border:1px solid #8b7b50;box-shadow:0 20px 100px #000a;padding:26px;width:min(650px,94vw);max-height:85vh}dialog::backdrop{background:#0008;backdrop-filter:blur(3px)}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid #4c5038;padding-bottom:21px;margin-bottom:20px}.modal-header p{font-size:9px;letter-spacing:3px;color:var(--gold);margin-bottom:7px}.modal-header h2{font:22px 'Noto Serif KR',serif}.modal-header>button{font-size:25px;color:#a5ad90}.modal-intro{font-size:12px;line-height:1.9;color:#a8b396;margin-bottom:20px}.item{display:flex;align-items:center;gap:13px;padding:14px 0;border-bottom:1px solid #343f2e}.item>span.item-icon{font-size:28px;width:40px;color:var(--gold);text-align:center}.item .item-info{flex:1}.item b{font-size:13px;font-weight:500}.item small{font-size:10px;display:block;color:#94a482;margin-top:5px;line-height:1.8}.item button,.modal-button{border:1px solid #696741;padding:8px 14px;color:var(--gold);font-size:11px;background:#303922}.item .rare-text{color:#7dbecc}.pill{font-size:9px;margin-left:10px;border:1px solid #556644;padding:2px 5px;color:#afc48e}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:17px 0}.stats-grid>div{background:#101a12;padding:15px;border:1px solid #36462e;font-size:10px;color:#8a9b78}.stats-grid b{display:block;font:19px 'Noto Serif KR',serif;margin-top:7px;color:var(--gold)}.help-row{display:flex;gap:20px;padding:12px 0;border-bottom:1px solid #303d2a;line-height:1.7;font-size:12px;color:#a7b497}.help-row>span{color:var(--gold);min-width:100px}.modal-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.success-note{padding:14px;border:1px solid #67714a;background:#2c3822;color:#d7d5a0;margin-bottom:18px}.empty{padding:28px;text-align:center;color:#8d9c7a;font-size:12px}
@media(min-width:761px){.field-shell,aside{height:calc(100vh - 300px);min-height:480px;max-height:none;aspect-ratio:auto}aside{overflow:auto;scrollbar-width:thin;scrollbar-color:#424a34 transparent}.objective{padding:14px 0}.objective h2{margin-bottom:8px}.objective>p:not(.eyebrow){font-size:10px;line-height:1.8}.quest-track{margin-top:12px}.outline-button{margin-top:11px;padding:8px 10px}.aside-heading{padding-bottom:10px}.section-title{margin:12px 0 9px}#minimap{height:95px}.species{padding:6px 0}.species b{font-size:11px}.session-stats{margin-top:12px}.bestiary{margin-bottom:auto}.saved{margin-top:9px}}@media(min-width:761px) and (max-height:950px){.minimap-section{display:none}.objective{padding:20px 0}.bestiary{margin-top:12px}}@media(min-width:1500px){main{grid-template-columns:minmax(0,1fr) 290px}}@media(max-width:1100px){.app{padding:0 14px}main{grid-template-columns:minmax(0,1fr) 235px;gap:12px}aside{padding:13px}.build{display:none}footer{grid-template-columns:290px 1fr;gap:15px}.battle-log{display:none}.quickbar{border:0;padding-left:12px}.minimap-section{display:none}.objective h2{font-size:16px}.field-bottom{padding:15px}nav{gap:22px}header{gap:20px}}@media(max-width:760px){.app{padding:0 8px}header{height:69px}.brand{min-width:150px;gap:9px}.brand h1{font-size:23px}.moon{font-size:36px}.brand p{font-size:8px;letter-spacing:3px}nav{display:none}.header-right{margin-left:auto}main{display:block;padding-top:10px}.field-shell{min-height:0;height:55vh;max-height:none;aspect-ratio:auto}aside{display:none}.field-top{padding:15px;gap:12px}.weather{display:none}.location h2{font-size:17px}.field-bottom{font-size:9px}.field-bottom button{padding:8px;font-size:10px}.field-bottom button kbd{display:none}footer{display:flex;flex-wrap:wrap;padding:12px;margin-top:10px;gap:14px}.character{flex:1;min-width:220px;border:0;padding-right:0}.portrait{height:85px;width:60px}.quickbar{min-width:240px;flex:1;padding-left:0}.quickbuttons button{height:52px}.bottom-note{font-size:8px}.bottom-note>span:last-child{display:none}#target-card{top:72px;width:190px}#toast{max-width:94%;white-space:normal;width:max-content;font-size:11px}.wallet{margin-bottom:7px}dialog{padding:20px}.item{gap:7px}.item button{padding:8px}.item>span.item-icon{width:30px}.stats-grid{gap:5px}.stats-grid>div{padding:10px}}

/* Repeated game-button taps stay separate activations instead of browser
   double-tap zoom. Keep native panning/pinch zoom and the existing click path;
   do not apply to the page, canvas, scrollers, or text/range inputs. */
#game-ui button,#modal button{touch-action:manipulation}
