button:disabled{opacity:.45;cursor:default}
/* Native login screen: init 0x542cc0, draw 0x5450b0, 800x600 scaled by --nl-scale (character-lobby.js).
   Panel newidpass-00-01/-00-02 at (258,60)/(258,316); black back.tga quads at alpha .4 behind it; the hover state of
   each button is the same rectangle of newidpass-01-01/-01-02; account/password text boxes 0x183,0x8e / 0x183,0xa9. */
#login-dialog{position:fixed;inset:auto;left:var(--nl-viewport-left,0px);top:var(--nl-viewport-top,0px);width:var(--nl-viewport-width,100vw);height:var(--nl-viewport-height,100dvh);max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;color:#fff;overflow:hidden;font:12px/14px "MingLiU","PMingLiU",monospace}
#login-dialog::backdrop{background:transparent}
.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.dialog-heading h2{margin:0;font-size:23px;font-weight:500}.dialog-heading button{padding:8px}
.nlogin-stage{position:absolute;left:50%;top:var(--nl-login-center-y,50%);width:800px;height:600px;transform:translate(-50%,-50%) scale(var(--nl-scale,1))}
.nlogin-stage>*,#server-login>*{position:absolute;margin:0;padding:0;border:0;box-sizing:border-box}
.nlogin-hidden{width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.nlogin-shade{background:#000;opacity:.4}.nlogin-shade1{left:285px;top:103px;width:220px;height:129px}.nlogin-shade2{left:285px;top:236px;width:220px;height:227px}
.nlogin-panel{width:256px;height:256px;left:258px;image-rendering:pixelated}.nlogin-panel1{top:60px;background:url(../assets/ui/login/newidpass-00-01.png)}.nlogin-panel2{top:316px;background:url(../assets/ui/login/newidpass-00-02.png)}
#server-login{inset:0}
#server-login input{left:387px;width:106px;height:16px;background:transparent;color:#fff;font:12px/16px "MingLiU","PMingLiU",monospace;outline:none;caret-color:#fff}
#server-account{top:142px}#server-password{top:169px}
.nlogin-btn{background:transparent no-repeat;color:transparent;font-size:0;cursor:pointer;image-rendering:pixelated}
.nlogin-btn[aria-disabled="true"]{cursor:default}
#server-submit{left:356px;top:190px;width:77px;height:32px}#server-submit:hover:not(:disabled){background-image:url(../assets/ui/login/newidpass-01-01.png);background-position:-98px -130px}
#login-join{left:349px;top:259px;width:91px;height:26px}#login-join:hover{background-image:url(../assets/ui/login/newidpass-01-01.png);background-position:-91px -199px}
#login-site{left:349px;top:289px;width:91px;height:26px}#login-site:hover{background-image:url(../assets/ui/login/newidpass-01-01.png);background-position:-91px -229px}
#login-option{left:349px;top:319px;width:91px;height:26px}#login-option:hover{background-image:url(../assets/ui/login/newidpass-01-02.png);background-position:-91px -3px}
#login-story{left:349px;top:349px;width:91px;height:26px}#login-story:hover{background-image:url(../assets/ui/login/newidpass-01-02.png);background-position:-91px -33px}
#login-credit{left:349px;top:379px;width:91px;height:26px}#login-credit:hover{background-image:url(../assets/ui/login/newidpass-01-02.png);background-position:-91px -63px}
#close-login{left:349px;top:409px;width:91px;height:26px}#close-login:hover{background-image:url(../assets/ui/login/newidpass-01-02.png);background-position:-91px -93px}
#server-message{left:258px;top:470px;width:256px;text-align:center;white-space:pre-wrap;overflow-wrap:anywhere;text-shadow:1px 1px 0 #000}
#server-characters[hidden]{display:none}
#entry-open.nlogin-logo{position:fixed;left:50%;top:50%;width:166px;height:62px;transform:translate(-50%,-50%) scale(var(--nl-scale,1));padding:0;border:0;background:url(../assets/ui/login/newidpass-00-01.png) 0 0 no-repeat;color:transparent;font-size:0;cursor:pointer;image-rendering:pixelated}
body:is(:has(#login-dialog[open]),:has(#character-lobby:not([hidden]))) #entry-open{visibility:hidden}
#combat-panel{position:fixed;top:30px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:24px;min-width:210px;padding:10px 18px;background:linear-gradient(90deg,transparent,#102226dc 15%,#102226dc 85%,transparent);border-bottom:1px solid #bd9e6655;pointer-events:none;font-size:13px;text-shadow:0 1px 3px #000}#combat-panel[hidden]{display:none}#combat-title{color:#eee2c3;flex:1}.target-vital{color:#d8b4a9;font-size:11px}.target-vital strong{color:#f1d8cb;font:14px ui-monospace,monospace;margin-left:7px}#combat-message{position:fixed;bottom:210px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 32px);padding:8px 16px;background:#102226cc;color:#f1d8b0;font-size:12px;pointer-events:none}#combat-message:empty{display:none}@media(max-width:700px){#combat-panel{top:14px;min-width:160px;gap:12px;padding:9px 12px}}
.item-icon{display:inline-block;width:32px;height:32px;min-width:32px;background-repeat:no-repeat;image-rendering:pixelated}#inventory-held{font-size:12px;color:#dfd4aa}#return-held-item,#drop-held-item{font-size:12px;padding:8px;margin:0 4px 10px 0}
#player-progression{position:fixed;left:32px;bottom:215px;width:260px;padding:15px 18px;background:#142728ed;border:1px solid #c6d8c366;pointer-events:none}#player-progression[hidden]{display:none}#player-progression dl{margin:0;gap:8px}#player-progression output{font-size:11px;margin-top:12px;min-height:16px}#player-progression dd{overflow-wrap:anywhere}@media(max-width:700px){#player-progression{left:16px;bottom:240px;width:220px;padding:12px}}
#loot-panel{position:fixed;right:28px;bottom:170px;width:260px;max-height:280px;overflow:auto;background:#142728ed;border:1px solid #c6d8c366;padding:16px;box-shadow:0 15px 50px #0006}#loot-panel[hidden]{display:none}#loot-panel h2{font-size:18px;margin:0}#loot-panel p,#loot-message{font-size:11px;line-height:1.7;color:#c6d8c3}#loot-items{display:grid;gap:5px}#loot-items button{display:flex;align-items:center;gap:10px;text-align:left;padding:6px 8px;border:1px solid #c6d8c344}#loot-message{display:block;margin-top:8px}
#entity-labels,#ground-labels{position:fixed;inset:0;pointer-events:none;overflow:hidden}.entity-name{position:absolute;top:0;left:0;white-space:nowrap;color:rgb(177,255,93);font-size:12px;line-height:1.4;text-shadow:0 1px 2px #000,1px 0 3px #000,-1px 0 3px #000;pointer-events:none}.entity-name.targeted,.entity-name.hovered{color:#ffcf66;font-weight:700}.entity-name.defeated{opacity:.5}.entity-name[hidden],.ground-label[hidden]{display:none}.ground-label{position:absolute;top:0;left:0;pointer-events:auto;padding:3px 7px;font-size:11px;color:#ffe096;background:#18251acc;border:1px solid #ccae5755;text-shadow:0 1px 2px #000}.ground-label:hover{color:#fff4c0;background:#443b20e8;border-color:#ffe096}#world-tooltip{position:fixed;max-width:230px;padding:9px 12px;background:#121d20ed;border:1px solid #c9ac6b88;color:#f6e3bd;font-size:12px;line-height:1.8;white-space:pre-line;pointer-events:none;box-shadow:0 4px 14px #0005}#world-tooltip[hidden]{display:none}
body:not([data-in-world="true"]) :is(#entity-labels,#ground-labels,#world-tooltip){display:none}
.entity-name{pointer-events:auto;padding:0 3px;border:0;background:transparent;cursor:pointer;font-family:inherit}.entity-name:hover,.entity-name:focus-visible{color:#ffcf66;background:transparent;outline-color:#ffcf66}
#npc-dialogue[hidden],#quest-log[hidden],#quest-box[hidden]{display:none}
#quest-log,#quest-box{position:fixed;z-index:15;right:24px;top:300px;width:230px;max-height:32vh;overflow:auto;padding:12px 16px;background:#122b2bdc;color:#ece9dc;border:1px solid #82947c}#quest-log h2,#quest-box h2{font-size:15px;margin:0 0 10px}#quest-log p{white-space:pre-wrap;font-size:12px;line-height:1.7}#quest-log summary{font-size:13px;cursor:pointer}#quest-box{top:auto;bottom:160px}#quest-box p{font-size:13px}

#combat-effects{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:12}.combat-number{position:absolute;left:0;top:0;color:#fff0a2;font:800 23px/1 Georgia,serif;text-shadow:0 2px 1px #241806,1px 0 2px #241806,-1px 0 2px #241806;will-change:transform,opacity}.combat-number.self-damage{color:#ff8c7e;font-size:20px}.combat-number.heal{color:#91f5ac;font-size:20px}.combat-number[hidden]{display:none}

#combat-sound{padding:6px 10px;font-size:11px;color:#e8dfbc;border:1px solid #a69b6b88;background:#173031bf;margin-left:auto}#combat-sound[aria-pressed="false"]{opacity:.65}

.health-bar{--hp:0;--hp-trail:0;--health-color:#ce3937;display:block;font-variant-numeric:tabular-nums}
.health-track{display:block;position:relative;height:9px;overflow:hidden;background:#110d0ee8;border:1px solid #080a0b;box-shadow:0 0 0 1px #e1ceb040,inset 0 1px 3px #0008}
.health-fill,.health-trail{position:absolute;inset:0 auto 0 0;width:calc(var(--hp)*100%);background:linear-gradient(#ee6b56,var(--health-color) 48%,#8c171e);transition:width 100ms linear}
.health-trail{width:calc(var(--hp-trail)*100%);background:#f4ca87;transition:width 280ms ease-out}
.health-value{display:block;color:#fff4e5;text-shadow:0 1px 2px #000;font:11px/1.4 system-ui,sans-serif;text-align:center}
.health-bar[data-health=unknown] .health-track{background:repeating-linear-gradient(120deg,#3c3536 0 5px,#292526 5px 10px)}
.health-bar[data-health=dead] .health-track{background:#171519}.health-bar[data-health=low]{--health-color:#e0182e}
.health-hit .health-track{animation:health-impact 450ms ease-out}.health-bar[data-health=low] .health-value{color:#ffb1a6;font-weight:700}
@keyframes health-impact{0%{box-shadow:0 0 0 2px #ffc5b8,0 0 18px #f43939}100%{box-shadow:0 0 0 1px #e1ceb040}}
.player-health{position:fixed;top:94px;left:24px;width:282px;padding:10px 13px 12px;background:linear-gradient(100deg,#15201ff2,#182724df);border:1px solid #d0b78b70;border-left:3px solid #ca9c59;box-shadow:0 3px 12px #0006;pointer-events:none}
.player-health[hidden]{display:none}.health-heading{display:flex;align-items:baseline;gap:10px;margin-bottom:7px;color:#d9c8ad;font:12px system-ui,sans-serif}
.health-heading strong{color:#fff5e5;font:700 24px/1.1 system-ui,sans-serif;letter-spacing:.3px}.health-heading .health-value{margin-left:auto;font-size:12px;color:#cfc4b5}
.player-health .health-track{height:16px}.player-health[data-health=low]{border-color:#e36858;box-shadow:0 0 16px #cc24244d}.player-health[data-health=dead] .health-heading strong{color:#ff8f82}
.entity-name{min-width:90px;text-align:center}.entity-health{width:76px;margin:3px auto 0}.entity-health .health-track{height:6px}.entity-health .health-value{font-size:10px;line-height:1.2}
.entity-name.targeted .entity-health{width:96px}.entity-name.targeted .health-track{height:8px;box-shadow:0 0 0 1px #f2c367}.entity-name.defeated .entity-health{display:none}
#combat-panel{top:78px;display:block;width:248px;min-width:0;padding:8px 14px 9px;background:linear-gradient(90deg,transparent,#14201ce8 12%,#14201ce8 88%,transparent);border:0;text-align:center}
#combat-title{display:block;margin-bottom:7px;color:#ffdf9a;font-weight:700}#target-health .health-track{height:10px}#target-health .health-value{margin-top:3px}
body:has(#player-health:not([hidden])) .scene-title{top:180px}body:has(#player-health:not([hidden])) .scene-title h1{font-size:24px}body:has(#player-health:not([hidden])) .scene-title p,body:has(#player-health:not([hidden])) #loading{display:none}
@media(max-width:700px){.player-health{left:12px;top:76px;width:208px;padding:8px 10px}.health-heading strong{font-size:21px}.health-heading{gap:6px}.health-heading .health-value{font-size:10px}#combat-panel{top:158px;width:200px}body:has(#player-health:not([hidden])) .scene-title{top:162px;left:16px}.entity-health{width:66px}}
@media(prefers-reduced-motion:reduce){.health-fill,.health-trail{transition:none}.health-hit .health-track{animation:none}}

#death-recovery{position:fixed;z-index:40;left:50%;top:50%;transform:translate(-50%,-50%);width:min(340px,85vw);padding:28px;text-align:center;background:rgba(13,33,31,.96);border:1px solid #c7b784;box-shadow:0 12px 55px #0009;color:#eee9d6}
#death-recovery[hidden]{display:none}#death-recovery h2{font-size:24px;letter-spacing:3px;margin:0 0 16px}#death-recovery p{line-height:1.7;font-size:14px}#recover-character{padding:12px 24px;background:#d1d9bc;color:#162c28;border:0;cursor:pointer}#recover-character:disabled{opacity:.55;cursor:wait}

#quest-box-items>div{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:.4rem 0}#quest-box-items button{white-space:nowrap}

#quest-box-items>div{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:.4rem 0}#quest-box-items button{white-space:nowrap}

#quickbar{position:fixed;bottom:64px;left:50%;transform:translateX(-50%);display:flex;align-items:flex-end;gap:5px;padding:6px 8px;background:#102226cc;border:1px solid #bd9e6655;border-radius:4px;z-index:5}#quickbar[hidden]{display:none}.quick-slot{position:relative;width:42px;height:42px;padding:4px;background:#0b1719;border:1px solid #5d6f68;border-radius:3px;color:#f1d8b0;cursor:pointer}.quick-slot.reserve{width:32px;height:32px;padding:0;opacity:.75}.quick-slot.reserve:first-of-type,.quick-slot:nth-child(5){margin-left:10px}.quick-slot.occupied{border-color:#bd9e66}.quick-slot:disabled{cursor:default}.quick-slot.occupied:disabled{opacity:.55}.quick-slot .item-icon{display:block;margin:auto}.quick-slot.reserve .item-icon{transform:scale(.8)}.quick-slot kbd{position:absolute;left:2px;top:0;font:10px ui-monospace,monospace;color:#d8c89e;text-shadow:0 1px 2px #000}@media(max-width:700px){#quickbar{bottom:96px}.quick-slot{width:38px;height:38px}}

@media(pointer:coarse){#server-login input{font-size:16px}}
.entity-stall{display:block;color:#7fe3ff;font-weight:700;text-shadow:0 1px 2px #000,1px 0 3px #000,-1px 0 3px #000}
/* 0x598920: actor +0x2CE (record +0x0F bit 7 / 0C69) draws the name and [HERO] prefix in RGB(255,20,20); crime does not recolour. */
.entity-name.red-name,.entity-name.red-name:hover{color:rgb(255,20,20)}
