/* ==========================================================================
   RYL Neverwinter - "Neo" page styles
   1) legacy base      : low-specificity (:where) defaults for module output
   2) codex            : modern parchment "tome" for the static guide pages
   3) nx kit           : dark UI components used by the rewritten modules
   Keep this file pure ASCII.
   ========================================================================== */

/* ------------------------------------------------------------------ 1 --- */
.legacy { color: #d0d0d0; font-family: Tahoma, Verdana, sans-serif; font-size: 9pt; }
.legacy :where(tr, select, form, option, div) { font-size: 9pt; font-family: Tahoma, Verdana, sans-serif; line-height: 15pt; }
.legacy :where(a:link, a:visited) { color: #e0bd6c; text-decoration: none; font-size: 12px; }
.legacy :where(a:hover, a:active) { color: #fff; }
.legacy :where(img) { border: 0; }
.legacy :where(h3, h4, h5) { color: var(--gold-2); }
.legacy :where(input[type=text], input[type=password], textarea, select) { max-width: 100%; }
.legacy :where(input[type=submit], input[type=button], input[type=reset], button:not([class])) {
  cursor: pointer; padding: 4px 12px; border-radius: 7px; border: 1px solid #a8792a; color: #1c1204; font: 700 11px/1.4 Tahoma, sans-serif;
  background: linear-gradient(180deg, #ffe3a3, #e8b64c 55%, #b98a32); box-shadow: 0 2px 6px -2px rgba(0, 0, 0, .6);
}
.legacy :where(input[type=submit], input[type=button], input[type=reset], button:not([class])):hover { filter: brightness(1.12); }
.legacy :where(.t7_gray) { font-family: Tahoma; font-size: 7pt; color: gray; line-height: 12pt; }
.legacy :where(.t8_gray) { font-family: Tahoma; font-size: 8pt; color: gray; }
.legacy :where(.t8_black) { font-family: Tahoma; font-size: 8pt; color: #2b2418; line-height: 15px; }
.legacy :where(.t9_black) { font-family: Tahoma; font-size: 9pt; color: #2b2418; }
.legacy :where(.t9_gray) { font-family: Tahoma; font-size: 9pt; color: gray; }
.legacy :where(.t8_d0) { font-family: Tahoma; font-size: 8pt; color: #d0d0d0; line-height: 15px; }
.legacy :where(.t9b_gray) { font-family: Tahoma; font-size: 9pt; color: gray; font-weight: bold; }
.legacy :where(.t10_black) { font-family: Tahoma; font-size: 10pt; color: #2b2418; }
.legacy :where(.t10b_black) { font-family: Tahoma; font-size: 10pt; color: #2b2418; font-weight: bold; }
.legacy :where(.hand) { cursor: pointer; }

/* ------------------------------------------------------------------ 2 --- */
/* Codex: the old parchment frame becomes one clean, rounded tome page.   */
.legacy .nx-legacy-title {
  display: flex; align-items: center; gap: 12px; margin: 0 0 16px; padding: 0;
  font: 800 26px/1.15 var(--font-display); letter-spacing: .06em; text-transform: uppercase;
  background: linear-gradient(180deg, #fff6dc, var(--gold) 60%, var(--gold-3)); -webkit-background-clip: text; background-clip: text; color: transparent;
}
.legacy .nx-legacy-title::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg, var(--line-strong), transparent); }

.legacy .nx-legacy-sub { display: inline-block; margin: 6px 0; padding: 4px 12px; border-radius: 8px; font: 700 12px/1.4 var(--font-display); letter-spacing: .1em; text-transform: uppercase; color: #f3dfb0; background: #3b2f1b; }
.legacy .nx-legacy-num { display: inline-grid; place-items: center; min-width: 24px; height: 18px; padding: 0 5px; border-radius: 5px; font: 700 11px/1 var(--font-body); color: #fff; background: #a3200f; }

/* frame artwork no longer needed */
.legacy :where(img[src*="bg_bodytop"], img[src*="bg_bodybottom"], img[src*="agree_top"], img[src*="agree_bottom"], img[src*="agree_left"], img[src*="agree_right"]) { display: none; }
.legacy div[style*="bg_bodytop"], .legacy div:has(> img[src*="bg_bodytop"]:only-child), .legacy div:has(> img[src*="bg_bodybottom"]:only-child) { display: none !important; }
.legacy span[style*="bodytitle_"] { width: auto !important; max-width: 100%; border-radius: 8px; }

/* the page itself */
.legacy div[style*="bg_bodymid"] {
  width: auto !important; max-width: 100%; margin: 0 0 8px; padding: 6px; border-radius: 16px; overflow: hidden;
  background: radial-gradient(120% 80% at 50% 0%, #e2dcc6 0%, #d8d1b7 55%, #cfc7ab 100%) !important;
  border: 1px solid rgba(232, 182, 76, .55);
  box-shadow: 0 0 0 4px rgba(0, 0, 0, .35), 0 0 0 5px rgba(232, 182, 76, .25), 0 30px 60px -30px rgba(0, 0, 0, .9), inset 0 0 60px rgba(120, 90, 40, .18);
  color: #2b2418;
}
.legacy div[style*="bg_bodymid"] :where(table[width]) { max-width: 100%; }
.legacy div[style*="bg_bodymid"] :where(table[height]) { height: auto; }
.legacy div[style*="bg_bodymid"] :where(td[background*="agree_"]) { background: none; width: 0; padding: 0; }
.legacy div[style*="bg_bodymid"] :where(a:link, a:visited) { color: #8a2d0f; font-weight: 600; }
.legacy div[style*="bg_bodymid"] :where(a:hover) { color: #c0392b; text-decoration: underline; }

/* banners + screenshots inside the tome */
.legacy div[style*="bg_bodymid"] img[src*=".jpg"] { border-radius: 12px; box-shadow: 0 10px 24px -12px rgba(0, 0, 0, .65), 0 0 0 1px rgba(0, 0, 0, .25); max-width: 100%; height: auto; }

/* old white "agree" boxes become soft rounded panels */
.legacy div[style*="bg_bodymid"] :where([bgcolor="#ffffff" i]) { background-color: #fbf8ef; border-radius: 12px; box-shadow: 0 1px 0 rgba(255, 255, 255, .6) inset, 0 8px 18px -12px rgba(60, 40, 10, .5); }
.legacy div[style*="bg_bodymid"] :where([bgcolor="#eeeeee" i]) { background-color: #efe8d3; color: #3a2f1c; font-weight: 600; }
.legacy div[style*="bg_bodymid"] :where([bgcolor="#cccccc" i]) { background-color: #3b2f1b; color: #f3dfb0; font-weight: 700; }
.legacy div[style*="bg_bodymid"] :where([bgcolor="#cccccc" i] td) { color: #f3dfb0; }
.legacy div[style*="bg_bodymid"] :where([bgcolor="#990000" i]) { background: linear-gradient(90deg, #b8741f, #d0283f); }
.legacy div[style*="bg_bodymid"] :where([bgcolor="#666666" i]) { background: linear-gradient(90deg, #d0283f, rgba(208, 40, 63, .15)); }
.legacy div[style*="bg_bodymid"] :where([bgcolor="#808080" i], [bgcolor="#b0b0b0" i]) { background-color: #d6ccb0; }
.legacy div[style*="bg_bodymid"] :where([bgcolor="#ffffee" i]) { background-color: #fff6dc; }
.legacy div[style*="bg_bodymid"] :where(font[color="#990000" i]) { color: #a3200f; }

/* gamedata pages bring their own <style> with #ids - beat them here */
.legacy #sub_navi { border: 0 !important; background: none !important; border-collapse: separate; border-spacing: 6px; }
.legacy #sub_navi td { background: #3b2f1b; border-radius: 10px; padding: 0; transition: background .2s, transform .2s; }
.legacy #sub_navi td:hover { background: linear-gradient(135deg, #d0283f, #ff6a2b); transform: translateY(-2px); }
.legacy #sub_navi td a { display: block; padding: 8px 6px; color: #f3dfb0 !important; font: 700 12px/1.3 var(--font-body) !important; letter-spacing: .06em; text-transform: uppercase; text-decoration: none !important; }
.legacy #sub_navi td a:hover { color: #fff !important; }
.legacy #sub_navi td.is-current { background: linear-gradient(135deg, #e8b64c, #a8792a); }
.legacy #sub_navi td.is-current a { color: #1c1204 !important; }
.legacy #skill_list td { border-bottom-color: rgba(59, 47, 27, .25) !important; }
.legacy #Gemtable_dt td { background: #3b2f1b !important; color: #f3dfb0; border-color: #3b2f1b !important; }
.legacy #Gemtable_dd td { background: #fbf8ef !important; border-bottom-color: rgba(59, 47, 27, .25) !important; }

/* legacy notice() output (kept for modules not rewritten) */
.nx-alert { display: flex; gap: 12px; align-items: flex-start; margin: 0 0 16px; padding: 14px 16px; border-radius: 12px; font: 400 13.5px/1.55 var(--font-body); color: var(--text); background: linear-gradient(90deg, rgba(232, 182, 76, .12), rgba(232, 182, 76, .03)); border: 1px solid var(--line-strong); }
.nx-alert--warn { background: linear-gradient(90deg, rgba(255, 77, 94, .14), rgba(255, 77, 94, .03)); border-color: rgba(255, 77, 94, .45); }
.nx-alert--ok { background: linear-gradient(90deg, rgba(61, 220, 132, .14), rgba(61, 220, 132, .03)); border-color: rgba(61, 220, 132, .45); }
.nx-alert svg { flex-shrink: 0; width: 22px; height: 22px; margin-top: 1px; color: var(--gold); }
.nx-alert--warn svg { color: var(--bad); }
.nx-alert--ok svg { color: var(--ok); }
.nx-alert b { display: block; margin-bottom: 2px; font: 700 12.5px/1.3 var(--font-display); letter-spacing: .1em; text-transform: uppercase; color: var(--gold-2); }
.nx-alert--warn b { color: #ff8a95; }
.nx-alert--ok b { color: #7ff0b0; }
.nx-alert a { color: var(--gold-2); }

/* ------------------------------------------------------------------ 3 --- */
/* nx kit: everything inside .nx is modern markup written by the Neo modules */
.nx { font: 400 14px/1.6 var(--font-body); color: var(--text); text-align: left; width: 100%; contain: inline-size; }
.nx *, .nx *::before, .nx *::after { box-sizing: border-box; }
.nx div, .nx form, .nx tr, .nx select, .nx option { font: inherit; line-height: inherit; }
.nx a { color: var(--gold-2); text-decoration: none; font-size: inherit; transition: color .2s; }
.nx a:hover { color: #fff; }
.nx p { margin: 0 0 12px; }
.nx h2, .nx h3, .nx h4 { color: var(--gold-2); font-family: var(--font-display); letter-spacing: .06em; }
.nx img { max-width: 100%; }
.nx .nx-muted { color: var(--muted); }
.nx .nx-gold { color: var(--gold-2); }
.nx .nx-mono { font-variant-numeric: tabular-nums; }
.nx-stack { display: grid; gap: 18px; }
.nx-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.nx-spacer { flex: 1; }

/* page head */
.nx-head { position: relative; margin: 0 0 20px; }
.nx-head__eyebrow { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 6px; font: 700 11px/1 var(--font-body); letter-spacing: .22em; text-transform: uppercase; color: var(--ember); }
.nx-head__eyebrow::before { content: ""; width: 18px; height: 2px; background: linear-gradient(90deg, var(--ember), transparent); }
.nx-head h1 { margin: 0; font: 800 clamp(24px, 3vw, 34px)/1.1 var(--font-display); letter-spacing: .04em; text-transform: uppercase; background: linear-gradient(180deg, #fff6dc, var(--gold) 60%, var(--gold-3)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.nx-head p { margin: 8px 0 0; color: var(--muted); max-width: 60ch; }
.nx-banner { position: relative; display: block; margin: 0 0 20px; border-radius: 16px; overflow: hidden; border: 1px solid var(--line); box-shadow: 0 24px 50px -28px rgba(0, 0, 0, .9); }
.nx-banner img { display: block; width: 100%; height: auto; transition: transform 1.2s var(--ease); }
.nx-banner:hover img { transform: scale(1.03); }
.nx-banner::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 1px rgba(255, 217, 138, .15); border-radius: 16px; pointer-events: none; }

/* panels */
.nx-panel { position: relative; border-radius: 14px; background: rgba(255, 255, 255, .025); border: 1px solid rgba(255, 255, 255, .06); padding: 18px; }
.nx-panel--gold { background: linear-gradient(135deg, rgba(232, 182, 76, .10), rgba(255, 255, 255, .02)); border-color: var(--line); }
.nx-panel__title { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; font: 700 13px/1.2 var(--font-display); letter-spacing: .16em; text-transform: uppercase; color: var(--gold-2); }
.nx-panel__title svg { width: 18px; height: 18px; color: var(--gold); flex-shrink: 0; }
.nx-panel__title small { margin-left: auto; font: 500 11px/1 var(--font-body); letter-spacing: .04em; text-transform: none; color: var(--muted); }

/* buttons (reuse the global look) */
.nx .nx-btn { --b1: var(--gold-2); --b2: var(--gold); --b3: var(--gold-3); position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 40px; padding: 0 18px; border: 0; border-radius: 11px; cursor: pointer; overflow: hidden; font: 700 12px/1 var(--font-body); letter-spacing: .1em; text-transform: uppercase; text-decoration: none; white-space: nowrap; color: #1c1204; background: linear-gradient(180deg, var(--b1), var(--b2) 50%, var(--b3)); box-shadow: 0 8px 20px -10px rgba(232, 182, 76, .8), inset 0 1px 0 rgba(255, 255, 255, .5); transition: transform .2s var(--ease), filter .2s, box-shadow .2s; }
.nx .nx-btn:hover { color: #1c1204; transform: translateY(-2px); filter: saturate(1.15) brightness(1.05); }
.nx .nx-btn:active { transform: none; }
.nx .nx-btn:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.nx .nx-btn svg { width: 16px; height: 16px; }
.nx .nx-btn--fire { --b1: #ffb27a; --b2: var(--ember); --b3: #b0311b; color: #fff; }
.nx .nx-btn--fire:hover { color: #fff; }
.nx .nx-btn--ghost { color: var(--gold-2); background: rgba(232, 182, 76, .07); box-shadow: inset 0 0 0 1px var(--line-strong); }
.nx .nx-btn--ghost:hover { color: #fff; background: rgba(232, 182, 76, .16); }
.nx .nx-btn--danger { --b1: #ff8a95; --b2: #d0283f; --b3: #8e1426; color: #fff; }
.nx .nx-btn--sm { min-height: 32px; padding: 0 12px; font-size: 10.5px; border-radius: 9px; }
.nx .nx-btn[disabled] { opacity: .45; pointer-events: none; }

/* forms */
.nx-form { display: grid; gap: 14px; }
.nx-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.nx-grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.nx-field { display: grid; gap: 6px; }
.nx-field > span, .nx-label { font: 600 11px/1.2 var(--font-body); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.nx input[type=text], .nx input[type=number], .nx input[type=email], .nx input[type=password], .nx input[type=search], .nx input[type=file], .nx select, .nx textarea {
  width: 100%; min-height: 42px; padding: 10px 12px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, .09); background: rgba(0, 0, 0, .35); color: #fff;
  font: 500 14px/1.4 var(--font-body); outline: none; transition: border-color .2s, box-shadow .2s, background .2s;
}
.nx input[type=file] { padding: 8px; }
.nx textarea { min-height: 140px; resize: vertical; }
.nx select { cursor: pointer; appearance: none; -webkit-appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--gold) 50%), linear-gradient(135deg, var(--gold) 50%, transparent 50%); background-position: calc(100% - 17px) 55%, calc(100% - 12px) 55%; background-size: 5px 5px; background-repeat: no-repeat; padding-right: 34px; }
.nx select option { background: #11151e; color: #fff; }
.nx input:focus, .nx select:focus, .nx textarea:focus { border-color: var(--gold); box-shadow: 0 0 0 3px rgba(232, 182, 76, .18); background-color: rgba(0, 0, 0, .5); }
.nx input::placeholder, .nx textarea::placeholder { color: rgba(152, 161, 177, .7); }

/* segmented radio / checkbox chips */
.nx-seg { display: inline-flex; flex-wrap: wrap; gap: 6px; padding: 4px; border-radius: 12px; background: rgba(0, 0, 0, .3); border: 1px solid rgba(255, 255, 255, .06); }
.nx-seg label { position: relative; cursor: pointer; }
.nx-seg input { position: absolute; opacity: 0; pointer-events: none; }
.nx-seg span { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 9px; font: 600 12px/1 var(--font-body); color: #c9ced8; transition: background .2s, color .2s, box-shadow .2s; white-space: nowrap; }
.nx-seg label:hover span { color: #fff; background: rgba(255, 255, 255, .05); }
.nx-seg input:checked + span { color: #1c1204; background: linear-gradient(180deg, var(--gold-2), var(--gold)); box-shadow: 0 4px 14px -6px rgba(232, 182, 76, .9); }
.nx-seg input:focus-visible + span { outline: 2px solid #fff; outline-offset: 2px; }
.nx-seg--race input:checked + span.is-human { background: linear-gradient(180deg, #fff27a, #d9b800); }
.nx-seg--race input:checked + span.is-akkan { background: linear-gradient(180deg, #ff9aa4, #d0283f); color: #fff; }

/* badges */
.nx-badge { display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px; border-radius: 30px; font: 700 10.5px/1.4 var(--font-body); letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; background: rgba(255, 255, 255, .06); color: #cfd3dc; border: 1px solid rgba(255, 255, 255, .08); }
.nx-badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; box-shadow: 0 0 8px currentColor; }
.nx-badge--plain::before { display: none; }
.nx-badge--human { color: var(--human); background: rgba(250, 224, 15, .08); border-color: rgba(250, 224, 15, .3); }
.nx-badge--akkan { color: #ff7a86; background: rgba(255, 77, 94, .08); border-color: rgba(255, 77, 94, .3); }
.nx-badge--gold { color: var(--gold-2); background: rgba(232, 182, 76, .1); border-color: var(--line-strong); }
.nx-badge--ok { color: var(--ok); background: rgba(61, 220, 132, .08); border-color: rgba(61, 220, 132, .3); }
.nx-badge--bad { color: var(--bad); background: rgba(255, 77, 94, .08); border-color: rgba(255, 77, 94, .3); }
.nx-gender { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 6px; font: 700 11px/1 var(--font-body); flex-shrink: 0; }
.nx-gender--m { color: #7fb4ff; background: rgba(127, 180, 255, .12); }
.nx-gender--f { color: #ff9ad0; background: rgba(255, 154, 208, .12); }

/* tables */
.nx-table-wrap { border-radius: 14px; border: 1px solid rgba(255, 255, 255, .07); overflow: hidden; overflow-x: auto; background: rgba(0, 0, 0, .18); }
.nx-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.nx-table th { position: sticky; top: 0; padding: 12px 14px; text-align: left; font: 700 10.5px/1.2 var(--font-body); letter-spacing: .14em; text-transform: uppercase; color: var(--gold-2); background: linear-gradient(180deg, rgba(40, 33, 20, .96), rgba(26, 22, 15, .96)); border-bottom: 1px solid var(--line-strong); white-space: nowrap; }
.nx-table th[data-sort] { cursor: pointer; user-select: none; }
.nx-table th[data-sort]::after { content: ""; display: inline-block; width: 0; height: 0; margin-left: 6px; border: 4px solid transparent; border-top-color: rgba(255, 217, 138, .35); vertical-align: -2px; }
.nx-table th.is-asc::after { border-top-color: transparent; border-bottom-color: var(--gold); vertical-align: 2px; }
.nx-table th.is-desc::after { border-top-color: var(--gold); }
.nx-table td { padding: 11px 14px; border-bottom: 1px solid rgba(255, 255, 255, .05); vertical-align: middle; }
.nx-table tbody tr { transition: background .2s; }
.nx-table tbody tr:hover { background: rgba(232, 182, 76, .06); }
.nx-table tbody tr:last-child td { border-bottom: 0; }
.nx-table .nx-num { text-align: right; font-variant-numeric: tabular-nums; }
.nx-table .nx-c { text-align: center; }
.nx-table .nx-rank { width: 56px; font: 700 13px/1 var(--font-display); color: var(--muted); }
.nx-table tr.is-top1 .nx-rank { color: #ffd98a; text-shadow: 0 0 12px rgba(232, 182, 76, .8); }
.nx-table tr.is-top2 .nx-rank { color: #e6e9ef; }
.nx-table tr.is-top3 .nx-rank { color: #e3a06b; }
.nx-table tr.is-hidden { display: none; }
.nx-name { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: #fff; }
.nx a.nx-name:hover { color: var(--gold-2); }
.nx-level { display: flex; align-items: center; gap: 10px; min-width: 120px; }
.nx-level b { min-width: 28px; font: 700 14px/1 var(--font-display); color: #fff; }
.nx-level i { flex: 1; height: 6px; border-radius: 6px; background: rgba(255, 255, 255, .07); overflow: hidden; }
.nx-level i::before { content: ""; display: block; width: var(--p, 0%); height: 100%; border-radius: 6px; background: linear-gradient(90deg, var(--gold-3), var(--gold-2)); box-shadow: 0 0 10px rgba(232, 182, 76, .6); }

/* toolbar above tables */
.nx-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 12px; }
.nx-search { position: relative; flex: 1; min-width: 180px; }
.nx-search svg { position: absolute; left: 12px; top: 50%; width: 16px; height: 16px; transform: translateY(-50%); color: var(--muted); pointer-events: none; }
.nx .nx-search input { padding-left: 36px; }

/* podium */
.nx-podium { display: flex; justify-content: center; align-items: flex-end; gap: 14px; margin: 0 0 22px; }
.nx-podium > .nx-hero-card { flex: 1 1 0; max-width: 240px; min-width: 0; }
.nx-podium > .nx-hero-card.is-1 { flex-grow: 1.12; max-width: 270px; }
.nx-hero-card { position: relative; display: block; padding: 22px 16px 18px; border-radius: 16px; text-align: center; overflow: hidden; color: var(--text); background: linear-gradient(180deg, rgba(255, 255, 255, .06), rgba(255, 255, 255, .015)); border: 1px solid rgba(255, 255, 255, .08); transition: transform .3s var(--ease), box-shadow .3s; }
.nx a.nx-hero-card { color: var(--text); }
.nx-hero-card:hover { transform: translateY(-4px); box-shadow: 0 20px 40px -20px rgba(232, 182, 76, .6); }
.nx-hero-card::before { content: ""; position: absolute; inset: 0; background: radial-gradient(80% 60% at 50% 0%, var(--glow-c, rgba(232, 182, 76, .25)), transparent 70%); pointer-events: none; }
.nx-hero-card.is-1 { --glow-c: rgba(232, 182, 76, .35); padding-top: 30px; border-color: rgba(232, 182, 76, .55); box-shadow: 0 0 0 1px rgba(232, 182, 76, .2), 0 24px 50px -24px rgba(232, 182, 76, .7); }
.nx-hero-card.is-2 { --glow-c: rgba(210, 216, 228, .2); }
.nx-hero-card.is-3 { --glow-c: rgba(227, 160, 107, .22); }
.nx-medal { position: relative; display: grid; place-items: center; width: 54px; height: 54px; margin: 0 auto 12px; border-radius: 50%; font: 800 22px/1 var(--font-display); color: #1c1204; background: conic-gradient(from 200deg, #fff1b8, #e8b64c, #a8792a, #fff1b8); box-shadow: 0 0 0 3px rgba(0, 0, 0, .45), 0 0 26px -2px rgba(232, 182, 76, .9); }
.is-2 .nx-medal { background: conic-gradient(from 200deg, #ffffff, #b7bfcc, #6c7482, #ffffff); box-shadow: 0 0 0 3px rgba(0, 0, 0, .45), 0 0 20px -4px rgba(210, 216, 228, .8); }
.is-3 .nx-medal { background: conic-gradient(from 200deg, #ffd2ad, #c9793d, #7d4214, #ffd2ad); box-shadow: 0 0 0 3px rgba(0, 0, 0, .45), 0 0 20px -4px rgba(227, 160, 107, .8); color: #fff; }
.is-1 .nx-medal { width: 64px; height: 64px; font-size: 26px; animation: nx-float 3.5s ease-in-out infinite; }
@keyframes nx-float { 50% { transform: translateY(-5px); } }
.nx-hero-card h3 { position: relative; margin: 0 0 6px; font: 700 17px/1.2 var(--font-display); color: #fff; letter-spacing: .04em; word-break: break-word; }
.nx-hero-card .nx-row { justify-content: center; }
.nx-hero-card dl { position: relative; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 14px 0 0; }
.nx-hero-card dl div { padding: 8px 4px; border-radius: 10px; background: rgba(0, 0, 0, .25); }
.nx-hero-card dt { font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.nx-hero-card dd { margin: 2px 0 0; font: 700 16px/1.1 var(--font-display); color: #fff; font-variant-numeric: tabular-nums; }

/* stat tiles + key/value lists */
.nx-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 12px; }
.nx-tile { padding: 14px; border-radius: 12px; background: rgba(0, 0, 0, .25); border: 1px solid rgba(255, 255, 255, .06); }
.nx-tile small { display: block; font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.nx-tile b { display: block; margin-top: 4px; font: 700 20px/1.1 var(--font-display); color: #fff; font-variant-numeric: tabular-nums; word-break: break-word; }
.nx-kv { display: grid; grid-template-columns: max-content 1fr; gap: 0; margin: 0; border-radius: 12px; overflow: hidden; border: 1px solid rgba(255, 255, 255, .07); }
.nx-kv dt, .nx-kv dd { margin: 0; padding: 11px 14px; border-bottom: 1px solid rgba(255, 255, 255, .05); }
.nx-kv dt { font: 600 11px/1.6 var(--font-body); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); background: rgba(255, 255, 255, .025); }
.nx-kv dd { color: #fff; font-weight: 500; }
.nx-kv dt:last-of-type, .nx-kv dd:last-of-type { border-bottom: 0; }

/* attribute bars */
.nx-bars { display: grid; gap: 10px; }
.nx-bar { display: grid; grid-template-columns: 90px 1fr 60px; align-items: center; gap: 12px; font-size: 12.5px; }
.nx-bar > span { color: var(--muted); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; font-size: 11px; }
.nx-bar > i { height: 8px; border-radius: 8px; background: rgba(255, 255, 255, .06); overflow: hidden; }
.nx-bar > i::before { content: ""; display: block; height: 100%; width: var(--p, 0%); border-radius: 8px; background: linear-gradient(90deg, var(--c1, var(--gold-3)), var(--c2, var(--gold-2))); box-shadow: 0 0 12px var(--c2, rgba(232, 182, 76, .6)); transform-origin: left; animation: nx-grow 1.1s var(--ease) both; }
@keyframes nx-grow { from { transform: scaleX(0); } }
.nx-bar > b { text-align: right; color: #fff; font-variant-numeric: tabular-nums; }

/* profile header */
.nx-profile { display: flex; align-items: center; gap: 18px; padding: 20px; border-radius: 16px; background: radial-gradient(120% 140% at 0% 0%, rgba(232, 182, 76, .16), rgba(255, 255, 255, .02) 60%); border: 1px solid var(--line); margin-bottom: 18px; }
.nx-avatar { position: relative; display: grid; place-items: center; flex-shrink: 0; width: 84px; height: 84px; border-radius: 22px; font: 800 34px/1 var(--font-display); color: #1c1204; text-transform: uppercase; background: linear-gradient(135deg, var(--gold-2), var(--gold-3)); box-shadow: 0 0 0 3px rgba(0, 0, 0, .5), 0 0 30px -4px rgba(232, 182, 76, .8); }
.nx-avatar.is-akkan { color: #fff; background: linear-gradient(135deg, #ff8a95, #8e1426); box-shadow: 0 0 0 3px rgba(0, 0, 0, .5), 0 0 30px -4px rgba(255, 77, 94, .8); }
.nx-avatar small { position: absolute; right: -8px; bottom: -8px; display: grid; place-items: center; min-width: 34px; height: 26px; padding: 0 6px; border-radius: 9px; font: 800 12px/1 var(--font-body); color: #fff; background: #0c1017; border: 1px solid var(--line-strong); }
.nx-profile h2 { margin: 0 0 6px; font: 800 26px/1.1 var(--font-display); color: #fff; letter-spacing: .03em; word-break: break-word; }
.nx-profile p { margin: 8px 0 0; color: var(--muted); font-size: 13px; }

/* cards grid (news, downloads, shop, gallery) */
.nx-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.nx-card { position: relative; display: flex; flex-direction: column; border-radius: 14px; overflow: hidden; background: rgba(255, 255, 255, .03); border: 1px solid rgba(255, 255, 255, .07); transition: transform .3s var(--ease), border-color .3s, box-shadow .3s; }
.nx-card:hover { transform: translateY(-3px); border-color: var(--line-strong); box-shadow: 0 20px 40px -22px rgba(232, 182, 76, .55); }
.nx-card__body { padding: 16px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.nx-card__body h3 { margin: 0; font: 700 15px/1.3 var(--font-display); color: #fff; letter-spacing: .03em; }
.nx-card__meta { display: flex; flex-wrap: wrap; gap: 6px 12px; font-size: 12px; color: var(--muted); }

/* announcements */
.nx-news { position: relative; padding: 20px 22px; border-radius: 16px; background: linear-gradient(180deg, rgba(255, 255, 255, .04), rgba(255, 255, 255, .015)); border: 1px solid rgba(255, 255, 255, .07); }
.nx-news + .nx-news { margin-top: 14px; }
.nx-news::before { content: ""; position: absolute; left: 0; top: 18px; bottom: 18px; width: 3px; border-radius: 3px; background: linear-gradient(var(--gold), var(--ember)); }
.nx-news__date { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; float: right; width: 58px; height: 58px; margin: 0 0 8px 12px; border-radius: 14px; background: rgba(0, 0, 0, .35); border: 1px solid var(--line); }
.nx-news__date b { font: 800 20px/1 var(--font-display); color: #fff; }
.nx-news__date small { font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
.nx-news h2 { margin: 0 0 6px; font: 700 20px/1.25 var(--font-display); letter-spacing: .02em; }
.nx-news h2 a { color: #fff; }
.nx-news h2 a:hover { color: var(--gold-2); }
.nx-news__body { color: #d5d9e1; overflow-wrap: anywhere; }
.nx-news__body img { max-width: 100%; height: auto; border-radius: 10px; }
.nx-news__more { display: none; margin-top: 10px; }
.nx-news__more.is-open { display: block; animation: nx-fade .35s var(--ease); }
@keyframes nx-fade { from { opacity: 0; transform: translateY(-4px); } }
.nx-collapse { display: none; }
.nx-collapse.is-open { display: grid; animation: nx-fade .35s var(--ease); }
.nx-news__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 14px; padding-top: 12px; border-top: 1px solid rgba(255, 255, 255, .06); font-size: 12.5px; color: var(--muted); }
.nx-news__foot form { display: inline; margin: 0; }

.nx-comment { display: grid; grid-template-columns: 42px 1fr; gap: 12px; padding: 14px; border-radius: 14px; background: rgba(255, 255, 255, .025); border: 1px solid rgba(255, 255, 255, .06); }
.nx-comment + .nx-comment { margin-top: 10px; }
.nx-comment__av { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; font: 800 16px/1 var(--font-display); text-transform: uppercase; color: #1c1204; background: linear-gradient(135deg, var(--gold-2), var(--gold-3)); }
.nx-comment__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin-bottom: 4px; }
.nx-comment__head b { color: #fff; }
.nx-comment__head small { color: var(--muted); font-size: 11.5px; }
.nx-comment__body { color: #d5d9e1; overflow-wrap: anywhere; }
.nx-comment__tools { display: flex; gap: 6px; margin-top: 8px; }
.nx-comment__tools form { margin: 0; }

/* gallery + lightbox */
.nx-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; }
.nx-shot { position: relative; display: block; border-radius: 14px; overflow: hidden; background: #0b0e14; border: 1px solid rgba(255, 255, 255, .07); aspect-ratio: 4 / 3; }
.nx-shot img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease), filter .4s; }
.nx-shot:hover img { transform: scale(1.07); filter: brightness(.7); }
.nx-shot figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 30px 12px 10px; background: linear-gradient(transparent, rgba(0, 0, 0, .9)); font-size: 12px; color: #fff; }
.nx-shot figcaption b { display: block; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nx-shot figcaption small { color: var(--muted); }
.nx-shot-wrap { display: grid; gap: 6px; margin: 0; }
.nx-shot-wrap .nx-row { font-size: 12px; }
.nx-lightbox { position: fixed; inset: 0; z-index: 5000; display: grid; place-items: center; padding: 24px; background: rgba(4, 5, 8, .92); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); opacity: 0; visibility: hidden; transition: opacity .25s, visibility 0s .25s; }
.nx-lightbox.is-open { opacity: 1; visibility: visible; transition-delay: 0s; }
.nx-lightbox img { max-width: min(1200px, 100%); max-height: calc(100vh - 110px); border-radius: 12px; box-shadow: 0 30px 80px rgba(0, 0, 0, .8); transform: scale(.96); transition: transform .3s var(--ease); }
.nx-lightbox.is-open img { transform: none; }
.nx-lightbox p { margin: 12px 0 0; text-align: center; color: #fff; font: 600 14px/1.4 var(--font-body); }
.nx-lightbox button { position: absolute; top: 16px; right: 16px; width: 44px; height: 44px; border-radius: 12px; border: 1px solid var(--line-strong); background: rgba(16, 20, 29, .9); color: var(--gold-2); font-size: 22px; line-height: 1; cursor: pointer; }

/* shop */
.nx-shop { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
.nx-item { position: relative; display: flex; flex-direction: column; padding: 16px; border-radius: 16px; background: linear-gradient(180deg, rgba(255, 255, 255, .045), rgba(255, 255, 255, .015)); border: 1px solid rgba(255, 255, 255, .07); overflow: hidden; transition: transform .3s var(--ease), border-color .3s, box-shadow .3s; }
.nx-item::before { content: ""; position: absolute; right: -40px; top: -40px; width: 140px; height: 140px; border-radius: 50%; background: radial-gradient(circle, rgba(232, 182, 76, .22), transparent 70%); pointer-events: none; }
.nx-item:hover { transform: translateY(-4px); border-color: var(--line-strong); box-shadow: 0 22px 44px -24px rgba(232, 182, 76, .7); }
.nx-item__top { display: flex; gap: 14px; align-items: center; }
.nx-item__icon { display: grid; place-items: center; flex-shrink: 0; width: 70px; height: 70px; border-radius: 14px; background: radial-gradient(circle at 50% 40%, rgba(232, 182, 76, .25), rgba(0, 0, 0, .5)); border: 1px solid var(--line); box-shadow: inset 0 0 20px rgba(0, 0, 0, .5); }
.nx-item__icon img { width: 60px; height: 60px; object-fit: contain; image-rendering: auto; }
.nx-item h3 { margin: 0 0 6px; font: 700 15px/1.25 var(--font-display); color: #fff; letter-spacing: .02em; }
.nx-price { display: inline-flex; align-items: baseline; gap: 4px; font: 800 20px/1 var(--font-display); color: var(--gold-2); text-shadow: 0 0 16px rgba(232, 182, 76, .4); }
.nx-price small { font: 700 11px/1 var(--font-body); color: var(--gold); letter-spacing: .08em; }
.nx-item dl { display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; margin: 14px 0 0; font-size: 12.5px; }
.nx-item dt { color: var(--muted); text-transform: uppercase; letter-spacing: .1em; font-size: 10.5px; padding-top: 2px; }
.nx-item dd { margin: 0; color: #fff; }
.nx-item__stat { margin-top: 12px; padding: 10px 12px; border-radius: 10px; background: rgba(232, 182, 76, .08); border: 1px dashed var(--line-strong); color: #f3dfb0; font-size: 12.5px; }

/* steps */
.nx-steps { counter-reset: st; display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.nx-steps li { counter-increment: st; position: relative; padding: 12px 14px 12px 54px; border-radius: 12px; background: rgba(255, 255, 255, .025); border: 1px solid rgba(255, 255, 255, .06); }
.nx-steps li::before { content: counter(st); position: absolute; left: 12px; top: 50%; transform: translateY(-50%); display: grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; font: 800 14px/1 var(--font-display); color: #1c1204; background: linear-gradient(135deg, var(--gold-2), var(--gold-3)); }

/* copy field */
.nx-copy { position: relative; }
.nx-copy textarea { min-height: 76px; padding-right: 90px; font: 500 12.5px/1.5 Consolas, "Courier New", monospace; }
.nx-copy .nx-btn { position: absolute; right: 8px; top: 8px; }

/* empty state */
.nx-empty { display: grid; justify-items: center; gap: 10px; padding: 40px 20px; text-align: center; border-radius: 16px; border: 1px dashed var(--line-strong); background: radial-gradient(60% 80% at 50% 0%, rgba(232, 182, 76, .08), transparent 70%); }
.nx-empty__icon { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 20px; color: var(--gold-2); background: rgba(232, 182, 76, .1); border: 1px solid var(--line); animation: nx-float 4s ease-in-out infinite; }
.nx-empty__icon svg { width: 30px; height: 30px; }
.nx-empty h3 { margin: 4px 0 0; font: 700 17px/1.2 var(--font-display); color: #fff; }
.nx-empty p { margin: 0; color: var(--muted); max-width: 44ch; }

/* pager */
.nx-pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-top: 14px; font-size: 12.5px; color: var(--muted); }
.nx-pager form { margin: 0; }

/* swatches (signature colours) */
.nx-swatch { width: 14px; height: 14px; border-radius: 50%; box-shadow: 0 0 0 2px rgba(255, 255, 255, .15); }
.nx-choice-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.nx-choice { position: relative; display: block; cursor: pointer; border-radius: 14px; overflow: hidden; border: 2px solid rgba(255, 255, 255, .08); transition: border-color .2s, transform .2s var(--ease), box-shadow .2s; }
.nx-choice input { position: absolute; opacity: 0; pointer-events: none; }
.nx-choice img { display: block; width: 100%; height: auto; }
.nx-choice span { display: block; padding: 8px 12px; font-size: 12px; color: var(--muted); background: rgba(0, 0, 0, .35); }
.nx-choice:hover { transform: translateY(-2px); }
.nx-choice:has(input:checked) { border-color: var(--gold); box-shadow: 0 0 0 3px rgba(232, 182, 76, .25), 0 14px 30px -16px rgba(232, 182, 76, .8); }
.nx-choice:has(input:checked) span { color: #1c1204; background: linear-gradient(180deg, var(--gold-2), var(--gold)); font-weight: 700; }
.nx-choice:has(input:focus-visible) { outline: 2px solid #fff; outline-offset: 2px; }

/* stat bars on statistics page */
.nx-meter { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 6px 12px; padding: 9px 0; font-size: 13px; }
.nx-meter > i { grid-column: 1 / -1; grid-row: 2; }
.nx-meter + .nx-meter { border-top: 1px solid rgba(255, 255, 255, .05); }
.nx-meter > span { color: #dfe3ea; }
.nx-meter > i { height: 10px; border-radius: 10px; background: rgba(255, 255, 255, .06); overflow: hidden; }
.nx-meter > i::before { content: ""; display: block; height: 100%; width: var(--p, 0%); border-radius: 10px; background: linear-gradient(90deg, var(--c1, var(--gold-3)), var(--c2, var(--gold-2))); animation: nx-grow 1.1s var(--ease) both; transform-origin: left; }
.nx-meter > b { text-align: right; color: #fff; font-variant-numeric: tabular-nums; font-weight: 600; }

/* rules list */
.nx-rules { counter-reset: rl; display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.nx-rules li { counter-increment: rl; position: relative; padding: 18px 18px 18px 72px; border-radius: 14px; background: rgba(255, 255, 255, .025); border: 1px solid rgba(255, 255, 255, .06); }
.nx-rules li::before { content: counter(rl, decimal-leading-zero); position: absolute; left: 18px; top: 16px; font: 800 26px/1 var(--font-display); color: transparent; -webkit-text-stroke: 1px var(--gold); }
.nx-rules h3 { margin: 0 0 6px; font: 700 15px/1.3 var(--font-display); color: #fff; letter-spacing: .06em; text-transform: uppercase; }
.nx-rules p { margin: 0; color: #cfd4dd; }

/* ---------------------------------------------------------------- register */
.rg-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; align-items: start; }
.rg-aside { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; align-items: start; }
.rg-confirm { display: grid; gap: 12px; }
.rg-form { gap: 16px; }
.rg-step { display: flex; align-items: center; gap: 10px; margin-top: 4px; font: 700 12px/1 var(--font-display); letter-spacing: .18em; text-transform: uppercase; color: var(--gold-2); }
.rg-step::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg, var(--line-strong), transparent); }
.rg-step span { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 8px; font: 800 12px/1 var(--font-display); color: #1c1204; background: linear-gradient(135deg, var(--gold-2), var(--gold-3)); }
.rg-input { position: relative; }
.rg-input > svg { position: absolute; left: 12px; top: 50%; width: 17px; height: 17px; transform: translateY(-50%); color: var(--muted); pointer-events: none; transition: color .2s; }
.nx .rg-input input { padding-left: 38px; }
.nx .rg-input input[type=password], .nx .rg-input input[data-shown] { padding-right: 44px; }
.rg-input:focus-within > svg { color: var(--gold); }
.rg-eye { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 32px; height: 32px; display: grid; place-items: center; border: 0; border-radius: 8px; background: none; color: var(--muted); cursor: pointer; }
.rg-eye:hover, .rg-eye[aria-pressed="true"] { color: var(--gold-2); background: rgba(255, 255, 255, .06); }
.rg-eye svg { width: 17px; height: 17px; }
.rg-msg { display: block; font-size: 11.5px; color: var(--muted); min-height: 16px; transition: color .2s; }
.rg-msg.is-bad { color: #ff8a95; }
.rg-msg.is-ok { color: #7ff0b0; }
.rg-field.is-bad .rg-msg[data-for] { display: none; }
.nx .rg-field.is-bad input, .nx .rg-field.is-bad select { border-color: var(--bad); box-shadow: 0 0 0 3px rgba(255, 77, 94, .15); }
.nx .rg-field.is-ok input { border-color: rgba(61, 220, 132, .6); }
.rg-field.is-ok .rg-input > svg { color: var(--ok); }
.rg-field.is-shake { animation: neo-shake .4s; }
.rg-strength { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; margin-top: 2px; }
.rg-strength i { height: 4px; border-radius: 4px; background: rgba(255, 255, 255, .08); transition: background .3s; }
.rg-strength[data-level="1"] i:nth-child(-n+1) { background: var(--bad); }
.rg-strength[data-level="2"] i:nth-child(-n+2) { background: #ff9a3d; }
.rg-strength[data-level="3"] i:nth-child(-n+3) { background: var(--gold); }
.rg-strength[data-level="4"] i:nth-child(-n+4) { background: var(--ok); box-shadow: 0 0 8px rgba(61, 220, 132, .5); }
.rg-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.rg-agree { display: flex; gap: 10px; align-items: flex-start; padding: 12px; border-radius: 11px; background: rgba(0, 0, 0, .25); border: 1px solid rgba(255, 255, 255, .07); font-size: 13px; color: #cfd4dd; cursor: pointer; }
.rg-agree input { flex-shrink: 0; width: 18px; height: 18px; margin: 1px 0 0; accent-color: var(--gold); cursor: pointer; }
.rg-agree.is-bad { border-color: var(--bad); }
.nx .rg-submit { width: 100%; min-height: 52px; font-size: 13.5px; border-radius: 13px; }
.nx .rg-submit[aria-busy="true"] { opacity: .75; pointer-events: none; }
.nx .rg-submit[aria-busy="true"] svg { animation: nx-spin 1s linear infinite; }
@keyframes nx-spin { to { transform: rotate(360deg); } }
.rg-success { position: relative; overflow: hidden; padding: 44px 22px 34px; border-radius: 18px; text-align: center; background: radial-gradient(70% 90% at 50% 0%, rgba(61, 220, 132, .16), rgba(255, 255, 255, .02) 70%); border: 1px solid rgba(61, 220, 132, .35); }
.rg-success h1 { margin: 6px 0 10px; font: 800 clamp(26px, 3.4vw, 38px)/1.1 var(--font-display); background: linear-gradient(180deg, #fff, var(--gold-2)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.rg-success p { max-width: 52ch; margin: 0 auto; color: #d5d9e1; }
.rg-check { display: grid; place-items: center; width: 84px; height: 84px; margin: 0 auto 14px; border-radius: 50%; color: #07130c; background: radial-gradient(circle at 35% 30%, #b9ffd8, var(--ok)); box-shadow: 0 0 0 6px rgba(61, 220, 132, .15), 0 0 40px rgba(61, 220, 132, .6); animation: rg-pop .6s var(--ease) both; }
.rg-check svg { width: 42px; height: 42px; stroke-width: 2.5; }
@keyframes rg-pop { 0% { transform: scale(.3); opacity: 0; } 70% { transform: scale(1.12); } 100% { transform: scale(1); opacity: 1; } }
.rg-burst { position: absolute; left: 50%; top: 86px; width: 0; height: 0; pointer-events: none; }
.rg-burst i { position: absolute; width: 8px; height: 14px; border-radius: 2px; background: hsl(calc(var(--i) * 26 + 20), 95%, 60%); transform: rotate(calc(var(--i) * 25.7deg)) translateY(0); animation: rg-fly 1.4s var(--ease) calc(var(--i) * 20ms) both; opacity: 0; }
@keyframes rg-fly { 0% { opacity: 1; transform: rotate(calc(var(--i) * 25.7deg)) translateY(0) scale(.6); } 100% { opacity: 0; transform: rotate(calc(var(--i) * 25.7deg)) translateY(-150px) scale(1); } }

@media (max-width: 760px) {
  .rg-aside { grid-template-columns: minmax(0, 1fr); }
}

/* ---------------------------------------------------------------- GM panel */
.nx input[type=date], .nx input[type=datetime-local] {
  width: 100%; min-height: 42px; padding: 10px 12px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, .09); background: rgba(0, 0, 0, .35); color: #fff;
  font: 500 14px/1.4 var(--font-body); outline: none; color-scheme: dark; transition: border-color .2s, box-shadow .2s;
}
.gm-top { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 10px 16px; margin: 0 0 16px; }
.gm-title { margin: 0; font: 800 clamp(22px, 2.6vw, 30px)/1.1 var(--font-display); letter-spacing: .04em; text-transform: uppercase; background: linear-gradient(180deg, #fff6dc, var(--gold) 60%, var(--gold-3)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.gm-role { gap: 6px; }
.gm-role svg { width: 14px; height: 14px; }
.gm-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 18px; padding: 5px; border-radius: 13px; background: rgba(0, 0, 0, .3); border: 1px solid rgba(255, 255, 255, .06); }
.gm-kv { grid-template-columns: minmax(0, 1fr); }
.gm-kv dt { padding-bottom: 2px; border-bottom: 0; background: none; }
.gm-kv dd { padding-top: 0; overflow-wrap: anywhere; }
.gm-kv dd .nx-badge { white-space: normal; }
.nx a.gm-tab { display: inline-flex; flex-shrink: 0; align-items: center; gap: 7px; padding: 9px 12px; border-radius: 9px; font: 600 12px/1 var(--font-body); color: #c9ced8; white-space: nowrap; transition: background .2s, color .2s; }
.nx a.gm-tab svg { width: 15px; height: 15px; opacity: .8; }
.nx a.gm-tab:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.nx a.gm-tab.is-active { color: #1c1204; background: linear-gradient(180deg, var(--gold-2), var(--gold)); box-shadow: 0 4px 14px -6px rgba(232, 182, 76, .9); }
.nx a.gm-tab.is-active svg { opacity: 1; }
.gm-tile.is-ok { border-color: rgba(61, 220, 132, .35); background: linear-gradient(180deg, rgba(61, 220, 132, .08), rgba(0, 0, 0, .25)); }
.gm-tile.is-warn { border-color: rgba(232, 182, 76, .45); background: linear-gradient(180deg, rgba(232, 182, 76, .10), rgba(0, 0, 0, .25)); }
.gm-tile.is-bad { border-color: rgba(255, 77, 94, .45); background: linear-gradient(180deg, rgba(255, 77, 94, .10), rgba(0, 0, 0, .25)); }
.gm-sub { display: block; margin-top: 4px; font-size: 11.5px; color: var(--muted); }
.gm-list { display: grid; gap: 8px; }
.nx .gm-compact { font-size: 13px; }
.nx .gm-compact th, .nx .gm-compact td { padding: 9px 12px; }
.gm-detail { max-width: 340px; overflow-wrap: anywhere; font-size: 12.5px; color: #cfd4dd; }
.gm-log { margin: 0; max-height: 560px; overflow: auto; padding: 14px; border-radius: 12px; background: rgba(0, 0, 0, .45); border: 1px solid rgba(255, 255, 255, .07); font: 12px/1.6 Consolas, "Courier New", monospace; color: #d5d9e1; white-space: pre-wrap; overflow-wrap: anywhere; }
.gm-restore { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; margin: 0; }
.gm-check { display: inline-flex; align-items: flex-start; gap: 8px; font-size: 12.5px; color: #cfd4dd; cursor: pointer; }
.gm-check input { flex-shrink: 0; width: 16px; height: 16px; margin: 1px 0 0; accent-color: var(--gold); cursor: pointer; }
.gm-check b { color: #fff; }
.gm-switch { padding: 12px; border-radius: 11px; background: rgba(0, 0, 0, .25); border: 1px solid rgba(255, 255, 255, .07); font-size: 13.5px; }
.gm-switch:has(input:checked) { border-color: var(--line-strong); background: rgba(232, 182, 76, .08); }
.gm-filter { gap: 12px; }
.gm-perms { display: grid; gap: 4px; margin: 0; padding: 0 0 0 18px; font-size: 13px; color: #d5d9e1; }
.gm-perms li::marker { color: var(--gold); }
/* item mall editor */
.gm-shop { display: grid; gap: 8px; }
.gm-shop-item { border-radius: 12px; background: rgba(0, 0, 0, .22); border: 1px solid rgba(255, 255, 255, .07); transition: border-color .2s; }
.gm-shop-item[open] { border-color: var(--line-strong); }
.gm-shop-item.is-off { opacity: .6; }
.gm-shop-item.is-off[open] { opacity: 1; }
.gm-shop-item summary { display: flex; align-items: center; gap: 12px; padding: 10px 12px; cursor: pointer; list-style: none; }
.gm-shop-item summary::-webkit-details-marker { display: none; }
.gm-shop-item summary::after { content: ""; width: 8px; height: 8px; margin-left: 4px; border-right: 2px solid var(--gold); border-bottom: 2px solid var(--gold); transform: rotate(45deg); transition: transform .2s; }
.gm-shop-item[open] summary::after { transform: rotate(-135deg); }
.gm-shop-img { display: grid; place-items: center; flex-shrink: 0; width: 44px; height: 44px; border-radius: 10px; background: rgba(0, 0, 0, .4); border: 1px solid var(--line); }
.gm-shop-img img { width: 40px; height: 40px; object-fit: contain; }
.gm-shop-name { flex: 1; min-width: 0; display: grid; }
.gm-shop-name b { color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gm-shop-name small { font-size: 11.5px; }
.gm-shop-form { padding: 4px 14px 14px; }
/* ini editor */
.gm-ini { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 18px; align-items: start; }
.gm-ini-files { display: grid; gap: 6px; }
.nx a.gm-ini-file { display: grid; gap: 2px; padding: 10px 12px; border-radius: 11px; background: rgba(0, 0, 0, .22); border: 1px solid rgba(255, 255, 255, .06); transition: border-color .2s, background .2s; }
.nx a.gm-ini-file b { display: flex; align-items: center; gap: 6px; font: 600 13px/1.3 var(--font-body); color: #fff; }
.nx a.gm-ini-file b svg { width: 13px; height: 13px; color: var(--muted); }
.nx a.gm-ini-file small { font-size: 11px; line-height: 1.35; color: var(--muted); }
.nx a.gm-ini-file:hover { border-color: var(--line-strong); }
.nx a.gm-ini-file.is-active { border-color: var(--gold); background: rgba(232, 182, 76, .10); }
.nx textarea.gm-code { min-height: 420px; font: 13px/1.55 Consolas, "Courier New", monospace; tab-size: 8; white-space: pre; overflow: auto; }
.nx textarea.gm-code[readonly] { opacity: .8; }

/* announcement banner (template) */
.neo-notice { display: flex; align-items: center; gap: 10px 12px; flex-wrap: wrap; margin: 14px 0 0; padding: 12px 16px; border-radius: 12px; font: 500 13.5px/1.45 var(--font-body); color: #fff; background: linear-gradient(90deg, rgba(255, 106, 43, .22), rgba(232, 182, 76, .10)); border: 1px solid rgba(255, 138, 80, .45); box-shadow: 0 10px 30px -18px rgba(255, 106, 43, .8); }
.neo-notice[hidden] { display: none; }
.neo-notice > svg { flex-shrink: 0; width: 20px; height: 20px; color: var(--gold-2); }
.neo-notice > span { flex: 1; min-width: 180px; }
.neo-notice__cd { padding: 4px 10px; border-radius: 8px; font: 700 14px/1.2 var(--font-display); letter-spacing: .04em; color: #1c1204; background: linear-gradient(180deg, var(--gold-2), var(--gold)); font-variant-numeric: tabular-nums; white-space: nowrap; }
.neo-notice--staff { background: linear-gradient(90deg, rgba(255, 77, 94, .2), rgba(255, 77, 94, .05)); border-color: rgba(255, 77, 94, .5); }
.neo-notice__link { color: var(--gold-2); font-weight: 700; text-decoration: none; white-space: nowrap; }
.neo-notice__link:hover { color: #fff; }

/* maintenance page */
.mt-box { display: grid; justify-items: center; gap: 10px; padding: 44px 22px 34px; border-radius: 18px; text-align: center; background: radial-gradient(70% 90% at 50% 0%, rgba(232, 182, 76, .14), rgba(255, 255, 255, .02) 70%); border: 1px solid var(--line-strong); }
.mt-box h1 { margin: 0; font: 800 clamp(26px, 3.4vw, 38px)/1.1 var(--font-display); background: linear-gradient(180deg, #fff, var(--gold-2)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.mt-box p { max-width: 52ch; margin: 0; color: #d5d9e1; }
.mt-icon { display: grid; place-items: center; width: 76px; height: 76px; margin-bottom: 6px; border-radius: 22px; color: var(--gold-2); background: rgba(232, 182, 76, .1); border: 1px solid var(--line); animation: nx-float 4s ease-in-out infinite; }
.mt-icon svg { width: 36px; height: 36px; }
.mt-cd { display: grid; justify-items: center; gap: 4px; margin: 10px 0; padding: 14px 24px; border-radius: 14px; background: rgba(0, 0, 0, .35); border: 1px solid var(--line); }
.mt-cd b { font: 800 30px/1.1 var(--font-display); color: #fff; font-variant-numeric: tabular-nums; }
.mt-cd small { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }

@media (max-width: 760px) {
  .gm-tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: thin; }
  .gm-ini { grid-template-columns: minmax(0, 1fr); }
  .gm-ini-files { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
  .nx a.gm-ini-file small { display: none; }
  .nx textarea.gm-code { min-height: 320px; }
  .gm-restore { justify-content: flex-start; }
}

@media (max-width: 760px) {
  .nx-podium { flex-direction: column; align-items: stretch; }
  .nx-podium > .nx-hero-card, .nx-podium > .nx-hero-card.is-1 { flex: none; max-width: none; }
  .nx-podium .is-1 { order: -1; }
  .nx-grid-2, .nx-grid-3 { grid-template-columns: 1fr; }
  .nx-profile { flex-direction: column; text-align: center; }
  .nx-profile .nx-row { justify-content: center; }
  .nx-bar { grid-template-columns: 70px 1fr 48px; }
  .nx-table th, .nx-table td { padding: 10px; }
  .nx-hide-sm { display: none; }
}
