

:root {
--ink-0: #0c0f13;
--ink-1: #14181e;
--ink-2: #1c222a;
--ink-3: #27303a;
--line: rgba(224, 184, 98, 0.22);
--line-strong: rgba(224, 184, 98, 0.55);
--text: #e9e4d8;
--text-dim: #a59e8f;
--gold: #e0b862;
--gold-deep: #b48a3c;
--jade: #5fb8a2;
--cinnabar: #d0573f;
--sky: #6fb7ff;
--warn: #e6a23c;
--glass: rgba(16, 20, 26, 0.72);
--radius: 10px;
--shadow: 0 12px 40px rgba(0, 0, 0, 0.45);
--font: "Segoe UI", "Noto Sans", "Helvetica Neue", Arial, "Microsoft YaHei", sans-serif;
--font-title: "Noto Serif", "Times New Roman", "SimSun", serif;
--mono: Consolas, "Cascadia Mono", "Courier New", monospace;
}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: var(--ink-0); color: var(--text); font: var(--fs-md)/1.45 var(--font); overflow: hidden; }
button, input, select { font: inherit; color: inherit; }
.hidden { display: none !important; }

#app { position: fixed; inset: 0; }
#stage { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 35%, #1f2731 0%, var(--ink-0) 70%); }
.stage-canvas { display: block; width: 100%; height: 100%; outline: none; cursor: default; }


html[data-ui="desktop"] body, #login.screen, #roles.screen { cursor: default; }
.stage-canvas[data-cur="speak"] { cursor: pointer; }
.stage-canvas[data-cur="attack"] { cursor: pointer; }
.stage-canvas[data-cur="hand"] { cursor: pointer; }
.stage-canvas[data-cur="flower"] { cursor: pointer; }
.stage-canvas[data-cur="mine"] { cursor: pointer; }
.stage-canvas[data-cur="quest"] { cursor: pointer; }
.stage-canvas[data-cur="search"] { cursor: pointer; }
.stage-canvas[data-cur="read"] { cursor: pointer; }
.stage-canvas[data-cur="grab"] { cursor: grabbing; }
.stage-canvas.tg-picking, .stage-canvas.tg-picking[data-cur] { cursor: crosshair; }
#ui { position: absolute; inset: 0; pointer-events: none; }
#ui > * { pointer-events: auto; }
#hud { pointer-events: none; position: absolute; inset: 0; }
#hud > * { pointer-events: auto; }
#hud > .app-status, #hud > .toasts, #hud > .hud-debug, #hud > .hud-help { pointer-events: none; }


.screen {
position: absolute; inset: 0; display: grid; place-items: center;
background:
radial-gradient(ellipse at 50% 120%, rgba(95, 184, 162, 0.10), transparent 60%),
linear-gradient(180deg, rgba(12, 15, 19, 0.55), rgba(12, 15, 19, 0.85));
}
.card {
width: min(400px, calc(100vw - 32px));
background: var(--sf-panel);
border: 1px solid var(--ln-1);
border-radius: var(--r-l);
box-shadow: var(--elev-3), inset 0 1px 0 rgba(255, 255, 255, 0.04);
padding: 26px 28px 22px;
position: relative; color: var(--tx-1);
}
.card::before {
content: ""; position: absolute; left: 22px; right: 22px; top: 0; height: 2px;
background: linear-gradient(90deg, transparent, var(--ac), transparent); opacity: 0.7;
}
.roles-card { width: min(560px, calc(100vw - 32px)); }
.brand { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.brand-mark {
width: 52px; height: 52px; border-radius: 12px; display: grid; place-items: center; color: var(--ac);
background: radial-gradient(circle at 30% 30%, #2b333d, #161a20); border: 1px solid var(--ln-ac);
}
.brand-mark .k-ico { width: 30px; height: 30px; stroke-width: 1.6; }

.brand-mark { background: url(/home/logo-360.webp) center / 84% no-repeat, radial-gradient(circle at 30% 30%, #2b333d, #161a20); }
.brand-mark .k-ico { display: none; }
.brand h1 { margin: 0; font: 600 var(--fs-2xl)/1.2 var(--font-title); letter-spacing: 0.5px; color: var(--tx-1); }
.brand .sub { margin: 2px 0 0; color: var(--tx-2); font-size: var(--fs-sm); }
h2 { margin: 0 0 14px; font: 600 var(--fs-xl)/1.3 var(--font-title); color: var(--tx-1); }

.login-form { display: grid; gap: 6px; }
.login-form label { color: var(--tx-2); font-size: var(--fs-sm); margin-top: 6px; }

.login-form label.check { display: flex; align-items: center; gap: 10px; min-height: 40px; color: var(--tx-1); font-size: var(--fs-md); margin-top: 8px; cursor: pointer; }
.login-form label.check .check-t { display: flex; flex-direction: column; line-height: 1.3; }
.login-form label.check small { color: var(--tx-2); font-size: var(--fs-sm); }
input.k-check { -webkit-appearance: none; appearance: none; position: relative; flex: none; width: max(44px, 2.75rem); height: max(24px, 1.5rem); margin: 0; border-radius: var(--r-pill);
background: var(--sf-sunken); border: 1px solid var(--ln-field); cursor: pointer; transition: background var(--dur-fast) var(--ease); }
input.k-check::after { content: ""; position: absolute; left: 3px; top: 50%; width: 1rem; height: 1rem; margin-top: -.5rem; border-radius: 50%;
background: var(--tx-3); transition: transform var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease); }
input.k-check:checked { background: var(--ac-2); border-color: var(--ac-2); }
input.k-check:checked::after { transform: translateX(calc(max(44px, 2.75rem) - 1rem - 8px)); background: var(--tx-1); }
html:not([data-ui="desktop"]) input.k-check::before { content: ""; position: absolute; left: -4px; right: -4px; top: calc(50% - 22px); bottom: calc(50% - 22px); }
input.k-check:focus-visible { outline: 2px solid var(--ac); outline-offset: 2px; }
input[type="text"], input[type="password"] {
width: 100%; min-height: 40px; padding: 9px 11px; border-radius: var(--r-s); border: 1px solid var(--ln-field);
background: var(--sf-sunken); color: var(--tx-1); outline: none; transition: border-color .15s, box-shadow .15s;
}
input[type="text"]:focus, input[type="password"]:focus { border-color: var(--ac); box-shadow: 0 0 0 3px rgba(224, 184, 98, 0.18); }
input:disabled { opacity: 0.6; }
input[type="checkbox"]:not(.k-check) { accent-color: var(--ac); width: 18px; height: 18px; }
details.adv { margin-top: 8px; border-top: 1px dashed var(--ln-1); padding-top: 4px; }
details.adv summary { display: flex; align-items: center; min-height: 36px; cursor: pointer; color: var(--tx-2); font-size: var(--fs-sm); }
details.adv label { display: block; }
.hint { margin: 4px 0 0; color: var(--tx-2); font-size: var(--fs-sm); }

.login-form .btn.primary { margin-top: 12px; }
.btn.small { font-size: var(--fs-sm); }
.row-actions { display: flex; justify-content: space-between; gap: 10px; margin-top: 14px; }
.row-actions .btn.primary { margin-top: 0; min-width: 140px; }

.form-msg { min-height: 20px; margin-top: 10px; font-size: var(--fs-md); color: var(--tx-2); white-space: pre-wrap; }
.form-msg:empty { min-height: 0; margin-top: 0; }
.form-msg.error { color: var(--st-danger); }
.form-msg.info { color: var(--ac-2); }

html:has(.mb-lost) #login .form-msg.error { visibility: hidden; }

.role-list { list-style: none; margin: 0; padding: 4px; max-height: min(52vh, 420px); overflow: auto; border: 1px solid var(--ln-1); border-radius: var(--r-m); background: var(--sf-sunken); outline: none; }
.role-list:focus-visible { border-color: var(--ac); }
.role { display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto; column-gap: 12px; min-height: 44px; padding: 10px 12px; border-radius: var(--r-s); cursor: pointer; border: 1px solid transparent; }
.role + .role { margin-top: 4px; }
.role.sel { background: var(--sf-selected); border-color: var(--ln-ac); box-shadow: inset 3px 0 0 var(--ac); }
.role-name { font: 600 var(--fs-lg)/1.3 var(--font-title); color: var(--tx-1); }
.role-meta { grid-column: 1; color: var(--tx-2); font-size: var(--fs-sm); }
.role-map { grid-column: 2; grid-row: 1 / span 2; align-self: center; color: var(--ac-2); font-size: var(--fs-sm); }
.role-map:empty { display: none; }
.role-list .empty { padding: 18px; color: var(--tx-2); }

html:not([data-ui="desktop"]) input[type="text"], html:not([data-ui="desktop"]) input[type="password"] { min-height: 48px; }
html:not([data-ui="desktop"]) .login-form label.check { min-height: 48px; }
html:not([data-ui="desktop"]) details.adv summary { min-height: 44px; }
html:not([data-ui="desktop"]) .role { min-height: 52px; }
html:not([data-ui="desktop"]) .row-actions .btn { flex: 1; min-height: 52px; }
html:not([data-ui="desktop"]) .row-actions .btn:not(.primary) { flex: 0 1 auto; }

.panel-glass { background: var(--glass); border: 1px solid var(--line); border-radius: var(--radius); backdrop-filter: blur(6px); box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35); }
.hud-self { position: absolute; left: 14px; top: 14px; display: flex; gap: 12px; padding: 10px 14px 10px 10px; min-width: 260px; }
.avatar { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; font: var(--fs-2xl)/1 var(--font-title); color: var(--gold); border: 2px solid var(--gold-deep); background: radial-gradient(circle at 35% 30%, #303a45, #12161b); }
.self-body { flex: 1; min-width: 0; }
.self-name { font: 600 16px/1.2 var(--font-title); color: #f6efdd; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.self-meta { font-size: var(--fs-sm); color: var(--text-dim); min-height: 16px; }
.bar { position: relative; height: 12px; margin-top: 5px; border-radius: 6px; background: #2a1414; border: 1px solid rgba(0, 0, 0, 0.6); overflow: hidden; }
.bar-fill { position: absolute; inset: 0 auto 0 0; width: 100%; background: linear-gradient(180deg, #e2604a, #a3301f); transition: width .25s; }
.bar-fill.low { background: linear-gradient(180deg, #ff7a5c, #c0281a); }
.bar-text { position: absolute; inset: 0; text-align: center; font: 600 var(--fs-xs)/12px var(--font); color: #fff; text-shadow: 0 1px 1px #000; }
@keyframes pulse { to { filter: brightness(1.35); } }

.hud-info { position: absolute; right: 14px; top: 14px; padding: 10px 14px; min-width: 250px; text-align: right; }
.map-name { font: 600 var(--fs-xl)/1.25 var(--font-title); color: var(--gold); }
.coords { font: var(--fs-sm)/1.4 var(--mono); color: var(--text); white-space: pre; margin-top: 3px; opacity: 0.9; }
.net-row { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 6px; font-size: var(--fs-sm); color: var(--text-dim); }
.dot { width: 9px; height: 9px; border-radius: 50%; background: #666; box-shadow: 0 0 6px currentColor; }
.dot.ok { background: var(--jade); color: var(--jade); }
.dot.wait { background: var(--warn); color: var(--warn); }
.dot.bad { background: var(--cinnabar); color: var(--cinnabar); }
.dot.warn { background: var(--gold); color: var(--gold); }
.dot.off { background: #555; color: transparent; }
.ping { font-family: var(--mono); }
.ping.good { color: var(--jade); } .ping.mid { color: var(--warn); } .ping.bad { color: var(--cinnabar); }

.app-status { position: absolute; top: 14px; left: 50%; transform: translateX(-50%); padding: 6px 14px; border-radius: 20px; background: var(--glass); border: 1px solid var(--line); font-size: var(--fs-md); color: var(--gold); white-space: nowrap; max-width: calc(100vw - 32px); overflow: hidden; text-overflow: ellipsis; }
.app-status:empty { display: none; }

.toasts { position: absolute; top: 56px; left: 50%; transform: translateX(-50%); display: grid; gap: 6px; justify-items: center; width: min(560px, calc(100vw - 32px)); }
.toast { padding: 8px 14px; border-radius: 8px; background: var(--glass); border: 1px solid var(--line); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35); font-size: var(--fs-md); transition: opacity .4s, transform .4s; }
.toast.error { border-color: rgba(208, 87, 63, 0.7); color: #ffb3a3; }
.toast.warn { border-color: rgba(230, 162, 60, 0.6); color: #ffd99a; }
.toast.out { opacity: 0; transform: translateY(-6px); }

.hud-debug { position: absolute; right: 14px; top: 128px; margin: 0; padding: 10px 12px; max-width: min(620px, calc(100vw - 32px)); font: var(--fs-sm)/1.5 var(--mono); color: #cfe9df; background: rgba(8, 11, 14, 0.82); border: 1px solid rgba(95, 184, 162, 0.35); border-radius: 8px; white-space: pre-wrap; }
.hud-help { position: absolute; right: 14px; bottom: 12px; font-size: var(--fs-xs); color: var(--text-dim); background: rgba(12, 15, 19, 0.55); padding: 4px 10px; border-radius: 6px; max-width: calc(100vw - 480px); text-align: right; }


.chat { position: absolute; left: 14px; bottom: 12px; width: min(440px, calc(100vw - 28px)); display: flex; flex-direction: column; gap: 6px; }
.chat-log { height: 190px; overflow-y: auto; padding: 8px 10px; border-radius: var(--radius); background: rgba(10, 13, 17, 0.45); border: 1px solid transparent; font-size: var(--fs-md); line-height: 1.5; scrollbar-width: thin; transition: background .2s, border-color .2s; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.9); }
.chat.active .chat-log { background: var(--glass); border-color: var(--line); }
.chat-line { word-break: break-word; }
.chat-line .who { color: var(--gold); }
.chat-line .txt { color: var(--text); }
.chan { display: inline-block; font-size: var(--fs-xs); padding: 0 5px; margin-right: 5px; border-radius: 4px; background: rgba(255, 255, 255, 0.08); color: var(--text-dim); vertical-align: 1px; }
.chan.near { color: #e9e4d8; } .chan.world { color: #f3c96b; } .chan.team { color: #7fc3ff; } .chan.whisper { color: #e58fd6; }
.chan.sys { color: var(--warn); } .chan.npc { color: #9fdc9a; } .chan.force, .chan.camp, .chan.guild { color: #9fb6ff; } .chan.map { color: #c6b6ff; }
.chat-line.error .txt { color: #ffb3a3; }
.chat-bar { display: flex; align-items: center; gap: 6px; padding: 4px 6px; border-radius: 8px; background: rgba(10, 13, 17, 0.5); border: 1px solid transparent; opacity: 0.7; transition: opacity .15s, border-color .15s; }
.chat.active .chat-bar { opacity: 1; border-color: var(--line-strong); background: var(--glass); }
.chat-input { flex: 1; border: none !important; background: transparent !important; box-shadow: none !important; padding: 6px 4px !important; }

.noscript { position: fixed; inset: 0; display: grid; place-items: center; color: var(--gold); }


@media (max-width: 1100px) {
.hud-help { display: none; }
.hud-self { min-width: 220px; }
.hud-info { min-width: 210px; }
.chat-log { height: 150px; }
}
@media (max-height: 700px) {
.chat-log { height: 130px; }
}






@media (hover: hover) {
.btn:hover:not(:disabled) { border-color: var(--line-strong); }
.btn.primary:hover:not(:disabled) { background: linear-gradient(180deg, #f2d48c, #c39643); }
.role:hover { background: var(--ink-2); }
.chat:hover .chat-log { background: var(--glass); border-color: var(--line); }
}


html, body { overscroll-behavior: none; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
#stage, .stage-canvas { touch-action: none; }
#ui { user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; }
button, .btn, .role, summary, label.check { touch-action: manipulation; }
input, textarea, select { font-size: 16px; user-select: text; -webkit-user-select: text; }
html[data-ui="desktop"] .chat-log { user-select: text; -webkit-user-select: text; }





html.in-game, html.in-game body, html.in-game #app, html.in-game #ui, html.in-game #hud { touch-action: none; }
:where(html.in-game #ui *) { touch-action: pan-x pan-y; }
html.in-game body { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
html.in-game :is(input, textarea, [contenteditable="true"]) { -webkit-user-select: text; user-select: text; -webkit-touch-callout: default; }
.screen {
overflow: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
place-items: safe center; align-items: safe center;
padding: var(--st, 8px) var(--sr, 12px) var(--sb, 8px) var(--sl, 12px);
}

@media (max-height: 520px) {
.card { padding: 14px 20px 12px; }
.brand { margin-bottom: 8px; gap: 10px; }
.brand-mark { width: 40px; height: 40px; font-size: 24px; }
.brand h1 { font-size: var(--fs-xl); }
.login-form label { margin-top: 2px; }
.login-form label.check { margin-top: 6px; }
input[type="text"], input[type="password"] { padding: 7px 10px; }
.btn.primary { margin-top: 8px; }
.form-msg { min-height: 16px; margin-top: 6px; }
h2 { margin-bottom: 8px; }
.role-list { max-height: min(46vh, 420px); }
}






#login.screen, #roles.screen {
background:
linear-gradient(90deg, rgba(8, 11, 14, .30) 0%, rgba(8, 11, 14, .40) 42%, rgba(8, 11, 14, .82) 66%, rgba(8, 11, 14, .92) 100%),
linear-gradient(180deg, rgba(8, 11, 14, .55) 0%, rgba(8, 11, 14, .05) 26%, rgba(8, 11, 14, .10) 70%, rgba(8, 11, 14, .80) 100%),
url("../home/hero-1440.webp") 38% 50% / cover no-repeat, #0c0f13;
}
@media (max-width: 900px) and (orientation: landscape) {
#login.screen, #roles.screen { background-image:
linear-gradient(90deg, rgba(8, 11, 14, .30) 0%, rgba(8, 11, 14, .45) 40%, rgba(8, 11, 14, .86) 62%, rgba(8, 11, 14, .94) 100%),
linear-gradient(180deg, rgba(8, 11, 14, .5) 0%, rgba(8, 11, 14, .05) 30%, rgba(8, 11, 14, .1) 70%, rgba(8, 11, 14, .8) 100%),
url("../home/hero-1080.webp"); }
}
@media (min-width: 1700px) {
#login.screen, #roles.screen { background-image:
linear-gradient(90deg, rgba(8, 11, 14, .30) 0%, rgba(8, 11, 14, .40) 42%, rgba(8, 11, 14, .82) 66%, rgba(8, 11, 14, .92) 100%),
linear-gradient(180deg, rgba(8, 11, 14, .55) 0%, rgba(8, 11, 14, .05) 26%, rgba(8, 11, 14, .10) 70%, rgba(8, 11, 14, .80) 100%),
url("../home/hero-1920.webp"); }
}
@media (orientation: portrait) {
#login.screen, #roles.screen { background:
linear-gradient(180deg, rgba(8, 11, 14, .35) 0%, rgba(8, 11, 14, .55) 40%, rgba(8, 11, 14, .88) 75%, #0c0f13 100%),
url("../home/hero-p-780.webp") 50% 30% / cover no-repeat, #0c0f13; }
}

#login .card, #roles .card {
background: linear-gradient(180deg, rgba(20, 26, 32, .94), rgba(12, 16, 20, .96));
border: 1px solid rgba(224, 184, 98, .30);
box-shadow: 0 30px 80px rgba(0, 0, 0, .6), inset 0 1px 0 rgba(255, 255, 255, .05);
}
#login .card::after, #roles .card::after {
content: ""; position: absolute; inset: 7px; border-radius: calc(var(--r-l) - 5px); pointer-events: none; opacity: .55;
background:
linear-gradient(var(--ac), var(--ac)) top left / 14px 1px no-repeat, linear-gradient(var(--ac), var(--ac)) top left / 1px 14px no-repeat,
linear-gradient(var(--ac), var(--ac)) top right / 14px 1px no-repeat, linear-gradient(var(--ac), var(--ac)) top right / 1px 14px no-repeat,
linear-gradient(var(--ac), var(--ac)) bottom left / 14px 1px no-repeat, linear-gradient(var(--ac), var(--ac)) bottom left / 1px 14px no-repeat,
linear-gradient(var(--ac), var(--ac)) bottom right / 14px 1px no-repeat, linear-gradient(var(--ac), var(--ac)) bottom right / 1px 14px no-repeat;
}
#login .login-card { width: min(420px, calc(100vw - 32px)); padding: 30px 32px 24px; }
#roles .roles-card { width: min(560px, calc(100vw - 32px)); padding: 28px 30px 22px; }
#login input[type="text"], #login input[type="password"] { min-height: 46px; padding: 10px 14px; background: rgba(8, 11, 14, .72); }
#login .login-form label { color: var(--tx-2); font-weight: 600; }
#login .btn.primary { min-height: 52px; font-size: var(--fs-lg); letter-spacing: .02em; box-shadow: 0 8px 24px rgba(224, 184, 98, .18); }
#roles .role-list { background: rgba(8, 11, 14, .6); }
#roles .roles-head h2 { font-size: var(--fs-2xl); }


@media (orientation: landscape) and (min-width: 700px) {
#login.screen, #roles.screen { justify-items: end; padding-right: max(var(--sr, 12px), clamp(20px, 7vw, 140px)); }
#login.screen::before, #roles.screen::before, #login.screen::after, #roles.screen::after {
position: absolute; left: max(var(--sl, 12px), clamp(24px, 7vw, 132px)); max-width: calc(100% - min(560px, 50vw) - 16vw); pointer-events: none; }
#login.screen::before, #roles.screen::before {

content: ""; width: clamp(150px, 19vw, 300px); aspect-ratio: 1213 / 1179; top: auto; bottom: calc(50% - clamp(4px, 1.4vw, 22px) + 6px);
margin-left: clamp(-14px, -1vw, -6px);
background: url(/home/logo.webp) left bottom / contain no-repeat;
filter: drop-shadow(0 6px 22px rgba(0, 0, 0, .7)); }
#login.screen::after, #roles.screen::after {
content: "Kiếm Hiệp Tình Duyên III · máy chủ 2018"; top: calc(50% + clamp(4px, 1.4vw, 22px));
padding-top: 14px; border-top: 1px solid rgba(224, 184, 98, .5); color: var(--tx-1);
font: 600 clamp(14px, 1.45vw, 22px)/1.35 var(--font); letter-spacing: .06em; text-transform: uppercase; text-shadow: 0 2px 10px rgba(0, 0, 0, .8); }
#login .brand { display: none; }
#login .login-form::before { content: "Đăng nhập"; margin: 0 0 10px; color: var(--tx-1); font: 600 var(--fs-2xl)/1.2 var(--font-title); }
}

@media (orientation: landscape) and (min-width: 700px) and (max-height: 520px) {
#login.screen::before, #roles.screen::before { width: clamp(120px, 17vh + 8vw, 200px); }
}
@media (orientation: landscape) and (max-height: 520px) {
#login .login-card { padding: 16px 22px 12px; }
#roles .roles-card { padding: 16px 20px 12px; }
#login .login-form::before { content: none; }
#login .login-form label { margin-top: 0; }
#login .login-form label.check { margin-top: 2px; min-height: 44px; }
#login.screen::before, #roles.screen::before { top: auto; bottom: calc(50% - 2px); }
#login.screen::after, #roles.screen::after { top: calc(50% + 6px); padding-top: 10px; font-size: 13px; }
#login input[type="text"], #login input[type="password"] { min-height: 44px; padding: 8px 12px; }
}

@media (orientation: portrait) {
#login.screen, #roles.screen { align-items: end; padding-bottom: max(var(--sb, 8px), 24px); }
#login .brand { flex-direction: column; text-align: center; gap: 6px; margin-bottom: 14px; }
#login .brand-mark { width: 132px; height: 128px; border: 0; background: url(/home/logo-360.webp) center / contain no-repeat;
filter: drop-shadow(0 4px 16px rgba(0, 0, 0, .6)); }

#login .brand h1 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}



@media (orientation: landscape) and (min-width: 700px) {
#login.screen { --card-w: min(420px, calc(100vw - 32px)); }
#roles.screen { --card-w: min(560px, calc(100vw - 32px), max(420px, 54vw)); }
#roles .roles-card { width: var(--card-w); }
#login.screen::before, #roles.screen::before, #login.screen::after, #roles.screen::after {
max-width: calc(100vw - var(--card-w) - max(var(--sr, 12px), clamp(20px, 7vw, 140px)) - max(var(--sl, 12px), clamp(24px, 7vw, 132px)) - 28px); }
#login.screen::after, #roles.screen::after { text-wrap: balance; }
}


@media (orientation: landscape) and (max-width: 699.98px) {
#login.screen, #roles.screen { padding-left: max(var(--sl, 12px), 140px); }
#login .login-card { width: min(420px, calc(100vw - 160px)); }
#roles .roles-card { width: min(560px, calc(100vw - 160px)); }
}



@media (orientation: landscape) and (max-height: 440px) {
#roles .roles-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 10px; align-items: center;
padding-top: 12px; padding-bottom: 10px; }
#roles .roles-card > .roles-head, #roles .roles-card > .role-list, #roles .roles-card > .form-msg,
#roles .roles-card > .row-actions { grid-column: 1 / -1; }
#roles .roles-card > .role-create { grid-column: 2; grid-row: 3; width: auto; min-height: 44px; margin-top: 6px; padding: 2px 12px 2px 6px; gap: 8px; }
#roles .roles-card > :is(.am-roles-fs, .am-roles-ios) { grid-column: 1; grid-row: 3; min-width: 0; min-height: 44px; margin-top: 6px; }
#roles .role-create-ic { width: 28px; height: 28px; }
#roles .role-create .role-slots { display: none; }
#roles .roles-head h2 { font-size: var(--fs-xl); margin-bottom: 6px; }
#roles .role-list { max-height: calc(100vh - 170px); padding: 3px; scroll-padding-block: 4px; }
#roles .role, html:not([data-ui="desktop"]) #roles .role { min-height: 44px; padding: 3px 10px; }
#roles .role + .role { margin-top: 2px; }
#roles .role-name { line-height: 1.2; }
#roles .role-meta { line-height: 1.25; }
#roles .am-roles-fs small, #roles .am-roles-ios small { display: none; }
#roles .form-msg:empty { min-height: 0; margin: 0; }
#roles .row-actions { margin-top: 8px; }
html:not([data-ui="desktop"]) #roles .row-actions .btn { min-height: 46px; }
}

@media (orientation: landscape) and (max-height: 340px) {
#roles .roles-card { padding-top: 10px; padding-bottom: 8px; }
#roles .role, html:not([data-ui="desktop"]) #roles .role { padding: 2px 10px; }
#roles .role-list { max-height: calc(100vh - 160px); }
html:not([data-ui="desktop"]) #roles .row-actions .btn { min-height: 44px; }
#roles .row-actions { margin-top: 6px; }
}

.portal-bar { position: absolute; z-index: 3; left: 0; right: 0; top: 0; display: flex; align-items: center; justify-content: space-between; gap: 12px;
padding: max(var(--st, 8px), 12px) max(var(--sr, 12px), 20px) 0 max(var(--sl, 12px), 20px); pointer-events: none; }
#ui > .portal-bar { pointer-events: none; }
.portal-bar > * { pointer-events: auto; }
html:not(.v2-out) .portal-bar { display: none; }
.portal-home { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 14px 0 10px; border-radius: 999px;
border: 1px solid rgba(236, 230, 214, .22); background: rgba(8, 11, 14, .55); color: var(--tx-1); font: 600 var(--fs-sm)/1 var(--font); text-decoration: none; }
.portal-home::before { content: ""; width: 8px; height: 8px; border: solid currentColor; border-width: 0 0 2px 2px; transform: rotate(45deg); margin-left: 4px; }
.portal-srv { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; padding: 0 12px; border-radius: 999px; background: rgba(8, 11, 14, .55);
color: var(--tx-2); font-size: var(--fs-sm); }
.portal-srv::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--st-ok); box-shadow: 0 0 0 3px rgba(90, 210, 90, .2); }
.portal-srv[data-srv="offline"]::before { background: var(--st-warn); box-shadow: 0 0 0 3px rgba(230, 162, 60, .2); }
html:not([data-ui="desktop"]) .portal-home { min-height: 44px; }
@media (hover: hover) { .portal-home:hover { border-color: var(--ac); color: var(--ac); } }
@media (prefers-reduced-motion: no-preference) {
#login:not(.hidden) .card, #roles:not(.hidden) .card { animation: portal-in .5s var(--ease) both; }
}
html.reduce-motion #login .card, html.reduce-motion #roles .card { animation: none; }
@keyframes portal-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }




.form-msg.ok { color: var(--st-ok); }
.login-switch { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 0 6px; width: 100%; min-height: 44px;
margin-top: 4px; padding: 0 8px; border: 0; border-top: 1px solid var(--ln-2); border-radius: 0; background: none; color: var(--tx-2);
font: 400 var(--fs-md)/1.3 var(--font); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.login-switch b { color: var(--ac); font-weight: 700; }
.login-switch:disabled { opacity: .45; cursor: not-allowed; }
.login-switch:focus-visible { outline: 2px solid var(--ac); outline-offset: 2px; border-radius: var(--r-s); }
@media (hover: hover) { .login-switch:hover:not(:disabled) b { text-decoration: underline; text-underline-offset: 3px; } }
#login .reg-form::before { content: none; }
.reg-title { margin: 0 0 2px; font: 600 var(--fs-2xl)/1.2 var(--font-title); color: var(--tx-1); }
.reg-title:focus { outline: none; }
.reg-form .hint { margin: 0; line-height: 1.35; text-wrap: pretty; }
.reg-pair { display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; grid-template-areas: "pl" "pi" "ph" "cl" "ci" "ch"; }
.reg-pair > .rp-pl { grid-area: pl; } .reg-pair > .rp-pi { grid-area: pi; } .reg-pair > .rp-ph { grid-area: ph; }
.reg-pair > .rp-cl { grid-area: cl; } .reg-pair > .rp-ci { grid-area: ci; } .reg-pair > .rp-ch { grid-area: ch; }
#login .login-form input[aria-invalid="true"] { border-color: var(--st-danger); box-shadow: 0 0 0 3px rgba(255, 123, 102, .2); }
.reg-gift { margin: 2px 0 0; color: var(--tx-2); font-size: var(--fs-sm); line-height: 1.4; text-align: center; text-wrap: balance; }
.reg-gift .k-ico { display: inline-block; width: 16px; height: 16px; margin-right: 6px; vertical-align: -3px; color: var(--ac); }
.reg-gift b { color: var(--ac); font-weight: 700; white-space: nowrap; }

@media (orientation: portrait) and (max-height: 760px) { #login .login-card[data-mode="register"] .brand { display: none; } }
@media (orientation: landscape) and (max-height: 520px) {
#login .reg-form { gap: 4px; }
#login .reg-pair { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 4px 10px; grid-template-areas: "pl cl" "pi ci" "ph ph"; }
#login .reg-pair > .rp-ch { display: none; }

.reg-title { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
#login .reg-form .btn.primary { margin-top: 6px; }
.reg-gift { margin: 0; font-size: var(--fs-xs); }
.reg-gift .k-ico { display: none; }
.login-switch { margin-top: 0; }
}



html.v2-out #hud > :is(.l-frames, .l-tracker, .l-controls, .l-hint, .l-hudfx, .l-sheet) { visibility: hidden; }

.hud-help { display: none !important; }


html:not([data-ui="desktop"]) .panel-glass { backdrop-filter: none; background: var(--panel-strong); }
html:not([data-ui="desktop"]) .hud-self { left: var(--sl); top: var(--st); min-width: 0; width: 14.6rem; padding: .3rem .5rem .35rem .35rem; gap: .45rem; }
html:not([data-ui="desktop"]) .hud-self .avatar { width: 2.5rem; height: 2.5rem; font-size: var(--fs-2xl); border-width: 1px; }
html:not([data-ui="desktop"]) .hud-self .self-name { font-size: var(--fs-lg); }
html:not([data-ui="desktop"]) .hud-self .self-meta { font-size: var(--fs-xs); min-height: 0; }
html:not([data-ui="desktop"]) .hud-self .bar { margin-top: 3px; }
html:not([data-ui="desktop"]) .hud-info { right: var(--sr); top: var(--st); min-width: 0; max-width: 8.4rem; padding: .3rem .45rem; }
html:not([data-ui="desktop"]) .hud-info .map-name { font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
html:not([data-ui="desktop"]) .hud-info .coords { display: none; }
html:not([data-ui="desktop"]) .hud-info .net-row { gap: .3rem; margin-top: .2rem; font-size: var(--fs-xs); }
html:not([data-ui="desktop"]) .hud-info .net-row > span:nth-child(2) { display: none; }
html:not([data-ui="desktop"]) .hud-info .btn.small { min-height: 2rem; padding: 0 .55rem; }
html:not([data-ui="desktop"]) .toasts { top: calc(var(--st) + 3.6rem); }
html:not([data-ui="desktop"]) .chat {
left: calc(40vw + 8px); bottom: var(--sb); width: min(16.25rem, calc(58vw - 2rem)); gap: 3px;
}
html:not([data-ui="desktop"]) .chat-log {
height: 2.75em; padding: 2px 6px; font-size: var(--fs-xs); line-height: 1.25; overflow: hidden; pointer-events: none;
}
html:not([data-ui="desktop"]) .chat.active .chat-log { height: 8em; overflow-y: auto; pointer-events: auto; }
html:not([data-ui="desktop"]) .chat-bar { padding: 0 4px; }
html:not([data-ui="desktop"]) .chat-input { padding: 3px 4px !important; }

html.ui-hidden #hud, html.ui-hidden #chat { visibility: hidden; }


html.v2-no-lpanel #hud .lpanel.on { display: none !important; }



html.srv-no-skills .z-cluster, html.srv-no-skills .z-actionbar, html.srv-no-skills .z-castbar { display: none !important; }
html.srv-no-talk.srv-no-loot .z-interact { display: none !important; }

.v2-black { position: fixed; inset: 0; background: #000; z-index: 60; pointer-events: none; animation: v2-black 1s ease forwards; }
@keyframes v2-black { 0%, 70% { opacity: 1; } 100% { opacity: 0; } }

html[data-ui="desktop"] #hud .z-chat > .hud-chat { width: calc(100% - 1.5rem); }






.am-ico{width:1.25rem;height:1.25rem;flex:none}.am-copy-ta{position:fixed;left:-9999px;top:0;opacity:0}
.am-card{position:relative;color:var(--tx-1);font:var(--fs-sm)/1.4 var(--font)}
.am-card-ic{display:grid;place-items:center;flex:none;width:2.5rem;height:2.5rem;border-radius:var(--r-m);border:1px solid var(--ln-ac);background:rgba(224,184,98,.1);color:var(--ac)}
.am-card-ic .am-ico{width:1.375rem;height:1.375rem}.am-card-body{min-width:0}.am-card-ttl{font:700 var(--fs-md)/1.3 var(--font);color:var(--tx-1)}
.am-card-tx{margin:2px 0 0;color:var(--tx-2);font-size:var(--fs-sm);line-height:1.4;text-wrap:pretty}
.am-card-act{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.am-card-act .k-btn .am-ico{width:1.125rem;height:1.125rem}.am-card .am-card-later{color:var(--tx-2)}
.am-card--col{display:none}
.am-card--row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 10px;align-items:start;margin-top:var(--sp-2);padding:var(--sp-3) 0 0;border-top:1px solid var(--ln-2)}
.am-card--row .am-card-ic{width:2.25rem;height:2.25rem}.am-card--row .am-card-act{grid-column:2}.am-card--row .k-btn{min-height:max(var(--k-h-sm),40px)}
#login .login-card[data-mode=register] :is(.am-card--row,.am-strip--row){display:none}
@media (orientation:landscape) and (min-width:700px){
.am-card--col{position:absolute;z-index:2;display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-2) var(--sp-3);left:max(var(--sl,12px),clamp(24px,7vw,132px));top:calc(50% + clamp(64px,9vw,140px));width:380px;max-width:calc(100% - min(560px,50vw) - 16vw - 8px);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-l);border:1px solid rgba(224,184,98,.32);background:linear-gradient(180deg,rgba(20,26,32,.86),rgba(10,14,18,.9));box-shadow:var(--elev-2);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.am-card--col .am-card-act{grid-column:1/-1}.am-card--row{display:none!important}}
@media (orientation:landscape) and (min-width:700px) and (max-height:520px){.am-card--col{top:auto;bottom:max(var(--sb,8px),14px);padding:10px 12px;align-items:center}.am-card--col .am-card-tx{display:none}}
.am-strip{appearance:none;display:flex;align-items:center;gap:10px;width:100%;min-height:56px;box-sizing:border-box;margin:0 0 12px;padding:8px 8px 8px 10px;border-radius:var(--r-m);border:1px solid rgba(224,184,98,.62);background:linear-gradient(180deg,rgba(224,184,98,.2),rgba(224,184,98,.07));box-shadow:0 0 0 1px rgba(0,0,0,.25),0 6px 22px rgba(224,184,98,.14);color:var(--tx-1);text-align:left;font:var(--fs-sm)/1.3 var(--font);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.am-strip:focus-visible{outline:2px solid var(--ac);outline-offset:2px}.am-strip:active{transform:scale(.985)}
.am-strip-ic{flex:none;display:grid;place-items:center;width:2.375rem;height:2.375rem;border-radius:10px;background:rgba(224,184,98,.16);color:var(--ac)}
.am-strip-t{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.am-strip-t b{font:700 var(--fs-md)/1.25 var(--font);color:var(--tx-1)}.am-strip-t small{color:var(--tx-2);font-size:var(--fs-xs);line-height:1.3}
.am-strip-go{flex:none;display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 14px;border-radius:var(--r-m);background:linear-gradient(180deg,var(--ac-hi),var(--ac-lo));color:var(--tx-on-ac);font:700 var(--fs-md)/1.1 var(--font);white-space:nowrap;box-shadow:0 4px 14px rgba(224,184,98,.3)}
.am-strip--col{display:none}


@media (orientation:portrait){#login.screen{align-items:safe end}}
@media (orientation:portrait) and (max-height:720px){#login .login-card:has(>.am-strip--row) .brand-mark{width:96px;height:93px}#login .login-card:has(>.am-strip--row) .brand{margin-bottom:8px}}
@media (orientation:landscape) and (min-width:640px){.am-strip--row{display:none}
.am-strip--col{position:absolute;z-index:2;display:flex;left:max(var(--sl,12px),clamp(24px,7vw,132px));top:calc(50% + clamp(64px,9vw,140px));width:min(380px,calc(100vw - var(--card-w,420px) - max(var(--sr,12px),clamp(20px,7vw,140px)) - max(var(--sl,12px),clamp(24px,7vw,132px)) - 28px));margin:0;background:linear-gradient(180deg,rgba(58,44,18,.94),rgba(24,20,12,.94));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}}
@media (orientation:landscape) and (min-width:640px) and (max-height:520px){.am-strip--col{top:auto;bottom:max(var(--sb,8px),14px)}}
@media (orientation:landscape) and (min-width:640px) and (max-width:699.98px){.am-strip--col{top:auto;left:max(var(--sl,12px),10px);bottom:max(var(--sb,8px),10px);width:calc(max(var(--sl,12px),140px) - 20px);flex-direction:column;align-items:stretch;gap:6px;padding:10px 8px;text-align:center}
.am-strip--col .am-strip-ic{align-self:center}.am-strip--col .am-strip-t small{display:none}.am-strip--col .am-strip-t b{font-size:var(--fs-sm)}.am-strip--col .am-strip-go{min-height:44px;padding:0 6px;white-space:normal}}
.am-banner{position:absolute;z-index:6;left:0;right:0;top:0;display:flex;align-items:center;gap:var(--sp-2) var(--sp-3);padding:max(var(--st,8px),6px) max(var(--sr,12px),12px) 6px max(var(--sl,12px),12px);background:linear-gradient(180deg,rgba(58,40,10,.97),rgba(40,28,8,.97));border-bottom:1px solid rgba(230,162,60,.55);color:var(--tx-1);box-shadow:var(--elev-1);font:var(--fs-sm)/1.35 var(--font);pointer-events:auto}
html:not(.v2-out) .am-banner[data-host=app]{display:none}
.am-ban-ic{flex:none;color:var(--st-warn);display:grid;place-items:center}.am-ban-ic .am-ico{width:1.375rem;height:1.375rem}
.am-ban-tx{flex:1 1 auto;min-width:0;margin:0;text-wrap:pretty}.am-ban-tx b{color:#ffd98a}.am-ban-act{flex:none;display:flex;align-items:center;gap:var(--sp-2)}.am-ban-act .k-btn{min-height:36px;white-space:nowrap}
html.am-inapp-on #ui>.portal-bar{display:none}html.am-inapp-on #login.screen,html.am-inapp-on #roles.screen{padding-top:calc(var(--am-ban-h,56px) + 6px)}
@media (max-width:900px),(max-height:520px){.am-banner{padding-top:max(var(--st,8px),4px);padding-bottom:4px;gap:8px}.am-ban-more{display:none}.am-ban-tx{font-size:var(--fs-xs);line-height:1.3}.am-ban-act .k-btn{padding:0 10px}}
@media (max-width:600px){.am-banner{flex-wrap:wrap}.am-ban-tx{flex-basis:calc(100% - 3rem)}.am-ban-act{width:100%;justify-content:flex-end}}
.am-guide-wrap{position:fixed;inset:0;z-index:9000;display:grid;place-items:center;padding:max(var(--st,8px),8px) max(var(--sr,12px),12px) max(var(--sb,8px),8px) max(var(--sl,12px),12px);background:var(--sf-backdrop,rgba(0,0,0,.6));touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none}
.am-guide-wrap[data-arw^=t]{padding-top:max(var(--st,8px),52px)}.am-guide-wrap[data-arw^=b]{padding-bottom:max(var(--sb,8px),52px)}
.am-guide{position:relative;box-sizing:border-box;width:min(860px,100%);max-height:100%;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;padding:var(--sp-4) var(--sp-5);border-radius:var(--r-l);border:1px solid rgba(224,184,98,.32);background:linear-gradient(180deg,#161c22,#0f1418);box-shadow:var(--elev-3);color:var(--tx-1);font:var(--fs-md)/1.45 var(--font);animation:am-in var(--dur,.2s) var(--ease,ease)}
.am-guide:is([data-variant=prompt],[data-variant=chrome]){width:min(480px,100%)}
.am-guide-head{display:flex;align-items:flex-start;gap:var(--sp-3);padding-right:2.5rem}
.am-guide-ic{flex:none;display:grid;place-items:center;width:3rem;height:3rem;border-radius:12px;border:1px solid var(--ln-ac);background:rgba(224,184,98,.1);color:var(--ac);overflow:hidden}
.am-guide-ic img{display:block;width:100%;height:100%;object-fit:cover}.am-guide-ic .am-ico{width:1.5rem;height:1.5rem}
.am-guide-ttl h2{margin:0;font:600 var(--fs-xl)/1.25 var(--font-title);color:var(--tx-1)}.am-guide-ttl p{margin:2px 0 0;color:var(--tx-2);font-size:var(--fs-sm)}
.am-guide-x{position:absolute;right:var(--sp-2);top:var(--sp-2)}
.am-bens{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:var(--sp-3) 0 0;padding:0}
.am-bens li{display:inline-flex;align-items:center;gap:5px;padding:4px 10px 4px 7px;border-radius:var(--r-pill);border:1px solid rgba(95,184,162,.32);background:rgba(95,184,162,.09);font-size:var(--fs-sm);line-height:1.2}.am-bens .am-ico{width:1rem;height:1rem;color:#6fd0b4}
.am-guide:is([data-variant=prompt],[data-variant=chrome]) .am-bens{flex-direction:column}.am-guide:is([data-variant=prompt],[data-variant=chrome]) .am-bens li{border-radius:var(--r-m);padding:8px 12px 8px 9px;font-size:var(--fs-md)}
.am-steps{list-style:none;margin:var(--sp-3) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3)}
.am-step{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.am-step-fig{position:relative;border-radius:var(--r-m);background:#0b0f13;border:1px solid var(--ln-2);padding:6px}
.am-illo{display:block;width:100%;height:auto;max-height:30vh}
.am-step-n{position:absolute;left:-6px;top:-8px;display:grid;place-items:center;width:1.625rem;height:1.625rem;border-radius:50%;background:linear-gradient(180deg,var(--ac-hi),var(--ac-lo));color:var(--tx-on-ac);font:700 var(--fs-sm)/1 var(--font);box-shadow:var(--elev-1)}
.am-step-tx{margin:0;color:var(--tx-1);font-size:var(--fs-sm);line-height:1.45;text-wrap:pretty}.am-step-tx b,.am-guide-note b{color:var(--ac-hi)}
.am-guide-note{margin:var(--sp-3) 0 0;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-s);background:rgba(95,184,162,.08);border:1px solid rgba(95,184,162,.25);color:var(--tx-2);font-size:var(--fs-sm);line-height:1.45}
.am-guide-act{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-3)}.am-guide-act .k-btn{min-width:8rem}
.am-guide:is([data-variant=prompt],[data-variant=chrome]) .am-guide-act{flex-direction:column-reverse;align-items:stretch}.am-guide:is([data-variant=prompt],[data-variant=chrome]) .am-guide-ok{min-height:56px;font-size:var(--fs-lg)}.am-guide:is([data-variant=prompt],[data-variant=chrome]) .am-guide-later{align-self:center;min-width:6rem}
@media (pointer:coarse){.am-guide-x,.am-ban-x{width:44px;height:44px;min-width:44px;min-height:44px}.am-guide-act .k-btn,.am-ban-act .k-btn,.am-card--row .k-btn{min-height:44px}}
.am-tap{transform-box:fill-box;transform-origin:center}
@media (prefers-reduced-motion:no-preference){html:not(.reduce-motion) .am-tap circle:first-child{animation:am-pulse 1.6s var(--ease,ease) infinite;transform-box:fill-box;transform-origin:center}
html:not(.reduce-motion) .am-arw[data-pos^=t] svg{animation:am-up 1s ease-in-out infinite}html:not(.reduce-motion) .am-arw[data-pos^=b] svg{animation:am-dn 1s ease-in-out infinite}}
@media (max-height:460px){.am-guide{padding:10px 14px}.am-guide-head{gap:10px}.am-guide-ic{width:2.25rem;height:2.25rem;border-radius:9px}.am-guide-ttl h2{font-size:var(--fs-lg)}.am-guide-ttl p{font-size:var(--fs-xs)}
.am-bens{margin-top:6px;gap:4px}.am-bens li{padding:2px 8px 2px 5px;font-size:var(--fs-xs)}.am-guide:is([data-variant=prompt],[data-variant=chrome]) .am-bens li{padding:5px 10px;font-size:var(--fs-sm)}
.am-steps{margin-top:8px;gap:10px}.am-step{gap:4px}.am-illo{max-height:25vh}.am-step-fig{padding:4px}.am-step-tx{font-size:var(--fs-xs);line-height:1.35}
.am-guide-note{margin-top:8px;padding:5px 10px;font-size:var(--fs-xs);line-height:1.35}.am-guide-act{margin-top:8px}.am-guide:is([data-variant=prompt],[data-variant=chrome]) .am-guide-ok{min-height:48px}
.am-guide-wrap[data-arw^=t]{padding-top:max(var(--st,8px),44px)}.am-guide-wrap[data-arw^=b]{padding-bottom:max(var(--sb,8px),44px)}.am-guide:not([data-variant=prompt]):not([data-variant=chrome]) .am-bens{display:none}}
@media (max-width:560px){.am-guide{padding:var(--sp-3)}.am-steps{grid-template-columns:minmax(0,1fr)}.am-step{flex-direction:row;align-items:center;gap:var(--sp-3)}.am-step-fig{flex:0 0 44%}.am-guide-act .k-btn{flex:1;min-width:0;min-height:48px}
.am-guide:is([data-variant=prompt],[data-variant=chrome]) .am-guide-later{flex:none}.am-guide-fs{order:3;flex-basis:100%!important}}
.am-arw{position:fixed;z-index:9001;display:flex;flex-direction:column;align-items:center;gap:2px;pointer-events:none;color:var(--ac-hi,#ecc97a);filter:drop-shadow(0 2px 6px rgba(0,0,0,.85))}
.am-arw svg{display:block;width:34px;height:34px}.am-arw span{padding:2px 9px;border-radius:999px;border:1px solid var(--ln-ac);background:rgba(10,14,18,.94);color:var(--tx-1);font:700 var(--fs-xs)/1.35 var(--font);white-space:nowrap}
.am-arw[data-pos=tr]{top:max(env(safe-area-inset-top),2px);right:max(env(safe-area-inset-right),12px)}
.am-arw[data-pos^=b]{flex-direction:column-reverse;bottom:max(env(safe-area-inset-bottom),2px)}.am-arw[data-pos=br]{right:max(env(safe-area-inset-right),12px)}.am-arw[data-pos=bc]{left:50%;transform:translateX(-50%)}
.am-toast{position:fixed;z-index:9002;left:50%;bottom:max(var(--sb,8px),16px);transform:translateX(-50%);box-sizing:border-box;max-width:calc(100vw - 32px);padding:10px 16px;border-radius:var(--r-m);border:1px solid var(--ln-ac);background:rgba(12,16,20,.96);color:var(--tx-1);font:500 var(--fs-sm)/1.4 var(--font);text-align:center;box-shadow:var(--elev-2);pointer-events:none}
@keyframes am-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
@keyframes am-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.25)}}
@keyframes am-up{50%{transform:translateY(-6px)}}@keyframes am-dn{50%{transform:translateY(6px)}}
html.reduce-motion .am-guide{animation:none}@media (prefers-reduced-motion:reduce){.am-guide,.am-tap circle,.am-arw svg{animation:none!important}}

.form-maint{margin-top:8px;padding:8px 10px;border-radius:var(--r-m,8px);border:1px solid var(--ln-ac,rgba(224,184,98,.45));background:rgba(224,184,98,.07);font-size:var(--fs-sm,13px);line-height:1.4;color:var(--tx-1,#ece6d6)}
.form-maint.hidden{display:none}
.form-maint .fm-line{margin:0;font-weight:600;color:var(--ac,#e0b862)}
.form-maint .fm-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 10px;margin-top:2px}
.form-maint .fm-sub{color:var(--tx-2,#b9b2a2)}
.form-maint .fm-cancel{min-height:44px;min-width:44px;padding:0 10px;margin:-6px -6px -6px 0;border:0;background:none;color:var(--tx-2,#b9b2a2);font:inherit;text-decoration:underline;cursor:pointer}
.form-maint .fm-cancel:hover,.form-maint .fm-cancel:focus-visible{color:var(--tx-1,#ece6d6)}

.upd-bar{position:fixed;left:50%;top:calc(env(safe-area-inset-top,0px) + 54px);transform:translateX(-50%);z-index:9001;display:flex;align-items:center;gap:6px;box-sizing:border-box;max-width:calc(100vw - 32px);min-height:44px;padding:0 4px 0 12px;border-radius:22px;border:1px solid var(--ln-ac,rgba(224,184,98,.55));background:rgba(12,16,20,.94);color:var(--tx-1,#ece6d6);font:600 var(--fs-sm,13px)/1.2 var(--font,system-ui,sans-serif);box-shadow:var(--elev-2,0 4px 16px rgba(0,0,0,.45));animation:upd-in .2s ease-out}
.upd-bar .upd-ic{color:var(--ac,#e0b862);font-size:16px}
.upd-bar .upd-tx{white-space:nowrap}
.upd-bar .upd-go{min-height:36px;padding:0 14px;border:0;border-radius:18px;background:var(--ac,#e0b862);color:#1a1408;font:inherit;cursor:pointer}
.upd-bar .upd-go:disabled{opacity:.6;cursor:default}
.upd-bar .upd-x{min-width:44px;min-height:44px;border:0;background:none;color:var(--tx-2,#b9b2a2);font-size:15px;cursor:pointer}
.upd-bar .upd-x:hover,.upd-bar .upd-x:focus-visible{color:var(--tx-1,#ece6d6)}
@media (max-height:420px){.upd-bar{top:calc(env(safe-area-inset-top,0px) + 48px);min-height:40px}.upd-bar .upd-go{min-height:32px}}
@keyframes upd-in{from{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.upd-bar{animation:none}}











:where(.k-btn, .k-iconbtn, .k-close, .k-tab, .k-row, .k-slot, .k-chip, .k-switch, .k-seg-btn) {
-webkit-tap-highlight-color: transparent; touch-action: manipulation;
}

:is(.k-btn, .k-iconbtn, .k-close, .k-tab, .k-row, .k-slot, .k-chip, .k-switch, .k-seg-btn, .k-stepper button, .k-search input,
.sh-btn, .hud-btn, .q-btn, .soc-btn, .it-btn, .wm-btn, .sk-btn, .btn, .sh-x, .q-close, .it-x, .soc-x, .q-icon-btn, .sh-tab,
.it-tab, .sk-tab, .hud-sys-btn, .hud-tbtn, .hud-drawer-cell, .q-opt, .q-trk-item, .q-link, .hud-chat-tab, .lp-tab, .lp-fold):focus-visible {
outline: 2px solid var(--ac); outline-offset: 2px; box-shadow: 0 0 0 4px rgba(0, 0, 0, .55);
}


.k-btn, .sh-btn, .hud-btn, .q-btn, .soc-btn, .it-btn, .wm-btn, .sk-btn, .btn {
appearance: none; position: relative; display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-1);
min-height: var(--k-h-md); min-width: 4rem; padding: 0 var(--sp-3); box-sizing: border-box;
border: 1px solid var(--ln-1); border-radius: var(--r-s); background: var(--sf-raised); color: var(--tx-1); cursor: pointer;
font: 600 var(--fs-md)/1.2 var(--font); white-space: nowrap; text-align: center; text-decoration: none;
transition: transform var(--dur-press) var(--ease), border-color var(--dur-fast) var(--ease), filter var(--dur-fast) var(--ease);
}
.k-btn.sm, .q-btn.small, .btn.small { min-height: var(--k-h-sm); min-width: 3rem; padding: 0 var(--sp-2); font-size: var(--fs-sm); }
.k-btn.lg, .q-btn.big { min-height: var(--k-h-lg); min-width: 7rem; padding: 0 var(--sp-4); font: 700 var(--fs-lg)/1.2 var(--font); }
.k-btn.block { display: flex; width: 100%; }

.k-btn.primary, .sh-btn.primary, .hud-btn-primary, .q-btn.primary, .it-btn.primary, .wm-primary, .sk-btn-primary, .btn.primary, .soc-btn.primary {
border-color: var(--ac-lo); color: var(--tx-on-ac); background: linear-gradient(180deg, var(--ac-hi), var(--ac-lo));
}
.k-btn.ghost { border-color: transparent; background: transparent; color: var(--tx-2); }
.k-btn.danger, .sh-btn.danger.primary, .q-btn.danger, .it-btn.danger, .soc-btn.danger {
border-color: var(--st-danger-fill); color: #fff; background: var(--st-danger-fill);
}
.q-btn.warn { border-color: var(--st-warn); color: var(--tx-1); background: var(--sf-raised); }

:is(.k-btn, .sh-btn, .hud-btn, .q-btn, .soc-btn, .it-btn, .wm-btn, .sk-btn, .btn):active:not(:disabled):not([aria-disabled="true"]) {
transform: scale(.96); filter: brightness(.94);
}
:is(.k-btn, .sh-btn, .hud-btn, .q-btn, .soc-btn, .it-btn, .wm-btn, .sk-btn, .btn):is(:disabled, [aria-disabled="true"]) {
opacity: .45; cursor: not-allowed; transform: none; filter: none;
}

:is(.k-btn, .sh-btn, .hud-btn, .q-btn, .soc-btn, .it-btn, .wm-btn, .sk-btn, .btn)[aria-busy="true"]:is(:disabled, [aria-disabled="true"]) { opacity: 1; cursor: progress; }
@media (hover: hover) {
:is(.k-btn, .sh-btn, .hud-btn, .q-btn, .soc-btn, .it-btn, .wm-btn, .sk-btn, .btn):hover:not(:disabled):not([aria-disabled="true"]) { border-color: var(--ln-ac); }
:is(.k-btn.primary, .sh-btn.primary, .hud-btn-primary, .q-btn.primary, .it-btn.primary, .wm-primary, .sk-btn-primary, .btn.primary):hover:not(:disabled) {
filter: brightness(1.07); border-color: var(--ac-hi);
}
.k-btn.ghost:hover:not(:disabled) { background: var(--sf-hover); color: var(--tx-1); }
}

.k-btn[aria-busy="true"], .q-btn.wait { pointer-events: none; }
.k-btn[aria-busy="true"]::before, .q-btn.wait::before {
content: ""; flex: none; width: .875rem; height: .875rem; box-sizing: border-box; border-radius: 50%;
border: 2px solid currentColor; border-right-color: transparent; animation: k-spin .8s linear infinite;
}
.k-btn .k-btn-lbl { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.k-btn.ok-flash::after { content: "✓"; margin-left: var(--sp-1); }

.k-reason { display: block; margin-top: var(--sp-1); color: var(--tx-2); font: var(--fs-sm)/1.35 var(--font); }


.k-iconbtn, .sh-iconbtn {
appearance: none; position: relative; display: inline-grid; place-items: center; flex: none; padding: 0; box-sizing: border-box;
width: var(--k-icon); height: var(--k-icon); border-radius: var(--r-s); border: 1px solid var(--ln-1);
background: var(--sf-raised); color: var(--ac); cursor: pointer; font: 600 var(--fs-lg)/1 var(--font);
transition: transform var(--dur-press) var(--ease), border-color var(--dur-fast) var(--ease);
}
.k-iconbtn svg, .k-close svg, .k-ico { width: 1.25rem; height: 1.25rem; fill: none; stroke: currentColor; stroke-width: 1.8;
stroke-linecap: round; stroke-linejoin: round; flex: none; }
.k-close, .sh-x, .q-close, .it-x, .soc-x, .hud-drawer-x, .wm-close, .hud-mid-close, .hud-chat-x {
appearance: none; position: relative; display: inline-grid; place-items: center; flex: none; padding: 0; box-sizing: border-box;
width: var(--k-close); height: var(--k-close); min-width: var(--k-close); min-height: var(--k-close);
border: 1px solid transparent; border-radius: var(--r-s); background: transparent; color: var(--tx-2); cursor: pointer;
font: 400 var(--fs-lg)/1 var(--font);
}
:is(.k-iconbtn, .sh-iconbtn, .k-close, .sh-x, .q-close, .it-x, .soc-x, .hud-drawer-x, .wm-close, .hud-mid-close):active { transform: scale(.94); }
@media (hover: hover) {
:is(.k-iconbtn, .sh-iconbtn):hover { border-color: var(--ln-ac); }
:is(.k-close, .sh-x, .q-close, .it-x, .soc-x, .hud-drawer-x, .wm-close, .hud-mid-close, .hud-chat-x):hover { color: var(--tx-1); background: var(--sf-hover); }
}


.k-kbd {
display: inline-block; min-width: 1.15em; padding: 0 .25rem; box-sizing: border-box; border-radius: var(--r-xs);
border: 1px solid var(--ln-2); background: rgba(0, 0, 0, .35); color: var(--tx-2); text-align: center;
font: 700 var(--fs-2xs)/1.35 var(--font); font-variant-numeric: tabular-nums; vertical-align: middle;
}
.k-btn .k-kbd { margin-left: auto; padding-left: .3rem; }

html:not([data-ui="desktop"]) :is(.k-kbd, .hud-sys-key, .hud-drawer-key, .sk-key), html.no-kbd :is(.k-kbd, .hud-sys-key, .hud-drawer-key, .sk-key) { display: none !important; }


.k-tabs { position: relative; display: flex; gap: var(--sp-1); min-width: 0; overflow-x: auto; overscroll-behavior-x: contain;
scrollbar-width: none; border-bottom: 1px solid var(--ln-1); scroll-snap-type: x proximity; }
.k-tabs::-webkit-scrollbar { display: none; }

.k-tabs.is-ovl-r { -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 1.5rem), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 1.5rem), transparent); }
.k-tabs.is-ovl-l { -webkit-mask-image: linear-gradient(90deg, transparent, #000 1.5rem); mask-image: linear-gradient(90deg, transparent, #000 1.5rem); }
.k-tabs.is-ovl-l.is-ovl-r { -webkit-mask-image: linear-gradient(90deg, transparent, #000 1.5rem, #000 calc(100% - 1.5rem), transparent);
mask-image: linear-gradient(90deg, transparent, #000 1.5rem, #000 calc(100% - 1.5rem), transparent); }
.k-tab, .sh-tab {
appearance: none; position: relative; flex: none; display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-1);
min-height: max(28px, 2.25rem); padding: 0 var(--sp-3); border: 0; background: none; color: var(--tx-2); cursor: pointer;
font: 600 var(--fs-md)/1.2 var(--font); white-space: nowrap; scroll-snap-align: start; box-shadow: inset 0 -2px 0 transparent;
}
.k-tab[aria-selected="true"], .k-tab.on, .sh-tab.on { color: var(--ac); box-shadow: inset 0 -2px 0 var(--ac); }
@media (hover: hover) { :is(.k-tab, .sh-tab):hover { color: var(--tx-1); } }
.k-tabs-wrap { position: relative; display: flex; align-items: stretch; min-width: 0; }
.k-tabs-wrap > .k-tabs { flex: 1; }
.k-tabs-arrow { flex: none; width: 2rem; border: 0; background: transparent; color: var(--tx-2); cursor: pointer; font: 700 var(--fs-lg)/1 var(--font); }
.k-tabs-arrow[hidden] { display: none; }
html:not([data-ui="desktop"]) .k-tabs-arrow { display: none; }


.k-scroll { overflow-y: auto; overscroll-behavior: contain; touch-action: pan-y; scrollbar-width: thin; scrollbar-color: var(--ln-1) transparent; }
.k-scroll.is-ovl-t { -webkit-mask-image: linear-gradient(180deg, transparent, #000 1rem); mask-image: linear-gradient(180deg, transparent, #000 1rem); }
.k-scroll.is-ovl-b { -webkit-mask-image: linear-gradient(180deg, #000 calc(100% - 1rem), transparent); mask-image: linear-gradient(180deg, #000 calc(100% - 1rem), transparent); }
.k-scroll.is-ovl-t.is-ovl-b { -webkit-mask-image: linear-gradient(180deg, transparent, #000 1rem, #000 calc(100% - 1rem), transparent);
mask-image: linear-gradient(180deg, transparent, #000 1rem, #000 calc(100% - 1rem), transparent); }


.k-panel {
position: absolute; display: flex; flex-direction: column; box-sizing: border-box; overflow: hidden; pointer-events: auto;
background: var(--sf-panel); border: 1px solid var(--ln-1); border-radius: var(--r-m); color: var(--tx-1);
font: var(--fs-md)/var(--lh-body) var(--font); contain: layout paint style;
}
html[data-ui="desktop"] .k-panel { box-shadow: var(--elev-2); }
.k-panel[hidden] { display: none !important; }
.k-head { flex: none; display: flex; align-items: center; gap: var(--sp-2); min-height: max(36px, 2.5rem); padding: var(--sp-1) var(--sp-2) var(--sp-1) var(--sp-4);
border-bottom: 1px solid var(--ln-2); }
.k-head.drag { cursor: move; }

.k-win > .k-head { cursor: move; -webkit-user-select: none; user-select: none; touch-action: none; }
.k-win > .k-head :is(button, input, select, a) { cursor: pointer; }
.k-win > .k-head.drag { cursor: grabbing; }
.k-head .k-ico { color: var(--ac); }
.k-title { flex: 1; min-width: 0; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
font: 600 var(--fs-xl)/1.25 var(--font-title); color: var(--ac); letter-spacing: .01em; }
.k-sub { color: var(--tx-2); font: var(--fs-sm)/1.3 var(--font); }
.k-body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; touch-action: pan-y; padding: var(--sp-3) var(--sp-4) var(--sp-4); }
.k-foot { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: var(--sp-2); min-height: max(44px, 3.5rem);
padding: var(--sp-2) var(--sp-4); border-top: 1px solid var(--ln-2); }
.k-foot > .k-foot-start { margin-right: auto; }

.k-win { width: min(22.5rem, 96vw); max-height: var(--win-h, min(40rem, 88vh)); min-width: min(20rem, 96vw); min-height: 15rem; }
.k-win.S { width: min(22.5rem, 96vw); } .k-win.M { width: min(35rem, 96vw); } .k-win.L { width: min(47.5rem, 96vw); } .k-win.XL { width: min(62.5rem, 96vw); }
.k-win.is-top { z-index: 1; }


.k-grip { position: absolute; right: 0; bottom: 0; z-index: 3; width: 12px; height: 12px; cursor: nwse-resize; touch-action: none; outline: none;
background: linear-gradient(135deg, transparent 0 52%, var(--ln-1) 52% 58%, transparent 58% 68%, var(--ln-1) 68% 74%, transparent 74% 84%,
var(--ln-1) 84% 90%, transparent 90%); opacity: .7; border-bottom-right-radius: var(--r-m); }
.k-grip[hidden] { display: none; }
@media (hover: hover) { .k-grip:hover { opacity: 1; } }
.k-grip:focus-visible { opacity: 1; box-shadow: inset 0 0 0 2px var(--ac); }
.k-resizing, .k-resizing * { -webkit-user-select: none; user-select: none; }
.k-resizing { cursor: nwse-resize; }
.k-sheet .k-grip { display: none; }

.k-sheet { top: 0; bottom: 0; right: 0; border-radius: 0; border-width: 0 0 0 1px; box-shadow: none;
padding: env(safe-area-inset-top, 0px) var(--sa-r, env(safe-area-inset-right, 0px)) env(safe-area-inset-bottom, 0px) 0;
animation: k-slide var(--dur-slow) var(--ease); }
.k-sheet.side { width: clamp(320px, 44vw, 480px); }
html[data-ui="tablet"] .k-sheet.side { width: clamp(380px, 44vw, 450px); }
.k-sheet.full { left: 0; width: auto; border-left: 0; padding-left: var(--sa-l, env(safe-area-inset-left, 0px)); }
.k-sheet .k-head { min-height: 56px; padding-left: var(--sp-3); }
.k-sheet .k-foot { min-height: 64px; }
.k-sheet .k-close, .k-sheet .k-back { width: 44px; height: 44px; }
.k-back { appearance: none; display: inline-grid; place-items: center; flex: none; width: var(--k-close); height: var(--k-close); padding: 0;
border: 0; border-radius: var(--r-s); background: transparent; color: var(--tx-1); cursor: pointer; font: 700 var(--fs-xl)/1 var(--font); }
.k-backdrop { position: absolute; inset: 0; background: var(--sf-backdrop); pointer-events: auto; animation: k-fade var(--dur) var(--ease); }
.k-modal-wrap { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: auto; touch-action: none;
padding: var(--st) var(--sr) var(--sb) var(--sl); background: var(--sf-backdrop); animation: k-fade var(--dur) var(--ease); }
.k-modal { position: relative; width: min(26.25rem, 92vw); max-height: 100%; border-radius: var(--r-l); animation: k-pop var(--dur) var(--ease); }
html[data-ui="desktop"] .k-modal { box-shadow: var(--elev-3); }
.k-modal .k-body { padding-top: var(--sp-2); font-size: var(--fs-md); }
.k-modal .k-foot { border-top: 0; }
html:not([data-ui="desktop"]) .k-modal .k-foot > .k-btn { flex: 1; min-height: 52px; }

.k-detail { margin-top: var(--sp-3); padding: var(--sp-2) var(--sp-3); border-radius: var(--r-s); background: var(--sf-raised); color: var(--tx-1); }


.k-row {
appearance: none; position: relative; display: flex; align-items: center; gap: var(--sp-2); width: 100%; box-sizing: border-box;
min-height: max(32px, 2.5rem); padding: var(--sp-1) var(--sp-3); border: 0; border-radius: var(--r-s);
background: transparent; color: var(--tx-1); text-align: left; cursor: pointer; font: var(--fs-md)/1.35 var(--font);
}
html:not([data-ui="desktop"]) .k-row { min-height: 52px; }
.k-row-icon { flex: none; width: 2rem; height: 2rem; display: grid; place-items: center; }
.k-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.k-row-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--tx-1); }
.k-row-meta { color: var(--tx-2); font-size: var(--fs-sm); }
.k-row-tail { flex: none; display: flex; align-items: center; gap: var(--sp-2); color: var(--tx-2); font-variant-numeric: tabular-nums; }
.k-row.sel, .k-row[aria-selected="true"] { background: var(--sf-selected); box-shadow: inset 3px 0 0 var(--ac); }
.k-row[aria-disabled="true"] { cursor: default; }
.k-row[aria-disabled="true"] .k-row-title { color: var(--tx-off); }
@media (hover: hover) { .k-row:hover:not([aria-disabled="true"]) { background: var(--sf-hover); } }
.k-row:active:not([aria-disabled="true"]) { filter: brightness(1.08); }


.k-slot {
--q: var(--ln-field);
appearance: none; position: relative; display: block; flex: none; width: 2.75rem; height: 2.75rem; padding: 0; box-sizing: border-box;
border: 1px solid var(--q); border-radius: var(--r-xs); background: var(--sf-sunken); color: var(--tx-1); cursor: pointer; overflow: hidden;
}
html:not([data-ui="desktop"]) .k-slot { width: 52px; height: 52px; }
.k-slot[data-q="0"] { --q: var(--rare-0); } .k-slot[data-q="1"] { --q: var(--rare-1); } .k-slot[data-q="2"] { --q: var(--rare-2); }
.k-slot[data-q="3"] { --q: var(--rare-3); } .k-slot[data-q="4"] { --q: var(--rare-4); } .k-slot[data-q="5"] { --q: var(--rare-5); }
.k-slot-ic { position: absolute; inset: 6%; background-size: cover; background-position: center; border-radius: 2px; }
.k-slot-n { position: absolute; right: 2px; bottom: 0; color: #fff; font: 700 var(--fs-2xs)/1.1 var(--font); font-variant-numeric: tabular-nums;
text-shadow: 0 0 2px #000, 0 1px 0 #000, 1px 0 0 #000, -1px 0 0 #000; }
.k-slot-badge { position: absolute; left: 1px; top: 1px; min-width: .875rem; height: .875rem; border-radius: var(--r-xs); background: var(--ac-2);
color: var(--sf-sunken); font: 700 var(--fs-2xs)/.875rem var(--font); text-align: center; }
.k-slot-cd { position: absolute; inset: 0; pointer-events: none; background: conic-gradient(var(--cd-veil) calc(var(--cd, 0) * 360deg), transparent 0); }
.k-slot.sel { border-width: 2px; border-color: var(--ac); }
.k-slot.is-drop { border-color: var(--ac-2); background: rgba(95, 184, 162, .15); }
.k-slot.is-src { opacity: .5; }
.k-slot[aria-disabled="true"] { filter: grayscale(1); opacity: .6; }


.k-tip {
position: fixed; left: 0; top: 0; z-index: var(--z-loading); max-width: min(20rem, 92vw); padding: var(--sp-2) var(--sp-3); box-sizing: border-box;
border-radius: var(--r-s); border: 1px solid var(--ln-1); background: var(--sf-panel); color: var(--tx-1); pointer-events: none;
font: var(--fs-sm)/1.4 var(--font); box-shadow: var(--elev-2);
}
.k-tip[hidden] { display: none; }
.k-tip-t { display: block; margin-bottom: 2px; color: var(--ac); font: 600 var(--fs-lg)/1.3 var(--font); }
.k-tip-l { color: var(--tx-2); }
.k-tip-k { margin-left: var(--sp-1); }
html:not([data-ui="desktop"]) .k-tip { box-shadow: none; }


.k-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 1rem; height: 1rem; padding: 0 .25rem; box-sizing: border-box;
border-radius: var(--r-pill); background: var(--ac-2); color: var(--sf-sunken); font: 700 var(--fs-2xs)/1 var(--font); font-variant-numeric: tabular-nums; }
.k-badge.unread { background: var(--st-danger-fill); color: #fff; }
.k-badge.new { background: var(--ac); color: var(--tx-on-ac); }
.k-badge:empty, .k-badge[hidden] { display: none; }
.k-dot { display: inline-block; width: .5rem; height: .5rem; border-radius: 50%; background: var(--st-danger-fill); }


.k-stepper { display: inline-flex; align-items: stretch; gap: var(--sp-1); }
.k-stepper button { appearance: none; min-width: var(--k-icon); height: var(--k-icon); padding: 0 var(--sp-2); border: 1px solid var(--ln-field);
border-radius: var(--r-s); background: var(--sf-raised); color: var(--tx-1); font: 700 var(--fs-md)/1 var(--font); cursor: pointer; }
.k-stepper button:disabled { opacity: .45; cursor: not-allowed; }
.k-stepper input { width: 3.5rem; height: var(--k-icon); box-sizing: border-box; padding: 0 var(--sp-1); border: 1px solid var(--ln-field);
border-radius: var(--r-s); background: var(--sf-sunken); color: var(--tx-1); text-align: center; font: 600 var(--fs-md)/1 var(--font);
font-variant-numeric: tabular-nums; }
html:not([data-ui="desktop"]) .k-stepper input { font-size: 16px; }
.k-search { position: relative; display: flex; align-items: center; min-width: 0; }
.k-search .k-ico { position: absolute; left: var(--sp-2); width: 1rem; height: 1rem; color: var(--tx-3); pointer-events: none; }
.k-search input { width: 100%; height: var(--k-h-md); box-sizing: border-box; padding: 0 2.25rem 0 2rem; border: 1px solid var(--ln-field);
border-radius: var(--r-s); background: var(--sf-sunken); color: var(--tx-1); font: var(--fs-md)/1 var(--font); outline: none; }
html:not([data-ui="desktop"]) .k-search input { font-size: 16px; }
.k-search .k-close { position: absolute; right: 0; width: var(--k-h-md); height: var(--k-h-md); min-width: 0; min-height: 0; }
.k-search mark { background: none; color: var(--ac); font-weight: 700; }

.k-switch { appearance: none; position: relative; flex: none; width: 2.75rem; height: 1.75rem; padding: 0; border: 0; background: none; cursor: pointer; }
.k-switch::before { content: ""; position: absolute; inset: .25rem 0; border-radius: var(--r-pill); background: var(--sf-sunken); border: 1px solid var(--ln-field);
transition: background var(--dur-fast) var(--ease); }
.k-switch::after { content: ""; position: absolute; left: .3125rem; top: 50%; width: 1rem; height: 1rem; margin-top: -.5rem; border-radius: 50%;
background: var(--tx-3); transition: transform var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease); }
.k-switch[aria-checked="true"]::before { background: var(--ac-2); border-color: var(--ac-2); }
.k-switch[aria-checked="true"]::after { transform: translateX(1.0625rem); background: var(--tx-1); }
html:not([data-ui="desktop"]) .k-switch { width: 52px; height: 44px; }
html:not([data-ui="desktop"]) .k-switch::before { inset: 8px 0; }
html:not([data-ui="desktop"]) .k-switch::after { width: 20px; height: 20px; margin-top: -10px; left: 6px; }
html:not([data-ui="desktop"]) .k-switch[aria-checked="true"]::after { transform: translateX(20px); }


.k-state { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--sp-2); padding: var(--sp-5) var(--sp-4);
color: var(--tx-2); text-align: center; font: var(--fs-md)/1.4 var(--font); }
.k-state .k-ico { width: 2rem; height: 2rem; color: var(--tx-3); }
.k-state.error .k-ico { color: var(--st-danger); }
.k-skel { height: 1rem; border-radius: var(--r-xs); background: linear-gradient(90deg, var(--sf-raised), var(--sf-hover), var(--sf-raised)); }


.k-money { display: inline-flex; align-items: center; gap: .375rem; color: var(--tx-1); font-variant-numeric: tabular-nums; white-space: nowrap; }
.k-money-p { display: inline-flex; align-items: center; gap: .1875rem; }
.k-coin { display: inline-block; width: .875rem; height: .875rem; border-radius: 50%; box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .3); }
.k-coin.brick { background: var(--money-brick); border-radius: 2px; } .k-coin.gold { background: var(--money-gold); }
.k-coin.silver { background: var(--money-silver); } .k-coin.copper { background: var(--money-copper); }
.k-money.lack { color: var(--st-danger); }


.k-toast { display: flex; align-items: center; gap: var(--sp-2); max-width: min(35rem, 92vw); padding: .4375rem var(--sp-3); box-sizing: border-box;
border-radius: var(--r-m); border: 1px solid var(--ln-1); border-left-width: 3px; background: var(--sf-hud); color: var(--tx-1);
font: var(--fs-md)/1.35 var(--font); text-align: left; animation: k-in var(--dur) var(--ease); pointer-events: none; }
.k-toast.ok { border-left-color: var(--st-ok); } .k-toast.warn { border-left-color: var(--st-warn); }
.k-toast.error, .k-toast.err { border-left-color: var(--st-danger); } .k-toast.info { border-left-color: var(--ac-2); }
.k-toast > .k-btn { pointer-events: auto; }


.k-chip { appearance: none; position: relative; display: inline-flex; align-items: center; gap: .3125rem; min-height: max(24px, 1.5rem); max-width: 100%; margin: 0 .125rem;
padding: 0 var(--sp-2); box-sizing: border-box; vertical-align: baseline; border: 1px solid var(--ln-ac); border-radius: var(--r-pill);
background: rgba(224, 184, 98, .1); color: var(--tx-link); cursor: pointer; font: 600 var(--fs-md)/1.2 var(--font); text-decoration: none; }
.k-chip .k-ico { width: 1rem; height: 1rem; }
.k-chip[aria-disabled="true"] { border-style: dashed; border-color: var(--ln-1); background: transparent; color: var(--tx-2); cursor: help; }
.k-chip[aria-busy="true"]::after { content: ""; width: .75rem; height: .75rem; border-radius: 50%; border: 2px solid currentColor; border-right-color: transparent;
animation: k-spin .8s linear infinite; }
@media (hover: hover) { .k-chip:not([aria-disabled="true"]):hover { background: rgba(224, 184, 98, .18); } }
html:not([data-ui="desktop"]) .k-chip::before { content: ""; position: absolute; left: 0; right: 0; top: min(0px, calc(50% - 22px)); bottom: min(0px, calc(50% - 22px)); }


.k-progress { position: relative; height: .5rem; border-radius: var(--r-pill); overflow: hidden; background: var(--sf-sunken); border: 1px solid var(--ln-field); }
.k-progress-fill { position: absolute; inset: 0; transform-origin: 0 50%; transform: scaleX(var(--p, 0)); background: linear-gradient(90deg, var(--ac-lo), var(--ac-hi)); }
.k-progress[data-role="hp"] .k-progress-fill { background: linear-gradient(180deg, var(--hp-hi), var(--hp)); }
.k-progress[data-role="mp"] .k-progress-fill { background: linear-gradient(180deg, #7ab4ff, var(--mp)); }
.k-progress[data-role="cast"] .k-progress-fill { background: linear-gradient(180deg, #c9f5d2, var(--cast)); }
.k-progress[data-role="qg"] .k-progress-fill { background: var(--ac-2); }
.k-progress.indet .k-progress-fill { width: 30%; transform: none; animation: k-indet 1.2s var(--ease) infinite; }
@keyframes k-indet { from { transform: translateX(-100%); } to { transform: translateX(340%); } }
.k-spin { display: inline-block; width: 1rem; height: 1rem; box-sizing: border-box; border-radius: 50%; border: 2px solid var(--ac); border-right-color: transparent;
animation: k-spin .8s linear infinite; vertical-align: middle; }


.k-loading { position: fixed; inset: 0; z-index: var(--z-loading); display: flex; flex-direction: column; align-items: center; justify-content: center;
gap: var(--sp-3); padding: calc(var(--st) + 1rem) calc(var(--sr) + 1rem) calc(var(--sb) + 1rem) calc(var(--sl) + 1rem); box-sizing: border-box;
color: var(--tx-1); font: var(--fs-md)/1.4 var(--font); text-align: center; pointer-events: auto;
background: radial-gradient(ellipse at 50% 38%, rgba(30, 44, 42, .94), rgba(8, 11, 14, .985) 72%), var(--ink-0); background-size: cover; }
.k-loading[hidden] { display: none; }
.k-loading.has-bg { background-image: linear-gradient(rgba(6, 9, 11, .55), rgba(6, 9, 11, .88)), var(--k-load-bg); background-position: center; background-size: cover; }
.k-loading-name { margin: 0; color: var(--ac); font: 600 var(--fs-3xl)/1.15 var(--font-title); text-shadow: var(--shadow-text); max-width: 100%;
overflow-wrap: anywhere; }
.k-loading-sub { color: var(--tx-2); font: var(--fs-md)/1.4 var(--font); min-height: 1.4em; }
.k-loading-bar { width: min(32rem, 82vw); }
.k-loading .k-progress { height: .5rem; }
.k-loading-row { display: flex; justify-content: space-between; gap: var(--sp-3); width: min(32rem, 82vw); color: var(--tx-2); font: var(--fs-sm)/1.3 var(--font);
font-variant-numeric: tabular-nums; }
.k-loading-phase { color: var(--tx-1); }
.k-loading-tip { max-width: min(36rem, 88vw); margin-top: var(--sp-4); color: var(--tx-2); font: var(--fs-sm)/1.45 var(--font); min-height: 2.9em; }
.k-loading-act { display: flex; gap: var(--sp-2); flex-wrap: wrap; justify-content: center; min-height: var(--k-h-md); }
.k-loading.is-error .k-loading-phase { color: var(--st-danger); }


@keyframes k-spin { to { transform: rotate(360deg); } }
@keyframes k-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes k-pop { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } }
@keyframes k-in { from { opacity: 0; transform: translateY(-.375rem); } to { opacity: 1; transform: none; } }
@keyframes k-slide { from { opacity: .4; transform: translateX(2rem); } to { opacity: 1; transform: none; } }



html.reduce-motion *, html.reduce-motion *::before, html.reduce-motion *::after {
animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition: none !important; scroll-behavior: auto !important;
}
html.reduce-motion :is(.k-spin, .k-btn[aria-busy="true"], .q-btn.wait)::before, html.reduce-motion .k-spin { animation: none !important; border-right-color: currentColor; opacity: .7; }
@media (prefers-reduced-motion: reduce) {
html:not(.motion-ok) :is(.k-sheet, .k-modal, .k-modal-wrap, .k-toast, .k-backdrop) { animation: none !important; }
}



.q-rw-icon.k-itemic { background-color: var(--sf-sunken); background-repeat: no-repeat; border-color: rgba(255, 255, 255, .18); color: transparent; }
.q-rw-icon.k-itemic[data-q="0"] { border-color: var(--rare-0); } .q-rw-icon.k-itemic[data-q="2"] { border-color: var(--rare-2); }
.q-rw-icon.k-itemic[data-q="3"] { border-color: var(--rare-3); } .q-rw-icon.k-itemic[data-q="4"] { border-color: var(--rare-4); }
.q-rw-icon.k-itemic[data-q="5"] { border-color: var(--rare-5); }
.q-loot-item .q-rw-icon { width: 2.25rem; height: 2.25rem; }
.q-loot.touch .q-loot-item .q-rw-icon { width: 40px; height: 40px; }

.q-log-row .q-log-name { white-space: normal; text-overflow: clip; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
line-clamp: 2; line-height: 1.3; padding: .25rem 0; overflow-wrap: anywhere; }
.k-kbd.k-kbd-none, kbd.k-kbd-none, .k-kbd-none { display: none !important; }


:root{

--ink-0:#0c0f13; --ink-1:#14181e; --ink-2:#1c222a; --ink-3:#27303a;
--panel:rgba(10,22,24,.72); --panel-strong:rgba(10,22,24,.86); --panel-line:rgba(95,184,162,.38);
--gold:#e0b862; --gold-deep:#b48a3c; --jade:#5fb8a2; --cinnabar:#d0573f; --text:#ece6d6; --text-dim:#a59e8f;
--hp:#e2462f; --hp-hi:#ff7a4a; --mp:#3d8bff; --cast:#8fe0a0; --exp:#e0b862; --cd-veil:rgba(0,0,0,.62);
--rel-self:#7dffb0; --rel-party:#1a9ce3; --rel-ally:#3fd25e; --rel-neutral:#eeee0f; --rel-enemy:#f03d08;
--rel-foe:#c51ac9; --rel-dead:#727272;
--q-yellow:#ffd200; --q-blue:#4fb3ff; --q-orange:#ff8a00; --q-green:#5ad25a; --q-gray:#9a9a9a;
--ok:#5ad25a; --warn:#e6a23c; --err:#ff5a4a;

--font:Tahoma,"Segoe UI",Roboto,"Noto Sans",system-ui,Arial,sans-serif; --font-title:"Noto Serif","Times New Roman",serif;
--shadow-text:0 1px 0 #262626,0 0 3px rgba(0,0,0,.9);

--sp-1:.25rem; --sp-2:.5rem; --sp-3:.75rem; --sp-4:1rem; --r-s:.375rem; --r-m:.625rem; --r-pill:999px;
--z-world:1; --z-hud:10; --z-controls:20; --z-sheet:30; --z-modal:40; --z-toast:50;
--dur-fast:120ms; --dur:200ms; --ease:cubic-bezier(.2,.8,.2,1);

--sl:max(12px,env(safe-area-inset-left)); --sr:max(12px,env(safe-area-inset-right));
--st:max(8px,env(safe-area-inset-top)); --sb:max(8px,env(safe-area-inset-bottom));

--tap:2.75rem; --btn-atk:4.8rem; --btn-skill:3.6rem; --btn-util:2.9rem; --btn-page:2.2rem;



--sf-scene:rgba(6,10,12,.62); --sf-hud:rgba(10,18,20,.86); --sf-panel:#12181d; --sf-raised:#1c232b; --sf-sunken:#0b0f13;
--sf-hover:rgba(224,184,98,.08); --sf-selected:rgba(224,184,98,.14); --sf-backdrop:rgba(4,6,8,.62);

--tx-1:#ece6d6; --tx-2:#c9c1ae; --tx-3:#a59e8f; --tx-off:#7d776c; --tx-on-ac:#1b1408; --tx-link:#f0cf7a;

--ac:#e0b862; --ac-hi:#ecc97a; --ac-lo:#b48a3c; --ac-2:#5fb8a2;

--st-ok:#5ad25a; --st-warn:#e6a23c; --st-danger:#ff7b66; --st-danger-fill:#b8321f; --st-info:#6cc4ff;

--rel-self-tx:#7dffb0; --rel-party-tx:#4cb6f0; --rel-ally-tx:#3fd25e; --rel-neutral-tx:#eeee0f; --rel-enemy-tx:#ff6a45;
--rel-foe-tx:#ea76ec; --rel-dead-tx:#9a9a9a;

--rare-0:#a9a9a9; --rare-1:#fafafa; --rare-2:#00d24b; --rare-3:#007eff; --rare-4:#ff2dff; --rare-5:#ffa500;
--rare-3-tx:#4da3ff; --rare-4-tx:#ff5cff;

--money-brick:#e07b39; --money-gold:#e8c15a; --money-silver:#c9d1d9; --money-copper:#c8875a;

--ln-1:rgba(95,184,162,.38); --ln-field:rgba(95,184,162,.62); --ln-2:rgba(255,255,255,.08); --ln-ac:rgba(224,184,98,.55);


--ui-text:1;
--fs-2xs:max(calc(10px*var(--ui-text)),.6875rem);
--fs-xs:max(calc(11px*var(--ui-text)),.75rem);
--fs-sm:max(calc(12px*var(--ui-text)),.8125rem);
--fs-md:max(calc(13px*var(--ui-text)),.875rem);
--fs-lg:max(calc(14px*var(--ui-text)),1rem);
--fs-xl:max(calc(16px*var(--ui-text)),1.125rem);
--fs-2xl:max(calc(20px*var(--ui-text)),1.5rem);
--fs-3xl:max(calc(24px*var(--ui-text)),2rem);
--lh-tight:1.25; --lh-body:1.45;


--sp-5:1.5rem; --sp-6:2rem; --r-xs:.25rem; --r-l:.875rem;
--elev-1:0 2px 8px rgba(0,0,0,.35); --elev-2:0 10px 28px rgba(0,0,0,.5); --elev-3:0 16px 48px rgba(0,0,0,.6);

--dur-press:80ms; --dur-slow:280ms; --ease-out:cubic-bezier(.4,0,1,1);

--z-tracker:15; --z-hint:25; --z-hudfx:28; --z-window:30; --z-feed:50; --z-loading:60; --z-system:70;

--k-h-sm:max(24px,1.5rem); --k-h-md:max(28px,2rem); --k-h-lg:max(36px,2.5rem); --k-icon:max(28px,2rem); --k-close:max(28px,2rem);

--slot:max(44px,3rem); --slot-gap:.25rem;
}

html[data-ui]:not([data-ui="desktop"]){
--fs-2xs:max(calc(11px*var(--ui-text)),.6875rem); --fs-xs:max(calc(12px*var(--ui-text)),.75rem);
--fs-sm:max(calc(13px*var(--ui-text)),.8125rem); --fs-md:max(calc(14px*var(--ui-text)),.875rem);
--fs-lg:max(calc(15px*var(--ui-text)),1rem); --fs-xl:max(calc(17px*var(--ui-text)),1.125rem);
--fs-2xl:max(calc(20px*var(--ui-text)),1.5rem); --fs-3xl:max(calc(24px*var(--ui-text)),2rem);
--k-h-sm:36px; --k-h-md:max(44px,2.75rem); --k-h-lg:52px; --k-icon:44px; --k-close:44px;
--slot:max(52px,3.25rem); --slot-gap:4px;
}
html{font-size:calc(16px*var(--ui-scale,1))}
