/* CJK fallbacks apply even with a Russian UI: names and chat may use either script. */
:root { --font-cjk: "Noto Sans SC", "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "WenQuanYi Micro Hei"; }
body { --font-ui: "Manrope", var(--font-cjk), system-ui, sans-serif; }
body.game-route { --font-ui: "Inter", "Segoe UI", var(--font-cjk), system-ui, sans-serif; }
.language-selector { min-width:0; color:var(--text-1,#f5f2eb); font-family:var(--font-ui); }
.language-selector-title { display:block; margin-bottom:7px; font-size:12px; font-weight:700; }
.language-choices { display:flex; flex-wrap:wrap; gap:8px; }
.language-choice { display:flex; align-items:center; justify-content:center; gap:8px; min-height:40px; padding:8px 12px; border:1px solid rgba(230,196,122,.25); border-radius:7px; background:rgba(0,0,0,.25); color:inherit; font:600 14px/1.4 var(--font-ui); cursor:pointer; }
.language-choice img { display:block; width:24px; height:16px; object-fit:cover; border-radius:2px; flex:none; }
.language-choice[aria-pressed="true"] { border-color:var(--gold,#e6c47a); background:rgba(230,196,122,.14); box-shadow:inset 0 -2px var(--gold,#e6c47a); }
.language-choice:focus-visible { outline:2px solid var(--gold,#e6c47a); outline-offset:3px; }
.language-choice[lang="zh-CN"] { font-family:var(--font-cjk),system-ui,sans-serif; }
.language-status,.language-hint { margin:7px 0 0; font:12px/1.6 var(--font-ui); color:var(--text-2,#ccc); }
.language-status:empty { display:none; }
.public-language { display:flex; justify-content:flex-end; align-items:center; flex-wrap:wrap; gap:8px 16px; max-width:1440px; margin:0 auto; padding:12px 20px; }
.public-language .language-selector-title { margin:0; }
.public-language .language-status { flex-basis:100%; text-align:right; }
.landing-open:not(.landing-portal) .landing-top { grid-template-columns:minmax(200px,1fr) auto auto auto; grid-template-areas:"brand language beta socials"; gap:14px; }
.landing-open:not(.landing-portal) .landing-brand { grid-area:brand; }
.landing-open:not(.landing-portal) .landing-beta { grid-area:beta; }
.landing-open:not(.landing-portal) .landing-socials { grid-area:socials; }
.landing-language { grid-area:language; min-width:230px; }
body.landing-portal .portal-header > .landing-language { grid-area:auto; grid-column:1 / -1; grid-row:2; display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px 14px; }
body.landing-portal .portal-header .language-selector-title { margin:0; }
body.landing-portal .portal-header .language-status { flex-basis:100%; text-align:center; margin:0; }
body.landing-portal .portal-header > .portal-brand { grid-row:1; grid-column:1; }
body.landing-portal .portal-header > .portal-main-nav { grid-row:1; grid-column:2; }
body.landing-portal .portal-header > .portal-header-actions { grid-row:1; grid-column:3; }
.settings-language { grid-column:1 / -1; grid-area:language; }
@media(min-width:761px) {
  .settings-box .settings-panel { grid-template-areas:"language language" "sound main" "account sections" "themes themes" "actions actions"; }
}
html:lang(zh-CN) body { --font-ui:var(--font-cjk),system-ui,sans-serif; }
html:lang(zh-CN) :is(.landing-title,.landing-brand-text,.auth-title,.reg-title,.npc-nm,.landing-copy,.landing-auth-form,.landing-account,.reg-box,.settings-box,.landing-audio) { font-family:var(--font-ui); letter-spacing:normal; }
html:lang(zh-CN) :is(.auth-title,.reg-title,.npc-nm) { line-height:1.4; }
html:lang(zh-CN) :is(.auth-sub,.reg-sub,.auth-field,.language-hint,.language-status) { line-height:1.65; }
html:lang(zh-CN) .landing-title { font-size:clamp(34px,4.4vw,60px); line-height:1.25; text-wrap:balance; }
html:lang(zh-CN) .landing-lead { line-height:1.8; }
html:lang(zh-CN) :is(.auth-field span,.auth-social-title,.auth-social-hint,.landing-rate span,.landing-toggle span,.landing-audio-row span,.reg-sub) { font-size:12px; line-height:1.6; letter-spacing:normal; }
html:lang(zh-CN) .auth-btn { font-size:14px; letter-spacing:normal; }
/* Explicit fallback on name/message surfaces otherwise using decorative fonts. */
:is(.cn,.top-guild-name,.landing-account-character-main b,.chat-name,.chat-text,.chat-private-offline-name) { font-family:var(--font-ui),var(--font-cjk),sans-serif; }
@media(max-width:1100px) {
  .landing-open:not(.landing-portal) .landing-top { grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"brand socials" "language beta"; }
  body.landing-portal .portal-header > .portal-header-actions { grid-column:2; }
  body.landing-portal .portal-header > .portal-main-nav { grid-column:1 / -1; grid-row:2; }
  body.landing-portal .portal-header > .landing-language { grid-row:3; }
}
@media(max-width:760px) {
  .landing-open:not(.landing-portal) .landing-top { grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"brand socials" "language language" "beta beta"; }
  .landing-language { width:100%; }
  .landing-open:not(.landing-portal) .landing-beta { grid-area:beta; }
  .landing-open:not(.landing-portal) .landing-socials { grid-area:socials; }
  .language-choice { min-height:44px; flex:1; }
  .settings-language { grid-area:auto; }
}
@media(max-width:700px) {
  body.landing-portal .portal-header > .portal-main-nav { grid-column:1; }
  body.landing-portal .portal-header .language-choices { flex:1; }
}

html:lang(zh-CN) :is(h1,h2,h3,h4,h5,h6,button,input,select,textarea) { font-family:var(--font-ui); letter-spacing:normal; }
html:lang(zh-CN) :is(h1,h2,h3,h4,h5,h6) { line-height:1.35; }
