:root {
  color-scheme: light dark;
  --page: #edf2f7;
  --panel: #ffffff;
  --panel-2: #f8fafc;
  --text: #152035;
  --muted: #607087;
  --line: #d8e1ec;
  --north: #2f6df6;
  --south: #e05264;
  --heal: #3ca7ff;
  --bolt: #78818e;
  --ok: #199466;
  --skin-rarity-common: #d5dfec;
  --skin-rarity-rare: #9bd1ff;
  --skin-rarity-epic: #e2b3ff;
  --skin-rarity-legendary: #ffe28a;
  --shadow: 0 18px 44px rgba(21, 32, 53, .12);
  --shell-pad: clamp(6px, .65vw, 10px);
  --layout-gap: clamp(6px, .65vw, 10px);
  --hud-width: clamp(238px, 16vw, 286px);
}

@media (prefers-color-scheme: dark) {
  :root {
    --page: #0f1723;
    --panel: #172232;
    --panel-2: #111b29;
    --text: #eef5ff;
    --muted: #a5b4c8;
    --line: #2a3a51;
    --shadow: 0 18px 44px rgba(0, 0, 0, .28);
  }
}

* {
  box-sizing: border-box;
}

html,
body {
  height: 100%;
  margin: 0;
  min-height: 100%;
  overflow: hidden;
}

body {
  background: var(--page);
  color: var(--text);
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  overscroll-behavior: none;
  width: 100%;
}

body.rune-loaded {
  cursor: crosshair;
}

button,
a {
  font: inherit;
}

a {
  color: inherit;
  text-decoration: none;
}

.gate-shell {
  height: 100vh;
  height: 100dvh;
  inset: 0;
  margin: 0 auto;
  max-width: none;
  min-height: 0;
  overflow: hidden;
  padding: var(--shell-pad);
  position: fixed;
  width: 100vw;
}

.eyebrow {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}

h1,
h2,
p {
  margin: 0;
}

.latency-meter,
.fps-meter {
  background: rgba(96, 112, 135, .1);
  border: 1px solid rgba(96, 112, 135, .22);
  border-radius: 5px;
  font-size: 11px;
  font-weight: 800;
  justify-self: start;
  min-width: 0;
  padding: 3px 7px;
  text-align: left;
}

.latency-meter.latency-good {
  background: rgba(25, 148, 102, .12);
  border-color: rgba(25, 148, 102, .34);
  color: #128257;
}

.latency-meter.latency-warn {
  background: rgba(222, 157, 38, .13);
  border-color: rgba(222, 157, 38, .36);
  color: #a86408;
}

.latency-meter.latency-bad {
  background: rgba(224, 82, 100, .13);
  border-color: rgba(224, 82, 100, .36);
  color: #c13f53;
}

.latency-meter.latency-unknown {
  color: var(--muted);
}

.fps-meter.fps-good {
  background: rgba(25, 148, 102, .12);
  border-color: rgba(25, 148, 102, .34);
  color: #128257;
}

.fps-meter.fps-warn {
  background: rgba(222, 157, 38, .13);
  border-color: rgba(222, 157, 38, .36);
  color: #a86408;
}

.fps-meter.fps-bad {
  background: rgba(224, 82, 100, .13);
  border-color: rgba(224, 82, 100, .36);
  color: #c13f53;
}

.fps-meter.fps-unknown {
  color: var(--muted);
}

.game-layout {
  align-items: stretch;
  display: grid;
  gap: var(--layout-gap);
  grid-template-columns: minmax(0, 1fr) var(--hud-width);
  height: 100%;
  max-height: 100%;
  min-height: 0;
  overflow: hidden;
}

.mobile-orientation,
.mobile-status-readout,
.mobile-menu-button,
.mobile-game-hud,
.desktop-shop-button,
.mobile-shop-button,
.mobile-artifact-status,
.mobile-mission-focus,
.mobile-shop-modal,
.mobile-joystick,
.mobile-spells {
  display: none;
}

.round-overlay {
  align-items: center;
  background: rgba(13, 20, 31, .58);
  display: grid;
  inset: 0;
  justify-items: center;
  padding: 18px;
  position: fixed;
  z-index: 10;
}

.round-overlay[hidden] {
  display: none;
}

.round-overlay button {
  touch-action: manipulation;
}

.round-overlay {
  opacity: 1;
  transition: opacity .22s ease;
}

.round-overlay.is-leaving {
  opacity: 0;
  pointer-events: none;
}

.domain-migration-overlay {
  align-items: center;
  background:
    radial-gradient(circle at 50% 18%, rgba(76, 151, 255, .26), transparent 38%),
    linear-gradient(160deg, rgba(3, 7, 13, .94), rgba(8, 15, 27, .98));
  display: grid;
  inset: 0;
  justify-items: center;
  padding: max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));
  position: fixed;
  z-index: 100;
}

.domain-migration-overlay[hidden] {
  display: none;
}

.domain-migration-card {
  background:
    linear-gradient(180deg, rgba(24, 36, 56, .98), rgba(8, 14, 24, .99)),
    radial-gradient(circle at 50% 0, rgba(255, 211, 103, .14), transparent 52%);
  border: 1px solid rgba(255, 214, 106, .42);
  border-radius: 16px;
  box-shadow:
    0 28px 90px rgba(0, 0, 0, .62),
    inset 0 1px 0 rgba(255, 255, 255, .12);
  color: #f4f8ff;
  display: grid;
  gap: 16px;
  max-width: 560px;
  padding: clamp(24px, 5vw, 42px);
  text-align: center;
  width: min(100%, 560px);
}

.domain-migration-eyebrow {
  color: #ffd66b;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.domain-migration-card h2 {
  font-size: clamp(28px, 5vw, 44px);
  line-height: 1.02;
}

.domain-migration-card > p {
  color: #b8c8dc;
  font-size: clamp(15px, 2.4vw, 18px);
  line-height: 1.55;
}

.domain-migration-card strong {
  color: #fff;
}

.domain-migration-action {
  background: linear-gradient(180deg, #ffe184, #f5a52b 58%, #c87517);
  border: 1px solid rgba(255, 247, 196, .86);
  border-radius: 12px;
  box-shadow:
    0 16px 34px rgba(245, 165, 43, .24),
    inset 0 2px 0 rgba(255, 255, 255, .48);
  color: #2f1700;
  cursor: pointer;
  font-size: 18px;
  font-weight: 950;
  min-height: 58px;
  padding: 12px 20px;
  touch-action: manipulation;
}

.domain-migration-action:disabled {
  cursor: wait;
  filter: grayscale(.35);
  opacity: .72;
}

.domain-migration-status {
  min-height: 24px;
}

.domain-migration-status.is-error {
  color: #ffabb6;
}

.domain-migration-recovery {
  color: #a9caff;
  font-size: 14px;
  font-weight: 800;
  text-decoration: underline;
  text-underline-offset: 4px;
}

@media (max-height: 480px) and (orientation: landscape) {
  .domain-migration-card {
    gap: 10px;
    max-width: 720px;
    padding: 18px 24px;
  }

  .domain-migration-card h2 {
    font-size: clamp(24px, 5vh, 34px);
  }

  .domain-migration-card > p {
    font-size: 14px;
    line-height: 1.35;
  }

  .domain-migration-action {
    min-height: 48px;
  }
}

.start-overlay {
  background:
    radial-gradient(circle at 50% 24%, rgba(71, 129, 255, .18), transparent 32%),
    radial-gradient(circle at 78% 78%, rgba(224, 82, 100, .14), transparent 34%),
    linear-gradient(180deg, rgba(4, 8, 14, .72), rgba(5, 9, 16, .9));
  backdrop-filter: blur(2px) saturate(.85) brightness(.68);
  overflow: auto;
}

.start-overlay::before {
  background:
    linear-gradient(115deg, transparent 0 24%, rgba(255, 214, 106, .06) 34%, transparent 45%),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, .025) 0 1px, transparent 1px 88px);
  content: "";
  inset: 0;
  opacity: .55;
  pointer-events: none;
  position: absolute;
}

.round-dialog {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: var(--shadow);
  display: grid;
  gap: 14px;
  max-width: 460px;
  padding: 22px;
  text-align: center;
  width: min(100%, 460px);
}

.game-menu-overlay {
  background:
    radial-gradient(circle at 50% 34%, rgba(47, 109, 246, .16), transparent 36%),
    linear-gradient(180deg, rgba(3, 6, 12, .56), rgba(3, 6, 12, .82));
  backdrop-filter: blur(2px) saturate(.85);
  z-index: 14;
}

.game-menu-dialog {
  background:
    linear-gradient(180deg, rgba(30, 42, 61, .96), rgba(9, 14, 23, .98)),
    radial-gradient(circle at 50% 0, rgba(255, 214, 106, .11), transparent 58%);
  border: 1px solid rgba(255, 214, 106, .32);
  box-shadow:
    0 24px 80px rgba(0, 0, 0, .58),
    inset 0 1px 0 rgba(255, 255, 255, .09);
  color: #edf5ff;
  gap: 16px;
  max-width: 420px;
  padding: 24px;
}

.game-menu-dialog h2 {
  color: #fff7d6;
  font-size: 30px;
  line-height: 1;
  text-transform: uppercase;
}

.game-menu-actions {
  display: grid;
  gap: 10px;
}

.game-menu-hint {
  color: #9fb0c9;
  font-size: 12px;
  font-weight: 800;
}

.connection-lost-overlay {
  background:
    radial-gradient(circle at 50% 34%, rgba(255, 73, 96, .17), transparent 36%),
    linear-gradient(180deg, rgba(3, 6, 12, .62), rgba(3, 6, 12, .9));
  backdrop-filter: blur(2px) saturate(.82);
  z-index: 16;
}

.connection-lost-dialog {
  background:
    linear-gradient(180deg, rgba(46, 32, 42, .97), rgba(10, 13, 20, .99)),
    radial-gradient(circle at 50% 0, rgba(255, 214, 106, .12), transparent 56%);
  border: 1px solid rgba(255, 92, 111, .38);
  box-shadow:
    0 24px 80px rgba(0, 0, 0, .62),
    0 0 0 1px rgba(255, 214, 106, .1),
    inset 0 1px 0 rgba(255, 255, 255, .08);
  color: #edf5ff;
  gap: 16px;
  max-width: 460px;
  padding: 24px;
}

.connection-lost-dialog h2 {
  color: #ffd6a0;
  font-size: clamp(28px, 5vw, 44px);
  line-height: 1;
  margin: 0;
  text-shadow:
    0 2px 0 rgba(0, 0, 0, .38),
    0 0 24px rgba(255, 73, 96, .22);
  text-transform: uppercase;
}

.connection-lost-dialog p {
  color: #dfe8f5;
  font-size: 14px;
  font-weight: 800;
  margin: 0;
}

.connection-lost-actions {
  display: flex;
  justify-content: center;
}

.server-restart-countdown {
  color: #ff4058;
  font-size: clamp(24px, 3vw, 44px);
  font-weight: 1000;
  left: 50%;
  letter-spacing: .025em;
  line-height: 1;
  max-width: calc(100vw - 32px);
  pointer-events: none;
  position: fixed;
  text-align: center;
  text-shadow:
    0 2px 2px rgba(0, 0, 0, .98),
    0 0 12px rgba(0, 0, 0, .92),
    0 0 18px rgba(255, 30, 58, .36);
  top: max(14px, env(safe-area-inset-top));
  transform: translateX(-50%);
  white-space: nowrap;
  z-index: 40;
}

.gate-shell:fullscreen {
  background: #070b12;
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
  padding: var(--shell-pad);
  width: 100vw;
}

.gate-shell:fullscreen .game-layout {
  height: 100%;
  min-height: 0;
}

.gate-shell:fullscreen .arena-panel {
  min-height: 0;
}

.gate-shell:fullscreen #gameCanvas {
  min-height: 0;
}

.start-dialog {
  background:
    linear-gradient(180deg, rgba(28, 38, 54, .96), rgba(8, 12, 20, .98)),
    radial-gradient(circle at 50% 0, rgba(84, 130, 202, .18), transparent 54%);
  border: 1px solid rgba(255, 214, 106, .34);
  border-radius: 10px;
  box-shadow:
    0 28px 90px rgba(0, 0, 0, .58),
    inset 0 1px 0 rgba(255, 255, 255, .1),
    inset 0 0 0 1px rgba(111, 145, 194, .16);
  gap: 16px;
  max-width: 660px;
  overflow: hidden;
  padding: 24px;
  position: relative;
  width: min(100%, 660px);
}

.start-dialog::before {
  background:
    repeating-linear-gradient(0deg, rgba(255, 255, 255, .025) 0 1px, transparent 1px 7px),
    linear-gradient(90deg, rgba(47, 109, 246, .18), transparent 30%, transparent 70%, rgba(224, 82, 100, .16));
  content: "";
  inset: 0;
  opacity: .75;
  pointer-events: none;
  position: absolute;
}

.start-dialog > * {
  position: relative;
  z-index: 1;
}

.lobby-dialog {
  align-self: stretch;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  max-height: calc(100vh - 36px);
  max-width: 1180px;
  overflow: hidden;
  padding: clamp(18px, 2.2vw, 28px);
  width: min(1180px, calc(100vw - 36px));
}

.lobby-main {
  align-items: center;
  display: grid;
  gap: 18px;
  grid-template-columns: minmax(0, 1fr) minmax(220px, 300px);
}

.lobby-hero {
  justify-items: start;
  text-align: left;
}

.lobby-hero h1 {
  font-size: clamp(56px, 8vw, 96px);
}

.lobby-hero p {
  max-width: 520px;
}

.lobby-play-button {
  background:
    linear-gradient(180deg, #ffd66b, #f59f24 54%, #c97115),
    #f59f24;
  border-color: rgba(255, 247, 196, .82);
  border-radius: 14px;
  box-shadow:
    0 18px 44px rgba(245, 159, 36, .24),
    0 0 0 2px rgba(93, 49, 8, .3),
    inset 0 2px 0 rgba(255, 255, 255, .55),
    inset 0 -4px 0 rgba(92, 44, 5, .32);
  color: #301700;
  font-size: clamp(28px, 4vw, 44px);
  min-height: 82px;
  text-shadow: 0 1px 0 rgba(255, 244, 189, .58);
}

.lobby-play-button:hover {
  box-shadow:
    0 0 0 1px rgba(255, 247, 196, .42),
    0 0 38px rgba(255, 196, 73, .34),
    inset 0 2px 0 rgba(255, 255, 255, .58),
    inset 0 -4px 0 rgba(92, 44, 5, .32);
}

.lobby-grid {
  display: grid;
  gap: 12px;
  grid-template-columns: minmax(260px, .9fr) minmax(360px, 1.25fr) minmax(260px, .85fr);
  min-height: 0;
}

.lobby-card {
  background:
    linear-gradient(180deg, rgba(13, 22, 36, .78), rgba(6, 11, 19, .82)),
    radial-gradient(circle at 50% 0, rgba(255, 214, 106, .08), transparent 60%);
  border: 1px solid rgba(143, 168, 200, .18);
  border-radius: 10px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .07),
    0 12px 30px rgba(0, 0, 0, .18);
}

.lobby-profile-card {
  align-content: start;
  display: grid;
  gap: 14px;
  padding: 16px;
  text-align: left;
}

.lobby-card-head {
  display: grid;
  gap: 6px;
}

.lobby-card-head span,
.lobby-feature-card span {
  color: #8fa8c8;
  font-size: 11px;
  font-weight: 1000;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.lobby-card-head strong {
  color: #f8fbff;
  font-size: clamp(22px, 2.6vw, 34px);
  line-height: 1;
}

.lobby-level-row {
  align-items: center;
  color: #dbe7f8;
  display: flex;
  font-size: 13px;
  font-weight: 900;
  gap: 10px;
  justify-content: space-between;
}

.lobby-level-row strong {
  color: #ffe18a;
  font-size: 20px;
}

.lobby-level-row small {
  color: #9fb0c9;
  font-size: 11px;
  font-weight: 900;
}

.lobby-xp-bar {
  background: rgba(2, 6, 12, .72);
  border: 1px solid rgba(143, 168, 200, .18);
  border-radius: 999px;
  height: 11px;
  overflow: hidden;
}

.lobby-xp-bar span {
  background: linear-gradient(90deg, #38bdf8, #62f1b5);
  box-shadow: 0 0 16px rgba(56, 189, 248, .28);
  display: block;
  height: 100%;
  width: 0;
}

.lobby-profile-card .lobby-level-row,
.lobby-profile-card .lobby-xp-bar {
  display: none;
}

.lobby-stat-grid {
  display: grid;
  gap: 8px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.lobby-stat-grid span {
  background: rgba(255, 255, 255, .045);
  border: 1px solid rgba(143, 168, 200, .13);
  border-radius: 8px;
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 10px 8px;
  text-align: center;
}

.lobby-stat-grid strong {
  color: #fff7d6;
  font-size: 18px;
  line-height: 1;
}

.lobby-stat-grid small {
  color: #9fb0c9;
  font-size: 9px;
  font-weight: 900;
}

.lobby-stars-stat strong {
  color: #ffe18a;
  text-shadow: 0 0 16px rgba(255, 214, 106, .22);
}

.lobby-stars-daily {
  border-top: 1px solid rgba(143, 168, 200, .13);
  color: #9fb0c9;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.25;
  margin-top: -2px;
  padding-top: 8px;
}

.lobby-feature-grid {
  display: grid;
  gap: 10px;
  grid-template-columns: 1fr;
}

.lobby-feature-card {
  display: grid;
  gap: 5px;
  padding: 12px;
  text-align: left;
}

.lobby-feature-card strong {
  color: #fff7d6;
  font-size: 16px;
}

.lobby-feature-card small {
  color: #9fb0c9;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.3;
}

.lobby-controls {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

body.is-lobby .game-layout {
  pointer-events: none;
  visibility: hidden;
}

body.is-lobby,
body.is-lobby .start-overlay {
  overflow-x: hidden;
}

.start-overlay {
  background:
    radial-gradient(circle at 50% 45%, rgba(255, 214, 106, .16), transparent 18%),
    radial-gradient(circle at 18% 22%, rgba(47, 109, 246, .22), transparent 30%),
    radial-gradient(circle at 84% 78%, rgba(224, 82, 100, .18), transparent 34%),
    linear-gradient(135deg, #08131f 0%, #101a2b 46%, #1b101e 100%);
  backdrop-filter: none;
  overflow: hidden;
  padding: 0;
}

.start-overlay::before {
  background:
    linear-gradient(115deg, transparent 0 25%, rgba(255, 214, 106, .07) 34%, transparent 43%),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, .025) 0 1px, transparent 1px 86px),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, .018) 0 1px, transparent 1px 62px);
  opacity: .56;
}

.lobby-dialog {
  align-self: stretch;
  background:
    radial-gradient(circle at 50% 48%, rgba(255, 214, 106, .13), transparent 25%),
    linear-gradient(180deg, rgba(17, 29, 48, .92), rgba(8, 12, 22, .96));
  border: 0;
  border-radius: 0;
  box-shadow: none;
  color: #edf5ff;
  display: grid;
  gap: clamp(10px, 1.2vw, 18px);
  grid-template-areas:
    "ranking title rewards"
    "ranking play rewards"
    "profile play friends";
  grid-template-columns: minmax(255px, 340px) minmax(300px, 1fr) minmax(255px, 340px);
  grid-template-rows: auto minmax(180px, .72fr) minmax(220px, .86fr);
  height: 100dvh;
  max-height: none;
  max-width: none;
  overflow: hidden;
  padding: clamp(16px, 2vw, 26px);
  position: relative;
  text-align: initial;
  width: 100vw;
}

.lobby-dialog::before {
  display: none;
}

.lobby-topbar {
  align-items: center;
  display: none;
  gap: 10px;
  grid-area: top;
  grid-template-columns: auto 1fr auto;
  min-width: 0;
}

.lobby-settings-button {
  align-items: center;
  background: rgba(255, 255, 255, .075);
  border: 1px solid rgba(143, 168, 200, .22);
  border-radius: 999px;
  color: #dfe9fb;
  cursor: pointer;
  display: inline-flex;
  font-size: 11px;
  font-weight: 950;
  gap: 6px;
  justify-self: end;
  padding: 7px 11px;
}

.lobby-settings-button-stage {
  position: absolute;
  right: clamp(8px, 1vw, 14px);
  top: clamp(6px, 1vw, 12px);
  z-index: 3;
}

.lobby-settings-button-title {
  justify-self: end;
  position: absolute;
  right: 0;
  top: clamp(3px, .7vw, 8px);
  z-index: 4;
}

.lobby-settings-button:hover,
.lobby-settings-button:focus-visible {
  background: rgba(255, 214, 106, .14);
  border-color: rgba(255, 214, 106, .42);
  outline: none;
}

.settings-gear-icon {
  color: #ffd66b;
  font-size: 13px;
  line-height: 1;
  text-shadow: 0 0 10px rgba(255, 214, 106, .28);
}

.lobby-settings-button-mobile {
  display: inline-flex;
}

.lobby-title {
  align-self: start;
  display: grid;
  gap: 6px;
  grid-area: title;
  justify-items: center;
  min-width: 0;
  padding-inline: 98px;
  padding-top: clamp(8px, 1.2vw, 16px);
  position: relative;
  text-align: center;
  z-index: 1;
}

.lobby-title h1 {
  color: #f8fbff;
  font-size: clamp(42px, 5.5vw, 76px);
  font-weight: 1000;
  letter-spacing: 0;
  line-height: .88;
  text-shadow: 0 4px 0 rgba(0, 0, 0, .28), 0 0 24px rgba(94, 154, 255, .22);
  text-transform: uppercase;
}

.lobby-title .eyebrow {
  background: rgba(4, 9, 18, .48);
  border: 1px solid rgba(255, 214, 106, .2);
  border-radius: 999px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, .18);
  padding: 5px 12px;
  text-shadow: 0 2px 8px rgba(0, 0, 0, .48);
}

.lobby-hero-art {
  align-self: stretch;
  background:
    linear-gradient(180deg, rgba(4, 8, 17, .18), rgba(4, 8, 17, .64)),
    radial-gradient(circle at 50% 43%, rgba(255, 228, 154, .12), transparent 36%),
    url("./assets/gate-war-lobby-hero.png?v=f0a69eefc3d44e48abd5");
  background-position: center;
  background-size: cover;
  border: 1px solid rgba(143, 168, 200, .18);
  border-radius: 18px;
  box-shadow:
    0 24px 70px rgba(0, 0, 0, .36),
    inset 0 0 0 1px rgba(255, 255, 255, .04),
    inset 0 -86px 90px rgba(3, 8, 16, .7);
  grid-column: 2;
  grid-row: 1 / 4;
  justify-self: stretch;
  min-height: 0;
  overflow: hidden;
  pointer-events: none;
  position: relative;
  z-index: 0;
}

.lobby-hero-art::after {
  background:
    radial-gradient(ellipse at 50% 42%, transparent 0 33%, rgba(3, 8, 16, .5) 72%, rgba(3, 8, 16, .78) 100%),
    linear-gradient(90deg, rgba(28, 94, 180, .18), transparent 30% 70%, rgba(173, 31, 42, .2));
  content: "";
  inset: 0;
  position: absolute;
}

.lobby-play-stage {
  align-self: center;
  display: grid;
  gap: 12px;
  grid-area: play;
  justify-items: center;
  min-width: 0;
  padding: clamp(10px, 1.6vw, 22px);
  position: relative;
  text-align: center;
  z-index: 1;
}

.lobby-hero-stars,
.lobby-person-stars {
  align-items: center;
  color: #ffe18a;
  display: inline-flex;
  font-weight: 1000;
  gap: 7px;
  justify-content: center;
}

.lobby-hero-stars strong {
  font-size: clamp(24px, 3.4vw, 40px);
  line-height: 1;
}

.lobby-hero-stars {
  background: rgba(4, 9, 18, .62);
  border: 1px solid rgba(255, 214, 106, .26);
  border-radius: 999px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, .26);
  padding: 9px 16px;
  text-shadow: 0 2px 10px rgba(0, 0, 0, .46);
}

.rank-info-trigger {
  appearance: none;
  cursor: pointer;
  font: inherit;
  margin: 0;
  transition:
    border-color .16s ease,
    box-shadow .16s ease,
    filter .16s ease,
    transform .16s ease;
}

.rank-info-trigger:hover,
.rank-info-trigger:focus-visible {
  border-color: rgba(255, 232, 139, .66);
  box-shadow:
    0 16px 38px rgba(0, 0, 0, .3),
    0 0 0 2px rgba(255, 214, 106, .16),
    0 0 26px rgba(255, 214, 106, .18);
  filter: brightness(1.06);
  outline: none;
  transform: translateY(-1px);
}

.lobby-profile-rank.rank-info-trigger:hover,
.lobby-profile-rank.rank-info-trigger:focus-visible {
  box-shadow:
    0 10px 22px rgba(0, 0, 0, .24),
    0 0 0 2px rgba(255, 214, 106, .14);
}

.lobby-rank {
  align-items: center;
  background: rgba(4, 9, 18, .62);
  border: 1px solid rgba(143, 168, 200, .2);
  border-radius: 16px;
  box-shadow: 0 12px 30px rgba(0, 0, 0, .24);
  color: #f8fbff;
  display: inline-flex;
  gap: 10px;
  justify-content: center;
  min-width: 0;
  padding: 7px 12px;
  text-shadow: 0 2px 10px rgba(0, 0, 0, .48);
}

.lobby-rank-copy,
.lobby-profile-rank span {
  display: grid;
  gap: 2px;
  justify-items: center;
  min-width: 0;
}

.lobby-rank-copy small,
.lobby-profile-rank small {
  color: #9fb0c9;
  font-size: 9px;
  font-weight: 950;
  letter-spacing: .1em;
  line-height: 1;
  text-transform: uppercase;
}

.lobby-rank-copy strong {
  color: #fff7d6;
  font-size: 15px;
  font-weight: 1000;
  line-height: 1.05;
}

.lobby-rank-hero {
  background:
    radial-gradient(circle at 50% 26%, rgba(255, 232, 139, .18), transparent 42%),
    linear-gradient(180deg, rgba(4, 9, 18, .66), rgba(4, 9, 18, .46));
  border-color: rgba(255, 214, 106, .34);
  border-radius: 24px;
  box-shadow:
    0 18px 44px rgba(0, 0, 0, .34),
    0 0 34px rgba(255, 214, 106, .11),
    inset 0 1px 0 rgba(255, 255, 255, .1);
  flex-direction: column;
  gap: 6px;
  min-width: clamp(140px, 14vw, 190px);
  padding: 12px 20px 10px;
}

.lobby-rank-hero .lobby-rank-copy strong {
  color: #fff3a8;
  font-size: clamp(25px, 2.7vw, 38px);
  letter-spacing: 0;
  line-height: .94;
  text-shadow:
    0 3px 0 rgba(0, 0, 0, .34),
    0 0 18px rgba(255, 214, 106, .28);
}

.lobby-profile-rank {
  align-items: center;
  background: rgba(255, 255, 255, .045);
  border: 1px solid rgba(143, 168, 200, .14);
  border-radius: 10px;
  display: inline-flex;
  gap: 8px;
  min-width: 0;
  padding: 6px 8px;
}

.lobby-profile-rank strong {
  color: #fff7d6;
  font-size: 12px;
  font-weight: 1000;
  line-height: 1.05;
}

.rank-badge {
  box-sizing: border-box;
  display: block;
  flex: 0 0 auto;
  height: 38px;
  overflow: hidden;
  position: relative;
  width: 34px;
}

.rank-badge--hero {
  height: 90px;
  width: 82px;
}

.rank-badge--profile {
  height: 32px;
  width: 30px;
}

.rank-badge--mini {
  height: 24px;
  width: 22px;
}

.rank-badge--bronze,
.rank-badge--silver,
.rank-badge--gold {
  border: 2px solid rgba(4, 9, 18, .74);
  border-radius: 12px 12px 14px 14px;
  clip-path: polygon(50% 0, 91% 14%, 86% 66%, 50% 100%, 14% 66%, 9% 14%);
  filter: drop-shadow(0 5px 8px rgba(0, 0, 0, .3));
}

.rank-badge--bronze {
  background: linear-gradient(135deg, #ffd198 0%, #b56c2b 46%, #633315 100%);
}

.rank-badge--silver {
  background: linear-gradient(135deg, #fbfdff 0%, #aebbc8 47%, #5f6f80 100%);
}

.rank-badge--gold {
  background: linear-gradient(135deg, #fff3a8 0%, #f0b431 49%, #9e5b09 100%);
}

.rank-badge--bronze::before,
.rank-badge--silver::before,
.rank-badge--gold::before {
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .38), transparent 42%),
    radial-gradient(circle at 50% 34%, rgba(255, 255, 255, .2), transparent 30%);
  border: 1px solid rgba(255, 255, 255, .26);
  clip-path: polygon(50% 4%, 82% 16%, 78% 60%, 50% 88%, 22% 60%, 18% 16%);
  content: "";
  inset: 5px;
  position: absolute;
}

.rank-badge--bronze::after,
.rank-badge--silver::after,
.rank-badge--gold::after {
  background: rgba(4, 9, 18, .55);
  border-radius: 999px;
  box-shadow: 0 -7px 0 rgba(4, 9, 18, .32), 0 7px 0 rgba(255, 255, 255, .18);
  content: "";
  height: 3px;
  left: 30%;
  position: absolute;
  top: 48%;
  width: 40%;
}

.rank-badge--wood {
  background:
    radial-gradient(ellipse at 52% 50%, #f0c17a 0 12%, #a6672f 13% 28%, #6b3d1d 29% 52%, #3a2112 53% 100%);
  border: 2px solid #1f130b;
  border-radius: 48% 44% 46% 52%;
  box-shadow:
    inset 0 2px 0 rgba(255, 231, 179, .24),
    inset 0 -5px 0 rgba(29, 15, 7, .34),
    0 5px 9px rgba(0, 0, 0, .28);
  height: 28px;
  transform: rotate(-8deg);
  width: 42px;
}

.rank-badge--wood.rank-badge--hero {
  height: 62px;
  width: 96px;
}

.rank-badge--wood.rank-badge--profile {
  height: 24px;
  width: 34px;
}

.rank-badge--wood.rank-badge--mini {
  height: 19px;
  width: 26px;
}

.rank-badge--wood::before {
  border: 2px solid rgba(255, 226, 158, .3);
  border-radius: 50%;
  content: "";
  inset: 21% 27%;
  position: absolute;
}

.rank-badge--wood::after {
  background:
    linear-gradient(90deg, transparent, rgba(31, 18, 9, .45), transparent),
    linear-gradient(90deg, transparent, rgba(255, 223, 157, .18), transparent);
  content: "";
  height: 130%;
  left: 15%;
  position: absolute;
  top: -15%;
  transform: rotate(18deg);
  width: 7px;
}

.lobby-star-shape {
  background: linear-gradient(180deg, #fff2a8, #f8c43a 55%, #d78514);
  clip-path: polygon(50% 0, 62% 35%, 100% 35%, 69% 56%, 81% 92%, 50% 70%, 19% 92%, 31% 56%, 0 35%, 38% 35%);
  display: inline-block;
  filter: drop-shadow(0 3px 6px rgba(245, 159, 36, .32));
  flex: 0 0 auto;
  height: 28px;
  width: 28px;
}

.lobby-hero-stars .lobby-star-shape {
  height: 42px;
  width: 42px;
}

.lobby-play-button {
  border-radius: 18px;
  font-size: clamp(42px, 6.4vw, 76px);
  min-height: clamp(96px, 16vh, 150px);
  min-width: min(420px, 70vw);
  padding: 12px 34px;
}

.start-feedback {
  color: #c7d4e8;
  font-size: 12px;
  font-weight: 850;
  min-height: 16px;
}

.lobby-dashboard {
  display: contents;
}

.lobby-card {
  border-radius: 12px;
  min-height: 0;
  overflow: hidden;
}

.lobby-profile-card {
  align-content: start;
  display: grid;
  gap: 10px;
  grid-area: profile;
  padding: 14px;
}

.lobby-rewards-card {
  grid-area: rewards;
}

.lobby-ranking-card {
  grid-area: ranking;
}

.lobby-friends-card {
  grid-area: friends;
}

.lobby-card-head strong {
  font-size: clamp(19px, 2vw, 28px);
}

.lobby-character-row {
  align-items: center;
  display: grid;
  gap: 13px;
  grid-template-columns: 112px minmax(0, 1fr);
}

.lobby-avatar-frame {
  align-items: center;
  aspect-ratio: 1;
  background:
    radial-gradient(circle at 50% 38%, rgba(255, 214, 106, .18), transparent 54%),
    linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, .025));
  border: 1px solid rgba(255, 214, 106, .34);
  border-radius: 12px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .08),
    inset 0 -18px 28px rgba(0, 0, 0, .18),
    0 12px 24px rgba(0, 0, 0, .18);
  display: grid;
  justify-items: center;
  overflow: hidden;
}

.lobby-profile-card .lobby-profile-rank,
.lobby-profile-card .lobby-stars-daily,
.lobby-profile-card .lobby-stat-grid {
  display: none;
}

.lobby-avatar-sprite,
.lobby-mini-avatar {
  background-image: url("./assets/characters/rune-recruit/idle.png?v=3d17ea0f989197bbce33");
  background-position: 0 0;
  background-repeat: no-repeat;
  background-size: 400% 200%;
  display: block;
}

.lobby-avatar-sprite {
  height: 112px;
  width: 112px;
}

.lobby-character-meta {
  display: grid;
  gap: 9px;
  min-width: 0;
}

.lobby-skin-row,
.lobby-spell-loadout-row {
  align-items: center;
  background:
    radial-gradient(circle at 0% 50%, rgba(255, 214, 106, .12), transparent 44%),
    linear-gradient(180deg, rgba(18, 29, 47, .72), rgba(5, 10, 18, .82));
  border: 1px solid rgba(143, 168, 200, .22);
  border-radius: 11px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .07),
    inset 0 -12px 22px rgba(0, 0, 0, .16);
  display: grid;
  gap: 8px;
  grid-template-columns: minmax(0, 1fr) minmax(78px, auto);
  isolation: isolate;
  min-height: 54px;
  overflow: hidden;
  padding: 8px 9px 8px 11px;
  position: relative;
}

.lobby-skin-row::before,
.lobby-spell-loadout-row::before {
  background: linear-gradient(180deg, rgba(255, 232, 161, .9), rgba(74, 222, 128, .24));
  border-radius: 999px;
  bottom: 9px;
  box-shadow: 0 0 12px rgba(255, 214, 106, .26);
  content: "";
  left: 5px;
  opacity: .8;
  position: absolute;
  top: 9px;
  width: 2px;
  z-index: 0;
}

.lobby-spell-loadout-row {
  min-height: 72px;
}

.lobby-skin-row > span,
.lobby-spell-loadout-copy,
.lobby-skin-edit,
.lobby-spell-edit {
  min-width: 0;
  position: relative;
  z-index: 1;
}

.lobby-skin-row small,
.lobby-spell-loadout-row small {
  color: #a9bedb;
  display: block;
  font-size: 10px;
  font-weight: 1000;
  letter-spacing: .07em;
  line-height: 1;
  text-transform: uppercase;
}

.lobby-skin-row strong,
.lobby-spell-loadout-row strong {
  color: #fff3a8;
  display: block;
  font-size: 15px;
  font-weight: 1000;
  line-height: 1.1;
  margin-top: 3px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.lobby-spell-slots {
  display: grid;
  gap: 6px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 6px;
}

.lobby-spell-slot {
  align-items: center;
  background:
    radial-gradient(circle at 28% 10%, rgba(255, 214, 106, .14), transparent 48%),
    linear-gradient(180deg, rgba(22, 31, 47, .88), rgba(7, 11, 18, .92));
  border: 1px solid rgba(143, 168, 200, .24);
  border-radius: 8px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05);
  display: grid;
  gap: 6px;
  grid-template-columns: 30px minmax(0, 1fr);
  min-height: 38px;
  min-width: 0;
  padding: 4px 6px;
}

.lobby-spell-slot .rune-icon {
  height: 30px;
  width: 30px;
}

.lobby-spell-slot strong {
  color: #edf5ff;
  font-size: 11px;
  margin-top: 0;
  min-width: 0;
}

.lobby-profile-card .lobby-spell-slots {
  display: flex;
  gap: 8px;
}

.lobby-profile-card .lobby-spell-slot {
  flex: 0 0 42px;
  grid-template-columns: 30px;
  justify-content: center;
  width: 42px;
}

.lobby-profile-card .lobby-spell-slot strong {
  display: none;
}

.lobby-skin-edit,
.lobby-spell-edit {
  align-items: center;
  align-self: stretch;
  background:
    radial-gradient(circle at 50% 0%, rgba(255, 244, 190, .24), transparent 54%),
    linear-gradient(180deg, rgba(255, 214, 106, .22), rgba(127, 90, 24, .16));
  border: 1px solid rgba(255, 214, 106, .42);
  border-radius: 8px;
  color: #ffe7a1;
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-size: 11px;
  font-weight: 1000;
  justify-content: center;
  min-height: 32px;
  min-width: 72px;
  padding: 7px 10px;
  text-transform: uppercase;
}

.lobby-skin-edit:hover,
.lobby-skin-edit:focus-visible,
.lobby-spell-edit:hover,
.lobby-spell-edit:focus-visible {
  border-color: rgba(255, 232, 161, .64);
  box-shadow: 0 0 0 2px rgba(255, 214, 106, .12);
  outline: none;
}

.lobby-stat-grid {
  gap: 7px;
}

.lobby-stat-grid span {
  padding: 9px 6px;
}

.daily-missions {
  align-content: start;
  display: grid;
  gap: 12px;
  grid-template-rows: auto minmax(0, 1fr) auto;
  padding: 16px;
}

.daily-mission-list {
  align-content: start;
  display: grid;
  gap: 8px;
  grid-auto-rows: minmax(64px, auto);
  grid-template-columns: 1fr;
  overflow-x: hidden;
  overflow-y: auto;
  padding-right: 0;
  scrollbar-gutter: auto;
  scrollbar-width: none;
}

.daily-mission-list::-webkit-scrollbar {
  display: none;
  height: 0;
  width: 0;
}

@keyframes dailyRewardPulse {
  0%, 100% {
    box-shadow:
      0 0 0 0 rgba(255, 214, 106, .6),
      0 12px 26px rgba(245, 159, 36, .24),
      inset 0 2px 0 rgba(255, 255, 255, .55),
      inset 0 -4px 0 rgba(96, 45, 7, .28);
    transform: scale(1);
  }
  50% {
    box-shadow:
      0 0 0 7px rgba(255, 214, 106, .12),
      0 16px 34px rgba(245, 159, 36, .42),
      inset 0 2px 0 rgba(255, 255, 255, .68),
      inset 0 -4px 0 rgba(96, 45, 7, .22);
    transform: scale(1.04);
  }
}

@keyframes dailyRewardRing {
  0% {
    opacity: .75;
    transform: scale(.88);
  }
  100% {
    opacity: 0;
    transform: scale(1.22);
  }
}

@keyframes dailyStarMilestonePulse {
  0%, 100% {
    box-shadow: 0 0 0 1px rgba(255, 226, 132, .18), 0 0 12px rgba(245, 177, 47, .12);
  }
  50% {
    box-shadow: 0 0 0 3px rgba(255, 226, 132, .12), 0 0 18px rgba(245, 177, 47, .28);
  }
}

.daily-mission-card {
  align-items: center;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .055), rgba(255, 255, 255, .028));
  border: 1px solid rgba(143, 168, 200, .14);
  border-radius: 10px;
  box-sizing: border-box;
  display: grid;
  gap: 9px;
  grid-template-columns: minmax(0, 1fr) 54px;
  min-height: 64px;
  overflow: visible;
  padding: 8px 9px;
  position: relative;
}

.daily-mission-card.is-complete {
  background:
    radial-gradient(circle at 88% 50%, rgba(255, 214, 106, .18), transparent 38%),
    linear-gradient(180deg, rgba(255, 255, 255, .07), rgba(255, 214, 106, .035));
  border-color: rgba(255, 214, 106, .64);
  box-shadow:
    0 0 22px rgba(255, 214, 106, .1),
    inset 0 0 0 1px rgba(255, 214, 106, .18);
}

.daily-mission-card.is-claimed {
  background:
    radial-gradient(circle at 88% 50%, rgba(98, 241, 181, .13), transparent 35%),
    linear-gradient(180deg, rgba(255, 255, 255, .052), rgba(255, 255, 255, .026));
  border-color: rgba(98, 241, 181, .34);
}

.daily-mission-copy {
  display: grid;
  gap: 7px;
  min-width: 0;
}

.daily-mission-title-row {
  align-items: center;
  display: flex;
  gap: 8px;
  min-width: 0;
}

.daily-mission-type-icon {
  background-color: rgba(8, 16, 30, .78);
  background-repeat: no-repeat;
  border: 1px solid rgba(143, 168, 200, .18);
  border-radius: 8px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .08),
    0 6px 12px rgba(0, 0, 0, .18);
  display: block;
  flex: 0 0 auto;
  height: 28px;
  overflow: hidden;
  position: relative;
  width: 28px;
}

.mission-icon-minions {
  background-image: url("./assets/gate-war-minions.png?v=51bb7a0586395454d6a0");
  background-position: 0 0;
  background-size: 112px 56px;
}

.mission-icon-tower {
  background-image: url("./assets/gate-war-towers-lossless.webp?v=22139546c10398f79e4e");
  background-position: 0 -28px;
  background-size: 84px 56px;
}

.mission-icon-damage,
.mission-icon-enemy,
.mission-icon-streak,
.mission-icon-heal {
  background-image: url("./assets/gate-war-warriors.png?v=ca86f6b04503cc19807c");
  background-size: 112px 56px;
}

.mission-icon-damage {
  background-position: -84px -28px;
}

.mission-icon-enemy {
  background-position: -56px -28px;
}

.mission-icon-streak {
  background-position: -56px -28px;
}

.mission-icon-heal {
  background-position: 0 0;
}

.mission-icon-heal::after {
  align-items: center;
  background: #62f1b5;
  border: 1px solid rgba(236, 255, 247, .86);
  border-radius: 999px;
  bottom: 1px;
  color: #053823;
  content: "+";
  display: grid;
  font-size: 14px;
  font-weight: 1000;
  height: 15px;
  line-height: 1;
  position: absolute;
  right: 1px;
  width: 15px;
}

.mission-icon-damage::after,
.mission-icon-enemy::after,
.mission-icon-streak::after {
  background: linear-gradient(180deg, #ffcf69, #e33f31);
  border-radius: 999px;
  box-shadow: 0 0 8px rgba(255, 89, 56, .46);
  content: "";
  height: 8px;
  position: absolute;
  right: 3px;
  top: 3px;
  width: 8px;
}

.mission-icon-streak::before {
  border: 2px solid rgba(255, 224, 118, .92);
  border-radius: 999px;
  box-shadow: 0 0 8px rgba(255, 201, 74, .42);
  content: "";
  height: 16px;
  left: 5px;
  position: absolute;
  top: 5px;
  width: 16px;
}

.mission-icon-mountain-chest {
  background:
    radial-gradient(circle at 50% 18%, rgba(255, 214, 106, .2), transparent 36%),
    linear-gradient(180deg, rgba(20, 32, 52, .92), rgba(9, 16, 27, .96));
}

.mission-icon-mountain-chest::before,
.mission-icon-mountain-chest::after {
  border: 2px solid #26180b;
  content: "";
  left: 5px;
  position: absolute;
  width: 16px;
}

.mission-icon-mountain-chest::before {
  background: linear-gradient(180deg, #f2b84e, #8b4d17);
  border-radius: 3px 3px 4px 4px;
  bottom: 5px;
  height: 11px;
}

.mission-icon-mountain-chest::after {
  background: linear-gradient(180deg, #ffe28a, #b8681c);
  border-radius: 4px 4px 2px 2px;
  height: 8px;
  top: 6px;
}

.mission-icon-default::after {
  color: #ffe18a;
  content: "!";
  font-size: 18px;
  font-weight: 1000;
  inset: 0;
  line-height: 28px;
  position: absolute;
  text-align: center;
}

.daily-mission-title {
  color: #fff7d6;
  font-size: 13px;
  line-height: 1.15;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.daily-mission-progress {
  align-items: center;
  display: grid;
  gap: 7px;
  grid-template-columns: minmax(0, 1fr) auto;
}

.daily-mission-claim {
  align-items: center;
  aspect-ratio: 1;
  align-self: center;
  background:
    radial-gradient(circle at 50% 20%, rgba(255, 255, 255, .08), transparent 42%),
    linear-gradient(180deg, #253143, #111a27);
  border: 1px solid rgba(143, 168, 200, .22);
  border-radius: 15px;
  box-shadow:
    inset 0 2px 0 rgba(255, 255, 255, .08),
    inset 0 -3px 0 rgba(0, 0, 0, .24);
  cursor: pointer;
  display: grid;
  justify-items: center;
  height: 50px;
  justify-self: end;
  min-width: 50px;
  padding: 0;
  position: relative;
  transform-origin: center;
  width: 50px;
  will-change: transform, box-shadow;
}

.daily-mission-claim:disabled {
  cursor: default;
}

.daily-mission-claim.is-locked {
  filter: none;
  opacity: .9;
}

.daily-mission-claim.is-pending {
  background: linear-gradient(180deg, #3a4657, #1a2431);
  border-color: rgba(143, 168, 200, .34);
  cursor: progress;
  opacity: .82;
}

.daily-mission-claim.is-pending-ready {
  background:
    radial-gradient(circle at 50% 27%, #fff2aa, #f5c553 45%, #dc7d14 100%);
  border-color: rgba(255, 247, 196, .82);
  box-shadow:
    0 10px 24px rgba(245, 159, 36, .2),
    inset 0 2px 0 rgba(255, 255, 255, .5),
    inset 0 -4px 0 rgba(96, 45, 7, .26);
  cursor: progress;
  opacity: 1;
}

.daily-mission-claim.is-ready {
  background:
    radial-gradient(circle at 50% 27%, #fff2aa, #f5c553 45%, #dc7d14 100%);
  border-color: rgba(255, 247, 196, .9);
  box-shadow:
    0 12px 26px rgba(245, 159, 36, .24),
    inset 0 2px 0 rgba(255, 255, 255, .55),
    inset 0 -4px 0 rgba(96, 45, 7, .28);
  animation: dailyRewardPulse 1.18s ease-in-out infinite;
  z-index: 1;
}

.daily-mission-claim.is-ready::before,
.daily-mission-claim.is-ready::after {
  border: 2px solid rgba(255, 224, 118, .62);
  border-radius: 18px;
  content: "";
  inset: -6px;
  pointer-events: none;
  position: absolute;
}

.daily-mission-claim.is-ready::before {
  animation: dailyRewardRing 1.18s ease-out infinite;
}

.daily-mission-claim.is-ready::after {
  border-color: rgba(255, 255, 210, .32);
  inset: -2px;
}

.daily-mission-claim.is-claimed {
  background: linear-gradient(180deg, #62f1b5, #159466);
  border-color: rgba(176, 255, 220, .7);
  filter: none;
  opacity: 1;
}

.daily-mission-claim-icon {
  background-image: url("./assets/gate-war-reward-chests.svg?v=68fa2ea73ffb291f13cd");
  background-position: 0 0;
  background-repeat: no-repeat;
  background-size: 300% 100%;
  display: block;
  filter: drop-shadow(0 4px 5px rgba(0, 0, 0, .28));
  height: 42px;
  position: relative;
  width: 42px;
}

.daily-mission-claim-icon::before,
.daily-mission-claim-icon::after {
  content: none;
  display: none;
}

.daily-mission-claim.is-ready .daily-mission-claim-icon {
  background-position: 50% 0;
  filter:
    drop-shadow(0 0 8px rgba(255, 225, 109, .58))
    drop-shadow(0 5px 7px rgba(75, 35, 4, .34));
}

.daily-mission-claim.is-pending-ready .daily-mission-claim-icon {
  background-position: 50% 0;
  filter:
    drop-shadow(0 0 8px rgba(255, 225, 109, .44))
    drop-shadow(0 5px 7px rgba(75, 35, 4, .3));
}

.daily-mission-claim.is-claimed .daily-mission-claim-icon {
  background-position: 100% 0;
  filter:
    drop-shadow(0 0 5px rgba(98, 241, 181, .3))
    drop-shadow(0 4px 5px rgba(0, 0, 0, .2));
}

.daily-star-panel {
  border-top: 1px solid rgba(143, 168, 200, .14);
  display: grid;
  gap: 6px;
  margin-top: 2px;
  padding-top: 8px;
}

.daily-star-head {
  align-items: center;
  color: #fff7d6;
  display: flex;
  font-size: 12px;
  font-weight: 950;
  gap: 10px;
  justify-content: space-between;
}

.daily-star-head span {
  color: #9fb0c9;
  font-size: 11px;
  font-weight: 900;
}

.daily-star-bar {
  background: rgba(2, 6, 12, .72);
  border: 1px solid rgba(143, 168, 200, .18);
  border-radius: 999px;
  height: 16px;
  margin: 2px 10px 0;
  overflow: visible;
  position: relative;
}

.daily-star-bar > span {
  background: linear-gradient(90deg, #f9c338, #fff2a8);
  border-radius: inherit;
  box-shadow: 0 0 16px rgba(255, 214, 106, .26);
  display: block;
  height: 100%;
  position: relative;
  transition: width .58s cubic-bezier(.19, .84, .25, 1);
  width: 0;
  z-index: 1;
}

.daily-star-bar > span.is-reward-filling {
  box-shadow:
    0 0 18px rgba(255, 214, 106, .36),
    0 0 34px rgba(255, 214, 106, .18);
}

.daily-star-milestones {
  inset: 0;
  pointer-events: none;
  position: absolute;
  z-index: 2;
}

.daily-star-milestone {
  align-items: center;
  background:
    radial-gradient(circle at 50% 28%, rgba(255, 255, 255, .16), transparent 46%),
    linear-gradient(180deg, rgba(32, 42, 58, .98), rgba(13, 19, 30, .98));
  border: 1px solid rgba(143, 168, 200, .32);
  border-radius: 999px;
  box-shadow:
    0 4px 10px rgba(0, 0, 0, .24),
    inset 0 1px 0 rgba(255, 255, 255, .12);
  color: #7f91ad;
  display: inline-flex;
  font-size: 10px;
  font-weight: 950;
  gap: 4px;
  height: 24px;
  justify-content: center;
  left: 0;
  min-height: 0;
  padding: 0;
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 24px;
}

.daily-star-milestone b {
  color: #66758d;
  font-size: 15px;
  line-height: 1;
}

.daily-star-milestone small {
  display: none;
}

.daily-star-milestone.is-ready {
  background: linear-gradient(180deg, rgba(255, 221, 112, .18), rgba(210, 137, 25, .12));
  border-color: rgba(255, 216, 104, .46);
  color: #ffe38c;
}

.daily-star-milestone.is-ready b {
  color: #ffd04f;
  filter: drop-shadow(0 0 7px rgba(255, 197, 58, .3));
}

.daily-star-milestone.is-claimed {
  background:
    radial-gradient(circle at 50% 26%, rgba(255, 255, 255, .12), transparent 42%),
    linear-gradient(180deg, rgba(24, 29, 38, .98), rgba(3, 5, 9, .98));
  border-color: rgba(255, 216, 104, .5);
  color: #f7d96b;
}

.daily-star-milestone.is-claimed b {
  color: #f4ca43;
  filter:
    drop-shadow(0 1px 1px rgba(0, 0, 0, .72))
    drop-shadow(0 0 6px rgba(255, 202, 67, .28));
}

.daily-star-milestone.is-next {
  animation: dailyStarMilestonePulse 1.5s ease-in-out infinite;
  box-shadow: 0 0 0 1px rgba(255, 226, 132, .24), 0 0 18px rgba(245, 177, 47, .18);
}

.daily-star-claim {
  align-items: center;
  background: rgba(255, 255, 255, .055);
  border: 1px solid rgba(143, 168, 200, .18);
  border-radius: 10px;
  color: #9fb0c9;
  cursor: default;
  display: inline-flex;
  font-size: 12px;
  font-weight: 1000;
  gap: 0;
  justify-content: center;
  min-height: 32px;
  padding: 6px 10px;
}

.daily-star-claim .lobby-star-shape {
  display: none;
}

.daily-star-claim.is-ready {
  background: linear-gradient(180deg, #ffd66b, #d98318);
  border-color: rgba(255, 247, 196, .72);
  box-shadow:
    0 10px 24px rgba(245, 159, 36, .16),
    inset 0 2px 0 rgba(255, 255, 255, .42),
    inset 0 -3px 0 rgba(79, 38, 6, .24);
  color: #301700;
  cursor: pointer;
}

.daily-star-claim.is-ready .lobby-star-shape,
.daily-star-claim.is-claimed .lobby-star-shape {
  opacity: 1;
}

.daily-star-claim.is-pending {
  border-color: rgba(143, 168, 200, .36);
  color: #dbe4f4;
  cursor: progress;
}

.daily-star-claim.is-claimed {
  background: linear-gradient(180deg, #62f1b5, #159466);
  border-color: rgba(176, 255, 220, .7);
  color: #ecfff7;
}

.reward-fx-layer {
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  position: fixed;
  z-index: 18;
}

.reward-fx-particle {
  background:
    radial-gradient(circle at 38% 28%, rgba(255, 255, 255, .96), rgba(255, 230, 142, .72) 24%, rgba(234, 152, 27, .96) 67%, rgba(105, 51, 8, .98));
  border: 1px solid rgba(255, 246, 184, .82);
  border-radius: 999px;
  box-shadow:
    0 0 12px rgba(255, 201, 73, .5),
    0 5px 9px rgba(0, 0, 0, .24);
  display: block;
  height: 11px;
  left: -6px;
  position: absolute;
  top: -6px;
  transform-origin: center;
  width: 11px;
  will-change: opacity, transform;
}

.reward-fx-particle.is-spark {
  background: radial-gradient(circle, #fff8c8 0 22%, #ffd45c 38%, rgba(255, 190, 57, .38) 62%, transparent 72%);
  border: 0;
  box-shadow: 0 0 16px rgba(255, 222, 120, .58);
  height: 15px;
  left: -8px;
  top: -8px;
  width: 15px;
}

.reward-fx-particle.is-fragment {
  background: linear-gradient(135deg, #fff2a8, #eaa34a 52%, #8b4a12);
  border-radius: 4px 7px 5px;
  height: 9px;
  left: -5px;
  top: -5px;
  width: 12px;
}

.reward-fx-burst {
  animation: rewardFxBurst .72s ease-out forwards;
  border: 2px solid rgba(255, 224, 118, .68);
  border-radius: 999px;
  box-shadow:
    0 0 18px rgba(255, 219, 105, .34),
    inset 0 0 18px rgba(255, 219, 105, .14);
  display: block;
  height: 58px;
  margin: -29px 0 0 -29px;
  position: absolute;
  width: 58px;
}

.reward-fx-amount,
.reward-fx-star-label {
  animation: rewardFxAmount .88s ease-out forwards;
  color: #fff2a8;
  display: block;
  font-size: 15px;
  font-weight: 1000;
  letter-spacing: .02em;
  margin: -18px 0 0 -16px;
  position: absolute;
  text-shadow:
    0 2px 0 rgba(74, 36, 4, .55),
    0 0 12px rgba(255, 220, 99, .55);
  white-space: nowrap;
}

.reward-fx-flying-star {
  color: #ffd456;
  display: block;
  filter:
    drop-shadow(0 0 10px rgba(255, 218, 83, .6))
    drop-shadow(0 5px 8px rgba(0, 0, 0, .28));
  font-size: 36px;
  font-weight: 1000;
  left: -18px;
  line-height: 1;
  position: absolute;
  text-shadow: 0 0 18px rgba(255, 224, 118, .48);
  top: -18px;
  transform-origin: center;
  will-change: opacity, transform;
}

.reward-fx-star-label {
  animation-duration: .96s;
  color: #fff7d6;
  font-size: 18px;
  margin-left: 14px;
  margin-top: -32px;
}

.daily-mission-claim.reward-fx-chest-pop {
  animation: rewardFxChestSettle .54s ease-out;
}

.daily-star-milestone.reward-fx-star-unlocked {
  animation: rewardFxStarUnlock .95s ease-out;
}

.daily-star-claim.reward-fx-ready-pop {
  animation: rewardFxReadyButton .72s ease-out;
}

.lobby-hero-stars.reward-fx-counter-pop,
#lobbyStarsHero.reward-fx-counter-pop {
  animation: rewardFxCounterPop .72s ease-out;
}

@keyframes rewardFxBurst {
  0% {
    opacity: .95;
    transform: scale(.42);
  }
  72% {
    opacity: .36;
  }
  100% {
    opacity: 0;
    transform: scale(1.34);
  }
}

@keyframes rewardFxAmount {
  0% {
    opacity: 0;
    transform: translate3d(-50%, -50%, 0) scale(.72);
  }
  18% {
    opacity: 1;
    transform: translate3d(-50%, -72%, 0) scale(1.08);
  }
  100% {
    opacity: 0;
    transform: translate3d(-50%, -148%, 0) scale(.86);
  }
}

@keyframes rewardFxChestSettle {
  0% {
    transform: scale(1);
  }
  38% {
    box-shadow:
      0 0 0 8px rgba(255, 214, 106, .13),
      0 14px 26px rgba(245, 159, 36, .2);
    transform: scale(1.08);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes rewardFxStarUnlock {
  0% {
    filter: brightness(1);
    transform: translate(-50%, -50%) scale(1);
  }
  34% {
    filter: brightness(1.35);
    box-shadow:
      0 0 0 7px rgba(255, 224, 118, .18),
      0 0 24px rgba(255, 207, 79, .42);
    transform: translate(-50%, -50%) scale(1.32);
  }
  100% {
    filter: brightness(1);
    transform: translate(-50%, -50%) scale(1);
  }
}

@keyframes rewardFxReadyButton {
  0% {
    transform: scale(1);
  }
  40% {
    box-shadow:
      0 0 0 6px rgba(255, 221, 105, .14),
      0 12px 28px rgba(245, 159, 36, .26),
      inset 0 2px 0 rgba(255, 255, 255, .5),
      inset 0 -3px 0 rgba(79, 38, 6, .24);
    transform: scale(1.035);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes rewardFxCounterPop {
  0% {
    filter: brightness(1);
    transform: scale(1);
  }
  42% {
    filter: brightness(1.25);
    transform: scale(1.09);
  }
  100% {
    filter: brightness(1);
    transform: scale(1);
  }
}

.floor-preview-banner {
  position: fixed;
  z-index: 10000;
  top: 10px;
  left: 50%;
  max-width: min(760px, calc(100vw - 24px));
  transform: translateX(-50%);
  border: 1px solid rgba(255, 211, 92, .68);
  border-radius: 999px;
  background: rgba(35, 27, 10, .94);
  box-shadow: 0 8px 24px rgba(0, 0, 0, .26);
  color: #ffe7a0;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .02em;
  line-height: 1.2;
  padding: 8px 14px;
  pointer-events: none;
  text-align: center;
}

.floor-preview-banner.is-error {
  border-color: rgba(255, 113, 121, .72);
  background: rgba(57, 15, 19, .95);
  color: #ffd9dc;
}

body.mobile-landscape .floor-preview-banner {
  top: 5px;
  max-width: calc(100vw - 12px);
  font-size: 10px;
  padding: 5px 10px;
}

.lobby-ranking-card,
.lobby-friends-card {
  display: grid;
  gap: 12px;
  padding: 14px;
}

.lobby-ranking-list,
.lobby-friends-list {
  align-content: start;
  display: grid;
  gap: 8px;
  min-height: 0;
  overflow: auto;
}

.lobby-person-row {
  align-items: center;
  background: rgba(255, 255, 255, .045);
  border: 1px solid rgba(143, 168, 200, .14);
  border-radius: 10px;
  display: grid;
  gap: 9px;
  grid-template-columns: 34px minmax(0, 1fr) 24px auto;
  min-width: 0;
  padding: 7px 8px;
}

.lobby-person-row.is-ranked {
  gap: 8px;
  grid-template-columns: 40px 36px minmax(0, 1fr) 24px auto;
}

.daily-missions {
  grid-template-rows: auto minmax(0, 1fr) auto;
}

.daily-missions-head #skinFragmentsStatus {
  display: none;
}

.lobby-ranking-card,
.lobby-friends-card {
  grid-template-rows: auto minmax(0, 1fr);
}

.daily-mission-list,
.lobby-ranking-list,
.lobby-friends-list {
  overflow-x: hidden;
  overflow-y: auto;
  padding-right: 0;
  scrollbar-gutter: auto;
  scrollbar-width: none;
}

.daily-mission-list::-webkit-scrollbar,
.lobby-ranking-list::-webkit-scrollbar,
.lobby-friends-list::-webkit-scrollbar {
  display: none;
  height: 0;
  width: 0;
}

.lobby-person-row.is-top {
  border-color: rgba(255, 214, 106, .28);
}

.lobby-person-row.is-top-1 {
  background:
    radial-gradient(circle at 11% 45%, rgba(255, 218, 91, .18), transparent 42%),
    rgba(255, 255, 255, .055);
  border-color: rgba(255, 214, 106, .42);
  grid-template-columns: 42px 40px minmax(0, 1fr) 24px auto;
  min-height: 56px;
}

.lobby-person-row.is-top-2 {
  border-color: rgba(207, 224, 246, .32);
}

.lobby-person-row.is-top-3 {
  border-color: rgba(216, 135, 80, .34);
}

.lobby-ranking-place {
  align-items: center;
  align-self: center;
  background: linear-gradient(180deg, rgba(17, 25, 39, .96), rgba(7, 10, 17, .96));
  border: 1px solid rgba(143, 168, 200, .22);
  border-radius: 10px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08);
  color: #dfe9fb;
  display: inline-grid;
  height: 28px;
  justify-content: center;
  justify-self: center;
  width: 28px;
}

.lobby-ranking-place strong {
  font-size: 12px;
  font-weight: 950;
  line-height: 1;
}

.lobby-ranking-trophy {
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  display: grid;
  filter: drop-shadow(0 5px 8px rgba(0, 0, 0, .36));
  height: 36px;
  place-items: start center;
  position: relative;
  width: 34px;
}

.lobby-ranking-trophy::before,
.lobby-ranking-trophy::after {
  content: "";
  pointer-events: none;
  position: absolute;
}

.lobby-ranking-trophy::before {
  background:
    radial-gradient(circle at 50% 18%, rgba(255, 255, 255, .62), transparent 15%),
    linear-gradient(135deg, var(--trophy-hi), var(--trophy-mid) 48%, var(--trophy-low));
  border: 1px solid rgba(255, 255, 255, .38);
  border-radius: 8px 8px 12px 12px;
  box-shadow:
    -8px 5px 0 -5px var(--trophy-low),
    8px 5px 0 -5px var(--trophy-low),
    inset 0 1px 0 rgba(255, 255, 255, .4);
  clip-path: polygon(14% 9%, 86% 9%, 78% 55%, 58% 70%, 42% 70%, 22% 55%);
  height: 29px;
  left: 2px;
  top: 0;
  width: 30px;
}

.lobby-ranking-trophy::after {
  background: linear-gradient(180deg, var(--trophy-hi), var(--trophy-low));
  border-radius: 3px 3px 8px 8px;
  bottom: 1px;
  box-shadow: 0 5px 0 -2px var(--trophy-low);
  height: 13px;
  left: 12px;
  width: 10px;
}

.lobby-ranking-trophy strong {
  color: #2b1900;
  font-size: 12px;
  margin-top: 9px;
  position: relative;
  text-shadow: 0 1px 0 rgba(255, 255, 255, .36);
  z-index: 1;
}

.lobby-ranking-trophy--gold {
  --trophy-hi: #fff4a0;
  --trophy-mid: #ffc746;
  --trophy-low: #b66b0d;
  height: 42px;
  width: 40px;
}

.lobby-ranking-trophy--gold::before {
  height: 34px;
  width: 36px;
}

.lobby-ranking-trophy--gold::after {
  bottom: 2px;
  left: 14px;
  width: 12px;
}

.lobby-ranking-trophy--gold strong {
  font-size: 13px;
  margin-top: 10px;
}

.lobby-ranking-trophy--silver {
  --trophy-hi: #f5fbff;
  --trophy-mid: #cbd9eb;
  --trophy-low: #728399;
}

.lobby-ranking-trophy--bronze {
  --trophy-hi: #ffd5a1;
  --trophy-mid: #c3743e;
  --trophy-low: #71391d;
}

.lobby-ranking-trophy {
  background: var(--lobby-trophy-icon) center / contain no-repeat;
}

.lobby-ranking-trophy::before,
.lobby-ranking-trophy::after {
  content: none;
  display: none;
}

.lobby-ranking-trophy strong {
  font-size: 0;
  opacity: 0;
}

.lobby-ranking-trophy--gold {
  --lobby-trophy-icon: url("./assets/ui/ranking/trophy-gold-1.webp?v=30853f5f21fe9e5a7017");
}

.lobby-ranking-trophy--silver {
  --lobby-trophy-icon: url("./assets/ui/ranking/trophy-silver-2.webp?v=1e5210d97b74b5f4fd7e");
}

.lobby-ranking-trophy--bronze {
  --lobby-trophy-icon: url("./assets/ui/ranking/trophy-bronze-3.webp?v=b4087732c6fa46346abd");
}

.lobby-mini-avatar {
  background-color: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 214, 106, .22);
  border-radius: 8px;
  height: 34px;
  width: 34px;
}

.lobby-person-row.is-ranked .lobby-mini-avatar {
  height: 36px;
  width: 36px;
}

.lobby-person-row.is-top-1 .lobby-mini-avatar {
  height: 40px;
  width: 40px;
}

.lobby-person-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.lobby-person-copy strong,
.lobby-person-copy small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.lobby-person-copy strong {
  color: #f8fbff;
  font-size: 12px;
  font-weight: 950;
}

.lobby-person-copy small {
  color: #9fb0c9;
  font-size: 10px;
  font-weight: 850;
}

.lobby-person-stars strong {
  font-size: 13px;
}

.lobby-person-stars .lobby-star-shape {
  height: 16px;
  width: 16px;
}

.lobby-empty-state {
  align-self: center;
  color: #9fb0c9;
  font-size: 12px;
  font-weight: 850;
  line-height: 1.35;
  margin: 0;
}

.team-select-overlay {
  background:
    radial-gradient(circle at 50% 34%, rgba(255, 214, 106, .12), transparent 32%),
    linear-gradient(180deg, rgba(3, 6, 12, .52), rgba(3, 6, 12, .86));
  backdrop-filter: blur(3px) saturate(.82);
  z-index: 13;
}

.team-select-dialog {
  background:
    linear-gradient(180deg, rgba(28, 38, 54, .97), rgba(8, 12, 20, .98)),
    radial-gradient(circle at 50% 0, rgba(84, 130, 202, .2), transparent 54%);
  border-color: rgba(255, 214, 106, .34);
  color: #edf5ff;
  max-width: 680px;
  position: relative;
  width: min(680px, calc(100vw - 36px));
}

.team-select-dialog h2 {
  color: #f8fbff;
  font-size: clamp(32px, 5vw, 48px);
  line-height: .95;
  margin: 0;
  text-transform: uppercase;
}

.modal-close-button {
  align-items: center;
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(143, 168, 200, .2);
  border-radius: 999px;
  color: #dfe9fb;
  cursor: pointer;
  display: grid;
  font-size: 22px;
  font-weight: 1000;
  height: 34px;
  justify-content: center;
  line-height: 1;
  position: absolute;
  right: 12px;
  top: 12px;
  width: 34px;
  z-index: 2;
}

.modal-close-button:hover {
  background: rgba(255, 214, 106, .16);
  border-color: rgba(255, 214, 106, .42);
}

.rank-info-overlay {
  background:
    radial-gradient(circle at 50% 26%, rgba(255, 214, 106, .16), transparent 34%),
    linear-gradient(180deg, rgba(3, 6, 12, .56), rgba(3, 6, 12, .88));
  backdrop-filter: blur(3px) saturate(.86);
  z-index: 15;
}

.rank-info-dialog {
  background:
    linear-gradient(180deg, rgba(29, 39, 56, .98), rgba(8, 12, 20, .99)),
    radial-gradient(circle at 50% 0, rgba(255, 214, 106, .18), transparent 52%);
  border-color: rgba(255, 214, 106, .36);
  box-shadow:
    0 24px 80px rgba(0, 0, 0, .62),
    0 0 0 1px rgba(255, 214, 106, .08),
    inset 0 1px 0 rgba(255, 255, 255, .08);
  color: #edf5ff;
  gap: 12px;
  max-height: calc(100dvh - 28px);
  max-width: 560px;
  overflow: auto;
  padding: 22px;
  position: relative;
  width: min(560px, calc(100vw - 28px));
}

.rank-info-dialog h2 {
  color: #fff7d6;
  font-size: clamp(28px, 4.6vw, 42px);
  line-height: .95;
  margin: 0;
  text-shadow:
    0 2px 0 rgba(0, 0, 0, .34),
    0 0 20px rgba(255, 214, 106, .2);
  text-transform: uppercase;
}

.rank-info-dialog > p {
  color: #b8c8df;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.35;
  margin: 0;
}

.rank-info-current {
  align-items: center;
  background:
    radial-gradient(circle at 14% 50%, rgba(255, 214, 106, .18), transparent 34%),
    linear-gradient(180deg, rgba(255, 255, 255, .07), rgba(255, 255, 255, .028));
  border: 1px solid rgba(255, 214, 106, .28);
  border-radius: 12px;
  display: grid;
  gap: 10px;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  padding: 10px 12px;
  text-align: left;
}

.rank-info-current small {
  color: #9fb0c9;
  display: block;
  font-size: 10px;
  font-weight: 950;
  letter-spacing: .08em;
  line-height: 1;
  text-transform: uppercase;
}

.rank-info-current strong {
  color: #fff3a8;
  display: block;
  font-size: 22px;
  font-weight: 1000;
  line-height: 1;
}

.rank-info-current b {
  align-items: center;
  background: rgba(4, 9, 18, .62);
  border: 1px solid rgba(255, 214, 106, .26);
  border-radius: 999px;
  color: #ffe18a;
  display: inline-flex;
  font-size: 20px;
  font-weight: 1000;
  justify-content: center;
  min-width: 64px;
  padding: 8px 10px;
}

.rank-info-grid {
  display: grid;
  gap: 8px;
}

.rank-info-row {
  align-items: center;
  background: rgba(255, 255, 255, .045);
  border: 1px solid rgba(143, 168, 200, .16);
  border-radius: 10px;
  display: grid;
  gap: 10px;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  padding: 8px 10px;
  text-align: left;
}

.rank-info-row.is-current {
  background:
    radial-gradient(circle at 92% 50%, rgba(255, 214, 106, .18), transparent 34%),
    linear-gradient(180deg, rgba(255, 214, 106, .12), rgba(255, 255, 255, .04));
  border-color: rgba(255, 214, 106, .58);
  box-shadow:
    0 0 22px rgba(255, 214, 106, .12),
    inset 0 0 0 1px rgba(255, 214, 106, .14);
}

.rank-info-row strong {
  color: #f8fbff;
  display: block;
  font-size: 15px;
  font-weight: 1000;
  line-height: 1.05;
}

.rank-info-row small {
  color: #9fb0c9;
  display: block;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.15;
  margin-top: 2px;
}

.rank-info-row b {
  color: #ffe18a;
  font-size: 15px;
  font-weight: 1000;
  white-space: nowrap;
}

.skin-select-overlay,
.spell-loadout-overlay,
.technical-missions-overlay {
  background:
    radial-gradient(circle at 50% 22%, rgba(255, 214, 106, .14), transparent 36%),
    linear-gradient(180deg, rgba(3, 6, 12, .58), rgba(3, 6, 12, .9));
  backdrop-filter: blur(3px) saturate(.88);
  z-index: 17;
}

.skin-select-dialog,
.spell-loadout-dialog,
.technical-missions-dialog {
  background:
    linear-gradient(180deg, rgba(29, 39, 56, .98), rgba(8, 12, 20, .99)),
    radial-gradient(circle at 50% 0, rgba(255, 214, 106, .16), transparent 54%);
  border-color: rgba(255, 214, 106, .34);
  box-shadow:
    0 24px 80px rgba(0, 0, 0, .62),
    0 0 0 1px rgba(255, 214, 106, .08),
    inset 0 1px 0 rgba(255, 255, 255, .08);
  color: #edf5ff;
  gap: 12px;
  max-height: calc(100dvh - 28px);
  max-width: 680px;
  overflow: auto;
  padding: 22px;
  position: relative;
  width: min(680px, calc(100vw - 28px));
}

.skin-select-dialog {
  max-width: 940px;
  width: min(940px, calc(100vw - 28px));
}

.spell-loadout-dialog {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  max-height: min(720px, calc(100dvh - 28px));
  max-width: 780px;
  overflow: hidden;
  padding: 18px;
  width: min(780px, calc(100vw - 28px));
}

.technical-missions-dialog {
  max-width: 920px;
  overflow: hidden;
  width: min(920px, calc(100vw - 28px));
}

.skin-select-dialog h2,
.spell-loadout-dialog h2,
.technical-missions-dialog h2 {
  color: #fff7d6;
  font-size: clamp(28px, 4.6vw, 42px);
  line-height: .95;
  margin: 0;
  text-shadow:
    0 2px 0 rgba(0, 0, 0, .34),
    0 0 20px rgba(255, 214, 106, .2);
  text-transform: uppercase;
}

.skin-select-dialog > p,
.spell-loadout-dialog > p,
.technical-missions-dialog > p {
  color: #b8c8df;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.35;
  margin: 0;
}

.technical-missions-summary {
  align-items: center;
  background: rgba(5, 10, 18, .64);
  border: 1px solid rgba(255, 214, 106, .24);
  border-radius: 10px;
  color: #ffe6a3;
  display: flex;
  flex-wrap: wrap;
  font-size: 13px;
  font-weight: 900;
  gap: 7px;
  padding: 10px 12px;
}

.technical-missions-summary span {
  background: rgba(255, 255, 255, .055);
  border: 1px solid rgba(255, 255, 255, .08);
  border-radius: 999px;
  padding: 5px 9px;
}

.technical-missions-summary .is-ready {
  background: rgba(255, 205, 83, .12);
  border-color: rgba(255, 214, 106, .32);
  color: #fff0b2;
}

.daily-mission-list.technical-missions-list {
  grid-auto-rows: max-content;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  max-height: min(58vh, 560px);
  padding: 2px 4px 8px 2px;
  scrollbar-width: thin;
}

.technical-missions-list::-webkit-scrollbar {
  display: initial;
  width: 8px;
}

.daily-mission-description {
  color: #98abc3;
  display: block;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.25;
  margin: 3px 0 5px;
}

.technical-missions-list .daily-mission-card {
  min-height: 112px;
}

.technical-mission-group {
  align-items: center;
  color: #c9d8eb;
  display: flex;
  font-size: 11px;
  font-weight: 1000;
  gap: 8px;
  grid-column: 1 / -1;
  letter-spacing: .07em;
  margin: 4px 2px -1px;
  text-transform: uppercase;
}

.technical-mission-group::after {
  background: linear-gradient(90deg, rgba(143, 168, 200, .24), transparent);
  content: "";
  flex: 1;
  height: 1px;
}

.technical-mission-group b {
  background: rgba(255, 255, 255, .06);
  border-radius: 999px;
  color: #ffe7a2;
  font-size: 10px;
  padding: 3px 7px;
}

.technical-mission-new,
.technical-mission-reward {
  border-radius: 999px;
  display: inline-flex;
  font-size: 9px;
  font-weight: 1000;
  letter-spacing: .05em;
  margin-left: 6px;
  padding: 3px 6px;
  text-transform: uppercase;
}

.technical-mission-new {
  background: rgba(77, 190, 255, .16);
  border: 1px solid rgba(112, 208, 255, .3);
  color: #bdeaff;
}

.technical-mission-reward {
  background: rgba(255, 205, 83, .12);
  border: 1px solid rgba(255, 214, 106, .24);
  color: #ffe591;
  letter-spacing: 0;
  margin-left: auto;
  text-transform: none;
}

.spell-loadout-a11y-title {
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}

.spell-loadout-selected-slots {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  padding-right: 42px;
}

.spell-loadout-selected-slot {
  align-items: center;
  appearance: none;
  background:
    radial-gradient(circle at 28% 18%, rgba(164, 106, 255, .13), transparent 52%),
    linear-gradient(180deg, rgba(23, 32, 48, .94), rgba(7, 11, 18, .96));
  border: 1px solid rgba(159, 127, 215, .38);
  border-radius: 12px;
  color: #edf5ff;
  cursor: pointer;
  display: grid;
  font: inherit;
  gap: 9px;
  grid-template-columns: 28px 46px minmax(0, 1fr);
  min-height: 84px;
  min-width: 0;
  padding: 10px 12px;
  position: relative;
  text-align: left;
  transition: border-color .15s ease, box-shadow .15s ease, filter .15s ease, transform .15s ease;
}

.spell-loadout-selected-slot.is-target-slot {
  background:
    radial-gradient(circle at 28% 18%, rgba(255, 214, 106, .21), transparent 54%),
    linear-gradient(180deg, rgba(36, 37, 45, .98), rgba(11, 12, 17, .98));
  border-color: #ffe38a;
  box-shadow:
    0 0 0 2px rgba(255, 214, 106, .2),
    0 9px 20px rgba(0, 0, 0, .22),
    inset 0 1px 0 rgba(255, 255, 255, .12);
  transform: translateY(-1px);
}

.spell-loadout-selected-slot.is-empty {
  border-style: dashed;
  color: #8293aa;
}

.spell-loadout-selected-slot .rune-icon {
  height: 46px;
  width: 46px;
}

.spell-loadout-selected-slot strong {
  font-size: 14px;
  line-height: 1.1;
  min-width: 0;
  overflow-wrap: anywhere;
}

.spell-loadout-slot-number {
  align-items: center;
  color: #a995d2;
  display: inline-flex;
  font-size: 26px;
  font-weight: 1000;
  justify-content: center;
  line-height: 1;
  text-shadow: 0 2px 12px rgba(0, 0, 0, .4);
}

.spell-loadout-selected-slot.is-target-slot .spell-loadout-slot-number {
  color: #ffe38a;
}

.spell-loadout-slot-state {
  align-items: center;
  background: rgba(89, 219, 138, .16);
  border: 1px solid rgba(110, 235, 158, .34);
  border-radius: 999px;
  bottom: 6px;
  color: #a9f4c3;
  display: inline-flex;
  font-size: 10px;
  font-weight: 1000;
  height: 20px;
  justify-content: center;
  opacity: 0;
  position: absolute;
  right: 7px;
  transform: scale(.72);
  transition: opacity .16s ease, transform .16s ease;
  width: 20px;
}

.spell-loadout-selected-slot.is-saved .spell-loadout-slot-state {
  opacity: 1;
  transform: scale(1);
}

.spell-loadout-selected-slot.is-saving .spell-loadout-slot-state {
  animation: spell-loadout-saving-spin .7s linear infinite;
  border-color: rgba(255, 227, 138, .5);
  border-top-color: transparent;
  color: transparent;
  opacity: 1;
  transform: scale(.88);
}

@keyframes spell-loadout-saving-spin {
  to { transform: scale(.88) rotate(360deg); }
}

.spell-loadout-preview {
  display: grid;
  gap: 9px;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin: 0;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 2px 4px 6px 2px;
  scrollbar-width: thin;
}

.spell-loadout-card {
  align-items: center;
  background:
    radial-gradient(circle at 28% 10%, rgba(255, 214, 106, .14), transparent 48%),
    linear-gradient(180deg, rgba(22, 31, 47, .88), rgba(7, 11, 18, .92));
  border: 1px solid rgba(143, 168, 200, .22);
  border-radius: 11px;
  display: flex;
  flex-direction: column;
  gap: 7px;
  justify-content: center;
  min-height: 108px;
  min-width: 0;
  padding: 9px 7px;
  position: relative;
  text-align: center;
}

button.spell-loadout-card {
  color: inherit;
  cursor: pointer;
  font: inherit;
  transition: border-color .15s ease, box-shadow .15s ease, filter .15s ease, opacity .15s ease, transform .15s ease;
}

.spell-loadout-option.is-active {
  border-color: rgba(255, 214, 106, .72);
  box-shadow:
    0 0 0 1px rgba(255, 214, 106, .22) inset,
    0 12px 26px rgba(255, 214, 106, .12);
  transform: translateY(-1px);
}

.spell-loadout-option:not(.is-active):not(.is-occupied) {
  border-color: rgba(181, 130, 255, .42);
}

.spell-loadout-option:not(.is-active):not(.is-occupied):hover {
  border-color: rgba(208, 177, 255, .76);
  box-shadow: 0 10px 24px rgba(107, 59, 176, .18);
  transform: translateY(-1px);
}

.spell-loadout-option.is-occupied,
.spell-loadout-option:disabled {
  cursor: not-allowed;
  filter: grayscale(.56) saturate(.56);
  opacity: .34;
}

.spell-loadout-card .rune-icon {
  height: 50px;
  width: 50px;
}

.spell-loadout-card strong {
  color: #edf5ff;
  display: block;
  font-size: 13px;
  font-weight: 1000;
  line-height: 1.12;
  margin: 0;
  min-width: 0;
  overflow-wrap: anywhere;
  white-space: normal;
}

.spell-loadout-order {
  align-items: center;
  background: rgba(10, 13, 20, .9);
  border: 1px solid rgba(168, 183, 207, .26);
  border-radius: 999px;
  color: #bac6d8;
  display: inline-flex;
  font-size: 10px;
  font-weight: 1000;
  height: 21px;
  justify-content: center;
  position: absolute;
  right: 6px;
  top: 6px;
  width: 21px;
}

.spell-loadout-status {
  color: #a9f4c3;
  font-size: 11px;
  margin: -2px 0 0;
  min-height: 15px;
  text-align: center;
}

.spell-loadout-status.is-error {
  color: #ff9a9a;
}

.skin-select-list {
  display: grid;
  gap: 14px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.skin-select-option {
  align-items: center;
  background: rgba(255, 255, 255, .045);
  border: 1px solid rgba(143, 168, 200, .16);
  border-radius: 10px;
  color: #edf5ff;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 10px;
  justify-content: space-between;
  min-height: 226px;
  padding: 12px;
  position: relative;
  text-align: center;
}

.skin-select-option.is-locked {
  background: linear-gradient(180deg, rgba(12, 18, 29, .92), rgba(4, 8, 15, .86));
}

.skin-select-option.is-pending {
  opacity: .72;
}

.skin-rarity-badge {
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 1000;
  left: 8px;
  letter-spacing: .06em;
  line-height: 1;
  padding: 5px 7px;
  position: absolute;
  text-transform: uppercase;
  top: 8px;
  z-index: 2;
}

.rarity-common .skin-rarity-badge { color: var(--skin-rarity-common); background: rgba(79, 91, 108, .88); }
.rarity-rare .skin-rarity-badge { color: var(--skin-rarity-rare); background: rgba(15, 73, 126, .9); }
.rarity-epic .skin-rarity-badge { color: var(--skin-rarity-epic); background: rgba(89, 35, 129, .9); }
.rarity-legendary .skin-rarity-badge { color: var(--skin-rarity-legendary); background: rgba(129, 72, 12, .92); }

.skin-select-option:hover,
.skin-select-option:focus-visible {
  border-color: rgba(255, 214, 106, .48);
  box-shadow: 0 0 0 2px rgba(255, 214, 106, .1);
  outline: none;
}

.skin-select-option.is-active {
  background:
    radial-gradient(circle at 50% 30%, rgba(255, 214, 106, .2), transparent 54%),
    linear-gradient(180deg, rgba(255, 214, 106, .12), rgba(255, 255, 255, .04));
  border-color: rgba(255, 214, 106, .58);
}

.skin-select-option:disabled {
  cursor: wait;
  opacity: .64;
}

.skin-select-preview {
  align-items: center;
  aspect-ratio: 1;
  background:
    radial-gradient(circle at 50% 38%, rgba(255, 214, 106, .16), transparent 56%),
    rgba(3, 7, 14, .44);
  border: 1px solid rgba(255, 214, 106, .2);
  border-radius: 12px;
  display: grid;
  justify-items: center;
  min-height: 172px;
  overflow: hidden;
  padding: 0;
  width: 100%;
}

.skin-select-preview-action {
  color: inherit;
  cursor: pointer;
}

.skin-select-preview-action:disabled {
  cursor: default;
}

.skin-select-option.is-locked .skin-select-preview .lobby-avatar-sprite {
  filter: grayscale(.7) brightness(.64);
}

.skin-select-preview .lobby-avatar-sprite {
  height: 164px;
  width: 164px;
}

.skin-select-copy {
  min-width: 0;
  width: 100%;
}

.skin-fragment-progress {
  color: #c8d7ec;
  display: block;
  font-size: 12px;
  font-weight: 900;
  margin-top: 5px;
}

.skin-select-option.is-locked .skin-fragment-progress {
  color: #ffd978;
}

.skin-unlock-action {
  background: linear-gradient(180deg, #f4cb58, #bc7d18);
  border: 1px solid rgba(255, 231, 158, .72);
  border-radius: 8px;
  color: #211503;
  cursor: pointer;
  font-size: 12px;
  font-weight: 1000;
  min-height: 34px;
  padding: 7px 10px;
  width: 100%;
}

.skin-unlock-action:disabled {
  background: rgba(102, 115, 133, .22);
  border-color: rgba(143, 168, 200, .2);
  color: #718198;
  cursor: not-allowed;
}

.skin-select-copy strong {
  color: #fff5cd;
  display: block;
  font-size: 22px;
  font-weight: 1000;
  line-height: 1.05;
  text-wrap: balance;
}

.skin-select-empty {
  color: #b8c8df;
  font-size: 13px;
  font-weight: 850;
  margin: 0;
}

.skin-select-status {
  color: #ffd978;
  font-weight: 900;
  min-height: 18px;
  text-align: center;
}

.settings-overlay {
  background:
    radial-gradient(circle at 50% 22%, rgba(96, 165, 250, .16), transparent 34%),
    linear-gradient(180deg, rgba(3, 6, 12, .56), rgba(3, 6, 12, .9));
  backdrop-filter: blur(3px) saturate(.9);
  z-index: 16;
}

.settings-dialog {
  background:
    linear-gradient(180deg, rgba(29, 39, 56, .98), rgba(8, 12, 20, .99)),
    radial-gradient(circle at 50% 0, rgba(96, 165, 250, .16), transparent 54%);
  border-color: rgba(143, 168, 200, .34);
  box-shadow:
    0 24px 80px rgba(0, 0, 0, .62),
    0 0 0 1px rgba(143, 168, 200, .08),
    inset 0 1px 0 rgba(255, 255, 255, .08);
  color: #edf5ff;
  gap: 12px;
  max-height: calc(100dvh - 28px);
  max-width: 760px;
  overflow: hidden;
  padding: 22px;
  position: relative;
  width: min(760px, calc(100vw - 28px));
}

.settings-dialog h2 {
  color: #fff7d6;
  font-size: clamp(28px, 4vw, 40px);
  line-height: .95;
  margin: 0;
  text-transform: uppercase;
}

.settings-layout {
  display: grid;
  gap: 12px;
  grid-template-columns: 160px minmax(0, 1fr);
  min-height: 0;
}

.settings-tabs {
  align-content: start;
  display: grid;
  gap: 8px;
}

.settings-tab {
  align-items: center;
  background: rgba(255, 255, 255, .055);
  border: 1px solid rgba(143, 168, 200, .18);
  border-radius: 10px;
  color: #c9d7ea;
  cursor: pointer;
  display: flex;
  font-size: 12px;
  font-weight: 1000;
  justify-content: flex-start;
  min-height: 40px;
  padding: 9px 11px;
  text-align: left;
}

.settings-tab.is-active,
.settings-tab:hover,
.settings-tab:focus-visible {
  background: linear-gradient(180deg, rgba(255, 214, 106, .18), rgba(255, 255, 255, .06));
  border-color: rgba(255, 214, 106, .42);
  color: #fff7d6;
  outline: none;
}

.settings-panels {
  min-height: 0;
}

.settings-panel {
  background: rgba(255, 255, 255, .045);
  border: 1px solid rgba(143, 168, 200, .16);
  border-radius: 12px;
  display: grid;
  gap: 10px;
  max-height: min(68vh, 560px);
  overflow: auto;
  padding: 14px;
  scrollbar-width: none;
}

.settings-panel[hidden] {
  display: none;
}

.settings-panel::-webkit-scrollbar {
  display: none;
  height: 0;
  width: 0;
}

.settings-panel-head {
  display: grid;
  gap: 4px;
}

.settings-panel-head strong {
  color: #f8fbff;
  font-size: 18px;
  font-weight: 1000;
  line-height: 1.05;
}

.settings-panel-head small,
.settings-field small {
  color: #9fb0c9;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.3;
}

.settings-control-grid {
  background: rgba(3, 7, 14, .3);
  border: 1px solid rgba(143, 168, 200, .13);
  border-radius: 10px;
  display: grid;
  gap: 0;
  grid-template-columns: minmax(90px, .45fr) minmax(0, 1fr);
  overflow: hidden;
}

.settings-control-grid span,
.settings-control-grid strong {
  border-bottom: 1px solid rgba(143, 168, 200, .11);
  min-width: 0;
  padding: 10px 11px;
}

.settings-control-grid span:nth-last-child(-n + 2),
.settings-control-grid strong:nth-last-child(-n + 2) {
  border-bottom: 0;
}

.settings-control-grid span {
  color: #8fa8c8;
  font-size: 10px;
  font-weight: 1000;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.settings-control-grid strong {
  color: #fff7d6;
  font-size: 12px;
  font-weight: 950;
}

.settings-control-sections,
.settings-account-view {
  display: grid;
  gap: 10px;
}

.settings-account-view[hidden] {
  display: none;
}

.settings-control-section {
  background: rgba(3, 7, 14, .28);
  border: 1px solid rgba(143, 168, 200, .13);
  border-radius: 10px;
  display: grid;
  gap: 7px;
  padding: 8px;
}

.settings-section-head {
  display: grid;
  gap: 3px;
}

.settings-section-head strong {
  color: #fff7d6;
  font-size: 14px;
  font-weight: 1000;
}

.settings-section-head small {
  color: #9fb0c9;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.25;
}

.settings-keybind-list,
.settings-mobile-control-list,
.settings-action-list {
  display: grid;
  gap: 6px;
}

.settings-keybind-row {
  align-items: center;
  background: rgba(255, 255, 255, .04);
  border: 1px solid rgba(143, 168, 200, .12);
  border-radius: 9px;
  display: grid;
  gap: 8px;
  grid-template-columns: minmax(96px, auto) minmax(0, 1fr) auto;
  min-width: 0;
  padding: 6px 7px;
}

.settings-keycap-group {
  align-items: center;
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
}

.settings-keycap-group kbd,
.settings-keycap-group b {
  align-items: center;
  display: inline-flex;
  font-size: 11px;
  font-weight: 1000;
  justify-content: center;
  line-height: 1;
}

.settings-keycap-group kbd {
  background: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, .055));
  border: 1px solid rgba(143, 168, 200, .24);
  border-radius: 7px;
  box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .18);
  color: #f8fbff;
  min-height: 26px;
  min-width: 26px;
  padding: 0 7px;
}

.settings-keycap-group b {
  color: #8fa8c8;
  min-width: 10px;
}

.settings-keybind-row span:nth-child(2),
.settings-mobile-control-list div {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.settings-keybind-row strong,
.settings-mobile-control-list strong {
  color: #f8fbff;
  font-size: 12px;
  font-weight: 1000;
  line-height: 1.1;
}

.settings-keybind-row small,
.settings-mobile-control-list small {
  color: #9fb0c9;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.25;
}

.settings-keybind-row button {
  background: rgba(255, 255, 255, .055);
  border: 1px solid rgba(143, 168, 200, .18);
  border-radius: 8px;
  color: #c9d7ea;
  cursor: pointer;
  font-size: 10px;
  font-weight: 1000;
  min-height: 28px;
  padding: 5px 8px;
}

.settings-keybind-row button:hover,
.settings-keybind-row button:focus-visible,
.settings-keybind-row button.is-capturing,
.settings-action-list button:hover:not(:disabled),
.settings-action-list button:focus-visible:not(:disabled),
.settings-back-button:hover,
.settings-back-button:focus-visible {
  background: rgba(255, 214, 106, .13);
  border-color: rgba(255, 214, 106, .38);
  color: #fff7d6;
  outline: none;
}

.settings-keybind-row button.is-capturing {
  box-shadow: 0 0 0 2px rgba(255, 214, 106, .14);
}

.settings-keybind-capture-modal {
  align-items: center;
  background:
    radial-gradient(circle at 50% 28%, rgba(255, 214, 106, .16), transparent 38%),
    rgba(3, 6, 12, .72);
  backdrop-filter: blur(2px) saturate(.92);
  border-radius: inherit;
  display: flex;
  inset: 0;
  justify-content: center;
  padding: 18px;
  position: absolute;
  z-index: 5;
}

.settings-keybind-capture-modal[hidden] {
  display: none;
}

.settings-keybind-capture-panel {
  background:
    linear-gradient(180deg, rgba(30, 40, 58, .98), rgba(7, 12, 22, .99)),
    radial-gradient(circle at 50% 0, rgba(255, 214, 106, .16), transparent 54%);
  border: 1px solid rgba(255, 214, 106, .38);
  border-radius: 10px;
  box-shadow:
    0 22px 70px rgba(0, 0, 0, .64),
    0 0 0 1px rgba(255, 255, 255, .06),
    inset 0 1px 0 rgba(255, 255, 255, .08);
  color: #edf5ff;
  display: grid;
  gap: 10px;
  max-width: 420px;
  padding: 20px;
  text-align: center;
  width: min(420px, 100%);
}

.settings-keybind-capture-eyebrow {
  color: #91b8ff;
  font-size: 10px;
  font-weight: 1000;
  line-height: 1;
  text-transform: uppercase;
}

.settings-keybind-capture-panel h3 {
  color: #fff7d6;
  font-size: 30px;
  font-weight: 1000;
  line-height: 1;
  margin: 0;
  text-transform: uppercase;
}

.settings-keybind-capture-action,
.settings-keybind-capture-hint,
.settings-keybind-capture-feedback {
  color: #b8c8df;
  font-size: 13px;
  font-weight: 850;
  line-height: 1.35;
  margin: 0;
}

.settings-keybind-capture-action {
  color: #edf5ff;
}

.settings-keybind-capture-key {
  display: flex;
  justify-content: center;
}

.settings-keybind-capture-key kbd {
  align-items: center;
  background:
    radial-gradient(circle at 50% 0, rgba(255, 255, 255, .18), transparent 54%),
    linear-gradient(180deg, rgba(255, 214, 106, .24), rgba(255, 255, 255, .06));
  border: 1px solid rgba(255, 214, 106, .48);
  border-radius: 9px;
  box-shadow:
    inset 0 -4px 0 rgba(0, 0, 0, .22),
    0 0 24px rgba(255, 214, 106, .16);
  color: #fff7d6;
  display: inline-flex;
  font-size: 22px;
  font-weight: 1000;
  justify-content: center;
  min-height: 54px;
  min-width: 86px;
  padding: 0 18px;
}

.settings-keybind-capture-feedback {
  min-height: 18px;
}

.settings-keybind-capture-feedback.is-error {
  color: #fecaca;
}

.settings-keybind-capture-feedback.is-success {
  color: #bbf7d0;
}

.settings-keybind-capture-feedback.is-info {
  color: #bfdbfe;
}

.settings-keybind-capture-cancel {
  justify-self: center;
  min-width: 150px;
}

.settings-static-control {
  color: #8fa8c8;
  font-size: 10px;
  font-weight: 1000;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.settings-action-list button:disabled {
  cursor: default;
  filter: grayscale(.45);
  opacity: .48;
}

.settings-mobile-control-list {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.settings-mobile-control-list div {
  background: rgba(255, 255, 255, .04);
  border: 1px solid rgba(143, 168, 200, .12);
  border-radius: 9px;
  padding: 8px;
}

.settings-field {
  display: grid;
  gap: 6px;
}

.settings-field > span {
  color: #dbe7f8;
  font-size: 12px;
  font-weight: 1000;
}

.settings-field input,
.settings-field select {
  background: rgba(3, 7, 14, .56);
  border: 1px solid rgba(143, 168, 200, .24);
  border-radius: 9px;
  color: #edf5ff;
  font: inherit;
  font-size: 13px;
  font-weight: 850;
  min-height: 40px;
  outline: none;
  padding: 9px 10px;
}

.settings-field input:focus,
.settings-field select:focus {
  border-color: rgba(255, 214, 106, .52);
  box-shadow: 0 0 0 2px rgba(255, 214, 106, .12);
}

.settings-account-summary {
  align-items: center;
  background: rgba(255, 255, 255, .045);
  border: 1px solid rgba(143, 168, 200, .15);
  border-radius: 10px;
  display: grid;
  gap: 10px;
  grid-template-columns: 46px minmax(0, 1fr) repeat(3, minmax(58px, auto));
  padding: 9px 10px;
}

.settings-account-avatar {
  display: block;
  height: 46px;
  width: 46px;
}

.settings-account-summary > span:not(.settings-account-avatar) {
  min-width: 0;
}

.settings-account-summary small {
  color: #8fa8c8;
  display: block;
  font-size: 10px;
  font-weight: 1000;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.settings-account-summary strong {
  color: #fff7d6;
  display: block;
  font-size: 18px;
  font-weight: 1000;
  line-height: 1.05;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.settings-account-stat {
  background: rgba(3, 7, 14, .34);
  border: 1px solid rgba(143, 168, 200, .12);
  border-radius: 8px;
  display: grid;
  gap: 2px;
  justify-items: center;
  min-width: 58px;
  padding: 6px 8px;
}

.settings-account-stat strong {
  color: #ffe18a;
  font-size: 16px;
}

.settings-account-security strong {
  color: #b9f4d8;
  font-size: 12px;
}

.settings-action-list button,
.settings-back-button {
  background: rgba(255, 255, 255, .045);
  border: 1px solid rgba(143, 168, 200, .16);
  border-radius: 10px;
  color: #edf5ff;
  cursor: pointer;
  font: inherit;
  min-width: 0;
}

.settings-action-list button {
  display: grid;
  gap: 4px;
  padding: 10px 12px;
  text-align: left;
}

.settings-action-list button strong {
  color: #f8fbff;
  font-size: 13px;
  font-weight: 1000;
}

.settings-action-list button small {
  color: #9fb0c9;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.25;
}

.settings-back-button {
  justify-self: start;
  min-height: 30px;
  padding: 6px 10px;
}

.settings-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.settings-inline-status {
  color: #9fb0c9;
  font-size: 11px;
  font-weight: 850;
  line-height: 1.3;
  margin: 0;
  min-height: 15px;
}

.settings-field input[readonly] {
  color: #9fb0c9;
  cursor: default;
}

.settings-actions .secondary-action:disabled {
  cursor: default;
  filter: grayscale(.35);
  opacity: .56;
}

@media (max-width: 920px) {
  .lobby-main,
  .lobby-grid {
    grid-template-columns: 1fr;
  }

  .lobby-hero {
    justify-items: center;
    text-align: center;
  }

  .lobby-feature-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .lobby-controls {
    grid-template-columns: 1fr;
  }
}

.start-status-row {
  align-items: center;
  display: flex;
  gap: 8px;
  justify-content: space-between;
}

.server-pill,
.start-ready {
  border-radius: 999px;
  font-size: 11px;
  font-weight: 900;
  padding: 5px 9px;
}

.server-pill {
  background: rgba(25, 148, 102, .14);
  border: 1px solid rgba(52, 211, 153, .34);
  color: #62f1b5;
}

.server-pill.is-error {
  background: rgba(224, 82, 100, .16);
  border-color: rgba(255, 126, 145, .4);
  color: #ff9cac;
}

.server-pill.is-loading {
  background: rgba(47, 109, 246, .15);
  border-color: rgba(120, 170, 255, .4);
  color: #a9caff;
}

.start-ready {
  background: rgba(255, 255, 255, .06);
  border: 1px solid rgba(143, 168, 200, .18);
  color: #c7d4e8;
}

.start-hero {
  display: grid;
  gap: 8px;
  justify-items: center;
  padding: 4px 0 2px;
}

.start-hero .eyebrow {
  color: #ffe1a0;
  letter-spacing: .14em;
}

.start-hero h1 {
  color: #f8fbff;
  font-size: 58px;
  font-weight: 1000;
  letter-spacing: 0;
  line-height: .92;
  text-shadow: 0 4px 0 rgba(0, 0, 0, .3), 0 0 24px rgba(94, 154, 255, .22);
  text-transform: uppercase;
}

.start-hero p,
.team-auto {
  color: #d7e0ef;
  font-size: 15px;
  font-weight: 800;
  line-height: 1.35;
}

.team-banners {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.team-banner {
  background: linear-gradient(180deg, rgba(255, 255, 255, .06), rgba(255, 255, 255, .025));
  border: 1px solid rgba(143, 168, 200, .2);
  border-radius: 8px;
  color: inherit;
  cursor: pointer;
  display: grid;
  gap: 3px;
  min-height: 64px;
  padding: 12px;
  text-align: left;
  transition: border-color .18s ease, box-shadow .18s ease, filter .18s ease, transform .18s ease;
  width: 100%;
}

.team-banner:hover:not(:disabled),
.team-banner:focus-visible {
  filter: brightness(1.08);
  transform: translateY(-1px);
}

.team-banner:focus-visible {
  outline: 2px solid rgba(255, 225, 160, .85);
  outline-offset: 2px;
}

.team-banner span {
  color: #f8fbff;
  font-size: 18px;
  font-weight: 1000;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.team-banner strong {
  color: #aebdd1;
  font-size: 12px;
  font-weight: 850;
}

.team-banner small {
  color: #dfe9fb;
  font-size: 11px;
  font-weight: 850;
  margin-top: 4px;
}

.team-banner-north {
  border-color: rgba(75, 139, 255, .42);
  box-shadow: inset 4px 0 0 rgba(47, 109, 246, .95);
}

.team-banner-north:hover:not(:disabled),
.team-banner-north:focus-visible {
  border-color: rgba(117, 169, 255, .82);
  box-shadow:
    inset 4px 0 0 rgba(47, 109, 246, .98),
    0 0 22px rgba(67, 130, 255, .26);
}

.team-banner-south {
  border-color: rgba(255, 111, 133, .38);
  box-shadow: inset 4px 0 0 rgba(224, 82, 100, .95);
}

.team-banner-south:hover:not(:disabled),
.team-banner-south:focus-visible {
  border-color: rgba(255, 139, 156, .82);
  box-shadow:
    inset 4px 0 0 rgba(224, 82, 100, .98),
    0 0 22px rgba(255, 86, 113, .24);
}

.team-banner:disabled {
  cursor: not-allowed;
  filter: grayscale(.7) brightness(.58);
  opacity: .72;
}

.team-banner.is-joining {
  filter: brightness(1.12);
  transform: translateY(-1px);
}

.team-auto {
  color: #aebdd1;
  font-size: 12px;
  margin-top: -6px;
}

.team-select-overlay {
  background:
    linear-gradient(90deg, rgba(16, 52, 112, .3), transparent 38% 62%, rgba(112, 24, 24, .32)),
    linear-gradient(180deg, rgba(3, 6, 12, .64), rgba(3, 6, 12, .9));
  backdrop-filter: blur(4px) saturate(.82);
}

.team-select-dialog {
  align-content: start;
  background:
    linear-gradient(180deg, rgba(26, 36, 54, .98), rgba(8, 12, 20, .99)),
    linear-gradient(90deg, rgba(67, 130, 255, .14), transparent 44% 56%, rgba(255, 86, 113, .14));
  border-color: rgba(255, 214, 106, .36);
  box-shadow:
    0 26px 86px rgba(0, 0, 0, .68),
    inset 0 1px 0 rgba(255, 255, 255, .08);
  color: #edf5ff;
  gap: 16px;
  max-height: calc(100dvh - 28px);
  max-width: 980px;
  overflow: hidden;
  padding: 22px;
  position: relative;
  text-align: center;
  width: min(980px, calc(100vw - 36px));
}

.team-select-header {
  display: grid;
  gap: 7px;
  justify-items: center;
  padding: 0 42px;
}

.team-select-dialog h2 {
  color: #fff7d6;
  font-size: clamp(34px, 5.4vw, 58px);
  line-height: .88;
  margin: 0;
  text-shadow:
    0 3px 0 rgba(0, 0, 0, .38),
    0 0 24px rgba(255, 214, 106, .18);
  text-transform: uppercase;
}

.team-select-dialog .team-auto {
  color: #c7d5e9;
  font-size: 13px;
  font-weight: 850;
  margin: 0;
}

.team-banners {
  align-items: stretch;
  display: grid;
  gap: 14px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.join-loading-panel {
  background:
    linear-gradient(180deg, rgba(17, 27, 43, .96), rgba(8, 13, 22, .98));
  border: 1px solid rgba(118, 190, 255, .32);
  border-radius: 10px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .06),
    0 16px 34px rgba(0, 0, 0, .28);
  display: grid;
  gap: 9px;
  margin: 0 auto;
  max-width: 620px;
  padding: 15px 17px;
  text-align: left;
  width: min(100%, 620px);
}

.join-loading-panel[hidden] {
  display: none;
}

.join-loading-copy {
  align-items: baseline;
  display: flex;
  gap: 12px;
  justify-content: space-between;
}

.join-loading-copy strong {
  color: #f5f9ff;
  font-size: 14px;
  letter-spacing: .02em;
}

.join-loading-copy span {
  color: #9ddcff;
  font-size: 13px;
  font-weight: 900;
}

.join-loading-track {
  background: rgba(0, 0, 0, .38);
  border: 1px solid rgba(134, 183, 224, .18);
  border-radius: 999px;
  height: 9px;
  overflow: hidden;
}

.join-loading-track span {
  background: linear-gradient(90deg, #3e92ff, #63dbff 58%, #a5f3d1);
  border-radius: inherit;
  box-shadow: 0 0 14px rgba(82, 196, 255, .5);
  display: block;
  height: 100%;
  transition: width 160ms ease;
  width: 0;
}

.join-loading-panel p {
  color: #b9c8da;
  font-size: 12px;
  font-weight: 700;
  margin: 0;
}

.team-banner {
  align-items: center;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .075), rgba(255, 255, 255, .026)),
    rgba(7, 12, 22, .92);
  border: 1px solid rgba(143, 168, 200, .2);
  border-radius: 8px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .08),
    0 18px 42px rgba(0, 0, 0, .28);
  color: inherit;
  cursor: pointer;
  display: grid;
  gap: 9px 18px;
  grid-template-areas:
    "art top"
    "art title"
    "art status"
    "art bar"
    "art action";
  grid-template-columns: minmax(132px, .42fr) minmax(0, 1fr);
  grid-template-rows: auto auto auto auto auto;
  min-height: 236px;
  overflow: hidden;
  padding: 18px;
  position: relative;
  text-align: left;
  transition: border-color .18s ease, box-shadow .18s ease, filter .18s ease, transform .18s ease;
  width: 100%;
}

.team-banner::before {
  background:
    linear-gradient(118deg, transparent 0 24%, rgba(255, 255, 255, .08) 24% 25%, transparent 25% 100%),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, .028) 0 1px, transparent 1px 22px);
  content: "";
  inset: 0;
  opacity: .7;
  pointer-events: none;
  position: absolute;
}

.team-banner-glow {
  inset: 0;
  opacity: .84;
  pointer-events: none;
  position: absolute;
}

.team-banner > *:not(.team-banner-glow) {
  position: relative;
  z-index: 1;
}

.team-banner-top {
  align-items: center;
  display: flex;
  gap: 10px;
  grid-area: top;
  justify-content: space-between;
  min-width: 0;
}

.team-banner-name {
  color: #f8fbff;
  font-size: clamp(18px, 2.4vw, 26px);
  font-weight: 1000;
  line-height: 1;
  min-width: 0;
  text-transform: uppercase;
}

.team-slot-badge {
  background: rgba(5, 10, 18, .6);
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 999px;
  color: #f4f8ff;
  flex: 0 0 auto;
  font-size: 12px;
  font-weight: 1000;
  line-height: 1;
  padding: 7px 10px;
}

.team-banner-art {
  align-self: center;
  display: grid;
  grid-area: art;
  justify-items: center;
  min-height: 170px;
  place-items: center;
  position: relative;
}

.team-emblem {
  aspect-ratio: 1;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  display: block;
  filter: drop-shadow(0 18px 24px rgba(0, 0, 0, .42));
  max-width: 190px;
  width: min(100%, 190px);
}

.team-emblem-blue {
  background-image: url("./assets/teams/team-blue-emblem.webp?v=f1491887af66e5185141");
}

.team-emblem-red {
  background-image: url("./assets/teams/team-red-emblem.webp?v=e20b4604d4bda2608c5a");
}

.team-banner strong {
  color: #fff3bd;
  display: block;
  font-size: clamp(17px, 1.7vw, 21px);
  font-weight: 1000;
  grid-area: title;
  line-height: 1.05;
  text-transform: uppercase;
}

.team-banner small {
  color: #dce8fa;
  display: block;
  font-size: 13px;
  font-weight: 850;
  grid-area: status;
  line-height: 1.25;
  min-height: 15px;
}

.team-capacity-bar {
  background: rgba(4, 8, 15, .62);
  border: 1px solid rgba(143, 168, 200, .14);
  border-radius: 999px;
  grid-area: bar;
  height: 8px;
  overflow: hidden;
}

.team-capacity-bar span {
  display: block;
  height: 100%;
  width: 0;
}

.team-join-label {
  align-items: center;
  color: #fff0b2;
  display: inline-flex;
  font-size: 13px;
  font-weight: 1000;
  gap: 8px;
  grid-area: action;
  justify-self: start;
  line-height: 1;
  min-height: 20px;
  text-transform: uppercase;
}

.team-join-label::after {
  content: ">";
  font-size: 16px;
  line-height: 1;
  transform: translateY(-1px);
}

.team-banner:hover:not(:disabled),
.team-banner:focus-visible {
  filter: brightness(1.08);
  transform: translateY(-2px);
}

.team-banner:focus-visible {
  outline: 2px solid rgba(255, 225, 160, .85);
  outline-offset: 2px;
}

.team-banner:disabled {
  cursor: not-allowed;
  filter: grayscale(.62) brightness(.62);
  opacity: .78;
}

.team-banner.is-selected {
  box-shadow:
    inset 0 0 0 1px rgba(255, 214, 106, .28),
    0 0 26px rgba(255, 214, 106, .14),
    0 18px 42px rgba(0, 0, 0, .3);
}

.team-banner.is-joining {
  filter: brightness(1.13);
  transform: translateY(-2px);
}

.team-banner.is-joining .team-join-label {
  animation: teamJoinPulse 1s ease-in-out infinite;
}

.team-banner-north {
  border-color: rgba(92, 170, 255, .46);
}

.team-banner-north .team-banner-glow {
  background:
    radial-gradient(ellipse at 36% 46%, rgba(79, 162, 255, .34), transparent 45%),
    linear-gradient(180deg, rgba(35, 82, 168, .36), rgba(8, 16, 30, .24));
}

.team-banner-north .team-capacity-bar span {
  background: linear-gradient(90deg, #4ac3ff, #3373ff);
}

.team-banner-north:hover:not(:disabled),
.team-banner-north:focus-visible {
  border-color: rgba(117, 190, 255, .86);
  box-shadow:
    0 0 30px rgba(67, 147, 255, .28),
    inset 0 0 0 1px rgba(117, 190, 255, .18);
}

.team-banner-south {
  border-color: rgba(255, 111, 133, .46);
}

.team-banner-south .team-banner-glow {
  background:
    radial-gradient(ellipse at 62% 46%, rgba(255, 88, 70, .34), transparent 45%),
    linear-gradient(180deg, rgba(158, 40, 52, .36), rgba(25, 8, 12, .22));
}

.team-banner-south .team-capacity-bar span {
  background: linear-gradient(90deg, #ff6254, #c8213e);
}

.team-banner-south:hover:not(:disabled),
.team-banner-south:focus-visible {
  border-color: rgba(255, 142, 142, .86);
  box-shadow:
    0 0 30px rgba(255, 86, 113, .26),
    inset 0 0 0 1px rgba(255, 142, 142, .18);
}

.team-banner.is-full .team-join-label {
  color: #c3ccda;
}

.team-banner.is-full .team-join-label::after {
  content: "";
}

@keyframes teamJoinPulse {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(255, 214, 106, .38);
  }
  50% {
    box-shadow: 0 0 0 6px rgba(255, 214, 106, .08);
  }
}

.daily-missions {
  background: linear-gradient(180deg, rgba(5, 10, 18, .58), rgba(12, 19, 31, .76));
  border: 1px solid rgba(143, 168, 200, .2);
  border-radius: 9px;
  display: grid;
  gap: 8px;
  padding: 10px;
  text-align: left;
}

.daily-missions-head {
  align-items: center;
  display: flex;
  gap: 10px;
  justify-content: space-between;
}

.daily-missions-head strong {
  color: #fff7d6;
  font-size: 12px;
  font-weight: 1000;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.daily-missions-head span {
  color: #90f0bd;
  font-size: 11px;
  font-weight: 950;
}

.daily-mission-list {
  display: grid;
  gap: 6px;
  grid-auto-rows: max-content;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: auto;
}

.daily-mission-card {
  align-items: center;
  background: rgba(255, 255, 255, .045);
  border: 1px solid rgba(143, 168, 200, .14);
  border-radius: 8px;
  display: grid;
  gap: 8px;
  grid-template-columns: minmax(0, 1fr) 54px;
  min-height: 70px;
  padding: 8px;
}

.daily-mission-card.is-complete {
  border-color: rgba(255, 214, 106, .64);
  box-shadow:
    0 0 22px rgba(255, 214, 106, .1),
    inset 3px 0 0 rgba(255, 214, 106, .72);
}

.daily-mission-card.is-claimed {
  opacity: .64;
}

.daily-mission-copy {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.daily-mission-title {
  color: #f6fbff;
  font-size: 12px;
  font-weight: 950;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.daily-mission-progress {
  align-items: center;
  display: grid;
  column-gap: 6px;
  row-gap: 3px;
  grid-template-columns: minmax(0, 1fr) auto;
}

.daily-mission-bar {
  background: rgba(5, 10, 18, .62);
  border: 1px solid rgba(143, 168, 200, .14);
  border-radius: 999px;
  height: 7px;
  overflow: hidden;
}

.daily-mission-bar span {
  background: linear-gradient(90deg, #3ca7ff, #62f1b5);
  display: block;
  height: 100%;
  width: 0;
}

.daily-mission-progress small {
  color: #c7d4e8;
  font-size: 10px;
  font-weight: 900;
  min-width: 56px;
  text-align: right;
}

.daily-mission-tiers {
  display: flex;
  gap: 4px;
  grid-column: 1 / -1;
  min-width: 0;
}

.daily-mission-tier {
  align-items: center;
  background: transparent;
  border: 0;
  border-radius: 4px;
  color: transparent;
  display: inline-flex;
  height: 16px;
  justify-content: center;
  line-height: 1;
  min-width: 22px;
  overflow: visible;
  padding: 0;
  position: relative;
  width: 22px;
}

.daily-mission-tier-chest {
  background-image: url("./assets/gate-war-reward-chests.svg?v=68fa2ea73ffb291f13cd");
  background-position: 0 0;
  background-repeat: no-repeat;
  background-size: 300% 100%;
  display: block;
  filter:
    grayscale(.08)
    drop-shadow(0 2px 3px rgba(0, 0, 0, .3));
  height: 18px;
  opacity: .82;
  transform: translateY(-1px);
  width: 18px;
}

.daily-mission-tier.is-next {
  filter: drop-shadow(0 0 5px rgba(143, 168, 200, .16));
}

.daily-mission-tier.is-ready {
  animation: none;
}

.daily-mission-tier.is-ready .daily-mission-tier-chest {
  opacity: .9;
}

.daily-mission-tier.is-claimed .daily-mission-tier-chest {
  background-position: 50% 0;
  filter:
    drop-shadow(0 0 5px rgba(255, 212, 82, .34))
    drop-shadow(0 2px 3px rgba(0, 0, 0, .28));
  opacity: 1;
}

.daily-mission-claim {
  align-self: center;
  background: linear-gradient(180deg, #ffe18a, #d99a30);
  border: 1px solid rgba(255, 245, 189, .86);
  border-radius: 15px;
  box-shadow: 0 0 16px rgba(255, 214, 106, .22);
  box-sizing: border-box;
  color: #2a1904;
  cursor: pointer;
  display: grid;
  font-size: 11px;
  font-weight: 1000;
  height: 50px;
  justify-items: center;
  justify-self: end;
  min-width: 50px;
  padding: 0;
  position: relative;
  transform-origin: center;
  width: 50px;
  will-change: transform, box-shadow;
}

.daily-mission-claim:disabled {
  background: rgba(143, 168, 200, .16);
  border-color: rgba(143, 168, 200, .18);
  box-shadow: none;
  color: #91a0b5;
  cursor: default;
}

.daily-mission-card.is-pending-ready {
  background:
    radial-gradient(circle at 88% 50%, rgba(255, 214, 106, .18), transparent 38%),
    linear-gradient(180deg, rgba(255, 255, 255, .07), rgba(255, 214, 106, .035));
  border-color: rgba(255, 214, 106, .64);
  box-shadow:
    0 0 22px rgba(255, 214, 106, .1),
    inset 0 0 0 1px rgba(255, 214, 106, .18);
}

.daily-mission-card.is-pending-ready .daily-mission-claim.is-pending-ready,
.daily-mission-card.is-pending-ready .daily-mission-claim.is-pending-ready:disabled,
.daily-mission-claim.is-pending-ready:disabled {
  background:
    radial-gradient(circle at 50% 27%, #fff2aa, #f5c553 45%, #dc7d14 100%);
  border-color: rgba(255, 247, 196, .82);
  box-shadow:
    0 10px 24px rgba(245, 159, 36, .2),
    inset 0 2px 0 rgba(255, 255, 255, .5),
    inset 0 -4px 0 rgba(96, 45, 7, .26);
  color: #2a1904;
  cursor: progress;
  opacity: 1;
}

.daily-mission-empty {
  color: #aebdd1;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.3;
  text-align: center;
}

/* The lobby is a compact mission summary. Full threshold descriptions belong
   to the technical mission board, which clones the same cards. */
.daily-missions > .daily-mission-list .daily-mission-description {
  display: none;
}

.daily-missions > .daily-mission-list .daily-mission-card {
  grid-template-columns: minmax(0, 1fr) 48px;
}

.daily-missions > .daily-mission-list .daily-mission-claim {
  border-radius: 13px;
  height: 46px;
  min-width: 46px;
  width: 46px;
}

.daily-missions > .daily-mission-list .daily-mission-claim-icon {
  height: 40px;
  width: 40px;
}

.daily-missions > .daily-mission-list .daily-mission-claim.is-ready::before,
.daily-missions > .daily-mission-list .daily-mission-claim.is-ready::after {
  border-radius: 16px;
  inset: -4px;
}

.daily-missions > .daily-mission-list .daily-mission-claim.is-ready::after {
  inset: -2px;
}

.start-action-hidden {
  display: none;
}

.start-action {
  background:
    linear-gradient(180deg, rgba(88, 148, 255, .96), rgba(33, 76, 159, .96)),
    #2f6df6;
  border: 1px solid rgba(255, 224, 153, .48);
  border-radius: 9px;
  box-shadow:
    0 14px 34px rgba(47, 109, 246, .24),
    inset 0 1px 0 rgba(255, 255, 255, .32),
    inset 0 -2px 0 rgba(0, 0, 0, .22);
  color: #fff;
  font-size: 18px;
  letter-spacing: .02em;
  min-height: 58px;
  text-transform: uppercase;
}

.start-action:hover {
  box-shadow:
    0 0 0 1px rgba(255, 224, 153, .32),
    0 0 34px rgba(76, 137, 255, .34),
    inset 0 1px 0 rgba(255, 255, 255, .36),
    inset 0 -2px 0 rgba(0, 0, 0, .22);
  filter: brightness(1.06);
}

.start-action:active {
  transform: translateY(1px);
}

.start-action:disabled {
  cursor: wait;
  filter: grayscale(.25) brightness(.88);
  opacity: .82;
}

.start-feedback {
  color: #ffb1bf;
  font-size: 13px;
  font-weight: 850;
  min-height: 18px;
}

.start-feedback:empty {
  display: none;
}

.start-rules {
  display: grid;
  gap: 8px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.start-rules span {
  background: rgba(5, 10, 18, .42);
  border: 1px solid rgba(143, 168, 200, .17);
  border-radius: 7px;
  color: #c7d4e8;
  display: grid;
  font-size: 11px;
  font-weight: 800;
  gap: 2px;
  min-height: 52px;
  padding: 8px;
}

.start-rules strong {
  color: #ffe1a0;
  font-size: 13px;
  font-weight: 1000;
}

.start-controls {
  border-top: 1px solid rgba(143, 168, 200, .16);
  color: #93a5be;
  display: grid;
  font-size: 11px;
  font-weight: 800;
  gap: 4px;
  line-height: 1.35;
  padding-top: 12px;
}

.round-dialog h2 {
  font-size: 30px;
  line-height: 1.05;
}

.round-dialog p {
  color: var(--muted);
  font-size: 15px;
  font-weight: 750;
  line-height: 1.45;
}

.start-dialog .start-hero p,
.start-dialog .team-auto {
  color: #d7e0ef;
  font-weight: 850;
}

.match-result-overlay {
  background:
    radial-gradient(circle at 50% 10%, rgba(255, 214, 106, .13), transparent 34%),
    rgba(6, 9, 15, .78);
  overflow: auto;
}

.death-overlay {
  background:
    radial-gradient(circle at 50% 32%, rgba(206, 38, 52, .18), transparent 34%),
    linear-gradient(180deg, rgba(8, 6, 8, .42), rgba(8, 3, 4, .64));
  backdrop-filter: none;
}

.death-dialog {
  background:
    linear-gradient(180deg, rgba(32, 15, 18, .96), rgba(10, 8, 12, .96)),
    var(--panel);
  border-color: rgba(255, 76, 91, .48);
  box-shadow: 0 24px 80px rgba(0, 0, 0, .58), 0 0 42px rgba(255, 54, 72, .14);
  max-width: 560px;
  padding: 24px;
}

.death-dialog h2 {
  color: #ff4054;
  font-size: clamp(42px, 7vw, 76px);
  letter-spacing: 0;
  line-height: .92;
  text-shadow: 0 4px 0 rgba(0, 0, 0, .34), 0 0 28px rgba(255, 48, 70, .28);
  text-transform: uppercase;
}

.death-dialog p {
  color: #ffd2d8;
  font-size: 16px;
}

#deathKillerText {
  align-items: center;
  background:
    linear-gradient(180deg, rgba(78, 16, 28, .9), rgba(18, 8, 14, .9)),
    radial-gradient(circle at 18% 0, rgba(255, 116, 132, .18), transparent 54%);
  border: 1px solid rgba(255, 99, 119, .58);
  border-radius: 14px;
  box-shadow:
    0 14px 34px rgba(0, 0, 0, .34),
    0 0 26px rgba(255, 59, 86, .18),
    inset 0 1px 0 rgba(255, 255, 255, .09);
  color: #ffe3e7;
  display: inline-flex;
  font-size: 16px;
  font-weight: 950;
  gap: 10px;
  justify-self: center;
  max-width: min(100%, 420px);
  padding: 9px 16px 9px 11px;
}

#deathKillerText::before {
  background:
    radial-gradient(circle at 38% 40%, #ffe2e6 0 8%, transparent 9%),
    radial-gradient(circle at 62% 40%, #ffe2e6 0 8%, transparent 9%),
    linear-gradient(180deg, #8c2030, #3a0c16);
  border: 1px solid rgba(255, 155, 166, .52);
  border-radius: 50%;
  box-shadow: inset 0 -3px 0 rgba(0, 0, 0, .2);
  content: "";
  flex: 0 0 auto;
  height: 24px;
  width: 24px;
}

.death-stats,
.summary-stat-grid {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.death-stat,
.summary-stat-card {
  align-items: center;
  background: rgba(4, 8, 14, .58);
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 8px;
  display: grid;
  gap: 10px;
  grid-template-columns: 42px 1fr;
  min-height: 66px;
  padding: 10px;
}

.death-stat-icon,
.summary-stat-icon {
  align-items: center;
  background: linear-gradient(180deg, rgba(255, 255, 255, .11), rgba(255, 255, 255, .03));
  border: 1px solid rgba(255, 214, 106, .26);
  border-radius: 7px;
  color: #ffe7a3;
  display: flex;
  font-size: 11px;
  font-weight: 1000;
  height: 42px;
  justify-content: center;
  line-height: 1;
  text-transform: uppercase;
  width: 42px;
}

.death-stat-body,
.summary-stat-body {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.death-stat-body small,
.summary-stat-body small {
  color: #91a1b8;
  font-size: 10px;
  font-weight: 950;
  text-transform: uppercase;
}

.death-stat-body strong,
.summary-stat-body strong {
  color: #f9fbff;
  font-size: 20px;
  font-weight: 1000;
}

.death-action {
  background: linear-gradient(180deg, #ff4b5d, #a71927);
  border: 1px solid rgba(255, 222, 164, .42);
  box-shadow: 0 0 24px rgba(255, 44, 64, .18);
}

.match-result-dialog {
  background:
    linear-gradient(180deg, rgba(21, 30, 45, .98), rgba(8, 13, 22, .98)),
    var(--panel);
  border-color: rgba(255, 214, 106, .28);
  box-shadow: 0 24px 80px rgba(0, 0, 0, .48), inset 0 1px 0 rgba(255, 255, 255, .08);
  gap: 12px;
  max-height: calc(100vh - 36px);
  max-width: 1080px;
  overflow: auto;
  padding: 22px;
  width: min(100%, 1080px);
}

.match-result-title {
  font-size: clamp(46px, 7vw, 84px);
  letter-spacing: 0;
  line-height: .92;
  text-transform: uppercase;
}

.match-win {
  color: #55a7ff;
  text-shadow: 0 4px 0 rgba(0, 0, 0, .35), 0 0 34px rgba(68, 154, 255, .3);
}

.match-loss {
  color: #ff4054;
  text-shadow: 0 4px 0 rgba(0, 0, 0, .35), 0 0 34px rgba(255, 48, 70, .26);
}

.match-summary {
  display: grid;
  gap: 12px;
  text-align: left;
}

.summary-hero {
  background:
    radial-gradient(circle at 12% 0%, rgba(255, 214, 106, .12), transparent 34%),
    linear-gradient(180deg, rgba(20, 30, 45, .92), rgba(8, 13, 23, .96));
  border: 1px solid rgba(143, 168, 200, .24);
  border-radius: 9px;
  display: grid;
  gap: 12px;
  padding: 14px;
}

.summary-hero-win {
  border-color: rgba(85, 167, 255, .54);
  box-shadow: 0 0 0 1px rgba(85, 167, 255, .12), 0 0 30px rgba(85, 167, 255, .12);
}

.summary-hero-loss {
  border-color: rgba(255, 64, 84, .48);
  box-shadow: 0 0 0 1px rgba(255, 64, 84, .1), 0 0 30px rgba(255, 64, 84, .1);
}

.summary-hero-header {
  align-items: baseline;
  display: flex;
  gap: 10px;
  justify-content: space-between;
}

.summary-hero-header strong {
  color: #f8fbff;
  font-size: 18px;
  font-weight: 1000;
}

.summary-hero-header span {
  color: #aebdd1;
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.summary-details-toggle {
  justify-self: center;
  min-height: 42px;
  width: min(100%, 340px);
}

.summary-details {
  display: grid;
  gap: 12px;
}

.summary-teams {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.summary-team {
  background: linear-gradient(180deg, rgba(20, 30, 45, .92), rgba(8, 13, 23, .96));
  border: 1px solid rgba(143, 168, 200, .22);
  border-radius: 8px;
  display: grid;
  gap: 10px;
  padding: 12px;
}

.summary-team-winner {
  border-color: rgba(255, 214, 106, .58);
  box-shadow: 0 0 0 1px rgba(255, 214, 106, .16), 0 0 28px rgba(255, 214, 106, .12);
}

.summary-team-header {
  align-items: center;
  display: flex;
  gap: 10px;
  justify-content: space-between;
}

.summary-team-name {
  color: #edf5ff;
  font-size: 16px;
  font-weight: 950;
}

.summary-team-result {
  border: 1px solid rgba(255, 214, 106, .42);
  border-radius: 999px;
  color: #ffe7a3;
  font-size: 11px;
  padding: 4px 8px;
  text-transform: uppercase;
}

.summary-team-north .summary-team-name {
  color: var(--north);
}

.summary-team-south .summary-team-name {
  color: var(--south);
}

.summary-awards {
  display: grid;
  gap: 8px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.summary-award {
  align-items: center;
  background: rgba(6, 11, 19, .62);
  border: 1px solid rgba(143, 168, 200, .18);
  border-radius: 7px;
  display: grid;
  gap: 8px;
  grid-template-columns: 34px 1fr;
  min-height: 54px;
  padding: 8px;
}

.summary-award-mvp {
  background:
    radial-gradient(circle at 16px 18px, rgba(255, 214, 106, .24), transparent 34px),
    rgba(30, 22, 9, .68);
  border-color: rgba(255, 214, 106, .42);
}

.summary-award-icon {
  align-items: center;
  background: rgba(10, 16, 26, .9);
  border: 1px solid rgba(255, 255, 255, .13);
  border-radius: 6px;
  color: #ffe7a3;
  display: flex;
  font-size: 10px;
  font-weight: 950;
  height: 34px;
  justify-content: center;
  line-height: 1;
  width: 34px;
}

.summary-crown {
  background: linear-gradient(180deg, #fff1aa, #d79c2e);
  clip-path: polygon(5% 38%, 24% 38%, 30% 10%, 50% 34%, 70% 10%, 76% 38%, 95% 38%, 86% 88%, 14% 88%);
  display: block;
  height: 22px;
  width: 24px;
}

.summary-award-body {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.summary-award-body small {
  color: #8fa0b8;
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
}

.summary-award-body strong {
  color: #f8fbff;
  font-size: 13px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.summary-award-body em {
  color: #ffe7a3;
  font-size: 11px;
  font-style: normal;
  font-weight: 900;
}

.summary-player-list {
  display: grid;
  gap: 6px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.summary-player {
  align-items: center;
  background: rgba(255, 255, 255, .035);
  border: 1px solid rgba(255, 255, 255, .06);
  border-radius: 6px;
  display: grid;
  gap: 8px;
  grid-template-columns: minmax(90px, 1fr) minmax(0, 1.8fr);
  padding: 7px 8px;
}

.summary-player strong {
  color: #edf5ff;
  font-size: 12px;
}

.summary-player-stats {
  color: #aebdd1;
  font-size: 11px;
  font-weight: 800;
  overflow: hidden;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.summary-player-empty,
.summary-empty {
  color: #aebdd1;
  font-size: 13px;
  font-weight: 800;
  justify-content: center;
  text-align: center;
}

.match-actions {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.primary-action {
  background: var(--north);
  border: 0;
  border-radius: 8px;
  color: #fff;
  cursor: pointer;
  font-weight: 900;
  min-height: 48px;
  padding: 12px 18px;
}

.primary-action:hover {
  filter: brightness(1.05);
}

.primary-action.lobby-play-button {
  background:
    linear-gradient(180deg, #ffd66b, #f59f24 54%, #c97115),
    #f59f24;
  border: 1px solid rgba(255, 247, 196, .82);
  border-radius: 14px;
  box-shadow:
    0 18px 44px rgba(245, 159, 36, .24),
    0 0 0 2px rgba(93, 49, 8, .3),
    inset 0 2px 0 rgba(255, 255, 255, .55),
    inset 0 -4px 0 rgba(92, 44, 5, .32);
  color: #301700;
  font-size: clamp(28px, 4vw, 44px);
  letter-spacing: .02em;
  min-height: 82px;
  text-shadow: 0 1px 0 rgba(255, 244, 189, .58);
  text-transform: uppercase;
}

.primary-action.lobby-play-button:hover {
  box-shadow:
    0 0 0 1px rgba(255, 247, 196, .42),
    0 0 38px rgba(255, 196, 73, .34),
    inset 0 2px 0 rgba(255, 255, 255, .58),
    inset 0 -4px 0 rgba(92, 44, 5, .32);
  filter: brightness(1.05);
}

.secondary-action {
  background: rgba(255, 255, 255, .06);
  border: 1px solid rgba(143, 168, 200, .28);
  border-radius: 8px;
  color: #edf5ff;
  cursor: pointer;
  font-weight: 900;
  min-height: 48px;
  padding: 12px 18px;
}

.secondary-action:hover {
  border-color: rgba(255, 214, 106, .46);
}

.primary-action:disabled,
.secondary-action:disabled {
  cursor: not-allowed;
  filter: grayscale(.3) brightness(.78);
  opacity: .58;
}

.secondary-action.is-locked {
  border-color: rgba(255, 92, 111, .28);
  color: #b8c2d2;
}

@media (max-width: 900px) {
  .start-dialog {
    max-height: calc(100vh - 28px);
    overflow: auto;
    padding: 18px;
  }

  .start-hero h1 {
    font-size: 42px;
  }

  .team-banners,
  .start-rules,
  .summary-teams,
  .summary-awards,
  .match-actions {
    grid-template-columns: 1fr;
  }

  .summary-player {
    grid-template-columns: 1fr;
  }

  .summary-player-stats {
    text-align: left;
    white-space: normal;
  }
}

.arena-panel,
.side-panel,
.score-panel,
.kill-panel,
.objective-panel,
.level-panel,
.inventory {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: var(--shadow);
}

.arena-panel {
  align-items: center;
  background:
    linear-gradient(180deg, rgba(31, 45, 61, .98), rgba(9, 14, 23, .98)),
    radial-gradient(circle at 50% 10%, rgba(85, 167, 255, .12), transparent 42%);
  border-color: #2c3a50;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08), 0 22px 46px rgba(8, 13, 22, .26);
  display: flex;
  height: 100%;
  justify-content: center;
  min-height: 0;
  min-width: 0;
  overflow: hidden;
  padding: clamp(6px, .65vw, 10px);
  position: relative;
}

.boss-encounter-panel {
  align-items: center;
  background: rgba(8, 12, 18, .9);
  border: 1px solid rgba(237, 186, 78, .58);
  border-radius: 10px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, .34);
  color: #f8f1dd;
  display: grid;
  gap: 8px;
  grid-template-columns: minmax(0, 1fr) auto auto;
  left: 50%;
  max-width: calc(100% - 24px);
  padding: 9px 10px;
  position: absolute;
  top: 16px;
  transform: translateX(-50%);
  width: min(520px, calc(100% - 24px));
  z-index: 8;
}

.boss-encounter-panel[hidden] {
  display: none;
}

.game-chat {
  background: rgba(3, 8, 15, .42);
  border: 0;
  border-radius: 4px;
  bottom: 14px;
  color: #f7fbff;
  display: grid;
  gap: 4px;
  left: 14px;
  max-width: calc(100% - 28px);
  padding: 6px 7px;
  position: absolute;
  width: min(520px, calc(100% - 28px));
  z-index: 42;
}

.game-chat:not(.is-open) {
  background: rgba(3, 8, 15, .28);
  pointer-events: none;
}

.game-chat[hidden],
body.mobile-landscape .game-chat,
body.mobile-portrait .game-chat {
  display: none;
}

.game-chat-history {
  display: grid;
  gap: 2px;
  max-height: 156px;
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
}

.game-chat:not(.is-open) .game-chat-history {
  max-height: 94px;
  overflow: hidden;
}

.game-chat-history:empty {
  display: none;
}

.game-chat-entry {
  color: #f5f8fc;
  display: flex;
  font-size: 14px;
  font-weight: 650;
  gap: 5px;
  line-height: 1.32;
  min-width: 0;
  overflow-wrap: anywhere;
  padding: 1px 2px;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .92);
}

.game-chat-entry.is-message .game-chat-nickname {
  flex: 0 0 auto;
  font-weight: 900;
}

.game-chat-entry.team-north .game-chat-nickname {
  color: #7fa5ff;
}

.game-chat-entry.team-south .game-chat-nickname {
  color: #ff8090;
}

.game-chat-entry.is-system {
  color: #b9c7d8;
  font-size: 13px;
}

.game-chat-entry.is-success {
  color: #73e7ad;
}

.game-chat-entry.is-error {
  color: #ff8795;
}

.admin-command-suggestions {
  background: rgba(3, 8, 15, .9);
  border: 0;
  border-radius: 4px;
  bottom: calc(100% + 4px);
  display: grid;
  gap: 2px;
  left: 0;
  max-height: 180px;
  overflow: auto;
  padding: 4px;
  position: absolute;
  right: 0;
}

.admin-command-suggestions[hidden] {
  display: none;
}

.admin-command-suggestion {
  align-items: center;
  background: transparent;
  border: 0;
  border-radius: 3px;
  color: #eaf4ff;
  cursor: pointer;
  display: grid;
  gap: 3px 10px;
  grid-template-columns: minmax(118px, .45fr) minmax(0, 1fr);
  padding: 6px 8px;
  text-align: left;
}

.admin-command-suggestion.is-active,
.admin-command-suggestion:hover {
  background: rgba(64, 157, 255, .18);
}

.admin-command-suggestion strong {
  color: #8fceff;
  font-size: 13px;
}

.admin-command-suggestion span {
  color: #aebfd3;
  font-size: 11px;
}

.game-chat-input-row {
  background: rgba(1, 5, 11, .55);
  border: 0;
  border-radius: 2px;
  display: none;
  min-height: 34px;
  padding: 2px 7px;
}

.game-chat.is-open .game-chat-input-row {
  display: block;
}

.game-chat-input-row input {
  background: transparent;
  border: 0;
  color: #f7fbff;
  font: 650 14px/1.25 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  min-width: 0;
  outline: 0;
  padding: 7px 0;
  width: 100%;
}

.game-chat-input-row input::placeholder {
  color: #9ba9b8;
}

.boss-encounter-copy {
  display: grid;
  min-width: 0;
}

.boss-encounter-copy span {
  color: #e6b953;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.boss-encounter-copy strong,
.boss-encounter-copy small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.boss-encounter-copy small {
  color: #b8c6d9;
  font-weight: 750;
}

.boss-encounter-panel button {
  background: linear-gradient(180deg, #e6b953, #b97720);
  border: 1px solid #f6d47d;
  border-radius: 7px;
  color: #17100a;
  cursor: pointer;
  font-weight: 900;
  min-height: 38px;
  padding: 7px 11px;
}

.boss-encounter-panel button:disabled {
  cursor: default;
  opacity: .46;
}

.boss-encounter-panel .boss-encounter-leave {
  background: rgba(255, 255, 255, .08);
  border-color: rgba(255, 255, 255, .2);
  color: #d7e0ed;
}

@media (max-width: 720px) {
  .boss-encounter-panel {
    bottom: 12px;
    grid-template-columns: minmax(0, 1fr) auto;
    top: auto;
  }

  .boss-encounter-panel .boss-encounter-leave {
    display: none;
  }
}

#gameCanvas {
  aspect-ratio: 23 / 17;
  background: #1d3f31;
  border-radius: 6px;
  display: block;
  height: auto;
  max-height: 100%;
  max-width: 100%;
  min-height: 0;
  object-fit: contain;
  width: 100%;
}

.halo-shop-overlay[hidden] {
  display: none !important;
}

.halo-shop-overlay {
  align-items: center;
  background:
    radial-gradient(circle at 12% 0, rgba(255, 246, 189, .14), transparent 46%),
    linear-gradient(180deg, rgba(30, 35, 48, .62), rgba(8, 11, 17, .72));
  border: 1px solid rgba(255, 214, 106, .34);
  border-radius: 999px;
  box-shadow:
    0 8px 18px rgba(0, 0, 0, .2),
    0 0 14px rgba(255, 214, 106, .1),
    inset 0 1px 0 rgba(255, 255, 255, .12);
  color: #fff4c7;
  cursor: pointer;
  display: grid;
  gap: 7px;
  grid-template-columns: 30px minmax(72px, 1fr);
  min-height: 42px;
  min-width: 142px;
  max-width: 174px;
  overflow: visible;
  padding: 5px 11px 5px 7px;
  pointer-events: auto;
  position: absolute;
  right: var(--halo-shop-right, 146px);
  text-align: left;
  top: var(--halo-shop-top, 14px);
  touch-action: manipulation;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease, background .16s ease;
  z-index: 8;
}

.halo-shop-overlay::before {
  content: "";
  inset: -12px;
  position: absolute;
}

.halo-shop-overlay > * {
  pointer-events: none;
  position: relative;
  z-index: 1;
}

.halo-shop-overlay.can-buy {
  animation: runeBuyPulse 1.25s ease-in-out infinite;
  border-color: rgba(255, 239, 174, .78);
  box-shadow:
    0 10px 20px rgba(0, 0, 0, .24),
    0 0 20px rgba(255, 214, 106, .28),
    inset 0 1px 0 rgba(255, 255, 255, .18);
}

.halo-shop-overlay:hover,
.halo-shop-overlay:focus-visible {
  border-color: rgba(255, 239, 174, .88);
  box-shadow:
    0 11px 22px rgba(0, 0, 0, .28),
    0 0 22px rgba(255, 214, 106, .3),
    inset 0 1px 0 rgba(255, 255, 255, .2);
  outline: 0;
  transform: translateY(-1px);
}

.halo-shop-overlay.is-pending {
  cursor: progress;
  opacity: .9;
}

.halo-shop-overlay-icon {
  align-items: center;
  display: inline-flex;
  height: 30px;
  justify-content: center;
  position: relative;
  width: 30px;
}

.halo-shop-overlay-icon .halo-icon,
.halo-shop-overlay-icon .ankh-icon {
  height: 26px;
  width: 26px;
}

.halo-shop-overlay .halo-plus {
  align-items: center;
  background: radial-gradient(circle, #fff4bf 0 24%, #f1bd3b 25% 68%, #8a5616 69% 100%);
  border: 1px solid rgba(255, 247, 207, .9);
  border-radius: 50%;
  color: #251708;
  display: none;
  font-size: 12px;
  font-weight: 1000;
  height: 17px;
  justify-content: center;
  line-height: 1;
  position: absolute;
  right: -2px;
  top: -2px;
  width: 17px;
}

.halo-shop-overlay.can-buy .halo-plus:not([hidden]) {
  display: flex;
}

.halo-shop-overlay-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.halo-shop-overlay-copy strong {
  color: #fff8dc;
  font-size: 12px;
  font-weight: 950;
  line-height: 1.08;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.halo-shop-overlay-copy small {
  color: #ffe08a;
  font-size: 10px;
  font-weight: 850;
  line-height: 1.1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.halo-shop-overlay-count {
  display: none !important;
}

html.mobile-capable,
body.mobile-capable {
  overscroll-behavior: none;
  touch-action: none;
  user-select: none;
  -webkit-text-size-adjust: 100%;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
}

html.mobile-capable *,
body.mobile-capable * {
  -webkit-tap-highlight-color: transparent;
}

body.mobile-capable .start-overlay {
  overflow: hidden;
}

body.mobile-capable.is-lobby .start-overlay {
  overflow: auto;
  touch-action: pan-y;
}

body.mobile-capable.is-lobby .start-overlay * {
  touch-action: pan-y;
}

body.mobile-capable.is-lobby .start-overlay button {
  touch-action: manipulation;
}

body.mobile-portrait .mobile-orientation {
  align-items: center;
  background:
    radial-gradient(circle at 50% 32%, rgba(85, 167, 255, .18), transparent 35%),
    linear-gradient(180deg, rgba(6, 10, 18, .96), rgba(4, 7, 12, .98));
  color: #edf5ff;
  display: grid;
  inset: 0;
  justify-items: center;
  padding: 24px;
  position: fixed;
  z-index: 30;
}

body.mobile-portrait.is-lobby .mobile-orientation {
  display: none;
}

.mobile-orientation-card {
  background:
    linear-gradient(180deg, rgba(31, 44, 64, .96), rgba(10, 15, 24, .98)),
    radial-gradient(circle at 50% 0, rgba(255, 214, 106, .14), transparent 60%);
  border: 1px solid rgba(255, 214, 106, .34);
  border-radius: 18px;
  box-shadow:
    0 26px 80px rgba(0, 0, 0, .48),
    inset 0 1px 0 rgba(255, 255, 255, .1);
  display: grid;
  gap: 10px;
  max-width: 360px;
  padding: 24px;
  text-align: center;
}

.mobile-orientation-card::before {
  align-self: center;
  border: 3px solid rgba(255, 214, 106, .72);
  border-radius: 13px;
  box-shadow: 0 0 22px rgba(255, 214, 106, .18);
  content: "";
  height: 50px;
  justify-self: center;
  transform: rotate(90deg);
  width: 82px;
}

.mobile-orientation-card strong {
  color: #fff7d6;
  font-size: 24px;
  font-weight: 1000;
  line-height: 1.1;
  text-transform: uppercase;
}

.mobile-orientation-card span {
  color: #b9c7da;
  font-size: 14px;
  font-weight: 850;
  line-height: 1.35;
}

body.mobile-portrait .game-layout {
  filter: blur(2px) brightness(.58);
  pointer-events: none;
}

body.mobile-portrait.is-lobby .game-layout {
  filter: none;
}

body.mobile-portrait .start-dialog {
  overflow: hidden;
}

body.mobile-portrait.is-lobby .start-dialog {
  max-height: none;
  min-height: calc(100dvh - 24px);
  overflow: visible;
  padding: 16px;
  width: min(100%, calc(100vw - 24px));
}

body.mobile-portrait.is-lobby .lobby-dialog {
  gap: 12px;
}

body.mobile-portrait.is-lobby .lobby-main,
body.mobile-portrait.is-lobby .lobby-grid {
  grid-template-columns: 1fr;
}

body.mobile-portrait.is-lobby .lobby-main {
  gap: 14px;
}

body.mobile-portrait.is-lobby .lobby-hero {
  justify-items: center;
  text-align: center;
}

body.mobile-portrait.is-lobby .lobby-hero h1 {
  font-size: clamp(42px, 13vw, 58px);
}

body.mobile-portrait.is-lobby .lobby-play-button {
  min-height: 72px;
}

body.mobile-portrait.is-lobby .lobby-feature-grid {
  grid-template-columns: 1fr;
}

body.mobile-portrait.is-lobby .lobby-controls {
  display: none;
}

body.mobile-landscape {
  background: #07101c;
}

body.mobile-landscape .gate-shell {
  padding: 0;
}

body.mobile-landscape .game-layout {
  display: block;
  height: 100%;
  max-height: 100%;
  position: relative;
  touch-action: none;
  width: 100%;
}

body.mobile-landscape .arena-panel {
  border: 0;
  border-radius: 0;
  inset: 0;
  padding: 0;
  position: absolute;
}

body.mobile-landscape #gameCanvas {
  border-radius: 0;
  height: 100%;
  max-height: none;
  max-width: none;
  touch-action: none;
  width: 100%;
}

body.mobile-landscape .side-panel {
  display: none;
}

body.mobile-landscape .mobile-status-readout {
  align-items: center;
  color: #eff6ff;
  display: flex;
  flex-direction: row;
  font-size: 10.5px;
  font-weight: 950;
  gap: 6px;
  left: calc(max(8px, env(safe-area-inset-left)) + 42px);
  letter-spacing: 0;
  line-height: 1;
  pointer-events: none;
  position: absolute;
  text-shadow:
    0 1px 0 rgba(0, 0, 0, .9),
    0 0 4px rgba(0, 0, 0, .78),
    0 0 9px rgba(0, 0, 0, .5);
  top: max(11px, calc(env(safe-area-inset-top) + 10px));
  z-index: 9;
}

body.mobile-landscape .mobile-menu-button {
  align-items: center;
  background:
    linear-gradient(180deg, rgba(31, 44, 65, .92), rgba(7, 11, 18, .92)),
    radial-gradient(circle at 50% 0, rgba(255, 214, 106, .2), transparent 62%);
  border: 1px solid rgba(255, 214, 106, .38);
  border-radius: 11px;
  box-shadow:
    0 10px 24px rgba(0, 0, 0, .34),
    inset 0 1px 0 rgba(255, 255, 255, .14);
  display: flex;
  height: 36px;
  justify-content: center;
  left: max(8px, env(safe-area-inset-left));
  padding: 0;
  position: absolute;
  top: max(8px, env(safe-area-inset-top));
  touch-action: manipulation;
  width: 36px;
  z-index: 9;
}

body.mobile-landscape .mobile-menu-button:active {
  transform: translateY(1px) scale(.98);
}

.mobile-menu-gear {
  border: 3px solid #f7d77a;
  border-radius: 50%;
  box-shadow:
    0 -10px 0 -6px #f7d77a,
    0 10px 0 -6px #f7d77a,
    10px 0 0 -6px #f7d77a,
    -10px 0 0 -6px #f7d77a,
    7px 7px 0 -6px #f7d77a,
    -7px -7px 0 -6px #f7d77a,
    7px -7px 0 -6px #f7d77a,
    -7px 7px 0 -6px #f7d77a,
    0 0 10px rgba(255, 214, 106, .34);
  display: block;
  height: 14px;
  position: relative;
  width: 14px;
}

.mobile-menu-gear::after {
  background: #f7d77a;
  border-radius: 50%;
  content: "";
  height: 4px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 4px;
}

body.mobile-landscape .mobile-status-readout span,
body.mobile-landscape .mobile-status-readout .latency-meter,
body.mobile-landscape .mobile-status-readout .fps-meter {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  display: inline-flex;
  padding: 0;
  white-space: nowrap;
}

body.mobile-landscape .mobile-status-readout .latency-good,
body.mobile-landscape .mobile-status-readout .fps-good {
  color: #76ff9b;
}

body.mobile-landscape .mobile-status-readout .latency-warn,
body.mobile-landscape .mobile-status-readout .fps-warn {
  color: #ffd76d;
}

body.mobile-landscape .mobile-status-readout .latency-bad,
body.mobile-landscape .mobile-status-readout .fps-bad {
  color: #ff7388;
}

body.mobile-landscape .mobile-status-readout .latency-unknown,
body.mobile-landscape .mobile-status-readout .fps-unknown {
  color: rgba(237, 245, 255, .78);
}

body.mobile-landscape .mobile-game-hud {
  --mobile-hud-left: env(safe-area-inset-left);
  --mobile-hud-top: calc(max(8px, env(safe-area-inset-top)) + 34px);
  --mobile-hud-width: min(142px, calc(100vw - 16px));
  background: transparent;
  border: 0;
  border-radius: 0;
  box-sizing: border-box;
  box-shadow: none;
  color: #edf5ff;
  display: grid;
  gap: 3px;
  left: var(--mobile-hud-left);
  max-width: 142px;
  padding: 0;
  pointer-events: none;
  position: absolute;
  right: auto;
  top: var(--mobile-hud-top);
  transform: none;
  width: var(--mobile-hud-width);
  z-index: 7;
}

body.mobile-landscape .mobile-game-hud.mobile-game-hud-side {
  gap: 4px;
  padding: 0;
}

.mobile-hud-row,
.mobile-base-row,
.mobile-level-row {
  align-items: center;
  display: flex;
  gap: 6px;
  justify-content: center;
  min-width: 0;
}

body.mobile-landscape .mobile-game-hud-side .mobile-hud-row,
body.mobile-landscape .mobile-game-hud-side .mobile-base-row,
body.mobile-landscape .mobile-game-hud-side .mobile-level-row {
  align-items: stretch;
  flex-direction: column;
  gap: 4px;
}

.mobile-hud-row span,
.mobile-base-row span,
.mobile-level-row > span {
  background: rgba(5, 10, 18, .32);
  border: 1px solid rgba(124, 151, 186, .14);
  border-radius: 999px;
  color: #dce8f7;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  padding: 4px 6px;
  white-space: nowrap;
}

body.mobile-landscape .mobile-game-hud-side .mobile-hud-row span,
body.mobile-landscape .mobile-game-hud-side .mobile-base-row span,
body.mobile-landscape .mobile-game-hud-side .mobile-level-row > span {
  display: flex;
  font-size: 9px;
  justify-content: center;
  padding: 4px 5px;
  white-space: normal;
}

body.mobile-landscape .mobile-game-hud-side .mobile-base-row span {
  flex-direction: column;
  gap: 2px;
  line-height: 1.12;
}

.mobile-hud-row .mobile-gold {
  color: #ffd66a;
}

.mobile-hud-row .mobile-gold::before {
  background:
    radial-gradient(circle at 35% 28%, rgba(255, 250, 196, .95) 0 16%, transparent 17%),
    radial-gradient(circle at 50% 50%, #f6d36a 0 54%, #b97819 55% 100%);
  border: 1px solid rgba(255, 236, 164, .76);
  border-radius: 50%;
  content: "";
  display: inline-block;
  height: 10px;
  margin-right: 3px;
  vertical-align: -1px;
  width: 10px;
}

.mobile-vital-bars {
  box-sizing: border-box;
  display: grid;
  gap: 3px;
  min-width: 0;
  width: 100%;
}

.mobile-vital-bar {
  background: rgba(3, 8, 15, .38);
  border: 1px solid rgba(214, 229, 255, .12);
  border-radius: 999px;
  box-sizing: border-box;
  box-shadow:
    inset 0 1px 2px rgba(0, 0, 0, .38),
    0 0 0 1px rgba(255, 255, 255, .03);
  height: 14px;
  overflow: hidden;
  position: relative;
}

.mobile-vital-bar > span {
  border-radius: inherit;
  display: block;
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  transition: width .16s ease;
  width: 100%;
}

.mobile-vital-bar > strong {
  align-items: center;
  color: #fff;
  display: flex;
  font-size: 9px;
  font-weight: 800;
  height: 100%;
  justify-content: center;
  letter-spacing: 0;
  line-height: 1;
  position: relative;
  text-shadow:
    0 1px 0 rgba(0, 0, 0, .78),
    0 0 4px rgba(0, 0, 0, .66);
  white-space: nowrap;
  z-index: 1;
}

.mobile-hp-bar > span {
  background: linear-gradient(90deg, #1fb763, #66ee8d);
  box-shadow: 0 0 10px rgba(67, 231, 122, .34);
}

.mobile-mana-bar > span {
  background: linear-gradient(90deg, #227eff, #7fd7ff);
  box-shadow: 0 0 10px rgba(64, 161, 255, .34);
}

.mobile-mana-bar.mana-low-warning > span,
.mana-resource.mana-low-warning > span {
  animation: mana-low-fill-flash .58s ease-out;
}

.mobile-mana-bar.mana-low-warning > strong,
.mana-resource.mana-low-warning > strong {
  animation: mana-low-text-flash .58s ease-out;
}

.mobile-base-row strong {
  color: #8df0a8;
}

.mobile-level-row {
  align-items: stretch;
  box-sizing: border-box;
  display: grid;
  gap: 0;
  grid-template-columns: minmax(0, 1fr);
  justify-content: stretch;
  justify-items: stretch;
  justify-self: stretch;
  min-width: 0;
  width: 100%;
}

body.mobile-landscape .mobile-game-hud .mobile-level-row > span,
body.mobile-landscape .mobile-game-hud-side .mobile-level-row > span {
  display: none;
}

.mobile-level-bar {
  align-items: center;
  background: rgba(3, 8, 15, .38);
  border: 1px solid rgba(255, 220, 114, .18);
  border-radius: 999px;
  box-sizing: border-box;
  display: flex;
  height: 14px;
  justify-content: center;
  min-width: 0;
  overflow: hidden;
  position: relative;
  width: 100%;
}

.mobile-level-bar > span {
  background: linear-gradient(90deg, #c78622, #f2c94c 58%, #fff0a8);
  box-shadow: 0 0 10px rgba(242, 201, 76, .28);
  inset: 0 auto 0 0;
  position: absolute;
  transition: width .18s ease;
  width: 0%;
}

.mobile-level-bar > strong {
  color: #fff8d8;
  font-size: 9px;
  font-weight: 850;
  line-height: 1;
  position: relative;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .68);
  z-index: 1;
}

.mobile-frag-bar {
  background: rgba(4, 13, 22, .42);
  border-color: rgba(118, 231, 255, .3);
}

.mobile-frag-bar > span {
  background: linear-gradient(90deg, #36d8ff, #f4fdff 58%, #a883ff);
  box-shadow: 0 0 9px rgba(78, 216, 255, .28);
}

.mobile-frag-bar.is-base-target > span {
  background: linear-gradient(90deg, #43d7ff, #c9f8ff 62%, #efffff);
}

.mobile-frag-bar.is-strong-target > span {
  background: linear-gradient(90deg, #36d8ff, #f4fdff 52%, #a883ff);
}

.mobile-frag-bar.is-maxed {
  border-color: rgba(186, 155, 255, .38);
}

.mobile-frag-bar.is-maxed > span {
  background: linear-gradient(90deg, #75e8ff, #ffffff 44%, #9b74ff);
  box-shadow: 0 0 11px rgba(158, 119, 255, .32);
}

body.mobile-landscape .mobile-mission-focus:not([hidden]) {
  align-items: stretch;
  --mobile-hud-left: env(safe-area-inset-left);
  --mobile-hud-width: min(142px, calc(100vw - 16px));
  background: transparent;
  border: 0;
  border-radius: 0;
  box-sizing: border-box;
  box-shadow: none;
  color: #fff8dc;
  display: grid;
  gap: 3px;
  grid-template-columns: minmax(0, 1fr);
  min-height: 0;
  overflow: visible;
  padding: 0;
  left: var(--mobile-hud-left);
  pointer-events: none;
  position: absolute;
  right: auto;
  top: max(104px, calc(env(safe-area-inset-top) + 104px));
  width: var(--mobile-hud-width);
  z-index: 7;
}

body.mobile-landscape .mobile-mission-focus[hidden] {
  display: none !important;
}

.mobile-mission-track {
  align-items: center;
  background: rgba(3, 8, 15, .42);
  border: 1px solid rgba(255, 236, 164, .18);
  border-radius: 999px;
  box-sizing: border-box;
  display: flex;
  height: 15px;
  justify-content: center;
  min-width: 0;
  overflow: hidden;
  position: relative;
  width: 100%;
}

.mobile-mission-track > span:first-child {
  background: linear-gradient(90deg, #c78622, #f2c94c 62%, #fff0a8);
  box-shadow: 0 0 10px rgba(242, 201, 76, .3);
  inset: 0 auto 0 0;
  position: absolute;
  transition: width .22s ease;
  width: 0%;
}

.mobile-mission-focus.is-ready .mobile-mission-track > span:first-child {
  background: linear-gradient(90deg, #1fa968, #6df0a0 62%, #d7ffdf);
  box-shadow: 0 0 12px rgba(72, 236, 136, .34);
}

.mobile-mission-focus > strong {
  color: #fff9df;
  display: block;
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: 0;
  line-height: 1;
  min-width: 0;
  overflow: hidden;
  padding: 0 2px;
  position: relative;
  text-overflow: ellipsis;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .75);
  white-space: nowrap;
  z-index: 1;
}

.mobile-mission-track > span:last-child {
  align-items: center;
  color: #ffe58a;
  display: inline-flex;
  font-size: 9px;
  font-weight: 950;
  inset: 0;
  justify-content: center;
  line-height: 1;
  padding: 0 5px;
  position: absolute;
  text-align: center;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .72);
  white-space: nowrap;
  z-index: 1;
}

.desktop-shop-button[hidden] {
  display: none !important;
}

.desktop-shop-button {
  align-items: center;
  background:
    linear-gradient(135deg, rgba(255, 241, 177, .16) 0 18%, transparent 19% 100%),
    linear-gradient(315deg, rgba(255, 214, 106, .14) 0 20%, transparent 21% 100%),
    linear-gradient(180deg, rgba(37, 49, 68, .88), rgba(9, 14, 22, .94));
  border: 1px solid rgba(255, 218, 117, .58);
  border-radius: 8px;
  box-shadow:
    0 10px 22px rgba(0, 0, 0, .28),
    inset 0 1px 0 rgba(255, 255, 255, .16),
    inset 0 -2px 0 rgba(0, 0, 0, .24);
  box-sizing: border-box;
  color: #fff3c2;
  cursor: pointer;
  display: grid;
  font-size: 13px;
  font-weight: 950;
  gap: 8px;
  grid-template-columns: 30px minmax(58px, 1fr);
  height: 50px;
  justify-items: start;
  letter-spacing: 0;
  line-height: 1;
  overflow: hidden;
  padding: 8px 14px 8px 10px;
  pointer-events: auto;
  position: absolute;
  right: var(--desktop-shop-right, 14px);
  text-transform: none;
  top: var(--desktop-shop-top, 14px);
  touch-action: manipulation;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease, background .16s ease, color .16s ease;
  width: 122px;
  z-index: 9;
}

.desktop-shop-button::before,
.desktop-shop-button::after {
  border-radius: 5px;
  content: "";
  inset: 4px;
  pointer-events: none;
  position: absolute;
  transition: opacity .16s ease, transform .16s ease;
}

.desktop-shop-button::before {
  background:
    linear-gradient(90deg, rgba(255, 230, 143, .92) 0 13px, transparent 13px calc(100% - 13px), rgba(255, 230, 143, .92) calc(100% - 13px)) top / 100% 2px no-repeat,
    linear-gradient(90deg, rgba(255, 230, 143, .74) 0 13px, transparent 13px calc(100% - 13px), rgba(255, 230, 143, .74) calc(100% - 13px)) bottom / 100% 2px no-repeat,
    linear-gradient(180deg, rgba(255, 230, 143, .82) 0 13px, transparent 13px calc(100% - 13px), rgba(255, 230, 143, .82) calc(100% - 13px)) left / 2px 100% no-repeat,
    linear-gradient(180deg, rgba(255, 230, 143, .68) 0 13px, transparent 13px calc(100% - 13px), rgba(255, 230, 143, .68) calc(100% - 13px)) right / 2px 100% no-repeat;
  opacity: .78;
}

.desktop-shop-button::after {
  background:
    linear-gradient(135deg, transparent 0 42%, rgba(255, 236, 164, .18) 43% 49%, transparent 50% 100%),
    radial-gradient(circle at 80% 24%, rgba(255, 246, 190, .42), transparent 18%);
  mix-blend-mode: screen;
  opacity: .72;
}

.desktop-shop-button > span {
  position: relative;
  z-index: 1;
}

.desktop-shop-button:hover,
.desktop-shop-button:focus-visible {
  background:
    linear-gradient(135deg, rgba(255, 246, 190, .22) 0 20%, transparent 21% 100%),
    linear-gradient(315deg, rgba(255, 222, 128, .18) 0 22%, transparent 23% 100%),
    linear-gradient(180deg, rgba(48, 62, 83, .92), rgba(11, 17, 27, .96));
  border-color: rgba(255, 232, 158, .9);
  box-shadow:
    0 13px 26px rgba(0, 0, 0, .34),
    0 0 22px rgba(255, 214, 106, .26),
    inset 0 1px 0 rgba(255, 255, 255, .2),
    inset 0 -2px 0 rgba(0, 0, 0, .2);
  color: #fff8dc;
  outline: 0;
  transform: translateY(-1px);
}

.desktop-shop-button:hover::before,
.desktop-shop-button:focus-visible::before {
  opacity: .98;
}

.desktop-shop-button:hover::after,
.desktop-shop-button:focus-visible::after {
  opacity: .95;
  transform: translateX(2px);
}

.desktop-shop-button.can-buy {
  border-color: rgba(255, 231, 153, .78);
}

.desktop-shop-button:active {
  transform: translateY(1px) scale(.985);
}

.desktop-shop-coin {
  background:
    radial-gradient(circle at 35% 28%, rgba(255, 250, 196, .95) 0 16%, transparent 17%),
    radial-gradient(circle at 50% 50%, #f6d36a 0 54%, #b97819 55% 100%);
  border: 1px solid rgba(255, 236, 164, .82);
  border-radius: 50%;
  box-shadow:
    inset 0 -3px 0 rgba(107, 67, 12, .34),
    0 2px 0 rgba(0, 0, 0, .34),
    0 0 12px rgba(255, 214, 106, .24);
  display: inline-block;
  flex: 0 0 auto;
  height: 25px;
  justify-self: center;
  transition: transform .16s ease, box-shadow .16s ease;
  width: 25px;
}

.desktop-shop-button:hover .desktop-shop-coin,
.desktop-shop-button:focus-visible .desktop-shop-coin {
  box-shadow:
    inset 0 -3px 0 rgba(107, 67, 12, .3),
    0 3px 0 rgba(0, 0, 0, .28),
    0 0 16px rgba(255, 224, 128, .4);
  transform: translateY(-1px) scale(1.07);
}

.mobile-shop-modal:not([hidden]) {
  align-items: center;
  background: rgba(3, 7, 12, .54);
  display: grid;
  inset: 0;
  justify-items: center;
  padding: 18px;
  pointer-events: auto;
  position: absolute;
  z-index: 24;
}

body.mobile-landscape .halo-shop-overlay,
body.mobile-landscape .desktop-shop-button {
  display: none !important;
}

body.mobile-landscape .mobile-shop-button {
  align-items: center;
  background:
    linear-gradient(180deg, rgba(31, 44, 65, .92), rgba(7, 11, 18, .96)),
    radial-gradient(circle at 50% 0, rgba(255, 214, 106, .2), transparent 62%);
  border: 1px solid rgba(255, 214, 106, .48);
  border-radius: 10px;
  box-shadow:
    0 10px 24px rgba(0, 0, 0, .32),
    inset 0 1px 0 rgba(255, 255, 255, .14);
  box-sizing: border-box;
  color: #f8edd0;
  display: grid;
  gap: 6px;
  grid-template-areas: "label gold";
  grid-template-columns: minmax(0, 1fr) auto;
  justify-items: center;
  min-height: 42px;
  min-width: 94px;
  padding: 6px 8px;
  pointer-events: auto;
  overflow: visible;
  position: absolute;
  right: max(6px, env(safe-area-inset-right));
  top: max(8px, env(safe-area-inset-top));
  touch-action: manipulation;
  width: min(112px, calc(100vw - 230px));
  z-index: 9;
}

body.mobile-landscape .mobile-shop-button:active {
  transform: translateY(1px) scale(.98);
}

body.mobile-landscape .mobile-shop-button.can-buy {
  animation: mobileShopRecommendPulse 1.25s ease-in-out infinite;
  border-color: rgba(255, 239, 174, .88);
  box-shadow:
    0 10px 24px rgba(0, 0, 0, .34),
    0 0 24px rgba(255, 214, 106, .32),
    inset 0 1px 0 rgba(255, 255, 255, .2);
}

body.mobile-landscape .mobile-shop-button.can-buy::after {
  align-items: center;
  background: radial-gradient(circle, #fff4bf 0 24%, #f1bd3b 25% 68%, #8a5616 69% 100%);
  border: 1px solid rgba(255, 247, 207, .9);
  border-radius: 999px;
  box-shadow: 0 0 10px rgba(255, 214, 106, .42), 0 4px 8px rgba(0, 0, 0, .28);
  color: #251708;
  content: "+";
  display: inline-flex;
  font-size: 12px;
  font-weight: 1000;
  height: 18px;
  justify-content: center;
  line-height: 1;
  pointer-events: none;
  position: absolute;
  right: -5px;
  top: -6px;
  width: 18px;
}

.mobile-shop-recommendation[hidden] {
  display: none !important;
}

body.mobile-landscape .mobile-shop-recommendation {
  align-items: center;
  appearance: none;
  animation: mobileShopSuggestionPulse 1.05s ease-in-out infinite;
  background:
    radial-gradient(circle at 24% 0, rgba(255, 246, 189, .2), transparent 48%),
    linear-gradient(180deg, rgba(34, 41, 54, .88), rgba(8, 11, 17, .94));
  border: 1px solid rgba(255, 230, 146, .76);
  border-radius: 12px;
  box-shadow:
    0 8px 16px rgba(0, 0, 0, .26),
    0 0 16px rgba(255, 214, 106, .22),
    inset 0 1px 0 rgba(255, 255, 255, .16);
  box-sizing: border-box;
  color: #fff4c7;
  cursor: pointer;
  display: inline-flex;
  font-size: 9px;
  font-weight: 950;
  justify-content: center;
  line-height: 1;
  max-width: 86px;
  min-height: 30px;
  min-width: 64px;
  overflow: hidden;
  padding: 7px 10px;
  pointer-events: auto;
  position: absolute;
  right: calc(max(6px, env(safe-area-inset-right)) + min(112px, calc(100vw - 230px)) + 7px);
  text-overflow: ellipsis;
  top: max(14px, calc(env(safe-area-inset-top) + 14px));
  touch-action: manipulation;
  white-space: nowrap;
  z-index: 10;
}

body.mobile-landscape .mobile-shop-recommendation:active {
  transform: translateY(1px) scale(.97);
}

body.mobile-landscape .mobile-shop-recommendation.suggestion-ankh {
  border-color: rgba(223, 241, 255, .76);
  color: #eef9ff;
}

@keyframes mobileShopSuggestionPulse {
  0%, 100% {
    box-shadow:
      0 8px 16px rgba(0, 0, 0, .26),
      0 0 14px rgba(255, 214, 106, .2),
      inset 0 1px 0 rgba(255, 255, 255, .16);
  }
  50% {
    box-shadow:
      0 8px 16px rgba(0, 0, 0, .26),
      0 0 26px rgba(255, 214, 106, .5),
      inset 0 1px 0 rgba(255, 255, 255, .22);
  }
}

@keyframes mobileShopRecommendPulse {
  0%, 100% {
    box-shadow:
      0 10px 24px rgba(0, 0, 0, .34),
      0 0 18px rgba(255, 214, 106, .2),
      inset 0 1px 0 rgba(255, 255, 255, .18);
  }
  50% {
    box-shadow:
      0 10px 24px rgba(0, 0, 0, .34),
      0 0 30px rgba(255, 214, 106, .46),
      inset 0 1px 0 rgba(255, 255, 255, .22);
  }
}

.mobile-shop-gold {
  align-items: center;
  color: #ffe58a;
  display: inline-flex;
  font-size: 11px;
  font-weight: 950;
  gap: 4px;
  grid-area: gold;
  line-height: 1;
  min-width: 0;
}

.mobile-shop-gold::before {
  background:
    radial-gradient(circle at 35% 28%, rgba(255, 250, 196, .95) 0 16%, transparent 17%),
    radial-gradient(circle at 50% 50%, #f6d36a 0 54%, #b97819 55% 100%);
  border: 1px solid rgba(255, 236, 164, .76);
  border-radius: 50%;
  content: "";
  display: inline-block;
  height: 11px;
  width: 11px;
}

.mobile-shop-label {
  color: #fff9df;
  font-size: 10px;
  font-weight: 950;
  grid-area: label;
  line-height: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%;
}

body.mobile-landscape .mobile-artifact-status {
  align-items: stretch;
  background:
    linear-gradient(180deg, rgba(18, 28, 43, .88), rgba(5, 9, 16, .92)),
    radial-gradient(circle at 50% 0, rgba(126, 214, 255, .12), transparent 62%);
  border: 1px solid rgba(143, 214, 255, .28);
  border-radius: 10px;
  box-shadow:
    0 8px 20px rgba(0, 0, 0, .26),
    inset 0 1px 0 rgba(255, 255, 255, .1);
  box-sizing: border-box;
  color: #d9f3ff;
  display: grid;
  gap: 4px;
  justify-items: center;
  min-height: 66px;
  min-width: 102px;
  padding: 5px 7px 6px;
  pointer-events: none;
  position: absolute;
  right: max(6px, env(safe-area-inset-right));
  top: max(56px, calc(env(safe-area-inset-top) + 56px));
  width: min(122px, calc(100vw - 230px));
  z-index: 8;
}

.mobile-artifact-label {
  color: rgba(223, 241, 255, .82);
  font-size: 8px;
  font-weight: 950;
  line-height: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
  width: 100%;
}

.mobile-artifact-pill {
  align-items: center;
  background: rgba(5, 10, 18, .42);
  border: 1px solid rgba(255, 236, 164, .18);
  border-radius: 999px;
  color: #d9f3ff;
  display: inline-flex;
  font-size: 9px;
  font-weight: 950;
  gap: 4px;
  justify-content: center;
  line-height: 1;
  min-width: 0;
  padding: 3px 6px;
  width: 100%;
}

.mobile-artifact-ankh {
  border-color: rgba(231, 244, 255, .24);
  color: #f5fbff;
}

.mobile-artifact-pill strong {
  color: inherit;
  font: inherit;
  line-height: 1;
  min-width: 0;
}

.mobile-artifact-pill .mobile-artifact-halo-icon {
  flex: 0 0 14px;
  height: 14px;
  width: 14px;
}

.mobile-artifact-pill .mobile-artifact-halo-icon::before {
  background:
    radial-gradient(ellipse at 50% 42%, transparent 34%, #fff7b6 35% 46%, #f2bc38 47% 60%, transparent 61%),
    radial-gradient(circle at 50% 50%, rgba(255, 226, 92, .22), transparent 65%);
}

.mobile-artifact-pill .mobile-artifact-halo-icon::after {
  box-shadow:
    -4px -1px 0 -1.5px #fff2a2,
    4px -1px 0 -1.5px #fff2a2,
    0 0 6px rgba(255, 214, 106, .48);
  height: 4px;
  left: 5px;
  top: 5px;
  width: 4px;
}

.mobile-artifact-pill .mobile-artifact-ankh-icon {
  flex: 0 0 14px;
  height: 14px;
  width: 14px;
}

body.mobile-landscape .mobile-shop-modal:not([hidden]) {
  padding:
    max(10px, env(safe-area-inset-top))
    max(12px, env(safe-area-inset-right))
    max(10px, env(safe-area-inset-bottom))
    max(12px, env(safe-area-inset-left));
  touch-action: none;
}

.mobile-shop-panel {
  background:
    radial-gradient(circle at 22% 0, rgba(255, 214, 106, .18), transparent 50%),
    linear-gradient(180deg, rgba(24, 34, 51, .97), rgba(7, 11, 18, .98));
  border: 1px solid rgba(255, 214, 106, .34);
  border-radius: 12px;
  box-shadow:
    0 18px 44px rgba(0, 0, 0, .48),
    inset 0 1px 0 rgba(255, 255, 255, .12);
  box-sizing: border-box;
  color: #edf5ff;
  display: grid;
  gap: 9px;
  max-height: calc(100vh - 24px);
  padding: 12px;
  width: min(300px, calc(100vw - 28px));
}

.mobile-shop-head,
.mobile-shop-wallet {
  align-items: center;
  display: flex;
  justify-content: space-between;
  min-width: 0;
}

.mobile-shop-head strong {
  color: #fff9df;
  font-size: 16px;
  font-weight: 950;
  line-height: 1;
}

.mobile-shop-close {
  align-items: center;
  background: rgba(6, 11, 18, .56);
  border: 1px solid rgba(220, 233, 255, .18);
  border-radius: 9px;
  color: #edf5ff;
  display: inline-flex;
  font-size: 12px;
  font-weight: 950;
  height: 34px;
  justify-content: center;
  padding: 0;
  touch-action: manipulation;
  width: 34px;
}

.mobile-shop-wallet {
  background: rgba(5, 10, 18, .46);
  border: 1px solid rgba(255, 236, 164, .15);
  border-radius: 9px;
  color: #dce8f7;
  font-size: 11px;
  font-weight: 850;
  padding: 8px 10px;
}

.mobile-shop-wallet strong {
  color: #ffe58a;
  font-size: 14px;
  font-weight: 950;
}

.mobile-shop-item {
  align-items: center;
  background: linear-gradient(180deg, rgba(29, 43, 63, .9), rgba(10, 17, 27, .96));
  border: 1px solid rgba(136, 217, 255, .24);
  border-radius: 10px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .09);
  box-sizing: border-box;
  color: #edf5ff;
  display: grid;
  gap: 8px;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  min-height: 62px;
  padding: 8px;
  text-align: left;
  touch-action: manipulation;
  width: 100%;
}

.mobile-shop-item.can-buy {
  border-color: rgba(255, 214, 106, .6);
  box-shadow:
    0 0 18px rgba(255, 214, 106, .12),
    inset 0 1px 0 rgba(255, 255, 255, .12);
}

.mobile-shop-item:disabled {
  cursor: default;
  opacity: .72;
}

.mobile-shop-item .halo-icon,
.mobile-shop-item .ankh-icon {
  height: 38px;
  width: 38px;
}

.mobile-shop-ankh-item.is-active .mobile-shop-item-count {
  border-color: rgba(231, 244, 255, .32);
  color: #f5fbff;
}

.mobile-shop-item-copy {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.mobile-shop-item-copy strong {
  color: #fff9df;
  font-size: 13px;
  font-weight: 950;
  line-height: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mobile-shop-item-copy small {
  color: #bdd3ed;
  font-size: 10px;
  font-weight: 850;
  line-height: 1.1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mobile-shop-item-count {
  align-items: center;
  background: rgba(3, 8, 15, .42);
  border: 1px solid rgba(255, 236, 164, .18);
  border-radius: 999px;
  color: #d9f3ff;
  display: inline-flex;
  font-size: 10px;
  font-weight: 950;
  justify-content: center;
  min-width: 42px;
  padding: 4px 6px;
  white-space: nowrap;
}

.mission-toast[hidden] {
  display: none !important;
}

.mission-toast {
  align-items: center;
  background:
    radial-gradient(circle at 20% 0, rgba(255, 242, 168, .22), transparent 52%),
    linear-gradient(180deg, rgba(37, 35, 20, .94), rgba(10, 17, 18, .9));
  border: 1px solid rgba(255, 214, 106, .78);
  border-radius: 12px;
  box-shadow:
    0 14px 28px rgba(0, 0, 0, .28),
    0 0 18px rgba(242, 201, 76, .18),
    inset 0 1px 0 rgba(255, 255, 255, .12);
  color: #fff6c7;
  display: grid;
  gap: 2px;
  justify-items: center;
  left: 50%;
  max-width: min(360px, calc(100vw - 32px));
  min-width: 220px;
  padding: 9px 14px 10px;
  pointer-events: none;
  position: fixed;
  text-align: center;
  top: max(18px, calc(env(safe-area-inset-top) + 12px));
  transform: translateX(-50%);
  z-index: 18;
}

.mission-toast span {
  color: #8df0a8;
  font-size: 10px;
  font-weight: 950;
  letter-spacing: .06em;
  line-height: 1;
  text-transform: uppercase;
}

.mission-toast strong {
  color: #fffbe2;
  font-size: 15px;
  font-weight: 950;
  line-height: 1.12;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .68);
  white-space: nowrap;
}

.mission-toast small {
  color: #ffe58a;
  font-size: 11px;
  font-weight: 900;
  line-height: 1;
}

body.mobile-landscape .mission-toast {
  border-radius: 10px;
  gap: 1px;
  max-width: min(250px, calc(100vw - 220px));
  min-width: 160px;
  padding: 6px 10px 7px;
  top: max(18px, calc(env(safe-area-inset-top) + 12px));
}

body.mobile-landscape .mission-toast span {
  font-size: 8px;
}

body.mobile-landscape .mission-toast strong {
  font-size: 11px;
}

body.mobile-landscape .mission-toast small {
  font-size: 9px;
}

body.mobile-landscape .mobile-joystick {
  bottom: max(14px, env(safe-area-inset-bottom));
  display: block;
  height: 110px;
  left: max(10px, env(safe-area-inset-left));
  pointer-events: auto;
  position: absolute;
  touch-action: none;
  width: 110px;
  z-index: 8;
}

body.mobile-landscape .mobile-joystick.mobile-joystick-floating {
  bottom: auto;
  right: auto;
}

body.mobile-landscape .mobile-spells {
  --mobile-primary-spell: clamp(98px, 16.2vmin, 126px);
  --mobile-secondary-spell: clamp(62px, 10.1vmin, 80px);
  bottom: env(safe-area-inset-bottom);
  display: block;
  height: calc(var(--mobile-primary-spell) + (var(--mobile-secondary-spell) * 1.85));
  pointer-events: none;
  position: absolute;
  right: env(safe-area-inset-right);
  touch-action: none;
  user-select: none;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  width: calc(var(--mobile-primary-spell) + (var(--mobile-secondary-spell) * 1.65));
  z-index: 9;
}

body.mobile-landscape .mobile-spell {
  align-content: center;
  border-radius: 999px;
  box-shadow:
    0 10px 18px rgba(0, 0, 0, .32),
    inset 0 1px 0 rgba(255, 255, 255, .16);
  display: grid;
  gap: 0;
  grid-template-columns: 1fr;
  height: var(--mobile-secondary-spell);
  justify-items: center;
  min-height: var(--mobile-secondary-spell);
  min-width: var(--mobile-secondary-spell);
  padding: 5px;
  pointer-events: auto;
  position: absolute;
  touch-action: none;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  width: var(--mobile-secondary-spell);
  box-sizing: border-box;
}

body.mobile-landscape .mobile-spell.rune-bolt {
  background:
    radial-gradient(circle at 50% 18%, rgba(255, 255, 255, .16), transparent 34%),
    linear-gradient(180deg, rgba(48, 57, 70, .98), rgba(12, 16, 24, .98));
  border-color: rgba(255, 214, 106, .54);
  border-radius: 38% 10px 0 10px;
  bottom: 0;
  box-shadow:
    0 16px 28px rgba(0, 0, 0, .42),
    0 0 0 2px rgba(255, 214, 106, .16),
    0 0 26px rgba(255, 214, 106, .18),
    inset 0 2px 0 rgba(255, 255, 255, .18);
  height: var(--mobile-primary-spell);
  min-height: var(--mobile-primary-spell);
  min-width: var(--mobile-primary-spell);
  padding: 8px;
  right: 0;
  width: var(--mobile-primary-spell);
  z-index: 2;
}

body.mobile-landscape .mobile-spell.rune-heal {
  bottom: calc(var(--mobile-primary-spell) * .11);
  right: calc(var(--mobile-primary-spell) + 14px);
}

body.mobile-landscape .mobile-spell.rune-magic-wall {
  bottom: calc(var(--mobile-primary-spell) * .70);
  right: calc(var(--mobile-primary-spell) * .76);
}

body.mobile-landscape .mobile-spell.rune-explosion {
  bottom: calc(var(--mobile-primary-spell) * 1.24);
  right: calc(var(--mobile-primary-spell) + 8px);
}

body.mobile-landscape .mobile-spell.rune-lance {
  bottom: calc(var(--mobile-primary-spell) * 1.18);
  right: calc(var(--mobile-primary-spell) * .42);
}

body.mobile-landscape .mobile-spell.rune-haste {
  bottom: calc(var(--mobile-primary-spell) * .88);
  right: calc(var(--mobile-primary-spell) * .18);
}

body.mobile-landscape .mobile-spell[data-mobile-slot="optional-1"] {
  bottom: calc(var(--mobile-primary-spell) * .78);
  right: calc(var(--mobile-primary-spell) * 1.29);
}

body.mobile-landscape .mobile-spell[data-mobile-slot="optional-2"] {
  bottom: calc(var(--mobile-primary-spell) * 1.42);
  right: calc(var(--mobile-primary-spell) * .80);
}

body.mobile-landscape .mobile-spell[data-mobile-slot="optional-3"] {
  bottom: calc(var(--mobile-primary-spell) * 1.40);
  right: calc(var(--mobile-primary-spell) * .12);
}

body.mobile-landscape .mobile-spell * {
  touch-action: none;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
}

body.mobile-landscape .mobile-spell.active {
  box-shadow:
    0 0 0 2px rgba(255, 214, 106, .42),
    0 0 24px rgba(255, 214, 106, .22),
    inset 0 1px 0 rgba(255, 255, 255, .16);
}

body.mobile-landscape .mobile-spell .rune-icon {
  border-radius: 12px;
  height: calc(var(--mobile-secondary-spell) * .58);
  width: calc(var(--mobile-secondary-spell) * .58);
}

body.mobile-landscape .mobile-spell.rune-bolt .rune-icon {
  border-radius: 18px 8px 4px 8px;
  height: calc(var(--mobile-primary-spell) * .50);
  width: calc(var(--mobile-primary-spell) * .50);
}

body.mobile-landscape .mobile-spell > span:not(.rune-hotkey):not(.rune-icon):not(.rune-cooldown),
body.mobile-landscape .mobile-spell small {
  display: none !important;
}

body.mobile-landscape .mobile-spell.rune-bolt > span:not(.rune-hotkey):not(.rune-icon):not(.rune-cooldown) {
  color: #fff2bc;
  display: block !important;
  font-size: 13px;
  line-height: 1;
  margin-top: 3px;
  text-align: center;
  text-shadow: 0 2px 0 rgba(0, 0, 0, .48), 0 0 12px rgba(255, 214, 106, .28);
}

body.mobile-landscape .mobile-spell.rune-bolt strong {
  font-size: 13px;
  padding: 0;
}

body.mobile-landscape .mobile-spell .rune-hotkey {
  display: none;
}

body.mobile-landscape .mobile-spell .rune-cooldown {
  bottom: 5px;
  font-size: 8px;
  left: 50%;
  min-width: 30px;
  padding: 3px 5px;
  right: auto;
  transform: translateX(-50%);
}

body.mobile-landscape .mobile-spell.rune-bolt .rune-cooldown {
  bottom: 9px;
  font-size: 10px;
  min-width: 40px;
}

body.mobile-landscape .mobile-spell.cooldown::after {
  border-radius: inherit;
}

body.mobile-landscape .mobile-spell.can-buy::before {
  height: 20px;
  left: 5px;
  top: 5px;
  width: 20px;
}

body.mobile-landscape .mobile-halo-button {
  display: none !important;
}

body.mobile-landscape .mobile-halo-button {
  align-items: center;
  background:
    radial-gradient(circle at 50% 22%, rgba(255, 255, 255, .18), transparent 38%),
    linear-gradient(180deg, rgba(38, 32, 20, .96), rgba(12, 10, 8, .98));
  border: 1px solid rgba(255, 214, 106, .46);
  border-radius: 999px;
  bottom: max(12px, env(safe-area-inset-bottom));
  box-shadow:
    0 10px 18px rgba(0, 0, 0, .32),
    0 0 18px rgba(255, 214, 106, .16),
    inset 0 1px 0 rgba(255, 255, 255, .18);
  display: flex;
  height: clamp(58px, 9.8vmin, 72px);
  justify-content: center;
  left: 50%;
  padding: 0;
  pointer-events: auto;
  position: absolute;
  touch-action: none;
  transform: translateX(-50%);
  width: clamp(58px, 9.8vmin, 72px);
  z-index: 9;
}

body.mobile-landscape .mobile-halo-button::before {
  content: "";
  inset: -12px;
  position: absolute;
}

body.mobile-landscape .mobile-halo-button[hidden] {
  display: none !important;
}

body.mobile-landscape .mobile-halo-button:disabled {
  opacity: .64;
}

body.mobile-landscape .mobile-halo-button.can-buy {
  animation: runeBuyPulse 1.25s ease-in-out infinite;
  border-color: rgba(255, 239, 174, .86);
  box-shadow:
    0 12px 22px rgba(0, 0, 0, .36),
    0 0 26px rgba(255, 214, 106, .36),
    inset 0 1px 0 rgba(255, 255, 255, .22);
}

body.mobile-landscape .mobile-halo-button .halo-icon {
  height: 40px;
  pointer-events: none;
  width: 40px;
}

body.mobile-landscape .mobile-halo-button .halo-plus {
  align-items: center;
  background: radial-gradient(circle, #fff4bf 0 24%, #f1bd3b 25% 68%, #8a5616 69% 100%);
  border: 1px solid rgba(255, 247, 207, .9);
  border-radius: 50%;
  color: #251708;
  display: none;
  font-size: 13px;
  font-weight: 1000;
  height: 18px;
  justify-content: center;
  line-height: 1;
  pointer-events: none;
  position: absolute;
  right: -2px;
  top: -2px;
  width: 18px;
}

body.mobile-landscape .mobile-halo-button.can-buy .halo-plus {
  display: flex;
}

body.mobile-landscape .mobile-halo-button strong {
  align-items: center;
  background: rgba(5, 9, 15, .78);
  border: 1px solid rgba(255, 214, 106, .32);
  border-radius: 999px;
  bottom: -4px;
  color: #ffe8a4;
  display: inline-flex;
  font-size: 10px;
  font-weight: 950;
  justify-content: center;
  min-width: 22px;
  padding: 2px 5px;
  pointer-events: none;
  position: absolute;
  right: -5px;
}

body.mobile-landscape .halo-shop-overlay {
  gap: 6px;
  grid-template-columns: 30px minmax(70px, 1fr);
  min-height: 42px;
  min-width: min(132px, calc(100vw - 190px));
  max-width: min(168px, calc(100vw - 190px));
  padding: 5px 10px 5px 6px;
  z-index: 10;
}

body.mobile-landscape .halo-shop-overlay::before {
  inset: -14px;
}

body.mobile-landscape .halo-shop-overlay-icon {
  height: 36px;
  width: 36px;
}

body.mobile-landscape .halo-shop-overlay-icon .halo-icon,
body.mobile-landscape .halo-shop-overlay-icon .ankh-icon {
  height: 32px;
  width: 32px;
}

body.mobile-landscape .halo-shop-overlay-copy strong {
  font-size: 11px;
}

body.mobile-landscape .halo-shop-overlay-copy small,
body.mobile-landscape .halo-shop-overlay-count {
  font-size: 9px;
}

body.mobile-landscape .halo-shop-overlay-count {
  min-width: 34px;
  padding: 3px 5px;
}

@media (max-height: 430px) {
  body.mobile-landscape .mobile-spells {
    --mobile-primary-spell: clamp(90px, 15.2vmin, 112px);
    --mobile-secondary-spell: clamp(56px, 9.4vmin, 70px);
    bottom: env(safe-area-inset-bottom);
    right: env(safe-area-inset-right);
  }
}

@media (max-height: 390px) {
  body.mobile-landscape .mobile-game-hud {
    --mobile-hud-width: min(136px, calc(100vw - 12px));
    gap: 2px;
    max-width: 136px;
    padding: 0;
    width: var(--mobile-hud-width);
  }

  body.mobile-landscape .mobile-shop-button {
    min-height: 40px;
    min-width: 86px;
    padding: 4px 6px 5px;
    width: min(102px, calc(100vw - 224px));
  }

  body.mobile-landscape .mobile-shop-recommendation {
    min-height: 28px;
    min-width: 60px;
    padding: 6px 8px;
    right: calc(max(6px, env(safe-area-inset-right)) + min(102px, calc(100vw - 224px)) + 7px);
    top: max(14px, calc(env(safe-area-inset-top) + 14px));
  }

  body.mobile-landscape .mobile-artifact-status {
    min-height: 60px;
    min-width: 94px;
    padding: 4px 6px 5px;
    width: min(110px, calc(100vw - 224px));
    top: max(52px, calc(env(safe-area-inset-top) + 52px));
  }

  body.mobile-landscape .mobile-artifact-pill {
    font-size: 8px;
    padding: 3px 5px;
  }

  body.mobile-landscape .mobile-shop-label {
    font-size: 9px;
  }

  body.mobile-landscape .mobile-shop-modal:not([hidden]) {
    padding: 8px;
  }

  body.mobile-landscape .mobile-shop-panel {
    gap: 7px;
    padding: 10px;
    width: min(282px, calc(100vw - 18px));
  }

  body.mobile-landscape .mobile-game-hud.mobile-game-hud-side {
    gap: 3px;
    padding: 0;
  }

  body.mobile-landscape .mobile-mission-focus:not([hidden]) {
    --mobile-hud-width: min(136px, calc(100vw - 12px));
    gap: 2px;
    min-height: 0;
    padding: 0;
    top: max(92px, calc(env(safe-area-inset-top) + 92px));
    width: var(--mobile-hud-width);
  }

  body.mobile-landscape .mobile-mission-track {
    height: 14px;
  }

  body.mobile-landscape .mobile-mission-focus > strong {
    font-size: 8.5px;
    padding: 0 1px;
  }

  body.mobile-landscape .mobile-mission-track > span:last-child {
    font-size: 8px;
    padding: 0 4px;
  }

  body.mobile-landscape .mobile-game-hud-side .mobile-hud-row span,
  body.mobile-landscape .mobile-game-hud-side .mobile-base-row span,
  body.mobile-landscape .mobile-game-hud-side .mobile-level-row > span {
    font-size: 8px;
    padding: 3px 4px;
  }

  body.mobile-landscape .mobile-vital-bars {
    gap: 2px;
    min-width: 94px;
  }

  body.mobile-landscape .mobile-vital-bar,
  body.mobile-landscape .mobile-level-bar {
    height: 12px;
  }

  body.mobile-landscape .mobile-vital-bar > strong,
  body.mobile-landscape .mobile-level-bar > strong {
    font-size: 8px;
  }
}

.mobile-joystick-base {
  background:
    radial-gradient(circle at 50% 50%, rgba(244, 248, 255, .045) 0 30%, rgba(202, 211, 224, .035) 31% 58%, rgba(8, 11, 17, .16) 59% 100%);
  border: 2px solid rgba(218, 228, 242, .18);
  border-radius: 50%;
  box-shadow:
    0 12px 28px rgba(0, 0, 0, .16),
    inset 0 1px 0 rgba(255, 255, 255, .09),
    inset 0 -6px 16px rgba(0, 0, 0, .12);
  height: 100%;
  position: relative;
  width: 100%;
}

.mobile-joystick-knob {
  background:
    radial-gradient(circle at 38% 28%, rgba(255, 255, 255, .2) 0 12%, transparent 13%),
    linear-gradient(180deg, rgba(174, 184, 197, .72), rgba(82, 93, 108, .76));
  border: 2px solid rgba(226, 234, 246, .28);
  border-radius: 50%;
  box-shadow:
    0 8px 18px rgba(0, 0, 0, .22),
    inset 0 1px 0 rgba(255, 255, 255, .18),
    inset 0 -4px 0 rgba(0, 0, 0, .16);
  height: 46px;
  left: 50%;
  margin-left: -23px;
  margin-top: -23px;
  position: absolute;
  top: 50%;
  transform: translate3d(0, 0, 0);
  transition: transform .08s linear;
  width: 46px;
}

body.mobile-landscape .round-overlay {
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding:
    max(8px, env(safe-area-inset-top))
    max(10px, env(safe-area-inset-right))
    max(8px, env(safe-area-inset-bottom))
    max(10px, env(safe-area-inset-left));
}

body.mobile-landscape .round-dialog {
  border-radius: 14px;
  max-height: calc(100vh - 16px);
}

body.mobile-landscape .technical-missions-dialog {
  gap: 7px;
  max-height: calc(100dvh - 16px);
  max-width: calc(100vw - 20px);
  padding: 12px;
  width: calc(100vw - 20px);
}

body.mobile-landscape .technical-missions-dialog h2 {
  font-size: 22px;
}

body.mobile-landscape .technical-missions-dialog > p {
  display: none;
}

body.mobile-landscape .technical-missions-summary {
  font-size: 11px;
  gap: 4px;
  padding: 7px 9px;
}

body.mobile-landscape .technical-missions-summary span {
  padding: 4px 7px;
}

body.mobile-landscape .daily-mission-list.technical-missions-list {
  grid-auto-rows: max-content;
  grid-template-columns: minmax(0, 1fr);
  max-height: calc(100dvh - 142px);
}

body.mobile-landscape .technical-missions-list .daily-mission-card {
  min-height: 78px;
}

body.mobile-landscape .technical-mission-group {
  font-size: 9px;
  margin-top: 2px;
}

@media (max-width: 720px) and (orientation: portrait) {
  .technical-missions-dialog {
    max-height: calc(100dvh - 20px);
    padding: 16px;
  }

  .daily-mission-list.technical-missions-list {
    grid-template-columns: minmax(0, 1fr);
    max-height: calc(100dvh - 245px);
  }
}

body.mobile-landscape .game-menu-dialog {
  gap: 8px;
  max-height: calc(100dvh - 16px);
  max-width: min(430px, calc(100vw - 20px));
  overflow: hidden;
  padding: 12px;
  width: min(430px, calc(100vw - 20px));
}

body.mobile-landscape .game-menu-dialog .eyebrow {
  font-size: 10px;
}

body.mobile-landscape .game-menu-dialog h2 {
  font-size: 22px;
}

body.mobile-landscape .game-menu-actions {
  gap: 7px;
}

body.mobile-landscape .game-menu-actions button {
  min-height: 34px;
  padding: 8px 12px;
}

body.mobile-landscape #menuControlsButton {
  display: none !important;
}

body.mobile-landscape .game-menu-hint {
  display: none;
}

body.mobile-landscape .start-dialog {
  gap: 6px;
  max-height: calc(100vh - 16px);
  max-width: min(760px, calc(100vw - 20px));
  overflow: hidden;
  padding: 10px 14px;
  width: min(760px, calc(100vw - 20px));
}

body.mobile-landscape.is-lobby .start-overlay {
  overflow: hidden;
  padding: 6px;
}

body.mobile-landscape .lobby-dialog {
  grid-template-rows: auto auto minmax(0, 1fr);
  max-height: calc(100dvh - 12px);
  max-width: calc(100vw - 12px);
  padding: 7px 10px;
  width: calc(100vw - 12px);
}

body.mobile-landscape .lobby-main {
  gap: 10px;
  grid-template-columns: minmax(0, 1fr) minmax(160px, 210px);
}

body.mobile-landscape .lobby-hero {
  gap: 2px;
}

body.mobile-landscape .lobby-hero h1 {
  font-size: clamp(30px, 9vh, 42px);
}

body.mobile-landscape .lobby-play-button {
  border-radius: 11px;
  font-size: clamp(22px, 7vh, 34px);
  min-height: 48px;
}

body.mobile-landscape .lobby-grid {
  gap: 7px;
  grid-template-columns: minmax(180px, .72fr) minmax(0, 1fr);
}

body.mobile-landscape .lobby-profile-card {
  gap: 5px;
  max-height: 150px;
  overflow: hidden;
  padding: 7px;
}

body.mobile-landscape .lobby-card-head strong {
  font-size: 16px;
}

body.mobile-landscape .lobby-card-head span,
body.mobile-landscape .lobby-feature-card span {
  font-size: 9px;
}

body.mobile-landscape .lobby-level-row {
  font-size: 10px;
}

body.mobile-landscape .lobby-level-row strong,
body.mobile-landscape .lobby-stat-grid strong {
  font-size: 15px;
}

body.mobile-landscape .lobby-xp-bar {
  height: 7px;
}

body.mobile-landscape .lobby-stat-grid {
  gap: 4px;
}

body.mobile-landscape .lobby-stat-grid span {
  padding: 4px 3px;
}

body.mobile-landscape .lobby-stat-grid small {
  font-size: 7px;
}

body.mobile-landscape .lobby-stars-daily {
  font-size: 8px;
  line-height: 1.15;
  margin-top: 0;
  overflow: hidden;
  padding-top: 4px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.mobile-landscape .lobby-feature-grid,
body.mobile-landscape .lobby-controls {
  display: none;
}

body.mobile-landscape .lobby-grid .daily-missions {
  max-height: 116px;
  overflow: hidden;
}

body.mobile-landscape .team-select-dialog {
  max-width: min(620px, calc(100vw - 20px));
  padding: 12px;
  width: min(620px, calc(100vw - 20px));
}

body.mobile-landscape .start-status-row {
  gap: 6px;
}

body.mobile-landscape .server-pill,
body.mobile-landscape .start-ready {
  font-size: 10px;
  padding: 3px 7px;
}

body.mobile-landscape .start-hero {
  gap: 3px;
  padding: 0;
}

body.mobile-landscape .start-hero .eyebrow {
  font-size: 10px;
  letter-spacing: .1em;
}

body.mobile-landscape .start-hero h1 {
  font-size: clamp(30px, 8.6vh, 42px);
  line-height: .86;
}

body.mobile-landscape .start-hero p,
body.mobile-landscape .team-auto {
  font-size: 11px;
  line-height: 1.15;
}

body.mobile-landscape .team-banners {
  gap: 6px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

body.mobile-landscape .team-banner {
  border-radius: 9px;
  min-height: 0;
  padding: 7px 9px;
}

body.mobile-landscape .team-banner span {
  font-size: 14px;
}

body.mobile-landscape .team-banner strong {
  font-size: 10px;
}

body.mobile-landscape .daily-missions {
  gap: 5px;
  padding: 6px 7px;
}

body.mobile-landscape .daily-missions-head strong,
body.mobile-landscape .daily-missions-head span {
  font-size: 10px;
}

body.mobile-landscape .daily-mission-list {
  gap: 4px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

body.mobile-landscape .daily-mission-card {
  gap: 5px;
  grid-template-columns: minmax(0, 1fr) auto;
  min-height: 0;
  padding: 5px 6px;
}

body.mobile-landscape .daily-mission-title {
  font-size: 10px;
}

body.mobile-landscape .daily-mission-progress {
  gap: 4px;
}

body.mobile-landscape .daily-mission-bar {
  height: 5px;
}

body.mobile-landscape .daily-mission-progress small,
body.mobile-landscape .daily-mission-empty {
  font-size: 9px;
}

body.mobile-landscape .daily-mission-claim {
  font-size: 9px;
  padding: 5px 7px;
}

body.mobile-portrait.is-lobby .start-overlay,
body.mobile-landscape.is-lobby .start-overlay {
  overflow: auto;
  padding: 0;
}

body.mobile-portrait.is-lobby .lobby-dialog {
  grid-template-areas:
    "top"
    "title"
    "play"
    "profile"
    "rewards"
    "ranking"
    "friends";
  grid-template-columns: 1fr;
  grid-template-rows: auto;
  height: auto;
  min-height: 100dvh;
  overflow: visible;
  padding: 14px;
  width: 100%;
}

body.mobile-landscape .join-loading-panel {
  gap: 6px;
  padding: 9px 11px;
}

body.mobile-landscape .join-loading-copy strong,
body.mobile-landscape .join-loading-copy span {
  font-size: 10px;
}

body.mobile-landscape .join-loading-panel p {
  font-size: 9px;
}

body.mobile-portrait.is-lobby .lobby-hero-art {
  border-radius: 15px;
  grid-column: 1;
  grid-row: 2 / 4;
  min-height: 280px;
}

body.mobile-portrait.is-lobby .lobby-title {
  align-self: end;
  padding-top: 18px;
}

body.mobile-portrait.is-lobby .lobby-play-stage {
  align-self: start;
  min-height: 176px;
}

body.mobile-landscape .lobby-dialog {
  grid-template-areas:
    "top top"
    "title play"
    "profile rewards"
    "ranking friends";
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-template-rows: auto auto auto auto;
  height: auto;
  max-height: none;
  max-width: none;
  min-height: 100dvh;
  overflow: visible;
  padding: 8px;
  width: 100%;
}

body.mobile-landscape .lobby-hero-art {
  border-radius: 12px;
  grid-column: 1 / -1;
  grid-row: 2;
  min-height: 150px;
}

body.mobile-landscape .lobby-title {
  align-self: center;
  padding-top: 0;
}

body.mobile-landscape .lobby-title h1 {
  font-size: clamp(32px, 12vh, 48px);
}

body.mobile-landscape .lobby-play-stage {
  align-self: center;
  gap: 6px;
}

body.mobile-landscape .lobby-rank {
  border-radius: 12px;
  gap: 6px;
  padding: 5px 8px;
}

body.mobile-landscape .lobby-rank-copy small,
body.mobile-landscape .lobby-profile-rank small {
  font-size: 7px;
}

body.mobile-landscape .lobby-rank-copy strong,
body.mobile-landscape .lobby-profile-rank strong {
  font-size: 10px;
}

body.mobile-landscape .rank-badge--hero {
  height: 48px;
  width: 44px;
}

body.mobile-landscape .rank-badge--wood.rank-badge--hero {
  height: 36px;
  width: 56px;
}

body.mobile-landscape .lobby-hero-stars strong {
  font-size: 20px;
}

body.mobile-landscape .lobby-hero-stars .lobby-star-shape {
  height: 26px;
  width: 26px;
}

body.mobile-landscape .lobby-play-button {
  font-size: clamp(25px, 9vh, 38px);
  min-height: 54px;
  min-width: min(260px, 82vw);
  padding: 8px 18px;
}

body.mobile-landscape .lobby-profile-card,
body.mobile-landscape .daily-missions,
body.mobile-landscape .lobby-ranking-card,
body.mobile-landscape .lobby-friends-card {
  max-height: none;
  min-height: 132px;
  overflow: hidden;
  padding: 8px;
}

body.mobile-landscape .lobby-profile-card {
  gap: 4px;
  min-height: 168px;
}

body.mobile-landscape .daily-missions {
  min-height: 246px;
}

body.mobile-landscape .lobby-character-row {
  gap: 8px;
  grid-template-columns: 58px minmax(0, 1fr);
}

body.mobile-landscape .lobby-avatar-frame,
body.mobile-landscape .lobby-avatar-sprite {
  height: 58px;
  width: 58px;
}

body.mobile-landscape .lobby-profile-rank {
  border-radius: 8px;
  gap: 5px;
  padding: 3px 5px;
}

body.mobile-landscape .rank-badge--profile {
  height: 24px;
  width: 22px;
}

body.mobile-landscape .rank-badge--wood.rank-badge--profile {
  height: 18px;
  width: 26px;
}

body.mobile-landscape .lobby-stars-daily {
  border-top: 0;
  font-size: 8px;
  padding-top: 0;
}

body.mobile-landscape .lobby-profile-card .lobby-stat-grid span {
  padding: 3px 2px;
}

body.mobile-landscape .daily-mission-list,
body.mobile-landscape .lobby-ranking-list,
body.mobile-landscape .lobby-friends-list {
  max-height: 116px;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
}

body.mobile-landscape .lobby-person-row {
  gap: 6px;
  grid-template-columns: 30px minmax(0, 1fr) 20px auto;
  padding: 6px;
}

body.mobile-landscape .lobby-mini-avatar {
  height: 30px;
  width: 30px;
}

body.mobile-landscape .rank-badge--mini {
  height: 21px;
  width: 19px;
}

body.mobile-landscape .rank-badge--wood.rank-badge--mini {
  height: 16px;
  width: 22px;
}

body.mobile-landscape .daily-mission-list {
  gap: 5px;
  grid-auto-rows: minmax(46px, auto);
  grid-template-columns: 1fr;
  max-height: 128px;
}

body.mobile-landscape .daily-mission-claim {
  height: 38px;
  padding: 0;
  width: 38px;
}

body.mobile-landscape .daily-mission-claim-icon {
  transform: scale(.72);
}

body.mobile-landscape .daily-mission-card {
  gap: 6px;
  grid-template-columns: minmax(0, 1fr) 38px;
  min-height: 46px;
  padding: 5px 6px;
}

body.mobile-landscape .daily-mission-title-row {
  gap: 6px;
}

body.mobile-landscape .daily-mission-type-icon {
  border-radius: 7px;
  height: 24px;
  width: 24px;
}

body.mobile-landscape .mission-icon-minions,
body.mobile-landscape .mission-icon-damage,
body.mobile-landscape .mission-icon-enemy,
body.mobile-landscape .mission-icon-streak,
body.mobile-landscape .mission-icon-heal {
  background-size: 96px 48px;
}

body.mobile-landscape .mission-icon-tower {
  background-size: 72px 48px;
}

body.mobile-landscape .mission-icon-tower {
  background-position: 0 -24px;
}

body.mobile-landscape .mission-icon-damage {
  background-position: -72px -24px;
}

body.mobile-landscape .mission-icon-enemy {
  background-position: -48px -24px;
}

body.mobile-landscape .mission-icon-streak {
  background-position: -48px -24px;
}

body.mobile-landscape .mission-icon-heal::after {
  font-size: 12px;
  height: 13px;
  width: 13px;
}

body.mobile-landscape .daily-star-panel {
  gap: 3px;
  padding-top: 5px;
}

body.mobile-landscape .daily-star-head {
  font-size: 9px;
}

body.mobile-landscape .daily-star-head span {
  font-size: 8px;
}

body.mobile-landscape .daily-star-bar {
  height: 12px;
  margin-inline: 7px;
}

body.mobile-landscape .daily-star-milestone {
  border-radius: 999px;
  font-size: 8px;
  gap: 2px;
  height: 18px;
  min-height: 0;
  padding: 0;
  width: 18px;
}

body.mobile-landscape .daily-star-milestone b {
  font-size: 11px;
}

body.mobile-landscape .daily-star-milestone small {
  display: none;
}

body.mobile-landscape .daily-star-claim {
  font-size: 9px;
  min-height: 24px;
  padding: 3px 7px;
}

body.mobile-landscape .daily-star-claim .lobby-star-shape {
  height: 14px;
  width: 14px;
}

body.mobile-landscape .team-auto {
  margin: -2px 0 0;
}

body.mobile-landscape .team-select-overlay {
  padding: 6px;
}

body.mobile-landscape .team-select-dialog {
  gap: 8px;
  max-height: calc(100dvh - 12px);
  max-width: min(760px, calc(100vw - 12px));
  overflow: hidden;
  padding: 10px;
  width: min(760px, calc(100vw - 12px));
}

body.mobile-landscape .team-select-header {
  gap: 3px;
  padding: 0 34px;
}

body.mobile-landscape .team-select-dialog h2 {
  font-size: clamp(24px, 8vh, 38px);
}

body.mobile-landscape .team-select-dialog .team-auto {
  font-size: 10px;
  line-height: 1.15;
}

body.mobile-landscape .team-banners {
  gap: 8px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  justify-self: center;
  max-width: 720px;
  width: 100%;
}

body.mobile-landscape .team-banner {
  align-content: center;
  gap: 5px 9px;
  grid-template-areas:
    "top top"
    "art title"
    "art status"
    "art action";
  grid-template-columns: 72px minmax(0, 1fr);
  min-height: 126px;
  padding: 9px 10px;
}

body.mobile-landscape .team-banner-top {
  gap: 6px;
}

body.mobile-landscape .team-banner-name {
  font-size: clamp(12px, 2.7vw, 15px);
}

body.mobile-landscape .team-slot-badge {
  font-size: 9px;
  padding: 5px 7px;
}

body.mobile-landscape .team-banner-art {
  min-height: 72px;
}

body.mobile-landscape .team-emblem {
  width: 76px;
}

body.mobile-landscape .team-banner strong {
  font-size: 12px;
  line-height: 1.08;
}

body.mobile-landscape .team-banner small {
  font-size: 9px;
  min-height: 12px;
}

body.mobile-landscape .team-capacity-bar {
  display: none;
}

body.mobile-landscape .team-join-label {
  font-size: 10px;
  min-height: 14px;
}

@media (max-width: 560px) {
  body.mobile-landscape .team-banners {
    grid-template-columns: minmax(0, 1fr);
    max-width: 360px;
  }

  body.mobile-landscape .team-banner {
    min-height: 108px;
  }
}

body.mobile-landscape .start-action {
  border-radius: 10px;
  font-size: 13px;
  min-height: 34px;
  padding: 8px 14px;
}

body.mobile-landscape .start-feedback {
  font-size: 10px;
  min-height: 0;
}

body.mobile-portrait.is-lobby .mobile-orientation {
  display: grid;
}

body.mobile-portrait.is-lobby .lobby-topbar,
body.mobile-portrait.is-lobby #skinFragmentsStatus,
body.mobile-portrait.is-lobby .lobby-friends-card .lobby-card-head strong,
body.mobile-portrait.is-lobby .lobby-friends-list .lobby-empty-state {
  display: none;
}

body.mobile-landscape.is-lobby .start-overlay {
  overflow: hidden;
}

body.mobile-landscape.is-lobby .lobby-dialog {
  gap: 6px;
  grid-template-areas:
    "ranking title rewards"
    "ranking play rewards"
    "profile play friends";
  grid-template-columns: minmax(178px, 26%) minmax(280px, 48%) minmax(178px, 26%);
  grid-template-rows: auto minmax(0, .78fr) minmax(150px, .82fr);
  height: 100dvh;
  min-height: 0;
  overflow: hidden;
  padding: 6px;
  width: 100vw;
}

body.mobile-landscape.is-lobby .lobby-topbar {
  display: none;
}

body.mobile-landscape.is-lobby .server-pill,
body.mobile-landscape.is-lobby .start-ready,
body.mobile-landscape.is-lobby .lobby-settings-button {
  font-size: 9px;
  min-height: 0;
  padding: 4px 8px;
}

body.mobile-landscape.is-lobby .lobby-hero-art {
  border-radius: 10px;
  grid-column: 2;
  grid-row: 1 / 4;
  min-height: 0;
}

body.mobile-landscape.is-lobby .lobby-title {
  align-self: start;
  gap: 2px;
  justify-self: stretch;
  padding-inline: 68px;
  padding-top: 3px;
}

body.mobile-landscape.is-lobby .lobby-title .eyebrow {
  font-size: 8px;
  letter-spacing: .12em;
  padding: 3px 8px;
}

body.mobile-landscape.is-lobby .lobby-title h1 {
  font-size: clamp(25px, 8.5vh, 42px);
  line-height: .86;
}

body.mobile-landscape.is-lobby .lobby-play-stage {
  align-self: center;
  gap: 5px;
  justify-self: stretch;
  padding: 4px 12px;
}

body.mobile-landscape.is-lobby .lobby-settings-button-title {
  border-radius: 999px;
  font-size: 9px;
  min-height: 24px;
  padding: 4px 8px;
  right: 8px;
  top: 4px;
}

body.mobile-landscape.is-lobby .lobby-rank {
  border-radius: 15px;
  gap: 3px;
  padding: 6px 12px 5px;
}

body.mobile-landscape.is-lobby .lobby-rank-copy small,
body.mobile-landscape.is-lobby .lobby-profile-rank small {
  font-size: 7px;
}

body.mobile-landscape.is-lobby .lobby-rank-copy strong {
  font-size: clamp(16px, 5.2vh, 23px);
}

body.mobile-landscape.is-lobby .rank-badge--hero {
  height: 53px;
  width: 48px;
}

body.mobile-landscape.is-lobby .rank-badge--wood.rank-badge--hero {
  height: 38px;
  width: 60px;
}

body.mobile-landscape.is-lobby .lobby-hero-stars {
  padding: 5px 11px;
}

body.mobile-landscape.is-lobby .lobby-hero-stars strong {
  font-size: clamp(20px, 7.2vh, 30px);
}

body.mobile-landscape.is-lobby .lobby-hero-stars .lobby-star-shape {
  height: 26px;
  width: 26px;
}

body.mobile-landscape.is-lobby .lobby-play-button {
  border-radius: 13px;
  font-size: clamp(26px, 8.4vh, 42px);
  min-height: clamp(50px, 13vh, 66px);
  min-width: min(310px, 86%);
  padding: 6px 18px;
}

body.mobile-landscape.is-lobby .lobby-ranking-card,
body.mobile-landscape.is-lobby .lobby-profile-card,
body.mobile-landscape.is-lobby .daily-missions,
body.mobile-landscape.is-lobby .lobby-friends-card {
  gap: 5px;
  max-height: none;
  min-height: 0;
  overflow: hidden;
  padding: 6px;
}

body.mobile-landscape.is-lobby .lobby-ranking-card {
  grid-area: ranking;
}

body.mobile-landscape.is-lobby .lobby-profile-card {
  grid-area: profile;
}

body.mobile-landscape.is-lobby .daily-missions {
  grid-area: rewards;
}

body.mobile-landscape.is-lobby .lobby-friends-card {
  grid-area: friends;
}

body.mobile-landscape.is-lobby .lobby-card-head {
  gap: 4px;
}

body.mobile-landscape.is-lobby .daily-missions {
  grid-template-rows: auto minmax(0, 1fr) auto;
}

body.mobile-landscape.is-lobby .daily-missions-head {
  gap: 6px;
}

body.mobile-landscape.is-lobby #skinFragmentsStatus {
  display: none;
}

body.mobile-landscape.is-lobby .lobby-settings-button-mobile {
  align-items: center;
  display: inline-flex;
  font-size: 9px;
  justify-self: end;
  margin-left: auto;
  min-height: 24px;
  padding: 4px 8px;
}

body.mobile-landscape.is-lobby .lobby-card-head span,
body.mobile-landscape.is-lobby .daily-missions-head strong,
body.mobile-landscape.is-lobby .daily-missions-head span {
  font-size: 9px;
}

body.mobile-landscape.is-lobby .lobby-card-head strong {
  font-size: 15px;
  line-height: 1.05;
}

body.mobile-landscape.is-lobby .lobby-ranking-list,
body.mobile-landscape.is-lobby .lobby-friends-list {
  gap: 5px;
  max-height: none;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
}

body.mobile-landscape.is-lobby .lobby-ranking-list,
body.mobile-landscape.is-lobby .daily-mission-list {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  padding-right: 0;
  scrollbar-gutter: auto;
  scrollbar-width: none;
  touch-action: pan-y;
}

body.mobile-landscape.is-lobby .lobby-ranking-list::-webkit-scrollbar,
body.mobile-landscape.is-lobby .daily-mission-list::-webkit-scrollbar {
  display: none;
  height: 0;
  width: 0;
}

body.mobile-landscape.is-lobby .lobby-ranking-list *,
body.mobile-landscape.is-lobby .daily-mission-list * {
  touch-action: pan-y;
}

body.mobile-landscape.is-lobby .lobby-friends-card .lobby-card-head strong,
body.mobile-landscape.is-lobby .lobby-friends-list .lobby-empty-state {
  display: none;
}

body.mobile-landscape.is-lobby .lobby-person-row {
  border-radius: 8px;
  gap: 5px;
  grid-template-columns: 28px minmax(0, 1fr) 19px auto;
  padding: 5px;
}

body.mobile-landscape.is-lobby .lobby-person-row.is-ranked {
  gap: 4px;
  grid-template-columns: 25px 29px minmax(0, 1fr) 18px auto;
}

body.mobile-landscape.is-lobby .lobby-person-row.is-top-1 {
  grid-template-columns: 29px 31px minmax(0, 1fr) 18px auto;
  min-height: 40px;
}

body.mobile-landscape.is-lobby .lobby-ranking-place {
  border-radius: 7px;
  height: 21px;
  width: 21px;
}

body.mobile-landscape.is-lobby .lobby-ranking-place strong {
  font-size: 9px;
}

body.mobile-landscape.is-lobby .lobby-ranking-trophy {
  height: 26px;
  width: 24px;
}

body.mobile-landscape.is-lobby .lobby-ranking-trophy::before {
  border-radius: 6px 6px 9px 9px;
  height: 21px;
  left: 1px;
  width: 22px;
}

body.mobile-landscape.is-lobby .lobby-ranking-trophy::after {
  bottom: 1px;
  height: 8px;
  left: 9px;
  width: 7px;
}

body.mobile-landscape.is-lobby .lobby-ranking-trophy strong {
  font-size: 8px;
  margin-top: 6px;
}

body.mobile-landscape.is-lobby .lobby-ranking-trophy--gold {
  height: 29px;
  width: 28px;
}

body.mobile-landscape.is-lobby .lobby-ranking-trophy--gold::before {
  height: 24px;
  width: 26px;
}

body.mobile-landscape.is-lobby .lobby-ranking-trophy--gold::after {
  left: 10px;
  width: 8px;
}

body.mobile-landscape.is-lobby .lobby-ranking-trophy--gold strong {
  font-size: 9px;
  margin-top: 7px;
}

body.mobile-landscape.is-lobby .lobby-mini-avatar {
  border-radius: 7px;
  height: 28px;
  width: 28px;
}

body.mobile-landscape.is-lobby .lobby-person-row.is-ranked .lobby-mini-avatar {
  height: 29px;
  width: 29px;
}

body.mobile-landscape.is-lobby .lobby-person-row.is-top-1 .lobby-mini-avatar {
  height: 31px;
  width: 31px;
}

body.mobile-landscape.is-lobby .lobby-person-copy strong {
  font-size: 10px;
}

body.mobile-landscape.is-lobby .lobby-person-copy small {
  font-size: 8px;
}

body.mobile-landscape.is-lobby .rank-badge--mini {
  height: 19px;
  width: 17px;
}

body.mobile-landscape.is-lobby .rank-badge--wood.rank-badge--mini {
  height: 14px;
  width: 21px;
}

body.mobile-landscape.is-lobby .lobby-person-stars {
  gap: 4px;
}

body.mobile-landscape.is-lobby .lobby-person-stars strong {
  font-size: 11px;
}

body.mobile-landscape.is-lobby .lobby-person-stars .lobby-star-shape {
  height: 14px;
  width: 14px;
}

body.mobile-landscape.is-lobby .lobby-character-row {
  gap: 6px;
  grid-template-columns: 46px minmax(0, 1fr);
}

body.mobile-landscape.is-lobby .lobby-avatar-frame {
  display: grid;
}

body.mobile-landscape.is-lobby .lobby-avatar-sprite {
  display: block;
  height: 46px;
  width: 46px;
}

body.mobile-landscape.is-lobby .lobby-character-meta {
  gap: 3px;
}

body.mobile-landscape.is-lobby .lobby-level-row {
  font-size: 9px;
}

body.mobile-landscape.is-lobby .lobby-skin-row,
body.mobile-landscape.is-lobby .lobby-spell-loadout-row {
  gap: 5px;
  grid-template-columns: minmax(0, 1fr) minmax(50px, auto);
  min-height: 32px;
  padding: 4px 6px;
}

body.mobile-landscape.is-lobby .lobby-skin-row small,
body.mobile-landscape.is-lobby .lobby-spell-loadout-row small {
  display: none;
}

body.mobile-landscape.is-lobby .lobby-skin-row strong,
body.mobile-landscape.is-lobby .lobby-spell-loadout-row strong {
  font-size: 10px;
  margin-top: 0;
}

body.mobile-landscape.is-lobby .lobby-spell-slots {
  gap: 4px;
  margin-top: 0;
}

body.mobile-landscape.is-lobby .lobby-spell-slot {
  gap: 0;
  grid-template-columns: 18px;
  justify-content: center;
  min-height: 23px;
  padding: 2px;
}

body.mobile-landscape.is-lobby .lobby-spell-slot .rune-icon {
  height: 18px;
  width: 18px;
}

body.mobile-landscape.is-lobby .lobby-spell-slot strong {
  display: none;
}

body.mobile-landscape.is-lobby .lobby-skin-edit,
body.mobile-landscape.is-lobby .lobby-spell-edit {
  font-size: 9px;
  min-height: 26px;
  min-width: 48px;
  padding: 4px 6px;
}

body.mobile-landscape.is-lobby .lobby-xp-bar {
  display: none;
}

body.mobile-landscape.is-lobby .lobby-profile-rank {
  display: none;
}

body.mobile-landscape.is-lobby .lobby-stars-daily {
  display: none;
}

body.mobile-landscape.is-lobby .lobby-stat-grid {
  display: none;
  gap: 4px;
  grid-template-columns: minmax(0, 1fr);
}

body.mobile-landscape.is-lobby .lobby-stat-grid span {
  border-radius: 7px;
  padding: 4px 2px;
}

body.mobile-landscape.is-lobby .lobby-stars-stat,
body.mobile-landscape.is-lobby .lobby-gold-stat,
body.mobile-landscape.is-lobby .lobby-halos-stat {
  display: none;
}

body.mobile-landscape.is-lobby .lobby-stat-grid strong {
  font-size: 14px;
}

body.mobile-landscape.is-lobby .lobby-stat-grid small {
  font-size: 7px;
}

body.mobile-landscape.is-lobby .daily-mission-list {
  gap: 5px;
  grid-auto-rows: max-content;
  grid-template-columns: 1fr;
  max-height: none;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  padding-right: 0;
  scrollbar-gutter: auto;
}

body.mobile-landscape.is-lobby .daily-mission-card {
  border-radius: 8px;
  gap: 5px;
  grid-template-columns: minmax(0, 1fr) 32px;
  min-height: 58px;
  padding: 5px;
}

body.mobile-landscape.is-lobby .daily-mission-title-row {
  gap: 5px;
}

body.mobile-landscape.is-lobby .daily-mission-type-icon {
  border-radius: 6px;
  height: 22px;
  width: 22px;
}

body.mobile-landscape.is-lobby .mission-icon-minions,
body.mobile-landscape.is-lobby .mission-icon-damage,
body.mobile-landscape.is-lobby .mission-icon-enemy,
body.mobile-landscape.is-lobby .mission-icon-streak,
body.mobile-landscape.is-lobby .mission-icon-heal {
  background-size: 88px 44px;
}

body.mobile-landscape.is-lobby .mission-icon-tower {
  background-size: 66px 44px;
}

body.mobile-landscape.is-lobby .mission-icon-tower {
  background-position: 0 -22px;
}

body.mobile-landscape.is-lobby .mission-icon-damage {
  background-position: -66px -22px;
}

body.mobile-landscape.is-lobby .mission-icon-enemy {
  background-position: -44px -22px;
}

body.mobile-landscape.is-lobby .mission-icon-streak {
  background-position: -44px -22px;
}

body.mobile-landscape.is-lobby .daily-mission-title {
  font-size: 10px;
}

body.mobile-landscape.is-lobby .daily-mission-progress {
  gap: 4px;
}

body.mobile-landscape.is-lobby .daily-mission-bar {
  height: 5px;
}

body.mobile-landscape.is-lobby .daily-mission-progress small {
  font-size: 8px;
  min-width: 42px;
}

body.mobile-landscape.is-lobby .daily-mission-tiers {
  gap: 2px;
}

body.mobile-landscape.is-lobby .daily-mission-tier {
  height: 13px;
  min-width: 16px;
  padding: 0;
  width: 16px;
}

body.mobile-landscape.is-lobby .daily-mission-tier-chest {
  height: 14px;
  transform: translateY(-1px);
  width: 14px;
}

body.mobile-landscape.is-lobby .daily-mission-claim {
  border-radius: 10px;
  height: 32px;
  min-width: 32px;
  width: 32px;
}

body.mobile-landscape.is-lobby .daily-mission-claim-icon {
  transform: scale(.6);
}

body.mobile-landscape.is-lobby .daily-missions > .daily-mission-list .daily-mission-claim.is-ready::before,
body.mobile-landscape.is-lobby .daily-missions > .daily-mission-list .daily-mission-claim.is-ready::after {
  border-radius: 12px;
  inset: -3px;
}

body.mobile-landscape.is-lobby .daily-missions > .daily-mission-list .daily-mission-claim.is-ready::after {
  inset: -1px;
}

body.mobile-landscape.is-lobby .daily-star-panel {
  gap: 3px;
  padding-top: 5px;
}

body.mobile-landscape.is-lobby .daily-star-head {
  font-size: 9px;
}

body.mobile-landscape.is-lobby .daily-star-head span {
  font-size: 8px;
}

body.mobile-landscape.is-lobby .daily-star-bar {
  height: 12px;
  margin-inline: 7px;
}

body.mobile-landscape.is-lobby .daily-star-milestone {
  height: 18px;
  min-height: 0;
  width: 18px;
}

body.mobile-landscape.is-lobby .daily-star-claim {
  border-radius: 9px;
  font-size: 9px;
  min-height: 24px;
  padding: 3px 6px;
}

body.mobile-landscape .reward-fx-particle {
  height: 8px;
  left: -4px;
  top: -4px;
  width: 8px;
}

body.mobile-landscape .reward-fx-particle.is-spark {
  height: 11px;
  left: -6px;
  top: -6px;
  width: 11px;
}

body.mobile-landscape .reward-fx-particle.is-fragment {
  height: 7px;
  width: 9px;
}

@media (max-width: 860px) and (max-height: 430px) and (orientation: landscape) {
  body.mobile-landscape.is-lobby .lobby-dialog {
    gap: 6px;
    grid-template-areas:
      "ranking title rewards"
      "ranking play rewards"
      "profile play rewards";
    grid-template-columns: minmax(172px, 27%) minmax(260px, 46%) minmax(182px, 27%);
    grid-template-rows: minmax(48px, auto) minmax(0, .78fr) minmax(116px, .72fr);
    padding: 6px;
  }

  body.mobile-landscape.is-lobby .lobby-friends-card {
    display: none;
  }

  body.mobile-landscape.is-lobby .daily-missions {
    min-height: 0;
  }

  body.mobile-landscape.is-lobby .lobby-title {
    padding-inline: 56px;
    padding-top: 2px;
  }

  body.mobile-landscape.is-lobby .lobby-title .eyebrow {
    font-size: 7px;
    padding: 2px 7px;
  }

  body.mobile-landscape.is-lobby .lobby-title h1 {
    font-size: clamp(24px, 7.4vh, 34px);
    line-height: .86;
  }

  body.mobile-landscape.is-lobby .lobby-settings-button-title {
    font-size: 0;
    min-height: 24px;
    min-width: 30px;
    padding: 3px 7px;
  }

  body.mobile-landscape.is-lobby .lobby-settings-button-title .settings-gear-icon {
    font-size: 14px;
  }

  body.mobile-landscape.is-lobby .lobby-play-stage {
    align-content: center;
    gap: 4px;
    justify-items: center;
    min-height: 0;
    padding: 2px 10px 5px;
  }

  body.mobile-landscape.is-lobby .lobby-rank {
    border-radius: 12px;
    padding: 4px 10px;
  }

  body.mobile-landscape.is-lobby .lobby-rank-copy strong {
    font-size: clamp(14px, 4.5vh, 20px);
  }

  body.mobile-landscape.is-lobby .rank-badge--hero,
  body.mobile-landscape.is-lobby .rank-badge--wood.rank-badge--hero,
  body.mobile-landscape.is-lobby .rank-badge--bronze.rank-badge--hero,
  body.mobile-landscape.is-lobby .rank-badge--silver.rank-badge--hero,
  body.mobile-landscape.is-lobby .rank-badge--gold.rank-badge--hero,
  body.mobile-landscape.is-lobby .rank-badge--platinum.rank-badge--hero,
  body.mobile-landscape.is-lobby .rank-badge--legend.rank-badge--hero {
    height: 50px;
    width: 50px;
  }

  body.mobile-landscape.is-lobby .lobby-hero-stars {
    padding: 3px 10px;
  }

  body.mobile-landscape.is-lobby .lobby-hero-stars strong {
    font-size: clamp(19px, 5.8vh, 26px);
  }

  body.mobile-landscape.is-lobby .lobby-hero-stars .lobby-star-shape {
    height: 22px;
    width: 22px;
  }

  body.mobile-landscape.is-lobby .lobby-play-button {
    border-radius: 12px;
    font-size: clamp(24px, 7.2vh, 34px);
    min-height: 44px;
    min-width: min(260px, 84%);
    padding: 4px 16px;
  }

  body.mobile-landscape.is-lobby .start-feedback {
    display: none;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-card,
  body.mobile-landscape.is-lobby .lobby-profile-card,
  body.mobile-landscape.is-lobby .daily-missions {
    padding: 6px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-card .lobby-card-head span,
  body.mobile-landscape.is-lobby .lobby-profile-card .lobby-card-head span {
    display: none;
  }

  body.mobile-landscape.is-lobby .lobby-card-head strong {
    font-size: 14px;
  }

  body.mobile-landscape.is-lobby #lobbyPlayerName {
    font-size: 13px;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-list {
    gap: 4px;
  }

  body.mobile-landscape.is-lobby .lobby-person-row {
    border-radius: 7px;
    gap: 4px;
    grid-template-columns: 26px minmax(0, 1fr) 18px auto;
    padding: 4px;
  }

  body.mobile-landscape.is-lobby .lobby-person-row.is-ranked {
    grid-template-columns: 24px 27px minmax(0, 1fr) 16px auto;
  }

  body.mobile-landscape.is-lobby .lobby-person-row.is-top-1 {
    grid-template-columns: 28px 30px minmax(0, 1fr) 16px auto;
    min-height: 38px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-place {
    border-radius: 7px;
    height: 20px;
    width: 20px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-place strong {
    font-size: 9px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-trophy {
    height: 25px;
    width: 23px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-trophy::before {
    border-radius: 6px 6px 9px 9px;
    height: 20px;
    left: 1px;
    width: 21px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-trophy::after {
    bottom: 1px;
    height: 8px;
    left: 8px;
    width: 7px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-trophy strong {
    font-size: 8px;
    margin-top: 6px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-trophy--gold {
    height: 28px;
    width: 27px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-trophy--gold::before {
    height: 23px;
    width: 25px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-trophy--gold::after {
    left: 9px;
    width: 8px;
  }

  body.mobile-landscape.is-lobby .lobby-ranking-trophy--gold strong {
    font-size: 9px;
    margin-top: 7px;
  }

  body.mobile-landscape.is-lobby .lobby-mini-avatar {
    height: 26px;
    width: 26px;
  }

  body.mobile-landscape.is-lobby .lobby-person-row.is-ranked .lobby-mini-avatar {
    height: 27px;
    width: 27px;
  }

  body.mobile-landscape.is-lobby .lobby-person-row.is-top-1 .lobby-mini-avatar {
    height: 30px;
    width: 30px;
  }

  body.mobile-landscape.is-lobby .lobby-person-copy strong {
    font-size: 9px;
  }

  body.mobile-landscape.is-lobby .lobby-person-copy small {
    font-size: 7.5px;
  }

  body.mobile-landscape.is-lobby .lobby-profile-card {
    gap: 3px;
  }

  body.mobile-landscape.is-lobby .lobby-character-row {
    gap: 5px;
    grid-template-columns: 42px minmax(0, 1fr);
  }

  body.mobile-landscape.is-lobby .lobby-avatar-frame,
  body.mobile-landscape.is-lobby .lobby-avatar-sprite {
    height: 42px;
    width: 42px;
  }

  body.mobile-landscape.is-lobby .lobby-character-meta {
    gap: 3px;
  }

  body.mobile-landscape.is-lobby .lobby-level-row {
    font-size: 8.5px;
  }

  body.mobile-landscape.is-lobby .lobby-skin-row,
  body.mobile-landscape.is-lobby .lobby-spell-loadout-row {
    border-radius: 8px;
    gap: 4px;
    grid-template-columns: minmax(0, 1fr) minmax(42px, auto);
    min-height: 24px;
    padding: 3px 4px;
  }

  body.mobile-landscape.is-lobby .lobby-skin-row strong,
  body.mobile-landscape.is-lobby .lobby-spell-loadout-row strong {
    font-size: 9px;
  }

  body.mobile-landscape.is-lobby .lobby-spell-loadout-copy {
    align-items: center;
    display: flex;
    gap: 4px;
    min-width: 0;
  }

  body.mobile-landscape.is-lobby .lobby-spell-slots {
    display: flex;
    flex: 0 0 auto;
    gap: 3px;
    margin-top: 0;
  }

  body.mobile-landscape.is-lobby .lobby-spell-slot {
    border-radius: 7px;
    flex: 0 0 24px;
    grid-template-columns: 18px;
    height: 24px;
    min-height: 24px;
    padding: 2px;
    width: 24px;
  }

  body.mobile-landscape.is-lobby .lobby-spell-slot .rune-icon {
    height: 18px;
    width: 18px;
  }

  body.mobile-landscape.is-lobby .lobby-skin-edit,
  body.mobile-landscape.is-lobby .lobby-spell-edit {
    border-radius: 7px;
    font-size: 8.5px;
    min-height: 22px;
    min-width: 42px;
    padding: 3px 5px;
  }

  body.mobile-landscape.is-lobby .daily-missions-head strong,
  body.mobile-landscape.is-lobby .daily-missions-head span {
    font-size: 9px;
  }

  body.mobile-landscape.is-lobby .daily-mission-list {
    gap: 5px;
    grid-auto-rows: max-content;
  }

  body.mobile-landscape.is-lobby .daily-mission-card {
    min-height: 56px;
  }

  body.mobile-landscape.is-lobby .daily-star-panel {
    gap: 3px;
    padding-top: 4px;
  }

  body.mobile-landscape.is-lobby .daily-star-bar {
    height: 11px;
    margin-inline: 6px;
  }

  body.mobile-landscape.is-lobby .daily-star-claim {
    min-height: 23px;
    padding: 2px 6px;
  }
}

body.mobile-landscape .reward-fx-burst {
  height: 42px;
  margin: -21px 0 0 -21px;
  width: 42px;
}

body.mobile-landscape .reward-fx-amount {
  font-size: 12px;
}

body.mobile-landscape .reward-fx-flying-star {
  font-size: 28px;
  left: -14px;
  top: -14px;
}

@media (prefers-reduced-motion: reduce) {
  .daily-star-bar > span {
    transition: none;
  }

  .daily-mission-claim.reward-fx-chest-pop,
  .daily-star-milestone.reward-fx-star-unlocked,
  .daily-star-claim.reward-fx-ready-pop,
  .lobby-hero-stars.reward-fx-counter-pop,
  #lobbyStarsHero.reward-fx-counter-pop {
    animation: none;
  }
}

body.mobile-landscape .start-rules,
body.mobile-landscape .start-controls {
  display: none;
}

body.mobile-landscape .death-dialog {
  gap: 7px;
  max-height: calc(100vh - 16px);
  max-width: min(760px, calc(100vw - 20px));
  overflow: hidden;
  padding: 10px 14px;
  width: min(760px, calc(100vw - 20px));
}

body.mobile-landscape .death-dialog .eyebrow {
  font-size: 10px;
  letter-spacing: .1em;
}

body.mobile-landscape .death-dialog h2 {
  font-size: clamp(30px, 11vh, 46px);
  line-height: .86;
}

body.mobile-landscape .death-dialog p {
  font-size: 12px;
  line-height: 1.1;
}

body.mobile-landscape #deathKillerText {
  border-radius: 10px;
  font-size: 12px;
  gap: 7px;
  max-width: min(100%, 440px);
  padding: 5px 10px 5px 7px;
}

body.mobile-landscape #deathKillerText::before {
  height: 18px;
  width: 18px;
}

body.mobile-landscape .death-stats {
  gap: 6px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

body.mobile-landscape .death-stat {
  border-radius: 8px;
  gap: 6px;
  grid-template-columns: 26px 1fr;
  min-height: 42px;
  padding: 6px;
}

body.mobile-landscape .death-stat-icon {
  border-radius: 6px;
  font-size: 8px;
  height: 26px;
  width: 26px;
}

body.mobile-landscape .death-stat-body {
  gap: 1px;
}

body.mobile-landscape .death-stat-body small {
  font-size: 8px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.mobile-landscape .death-stat-body strong {
  font-size: 15px;
}

body.mobile-landscape .death-action {
  border-radius: 10px;
  font-size: 13px;
  min-height: 34px;
  padding: 8px 14px;
}

body.mobile-landscape .match-result-dialog {
  gap: 7px;
  max-height: calc(100vh - 16px);
  max-width: min(900px, calc(100vw - 20px));
  padding: 10px;
  width: min(900px, calc(100vw - 20px));
}

body.mobile-landscape .match-result-title {
  font-size: clamp(32px, 11vh, 52px);
}

body.mobile-landscape .match-result-dialog > .eyebrow,
body.mobile-landscape .match-result-dialog > p {
  font-size: 10px;
  line-height: 1.15;
}

body.mobile-landscape .match-summary,
body.mobile-landscape .summary-hero,
body.mobile-landscape .summary-details,
body.mobile-landscape .summary-team {
  gap: 6px;
}

body.mobile-landscape .summary-hero,
body.mobile-landscape .summary-team {
  padding: 8px;
}

body.mobile-landscape .summary-hero-header strong {
  font-size: 14px;
}

body.mobile-landscape .summary-hero-header span {
  font-size: 9px;
}

body.mobile-landscape .summary-stat-grid {
  gap: 6px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

body.mobile-landscape .summary-stat-card {
  gap: 6px;
  grid-template-columns: 26px 1fr;
  min-height: 42px;
  padding: 6px;
}

body.mobile-landscape .summary-stat-icon {
  font-size: 8px;
  height: 26px;
  width: 26px;
}

body.mobile-landscape .summary-stat-body small {
  font-size: 8px;
}

body.mobile-landscape .summary-stat-body strong {
  font-size: 15px;
}

body.mobile-landscape .summary-details-toggle,
body.mobile-landscape .match-actions button {
  font-size: 12px;
  min-height: 32px;
  padding: 7px 10px;
}

body.mobile-landscape .match-actions {
  gap: 6px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.side-panel {
  align-content: start;
  background:
    radial-gradient(circle at 50% -8%, rgba(92, 139, 197, .16), transparent 34%),
    linear-gradient(180deg, rgba(26, 38, 55, .97), rgba(9, 14, 23, .985));
  border-color: rgba(105, 135, 174, .38);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .08),
    inset 1px 0 0 rgba(255, 255, 255, .025),
    0 22px 46px rgba(8, 13, 22, .3);
  color: #edf5ff;
  display: grid;
  gap: clamp(5px, .7vh, 8px);
  grid-template-rows: auto auto auto auto minmax(0, 1fr);
  height: 100%;
  min-height: 0;
  min-width: 0;
  overflow: hidden;
  padding: clamp(7px, .72vw, 10px);
}

.score-panel {
  background: rgba(5, 10, 18, .38);
  border-color: rgba(143, 168, 200, .22);
  box-shadow: none;
  display: grid;
  gap: 6px;
  grid-template-columns: 1fr 1fr;
  padding: 7px;
}

.kill-panel {
  background: transparent;
  border: 0;
  box-shadow: none;
  display: grid;
  gap: 2px;
  min-height: 0;
  overflow: hidden;
  padding: 0 2px;
}

.kill-panel-label {
  color: rgba(174, 189, 209, .58);
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.kill-list {
  display: grid;
  gap: 1px;
  min-height: 0;
  overflow: hidden;
}

.kill-row {
  align-items: center;
  background: transparent;
  border: 0;
  border-radius: 0;
  display: grid;
  gap: 4px;
  grid-template-columns: 13px 10px minmax(0, 1fr) auto;
  min-height: 15px;
  padding: 1px 2px;
}

.kill-row.mvp {
  border-color: transparent;
  box-shadow: none;
}

.kill-rank {
  color: rgba(144, 164, 191, .66);
  font-size: 8px;
  font-weight: 800;
  text-align: center;
}

.mvp-crown {
  background: linear-gradient(180deg, #fff2a2, #f0bd38 58%, #af7018);
  clip-path: polygon(0 100%, 0 35%, 24% 57%, 39% 6%, 50% 52%, 61% 6%, 76% 57%, 100% 35%, 100% 100%);
  display: inline-block;
  height: 8px;
  justify-self: center;
  width: 10px;
}

.mvp-crown.empty {
  opacity: 0;
}

.kill-name {
  color: rgba(237, 245, 255, .76);
  font-size: 9px;
  font-weight: 750;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.kill-row.north .kill-name {
  color: rgba(141, 185, 255, .72);
}

.kill-row.south .kill-name {
  color: rgba(255, 157, 173, .72);
}

.kill-score {
  color: rgba(255, 247, 214, .78);
  font-size: 9px;
  font-weight: 850;
  line-height: 1;
}

.kill-empty {
  color: rgba(143, 160, 184, .68);
  font-size: 9px;
  font-weight: 700;
  padding: 1px 2px;
}

.player-hud {
  background:
    linear-gradient(180deg, rgba(15, 26, 41, .84), rgba(5, 10, 18, .56));
  border: 1px solid rgba(143, 168, 200, .24);
  border-radius: 8px;
  box-shadow: none;
  display: grid;
  gap: 6px;
  min-height: 0;
  overflow: hidden;
  padding: 8px;
}

.player-strip {
  background: linear-gradient(180deg, rgba(23, 35, 52, .76), rgba(10, 16, 27, .84));
  border: 1px solid rgba(124, 151, 186, .18);
  border-radius: 6px;
  display: grid;
  gap: 5px;
  min-height: 0;
  min-width: 0;
  padding: 6px;
}

.player-strip-row {
  align-items: center;
  display: flex;
  gap: 7px;
  justify-content: space-between;
  min-height: 22px;
  min-width: 0;
}

.player-strip-row-status {
  gap: 10px;
  justify-content: flex-end;
  min-height: 15px;
  padding: 0 1px;
}

.hud-menu-button {
  align-items: center;
  background:
    linear-gradient(180deg, rgba(40, 132, 255, .34), rgba(16, 58, 112, .44)),
    rgba(8, 17, 31, .72);
  border: 1px solid rgba(106, 183, 255, .48);
  border-radius: 5px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .12), 0 0 10px rgba(70, 160, 255, .12);
  color: #dff1ff;
  cursor: pointer;
  display: inline-flex;
  flex: 0 0 auto;
  font-size: 10px;
  font-weight: 900;
  gap: 4px;
  justify-content: center;
  line-height: 1;
  min-height: 22px;
  padding: 5px 7px;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .62);
  text-transform: uppercase;
}

.hud-menu-button::before {
  color: #9fd7ff;
  content: "⚙";
  display: inline-block;
  font-size: 11px;
  line-height: 1;
  text-shadow: 0 0 8px rgba(90, 180, 255, .38);
}

.hud-menu-button:hover {
  background:
    linear-gradient(180deg, rgba(60, 154, 255, .44), rgba(20, 74, 142, .54)),
    rgba(8, 17, 31, .78);
  border-color: rgba(147, 211, 255, .7);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .16), 0 0 14px rgba(70, 160, 255, .18);
}

.player-strip strong,
.player-strip span {
  font-size: 11px;
  font-weight: 900;
  line-height: 1.1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.player-strip .player-gold {
  align-items: center;
  color: #ffd66a;
  display: inline-flex;
  flex: 1 1 auto;
  gap: 4px;
  justify-content: flex-end;
  text-align: right;
}

.player-strip .player-gold::before {
  background:
    radial-gradient(circle at 35% 28%, rgba(255, 250, 196, .95) 0 16%, transparent 17%),
    radial-gradient(circle at 50% 50%, #f6d36a 0 54%, #b97819 55% 100%);
  border: 1px solid rgba(255, 236, 164, .76);
  border-radius: 50%;
  box-shadow: inset 0 -2px 0 rgba(107, 67, 12, .35), 0 1px 0 rgba(0, 0, 0, .32);
  content: "";
  display: inline-block;
  height: 13px;
  width: 13px;
}

.player-strip .player-hp {
  color: #f6fff8;
  text-shadow:
    0 1px 0 rgba(0, 0, 0, .72),
    0 0 7px rgba(28, 189, 92, .34);
}

.resource-bar {
  align-items: center;
  background: rgba(4, 9, 18, .46);
  border: 1px solid rgba(124, 151, 186, .2);
  border-radius: 999px;
  display: flex;
  height: 16px;
  justify-content: center;
  overflow: hidden;
  position: relative;
  width: 100%;
}

.resource-bar > span {
  inset: 0 auto 0 0;
  position: absolute;
  transition: width .16s ease;
  width: 100%;
}

.resource-bar > strong {
  color: #e8f5ff;
  font-size: 10px;
  font-weight: 950;
  line-height: 1;
  position: relative;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .62);
  z-index: 1;
}

.hp-resource > span {
  background: linear-gradient(90deg, #1f9f55, #41db76 62%, #9af7b0);
  box-shadow: 0 0 13px rgba(66, 227, 118, .28);
}

.mana-resource > span {
  background: linear-gradient(90deg, #226edb, #4aa8ff 62%, #9ce3ff);
  box-shadow: 0 0 13px rgba(76, 171, 255, .3);
}

.xp-resource {
  border-color: rgba(255, 214, 106, .28);
}

.xp-resource > span {
  background: linear-gradient(90deg, #b97920, #f2c94c 62%, #fff0a8);
  box-shadow: 0 0 13px rgba(242, 201, 76, .26);
}

.xp-resource > strong {
  align-items: center;
  display: inline-flex;
  gap: 5px;
  justify-content: center;
  max-width: calc(100% - 10px);
}

.xp-resource-detail {
  border-left: 1px solid rgba(255, 249, 222, .38);
  color: rgba(255, 249, 222, .86);
  font-size: 9px;
  font-weight: 850;
  padding-left: 5px;
}

@keyframes mana-low-fill-flash {
  0% {
    background: linear-gradient(90deg, #226edb, #4aa8ff 62%, #9ce3ff);
    box-shadow: 0 0 13px rgba(76, 171, 255, .3);
  }
  32%, 68% {
    background: linear-gradient(90deg, #ff243d, #ff6674 62%, #ffc4ca);
    box-shadow:
      0 0 12px rgba(255, 53, 73, .62),
      0 0 24px rgba(255, 53, 73, .35);
  }
  100% {
    background: linear-gradient(90deg, #226edb, #4aa8ff 62%, #9ce3ff);
    box-shadow: 0 0 13px rgba(76, 171, 255, .3);
  }
}

@keyframes mana-low-text-flash {
  0%, 100% {
    color: #e8f5ff;
    text-shadow:
      0 1px 0 rgba(0, 0, 0, .8),
      0 0 7px rgba(76, 171, 255, .35);
  }
  32%, 68% {
    color: #ffeff1;
    text-shadow:
      0 1px 0 rgba(0, 0, 0, .95),
      0 0 8px rgba(255, 38, 58, .78),
      0 0 16px rgba(255, 38, 58, .42);
  }
}

.player-strip .latency-meter,
.player-strip .fps-meter {
  flex: 0 0 auto;
  max-width: 100%;
  min-width: 0;
  overflow: visible;
  padding: 0;
  text-align: left;
  text-overflow: clip;
}

.player-strip-row-status .latency-meter,
.player-strip-row-status .fps-meter {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  font-size: 10px;
  letter-spacing: .01em;
}

.player-strip-row-status .fps-meter {
  border-left: 1px solid rgba(143, 168, 200, .22);
  padding-left: 10px;
}

.hud-grid {
  display: grid;
  gap: 8px;
  grid-template-columns: 1fr 1fr;
}

.hud-grid div {
  background: linear-gradient(180deg, rgba(28, 39, 56, .92), rgba(12, 18, 29, .96));
  border: 1px solid rgba(124, 151, 186, .28);
  border-radius: 6px;
  display: grid;
  gap: 5px;
  min-height: 58px;
  padding: 10px;
}

.hud-grid span {
  color: #aebdd1;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.hud-grid strong {
  color: #fff7d6;
  font-size: 15px;
  line-height: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}

.player-hud .latency-good {
  color: #31be7e;
}

.score-panel div {
  background: linear-gradient(180deg, rgba(28, 39, 56, .92), rgba(12, 18, 29, .96));
  border: 1px solid rgba(124, 151, 186, .22);
  border-radius: 6px;
  align-items: center;
  display: flex;
  gap: 6px;
  justify-content: space-between;
  min-height: 34px;
  padding: 7px 8px;
}

.score-panel span,
.player-hud h2,
.objective-panel h2,
.inventory h2 {
  color: #aebdd1;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.score-panel strong {
  font-size: 17px;
  line-height: 1;
}

.objective-panel,
.level-panel {
  background: rgba(5, 10, 18, .38);
  border-color: rgba(143, 168, 200, .22);
  box-shadow: none;
  display: grid;
  gap: 7px;
  min-height: 0;
  overflow: hidden;
  padding: 8px;
}

.level-status {
  background:
    radial-gradient(circle at 100% 0, rgba(255, 214, 106, .16), transparent 46%),
    linear-gradient(180deg, rgba(23, 32, 47, .92), rgba(11, 16, 26, .95));
  border: 1px solid rgba(255, 214, 106, .26);
  border-radius: 6px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .07);
  display: grid;
  gap: 6px;
  padding: clamp(6px, .75vh, 8px);
}

.level-row {
  align-items: center;
  display: flex;
  gap: 8px;
  justify-content: space-between;
}

.level-row span,
.level-panel small {
  color: #aebdd1;
  font-size: 11px;
  font-weight: 850;
}

.level-row span {
  letter-spacing: .05em;
  text-transform: uppercase;
}

.level-row strong {
  color: #ffe37e;
  font-size: 16px;
  font-weight: 1000;
  line-height: 1;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .62), 0 0 12px rgba(255, 214, 106, .26);
}

.level-bar {
  background:
    linear-gradient(180deg, rgba(0, 0, 0, .42), rgba(255, 255, 255, .05)),
    #162131;
  border: 1px solid rgba(255, 214, 106, .4);
  border-radius: 5px;
  box-shadow: inset 0 2px 3px rgba(0, 0, 0, .55), 0 1px 0 rgba(255, 255, 255, .08), 0 0 10px rgba(242, 201, 76, .12);
  height: clamp(8px, 1.15vh, 11px);
  overflow: hidden;
  padding: 1px;
  position: relative;
}

.level-bar::after {
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .42), transparent);
  content: "";
  height: 2px;
  left: 5px;
  opacity: .62;
  position: absolute;
  right: 5px;
  top: 3px;
}

.level-bar span {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .34), transparent 45%, rgba(0, 0, 0, .22) 100%),
    linear-gradient(90deg, #b97920, #f2c94c 58%, #fff0a8);
  border-radius: 3px;
  box-shadow: 0 0 12px rgba(242, 201, 76, .24);
  display: block;
  height: 100%;
  transition: width .22s ease;
  width: 0%;
}

.mission-focus-panel[hidden] {
  display: none !important;
}

.mission-focus-panel {
  background:
    linear-gradient(180deg, rgba(15, 24, 37, .92), rgba(7, 12, 20, .96));
  border: 1px solid rgba(143, 168, 200, .2);
  gap: 7px;
  padding: 8px;
}

.mission-focus-heading {
  align-items: center;
  display: flex;
  gap: 8px;
}

.mission-focus-heading > span {
  color: #c4d2e5;
  font-size: 10px;
  font-weight: 950;
  letter-spacing: .065em;
  text-transform: uppercase;
}

.mission-focus-list {
  display: grid;
  gap: 5px;
  min-height: 0;
}
.mission-focus-complete {
  display: none;
}

.mission-focus-list[hidden],
.mission-focus-complete[hidden] {
  display: none !important;
}

body:not(.mobile-capable) .mission-focus-panel.is-all-complete {
  background: transparent;
  border: 0;
  box-shadow: none;
  gap: 0;
  min-height: 0;
  padding: 0;
}

body:not(.mobile-capable) .mission-focus-panel.is-all-complete .mission-focus-heading {
  display: none;
}

body:not(.mobile-capable) .mission-focus-complete {
  align-items: center;
  background: linear-gradient(90deg, rgba(24, 48, 37, .74), rgba(13, 23, 20, .68));
  border: 0;
  border-radius: 6px;
  box-shadow: none;
  display: grid;
  gap: 7px;
  grid-template-columns: 22px minmax(0, 1fr);
  min-height: 40px;
  min-width: 0;
  overflow: hidden;
  padding: 7px 9px;
}

body:not(.mobile-capable) .mission-focus-complete-check {
  color: #367a53;
  display: block;
  font-size: 21px;
  font-weight: 1000;
  line-height: 1;
  text-align: center;
}

body:not(.mobile-capable) .mission-focus-complete strong {
  color: #cbd8d1;
  display: block;
  font-size: 11px;
  font-weight: 850;
  line-height: 1.15;
  min-width: 0;
  white-space: normal;
}

@media (max-height: 760px) {
  body:not(.mobile-capable) .mission-focus-complete {
    grid-template-columns: 20px minmax(0, 1fr);
    min-height: 36px;
    padding: 6px 8px;
  }

  body:not(.mobile-capable) .mission-focus-complete-check {
    font-size: 18px;
  }

  body:not(.mobile-capable) .mission-focus-complete strong {
    font-size: 10px;
  }
}


.mission-focus-entry {
  background:
    linear-gradient(90deg, rgba(255, 214, 106, .045), transparent 56%),
    rgba(23, 33, 48, .62);
  border: 1px solid rgba(143, 168, 200, .15);
  border-radius: 6px;
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 6px;
}

.mission-focus-entry[hidden] {
  display: none !important;
}

.mission-focus-entry:nth-child(n + 2) {
  display: none;
}

.mission-focus-entry-primary {
  background:
    radial-gradient(circle at 100% 0, rgba(255, 214, 106, .1), transparent 42%),
    linear-gradient(90deg, rgba(255, 214, 106, .075), transparent 64%),
    rgba(23, 33, 48, .72);
  border-color: rgba(255, 214, 106, .27);
}

.mission-focus-entry.is-ready {
  border-color: rgba(104, 229, 150, .5);
  box-shadow: inset 2px 0 0 rgba(104, 229, 150, .65);
}

.mission-focus-entry-row {
  align-items: center;
  display: grid;
  gap: 7px;
  grid-template-columns: minmax(0, 1fr) auto;
  min-width: 0;
}

.mission-focus-entry-row small {
  color: #dce8f7;
  display: block;
  font-size: 10px;
  font-weight: 850;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mission-focus-entry-row strong {
  color: #ffe58a;
  font-size: 9px;
  font-variant-numeric: tabular-nums;
  font-weight: 950;
  line-height: 1;
  white-space: nowrap;
}

.mission-focus-bar {
  border-color: rgba(255, 214, 106, .26);
  height: 6px;
  padding: 0;
}

.mission-focus-bar::after {
  display: none;
}

.mission-focus-bar span {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .3), transparent 45%, rgba(0, 0, 0, .18) 100%),
    linear-gradient(90deg, #c78622, #f2c94c 62%, #fff0a8);
  box-shadow: 0 0 12px rgba(242, 201, 76, .28);
}

.mission-focus-entry.is-ready .mission-focus-bar span {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .34), transparent 45%, rgba(0, 0, 0, .18) 100%),
    linear-gradient(90deg, #1f9f55, #41db76 62%, #9af7b0);
  box-shadow: 0 0 12px rgba(66, 227, 118, .28);
}

.mission-focus-panel > #roundStatus {
  display: none;
}

.gate-status {
  background: linear-gradient(180deg, rgba(23, 32, 47, .92), rgba(11, 16, 26, .95));
  border: 1px solid rgba(94, 190, 123, .28);
  border-radius: 6px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .07);
  display: grid;
  gap: 5px;
  padding: clamp(5px, .65vh, 7px);
  transition: border-color .18s ease, box-shadow .18s ease;
}

.gate-row {
  align-items: center;
  display: grid;
  gap: 6px;
  grid-template-columns: minmax(0, 1fr) auto;
}

.gate-status span,
.objective-panel small {
  color: #aebdd1;
  font-size: 11px;
  font-weight: 850;
}

.gate-status strong {
  color: #8df0a8;
  font-size: 13px;
  line-height: 1;
  white-space: nowrap;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .55), 0 0 10px rgba(74, 214, 111, .2);
  transition: color .18s ease, text-shadow .18s ease;
}

.gate-bar {
  background:
    linear-gradient(180deg, rgba(0, 0, 0, .42), rgba(255, 255, 255, .05)),
    #162131;
  border: 1px solid rgba(101, 218, 132, .45);
  border-radius: 5px;
  box-shadow: inset 0 2px 3px rgba(0, 0, 0, .55), 0 1px 0 rgba(255, 255, 255, .08), 0 0 10px rgba(67, 205, 103, .12);
  height: clamp(7px, 1.1vh, 10px);
  overflow: hidden;
  padding: 1px;
  position: relative;
  transition: border-color .18s ease, box-shadow .18s ease;
}

.gate-bar::after {
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .42), transparent);
  content: "";
  height: 2px;
  left: 5px;
  opacity: .65;
  position: absolute;
  right: 5px;
  top: 3px;
}

.gate-bar span {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .32), transparent 45%, rgba(0, 0, 0, .22) 100%),
    linear-gradient(90deg, #2dbd63, #55dd82 58%, #a9f7a7);
  border-radius: 3px;
  box-shadow: 0 0 12px rgba(74, 214, 111, .24);
  display: block;
  height: 100%;
  transition: background .18s ease, box-shadow .18s ease, width .22s ease;
  width: 100%;
}

.gate-bar.ally span {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .32), transparent 45%, rgba(0, 0, 0, .22) 100%),
    linear-gradient(90deg, #2dbd63, #55dd82 58%, #a9f7a7);
  box-shadow: 0 0 12px rgba(74, 214, 111, .24);
}

.gate-status.base-damaged {
  border-color: rgba(255, 74, 96, .72);
  box-shadow: 0 0 0 1px rgba(255, 74, 96, .18), 0 0 18px rgba(255, 74, 96, .18), inset 0 1px 0 rgba(255, 255, 255, .08);
}

.gate-status.base-damaged strong {
  color: #ff7184;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .55), 0 0 12px rgba(255, 74, 96, .35);
}

.gate-status.base-damaged .gate-bar {
  border-color: rgba(255, 74, 96, .74);
  box-shadow: inset 0 2px 3px rgba(0, 0, 0, .55), 0 0 14px rgba(255, 74, 96, .24);
}

.gate-status.base-damaged .gate-bar span,
.gate-status.base-damaged .gate-bar.ally span {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .32), transparent 45%, rgba(0, 0, 0, .22) 100%),
    linear-gradient(90deg, #d9364d, #ff5f72 58%, #ff9ca9);
  box-shadow: 0 0 12px rgba(255, 74, 96, .34);
}

.artifact-panel {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  display: grid;
  gap: 0;
  min-height: 0;
  overflow: hidden;
  padding: 0;
}

.artifact-list {
  display: grid;
  gap: 4px;
  grid-template-columns: minmax(0, 1fr);
  min-height: 0;
}

.artifact-card {
  align-items: center;
  background: linear-gradient(90deg, rgba(25, 36, 53, .7), rgba(7, 12, 20, .48));
  border: 1px solid rgba(143, 168, 200, .14);
  border-radius: 6px;
  color: #edf5ff;
  display: grid;
  gap: 7px;
  grid-template-columns: 24px minmax(0, 1fr);
  min-height: 34px;
  min-width: 0;
  padding: 4px 7px;
}

.artifact-card > span:last-child {
  align-items: center;
  display: grid;
  gap: 8px;
  grid-template-columns: minmax(0, 1fr) auto;
  min-width: 0;
}

.artifact-card strong,
.artifact-card small {
  display: block;
  line-height: 1.05;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.artifact-card strong {
  color: rgba(255, 249, 223, .86);
  font-size: 10px;
  font-weight: 900;
}

.artifact-card small {
  color: #d6e8fb;
  font-size: 10px;
  font-variant-numeric: tabular-nums;
  font-weight: 900;
  text-align: right;
}

.artifact-card .halo-icon,
.artifact-card .ankh-icon {
  height: 24px;
  width: 24px;
}

.artifact-card-ankh {
  border-color: rgba(231, 244, 255, .16);
}

body:not(.mobile-capable) .artifact-card-halo {
  background:
    radial-gradient(circle at 15% 0, rgba(255, 227, 128, .09), transparent 48%),
    linear-gradient(90deg, rgba(25, 36, 53, .82), rgba(7, 12, 20, .64));
  border-color: rgba(187, 156, 83, .28);
  grid-template-columns: 32px minmax(0, 1fr);
  min-height: 44px;
  overflow: hidden;
  padding: 5px 7px 5px 6px;
  position: relative;
  transition: background .18s ease, border-color .18s ease, box-shadow .18s ease;
}

body:not(.mobile-capable) .artifact-card-halo > .artifact-halo-copy {
  align-items: stretch;
  display: grid;
  gap: 4px;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto 9px;
  min-width: 0;
}

body:not(.mobile-capable) .artifact-halo-line {
  align-items: center;
  display: grid;
  gap: 8px;
  grid-template-columns: minmax(0, 1fr) auto;
  min-width: 0;
}

body:not(.mobile-capable) .artifact-card-halo strong {
  font-size: 10px;
  letter-spacing: .01em;
}

body:not(.mobile-capable) .artifact-card-halo small {
  color: #ffe08a;
  font-size: 10px;
  font-weight: 950;
  text-shadow: 0 1px 3px rgba(0, 0, 0, .72);
}

body:not(.mobile-capable) .artifact-halo-reserve {
  display: grid;
  gap: 4px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  height: 9px;
  min-width: 0;
}

body:not(.mobile-capable) .artifact-halo-reserve i {
  background: linear-gradient(180deg, rgba(28, 38, 52, .9), rgba(7, 12, 20, .96));
  border: 1px solid rgba(164, 181, 203, .2);
  border-radius: 3px;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, .68);
  display: block;
  min-width: 0;
  transition: background .18s ease, border-color .18s ease, box-shadow .18s ease, opacity .18s ease;
}

body:not(.mobile-capable) .artifact-card-halo[data-halo-count="1"] .artifact-halo-reserve i:nth-child(1),
body:not(.mobile-capable) .artifact-card-halo[data-halo-count="2"] .artifact-halo-reserve i:nth-child(-n + 2),
body:not(.mobile-capable) .artifact-card-halo[data-halo-count="3"] .artifact-halo-reserve i {
  background: linear-gradient(180deg, #fff0a3, #e5a828 62%, #9b6114);
  border-color: rgba(255, 238, 167, .82);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .54),
    0 0 7px rgba(245, 190, 56, .34);
}

body:not(.mobile-capable) .artifact-card-halo[data-halo-state="empty"] .halo-icon {
  filter: grayscale(.86) brightness(.62);
  opacity: .36;
}

body:not(.mobile-capable) .artifact-card-halo[data-halo-state="empty"] small {
  color: rgba(190, 202, 218, .68);
}

body:not(.mobile-capable) .artifact-card-halo[data-halo-state="full"] {
  background:
    radial-gradient(circle at 13% 20%, rgba(255, 237, 170, .22), transparent 38%),
    linear-gradient(90deg, rgba(90, 64, 18, .66), rgba(30, 26, 18, .82));
  border-color: rgba(255, 220, 112, .78);
  box-shadow:
    inset 0 0 0 1px rgba(255, 244, 194, .12),
    0 0 12px rgba(240, 184, 48, .16);
}

body:not(.mobile-capable) .artifact-card-halo[data-halo-state="full"] small {
  color: #fff1a7;
}

body:not(.mobile-capable) .artifact-card-halo .halo-icon,
body:not(.mobile-capable) .halo-shop-overlay .suggestion-halo-icon,
body:not(.mobile-capable) .mobile-shop-halo-item .halo-icon {
  background: url("./assets/ui/artifacts/halo/v1/halo-emblem-64.png?v=5888c89882c1dfbed720") center / contain no-repeat;
  border-radius: 0;
  filter: drop-shadow(0 0 5px rgba(245, 190, 56, .3));
}

body:not(.mobile-capable) .artifact-card-halo .halo-icon::before,
body:not(.mobile-capable) .artifact-card-halo .halo-icon::after,
body:not(.mobile-capable) .halo-shop-overlay .suggestion-halo-icon::before,
body:not(.mobile-capable) .halo-shop-overlay .suggestion-halo-icon::after,
body:not(.mobile-capable) .mobile-shop-halo-item .halo-icon::before,
body:not(.mobile-capable) .mobile-shop-halo-item .halo-icon::after {
  content: none;
  display: none;
}

body:not(.mobile-capable) .artifact-card-halo .halo-icon {
  height: 32px;
  width: 32px;
}

body:not(.mobile-capable) .halo-shop-overlay .suggestion-halo-icon {
  height: 28px;
  width: 28px;
}

body:not(.mobile-capable) .mobile-shop-halo-item .halo-icon {
  height: 34px;
  width: 34px;
}

body:not(.mobile-capable) .artifact-card-ankh {
  background:
    radial-gradient(circle at 15% 8%, rgba(218, 238, 255, .08), transparent 46%),
    linear-gradient(90deg, rgba(25, 36, 53, .82), rgba(7, 12, 20, .64));
  border-color: rgba(183, 207, 232, .24);
  grid-template-columns: 32px minmax(0, 1fr);
  min-height: 44px;
  overflow: hidden;
  padding: 5px 7px 5px 6px;
  position: relative;
  transition: background .18s ease, border-color .18s ease, box-shadow .18s ease;
}

body:not(.mobile-capable) .artifact-card-ankh > .artifact-ankh-copy {
  align-items: stretch;
  display: grid;
  gap: 2px;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto auto 6px;
  min-width: 0;
}

body:not(.mobile-capable) .artifact-ankh-line {
  align-items: center;
  display: grid;
  gap: 8px;
  grid-template-columns: minmax(0, 1fr) auto;
  min-width: 0;
}

body:not(.mobile-capable) .artifact-card-ankh strong,
body:not(.mobile-capable) .artifact-card-ankh .artifact-ankh-line small {
  font-size: 10px;
}

body:not(.mobile-capable) .artifact-card-ankh .artifact-ankh-line small {
  color: #eaf5ff;
  font-weight: 950;
  text-shadow: 0 1px 3px rgba(0, 0, 0, .72);
}

body:not(.mobile-capable) .artifact-card-ankh .artifact-ankh-benefit {
  color: rgba(205, 220, 237, .72);
  font-size: 8px;
  font-weight: 850;
  letter-spacing: 0;
  line-height: 1;
  text-align: left;
}

body:not(.mobile-capable) .artifact-ankh-reserve {
  background: linear-gradient(180deg, rgba(4, 8, 14, .9), rgba(14, 22, 32, .96));
  border: 1px solid rgba(175, 199, 224, .24);
  border-radius: 3px;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, .76);
  display: block;
  height: 6px;
  min-width: 0;
  overflow: hidden;
}

body:not(.mobile-capable) .artifact-ankh-reserve i {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .98), rgba(224, 241, 255, .95) 58%, rgba(150, 184, 214, .88));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .72),
    0 0 8px rgba(218, 240, 255, .58);
  display: block;
  height: 100%;
  min-width: 0;
  transition: width .22s linear;
  width: 0;
}

body:not(.mobile-capable) .artifact-card-ankh[data-ankh-state="active"] {
  background:
    radial-gradient(circle at 14% 24%, rgba(230, 246, 255, .18), transparent 40%),
    linear-gradient(90deg, rgba(52, 72, 94, .78), rgba(12, 19, 29, .9));
  border-color: rgba(218, 239, 255, .58);
  box-shadow:
    inset 0 0 0 1px rgba(244, 251, 255, .08),
    0 0 10px rgba(195, 225, 247, .12);
}

body:not(.mobile-capable) .artifact-card-ankh[data-ankh-state="active"] .artifact-ankh-benefit {
  color: rgba(229, 241, 251, .86);
}

body:not(.mobile-capable) .artifact-card-ankh[data-ankh-state="inactive"] .ankh-icon {
  filter: grayscale(.94) brightness(.5);
  opacity: .4;
}

body:not(.mobile-capable) .artifact-card-ankh[data-ankh-state="inactive"] .artifact-ankh-line small,
body:not(.mobile-capable) .artifact-card-ankh[data-ankh-state="inactive"] .artifact-ankh-benefit {
  color: rgba(179, 195, 214, .56);
}

body:not(.mobile-capable) .artifact-card-ankh .ankh-icon,
body:not(.mobile-capable) .halo-shop-overlay .suggestion-ankh-icon,
body:not(.mobile-capable) .mobile-shop-ankh-item .ankh-icon {
  background: url("./assets/ui/artifacts/ankh/v1/ankh-emblem-64.png?v=a8c6ac96293404fcb50e") center / contain no-repeat;
  border-radius: 0;
  filter: drop-shadow(0 0 5px rgba(218, 239, 255, .3));
}

body:not(.mobile-capable) .artifact-card-ankh .ankh-icon::before,
body:not(.mobile-capable) .artifact-card-ankh .ankh-icon::after,
body:not(.mobile-capable) .halo-shop-overlay .suggestion-ankh-icon::before,
body:not(.mobile-capable) .halo-shop-overlay .suggestion-ankh-icon::after,
body:not(.mobile-capable) .mobile-shop-ankh-item .ankh-icon::before,
body:not(.mobile-capable) .mobile-shop-ankh-item .ankh-icon::after {
  content: none;
  display: none;
}

body:not(.mobile-capable) .artifact-card-ankh .ankh-icon {
  height: 32px;
  width: 32px;
}

body:not(.mobile-capable) .halo-shop-overlay .suggestion-ankh-icon {
  height: 28px;
  width: 28px;
}

body:not(.mobile-capable) .mobile-shop-ankh-item .ankh-icon {
  height: 34px;
  width: 34px;
}
.item-shop {
  background: rgba(5, 10, 18, .38);
  border: 1px solid rgba(143, 168, 200, .22);
  border-radius: 8px;
  box-shadow: none;
  display: grid;
  min-height: 0;
  overflow: hidden;
  padding: 6px;
}

.item-card {
  align-items: center;
  background: linear-gradient(180deg, rgba(29, 39, 54, .96), rgba(12, 18, 29, .98));
  border: 1px solid rgba(135, 160, 194, .22);
  border-radius: 7px;
  color: #edf5ff;
  cursor: pointer;
  display: grid;
  gap: 8px;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  min-height: 44px;
  overflow: hidden;
  padding: 6px;
  position: relative;
  text-align: left;
}

.item-card:disabled {
  cursor: not-allowed;
  opacity: .58;
}

.item-card.can-buy {
  border-color: rgba(255, 214, 106, .64);
  box-shadow: 0 0 0 1px rgba(255, 214, 106, .2), 0 0 18px rgba(255, 214, 106, .16);
  opacity: 1;
}

.item-card.can-buy::after {
  align-items: center;
  animation: runeBuyPulse 1.25s ease-in-out infinite;
  background: radial-gradient(circle, #fff4bf 0 24%, #f1bd3b 25% 68%, #8a5616 69% 100%);
  border: 1px solid rgba(255, 247, 207, .9);
  border-radius: 50%;
  box-shadow: 0 0 14px rgba(255, 214, 106, .34);
  color: #251708;
  content: "+";
  display: flex;
  font-size: 14px;
  font-weight: 1000;
  height: 20px;
  justify-content: center;
  left: 24px;
  line-height: 1;
  pointer-events: none;
  position: absolute;
  top: 4px;
  width: 20px;
}

.item-card.maxed {
  border-color: rgba(255, 214, 106, .38);
}

.item-copy {
  min-width: 0;
}

.item-copy strong {
  display: block;
  font-size: 12px;
  font-weight: 950;
  line-height: 1.1;
}

.item-copy small {
  color: #aebdd1;
  display: block;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.15;
}

.item-count {
  align-items: center;
  background: rgba(5, 9, 15, .72);
  border: 1px solid rgba(255, 214, 106, .28);
  border-radius: 999px;
  color: #ffe8a4;
  display: inline-flex;
  font-size: 10px;
  font-weight: 950;
  justify-content: center;
  min-width: 38px;
  padding: 4px 7px;
  white-space: nowrap;
}

.halo-icon {
  border-radius: 50%;
  display: inline-block;
  height: 30px;
  position: relative;
  width: 30px;
}

.halo-icon::before {
  background:
    radial-gradient(ellipse at 50% 42%, transparent 34%, #fff7b6 35% 46%, #f2bc38 47% 60%, transparent 61%),
    radial-gradient(circle at 50% 50%, rgba(255, 226, 92, .22), transparent 65%);
  border-radius: 50%;
  content: "";
  inset: 0;
  position: absolute;
}

.halo-icon::after {
  background: radial-gradient(circle, #fffbe1, #f0bd38 56%, #895715 57%);
  border-radius: 50%;
  box-shadow:
    -9px -1px 0 -3px #fff2a2,
    9px -1px 0 -3px #fff2a2,
    0 0 12px rgba(255, 214, 106, .48);
  content: "";
  height: 8px;
  left: 11px;
  position: absolute;
  top: 11px;
  width: 8px;
}

.ankh-icon {
  display: inline-block;
  height: 30px;
  position: relative;
  width: 30px;
}

.ankh-icon::before {
  background:
    radial-gradient(ellipse at 50% 24%, transparent 0 28%, #f7fbff 29% 42%, #b8c7d8 43% 58%, transparent 59%),
    linear-gradient(90deg, transparent 0 34%, #f7fbff 35% 65%, transparent 66%) 50% 52% / 100% 28% no-repeat,
    linear-gradient(180deg, #f7fbff 0 68%, #aab8ca 69% 100%) 50% 52% / 28% 54% no-repeat;
  border-radius: 45% 45% 52% 52%;
  content: "";
  inset: 0;
  filter: drop-shadow(0 0 8px rgba(231, 244, 255, .28));
  position: absolute;
}

.ankh-icon::after {
  background: radial-gradient(circle, #ffffff, #bed0e4 58%, #6d7f95 59%);
  border-radius: 50%;
  box-shadow: 0 0 10px rgba(231, 244, 255, .36);
  content: "";
  height: 6px;
  left: 12px;
  position: absolute;
  top: 6px;
  width: 6px;
}

.inventory {
  background: rgba(5, 10, 18, .38);
  border-color: rgba(143, 168, 200, .22);
  box-shadow: none;
  display: grid;
  gap: 6px;
  grid-template-rows: repeat(5, minmax(0, 1fr));
  min-height: 0;
  overflow: hidden;
  padding: 8px;
}

.rune {
  align-items: center;
  background: linear-gradient(180deg, rgba(27, 38, 55, .96), rgba(12, 18, 29, .98));
  border: 1px solid rgba(135, 160, 194, .22);
  border-radius: 6px;
  color: #edf5ff;
  cursor: pointer;
  display: grid;
  gap: clamp(6px, .65vw, 8px);
  grid-template-columns: clamp(28px, 3.9vh, 34px) minmax(0, 1fr);
  height: 100%;
  min-height: 0;
  padding: clamp(4px, .72vh, 6px);
  position: relative;
  overflow: hidden;
  text-align: left;
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.rune:hover,
.rune.active {
  border-color: #ffd66a;
}

.rune:disabled {
  cursor: not-allowed;
  opacity: .58;
}

.rune.is-passive:disabled {
  border-color: rgba(137, 226, 255, .48);
  box-shadow: inset 0 0 14px rgba(72, 176, 255, .1), 0 0 0 1px rgba(137, 226, 255, .08);
  cursor: default;
  filter: none;
  opacity: 1;
}

.rune.is-passive .rune-hotkey {
  background: rgba(18, 70, 83, .9);
  border-color: rgba(137, 226, 255, .5);
  color: #d9fbff;
}

.rune.locked {
  background: linear-gradient(180deg, rgba(19, 25, 35, .96), rgba(8, 12, 19, .98));
  border-color: rgba(103, 121, 148, .16);
  color: rgba(237, 245, 255, .66);
  filter: saturate(.62);
}

.rune.locked .rune-icon {
  filter: grayscale(.7) brightness(.62);
}

.rune.is-hidden-by-loadout {
  display: none !important;
}

.rune.no-mana {
  border-color: rgba(85, 144, 220, .2);
  filter: saturate(.58) brightness(.78);
}

.rune.no-mana .rune-icon {
  filter: grayscale(.45) brightness(.66) sepia(.18) hue-rotate(170deg);
}

.rune.can-buy {
  border-color: rgba(255, 214, 106, .58);
  box-shadow: 0 0 0 1px rgba(255, 214, 106, .22), 0 0 18px rgba(255, 214, 106, .15);
  filter: none;
  opacity: 1;
}

.rune.can-buy::before {
  align-items: center;
  animation: runeBuyPulse 1.25s ease-in-out infinite;
  background: radial-gradient(circle, #fff4bf 0 24%, #f1bd3b 25% 68%, #8a5616 69% 100%);
  border: 1px solid rgba(255, 247, 207, .9);
  border-radius: 50%;
  box-shadow: 0 0 14px rgba(255, 214, 106, .34);
  color: #251708;
  content: "+";
  display: flex;
  font-size: 15px;
  font-weight: 1000;
  height: 22px;
  justify-content: center;
  left: 4px;
  line-height: 1;
  pointer-events: none;
  position: absolute;
  top: 4px;
  width: 22px;
  z-index: 3;
}

@keyframes runeBuyPulse {
  0%, 100% {
    transform: scale(.94);
  }
  50% {
    transform: scale(1.08);
  }
}

.rune.cooldown {
  border-color: rgba(143, 168, 200, .18);
  box-shadow: inset 0 0 0 1px rgba(6, 10, 16, .5);
  filter: saturate(.68);
  transform: none;
}

.rune.cooldown::after {
  content: "";
  background: repeating-linear-gradient(
    -45deg,
    rgba(255, 255, 255, .08) 0 8px,
    rgba(255, 255, 255, .02) 8px 16px
  );
  inset: 0;
  pointer-events: none;
  position: absolute;
  z-index: 0;
}

.side-panel .rune.cooldown {
  border-color: rgba(224, 92, 99, .48);
  box-shadow: inset 0 0 0 1px rgba(78, 8, 18, .58), 0 0 12px rgba(132, 21, 34, .14);
  filter: saturate(.82);
}

.side-panel .rune.cooldown:disabled {
  opacity: .96;
}

.side-panel .rune.cooldown::after {
  background:
    linear-gradient(180deg, rgba(226, 76, 82, .72), rgba(137, 20, 39, .82) 62%, rgba(82, 8, 22, .9)),
    linear-gradient(90deg, rgba(255, 183, 183, .18), transparent 42%);
  opacity: 1;
  transform: scaleY(var(--cooldown-remaining, 0));
  transform-origin: center bottom;
  will-change: transform;
}

.side-panel .rune.cooldown .rune-cooldown {
  background: rgba(42, 5, 13, .9);
  border-color: rgba(255, 164, 170, .68);
  box-shadow: 0 4px 12px rgba(0, 0, 0, .34), 0 0 9px rgba(191, 47, 59, .18);
  color: #fff4f4;
  font-variant-numeric: tabular-nums;
}

.side-panel .rune.cooldown-ready-flash {
  animation: desktopRuneReadyCard 280ms ease-out;
}

.side-panel .rune.cooldown-ready-flash::after {
  animation: desktopRuneReadyWash 280ms ease-out;
  background: radial-gradient(circle at 40% 48%, rgba(255, 255, 255, .98), rgba(255, 239, 184, .78) 38%, rgba(255, 218, 112, .18) 68%, transparent 82%);
  content: "";
  inset: 0;
  opacity: 0;
  pointer-events: none;
  position: absolute;
  transform: none;
  z-index: 3;
}

@keyframes desktopRuneReadyCard {
  0%, 100% {
    border-color: rgba(135, 160, 194, .22);
    box-shadow: none;
  }
  38% {
    border-color: rgba(255, 247, 211, .92);
    box-shadow: 0 0 0 1px rgba(255, 247, 211, .48), 0 0 18px rgba(255, 224, 136, .42), inset 0 0 15px rgba(255, 255, 255, .18);
  }
}

@keyframes desktopRuneReadyWash {
  0%, 100% { opacity: 0; }
  38% { opacity: .68; }
}

@media (prefers-reduced-motion: reduce) {
  .side-panel .rune.cooldown-ready-flash,
  .side-panel .rune.cooldown-ready-flash::after {
    animation: none !important;
  }
  .side-panel .rune.cooldown-ready-flash::after {
    opacity: 0;
  }
}

.rune.cooldown .rune-icon {
  filter: grayscale(.4) brightness(.72);
}

.rune-icon,
.rune > span:not(.rune-hotkey):not(.rune-cooldown) {
  min-width: 0;
  position: relative;
  z-index: 1;
}

.rune-hotkey {
  align-items: center;
  background: rgba(5, 9, 15, .72);
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 4px;
  color: #ffe8a4;
  display: flex;
  font-size: 10px;
  font-weight: 900;
  height: 17px;
  justify-content: center;
  line-height: 1;
  position: absolute;
  right: 6px;
  top: 5px;
  width: 17px;
  z-index: 1;
}

.rune-cooldown {
  align-items: center;
  background: linear-gradient(180deg, rgba(44, 28, 12, .92), rgba(12, 8, 4, .92));
  border: 1px solid rgba(255, 214, 106, .58);
  border-radius: 999px;
  bottom: 5px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, .28), inset 0 1px 0 rgba(255, 255, 255, .12);
  color: #ffe7a3;
  display: inline-flex;
  font-size: 11px;
  font-weight: 900;
  justify-content: center;
  letter-spacing: 0;
  line-height: 1;
  min-width: 42px;
  padding: 4px 7px;
  pointer-events: none;
  position: absolute;
  right: 6px;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .6);
  z-index: 2;
}

.rune-cooldown[hidden] {
  display: none !important;
}

.rune.active {
  background:
    linear-gradient(180deg, rgba(44, 61, 86, .98), rgba(15, 23, 37, .98)),
    radial-gradient(circle at 20% 50%, rgba(255, 214, 106, .24), transparent 52%);
  box-shadow: 0 0 0 1px rgba(255, 214, 106, .34), 0 0 18px rgba(255, 214, 106, .16), inset 0 1px 0 rgba(255, 255, 255, .12);
  transform: translateY(-1px);
}

.rune-icon {
  border: 2px solid rgba(255, 255, 255, .16);
  border-radius: 5px;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .22), 0 5px 0 rgba(0, 0, 0, .16);
  display: block;
  height: clamp(28px, 3.9vh, 34px);
  image-rendering: pixelated;
  position: relative;
  width: clamp(28px, 3.9vh, 34px);
}

.rune-icon::before,
.rune-icon::after {
  content: "";
  position: absolute;
}

.rune-heal .rune-icon {
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .28) 0 14%, transparent 15%),
    linear-gradient(180deg, #55bdff 0 48%, #257bc9 49% 100%);
}

.rune-heal .rune-icon::before {
  background: #f4fbff;
  box-shadow: 0 0 0 2px rgba(13, 57, 108, .28);
  height: 22px;
  left: 14px;
  top: 5px;
  width: 7px;
}

.rune-heal .rune-icon::after {
  background: #f4fbff;
  box-shadow: 0 0 0 2px rgba(13, 57, 108, .28);
  height: 7px;
  left: 7px;
  top: 13px;
  width: 22px;
}

.rune-bolt .rune-icon {
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .26) 0 14%, transparent 15%),
    linear-gradient(180deg, #8c97a6 0 48%, #424b57 49% 100%);
}

.rune-bolt .rune-icon::before {
  background: #202631;
  box-shadow: 3px 0 0 rgba(255, 255, 255, .16);
  clip-path: polygon(42% 0, 76% 0, 60% 36%, 84% 36%, 34% 100%, 47% 54%, 20% 54%);
  height: 26px;
  left: 9px;
  top: 5px;
  width: 19px;
}

.rune-magic-wall .rune-icon {
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .34) 0 16%, transparent 17%),
    linear-gradient(180deg, #b9f3ff 0 48%, #36a9d7 49% 100%);
}

.rune-magic-wall .rune-icon::before {
  background: #effcff;
  clip-path: polygon(50% 0, 78% 72%, 50% 100%, 22% 72%);
  filter: drop-shadow(4px 0 0 rgba(31, 143, 190, .72));
  height: 26px;
  left: 10px;
  top: 5px;
  width: 16px;
}

.rune-magic-wall .rune-icon::after {
  background: rgba(255, 255, 255, .76);
  height: 14px;
  left: 17px;
  top: 9px;
  width: 2px;
}

.rune-haste .rune-icon {
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .26) 0 14%, transparent 15%),
    linear-gradient(180deg, #e8c56a 0 48%, #8d5a24 49% 100%);
}

.rune-haste .rune-icon::before {
  background: #28313d;
  border-radius: 5px 8px 6px 4px;
  box-shadow:
    -6px 11px 0 -2px #1b222c,
    3px 11px 0 -2px #1b222c,
    0 0 0 2px rgba(255, 236, 164, .2);
  height: 14px;
  left: 8px;
  top: 14px;
  transform: skewX(-9deg);
  width: 22px;
}

.rune-haste .rune-icon::after {
  background: #fff4bf;
  clip-path: polygon(0 46%, 34% 30%, 20% 0, 58% 24%, 100% 6%, 72% 44%, 100% 76%, 55% 64%, 20% 100%, 34% 66%);
  filter: drop-shadow(0 2px 0 rgba(95, 69, 18, .34));
  height: 19px;
  left: 17px;
  top: 5px;
  transform: rotate(-10deg);
  width: 15px;
}

.rune-explosion .rune-icon {
  background:
    radial-gradient(circle at 50% 34%, rgba(255, 255, 255, .34), transparent 26%),
    linear-gradient(180deg, #d8a7ff 0 47%, #6f34c8 48% 100%);
}

.rune-explosion .rune-icon::before {
  background: #f6e8ff;
  box-shadow:
    0 0 0 2px rgba(95, 44, 164, .28),
    0 0 12px rgba(205, 132, 255, .8);
  clip-path: polygon(50% 0, 62% 36%, 100% 50%, 62% 64%, 50% 100%, 38% 64%, 0 50%, 38% 36%);
  height: 25px;
  left: 6px;
  top: 6px;
  width: 25px;
}

.rune-explosion .rune-icon::after {
  background: #8b42ff;
  border-radius: 999px;
  box-shadow:
    0 0 0 2px rgba(255, 255, 255, .36),
    0 0 13px rgba(139, 66, 255, .95);
  height: 9px;
  left: 14px;
  top: 14px;
  width: 9px;
}

.rune-lance .rune-icon {
  background:
    radial-gradient(circle at 50% 34%, rgba(255, 249, 209, .34), transparent 26%),
    linear-gradient(180deg, #b884ff 0 47%, #4a1c8b 48% 100%);
}

.rune-lance .rune-icon::before {
  background: linear-gradient(135deg, #f7d776 0 34%, #fff8d4 35% 62%, #c78bff 63% 100%);
  border-radius: 999px;
  box-shadow:
    0 0 0 2px rgba(68, 22, 129, .34),
    0 0 12px rgba(220, 151, 255, .82);
  height: 27px;
  left: 16px;
  top: 5px;
  transform: rotate(42deg);
  width: 5px;
}

.rune-lance .rune-icon::after {
  background: #fff2a6;
  clip-path: polygon(50% 0, 100% 58%, 68% 58%, 68% 100%, 32% 100%, 32% 58%, 0 58%);
  filter: drop-shadow(0 0 5px rgba(255, 223, 123, .72));
  height: 13px;
  left: 20px;
  top: 2px;
  transform: rotate(42deg);
  width: 11px;
}

.rune-heal .rune-icon,
.rune-bolt .rune-icon,
.rune-magic-wall .rune-icon,
.rune-haste .rune-icon,
.rune-explosion .rune-icon,
.rune-lance .rune-icon,
.rune-flash .rune-icon,
.rune-storm .rune-icon,
.rune-mana-flow .rune-icon,
.rune-cooldown-reset .rune-icon,
.rune-barrier .rune-icon,
.rune-fury .rune-icon,
.rune-bulwark .rune-icon,
.rune-taunt .rune-icon,
.rune-vis .rune-icon,
.rune-full-heal .rune-icon {
  background-position: center;
  background-repeat: no-repeat;
  background-size: 88% auto;
  image-rendering: auto;
}

.rune-heal .rune-icon::before,
.rune-heal .rune-icon::after,
.rune-bolt .rune-icon::before,
.rune-bolt .rune-icon::after,
.rune-magic-wall .rune-icon::before,
.rune-magic-wall .rune-icon::after,
.rune-haste .rune-icon::before,
.rune-haste .rune-icon::after,
.rune-explosion .rune-icon::before,
.rune-explosion .rune-icon::after,
.rune-lance .rune-icon::before,
.rune-lance .rune-icon::after,
.rune-flash .rune-icon::before,
.rune-flash .rune-icon::after,
.rune-storm .rune-icon::before,
.rune-storm .rune-icon::after,
.rune-mana-flow .rune-icon::before,
.rune-mana-flow .rune-icon::after,
.rune-full-heal .rune-icon::before,
.rune-barrier .rune-icon::before,
.rune-barrier .rune-icon::after,
.rune-fury .rune-icon::before,
.rune-fury .rune-icon::after,
.rune-bulwark .rune-icon::before,
.rune-bulwark .rune-icon::after,
.rune-taunt .rune-icon::before,
.rune-taunt .rune-icon::after,
.rune-vis .rune-icon::before,
.rune-vis .rune-icon::after,
.rune-cooldown-reset .rune-icon::before,
.rune-cooldown-reset .rune-icon::after,
.rune-full-heal .rune-icon::after {
  content: none;
  display: none;
}

.rune-flash .rune-icon {
  background:
    url("./assets/ui/spells/spell-flash.webp?v=b0100feb9dc847e36e45") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(255, 218, 68, .24), transparent 62%),
    linear-gradient(180deg, rgba(72, 47, 12, .98), rgba(16, 11, 7, .98));
}

.rune-heal .rune-icon {
  background:
    url("./assets/ui/spells/spell-heal.webp?v=84186de35011c62d1389") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 52%, rgba(36, 174, 255, .2), transparent 62%),
    linear-gradient(180deg, rgba(20, 52, 66, .98), rgba(6, 13, 22, .98));
}

.rune-bolt .rune-icon {
  background:
    url("./assets/ui/spells/spell-sd.webp?v=16c67ccbd36bcc3d4500") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(190, 200, 214, .18), transparent 60%),
    linear-gradient(180deg, rgba(36, 40, 48, .98), rgba(8, 9, 12, .98));
}

.rune-magic-wall .rune-icon {
  background:
    url("./assets/ui/spells/spell-magic-wall.webp?v=9aad19117cd373dfbdd6") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(66, 204, 255, .18), transparent 60%),
    linear-gradient(180deg, rgba(14, 45, 68, .98), rgba(5, 13, 25, .98));
}

.rune-haste .rune-icon {
  background:
    url("./assets/ui/spells/spell-haste.webp?v=07b5dab5e34e78080145") center / 90% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(77, 224, 255, .16), transparent 62%),
    linear-gradient(180deg, rgba(55, 43, 20, .98), rgba(13, 12, 12, .98));
}

.rune-explosion .rune-icon {
  background:
    url("./assets/ui/spells/spell-explosion.webp?v=62fff58b798a38b0c700") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(255, 108, 34, .2), transparent 62%),
    linear-gradient(180deg, rgba(69, 25, 17, .98), rgba(17, 8, 9, .98));
}

.rune-lance .rune-icon {
  background:
    url("./assets/ui/spells/spell-rune-lance.webp?v=59abb78279a12b12ed5b") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(190, 100, 255, .22), transparent 62%),
    linear-gradient(180deg, rgba(48, 22, 76, .98), rgba(12, 8, 22, .98));
}

.rune-storm .rune-icon {
  background:
    url("./assets/ui/spells/spell-storm.webp?v=b7c0f59cead14324afaa") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(77, 222, 255, .23), transparent 62%),
    linear-gradient(180deg, rgba(14, 45, 74, .98), rgba(6, 13, 28, .98));
}

.rune-mana-flow .rune-icon {
  background:
    url("./assets/ui/spells/spell-mana-flow.webp?v=e1e29d941ba5faaad737") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(85, 226, 255, .28), transparent 62%),
    linear-gradient(180deg, rgba(48, 20, 77, .98), rgba(7, 14, 31, .98));
}

.rune-full-heal .rune-icon {
  background:
    url("./assets/ui/spells/spell-full-heal.webp?v=0e0ce7641f0ef53bac8d") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(116, 255, 153, .24), transparent 62%),
    linear-gradient(180deg, rgba(30, 67, 39, .98), rgba(11, 18, 13, .98));
}


.rune-barrier .rune-icon {
  background:
    url("./assets/ui/spells/spell-barrier.webp?v=8786342c8f96a191688d") center / 90% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(92, 230, 255, .28), transparent 62%),
    linear-gradient(180deg, rgba(30, 31, 86, .98), rgba(7, 14, 32, .98));
}

.rune-fury .rune-icon {
  background:
    url("./assets/ui/spells/spell-fury.webp?v=39831c84f176b67c20df") center / 90% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(255, 89, 38, .28), transparent 62%),
    linear-gradient(180deg, rgba(83, 24, 31, .98), rgba(25, 7, 15, .98));
}

.rune-bulwark .rune-icon {
  background:
    url("./assets/ui/spells/spell-bulwark.webp?v=a02218797a9082ee60ed") center / 90% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(73, 207, 255, .28), transparent 62%),
    linear-gradient(180deg, rgba(22, 54, 91, .98), rgba(6, 16, 34, .98));
}

.rune-taunt .rune-icon {
  background:
    url("./assets/ui/spells/spell-taunt.webp?v=57f05f2be9e39315bce0") center / 90% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(255, 142, 62, .3), transparent 62%),
    linear-gradient(180deg, rgba(81, 34, 27, .98), rgba(24, 9, 16, .98));
}

.rune-vis .rune-icon {
  background:
    url("./assets/ui/spells/spell-vis.webp?v=7af46d5f1e1c08d65f0e") center / 90% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(92, 235, 255, .32), transparent 62%),
    linear-gradient(180deg, rgba(32, 31, 91, .98), rgba(7, 11, 31, .98));
}

.rune-cooldown-reset .rune-icon {
  background:
    url("./assets/ui/spells/spell-cooldown-reset.webp?v=36db95a101ef55952b18") center / 88% auto no-repeat,
    radial-gradient(circle at 50% 54%, rgba(88, 226, 255, .26), transparent 62%),
    linear-gradient(180deg, rgba(31, 28, 79, .98), rgba(7, 13, 31, .98));
}
.rune strong {
  display: block;
  font-size: clamp(12px, 1.65vh, 14px);
  line-height: 1.1;
  overflow: hidden;
  padding-right: 18px;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-shadow: 0 1px 0 rgba(0, 0, 0, .45);
}

.rune small {
  color: #aebdd1;
  display: block;
  font-size: clamp(9px, 1.35vh, 11px);
  font-weight: 800;
  margin-top: 2px;
  overflow: hidden;
  padding-right: 44px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.objective-panel small {
  display: none;
}

@media (max-width: 900px) {
  :root {
    --shell-pad: 6px;
    --layout-gap: 6px;
    --hud-width: clamp(174px, 30vw, 220px);
  }

  .gate-shell {
    padding: var(--shell-pad);
  }

  .game-layout {
    grid-template-columns: minmax(0, 1fr) var(--hud-width);
    height: 100%;
    min-height: 0;
    overflow: hidden;
  }

  .arena-panel {
    min-height: 0;
  }

  #gameCanvas {
    min-height: 0;
  }

  .side-panel {
    height: 100%;
    overflow: hidden;
  }
}

body:not(.mobile-capable) .side-panel[data-mission-capacity="2"] .mission-focus-entry:nth-child(2):not([hidden]),
body:not(.mobile-capable) .side-panel[data-mission-capacity="3"] .mission-focus-entry:nth-child(2):not([hidden]),
body:not(.mobile-capable) .side-panel[data-mission-capacity="3"] .mission-focus-entry:nth-child(3):not([hidden]) {
  display: grid;
}

@media (max-height: 760px) {
  :root {
    --shell-pad: 6px;
    --layout-gap: 6px;
  }

  .side-panel {
    gap: 5px;
    grid-template-rows: auto auto auto auto minmax(0, 1fr);
    padding: 6px;
  }

  .player-hud,
  .objective-panel,
  .level-panel,
  .inventory {
    padding: 6px;
  }

  .player-strip {
    gap: 5px;
    padding: 5px;
  }

  .resource-bar {
    height: 14px;
  }

  .artifact-card {
    min-height: 30px;
    padding-block: 3px;
  }
  body:not(.mobile-capable) .artifact-card-halo,
  body:not(.mobile-capable) .artifact-card-ankh {
    min-height: 40px;
    padding-block: 4px;
  }

  body:not(.mobile-capable) .artifact-card-halo > .artifact-halo-copy {
    gap: 3px;
    grid-template-rows: auto 8px;
  }

  body:not(.mobile-capable) .artifact-halo-reserve {
    height: 8px;
  }

  body:not(.mobile-capable) .artifact-card-ankh > .artifact-ankh-copy {
    grid-template-rows: auto auto 5px;
  }

  body:not(.mobile-capable) .artifact-ankh-reserve {
    height: 5px;
  }

  .hud-menu-button {
    padding: 4px 6px;
  }

  .kill-panel-label {
    font-size: 8px;
  }

  .kill-row {
    gap: 3px;
    grid-template-columns: 12px 9px minmax(0, 1fr) auto;
    padding: 0 2px;
  }

  .gate-status span,
  .objective-panel small,
  .level-panel small {
    font-size: 10px;
  }

  .gate-status strong {
    font-size: 11px;
  }

  .mission-focus-panel {
    gap: 4px;
    padding: 5px;
  }

  .mission-focus-list {
    gap: 3px;
  }

  .mission-focus-entry {
    gap: 4px;
    padding: 4px 5px;
  }

  .mission-focus-bar {
    height: 5px;
  }

  .inventory {
    gap: 5px;
  }
}

@media (max-height: 640px) {
  .side-panel {
    grid-template-rows: auto auto auto auto minmax(0, 1fr);
  }

  .rune {
    grid-template-columns: 26px minmax(0, 1fr);
    padding: 3px 5px;
  }

  .rune-icon {
    height: 26px;
    width: 26px;
  }

  .rune strong {
    font-size: 11px;
  }

  .rune small {
    font-size: 9px;
  }

  .rune-cooldown {
    bottom: 3px;
    font-size: 9px;
    min-width: 34px;
    padding: 3px 5px;
    right: 4px;
  }

  .rune-hotkey {
    height: 15px;
    right: 4px;
    top: 4px;
    width: 15px;
  }

}

body.mobile-landscape .rank-info-dialog {
  gap: 7px;
  max-height: calc(100dvh - 12px);
  max-width: 520px;
  padding: 13px;
  width: min(520px, calc(100vw - 16px));
}

body.mobile-landscape .rank-info-dialog h2 {
  font-size: clamp(22px, 7vh, 30px);
}

body.mobile-landscape .rank-info-dialog .eyebrow {
  font-size: 8px;
  padding: 3px 8px;
}

body.mobile-landscape .rank-info-current {
  border-radius: 10px;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  padding: 7px 9px;
}

body.mobile-landscape .rank-info-current .rank-badge--profile,
body.mobile-landscape .rank-info-row .rank-badge--profile {
  height: 28px;
  width: 26px;
}

body.mobile-landscape .rank-info-current .rank-badge--wood.rank-badge--profile,
body.mobile-landscape .rank-info-row .rank-badge--wood.rank-badge--profile {
  height: 21px;
  width: 32px;
}

body.mobile-landscape .rank-info-current small {
  font-size: 8px;
}

body.mobile-landscape .rank-info-current strong {
  font-size: 18px;
}

body.mobile-landscape .rank-info-current b {
  font-size: 16px;
  min-width: 50px;
  padding: 6px 8px;
}

body.mobile-landscape .rank-info-grid {
  gap: 5px;
}

body.mobile-landscape .rank-info-row {
  border-radius: 8px;
  gap: 8px;
  grid-template-columns: 32px minmax(0, 1fr) auto;
  padding: 6px 8px;
}

body.mobile-landscape .rank-info-row strong,
body.mobile-landscape .rank-info-row b {
  font-size: 12px;
}

body.mobile-landscape .rank-info-row small,
body.mobile-landscape .rank-info-dialog > p {
  font-size: 9px;
}

body.mobile-landscape .skin-select-dialog,
body.mobile-landscape .spell-loadout-dialog {
  gap: 8px;
  max-height: calc(100dvh - 12px);
  max-width: calc(100vw - 12px);
  padding: 12px;
  width: min(680px, calc(100vw - 12px));
}

body.mobile-landscape .skin-select-dialog {
  gap: 7px;
  max-width: calc(100vw - 12px);
  padding: 10px;
  width: min(920px, calc(100vw - 12px));
}

body.mobile-landscape .spell-loadout-dialog {
  grid-template-rows: auto minmax(0, 1fr) auto;
  max-height: calc(100dvh - 12px);
  padding: 10px;
  width: min(760px, calc(100vw - 16px));
}

body.mobile-landscape .skin-select-dialog h2,
body.mobile-landscape .spell-loadout-dialog h2 {
  font-size: 24px;
}

body.mobile-landscape .skin-select-dialog .eyebrow,
body.mobile-landscape .skin-select-dialog > p,
body.mobile-landscape .spell-loadout-dialog .eyebrow,
body.mobile-landscape .spell-loadout-dialog > p {
  font-size: 10px;
}

body.mobile-landscape .spell-loadout-preview {
  gap: 6px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  padding: 2px 3px 4px 2px;
}

body.mobile-landscape .spell-loadout-selected-slots {
  gap: 7px;
  padding-right: 38px;
}

body.mobile-landscape .spell-loadout-selected-slot {
  gap: 6px;
  grid-template-columns: 22px 34px minmax(0, 1fr);
  min-height: 58px;
  padding: 6px 8px;
}

body.mobile-landscape .spell-loadout-selected-slot .rune-icon {
  height: 34px;
  width: 34px;
}

body.mobile-landscape .spell-loadout-selected-slot strong {
  font-size: 11px;
}

body.mobile-landscape .spell-loadout-slot-number {
  font-size: 20px;
}

body.mobile-landscape .spell-loadout-slot-state {
  bottom: 4px;
  height: 16px;
  right: 4px;
  width: 16px;
}

body.mobile-landscape .spell-loadout-card {
  gap: 4px;
  min-height: 72px;
  padding: 5px 6px;
}

body.mobile-landscape .spell-loadout-card .rune-icon {
  height: 38px;
  width: 38px;
}

body.mobile-landscape .spell-loadout-card strong {
  display: block;
  font-size: 10px;
  line-height: 1.08;
}

body.mobile-landscape .spell-loadout-status {
  font-size: 9px;
  min-height: 11px;
}

body.mobile-landscape .skin-select-list {
  gap: 6px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

body.mobile-landscape .skin-select-option {
  gap: 5px;
  min-height: 166px;
  padding: 7px;
}

body.mobile-landscape .skin-select-preview {
  aspect-ratio: auto;
  height: 126px;
  min-height: 126px;
}

body.mobile-landscape .skin-select-preview .lobby-avatar-sprite {
  height: 124px;
  width: 124px;
}

body.mobile-landscape .skin-select-copy strong {
  font-size: 15px;
}

body.mobile-landscape .skin-rarity-badge {
  font-size: 8px;
  left: 4px;
  padding: 4px 5px;
  top: 4px;
}

body.mobile-landscape .skin-fragment-progress,
body.mobile-landscape .skin-unlock-action {
  font-size: 9px;
}

body.mobile-landscape .skin-unlock-action {
  min-height: 27px;
  padding: 4px 6px;
}

@media (max-width: 540px) and (orientation: portrait) {
  .skin-select-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .spell-loadout-dialog {
    max-height: calc(100dvh - 18px);
    padding: 12px;
  }

  .spell-loadout-preview {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .spell-loadout-selected-slots {
    gap: 6px;
    padding-right: 38px;
  }

  .spell-loadout-selected-slot {
    gap: 4px;
    grid-template-columns: 20px minmax(0, 1fr);
    grid-template-rows: auto auto;
    min-height: 84px;
    padding: 7px 6px;
    text-align: center;
  }

  .spell-loadout-selected-slot .rune-icon {
    grid-column: 2;
    height: 34px;
    justify-self: center;
    width: 34px;
  }

  .spell-loadout-selected-slot strong {
    font-size: 10px;
    grid-column: 1 / -1;
  }

  .spell-loadout-slot-number {
    font-size: 19px;
    grid-column: 1;
    grid-row: 1;
  }

  .spell-loadout-card {
    min-height: 96px;
  }
}

body.mobile-landscape .settings-overlay {
  padding: 6px;
}

body.mobile-landscape .settings-dialog {
  gap: 7px;
  max-height: calc(100dvh - 12px);
  max-width: calc(100vw - 12px);
  overflow: hidden;
  padding: 12px;
  width: calc(100vw - 12px);
}

body.mobile-landscape .settings-dialog h2 {
  font-size: clamp(22px, 7vh, 30px);
}

body.mobile-landscape .settings-dialog .eyebrow {
  font-size: 8px;
  padding: 3px 8px;
}

body.mobile-landscape .settings-layout {
  gap: 7px;
  grid-template-columns: 1fr;
}

body.mobile-landscape .settings-tabs {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  scrollbar-width: none;
}

body.mobile-landscape .settings-tabs::-webkit-scrollbar {
  display: none;
}

body.mobile-landscape .settings-tab {
  border-radius: 8px;
  flex: 1 0 auto;
  font-size: 10px;
  justify-content: center;
  min-height: 30px;
  padding: 6px 9px;
  text-align: center;
}

body.mobile-landscape .settings-panel {
  border-radius: 9px;
  gap: 8px;
  max-height: calc(100dvh - 128px);
  padding: 9px;
}

body.mobile-landscape .settings-panel-head strong {
  font-size: 14px;
}

body.mobile-landscape .settings-panel-head small,
body.mobile-landscape .settings-field small {
  font-size: 9px;
}

body.mobile-landscape .settings-control-grid {
  grid-template-columns: minmax(74px, .42fr) minmax(0, 1fr);
}

body.mobile-landscape .settings-control-grid span,
body.mobile-landscape .settings-control-grid strong {
  font-size: 9px;
  padding: 7px 8px;
}

body.mobile-landscape .settings-control-sections,
body.mobile-landscape .settings-account-view {
  gap: 7px;
}

body.mobile-landscape .settings-control-section {
  gap: 6px;
  padding: 7px;
}

body.mobile-landscape .settings-keyboard-control-section {
  display: none;
}

body.mobile-landscape .settings-keybind-capture-modal {
  display: none;
}

body.mobile-landscape .settings-section-head strong {
  font-size: 11px;
}

body.mobile-landscape .settings-section-head small {
  font-size: 8px;
}

body.mobile-landscape .settings-keybind-list,
body.mobile-landscape .settings-mobile-control-list,
body.mobile-landscape .settings-action-list {
  gap: 5px;
}

body.mobile-landscape .settings-keybind-row {
  gap: 6px;
  grid-template-columns: minmax(74px, auto) minmax(0, 1fr) auto;
  padding: 5px 6px;
}

body.mobile-landscape .settings-keycap-group {
  gap: 3px;
}

body.mobile-landscape .settings-keycap-group kbd {
  border-radius: 6px;
  font-size: 9px;
  min-height: 22px;
  min-width: 22px;
  padding: 0 5px;
}

body.mobile-landscape .settings-keybind-row strong,
body.mobile-landscape .settings-mobile-control-list strong {
  font-size: 10px;
}

body.mobile-landscape .settings-keybind-row small,
body.mobile-landscape .settings-mobile-control-list small {
  font-size: 8px;
}

body.mobile-landscape .settings-keybind-row button {
  font-size: 8px;
  min-height: 24px;
  padding: 4px 6px;
}

body.mobile-landscape .settings-mobile-control-list {
  grid-template-columns: 1fr;
}

body.mobile-landscape .settings-mobile-control-list div {
  padding: 6px;
}

body.mobile-landscape .settings-field > span {
  font-size: 10px;
}

body.mobile-landscape .settings-field input,
body.mobile-landscape .settings-field select {
  font-size: 11px;
  min-height: 34px;
  padding: 7px 8px;
}

body.mobile-landscape .settings-account-summary {
  gap: 6px;
  grid-template-columns: 36px minmax(0, 1fr) repeat(3, minmax(44px, 50px));
  padding: 7px 8px;
}

body.mobile-landscape .settings-account-avatar {
  display: block;
  height: 36px;
  width: 36px;
}

body.mobile-landscape.is-lobby .settings-account-avatar {
  display: block;
}

body.mobile-landscape .settings-account-summary strong {
  font-size: 14px;
}

body.mobile-landscape .settings-account-stat {
  min-width: 0;
  padding: 5px 4px;
}

body.mobile-landscape .settings-account-stat small {
  font-size: 7px;
}

body.mobile-landscape .settings-account-stat strong {
  font-size: 12px;
}

body.mobile-landscape .settings-account-security strong {
  font-size: 9px;
}

body.mobile-landscape .settings-action-list button {
  border-radius: 8px;
  gap: 2px;
  padding: 7px 8px;
}

body.mobile-landscape .settings-action-list button strong {
  font-size: 11px;
}

body.mobile-landscape .settings-action-list button small,
body.mobile-landscape .settings-inline-status {
  font-size: 8px;
}

body.mobile-landscape .settings-back-button {
  font-size: 9px;
  min-height: 26px;
  padding: 4px 8px;
}

/* Rank emblems use real bitmap assets. The older CSS shield/log drawing above is kept as fallback history, but these rules are authoritative. */
.rank-badge {
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  clip-path: none;
  filter: drop-shadow(0 10px 18px rgba(0, 0, 0, .34));
  overflow: visible;
  transform: none;
}

.rank-badge::before,
.rank-badge::after {
  content: none !important;
}

.rank-badge--wood {
  background-image: url('/assets/ranks/rank-wood.webp?v=731ecea4764bccf91bbf');
}

.rank-badge--bronze {
  background-image: url('/assets/ranks/rank-bronze.webp?v=04bd27dcc5264dac2a67');
}

.rank-badge--silver {
  background-image: url('/assets/ranks/rank-silver.webp?v=44aa9cdbdcaa83cee7dd');
}

.rank-badge--gold {
  background-image: url('/assets/ranks/rank-gold.webp?v=86891fb5a27fc66cd540');
}

.rank-badge--platinum {
  background-image: url('/assets/ranks/rank-platinum.webp?v=9d24faf1d301ba916dcc');
}

.rank-badge--legend {
  background-image: url('/assets/ranks/rank-legend.webp?v=f99d86df5fc8d1ed1af4');
}

.rank-badge--hero,
.rank-badge--wood.rank-badge--hero,
.rank-badge--bronze.rank-badge--hero,
.rank-badge--silver.rank-badge--hero,
.rank-badge--gold.rank-badge--hero,
.rank-badge--platinum.rank-badge--hero,
.rank-badge--legend.rank-badge--hero {
  height: 118px;
  width: 118px;
}

.rank-badge--profile,
.rank-badge--wood.rank-badge--profile,
.rank-badge--bronze.rank-badge--profile,
.rank-badge--silver.rank-badge--profile,
.rank-badge--gold.rank-badge--profile,
.rank-badge--platinum.rank-badge--profile,
.rank-badge--legend.rank-badge--profile {
  height: 42px;
  width: 42px;
}

.rank-badge--mini,
.rank-badge--wood.rank-badge--mini,
.rank-badge--bronze.rank-badge--mini,
.rank-badge--silver.rank-badge--mini,
.rank-badge--gold.rank-badge--mini,
.rank-badge--platinum.rank-badge--mini,
.rank-badge--legend.rank-badge--mini {
  height: 28px;
  width: 28px;
}

.lobby-rank-hero {
  gap: 8px;
  min-width: clamp(180px, 16vw, 230px);
  padding: 14px 22px 12px;
}

.rank-info-current {
  grid-template-columns: 58px minmax(0, 1fr) auto;
}

.rank-info-row {
  grid-template-columns: 54px minmax(0, 1fr) auto;
}

body.mobile-landscape .rank-badge--hero,
body.mobile-landscape .rank-badge--wood.rank-badge--hero,
body.mobile-landscape .rank-badge--bronze.rank-badge--hero,
body.mobile-landscape .rank-badge--silver.rank-badge--hero,
body.mobile-landscape .rank-badge--gold.rank-badge--hero,
body.mobile-landscape .rank-badge--platinum.rank-badge--hero,
body.mobile-landscape .rank-badge--legend.rank-badge--hero,
body.mobile-landscape.is-lobby .rank-badge--hero,
body.mobile-landscape.is-lobby .rank-badge--wood.rank-badge--hero,
body.mobile-landscape.is-lobby .rank-badge--bronze.rank-badge--hero,
body.mobile-landscape.is-lobby .rank-badge--silver.rank-badge--hero,
body.mobile-landscape.is-lobby .rank-badge--gold.rank-badge--hero,
body.mobile-landscape.is-lobby .rank-badge--platinum.rank-badge--hero,
body.mobile-landscape.is-lobby .rank-badge--legend.rank-badge--hero {
  height: 70px;
  width: 70px;
}

body.mobile-landscape .rank-badge--profile,
body.mobile-landscape .rank-badge--wood.rank-badge--profile,
body.mobile-landscape .rank-badge--bronze.rank-badge--profile,
body.mobile-landscape .rank-badge--silver.rank-badge--profile,
body.mobile-landscape .rank-badge--gold.rank-badge--profile,
body.mobile-landscape .rank-badge--platinum.rank-badge--profile,
body.mobile-landscape .rank-badge--legend.rank-badge--profile {
  height: 32px;
  width: 32px;
}

body.mobile-landscape .rank-badge--mini,
body.mobile-landscape .rank-badge--wood.rank-badge--mini,
body.mobile-landscape .rank-badge--bronze.rank-badge--mini,
body.mobile-landscape .rank-badge--silver.rank-badge--mini,
body.mobile-landscape .rank-badge--gold.rank-badge--mini,
body.mobile-landscape .rank-badge--platinum.rank-badge--mini,
body.mobile-landscape .rank-badge--legend.rank-badge--mini,
body.mobile-landscape.is-lobby .rank-badge--mini,
body.mobile-landscape.is-lobby .rank-badge--wood.rank-badge--mini,
body.mobile-landscape.is-lobby .rank-badge--bronze.rank-badge--mini,
body.mobile-landscape.is-lobby .rank-badge--silver.rank-badge--mini,
body.mobile-landscape.is-lobby .rank-badge--gold.rank-badge--mini,
body.mobile-landscape.is-lobby .rank-badge--platinum.rank-badge--mini,
body.mobile-landscape.is-lobby .rank-badge--legend.rank-badge--mini {
  height: 23px;
  width: 23px;
}

body.mobile-landscape .rank-info-current {
  grid-template-columns: 42px minmax(0, 1fr) auto;
}

body.mobile-landscape .rank-info-row {
  grid-template-columns: 40px minmax(0, 1fr) auto;
}

@media (max-width: 860px) and (max-height: 430px) and (orientation: landscape) {
  body.mobile-landscape.is-lobby .lobby-spell-slot {
    overflow: hidden;
  }

  body.mobile-landscape.is-lobby .lobby-spell-slot .rune-icon {
    border-width: 1px;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .18);
    overflow: hidden;
  }

  body.mobile-landscape.is-lobby .rune-magic-wall .rune-icon::before {
    filter: drop-shadow(2px 0 0 rgba(31, 143, 190, .62));
    height: 13px;
    left: 5px;
    top: 2px;
    width: 8px;
  }

  body.mobile-landscape.is-lobby .rune-magic-wall .rune-icon::after {
    height: 8px;
    left: 8px;
    top: 4px;
    width: 1px;
  }

  body.mobile-landscape.is-lobby .rune-haste .rune-icon::before {
    border-radius: 3px 4px 4px 2px;
    box-shadow:
      -3px 6px 0 -1px #1b222c,
      2px 6px 0 -1px #1b222c,
      0 0 0 1px rgba(255, 236, 164, .18);
    height: 7px;
    left: 4px;
    top: 7px;
    width: 11px;
  }

  body.mobile-landscape.is-lobby .rune-haste .rune-icon::after {
    height: 10px;
    left: 8px;
    top: 2px;
    width: 8px;
  }
}

body.mobile-landscape.is-lobby .spell-loadout-preview .spell-loadout-card {
  flex: initial;
  gap: 6px;
  grid-template-columns: 40px minmax(0, 1fr);
  height: auto;
  justify-content: stretch;
  min-height: 62px;
  overflow: visible;
  padding: 7px;
  width: auto;
}

body.mobile-landscape.is-lobby .spell-loadout-preview .spell-loadout-card strong {
  display: block;
  font-size: 12px;
}

@media (max-height: 380px) and (orientation: landscape) {
  body.mobile-landscape .spell-loadout-dialog {
    gap: 6px;
    padding: 9px 10px;
  }

  body.mobile-landscape .spell-loadout-dialog .eyebrow {
    display: none;
  }

  body.mobile-landscape .spell-loadout-dialog h2 {
    font-size: 21px;
  }

  body.mobile-landscape .spell-loadout-dialog > p {
    font-size: 9px;
    line-height: 1.25;
  }

  body.mobile-landscape .spell-loadout-card {
    min-height: 54px;
    padding: 6px 7px;
  }
}

/* Lobby character showcase: no skin editing here; the wardrobe lives in-game. */
.lobby-profile-card {
  gap: 12px;
}

.lobby-profile-card .lobby-character-row {
  align-items: center;
  gap: 14px;
  grid-template-columns: 142px minmax(0, 1fr);
}

.lobby-profile-card .lobby-avatar-frame {
  border-color: rgba(255, 214, 106, .3);
}

.lobby-profile-card .lobby-avatar-sprite {
  height: 142px;
  width: 142px;
}

.lobby-profile-card .lobby-character-meta {
  align-content: center;
  gap: 11px;
}

.lobby-profile-card .lobby-skin-row--showcase {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  display: block;
  min-height: 0;
  padding: 0;
}

.lobby-profile-card .lobby-skin-row--showcase::before {
  content: none;
}

.lobby-profile-card .lobby-skin-row--showcase small,
.lobby-profile-card .lobby-profile-rank small,
.lobby-profile-card .lobby-profile-metric small {
  color: rgba(219, 231, 248, .76);
  display: block;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .08em;
  line-height: 1.1;
  margin: 0 0 3px;
  text-transform: uppercase;
}

.lobby-profile-card .lobby-skin-row--showcase strong {
  color: #f8fbff;
  display: block;
  font-size: clamp(15px, 1.45vw, 19px);
  line-height: 1.04;
  max-width: 100%;
  overflow-wrap: anywhere;
  text-shadow: 0 2px 9px rgba(0, 0, 0, .38);
}

.lobby-profile-card .lobby-profile-rank {
  align-items: center;
  background: transparent;
  border: 0;
  box-shadow: none;
  display: inline-flex;
  gap: 8px;
  justify-self: start;
  min-height: 0;
  min-width: 0;
  padding: 0;
  text-align: left;
}

.lobby-profile-card .lobby-profile-rank:hover,
.lobby-profile-card .lobby-profile-rank:focus-visible {
  background: transparent;
  box-shadow: none;
}

.lobby-profile-card .lobby-profile-rank:focus-visible {
  outline: 2px solid rgba(255, 214, 106, .58);
  outline-offset: 4px;
}

.lobby-profile-card .lobby-profile-rank strong {
  color: #fff7d7;
  display: block;
  font-size: 14px;
  line-height: 1.05;
  text-shadow: 0 2px 8px rgba(0, 0, 0, .36);
}

.lobby-profile-card .lobby-stat-grid.lobby-profile-metrics {
  display: flex;
  gap: 18px;
  grid-template-columns: none;
  min-width: 0;
}

.lobby-profile-card .lobby-profile-metric {
  align-items: start;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 0;
}

.lobby-profile-card .lobby-profile-metric-value {
  align-items: center;
  display: inline-flex;
  gap: 7px;
  min-width: 0;
}

.lobby-profile-card .lobby-profile-metric-value strong {
  color: #f8fbff;
  font-size: 18px;
  font-weight: 950;
  line-height: 1;
  text-shadow: 0 2px 8px rgba(0, 0, 0, .4);
}

.lobby-profile-card .lobby-profile-metric .lobby-star-shape,
.lobby-profile-card .lobby-frag-icon {
  flex: 0 0 auto;
  height: 28px;
  width: 28px;
}

.lobby-profile-card .lobby-frag-icon {
  background: url("./assets/ui/spells/spell-sd.webp?v=16c67ccbd36bcc3d4500") center / contain no-repeat;
  filter:
    drop-shadow(0 0 8px rgba(244, 63, 94, .34))
    drop-shadow(0 5px 9px rgba(0, 0, 0, .35));
}

body.mobile-landscape.is-lobby .lobby-profile-card {
  gap: 7px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-character-row {
  gap: 7px;
  grid-template-columns: 84px minmax(0, 1fr);
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-avatar-frame,
body.mobile-landscape.is-lobby .lobby-profile-card .lobby-avatar-sprite {
  height: 84px;
  width: 84px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-character-meta {
  gap: 5px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-skin-row--showcase {
  display: block;
  min-height: 0;
  padding: 0;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-skin-row--showcase small,
body.mobile-landscape.is-lobby .lobby-profile-card .lobby-profile-rank small,
body.mobile-landscape.is-lobby .lobby-profile-card .lobby-profile-metric small {
  display: block;
  font-size: 7px;
  letter-spacing: .06em;
  margin-bottom: 2px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-skin-row--showcase strong {
  font-size: 12px;
  line-height: 1.02;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-profile-rank {
  display: inline-flex;
  gap: 5px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .rank-badge--profile,
body.mobile-landscape.is-lobby .lobby-profile-card .rank-badge--wood.rank-badge--profile,
body.mobile-landscape.is-lobby .lobby-profile-card .rank-badge--bronze.rank-badge--profile,
body.mobile-landscape.is-lobby .lobby-profile-card .rank-badge--silver.rank-badge--profile,
body.mobile-landscape.is-lobby .lobby-profile-card .rank-badge--gold.rank-badge--profile,
body.mobile-landscape.is-lobby .lobby-profile-card .rank-badge--platinum.rank-badge--profile,
body.mobile-landscape.is-lobby .lobby-profile-card .rank-badge--legend.rank-badge--profile {
  height: 28px;
  width: 28px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-profile-rank strong {
  font-size: 10px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-stat-grid.lobby-profile-metrics {
  display: flex;
  gap: 13px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-profile-metric {
  display: grid;
  padding: 0;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-profile-metric-value {
  gap: 5px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-profile-metric .lobby-star-shape,
body.mobile-landscape.is-lobby .lobby-profile-card .lobby-frag-icon {
  height: 19px;
  width: 19px;
}

body.mobile-landscape.is-lobby .lobby-profile-card .lobby-profile-metric-value strong {
  font-size: 13px;
}

@media (max-height: 380px) and (orientation: landscape) {
  body.mobile-landscape.is-lobby .lobby-profile-card .lobby-character-row {
    grid-template-columns: 76px minmax(0, 1fr);
  }

  body.mobile-landscape.is-lobby .lobby-profile-card .lobby-avatar-frame,
  body.mobile-landscape.is-lobby .lobby-profile-card .lobby-avatar-sprite {
    height: 76px;
    width: 76px;
  }

  body.mobile-landscape.is-lobby .lobby-profile-card .lobby-stat-grid.lobby-profile-metrics {
    gap: 10px;
  }
}
