:root {
  color-scheme: dark;
  --bg: #030507;
  --ink: #080b0e;
  --iron: #20272d;
  --iron-2: #12171c;
  --line: #4a3821;
  --gold: #b38a45;
  --gold-soft: #d5bf83;
  --red: #8d2420;
  --blue: #2d4f68;
  --green: #294f37;
  --purple: #3b2753;
  --text: #eadfbd;
  --muted: #9b8d72;
  --asset-exploration-floor: url("assets/ui/exploration/backgrounds/bg_exploration_dungeon_floor.png");
  --asset-exploration-card-back: url("assets/ui/exploration/cards/card_back_black_iron.png");
  --asset-panel-frame: url("assets/ui/exploration/panels/panel_frame_dark_metal_placeholder.svg");
  --left-ui-stat-icon-size: 30px;
  --left-ui-passive-icon-size: 30px;
  --left-ui-resource-icon-size: 28px;
  --left-ui-supply-icon-size: 22px;
  --left-ui-marker-size: 13px;
  --left-ui-relic-slot-size: 38px;
  --left-ui-block-bg: rgba(5, 8, 9, 0.24);
  --left-ui-block-border: rgba(179, 138, 69, 0.065);
  --exploration-side-button-height: 56px;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  height: 100%;
  min-height: 100%;
  overflow: hidden;
}

body {
  min-height: 100vh;
  margin: 0;
  background:
    linear-gradient(180deg, rgba(9, 12, 16, 0.92), rgba(1, 2, 3, 1)),
    repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 13px),
    var(--bg);
  color: var(--text);
  font-family: "Segoe UI", "Yu Gothic UI", Meiryo, sans-serif;
}

button {
  font: inherit;
}

.app {
  height: 100vh;
  min-height: 0;
  display: grid;
  place-items: center;
  padding: 8px;
  overflow: hidden;
}

.title-screen {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: #f0eadc;
  background: #03070b;
}

.title-stage-frame {
  position: relative;
  width: calc(1600px * var(--title-stage-scale, 1));
  height: calc(900px * var(--title-stage-scale, 1));
  overflow: hidden;
}

.title-stage {
  position: absolute;
  left: 0;
  top: 0;
  width: 1600px;
  height: 900px;
  overflow: hidden;
  isolation: isolate;
  background: #03070b;
  transform: scale(var(--title-stage-scale, 1));
  transform-origin: top left;
}

.title-stage::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    radial-gradient(ellipse at center, transparent 0 58%, rgba(0, 0, 0, 0.12) 86%, rgba(0, 0, 0, 0.28) 100%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(0, 0, 0, 0.08));
}

.title-screen.is-hidden {
  display: none;
}

.title-screen [data-layout-id^="title-"] {
  --layout-x: 0px;
  --layout-y: 0px;
  --layout-scale: 1;
  --layout-scale-x: 1;
  --layout-scale-y: 1;
}

.options-screen {
  position: fixed;
  inset: 0;
  z-index: 9100;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: #eadfbd;
  background:
    radial-gradient(ellipse at 50% 38%, rgba(117, 86, 48, 0.12), transparent 46%),
    #030507;
}

.options-screen.is-hidden {
  display: none;
}

.options-stage [data-layout-id^="options-"] {
  --layout-x: 0px;
  --layout-y: 0px;
  --layout-scale: 1;
  --layout-scale-x: 1;
  --layout-scale-y: 1;
}

.options-stage {
  position: relative;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  background: #020304;
}

.options-screen-base {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  user-select: none;
  pointer-events: none;
  transform: translate(var(--layout-x), var(--layout-y)) scale(calc(var(--layout-scale) * var(--layout-scale-x)), calc(var(--layout-scale) * var(--layout-scale-y)));
  transform-origin: center;
}

.options-slider {
  --x: 408;
  --y: 298;
  --w: 418;
  --h: 72;
  --value-ratio: 0.8;
  --knob-size: 16.3%;
  position: absolute;
  left: calc(var(--x) / 1600 * 100%);
  top: calc(var(--y) / 900 * 100%);
  width: calc(var(--w) / 1600 * 100%);
  height: calc(var(--h) / 900 * 100%);
  transform: translate(var(--layout-x), var(--layout-y)) scale(calc(var(--layout-scale) * var(--layout-scale-x)), calc(var(--layout-scale) * var(--layout-scale-y)));
  transform-origin: left center;
}

.options-slider-master {
  --y: 294;
}

.options-slider-bgm {
  --y: 408;
}

.options-slider-se {
  --y: 522;
}

.options-slider-track,
.options-slider-fill,
.options-slider-knob,
.options-slider-input {
  position: absolute;
}

.options-slider-track {
  left: 0;
  top: 50%;
  width: 100%;
  height: 64%;
  object-fit: contain;
  transform: translateY(-50%);
  pointer-events: none;
}

.options-slider-fill {
  left: 5%;
  top: 50%;
  width: calc(var(--value-ratio) * 90%);
  max-width: 90%;
  height: 16%;
  border-radius: 999px;
  background: linear-gradient(180deg, #3a6172 0%, #263f4d 48%, #152630 100%);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.13),
    inset 0 -1px 0 rgba(0, 0, 0, 0.5),
    0 0 10px rgba(48, 91, 109, 0.22);
  transform: translateY(-50%);
  pointer-events: none;
}

.options-slider-knob {
  left: calc(5% + (var(--value-ratio) * 90%));
  top: 50%;
  width: var(--knob-size);
  height: auto;
  transform: translate(-50%, -50%);
  filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.58));
  pointer-events: none;
}

.options-slider-input {
  inset: 16% 0;
  z-index: 3;
  width: 100%;
  opacity: 0;
  cursor: pointer;
}

.options-slider-value {
  display: none;
  position: absolute;
  left: 88%;
  top: 50%;
  min-width: 58px;
  color: #d5c29a;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(12px, 1.05vw, 17px);
  letter-spacing: 0.08em;
  text-align: left;
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.82);
  transform: translateY(-50%);
  pointer-events: none;
}

.options-mute-toggle {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.options-image-button {
  position: absolute;
  border: 0;
  padding: 0;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  cursor: pointer;
  filter: brightness(0.98);
  outline: 0;
}

.options-image-button[hidden] {
  display: none;
}

.options-image-button:hover,
.options-image-button:focus-visible {
  filter: brightness(1.08);
}

.options-image-button:focus-visible {
  box-shadow: 0 0 0 2px rgba(207, 171, 103, 0.5);
}

.options-image-button:active {
  filter: brightness(0.92);
}

.options-footer-button {
  width: calc(330 / 1600 * 100%);
  height: calc(96 / 900 * 100%);
  background-image: url("assets/ui/option/button/options_footer_button_base.png");
  display: flex;
  align-items: center;
  justify-content: center;
  background-size: 100% 100%;
  transform-origin: center;
  transform: translate(var(--layout-x), var(--layout-y)) scale(calc(var(--layout-scale) * var(--layout-scale-x)), calc(var(--layout-scale) * var(--layout-scale-y)));
}

.options-footer-button__label {
  color: #f1d79d;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(18px, 1.8vw, 30px);
  font-weight: 700;
  letter-spacing: 0.12em;
  line-height: 1.05;
  text-align: center;
  text-shadow:
    0 2px 0 rgba(0, 0, 0, 0.92),
    0 0 12px rgba(0, 0, 0, 0.72);
  text-transform: uppercase;
  transform: translateY(-2%);
  white-space: normal;
  pointer-events: none;
}

.options-back-btn {
  left: calc(650 / 1600 * 100%);
  top: calc(790 / 900 * 100%);
}

.options-credits-btn {
  left: calc(305 / 1600 * 100%);
  top: calc(790 / 900 * 100%);
}

.options-return-title-btn {
  left: calc(995 / 1600 * 100%);
  top: calc(790 / 900 * 100%);
}

.credits-screen {
  position: fixed;
  inset: 0;
  z-index: 9150;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: #f2e6ca;
  background: #020304;
}

.credits-screen.is-hidden {
  display: none;
}

.credits-stage {
  position: relative;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  background: #020304;
}

.credits-background {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  pointer-events: none;
  user-select: none;
}

.credits-stage::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(0, 0, 0, 0.58), rgba(0, 0, 0, 0.22) 44%, rgba(0, 0, 0, 0.34)),
    radial-gradient(ellipse at 50% 72%, rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.48) 88%);
}

.credits-copy {
  position: absolute;
  z-index: 2;
  left: min(11vw, 168px);
  top: min(12vh, 110px);
  width: min(420px, 78vw);
  display: grid;
  gap: 18px;
  color: #f1dfb7;
  font-family: Georgia, "Times New Roman", serif;
  text-align: left;
  text-shadow:
    0 3px 0 rgba(0, 0, 0, 0.86),
    0 0 22px rgba(0, 0, 0, 0.82);
  pointer-events: none;
}

.credits-copy h1 {
  margin: 0 0 6px;
  color: #ffe8b6;
  font-size: clamp(34px, 4.5vw, 66px);
  line-height: 0.95;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.credits-copy section {
  display: grid;
  gap: 5px;
}

.credits-copy h2 {
  margin: 0;
  color: #c9984d;
  font-size: clamp(13px, 1.5vw, 20px);
  font-weight: 900;
  letter-spacing: 0.18em;
  line-height: 1;
  text-transform: uppercase;
}

.credits-copy p {
  margin: 0;
  color: #f5ead2;
  font-size: clamp(22px, 2.55vw, 38px);
  font-weight: 700;
  line-height: 1.04;
  letter-spacing: 0.025em;
}

.credits-back-btn {
  z-index: 3;
  left: calc(635 / 1600 * 100%);
  top: calc(790 / 900 * 100%);
}

.options-return-title-confirm-layer[hidden] {
  display: none;
}

.options-return-title-confirm-layer {
  position: absolute;
  inset: 0;
  z-index: 8;
  display: grid;
  place-items: center;
  padding: 24px;
  background:
    radial-gradient(circle at 50% 54%, rgba(130, 42, 32, 0.18), transparent 30%),
    rgba(0, 0, 0, 0.52);
  pointer-events: auto;
}

.options-return-title-confirm-panel {
  position: relative;
  width: min(440px, calc(100% - 48px));
  display: grid;
  gap: 13px;
  padding: 26px 30px 24px;
  text-align: center;
  border: 1px solid rgba(201, 151, 78, 0.72);
  color: #efe0bf;
  background:
    radial-gradient(circle at 50% 0%, rgba(168, 69, 42, 0.14), transparent 42%),
    linear-gradient(180deg, rgba(20, 24, 25, 0.98), rgba(6, 7, 9, 0.98));
  box-shadow:
    0 24px 60px rgba(0, 0, 0, 0.82),
    inset 0 0 0 1px rgba(255, 231, 179, 0.08);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.options-return-title-confirm-kicker {
  color: #d7a24c;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.16em;
}

.options-return-title-confirm-panel strong {
  color: #f5e4c0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(23px, 2vw, 32px);
  line-height: 1;
  letter-spacing: 0.02em;
  text-shadow: 0 2px 0 #000, 0 0 18px rgba(190, 76, 52, 0.20);
}

.options-return-title-confirm-panel p {
  margin: 0;
  color: rgba(235, 218, 183, 0.82);
  font-size: 15px;
  line-height: 1.45;
}

.options-return-title-confirm-actions {
  display: flex;
  justify-content: center;
  gap: 14px;
  margin-top: 2px;
}

.options-return-title-confirm-yes,
.options-return-title-confirm-no {
  min-width: 118px;
  min-height: 40px;
  border: 1px solid rgba(201, 151, 78, 0.64);
  padding: 8px 16px 9px;
  color: #f3dfb8;
  cursor: pointer;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 14px;
  font-weight: 900;
  letter-spacing: 0.08em;
  line-height: 1;
  text-align: center;
  text-shadow: 0 2px 0 #000;
  background: linear-gradient(180deg, rgba(36, 43, 47, 0.94), rgba(8, 10, 12, 0.96));
}

.options-return-title-confirm-yes {
  border-color: rgba(190, 86, 64, 0.82);
  color: #ffe0c4;
  background: linear-gradient(180deg, rgba(102, 34, 28, 0.94), rgba(27, 8, 9, 0.96));
}

.options-return-title-confirm-no {
  border-color: rgba(92, 154, 196, 0.74);
  color: #e4f2ff;
  background: linear-gradient(180deg, rgba(36, 78, 105, 0.86), rgba(7, 18, 27, 0.94));
}

.options-return-title-confirm-yes:hover,
.options-return-title-confirm-no:hover,
.options-return-title-confirm-yes:focus-visible,
.options-return-title-confirm-no:focus-visible {
  filter: brightness(1.12);
  outline: none;
}

.options-reset-btn {
  /* Temporarily hidden until Options grows beyond the three volume sliders. */
  display: none;
  left: calc(1135 / 1600 * 100%);
  top: calc(804 / 900 * 100%);
  width: calc(190 / 1600 * 100%);
  height: calc(74 / 900 * 100%);
  background-image: url("assets/ui/option/button/ui_options_button_reset_transparent.png");
  transform: translate(var(--layout-x), var(--layout-y)) scale(calc(var(--layout-scale) * var(--layout-scale-x)), calc(var(--layout-scale) * var(--layout-scale-y)));
  transform-origin: center;
}

.title-screen-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(ellipse at 50% 30%, rgba(255, 247, 220, 0.08), rgba(33, 50, 66, 0.05) 34%, rgba(0, 0, 0, 0.22) 100%),
    linear-gradient(180deg, rgba(0, 0, 0, 0.16), rgba(0, 0, 0, 0.04) 42%, rgba(0, 0, 0, 0.36)),
    linear-gradient(90deg, rgba(0, 0, 0, 0.24), transparent 22%, transparent 78%, rgba(0, 0, 0, 0.24)),
    url("assets/ui/title/bg/title_background_iron_hold_overlook.png");
  background-size: cover;
  background-position: center;
  filter: saturate(0.98) contrast(1.02) brightness(1.02);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(1.01 * var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(1.01 * var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.title-screen-bg::after {
  content: none;
}

.title-logo-wrap {
  position: absolute;
  left: 50%;
  top: 17%;
  z-index: 3;
  width: min(72vw, 1040px);
  max-height: 31vh;
  transform: translateX(-50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
  display: flex;
  align-items: center;
  justify-content: center;
  user-select: none;
  pointer-events: none;
  isolation: isolate;
}

.title-logo-image {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  max-height: 31vh;
  object-fit: contain;
  filter:
    drop-shadow(0 4px 8px rgba(5, 12, 22, 0.28))
    drop-shadow(0 0 7px rgba(255, 238, 190, 0.10));
  user-select: none;
  pointer-events: none;
}

.title-logo-number-shimmer {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  mix-blend-mode: screen;
  -webkit-mask-image: url("assets/ui/title/logo/logo_card_crawl_16_number.png");
  mask-image: url("assets/ui/title/logo/logo_card_crawl_16_number.png");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  filter: drop-shadow(0 0 8px rgba(255, 235, 174, 0.18));
  overflow: visible;
}

.title-logo-number-shimmer::before {
  content: "";
  position: absolute;
  left: 75%;
  top: -18%;
  width: 30%;
  height: 140%;
  opacity: 0;
  background:
    linear-gradient(
      118deg,
      rgba(255, 255, 255, 0) 0%,
      rgba(255, 255, 255, 0) 29%,
      rgba(255, 231, 164, 0.24) 40%,
      rgba(255, 255, 238, 0.90) 50%,
      rgba(248, 204, 108, 0.32) 61%,
      rgba(255, 255, 255, 0) 74%,
      rgba(255, 255, 255, 0) 100%
    );
  filter: drop-shadow(0 0 7px rgba(255, 236, 180, 0.26));
  transform: translate3d(-28%, 16%, 0);
  animation: titleLogoNumberShimmerSweep 7s linear infinite;
  will-change: opacity, transform, filter;
}

@keyframes titleLogoNumberShimmerSweep {
  0%,
  100% {
    opacity: 0;
    transform: translate3d(-28%, 16%, 0);
  }

  10% {
    opacity: 0.10;
    transform: translate3d(-18%, 12%, 0);
  }

  28% {
    opacity: 0.46;
    transform: translate3d(4%, 7%, 0);
  }

  58% {
    opacity: 0.90;
    transform: translate3d(36%, -1%, 0);
  }

  68% {
    opacity: 0.58;
    transform: translate3d(48%, -4%, 0);
  }

  82% {
    opacity: 0.16;
    transform: translate3d(64%, -9%, 0);
  }

  92% {
    opacity: 0;
    transform: translate3d(76%, -13%, 0);
  }

  99.9% {
    opacity: 0;
    transform: translate3d(76%, -13%, 0);
  }
}

.title-logo-side {
  display: flex;
  align-items: center;
  min-width: 0;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.title-logo-side-left {
  justify-content: flex-end;
}

.title-logo-side-right {
  justify-content: flex-start;
}

.title-logo-center {
  display: grid;
  place-items: center;
  padding-inline: clamp(2px, 0.42vw, 6px);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.title-logo-word {
  display: flex;
  align-items: center;
  min-width: 0;
}

.title-logo-word-card {
  justify-content: flex-end;
  gap: clamp(6px, 0.82vw, 14px);
}

.title-logo-word-crawl {
  position: relative;
  isolation: isolate;
  justify-content: flex-start;
  gap: clamp(3px, 0.42vw, 8px);
  padding-right: clamp(58px, 6.2vw, 96px);
}

.title-logo-letter {
  position: relative;
  z-index: 1;
  display: block;
  width: auto;
  height: clamp(46px, 5.6vw, 78px);
  object-fit: contain;
  filter:
    drop-shadow(0 8px 18px rgba(0, 0, 0, 0.7))
    drop-shadow(0 0 9px rgba(214, 226, 235, 0.12));
  transform: translateY(1px);
  user-select: none;
  pointer-events: none;
}

.title-logo-sword-l {
  position: absolute;
  z-index: 0;
  right: clamp(-16px, -1.1vw, -8px);
  top: clamp(-82px, -7vw, -44px);
  height: clamp(140px, 14.8vw, 236px);
  width: auto;
  object-fit: contain;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: 58% 52%;
  filter:
    drop-shadow(0 8px 18px rgba(0, 0, 0, 0.72))
    drop-shadow(0 0 8px rgba(214, 226, 235, 0.10));
  user-select: none;
  pointer-events: none;
}

.title-logo-emblem-wrap {
  position: relative;
  width: clamp(116px, 11.8vw, 174px);
  display: grid;
  place-items: center;
  aspect-ratio: 1 / 1;
  isolation: isolate;
  overflow: visible;
  pointer-events: none;
}

.title-logo-emblem {
  grid-area: 1 / 1;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  user-select: none;
  pointer-events: none;
}

.title-logo-emblem-base {
  position: relative;
  z-index: 1;
}

.title-logo-emblem-wrap::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  opacity: 0;
  background:
    linear-gradient(
      115deg,
      transparent 0%,
      transparent 34%,
      rgba(255, 246, 210, 0) 42%,
      rgba(255, 248, 222, 0.72) 49%,
      rgba(246, 196, 93, 0.32) 54%,
      rgba(255, 246, 210, 0) 62%,
      transparent 100%
    );
  background-size: 240% 100%;
  background-position: -150% center;
  -webkit-mask-image: url("assets/ui/title/logo/ui_title_logo_emblem_16.png");
  mask-image: url("assets/ui/title/logo/ui_title_logo_emblem_16.png");
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-mode: alpha;
  mask-mode: alpha;
  mix-blend-mode: screen;
  animation: title16MaskedGlint 9.5s ease-in-out infinite;
}

@keyframes title16MaskedGlint {
  0%,
  68% {
    opacity: 0;
    background-position: -150% center;
  }

  76% {
    opacity: 0;
    background-position: -78% center;
  }

  80% {
    opacity: 0.64;
    background-position: 50% center;
  }

  86% {
    opacity: 0;
    background-position: 150% center;
  }

  100% {
    opacity: 0;
    background-position: 150% center;
  }
}

.title-menu {
  position: absolute;
  left: 50%;
  top: 64%;
  z-index: 3;
  transform: translateX(-50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(14px, 2.3vh, 20px);
}

.title-menu-item {
  position: relative;
  min-width: min(260px, 36vw);
  padding: 0 28px 10px;
  border: 0;
  appearance: none;
  background: transparent;
  color: rgba(239, 233, 220, 0.9);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(20px, 1.85vw, 28px);
  line-height: 1.05;
  letter-spacing: 0.04em;
  text-align: center;
  text-shadow:
    0 2px 8px rgba(0, 0, 0, 0.66),
    0 0 10px rgba(18, 28, 40, 0.34),
    0 0 14px rgba(255, 235, 190, 0.10);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
  cursor: pointer;
}

.title-new-game-confirm-layer[hidden] {
  display: none;
}

.title-new-game-confirm-layer {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: grid;
  place-items: center;
  padding: 24px;
  background:
    radial-gradient(circle at 50% 48%, rgba(136, 47, 36, 0.20), transparent 34%),
    rgba(0, 0, 0, 0.58);
  pointer-events: auto;
}

.title-new-game-confirm-panel {
  position: relative;
  width: min(500px, calc(100% - 48px));
  display: grid;
  gap: 15px;
  padding: 30px 34px 28px;
  text-align: center;
  border: 1px solid rgba(201, 151, 78, 0.74);
  color: #efe0bf;
  background:
    radial-gradient(circle at 50% 0%, rgba(168, 69, 42, 0.15), transparent 42%),
    linear-gradient(180deg, rgba(20, 24, 25, 0.98), rgba(6, 7, 9, 0.98));
  box-shadow:
    0 28px 70px rgba(0, 0, 0, 0.86),
    inset 0 0 0 1px rgba(255, 231, 179, 0.08),
    inset 0 0 44px rgba(112, 34, 26, 0.14);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.title-new-game-confirm-panel::before {
  content: "";
  position: absolute;
  inset: 9px;
  border: 1px solid rgba(229, 194, 117, 0.10);
  pointer-events: none;
}

.title-new-game-confirm-kicker {
  color: #d7a24c;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.16em;
}

.title-new-game-confirm-panel strong {
  color: #f5e4c0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(26px, 2.4vw, 36px);
  line-height: 1;
  letter-spacing: 0.02em;
  text-shadow: 0 2px 0 #000, 0 0 20px rgba(190, 76, 52, 0.22);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.title-new-game-confirm-panel p {
  margin: 0;
  color: rgba(235, 218, 183, 0.82);
  font-size: 15px;
  line-height: 1.55;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.title-new-game-confirm-actions {
  display: flex;
  justify-content: center;
  gap: 14px;
  margin-top: 4px;
}

.title-new-game-confirm-btn,
.title-new-game-cancel-btn {
  min-width: 136px;
  min-height: 44px;
  display: grid;
  place-items: center;
  padding: 8px 18px 9px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 15px;
  font-weight: 900;
  letter-spacing: 0.08em;
  line-height: 1;
  text-align: center;
  text-shadow: 0 2px 0 #000;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
  cursor: pointer;
  transition: border-color 120ms ease, filter 120ms ease;
}

.title-new-game-confirm-btn {
  border: 1px solid rgba(190, 86, 64, 0.82);
  color: #ffe0c4;
  background:
    linear-gradient(180deg, rgba(102, 34, 28, 0.94), rgba(27, 8, 9, 0.96));
}

.title-new-game-cancel-btn {
  border: 1px solid rgba(92, 154, 196, 0.74);
  color: #e4f2ff;
  background:
    linear-gradient(180deg, rgba(36, 78, 105, 0.86), rgba(7, 18, 27, 0.94));
}

.title-new-game-confirm-btn:hover,
.title-new-game-cancel-btn:hover,
.title-new-game-confirm-btn:focus-visible,
.title-new-game-cancel-btn:focus-visible {
  filter: brightness(1.12);
  outline: none;
}

.title-menu-item::before,
.title-menu-item::after {
  content: "";
  position: absolute;
  top: 50%;
  width: clamp(48px, 7.2vw, 96px);
  height: 2px;
  opacity: 0;
  pointer-events: none;
  background-size: 62% 100%, 100% 100%;
  background-repeat: no-repeat;
  transition: opacity 180ms ease, transform 180ms ease, filter 180ms ease;
}

.title-menu-item::before {
  right: calc(50% + clamp(66px, 7vw, 106px));
  transform: translateY(-50%) translateX(-14px) scaleX(0.58);
  transform-origin: right center;
  background-image:
    linear-gradient(
      90deg,
      rgba(214, 157, 69, 0),
      rgba(246, 203, 108, 0.08) 24%,
      rgba(255, 241, 184, 0.82) 50%,
      rgba(246, 203, 108, 0.12) 76%,
      rgba(214, 157, 69, 0)
    ),
    linear-gradient(
      90deg,
      rgba(214, 157, 69, 0),
      rgba(201, 142, 56, 0.34) 42%,
      rgba(248, 221, 145, 0.78) 100%
    );
  background-position: -90% center, center;
  box-shadow: 0 0 8px rgba(232, 174, 82, 0.22);
}

.title-menu-item::after {
  left: calc(50% + clamp(66px, 7vw, 106px));
  transform: translateY(-50%) translateX(14px) scaleX(0.58);
  transform-origin: left center;
  background-image:
    linear-gradient(
      90deg,
      rgba(214, 157, 69, 0),
      rgba(246, 203, 108, 0.12) 24%,
      rgba(255, 241, 184, 0.82) 50%,
      rgba(246, 203, 108, 0.08) 76%,
      rgba(214, 157, 69, 0)
    ),
    linear-gradient(
      90deg,
      rgba(248, 221, 145, 0.78),
      rgba(201, 142, 56, 0.34) 58%,
      rgba(214, 157, 69, 0)
    );
  background-position: 190% center, center;
  box-shadow: 0 0 8px rgba(232, 174, 82, 0.22);
}

@keyframes titleMenuLineSweepLeft {
  0% {
    opacity: 0.04;
    background-position: -90% center, center;
    filter: brightness(0.88);
  }

  18% {
    opacity: 0.14;
    background-position: -62% center, center;
    filter: brightness(0.96);
  }

  54% {
    opacity: 0.94;
    background-position: 92% center, center;
    filter: brightness(1.28);
  }

  72% {
    opacity: 0.48;
    background-position: 128% center, center;
    filter: brightness(1.08);
  }

  100% {
    opacity: 0.04;
    background-position: 128% center, center;
    filter: brightness(0.88);
  }
}

@keyframes titleMenuLineSweepRight {
  0% {
    opacity: 0.04;
    background-position: 190% center, center;
    filter: brightness(0.88);
  }

  18% {
    opacity: 0.14;
    background-position: 162% center, center;
    filter: brightness(0.96);
  }

  54% {
    opacity: 0.94;
    background-position: 8% center, center;
    filter: brightness(1.28);
  }

  72% {
    opacity: 0.48;
    background-position: -28% center, center;
    filter: brightness(1.08);
  }

  100% {
    opacity: 0.04;
    background-position: -28% center, center;
    filter: brightness(0.88);
  }
}

.title-menu-item:hover,
.title-menu-item:focus-visible,
.title-menu-item.is-selected {
  color: #fff7e4;
  outline: none;
  text-shadow:
    0 2px 8px rgba(0, 0, 0, 0.76),
    0 0 12px rgba(227, 239, 246, 0.18),
    0 0 10px rgba(214, 155, 71, 0.16);
}

.title-menu-item:hover::before,
.title-menu-item:hover::after,
.title-menu-item:focus-visible::before,
.title-menu-item:focus-visible::after,
.title-menu-item.is-selected::before,
.title-menu-item.is-selected::after {
  opacity: 1;
}

.title-menu-item:hover::before,
.title-menu-item:focus-visible::before,
.title-menu-item.is-selected::before {
  transform: translateY(-50%) translateX(0) scaleX(1);
  filter: brightness(1.08);
}

.title-menu-item:hover::after,
.title-menu-item:focus-visible::after,
.title-menu-item.is-selected::after {
  transform: translateY(-50%) translateX(0) scaleX(1);
  filter: brightness(1.08);
}

.title-menu-item.is-selected::before {
  animation: titleMenuLineSweepLeft 1.9s ease-in-out infinite;
}

.title-menu-item.is-selected::after {
  animation: titleMenuLineSweepRight 1.9s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
  .title-logo-number-shimmer::before,
  .title-logo-emblem-wrap::after,
  .title-menu-item.is-selected::before,
  .title-menu-item.is-selected::after {
    animation: none;
  }

  .title-logo-number-shimmer::before {
    opacity: 0;
  }

  .title-logo-emblem-wrap::after {
    opacity: 0;
    background-position: 50% center;
  }

  .title-menu-item.is-selected::before {
    opacity: 0.88;
    transform: translateY(-50%) translateX(0) scaleX(1);
  }

  .title-menu-item.is-selected::after {
    opacity: 0.88;
    transform: translateY(-50%) translateX(0) scaleX(1);
  }
}

.title-meta {
  position: absolute;
  right: clamp(40px, 3.5vw, 50px);
  bottom: clamp(32px, 4vh, 42px);
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 3px;
  color: rgba(233, 228, 218, 0.78);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(15px, 1.35vw, 21px);
  line-height: 1.1;
  letter-spacing: 0.04em;
  text-shadow: 0 2px 7px rgba(0, 0, 0, 0.82);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: right bottom;
  pointer-events: none;
}

.job-select-screen {
  position: fixed;
  inset: 0;
  z-index: 9998;
  display: grid;
  place-items: center;
  overflow: hidden;
  isolation: isolate;
  color: #f4ecd6;
  background: #000;
}

.job-select-screen.is-hidden {
  display: none;
}

.dev-layout-edit-btn {
  display: none;
}

.dev-layout-edit-btn.is-visible {
  position: fixed;
  right: 18px;
  top: 18px;
  z-index: 10000;
  display: inline-grid;
  min-height: 38px;
  place-items: center;
  border: 1px solid rgba(232, 196, 92, 0.42);
  padding: 8px 14px;
  background: rgba(11, 13, 16, 0.86);
  color: #f4deb0;
  cursor: pointer;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.42);
}

.dev-layout-edit-btn.is-visible:hover,
.dev-layout-edit-btn.is-visible:focus-visible {
  outline: none;
  border-color: rgba(255, 213, 106, 0.72);
  background: rgba(26, 22, 15, 0.92);
  color: #fff2c8;
}

.card-crawl-debug-controls {
  position: fixed;
  top: 64px;
  right: 18px;
  z-index: 10001;
  display: grid;
  justify-items: stretch;
  gap: 5px;
  color: rgba(244, 222, 176, 0.78);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.card-crawl-debug-toggle {
  min-height: 28px;
  min-width: 82px;
  border: 1px solid rgba(232, 196, 92, 0.32);
  padding: 5px 8px;
  background: rgba(6, 8, 10, 0.72);
  color: rgba(244, 222, 176, 0.86);
  cursor: pointer;
  font: inherit;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-align: center;
  text-transform: uppercase;
  box-shadow: 0 7px 16px rgba(0, 0, 0, 0.3);
}

.card-crawl-debug-menu {
  display: grid;
  gap: 5px;
  border: 1px solid rgba(232, 196, 92, 0.24);
  padding: 5px;
  background: rgba(6, 8, 10, 0.78);
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.36);
}

.card-crawl-debug-menu[hidden] {
  display: none;
}

.card-crawl-debug-button {
  min-height: 28px;
  min-width: 112px;
  border: 1px solid rgba(232, 196, 92, 0.38);
  padding: 5px 8px;
  background: rgba(15, 17, 20, 0.86);
  color: #f1ddb0;
  cursor: pointer;
  font: inherit;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.card-crawl-debug-toggle:hover,
.card-crawl-debug-toggle:focus-visible,
.card-crawl-debug-button:hover,
.card-crawl-debug-button:focus-visible {
  outline: none;
  border-color: rgba(255, 216, 118, 0.72);
  background: rgba(31, 27, 18, 0.94);
  color: #fff1c7;
}

.job-select-bg,
.job-select-vignette {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.job-select-bg {
  z-index: 0;
  background:
    linear-gradient(180deg, rgba(1, 4, 7, 0.06), rgba(0, 0, 0, 0.16) 70%, rgba(0, 0, 0, 0.46)),
    url("assets/ui/job_select/bg/ui_job_select_scene_tavern_party.png") center / cover no-repeat;
  filter: saturate(0.98) contrast(1.02) brightness(1.02);
}

.job-select-vignette {
  z-index: 2;
  background:
    radial-gradient(ellipse at 50% 48%, transparent 0 52%, rgba(0, 0, 0, 0.32) 78%, rgba(0, 0, 0, 0.66) 100%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.42), transparent 22%, transparent 74%, rgba(0, 0, 0, 0.54));
}

.job-cleric-moonlight {
  position: absolute;
  right: -8%;
  top: -3%;
  z-index: 1;
  width: 54%;
  height: 82%;
  opacity: 0.50;
  pointer-events: none;
  mix-blend-mode: screen;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: 78% 10%;
}

.job-cleric-moonlight::before,
.job-cleric-moonlight::after {
  content: "";
  position: absolute;
  pointer-events: none;
}

.job-cleric-moonlight::before {
  left: 5%;
  top: 0;
  width: 98%;
  height: 76%;
  clip-path: polygon(48% 0, 100% 0, 86% 100%, 6% 100%);
  background:
    linear-gradient(102deg, rgba(221, 234, 244, 0.20) 0%, rgba(165, 190, 209, 0.12) 20%, rgba(104, 133, 160, 0.055) 48%, transparent 72%),
    radial-gradient(ellipse at 86% 8%, rgba(224, 237, 246, 0.24), rgba(150, 182, 207, 0.10) 28%, transparent 62%);
  filter: blur(18px);
}

.job-cleric-moonlight::after {
  right: 12%;
  top: 22%;
  width: 43%;
  height: 42%;
  border-radius: 50%;
  background:
    radial-gradient(ellipse at 60% 40%, rgba(215, 230, 241, 0.15), rgba(143, 172, 198, 0.075) 40%, transparent 70%),
    linear-gradient(105deg, transparent, rgba(200, 218, 232, 0.07) 38%, transparent 78%);
  filter: blur(12px);
}

.job-select-stage {
  position: relative;
  z-index: 3;
  width: min(100vw, calc(100vh * 16 / 9));
  height: min(100vh, calc(100vw * 9 / 16));
  overflow: hidden;
  pointer-events: none;
  transform-origin: center;
}

.job-select-screen.is-fixed-preview .job-select-stage {
  width: 1600px;
  height: 900px;
  transform: scale(var(--job-select-stage-scale, 1));
}

.job-select-stage [data-layout-id] {
  --layout-x: 0px;
  --layout-y: 0px;
  --layout-scale: 1;
  --layout-scale-x: 1;
  --layout-scale-y: 1;
}

.job-select-heading {
  position: absolute;
  left: 50%;
  top: 8%;
  z-index: 4;
  color: rgba(244, 226, 177, 0.86);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-align: center;
  text-shadow:
    0 1px 6px rgba(0, 0, 0, 0.78),
    0 0 10px rgba(215, 174, 84, 0.22);
  pointer-events: none;
  transform: translateX(-50%);
  animation: characterSelectPulse 1.9s ease-in-out infinite;
}

@keyframes characterSelectPulse {
  0%,
  100% {
    opacity: 0.86;
  }

  50% {
    opacity: 0.42;
  }
}

.job-select-choice {
  position: absolute;
  left: var(--job-label-x);
  top: var(--job-label-y);
  min-width: clamp(82px, 7.4vw, 128px);
  border: 0;
  padding: 7px 12px 22px;
  appearance: none;
  background: transparent;
  color: #f2e2b8;
  cursor: pointer;
  pointer-events: auto;
  text-align: center;
  box-shadow: none;
  transform: translateX(-50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transition:
    background 160ms ease,
    border-color 160ms ease,
    filter 160ms ease;
}

.job-select-choice--rogue {
  --job-label-x: 14.5%;
  --job-label-y: 27.5%;
}

.job-select-choice--fighter {
  --job-label-x: 38.4%;
  --job-label-y: 17.5%;
}

.job-select-choice--sorceress {
  --job-label-x: 63.3%;
  --job-label-y: 26.2%;
}

.job-select-choice--cleric {
  --job-label-x: 86.4%;
  --job-label-y: 25.3%;
}

.job-select-label {
  position: relative;
  display: inline-block;
  min-width: 0;
  color: rgba(225, 215, 195, 0.68);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(15px, 1.35vw, 22px);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-shadow:
    0 1px 2px rgba(0, 0, 0, 0.9);
}

.job-lock-mark {
  position: relative;
  display: none;
  width: 0.68em;
  height: 0.52em;
  margin-right: 6px;
  border: 1px solid rgba(169, 136, 76, 0.72);
  border-radius: 2px;
  background: linear-gradient(180deg, rgba(109, 86, 48, 0.74), rgba(57, 45, 30, 0.82));
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.68);
  vertical-align: middle;
  transform: translateY(-1px);
}

.job-lock-mark::before {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 72%;
  width: 0.46em;
  height: 0.42em;
  border: 1px solid rgba(169, 136, 76, 0.76);
  border-bottom: 0;
  border-radius: 0.42em 0.42em 0 0;
  transform: translateX(-50%);
}

.job-select-choice.is-locked .job-lock-mark {
  display: inline-block;
}

.job-select-choice.is-locked .job-select-label,
.job-select-choice.is-selected.is-locked .job-select-label {
  color: rgba(188, 162, 107, 0.78);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.9);
}

.job-select-arrow {
  position: absolute;
  left: 50%;
  bottom: -18px;
  width: clamp(16px, 1.05vw, 20px);
  aspect-ratio: 1;
  background: url("assets/ui/job_select/effect/ui_job_select_arrow_down.png") center / contain no-repeat;
  opacity: 0.1;
  filter: brightness(0.78) drop-shadow(0 2px 5px rgba(0, 0, 0, 0.58));
  transform: translateX(-50%);
}

.job-select-choice:hover .job-select-label,
.job-select-choice:focus-visible .job-select-label {
  color: rgba(238, 229, 205, 0.82);
}

.job-select-choice.is-selected .job-select-label {
  color: #ffd56a;
  text-shadow:
    0 1px 2px rgba(0, 0, 0, 0.92),
    0 0 6px rgba(255, 190, 70, 0.35);
}

.job-select-choice.is-selected .job-select-arrow {
  width: clamp(48px, 3.4vw, 56px);
  opacity: 1;
  filter:
    brightness(1.35)
    drop-shadow(0 0 5px rgba(255, 210, 90, 0.9))
    drop-shadow(0 0 10px rgba(255, 170, 40, 0.45))
    drop-shadow(0 2px 6px rgba(0, 0, 0, 0.62));
  animation: jobArrowFloat 1.25s ease-in-out infinite;
}

.job-select-choice.is-selected.is-locked .job-select-arrow {
  opacity: 0.54;
  filter:
    brightness(0.82)
    saturate(0.72)
    drop-shadow(0 2px 5px rgba(0, 0, 0, 0.64));
}

.job-select-choice:focus-visible {
  outline: none;
}

.job-select-choice.is-selected {
  background: transparent;
  box-shadow: none;
}

.job-locked-notice {
  position: absolute;
  left: 50%;
  top: 50.5%;
  z-index: 7;
  width: min(520px, 42%);
  min-height: 74px;
  display: grid;
  place-items: center;
  gap: 6px;
  padding: 14px 22px 16px;
  border: 1px solid rgba(176, 138, 70, 0.56);
  background:
    linear-gradient(180deg, rgba(18, 18, 17, 0.9), rgba(6, 7, 8, 0.92)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.022) 0 1px, transparent 1px 7px);
  box-shadow:
    0 16px 34px rgba(0, 0, 0, 0.42),
    inset 0 0 0 1px rgba(255, 226, 150, 0.035);
  color: rgba(239, 220, 169, 0.92);
  opacity: 0;
  pointer-events: none;
  text-align: center;
  transform: translate(-50%, -48%) scale(0.985);
  transition:
    opacity 220ms ease,
    transform 220ms ease;
}

.job-locked-notice[hidden] {
  display: none;
}

.job-locked-notice.is-visible {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

.job-locked-notice strong {
  display: block;
  color: rgba(198, 151, 75, 0.95);
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 0.18em;
  line-height: 1;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.9);
}

.job-locked-notice span {
  display: block;
  color: rgba(238, 229, 198, 0.92);
  font-size: clamp(12px, 1.05vw, 16px);
  font-weight: 800;
  letter-spacing: 0.035em;
  line-height: 1.42;
  white-space: pre-line;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.86);
}

@keyframes jobArrowFloat {
  0%,
  100% {
    transform: translateX(-50%) translateY(0);
  }

  50% {
    transform: translateX(-50%) translateY(3px);
  }
}

.job-info-panel {
  --job-profile-surface-filter: none;
  --job-profile-surface-opacity: 1;
  --job-profile-surface-tint: rgba(0, 0, 0, 0);
  --job-profile-surface-tint-opacity: 0;
  --job-profile-surface-blend-mode: soft-light;
  position: absolute;
  left: 50%;
  right: auto;
  bottom: 15%;
  z-index: 3;
  width: 44%;
  height: 28%;
  min-height: 0;
  display: block;
  padding: 0;
  background: transparent;
  filter: drop-shadow(0 18px 30px rgba(0, 0, 0, 0.56));
  isolation: isolate;
  overflow: visible;
  transform: translateX(-50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.job-info-panel-surface,
.job-info-panel-frame {
  position: absolute;
  inset: 0;
  pointer-events: none;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.job-info-panel-surface {
  z-index: 0;
  overflow: hidden;
  background: url("assets/ui/job_select/profile/ui_job_select_profile_surface.png") center / 100% 100% no-repeat;
  filter: var(--job-profile-surface-filter);
  opacity: var(--job-profile-surface-opacity);
}

.job-info-panel-surface::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: var(--job-profile-surface-tint);
  opacity: var(--job-profile-surface-tint-opacity);
  mix-blend-mode: var(--job-profile-surface-blend-mode);
  -webkit-mask-image: url("assets/ui/job_select/profile/ui_job_select_profile_surface.png");
  mask-image: url("assets/ui/job_select/profile/ui_job_select_profile_surface.png");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
}

.job-info-panel-frame {
  z-index: 1;
  background: url("assets/ui/job_select/profile/ui_job_select_profile_frame_clean.png") center / 100% 100% no-repeat;
  filter: brightness(0.90) saturate(0.80) contrast(0.98) sepia(0.08);
}

[data-selected-job="rogue"] .job-info-panel {
  --job-profile-surface-filter: saturate(0.9) brightness(0.86) contrast(1.07);
  --job-profile-surface-tint: rgba(7, 13, 22, 0.86);
  --job-profile-surface-tint-opacity: 0.32;
  --job-profile-surface-blend-mode: multiply;
}

[data-selected-job="fighter"] .job-info-panel {
  --job-profile-surface-filter: hue-rotate(145deg) saturate(0.74) brightness(0.86) contrast(1.05);
  --job-profile-surface-tint: rgba(92, 31, 27, 0.78);
  --job-profile-surface-tint-opacity: 0.4;
  --job-profile-surface-blend-mode: soft-light;
}

[data-selected-job="sorceress"] .job-info-panel {
  --job-profile-surface-filter: hue-rotate(-50deg) saturate(1.1) brightness(0.89) contrast(1.05);
  --job-profile-surface-tint:
    radial-gradient(circle at 50% 16%, rgba(130, 86, 190, 0.36), transparent 42%),
    radial-gradient(ellipse at 52% 58%, rgba(105, 65, 172, 0.48), transparent 66%),
    linear-gradient(180deg, rgba(48, 31, 94, 0.76), rgba(0, 0, 0, 0) 58%, rgba(18, 9, 38, 0.06));
  --job-profile-surface-tint-opacity: 0.66;
  --job-profile-surface-blend-mode: normal;
}

[data-selected-job="cleric"] .job-info-panel {
  --job-profile-surface-filter: hue-rotate(-58deg) saturate(0.82) brightness(0.88) contrast(1.05);
  --job-profile-surface-tint: rgba(52, 82, 62, 0.72);
  --job-profile-surface-tint-opacity: 0.38;
  --job-profile-surface-blend-mode: soft-light;
}

.job-info-art {
  position: absolute;
  left: 5.8%;
  top: 22%;
  width: 15%;
  height: 40%;
  z-index: 2;
  display: grid;
  place-items: center;
  transform: translate(18px, -4px) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.job-info-art img {
  width: 90%;
  aspect-ratio: 1;
  object-fit: contain;
  filter:
    drop-shadow(0 8px 12px rgba(0, 0, 0, 0.55))
    drop-shadow(0 0 9px rgba(219, 182, 91, 0.2));
}

.job-info-copy {
  position: absolute;
  left: 24%;
  top: 20%;
  width: 40%;
  height: 42%;
  z-index: 2;
  min-width: 0;
  transform: translate(16px, 2px) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.job-info-copy h2 {
  margin: 0 0 5px;
  color: #fff0c8;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(21px, 1.6vw, 27px);
  letter-spacing: 0.04em;
}

.job-info-description {
  min-height: 30px;
  margin: 0 0 7px;
  color: rgba(235, 230, 213, 0.82);
  font-size: 12px;
  line-height: 1.42;
  white-space: pre-line;
}

.job-info-stats {
  position: absolute;
  left: 6%;
  bottom: 9%;
  width: 88%;
  height: 22%;
  z-index: 2;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
  margin: 0;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.job-info-stats div {
  min-width: 0;
  display: grid;
  place-items: center;
  padding: 0;
}

.job-info-stats dd {
  margin: 0;
  color: #f8e7ad;
  font-size: 15px;
  font-weight: 900;
  transform: translate(24px, 3px);
}

.job-info-passives {
  position: absolute;
  left: 64%;
  top: 17%;
  width: 30%;
  height: 52%;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.job-info-passives span {
  min-height: 25px;
  display: grid;
  align-items: center;
  justify-items: start;
  padding: 4px 6px 4px 32px;
  color: rgba(246, 231, 184, 0.9);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-align: center;
  cursor: grab;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.job-begin-btn {
  position: absolute;
  right: 4%;
  bottom: 3%;
  z-index: 8;
  width: 31%;
  height: auto;
  aspect-ratio: 1131 / 442;
  border: 0;
  padding: 0;
  appearance: none;
  background: transparent;
  cursor: pointer;
  pointer-events: auto;
  overflow: hidden;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.job-begin-btn-base,
.job-begin-btn-text {
  position: absolute;
  inset: 0;
  display: block;
  pointer-events: none;
  background-position: center;
  background-repeat: no-repeat;
  transform-origin: center;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.job-begin-btn-base {
  background-image: url("assets/ui/job_select/button/ui_job_begin_button_base.png");
  background-size: contain;
  filter: brightness(0.9) saturate(0.92);
}

.job-begin-btn-text {
  inset: 22% 13%;
  background-image: url("assets/ui/job_select/button/ui_job_begin_button_text_begin.png");
  background-size: contain;
  animation: jobBeginTextGlint 4.2s ease-in-out infinite;
  filter:
    brightness(0.94)
    saturate(0.94)
    drop-shadow(0 2px 6px rgba(0, 0, 0, 0.72));
}

.job-select-screen.is-tavern-mode .job-begin-btn-text {
  inset: 0;
  display: grid;
  place-items: center;
  background-image: none;
}

.job-select-screen.is-tavern-mode .job-begin-btn-text::after {
  content: "CONFIRM";
  color: #f1dfb5;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(30px, 3.28vw, 52px);
  font-weight: 900;
  letter-spacing: 0.09em;
  line-height: 1;
  text-shadow:
    0 2px 0 rgba(42, 16, 9, 0.88),
    0 0 14px rgba(235, 183, 84, 0.36),
    0 5px 14px rgba(0, 0, 0, 0.76);
}

.job-begin-btn:hover,
.job-begin-btn:focus-visible {
  outline: none;
}

.job-begin-btn:hover .job-begin-btn-text,
.job-begin-btn:focus-visible .job-begin-btn-text {
  filter:
    brightness(1)
    saturate(0.96)
    drop-shadow(0 2px 6px rgba(0, 0, 0, 0.72));
}

.job-begin-btn:disabled {
  cursor: default;
}

.job-begin-btn:disabled .job-begin-btn-base,
.job-begin-btn:disabled .job-begin-btn-text {
  opacity: 0.56;
  filter: saturate(0.55) brightness(0.72);
}

@keyframes jobBeginTextGlint {
  0%,
  58%,
  100% {
    filter:
      brightness(0.94)
      saturate(0.94)
      drop-shadow(0 2px 6px rgba(0, 0, 0, 0.72));
  }

  68% {
    filter:
      brightness(1.16)
      saturate(0.96)
      drop-shadow(0 0 8px rgba(255, 228, 148, 0.36))
      drop-shadow(0 2px 6px rgba(0, 0, 0, 0.72));
  }

  76% {
    filter:
      brightness(0.98)
      saturate(0.95)
      drop-shadow(0 0 4px rgba(255, 205, 90, 0.18))
      drop-shadow(0 2px 6px rgba(0, 0, 0, 0.72));
  }
}

.job-select-help {
  position: absolute;
  left: 50%;
  bottom: 3%;
  z-index: 5;
  width: min(30%, 500px);
  aspect-ratio: 2068 / 210;
  display: block;
  margin: 0;
  padding: 0;
  background: url("assets/ui/job_select/ui_job_select_key_guide_bar_fixed.png") center / contain no-repeat;
  pointer-events: none;
  transform: translateX(-50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(var(--layout-scale, 1));
}

.job-select-screen.is-fixed-preview .job-select-choice {
  min-width: 118px;
}

.job-select-screen.is-fixed-preview .job-select-label {
  font-size: 22px;
}

.job-select-screen.is-fixed-preview .job-select-arrow {
  width: 20px;
}

.job-select-screen.is-fixed-preview .job-select-choice.is-selected .job-select-arrow {
  width: 54px;
}

.job-select-screen.is-fixed-preview .job-info-copy h2 {
  font-size: 26px;
}

.job-select-screen.is-fixed-preview .job-select-help {
  width: min(30%, 500px);
}

.job-select-help span {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.job-select-help kbd {
  font: inherit;
}

@media (max-width: 860px), (max-height: 640px) {
  .job-info-panel {
    left: 50%;
    right: auto;
    bottom: 15%;
    width: 44%;
    transform: translateX(-50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  }

  .job-select-choice {
    min-width: 76px;
    padding: 6px 8px 20px;
  }

  .job-begin-btn {
    right: 4%;
    bottom: 3%;
    width: 31%;
    height: auto;
  }

  .job-select-help {
    bottom: 3%;
    width: min(32%, 420px);
  }

  .job-select-label {
    font-size: 12px;
  }

  .job-select-help {
    font-size: inherit;
  }

  .job-select-help kbd {
    font: inherit;
  }

  .job-select-screen.is-fixed-preview .job-select-choice {
    min-width: 118px;
    padding: 7px 12px 22px;
  }

  .job-select-screen.is-fixed-preview .job-select-label {
    font-size: 22px;
  }

  .job-select-screen.is-fixed-preview .job-select-help {
    bottom: 3%;
    width: min(32%, 420px);
  }

  .job-select-screen.is-fixed-preview .job-select-help kbd {
    font: inherit;
  }
}

.world-map-screen {
  position: fixed;
  inset: 0;
  z-index: 8800;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: #eadfbd;
  background: #030507;
}

.world-map-screen.is-hidden {
  display: none;
}

.world-map-stage {
  position: relative;
  width: min(100vw, 1600px);
  height: min(100vh, 900px);
  overflow: hidden;
  isolation: isolate;
  transform: scale(var(--world-map-stage-scale, 1));
  transform-origin: center;
  background: #07090c;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.72);
}

.world-map-screen.is-fixed-preview .world-map-stage {
  width: 1600px;
  height: 900px;
}

.world-map-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    linear-gradient(90deg, rgba(0, 0, 0, 0.22), transparent 22%, transparent 70%, rgba(0, 0, 0, 0.42)),
    var(--world-map-bg-image, url("assets/ui/world_map/bg/ui_world_map_bg_iron_hold_pre_corruption.png")) center / cover no-repeat;
  filter: saturate(1.02) contrast(1.03) brightness(0.96);
}
.world-map-post-blaze-cloud-glow {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  opacity: 0;
  background: var(--world-map-post-blaze-cloud-glow-image, url("assets/ui/world_map/overlay/ui_world_map_post_blaze_cloud_glow.png")) center / cover no-repeat;
  mix-blend-mode: screen;
  filter: brightness(1.16) saturate(1.18);
  transform: translateZ(0);
  will-change: opacity;
}

.world-map-post-blaze-cloud-glow.is-glowing {
  animation: post-blaze-sky-cloud-glow var(--post-blaze-sky-glow-duration, 680ms) ease-out both;
}

@keyframes post-blaze-sky-cloud-glow {
  0%,
  100% {
    opacity: 0;
  }

  16% {
    opacity: var(--post-blaze-sky-glow-peak, 0.28);
  }

  38% {
    opacity: var(--post-blaze-sky-glow-low, 0.1);
  }

  55% {
    opacity: var(--post-blaze-sky-glow-secondary, 0.18);
  }

  82% {
    opacity: 0.04;
  }
}

.world-map-vignette {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 50% 50%, transparent 0 58%, rgba(0, 0, 0, 0.38) 100%),
    linear-gradient(180deg, rgba(0, 0, 0, 0.2), transparent 24%, transparent 70%, rgba(0, 0, 0, 0.42));
}

.world-map-rift-overlay {
  position: absolute;
  left: -34px;
  top: -28px;
  z-index: 2;
  width: 330px;
  height: 188px;
  pointer-events: none;
  opacity: 0.86;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-rift-overlay::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 33% 48%, rgba(226, 85, 26, 0.88) 0 4%, rgba(255, 159, 55, 0.52) 5%, rgba(12, 3, 1, 0.92) 11%, transparent 12%),
    linear-gradient(140deg, rgba(5, 7, 8, 0.98) 0 41%, transparent 42%),
    linear-gradient(169deg, rgba(18, 19, 18, 0.96) 0 22%, transparent 23%),
    radial-gradient(ellipse at 11% 22%, rgba(63, 39, 27, 0.85), rgba(3, 4, 5, 0.98) 64%, transparent 65%);
  clip-path: polygon(0 0, 79% 0, 62% 9%, 80% 18%, 55% 26%, 71% 38%, 46% 45%, 62% 61%, 34% 56%, 42% 78%, 18% 67%, 0 85%);
  filter: drop-shadow(16px 12px 26px rgba(0, 0, 0, 0.72));
}

.world-map-rift-overlay::after {
  content: "";
  position: absolute;
  left: 118px;
  top: 14px;
  width: 176px;
  height: 122px;
  background:
    linear-gradient(150deg, transparent 0 43%, rgba(224, 91, 33, 0.58) 44%, transparent 45%),
    linear-gradient(18deg, transparent 0 52%, rgba(196, 106, 45, 0.4) 53%, transparent 54%),
    linear-gradient(104deg, transparent 0 46%, rgba(244, 154, 73, 0.32) 47%, transparent 48%);
  clip-path: polygon(0 0, 100% 0, 58% 100%, 0 85%);
  opacity: 0.7;
}

.world-map-rift-eye {
  position: absolute;
  left: 84px;
  top: 58px;
  width: 76px;
  height: 30px;
  border-radius: 50%;
  background:
    radial-gradient(circle at 55% 50%, #050201 0 15%, #f18b25 17% 26%, #501608 34%, transparent 35%),
    radial-gradient(ellipse at center, rgba(241, 96, 31, 0.92), rgba(73, 12, 6, 0.86) 46%, rgba(2, 2, 2, 0.96) 72%);
  box-shadow:
    0 0 24px rgba(232, 84, 23, 0.42),
    inset 0 0 16px rgba(0, 0, 0, 0.8);
  transform: rotate(-7deg);
}

.world-map-rift-claw {
  position: absolute;
  width: 74px;
  height: 6px;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(255, 150, 59, 0), rgba(231, 95, 39, 0.74), rgba(4, 3, 2, 0.92));
  box-shadow: 0 0 12px rgba(214, 84, 26, 0.28);
  transform-origin: left center;
}

.world-map-rift-claw--one {
  left: 145px;
  top: 104px;
  transform: rotate(23deg);
}

.world-map-rift-claw--two {
  left: 126px;
  top: 132px;
  width: 104px;
  transform: rotate(11deg);
}

.world-map-dragon-eye-corner {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 14;
  width: 22%;
  height: auto;
  opacity: 1;
  mix-blend-mode: normal;
  pointer-events: none;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-screen.is-world-map-phase-post-blaze .world-map-dragon-eye-corner,
.world-map-screen.is-world-map-phase-final-clear .world-map-dragon-eye-corner {
  display: none;
}

.world-map-spot-layer {
  position: absolute;
  inset: 0;
  z-index: 3;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.world-map-spot {
  --spot-x: 50%;
  --spot-y: 50%;
  position: absolute;
  left: var(--spot-x);
  top: var(--spot-y);
  width: 160px;
  height: 88px;
  min-width: 136px;
  padding: 0;
  border: 0;
  color: #eadfbd;
  background: transparent;
  transform: translate(-50%, -50%);
  cursor: pointer;
}

.world-map-spot::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 24px;
  height: 24px;
  border: 1px solid rgba(224, 182, 94, 0.85);
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(255, 225, 142, 0.95) 0 18%, rgba(163, 88, 35, 0.58) 42%, rgba(12, 12, 11, 0.88) 74%);
  box-shadow:
    0 0 0 4px rgba(5, 8, 10, 0.68),
    0 0 18px rgba(206, 148, 62, 0.55),
    inset 0 0 8px rgba(0, 0, 0, 0.72);
  transform: translate(-50%, -50%) rotate(45deg);
}

.world-map-spot::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(209, 163, 78, 0.32);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  opacity: 0;
  box-shadow: 0 0 22px rgba(201, 154, 74, 0.34);
}

.world-map-spot-label {
  position: absolute;
  left: 50%;
  top: calc(50% + 24px);
  display: inline-grid;
  gap: 2px;
  min-width: 136px;
  padding: 6px 10px 7px;
  border: 1px solid rgba(180, 139, 70, 0.5);
  background:
    linear-gradient(180deg, rgba(19, 23, 27, 0.88), rgba(5, 7, 9, 0.92)),
    rgba(0, 0, 0, 0.68);
  box-shadow:
    0 10px 22px rgba(0, 0, 0, 0.58),
    inset 0 0 0 1px rgba(255, 236, 180, 0.04);
  text-align: center;
  transform: translateX(-50%);
}

.world-map-spot-name {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1;
  text-transform: uppercase;
  text-shadow: 0 2px 5px rgba(0, 0, 0, 0.8);
}

.world-map-spot-state {
  color: #b8a77c;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.1em;
  line-height: 1;
  text-transform: uppercase;
}

.world-map-spot.is-selected::after,
.world-map-spot:focus-visible::after {
  opacity: 1;
  animation: worldMapFocusPulse 1.6s ease-in-out infinite;
}

.world-map-spot.is-selected::before,
.world-map-spot:focus-visible::before {
  border-color: rgba(255, 222, 132, 0.98);
  box-shadow:
    0 0 0 5px rgba(5, 8, 10, 0.68),
    0 0 24px rgba(235, 182, 84, 0.74),
    inset 0 0 8px rgba(0, 0, 0, 0.72);
}

.world-map-spot.is-locked {
  color: #8b8478;
}

.world-map-spot.is-locked::before {
  border-color: rgba(148, 144, 134, 0.62);
  background:
    radial-gradient(circle, rgba(185, 183, 171, 0.82) 0 14%, rgba(71, 75, 78, 0.62) 45%, rgba(12, 12, 12, 0.9) 76%);
  box-shadow:
    0 0 0 4px rgba(5, 8, 10, 0.64),
    0 0 14px rgba(173, 176, 176, 0.28),
    inset 0 0 8px rgba(0, 0, 0, 0.72);
}

.world-map-spot.is-cleared .world-map-spot-state {
  color: #d5bf83;
}

.world-map-spot.is-sealed .world-map-spot-state {
  color: #bca5d8;
}

.world-map-spot.is-sealed::before {
  border-color: rgba(176, 144, 214, 0.74);
  background:
    radial-gradient(circle, rgba(222, 190, 255, 0.9) 0 14%, rgba(87, 55, 119, 0.62) 45%, rgba(12, 10, 16, 0.9) 76%);
  box-shadow:
    0 0 0 4px rgba(5, 8, 10, 0.64),
    0 0 16px rgba(164, 102, 215, 0.34),
    inset 0 0 8px rgba(0, 0, 0, 0.72);
}

.world-map-info-panel {
  position: absolute;
  right: 36px;
  top: 86px;
  z-index: 3;
  width: 318px;
  min-height: 430px;
  padding: 28px 28px 24px;
  border: 1px solid rgba(203, 159, 84, 0.44);
  background:
    linear-gradient(180deg, rgba(23, 28, 32, 0.88), rgba(6, 8, 11, 0.94)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.022) 0 1px, transparent 1px 8px);
  box-shadow:
    0 24px 48px rgba(0, 0, 0, 0.62),
    inset 0 0 0 1px rgba(0, 0, 0, 0.86),
    inset 0 0 34px rgba(0, 0, 0, 0.38);
}

.world-map-kicker,
.world-map-status {
  margin: 0;
  color: #b38a45;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.world-map-info-panel h2 {
  margin: 8px 0 10px;
  color: #f1e4bf;
  font-size: 30px;
  line-height: 1;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.world-map-status {
  color: #d5bf83;
}

.world-map-description {
  min-height: 132px;
  margin: 24px 0 18px;
  color: #c8bfa7;
  font-size: 15px;
  line-height: 1.55;
}

.world-map-current-adventurer {
  margin: 0 0 22px;
  padding: 10px 12px;
  border: 1px solid rgba(203, 159, 84, 0.28);
  color: #d5bf83;
  background: rgba(8, 10, 12, 0.44);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1.35;
  text-transform: uppercase;
}

.world-map-enter-btn {
  width: 100%;
  min-height: 58px;
  border: 1px solid rgba(221, 174, 88, 0.52);
  color: #f4e5bd;
  background:
    linear-gradient(180deg, rgba(116, 38, 30, 0.78), rgba(48, 15, 14, 0.92)),
    rgba(20, 12, 10, 0.9);
  box-shadow:
    0 14px 26px rgba(0, 0, 0, 0.42),
    inset 0 0 0 1px rgba(255, 238, 188, 0.06);
  font-size: 16px;
  font-weight: 900;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  cursor: pointer;
}

.world-map-enter-btn:disabled {
  color: #867e70;
  border-color: rgba(148, 134, 104, 0.24);
  background: linear-gradient(180deg, rgba(42, 45, 47, 0.78), rgba(13, 14, 15, 0.92));
  cursor: default;
}

.world-map-controls {
  position: absolute;
  left: 50%;
  bottom: 30px;
  z-index: 3;
  display: flex;
  gap: 15px;
  align-items: center;
  justify-content: center;
  padding: 8px 16px;
  border: 1px solid rgba(202, 163, 87, 0.18);
  border-left-color: rgba(202, 163, 87, 0.06);
  border-right-color: rgba(202, 163, 87, 0.06);
  color: rgba(216, 203, 174, 0.84);
  background: rgba(5, 7, 9, 0.36);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.24);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.92;
  transform: translateX(-50%);
  backdrop-filter: blur(1px);
}

.world-map-controls span,
.world-map-controls button {
  display: inline-flex;
  align-items: center;
  border: 0;
  line-height: 1;
  white-space: nowrap;
}

.world-map-controls kbd {
  display: inline-grid;
  place-items: center;
  min-width: 40px;
  height: 24px;
  margin-right: 8px;
  padding: 0 8px;
  border: 1px solid rgba(194, 154, 82, 0.40);
  border-radius: 3px;
  color: rgba(234, 216, 172, 0.88);
  background: rgba(5, 7, 9, 0.60);
  box-shadow:
    inset 0 0 0 1px rgba(255, 235, 177, 0.035),
    0 0 8px rgba(209, 166, 77, 0.08);
  font-size: 11px;
  line-height: 1;
}

.world-map-title {
  position: absolute;
  left: 34px;
  top: 26px;
  z-index: 4;
  color: #d5b779;
  text-shadow: 0 4px 16px rgba(0, 0, 0, 0.85);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-title::before {
  content: "✦";
  position: absolute;
  left: -2px;
  top: -10px;
  width: 58px;
  height: 74px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(199, 153, 79, 0.55);
  color: #cfa05a;
  background: rgba(4, 7, 9, 0.52);
  clip-path: polygon(50% 0, 100% 20%, 88% 88%, 50% 100%, 12% 88%, 0 20%);
  font-size: 28px;
}

.world-map-title p {
  margin: 0 0 2px 78px;
  color: #d6ae6e;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 38px;
  font-weight: 900;
  letter-spacing: 0.08em;
  line-height: 1;
  text-transform: uppercase;
}

.world-map-title span {
  display: block;
  margin-left: 82px;
  color: #cdbb93;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.world-map-options-btn {
  position: relative;
  z-index: 1;
  min-width: 0;
  height: auto;
  display: inline-flex;
  align-items: center;
  gap: 0;
  padding: 0;
  border: 0;
  color: rgba(205, 193, 167, 0.78);
  background: transparent;
  box-shadow: none;
  font-family: inherit;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
  cursor: pointer;
}

.world-map-controls .world-map-options-btn {
  color: inherit;
  font-size: inherit;
  line-height: 1;
  transform: none;
}

.world-map-options-btn::before {
  content: none;
}

.world-map-options-btn:hover,
.world-map-options-btn:focus-visible {
  color: #eadfbd;
  outline: none;
}

.world-map-options-btn:hover kbd,
.world-map-options-btn:focus-visible kbd {
  border-color: rgba(218, 174, 92, 0.58);
  color: #f0dfb8;
  background: rgba(14, 18, 20, 0.72);
}

.world-map-spot {
  width: 176px;
  height: 112px;
  z-index: 3;
}

.world-map-spot-icon {
  position: absolute;
  left: 50%;
  top: 25px;
  width: 54px;
  height: 54px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(191, 145, 70, 0.62);
  color: #c9b37d;
  background:
    radial-gradient(circle at 50% 35%, rgba(28, 36, 44, 0.94), rgba(3, 5, 7, 0.92) 72%),
    rgba(6, 8, 10, 0.86);
  box-shadow: 0 0 0 3px rgba(4, 7, 9, 0.72), 0 10px 22px rgba(0, 0, 0, 0.48);
  transform: translate(-50%, -50%) rotate(45deg);
}

.world-map-spot-icon::before {
  content: "";
  display: block;
  font-size: 22px;
  line-height: 1;
  transform: rotate(-45deg);
}

.world-map-spot-icon--mug::before { content: "T"; }
.world-map-spot-icon--relic::before { content: "R"; }
.world-map-spot-icon--vault::before { content: "V"; }
.world-map-spot-icon--forest::before { content: "F"; }
.world-map-spot-icon--frozen::before { content: "*"; }
.world-map-spot-icon--volcanic::before { content: "^"; }
.world-map-spot-icon--hold::before { content: "H"; }
.world-map-spot-icon--collector::before { content: "C"; }
.world-map-spot::before {
  display: none;
}

.world-map-spot::after {
  top: 25px;
  width: 74px;
  height: 74px;
  border-radius: 0;
  border-color: rgba(107, 198, 255, 0.52);
  box-shadow: 0 0 20px rgba(77, 174, 255, 0.48), inset 0 0 14px rgba(77, 174, 255, 0.16);
  transform: translate(-50%, -50%) rotate(45deg);
}

.world-map-spot-label {
  top: 58px;
  min-width: 148px;
  gap: 2px;
  padding: 6px 10px 7px;
  border-color: rgba(191, 145, 70, 0.68);
  background: linear-gradient(180deg, rgba(24, 29, 33, 0.92), rgba(4, 6, 8, 0.96));
}

.world-map-spot-name {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 14px;
  letter-spacing: 0.05em;
}

.world-map-spot-state {
  color: #79e46b;
  font-size: 10px;
}

.world-map-spot.is-locked .world-map-spot-icon {
  border-color: rgba(142, 138, 126, 0.58);
  color: #938b7a;
  filter: brightness(0.74) saturate(0.7);
  box-shadow: 0 0 0 4px rgba(4, 7, 9, 0.72), 0 10px 22px rgba(0, 0, 0, 0.44);
}

.world-map-spot.is-locked .world-map-spot-state {
  color: #958a73;
}

.world-map-spot.is-sealed .world-map-spot-icon {
  border-color: rgba(177, 139, 220, 0.74);
  color: #c9a8ee;
  box-shadow: 0 0 0 4px rgba(4, 7, 9, 0.72), 0 0 24px rgba(159, 92, 214, 0.42);
}

.world-map-spot.is-sealed .world-map-spot-state {
  color: #c6a6e8;
}

.world-map-spot.is-closed .world-map-spot-icon {
  border-color: rgba(158, 132, 92, 0.6);
  color: #c7aa78;
  filter: brightness(0.86) saturate(0.78);
  box-shadow: 0 0 0 4px rgba(4, 7, 9, 0.72), 0 9px 18px rgba(0, 0, 0, 0.44);
}

.world-map-spot.is-closed .world-map-spot-state {
  color: #a89268;
}

.world-map-spot.is-selected .world-map-spot-icon,
.world-map-spot:focus-visible .world-map-spot-icon {
  border-color: rgba(119, 204, 255, 0.86);
  color: #d9effc;
  box-shadow:
    0 0 0 4px rgba(6, 10, 13, 0.74),
    0 0 24px rgba(76, 177, 255, 0.58),
    inset 0 0 14px rgba(72, 168, 240, 0.2);
}

.world-map-info-panel {
  right: 34px;
  top: 76px;
  z-index: 4;
  width: 330px;
  min-height: 528px;
  padding: 24px 24px 20px;
  border-color: transparent;
  background:
    linear-gradient(180deg, rgba(17, 22, 26, 0.93), rgba(4, 7, 9, 0.97)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.02) 0 1px, transparent 1px 9px);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: right top;
  isolation: isolate;
  box-shadow: none;
}

.world-map-unlock-notice {
  position: absolute;
  left: 50%;
  top: 88px;
  z-index: 8;
  min-width: 260px;
  padding: 14px 26px;
  border: 1px solid rgba(204, 165, 78, 0.74);
  background:
    linear-gradient(180deg, rgba(18, 23, 24, 0.92), rgba(5, 7, 8, 0.92)),
    rgba(0, 0, 0, 0.84);
  box-shadow:
    0 0 24px rgba(220, 176, 76, 0.24),
    inset 0 0 18px rgba(201, 153, 58, 0.12);
  color: #f4e5b9;
  text-align: center;
  text-transform: uppercase;
  transform: translate(-50%, -10px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 220ms ease, transform 220ms ease;
}

.world-map-unlock-notice[hidden] {
  display: none;
}

.world-map-unlock-notice.is-visible {
  opacity: 1;
  transform: translate(-50%, 0);
}

.world-map-unlock-notice strong,
.world-map-unlock-notice span {
  display: block;
  letter-spacing: 0.04em;
}

.world-map-unlock-notice strong {
  font-size: 12px;
  color: #cda84d;
}

.world-map-unlock-notice span {
  margin-top: 5px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 22px;
  font-weight: 800;
}

.world-map-destination-frame {
  display: block;
  position: absolute;
  inset: -14px;
  z-index: 0;
  background: url("assets/ui/world_map/panel/ui_world_map_destination_panel_frame_keyed.png") center / 100% 100% no-repeat;
  pointer-events: none;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.world-map-info-panel > * {
  position: relative;
  z-index: 1;
}

.world-map-info-panel > .world-map-destination-frame {
  position: absolute;
  z-index: 0;
}

.world-map-info-panel :where(
  .world-map-kicker,
  h2,
  .world-map-status,
  .world-map-destination-image,
  .world-map-description,
  .world-map-detail-block,
  .world-map-enter-btn,
  .world-map-passive-icon
) {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-info-panel h2 {
  font-size: 30px;
  text-align: center;
}

.world-map-status {
  text-align: center;
}

.world-map-destination-image {
  position: relative;
  height: 126px;
  margin: 16px 0 14px;
  border: 1px solid rgba(190, 146, 73, 0.38);
  background:
    linear-gradient(180deg, rgba(9, 12, 15, 0.2), rgba(5, 7, 9, 0.58)),
    var(--world-map-destination-image, none) center / cover no-repeat;
  box-shadow:
    inset 0 0 0 1px rgba(255, 232, 175, 0.05),
    0 12px 24px rgba(0, 0, 0, 0.35);
  pointer-events: none;
}

.world-map-destination-image[hidden] {
  display: none;
}

.world-map-description {
  min-height: auto;
  margin: 18px 0 14px;
  padding-bottom: 13px;
  border-bottom: 1px solid rgba(178, 139, 74, 0.24);
  font-size: 13px;
  line-height: 1.46;
  white-space: pre-line;
}

.world-map-detail-block {
  margin: 0 0 11px;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(178, 139, 74, 0.18);
}

.world-map-detail-block[hidden] {
  display: none;
}

.world-map-detail-block strong,
.world-map-card-kicker {
  display: block;
  margin-bottom: 6px;
  color: #b98c4b;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.world-map-detail-block span {
  white-space: pre-line;
  color: #cfc3a8;
  font-size: 12px;
  line-height: 1.38;
}

.world-map-traits span {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.world-map-traits em {
  display: inline-grid;
  place-items: center;
  min-width: 28px;
  height: 28px;
  padding: 3px 7px;
  border: 1px solid rgba(190, 146, 73, 0.34);
  color: #d8c596;
  background: rgba(7, 10, 13, 0.44);
  font-size: 10px;
  font-style: normal;
  letter-spacing: 0.08em;
}

.world-map-traits .world-map-passive-icon {
  width: 28px;
  min-width: 28px;
  padding: 0;
  border-radius: 50%;
  background:
    var(--passive-icon-image, none) center / 18px 18px no-repeat,
    radial-gradient(circle, rgba(221, 178, 95, 0.18), rgba(6, 8, 11, 0.72));
  color: transparent;
  overflow: hidden;
}

.world-map-passive-icon--thievery {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_thievery_transparent.png");
}

.world-map-passive-icon--doubleAttack {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_double_attack_transparent.png");
}

.world-map-passive-icon--stealth {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_stealth_transparent.png");
}

.world-map-passive-icon--bash {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_fighter_bash_transparent.png");
}

.world-map-passive-icon--swordMaster {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_fighter_sword_master_transparent.png");
}

.world-map-passive-icon--sluggish {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_fighter_fortress_transparent.png");
}

.world-map-passive-icon--arcaneBloodline {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_sorceress_arcane_bloodline_transparent.png");
}

.world-map-passive-icon--magicMaster {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_sorceress_magic_master_transparent.png");
}

.world-map-passive-icon--frailConstitution {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_sorceress_glass_cannon_transparent.png");
}

.world-map-traits .world-map-passive-icon--missing {
  color: #d8c596;
  font-size: 8px;
  line-height: 28px;
  text-align: center;
  text-indent: 0;
}

.world-map-enter-btn {
  width: min(78%, 242px);
  min-height: 0;
  aspect-ratio: 7 / 2;
  display: grid;
  place-items: center;
  margin: 14px auto 0;
  color: #f5d58d;
  background: url("assets/ui/exploration/button/ui_exploration_button_blue_gold_base.png") center / contain no-repeat;
  background-color: transparent;
  border: 0;
  box-shadow: none;
  font-size: 22px;
  font-family: Georgia, "Times New Roman", serif;
}

.world-map-enter-btn:disabled {
  color: #867e70;
  filter: grayscale(0.42) brightness(0.62);
  cursor: default;
}

.world-map-adventurer-card {
  position: absolute;
  right: 34px;
  bottom: 28px;
  z-index: 4;
  width: 410px;
  padding: 12px 16px 13px;
  border: 1px solid rgba(203, 159, 84, 0.52);
  background: linear-gradient(180deg, rgba(19, 25, 29, 0.92), rgba(5, 8, 10, 0.96));
  box-shadow: 0 18px 38px rgba(0, 0, 0, 0.54), inset 0 0 0 1px rgba(255, 235, 177, 0.04);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: right bottom;
}

.world-map-adventurer-main {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
}

.world-map-adventurer-portrait {
  width: 72px;
  aspect-ratio: 1;
  border: 1px solid rgba(196, 151, 74, 0.48);
  background:
    linear-gradient(180deg, rgba(8, 11, 13, 0.1), rgba(0, 0, 0, 0.4)),
    var(--adventurer-portrait) center / cover no-repeat,
    rgba(8, 10, 12, 0.8);
}

.world-map-adventurer-summary h3 {
  margin: 0 0 7px;
  color: #f1e4bf;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 25px;
  letter-spacing: 0.06em;
}

.world-map-adventurer-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  margin: 0 0 8px;
}

.world-map-adventurer-stats div {
  display: flex;
  gap: 5px;
  align-items: baseline;
}

.world-map-adventurer-stats dt {
  color: #c29454;
  font-size: 10px;
  font-weight: 900;
}

.world-map-adventurer-stats dd {
  margin: 0;
  color: #eadfbd;
  font-size: 13px;
  font-weight: 900;
}

.world-map-adventurer-passives {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.world-map-adventurer-passives span {
  padding: 3px 7px;
  border: 1px solid rgba(194, 151, 78, 0.35);
  color: #d8c596;
  background: rgba(8, 10, 12, 0.46);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.06em;
}

.world-map-relic-slots {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
  margin: 11px 0 10px;
}

.world-map-relic-slot {
  min-width: 0;
  padding: 5px 5px;
  border: 1px solid rgba(146, 111, 55, 0.35);
  background: rgba(5, 7, 9, 0.56);
  text-align: center;
}

.world-map-relic-slot strong,
.world-map-relic-slot span {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.world-map-relic-slot strong {
  color: #b98c4b;
  font-size: 9px;
  letter-spacing: 0.08em;
  margin-bottom: 2px;
}

.world-map-relic-slot span {
  color: #cfc3a8;
  font-size: 9px;
}

.world-map-gear-btn {
  width: 100%;
  min-height: 30px;
  border: 1px solid rgba(198, 151, 75, 0.48);
  color: #eadfbd;
  background: linear-gradient(180deg, rgba(42, 34, 24, 0.82), rgba(12, 9, 7, 0.94));
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.12em;
}

.world-map-auto-save {
  position: absolute;
  left: 34px;
  bottom: 25px;
  z-index: 4;
  margin: 0;
  color: rgba(202, 163, 94, 0.78);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.78);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left bottom;
}

.world-map-auto-save::before {
  content: "✦";
  display: inline-grid;
  place-items: center;
  width: 26px;
  height: 26px;
  margin-right: 8px;
  border: 1px solid rgba(209, 166, 77, 0.68);
  border-radius: 50%;
  color: rgba(244, 209, 110, 0.86);
  background: rgba(8, 10, 12, 0.6);
  box-shadow: 0 0 12px rgba(230, 184, 68, 0.22);
}

.world-map-controls {
  bottom: 30px;
  padding: 8px 16px;
  background: rgba(5, 7, 9, 0.42);
  border-top: 1px solid rgba(202, 163, 87, 0.20);
  border-bottom: 1px solid rgba(202, 163, 87, 0.20);
}

.world-map-title {
  left: 30px;
  top: 24px;
  opacity: 0.05;
  filter: saturate(0.75);
}

.world-map-title::before {
  content: none;
}

.world-map-title p {
  margin: 0;
  font-size: 20px;
  letter-spacing: 0.1em;
}

.world-map-title span {
  display: none;
}

.world-map-screen .world-map-title {
  display: none;
}

.world-map-spot {
  width: 132px;
  height: 86px;
  min-width: 0;
}

.world-map-spot-icon {
  top: 20px;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border-color: rgba(150, 128, 88, 0.56);
  color: #b9e8db;
  background:
    radial-gradient(circle at 50% 40%, rgba(36, 31, 24, 0.92), rgba(5, 7, 9, 0.94) 72%),
    rgba(7, 7, 7, 0.94);
  box-shadow:
    0 0 0 1px rgba(3, 5, 6, 0.78),
    0 6px 12px rgba(0, 0, 0, 0.36),
    inset 0 0 8px rgba(190, 148, 88, 0.08);
  transform: translate(-50%, -50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.world-map-spot-icon::before {
  color: inherit;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 15px;
  font-weight: 900;
  transform: none;
}

.world-map-spot-icon--mug::before { content: "T"; }
.world-map-spot-icon--relic::before { content: "R"; }
.world-map-spot-icon--vault::before { content: "V"; }
.world-map-spot-icon--forest::before { content: "F"; }
.world-map-spot-icon--frozen::before { content: "*"; }
.world-map-spot-icon--volcanic::before { content: "^"; }
.world-map-spot-icon--hold::before { content: "H"; }
.world-map-spot-icon--collector::before { content: "C"; }

.world-map-spot-icon {
  background:
    var(--world-map-spot-icon-image, url("assets/ui/world_map/spots/ui_world_map_spot_icon_base.png")) center / 92% 92% no-repeat,
    radial-gradient(circle at 50% 40%, rgba(36, 31, 24, 0.92), rgba(5, 7, 9, 0.94) 72%),
    rgba(7, 7, 7, 0.94);
}

.world-map-spot-icon::before {
  content: none !important;
}

.world-map-spot-icon-wrap {
  position: absolute;
  left: 50%;
  top: 20px;
  z-index: 3;
  width: 34px;
  height: 34px;
  pointer-events: none !important;
  transform: translate(-50%, -50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.world-map-spot-icon-wrap .world-map-spot-icon {
  position: absolute;
  inset: 0;
  left: auto;
  top: auto;
  width: 100%;
  height: 100%;
  transform: none;
}

.world-map-spot-cursor {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 7px);
  z-index: 5;
  width: 25px;
  aspect-ratio: 300 / 353;
  background: url("assets/ui/world_map/spots/ui_world_map_selected_marker_arrow.png") center / contain no-repeat;
  filter:
    drop-shadow(0 2px 3px rgba(0, 0, 0, 0.55))
    drop-shadow(0 0 5px rgba(218, 166, 76, 0.2));
  opacity: 0;
  pointer-events: none !important;
  transform: translateX(-50%);
}

.world-map-spot.is-selected .world-map-spot-cursor,
.world-map-spot:focus-visible .world-map-spot-cursor {
  opacity: 0.92;
  animation: world-map-spot-cursor-drift 2.8s ease-in-out infinite;
}

@keyframes world-map-spot-cursor-drift {
  0%,
  100% {
    margin-bottom: 0;
  }
  50% {
    margin-bottom: 3px;
  }
}

.world-map-spot-label-plate {
  position: absolute;
  left: 50%;
  top: 38px;
  z-index: 2;
  width: 128px;
  min-height: 49px;
  display: grid;
  place-items: center;
  padding: 7px 13px 8px;
  border: 0;
  background: url("assets/ui/world_map/spots/ui_world_map_spot_label_plate_keyed.png") center / 100% 100% no-repeat;
  box-shadow:
    0 8px 16px rgba(0, 0, 0, 0.38),
    0 0 9px rgba(180, 124, 56, 0.08);
  transform: translateX(-50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center top;
}

.world-map-spot-text {
  display: grid;
  gap: 2px;
  justify-items: center;
  width: 100%;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.world-map-spot::after {
  top: 20px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border-color: rgba(128, 213, 236, 0.34);
  box-shadow:
    0 0 16px rgba(64, 171, 213, 0.28),
    inset 0 0 10px rgba(89, 185, 220, 0.1);
  transform: translate(-50%, -50%);
}

.world-map-spot-label {
  top: 40px;
  min-width: 112px;
  gap: 1px;
  padding: 4px 8px 5px;
  border-color: rgba(162, 128, 68, 0.5);
  background: linear-gradient(180deg, rgba(20, 24, 27, 0.76), rgba(5, 7, 9, 0.84));
  box-shadow:
    0 8px 16px rgba(0, 0, 0, 0.44),
    inset 0 0 0 1px rgba(255, 236, 180, 0.035);
}

.world-map-spot-name {
  display: grid;
  justify-items: center;
  max-width: 100%;
  color: #eadfbd;
  font-size: 10px;
  line-height: 0.96;
  letter-spacing: 0.055em;
}

.world-map-spot-name span {
  display: block;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.world-map-spot-state {
  color: #88dc80;
  font-size: 8px;
  letter-spacing: 0.09em;
  line-height: 1;
}

.world-map-spot.is-selected .world-map-spot-icon,
.world-map-spot:focus-visible .world-map-spot-icon {
  border-color: rgba(137, 220, 242, 0.86);
  color: #e1fbff;
  box-shadow:
    0 0 0 2px rgba(6, 10, 13, 0.78),
    0 0 15px rgba(77, 182, 225, 0.46),
    inset 0 0 12px rgba(72, 168, 240, 0.16);
}

.world-map-spot.is-selected .world-map-spot-icon--vault,
.world-map-spot:focus-visible .world-map-spot-icon--vault {
  border-color: rgba(158, 232, 255, 0.96);
  box-shadow:
    0 0 0 2px rgba(6, 10, 13, 0.82),
    0 0 19px rgba(72, 190, 255, 0.58),
    0 0 9px rgba(174, 229, 255, 0.32),
    inset 0 0 13px rgba(72, 168, 240, 0.2);
}

.world-map-spot.is-locked {
  color: #908878;
}

.world-map-spot.is-locked .world-map-spot-icon {
  border-color: rgba(128, 117, 96, 0.54);
  color: #888274;
  filter: brightness(0.92) saturate(0.78);
  box-shadow:
    0 0 0 1px rgba(3, 5, 6, 0.72),
    0 6px 12px rgba(0, 0, 0, 0.34);
}

.world-map-spot.is-locked .world-map-spot-label {
  border-color: rgba(111, 104, 88, 0.42);
  background: linear-gradient(180deg, rgba(18, 20, 21, 0.7), rgba(4, 5, 6, 0.82));
}

.world-map-spot.is-locked .world-map-spot-label-plate {
  border: 0;
  background: url("assets/ui/world_map/spots/ui_world_map_spot_label_plate_keyed.png") center / 100% 100% no-repeat;
}

.world-map-spot.is-locked .world-map-spot-state {
  color: #8d846f;
}

.world-map-spot.is-sealed .world-map-spot-icon {
  border-color: rgba(146, 124, 171, 0.58);
  color: #bca6d7;
  background:
    var(--world-map-spot-icon-image, url("assets/ui/world_map/spots/ui_world_map_spot_icon_base.png")) center / 92% 92% no-repeat,
    radial-gradient(circle at 50% 40%, rgba(36, 30, 38, 0.92), rgba(6, 6, 10, 0.94) 72%),
    rgba(8, 7, 10, 0.94);
  box-shadow:
    0 0 0 1px rgba(3, 5, 7, 0.74),
    0 0 10px rgba(138, 98, 184, 0.18);
}

.world-map-spot-icon--hold {
  filter: brightness(1.12) contrast(1.08);
}

.world-map-spot.is-sealed .world-map-spot-icon--hold {
  border-color: rgba(190, 164, 218, 0.68);
  box-shadow:
    0 0 0 2px rgba(3, 5, 7, 0.76),
    0 0 15px rgba(154, 116, 196, 0.28),
    inset 0 0 10px rgba(221, 194, 255, 0.08);
}

.world-map-spot.is-sealed .world-map-spot-label {
  border-color: rgba(146, 124, 171, 0.38);
}

.world-map-spot.is-sealed .world-map-spot-label-plate {
  border: 0;
  background: url("assets/ui/world_map/spots/ui_world_map_spot_label_plate_keyed.png") center / 100% 100% no-repeat;
}

.world-map-spot.is-sealed .world-map-spot-state {
  color: #b8a3c9;
}

.world-map-spot.is-closed .world-map-spot-icon {
  border-color: rgba(158, 128, 86, 0.58);
  color: #bfa579;
  filter: brightness(0.96) saturate(0.82);
  box-shadow:
    0 0 0 1px rgba(3, 5, 6, 0.72),
    0 6px 12px rgba(0, 0, 0, 0.34);
}

.world-map-spot.is-closed .world-map-spot-label-plate {
  border: 0;
  background: url("assets/ui/world_map/spots/ui_world_map_spot_label_plate_keyed.png") center / 100% 100% no-repeat;
}

.world-map-spot.is-closed .world-map-spot-state {
  color: #a58c62;
}

.world-map-spot-icon--collector {
  filter: brightness(1.08) contrast(1.04);
}

.world-map-spot.is-cleared .world-map-spot-icon {
  border-color: rgba(210, 185, 116, 0.62);
  color: #e6d098;
}

.world-map-spot.is-cleared .world-map-spot-state {
  color: #d5bf83;
}

.world-map-info-panel {
  right: 30px;
  top: 72px;
  width: 324px;
  min-height: 462px;
  padding: 22px 22px 18px;
}

.world-map-info-panel h2 {
  margin: 5px 0 3px;
  color: #efe2bd;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 26px;
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  white-space: nowrap;
  text-wrap: nowrap;
  max-width: 100%;
  overflow: hidden;
  text-shadow:
    0 1px 0 rgba(255, 245, 190, 0.2),
    0 2px 8px rgba(0, 0, 0, 0.72),
    0 0 14px rgba(181, 127, 54, 0.14);
}

.world-map-description {
  margin: 16px 0 13px;
  font-size: 13px;
  line-height: 1.45;
}

.world-map-destination-image {
  height: 120px;
  margin: 14px 0 13px;
}

.world-map-detail-block {
  margin-bottom: 10px;
  padding-bottom: 9px;
}

.world-map-enter-btn {
  min-height: 0;
}

.world-map-adventurer-card {
  right: 30px;
  bottom: 54px;
  width: 286px;
  min-height: 0;
  display: flex;
  gap: 10px;
  align-items: baseline;
  justify-content: center;
  padding: 10px 14px;
  background:
    linear-gradient(180deg, rgba(17, 21, 24, 0.9), rgba(4, 7, 9, 0.96)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 8px);
}

.world-map-adventurer-card .world-map-card-kicker {
  display: inline;
  margin: 0;
  color: #b98c4b;
  font-size: 10px;
  letter-spacing: 0.12em;
  white-space: nowrap;
}

.world-map-adventurer-card strong {
  color: #f1e4bf;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 17px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.world-map-adventurer-card {
  right: 2.2%;
  bottom: 3.2%;
  z-index: 4;
  width: 34%;
  min-height: 0;
  aspect-ratio: 1672 / 941;
  display: grid;
  grid-template-columns: 31% 1fr;
  gap: 3.2%;
  align-items: center;
  justify-content: initial;
  padding: 7.2% 7.4% 6.4% 7.8%;
  border: 0;
  color: #eadfbd;
  background: transparent;
  box-shadow: none;
  pointer-events: auto;
  isolation: isolate;
}

.world-map-adventurer-card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  background: var(--world-map-adventurer-frame-image, url("assets/ui/world_map/adventurer_profile_frame_mock_keyed.png")) center / 100% 100% no-repeat;
  filter: saturate(0.92) brightness(0.95);
  mix-blend-mode: normal;
  opacity: 1;
  pointer-events: none;
}

.world-map-adventurer-card .world-map-adventurer-portrait {
  position: static;
  width: 100%;
  aspect-ratio: 1;
  border: 1px solid rgba(214, 168, 85, 0.42);
  border-radius: 50%;
  background:
    linear-gradient(180deg, rgba(8, 11, 13, 0.08), rgba(0, 0, 0, 0.34)),
    var(--adventurer-portrait) center 42% / cover no-repeat,
    rgba(8, 10, 12, 0.8);
  box-shadow:
    0 0 0 3px rgba(5, 7, 9, 0.64),
    0 0 0 4px rgba(179, 137, 70, 0.2);
}

.world-map-adventurer-card .world-map-adventurer-summary {
  min-width: 0;
  padding-top: 1%;
}

.world-map-adventurer-card .world-map-card-kicker {
  display: block;
  margin: 0 0 2.2%;
  color: #c49a5a;
  font-size: clamp(8px, 0.72vw, 12px);
  font-weight: 900;
  letter-spacing: 0.12em;
  line-height: 1;
  white-space: nowrap;
}

.world-map-adventurer-card strong {
  display: block;
  margin: 0 0 4%;
  color: #f1e4bf;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(20px, 1.9vw, 32px);
  letter-spacing: 0.07em;
  line-height: 1;
  text-transform: uppercase;
}

.world-map-adventurer-card .world-map-adventurer-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin: 0;
}

.world-map-adventurer-card .world-map-adventurer-stats div {
  display: flex;
  gap: 4px;
  align-items: baseline;
}

.world-map-adventurer-card .world-map-adventurer-stats dt {
  color: #c29454;
  font-size: clamp(9px, 0.72vw, 12px);
  font-weight: 900;
  letter-spacing: 0.06em;
}

.world-map-adventurer-card .world-map-adventurer-stats dd {
  margin: 0;
  color: #eadfbd;
  font-size: clamp(11px, 0.9vw, 15px);
  font-weight: 900;
}

.world-map-adventurer-card {
  pointer-events: none;
}

.world-map-adventurer-card .world-map-adventurer-portrait {
  position: absolute;
  right: 5.2%;
  top: 8.6%;
  z-index: 1;
  width: 29.2%;
  height: 73.4%;
  overflow: hidden;
  border: 1px solid rgba(214, 168, 85, 0.28);
  border-radius: 5px;
  background:
    linear-gradient(180deg, rgba(8, 11, 13, 0.04), rgba(0, 0, 0, 0.28)),
    var(--adventurer-portrait) center 42% / cover no-repeat,
    rgba(8, 10, 12, 0.8);
  box-shadow:
    inset 0 0 24px rgba(0, 0, 0, 0.55),
    0 0 0 1px rgba(0, 0, 0, 0.62);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.world-map-adventurer-emblem {
  position: absolute;
  left: 10.6%;
  bottom: 14.2%;
  z-index: 4;
  width: 13.4%;
  aspect-ratio: 1;
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 45%, rgba(19, 23, 25, 0.28), rgba(0, 0, 0, 0.54)),
    var(--adventurer-emblem, none) center / 68% auto no-repeat;
  filter: saturate(0.9) brightness(0.9);
  opacity: 0.9;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.world-map-adventurer-card .world-map-adventurer-summary {
  position: absolute;
  left: 22.5%;
  top: 42.5%;
  z-index: 4;
  width: 40%;
  min-width: 0;
  padding: 0;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-adventurer-card .world-map-card-kicker {
  margin-bottom: 2.8%;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-adventurer-card strong {
  margin-bottom: 4.5%;
  font-size: clamp(24px, 2.3vw, 38px);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-adventurer-card .world-map-adventurer-stats {
  gap: 7px 12px;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-adventurer-card .world-map-adventurer-stats dd {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-adventurer-card .world-map-adventurer-subhead {
  display: block;
  margin: 0 0 3.2%;
  color: #c49a5a;
  font-size: clamp(7px, 0.58vw, 10px);
  font-weight: 900;
  letter-spacing: 0.13em;
  line-height: 1;
  text-transform: uppercase;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-adventurer-card .world-map-adventurer-passives {
  display: grid;
  gap: clamp(3px, 0.34vw, 6px);
  margin: 0;
  max-width: 100%;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-adventurer-card .world-map-adventurer-passive {
  display: grid;
  grid-template-columns: clamp(14px, 1vw, 18px) minmax(0, 1fr);
  align-items: center;
  gap: clamp(4px, 0.42vw, 7px);
  min-width: 0;
  padding: 0;
  border: 0;
  color: #eadfbd;
  background: transparent;
  font-size: clamp(7px, 0.58vw, 10px);
  font-weight: 900;
  letter-spacing: 0.06em;
  line-height: 1.05;
  text-transform: uppercase;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left top;
}

.world-map-adventurer-card .world-map-adventurer-passive .world-map-passive-icon {
  width: clamp(14px, 1vw, 18px);
  height: clamp(14px, 1vw, 18px);
  border-color: rgba(201, 160, 82, 0.42);
  background:
    var(--passive-icon-image, none) center / 68% auto no-repeat,
    radial-gradient(circle at 50% 42%, rgba(64, 53, 33, 0.96), rgba(8, 9, 10, 0.96) 68%);
  box-shadow:
    inset 0 0 6px rgba(237, 203, 120, 0.12),
    0 0 5px rgba(0, 0, 0, 0.45);
  transform: none;
}

.world-map-adventurer-card .world-map-adventurer-passive b {
  min-width: 0;
  overflow: hidden;
  color: #eadfbd;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.world-map-adventurer-card .world-map-adventurer-passive--empty {
  grid-template-columns: minmax(0, 1fr);
  color: rgba(234, 223, 189, 0.62);
}

.world-map-quest-line {
  position: absolute;
  left: 28px;
  bottom: 76px;
  z-index: 4;
  width: 280px;
  height: 420px;
  pointer-events: none;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: left bottom;
  filter: drop-shadow(0 18px 26px rgba(0, 0, 0, 0.34));
}

.world-map-quest-line[hidden] {
  display: none;
}

.world-map-quest-card-frame,
.world-map-quest-target-image {
  position: absolute;
  pointer-events: none;
  user-select: none;
}

.world-map-quest-card-frame {
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.world-map-quest-target-image {
  left: 34px;
  top: 126px;
  width: 212px;
  height: 170px;
  object-fit: contain;
  mix-blend-mode: multiply;
  opacity: 0.84;
  filter: sepia(0.35) contrast(1.08) saturate(0.9);
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.world-map-quest-destination-button {
  position: absolute;
  left: 54px;
  bottom: 46px;
  width: 172px;
  height: 38px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 10px;
  border: 0;
  color: rgba(239, 218, 163, 0.94);
  background: transparent;
  box-shadow: none;
  font-family: "Cinzel", "Times New Roman", serif;
  font-size: 14px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0.08em;
  text-align: center;
  text-shadow:
    0 1px 0 rgba(0, 0, 0, 0.88),
    0 0 10px rgba(215, 168, 74, 0.18);
  text-transform: uppercase;
  cursor: pointer;
  pointer-events: auto;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.world-map-quest-destination-button:hover,
.world-map-quest-destination-button:focus-visible {
  color: #fff0be;
  text-shadow:
    0 1px 0 rgba(0, 0, 0, 0.9),
    0 0 12px rgba(230, 184, 80, 0.34);
  outline: none;
}

.world-map-quest-destination-button:focus-visible {
  box-shadow: 0 0 0 1px rgba(230, 190, 100, 0.44);
}

.world-map-spot-layer,
.world-map-info-panel {
  pointer-events: none !important;
}

.world-map-spot,
.world-map-enter-btn,
.world-map-enter-btn *,
.world-map-options-btn,
.world-map-options-btn *,
.world-map-quest-destination-button {
  pointer-events: auto !important;
}

.world-map-spot-icon,
.world-map-spot-icon-wrap,
.world-map-spot-cursor,
.world-map-spot-label,
.world-map-spot-label-plate,
.world-map-spot-text,
.world-map-spot-name,
.world-map-spot-name *,
.world-map-spot-state {
  pointer-events: none !important;
}

.world-map-bg,
.world-map-bg *,
.world-map-bg::before,
.world-map-bg::after,
.world-map-vignette,
.world-map-vignette *,
.world-map-vignette::before,
.world-map-vignette::after,
.world-map-title,
.world-map-title *,
.world-map-title::before,
.world-map-title::after,
.world-map-controls,
.world-map-controls *,
.world-map-controls::before,
.world-map-controls::after,
.world-map-auto-save,
.world-map-auto-save *,
.world-map-auto-save::before,
.world-map-auto-save::after,
.world-map-quest-line,
.world-map-quest-line::before,
.world-map-quest-line::after,
.world-map-rift-overlay,
.world-map-rift-overlay *,
.world-map-rift-overlay::before,
.world-map-rift-overlay::after,
.world-map-dragon-eye-corner,
.world-map-dragon-eye-corner *,
.world-map-dragon-eye-corner::before,
.world-map-dragon-eye-corner::after,
.world-map-adventurer-card,
.world-map-adventurer-card *,
.world-map-adventurer-card::before,
.world-map-adventurer-card::after,
.world-current-adventurer,
.world-current-adventurer *,
.world-current-adventurer::before,
.world-current-adventurer::after {
  pointer-events: none !important;
}

.world-map-controls .world-map-options-btn {
  pointer-events: auto !important;
}

.world-map-quest-line .world-map-quest-destination-button {
  pointer-events: auto !important;
}

.world-map-adventurer-main {
  grid-template-columns: 70px minmax(0, 1fr);
  gap: 12px;
}

.world-map-adventurer-portrait {
  width: 70px;
  border-radius: 50%;
  box-shadow:
    0 0 0 3px rgba(5, 7, 9, 0.76),
    0 0 0 4px rgba(179, 137, 70, 0.28);
}

.world-map-adventurer-summary h3 {
  margin-bottom: 7px;
  font-size: 23px;
}

.world-map-adventurer-stats {
  margin-bottom: 7px;
}

.world-map-adventurer-subhead {
  margin: 0 0 5px;
  color: #b98c4b;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.world-map-adventurer-subhead--gear {
  margin-top: 10px;
}

.world-map-adventurer-card .world-map-adventurer-passives {
  display: flex;
  align-items: center;
  gap: clamp(7px, 0.6vw, 12px);
  margin-top: 1%;
}

.world-map-adventurer-card .world-map-adventurer-passive {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: clamp(20px, 1.35vw, 26px);
  height: clamp(20px, 1.35vw, 26px);
  padding: 0;
  border: 0 !important;
  outline: 0;
  background: transparent !important;
  box-shadow: none !important;
  line-height: 1;
}

.world-map-adventurer-card .world-map-adventurer-passive .world-map-passive-icon {
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0 !important;
  border-radius: 50%;
  background:
    var(--passive-icon-image, none) center / 70% auto no-repeat,
    radial-gradient(circle at 50% 42%, rgba(58, 48, 30, 0.56), rgba(8, 9, 10, 0.28) 68%, transparent 72%);
  box-shadow:
    0 0 6px rgba(221, 176, 92, 0.10),
    inset 0 0 5px rgba(237, 203, 120, 0.08);
  overflow: hidden;
}

.world-map-relic-slots {
  margin: 0 0 9px;
}

.world-map-relic-slot {
  min-height: 38px;
  padding: 5px 4px;
}

.world-map-gear-btn {
  min-height: 28px;
}

.world-map-auto-save {
  left: 28px;
  bottom: 22px;
  color: rgba(154, 206, 129, 0.74);
  font-size: 10px;
  letter-spacing: 0.14em;
}

.world-map-auto-save::before {
  content: "";
  width: 18px;
  height: 18px;
  margin-right: 7px;
  border-color: rgba(151, 214, 129, 0.46);
  background:
    radial-gradient(circle at 50% 50%, rgba(176, 239, 133, 0.82) 0 15%, transparent 16%),
    rgba(8, 10, 12, 0.44);
  box-shadow: 0 0 9px rgba(124, 214, 92, 0.18);
}

.world-map-controls {
  bottom: 30px;
  gap: 15px;
  padding: 8px 16px;
  color: rgba(216, 203, 174, 0.84);
  background: rgba(5, 7, 9, 0.36);
}

@keyframes worldMapFocusPulse {
  0%,
  100% {
    transform: translate(-50%, -50%) scale(0.86);
    opacity: 0.34;
  }
  50% {
    transform: translate(-50%, -50%) scale(1.08);
    opacity: 0.78;
  }
}

.game-shell {
  width: min(1320px, calc(100vw - 16px), calc((100vh - 16px) * 16 / 9));
  height: min(742.5px, calc(100vh - 16px), calc((100vw - 16px) * 9 / 16));
  aspect-ratio: 16 / 9;
  --shell-gap: 0px;
  --exploration-left-column-width: 240px;
  --exploration-right-column-width: 240px;
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns:
    minmax(190px, var(--exploration-left-column-width))
    minmax(0, 1fr)
    minmax(190px, var(--exploration-right-column-width));
  gap: var(--shell-gap);
  align-items: stretch;
  min-height: 0;
  overflow: hidden;
}

.game-shell::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background: var(--asset-exploration-floor) center / cover no-repeat;
  pointer-events: none;
}

.game-shell.is-iron-hold-phase-transition::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 19000;
  pointer-events: auto;
  background:
    radial-gradient(circle at 50% 46%, rgba(255, 255, 255, 1), rgba(245, 249, 255, 0.96) 58%, rgba(236, 244, 255, 0.92));
  opacity: 0;
  animation: iron-hold-final-whiteout 2200ms ease-in-out both;
}

.game-shell > * {
  position: relative;
  z-index: 1;
}

.game-shell > .center-stage {
  z-index: 1;
}

.game-shell > .left-panel,
.game-shell > .right-panel {
  z-index: 3;
}

.game-shell.is-fixed-layout-preview {
  width: 1600px;
  height: 900px;
  transform: scale(var(--game-stage-scale, 1));
  transform-origin: center;
}

.game-shell [data-layout-id^="exploration-"] {
  --layout-x: 0px;
  --layout-y: 0px;
  --layout-scale: 1;
  --layout-scale-x: 1;
  --layout-scale-y: 1;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.game-shell .log-strip[data-layout-id^="exploration-"] {
  transform: translateX(-50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.game-shell .log-strip[data-layout-resize-mode="thinBar"] {
  width: var(--layout-width, 640px);
  min-height: var(--layout-height, 42px);
  height: var(--layout-height, 42px);
  max-height: none;
  border: 0;
  border-top: var(--thin-bar-line-thickness, 1px) solid rgb(190 150 80 / var(--thin-bar-line-opacity, 0.72));
  border-bottom: var(--thin-bar-line-thickness, 1px) solid rgb(190 150 80 / var(--thin-bar-line-opacity, 0.72));
  border-radius: var(--thin-bar-corner-radius, 6px);
  background:
    linear-gradient(90deg, rgb(2 5 10 / 0.08), rgb(5 13 24 / var(--thin-bar-background-opacity, 0.72)) 18%, rgb(5 13 24 / var(--thin-bar-background-opacity, 0.72)) 82%, rgb(2 5 10 / 0.08)),
    rgb(3 7 12 / var(--thin-bar-background-opacity, 0.72));
  box-shadow: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] {
  width: var(--layout-width, 320px);
  height: var(--layout-height, 780px);
  align-self: start;
  border: 0;
  background: transparent;
  background-color: transparent;
  background-image: none;
  box-shadow: none;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] {
  width: var(--layout-width, 320px);
  height: var(--layout-height, 500px);
  align-self: start;
  border-style: solid;
  border-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-color: rgba(215, 178, 88, 0.48);
  border-image-source: url("assets/ui/exploration/panels/ui_exploration_panel_dark_gold_9slice.png");
  border-image-slice:
    var(--slice-top, 150)
    var(--slice-right, 150)
    var(--slice-bottom, 150)
    var(--slice-left, 150)
    fill;
  border-image-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-image-repeat: var(--slice-repeat, stretch);
  background:
    linear-gradient(180deg, rgba(28, 34, 39, 0.74), rgba(7, 9, 11, 0.92)),
    rgba(12, 15, 19, 0.86);
  box-shadow:
    0 18px 36px rgba(0, 0, 0, 0.54),
    inset 0 0 32px rgba(0, 0, 0, 0.34);
}

.game-shell.is-reliquary-gear-open::before,
.game-shell.is-collector-open::before {
  opacity: 0;
}

.game-shell.is-reliquary-gear-open > .right-panel,
.game-shell.is-reliquary-gear-open [data-layout-id="exploration-right-progress-panel"],
.game-shell.is-collector-open > .right-panel,
.game-shell.is-collector-open [data-layout-id="exploration-right-progress-panel"] {
  visibility: hidden;
  pointer-events: none;
}

.game-shell.is-reliquary-gear-open .gear-window,
.game-shell.is-collector-open .gear-window {
  overflow: hidden;
}

.game-shell.is-reliquary-gear-open .gear-window,
.game-shell.is-collector-open .gear-window {
  contain: paint;
}

.game-shell.is-fixed-layout-preview #gameCanvas {
  max-height: none;
}

.player-damage-screen-flash {
  position: absolute;
  inset: 0;
  z-index: 72;
  pointer-events: none;
  opacity: 0;
  background:
    radial-gradient(circle at 50% 48%,
      rgba(255, 88, 54, 0.2) 0%,
      rgba(174, 22, 20, 0.19) 48%,
      rgba(78, 0, 0, 0.27) 100%);
  mix-blend-mode: screen;
}

.player-damage-screen-flash.is-active {
  animation: player-damage-screen-flash 220ms ease-out forwards;
}

.bande-scene-overlay {
  position: fixed;
  inset: 0;
  z-index: 19000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #000;
  cursor: pointer;
}

.bande-scene-overlay.is-hidden {
  display: none;
}

.bande-scene-overlay:focus {
  outline: none;
}

.bande-scene-image {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  user-select: none;
  pointer-events: none;
}


.bande-opening-overlay {
  background: #000;
}

.bande-opening-stage {
  position: relative;
  width: 100%;
  height: 100%;
  user-select: none;
}

.bande-opening-base,
.bande-opening-panel,
.bande-opening-continue {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  pointer-events: none;
  user-select: none;
}

.bande-opening-panel,
.bande-opening-continue {
  opacity: 0;
  transition: opacity var(--bande-opening-reveal-ms, 420ms) ease;
}

.bande-opening-panel.is-visible,
.bande-opening-continue.is-visible {
  opacity: 1;
}

.bande-opening-guide {
  position: absolute;
  left: 50%;
  top: 85.5%;
  z-index: 8;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 280px;
  height: 38px;
  box-sizing: border-box;
  transform: translate(-50%, -50%);
  padding: 0 22px;
  border: 1px solid rgba(70, 45, 24, 0.44);
  background: rgba(32, 23, 15, 0.56);
  color: rgba(242, 224, 183, 0.96);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 20px;
  line-height: 1;
  white-space: nowrap;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.78);
  pointer-events: none;
  opacity: 1;
  visibility: visible;
}

.bande-opening-continue {
  z-index: 9;
  transform: scale(0.58);
  transform-origin: 50% 86%;
}

.bande-opening-overlay.is-continue-ready .bande-opening-guide,
.bande-peace-return-overlay.is-final-panel .bande-opening-guide {
  opacity: 0;
  visibility: hidden;
}

.bande-opening-overlay.is-skip-transition .bande-opening-panel,
.bande-opening-overlay.is-skip-transition .bande-opening-continue {
  transition: none;
}

.screen-transition-fade {
  position: fixed;
  inset: 0;
  z-index: 20000;
  pointer-events: none;
  opacity: 0;
  background:
    radial-gradient(circle at 50% 48%, rgba(22, 26, 30, 0.76), rgba(0, 0, 0, 0.98) 72%);
  transition: opacity 260ms ease;
}

.screen-transition-fade.is-visible {
  pointer-events: auto;
  opacity: 1;
}

.screen-transition-fade.screen-transition-fade--white {
  background:
    radial-gradient(circle at 50% 48%, rgba(255, 253, 238, 0.92), rgba(255, 255, 255, 0.99) 72%);
}


@keyframes iron-hold-final-whiteout {
  0% {
    opacity: 0;
  }

  34% {
    opacity: 1;
  }

  58% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}

.right-panel,
.board-wrap,
.panel > div {
  border: 1px solid rgba(188, 143, 71, 0.42);
  background:
    linear-gradient(180deg, rgba(28, 34, 39, 0.86), rgba(7, 9, 11, 0.94)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.025) 0 1px, transparent 1px 8px);
  box-shadow:
    0 18px 36px rgba(0, 0, 0, 0.62),
    inset 0 0 0 1px rgba(0, 0, 0, 0.9),
    inset 0 0 36px rgba(0, 0, 0, 0.42);
}

.right-panel {
  background-image:
    linear-gradient(180deg, rgba(28, 34, 39, 0.82), rgba(7, 9, 11, 0.96)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.025) 0 1px, transparent 1px 8px);
  background-size: auto, auto;
  background-repeat: repeat, repeat;
  box-shadow:
    0 24px 46px rgba(0, 0, 0, 0.72),
    0 0 0 1px rgba(221, 176, 93, 0.08),
    inset 0 0 0 1px rgba(0, 0, 0, 0.9),
    inset 0 0 40px rgba(0, 0, 0, 0.48);
}

.right-panel {
  min-height: 0;
  padding: 14px;
  position: relative;
  overflow: hidden;
}

.left-panel {
  min-height: 0;
  padding: 12px 10px 10px;
  position: relative;
  overflow: hidden;
  border: 0;
  background: transparent;
  background-color: transparent;
  background-image: none;
  box-shadow: none;
  --player-panel-surface-filter: saturate(1.08) brightness(0.96) contrast(1.04);
  --player-panel-surface-tint: rgba(6, 32, 24, 0.68);
  --player-panel-surface-tint-strong: rgba(13, 83, 58, 0.4);
  --player-panel-surface-glow: rgba(42, 132, 91, 0.34);
  --player-panel-surface-vignette: rgba(3, 18, 14, 0.1);
  --player-panel-surface-overlay-opacity: 0.62;
  --player-panel-surface-blend-mode: normal;
  --player-portrait-fit: cover;
  --player-portrait-position: center 36%;
}

.left-panel[data-job-id="rogue"] {
  --player-panel-surface-filter: hue-rotate(10deg) saturate(0.82) brightness(0.98) contrast(1.06);
  --player-panel-surface-tint: rgba(10, 22, 29, 0.74);
  --player-panel-surface-tint-strong: rgba(24, 45, 56, 0.4);
  --player-panel-surface-glow: rgba(46, 72, 86, 0.28);
  --player-panel-surface-vignette: rgba(2, 8, 12, 0.06);
  --player-panel-surface-overlay-opacity: 0.64;
  --player-panel-surface-blend-mode: normal;
  --player-portrait-fit: cover;
  --player-portrait-position: center 35%;
}

.left-panel[data-job-id="cleric"] {
  --player-panel-surface-filter: hue-rotate(-18deg) saturate(0.94) brightness(1.04) contrast(1.03);
  --player-panel-surface-tint: rgba(34, 72, 55, 0.72);
  --player-panel-surface-tint-strong: rgba(82, 128, 86, 0.4);
  --player-panel-surface-glow: rgba(176, 156, 92, 0.24);
  --player-panel-surface-vignette: rgba(10, 30, 22, 0.05);
  --player-panel-surface-overlay-opacity: 0.64;
  --player-panel-surface-blend-mode: normal;
  --player-portrait-fit: cover;
  --player-portrait-position: center 17%;
}

.left-panel[data-job-id="fighter"] {
  --player-panel-surface-filter: sepia(0.38) hue-rotate(330deg) saturate(1.35) brightness(1.08) contrast(1.04);
  --player-panel-surface-tint: rgba(126, 40, 25, 0.78);
  --player-panel-surface-tint-strong: rgba(176, 72, 42, 0.46);
  --player-panel-surface-glow: rgba(190, 95, 45, 0.32);
  --player-panel-surface-vignette: rgba(68, 18, 12, 0.03);
  --player-panel-surface-overlay-opacity: 0.72;
  --player-panel-surface-blend-mode: normal;
  --player-portrait-fit: cover;
  --player-portrait-position: center 35%;
}

.left-panel[data-job-id="sorceress"] {
  --player-panel-surface-filter: hue-rotate(-50deg) saturate(1.1) brightness(1) contrast(1.05);
  --player-panel-surface-tint: rgba(48, 31, 94, 0.76);
  --player-panel-surface-tint-strong: rgba(105, 65, 172, 0.48);
  --player-panel-surface-glow: rgba(130, 86, 190, 0.36);
  --player-panel-surface-vignette: rgba(18, 9, 38, 0.06);
  --player-panel-surface-overlay-opacity: 0.7;
  --player-panel-surface-blend-mode: normal;
  --player-portrait-fit: cover;
  --player-portrait-position: center 35%;
}

.game-shell .left-panel[data-job-id="fighter"] {
  --player-panel-surface-filter: sepia(0.38) hue-rotate(330deg) saturate(1.35) brightness(1.08) contrast(1.04);
  --player-panel-surface-tint: rgba(126, 40, 25, 0.78);
  --player-panel-surface-tint-strong: rgba(176, 72, 42, 0.46);
  --player-panel-surface-glow: rgba(190, 95, 45, 0.32);
  --player-panel-surface-vignette: rgba(68, 18, 12, 0.03);
  --player-panel-surface-overlay-opacity: 0.72;
  --player-panel-surface-blend-mode: normal;
}

.game-shell .left-panel[data-job-id="fighter"] .stat-card,
.game-shell .left-panel[data-job-id="fighter"] .passive-row,
.game-shell .left-panel[data-job-id="fighter"] .run-resource,
.game-shell .left-panel[data-job-id="fighter"] .left-supply-panel,
.game-shell .left-panel[data-job-id="fighter"] .gear-slot {
  border-color: rgba(181, 95, 58, 0.14);
  background: rgba(34, 12, 8, 0.12);
}

.game-shell .left-panel > .exploration-panel-content,
.game-shell .right-panel > .exploration-panel-content {
  position: relative;
  z-index: 1;
}

.game-shell .left-panel > .exploration-panel-content {
  width: 100%;
  height: 100%;
}

.game-shell .right-panel > .exploration-panel-frame {
  display: none;
}

.game-shell .left-panel > .exploration-panel-surface,
.game-shell .left-panel > .exploration-panel-frame {
  display: block;
  position: absolute;
  inset: 0;
  box-sizing: border-box;
  pointer-events: none;
}

.game-shell .left-panel > .exploration-panel-surface {
  z-index: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: transparent;
  filter: var(--player-panel-surface-filter);
  overflow: hidden;
}

.game-shell .left-panel > .exploration-panel-surface > img {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: fill;
  pointer-events: none;
  user-select: none;
}

.game-shell .left-panel > .exploration-panel-surface::before,
.game-shell .left-panel > .exploration-panel-surface::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

.game-shell .left-panel > .exploration-panel-surface::before {
  background:
    radial-gradient(circle at 50% 16%, var(--player-panel-surface-glow), transparent 42%),
    radial-gradient(ellipse at 52% 58%, var(--player-panel-surface-tint-strong), transparent 66%),
    linear-gradient(180deg, var(--player-panel-surface-tint), rgba(0, 0, 0, 0) 58%, var(--player-panel-surface-vignette));
  opacity: var(--player-panel-surface-overlay-opacity);
  mix-blend-mode: var(--player-panel-surface-blend-mode);
}

.game-shell .left-panel > .exploration-panel-surface::after {
  background:
    radial-gradient(ellipse at center, rgba(255, 255, 255, 0.045), rgba(0, 0, 0, 0) 46%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.1), transparent 14%, transparent 86%, rgba(0, 0, 0, 0.12)),
    linear-gradient(180deg, rgba(0, 0, 0, 0.03), transparent 44%, rgba(0, 0, 0, 0.06));
}

.game-shell .left-panel[data-job-id="fighter"] > .exploration-panel-surface::after {
  background:
    radial-gradient(ellipse at center, rgba(255, 255, 255, 0.045), rgba(0, 0, 0, 0) 46%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.055), transparent 14%, transparent 86%, rgba(0, 0, 0, 0.07)),
    linear-gradient(180deg, rgba(0, 0, 0, 0.015), transparent 44%, rgba(0, 0, 0, 0.035));
}

.game-shell .left-panel > .exploration-panel-frame {
  z-index: 3;
  border-style: solid;
  border-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-image-source: url("assets/ui/exploration/panel/ui_exploration_left_panel_frame_transparent.png");
  border-image-slice:
    var(--slice-top, 150)
    var(--slice-right, 150)
    var(--slice-bottom, 150)
    var(--slice-left, 150);
  border-image-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-image-repeat: var(--slice-repeat, stretch);
  background: transparent;
}

.game-shell .right-panel > .right-panel-background-clip {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  background: transparent;
}

.game-shell .right-panel[data-dungeon-id="verdant_ruins"] > .right-panel-background-clip::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(4, 9, 6, 0.18), rgba(1, 5, 3, 0.24)),
    rgba(0, 0, 0, 0.08);
}

.game-shell .right-panel .right-panel-background-layer {
  --bg-x: 0px;
  --bg-y: 0px;
  --bg-scale: 1;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  transform-origin: center center;
  transform: translate(var(--bg-x, 0px), var(--bg-y, 0px)) scale(var(--bg-scale, 1));
  pointer-events: none;
  background: transparent;
}

.game-shell .right-panel .right-panel-background-layer img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  filter: brightness(0.82) saturate(0.94);
}

.right-panel::before,
.board-wrap::before,
.panel > div::before,
.log-panel::before {
  content: "";
  position: absolute;
  inset: 8px;
  border: 1px solid rgba(209, 171, 98, 0.16);
  pointer-events: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"],
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] {
  isolation: isolate;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"]::before,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"]::before {
  display: none;
  z-index: 0;
  pointer-events: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-content,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-content {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] {
  width: var(--layout-width, 320px);
  height: var(--layout-height, 780px);
  align-self: start;
  border-style: solid;
  border-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-color: rgba(215, 178, 88, 0.48);
  border-image-source: url("assets/ui/exploration/panels/ui_exploration_panel_dark_gold_9slice.png");
  border-image-slice:
    var(--slice-top, 150)
    var(--slice-right, 150)
    var(--slice-bottom, 150)
    var(--slice-left, 150)
    fill;
  border-image-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-image-repeat: var(--slice-repeat, stretch);
  border: 0;
  background: transparent;
  background-color: transparent;
  background-image: none;
  box-shadow: none;
  padding: 0;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] {
  padding: 0;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-content {
  padding: 12px 10px 10px;
}

.player-status-content-inner {
  width: min(100%, 300px);
  max-width: 100%;
  height: 100%;
  margin: 0 auto;
}

.player-status-content-inner > .hud {
  width: 100%;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-content {
  padding: 14px;
}

.game-shell .right-panel > .exploration-panel-content-right {
  display: grid;
  grid-template-rows: auto auto auto auto auto;
  align-content: start;
  gap: 10px;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-surface,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-frame,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-surface,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-frame {
  display: block;
  position: absolute;
  inset: 0;
  box-sizing: border-box;
  pointer-events: none;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-frame {
  border-style: solid;
  border-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-image-slice:
    var(--slice-top, 150)
    var(--slice-right, 150)
    var(--slice-bottom, 150)
    var(--slice-left, 150)
    fill;
  border-image-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-image-repeat: var(--slice-repeat, stretch);
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-frame {
  border-style: solid;
  border-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-image-slice:
    var(--slice-top, 150)
    var(--slice-right, 150)
    var(--slice-bottom, 150)
    var(--slice-left, 150);
  border-image-width:
    clamp(18px, var(--slice-top-width, 150px), 30px)
    clamp(18px, var(--slice-right-width, 150px), 30px)
    clamp(18px, var(--slice-bottom-width, 150px), 30px)
    clamp(18px, var(--slice-left-width, 150px), 30px);
  border-image-repeat: var(--slice-repeat, stretch);
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-surface {
  z-index: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: transparent;
  filter: var(--player-panel-surface-filter);
  overflow: hidden;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-surface::before,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-surface::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-surface::before {
  background:
    radial-gradient(circle at 50% 16%, var(--player-panel-surface-glow), transparent 42%),
    radial-gradient(ellipse at 52% 58%, var(--player-panel-surface-tint-strong), transparent 66%),
    linear-gradient(180deg, var(--player-panel-surface-tint), rgba(0, 0, 0, 0) 58%, var(--player-panel-surface-vignette));
  opacity: var(--player-panel-surface-overlay-opacity);
  mix-blend-mode: var(--player-panel-surface-blend-mode);
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-surface::after {
  background:
    radial-gradient(ellipse at center, rgba(255, 255, 255, 0.045), rgba(0, 0, 0, 0) 46%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.1), transparent 14%, transparent 86%, rgba(0, 0, 0, 0.12)),
    linear-gradient(180deg, rgba(0, 0, 0, 0.03), transparent 44%, rgba(0, 0, 0, 0.06));
}

.game-shell .left-panel[data-job-id="fighter"][data-layout-resize-mode="nineSlice"] > .exploration-panel-surface::after {
  background:
    radial-gradient(ellipse at center, rgba(255, 255, 255, 0.045), rgba(0, 0, 0, 0) 46%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.055), transparent 14%, transparent 86%, rgba(0, 0, 0, 0.07)),
    linear-gradient(180deg, rgba(0, 0, 0, 0.015), transparent 44%, rgba(0, 0, 0, 0.035));
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-frame {
  z-index: 3;
  border-image-source: url("assets/ui/exploration/panel/ui_exploration_left_panel_frame_transparent.png");
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] {
  height: var(--layout-height, 500px);
  overflow: hidden;
  border-image-source: none;
  background: transparent;
  background-color: transparent;
  background-image: none;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] > .exploration-panel-frame {
  z-index: 3;
  border-image-source: url("assets/ui/exploration/panels/ui_exploration_panel_dark_gold_frame_only.png");
  background: transparent;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .right-panel-background-layer {
  background: transparent;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-plate,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .stat-card,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .passive-row,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .left-supply-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .gear-slot,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .set-effect-summary,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .right-location-header,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .floor-trait-panel {
  border-color: rgba(210, 170, 90, 0.16);
  background:
    linear-gradient(180deg, rgba(8, 15, 22, 0.16), rgba(3, 6, 10, 0.10));
  box-shadow: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .class-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .passive-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .relic-gear-panel,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .objective-panel,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .area-progress {
  border: 0;
  background: transparent;
  box-shadow: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-plate {
  background:
    linear-gradient(180deg, rgba(8, 14, 20, 0.18), rgba(3, 5, 8, 0.12));
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-plate::after {
  background:
    linear-gradient(
      180deg,
      rgba(0, 0, 0, 0) 0%,
      rgba(0, 0, 0, 0.34) 64%,
      rgba(0, 0, 0, 0.50) 100%
    );
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-portrait {
  background: #030607;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-portrait::after {
  background:
    linear-gradient(90deg, rgba(0, 0, 0, 0.28), transparent 38%, rgba(0, 0, 0, 0.20)),
    linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.22));
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .portrait-hp-bar {
  border-color: rgba(176, 128, 72, 0.30);
  background: rgba(18, 5, 6, 0.48);
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .left-supply-panel {
  background: rgba(3, 8, 12, 0.12);
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .gear-slot.is-equipped {
  border-color: rgba(213, 184, 104, 0.30);
  box-shadow: 0 0 6px rgba(185, 139, 62, 0.06);
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .floor-trait-panel {
  background:
    radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--special-accent) 12%, transparent), transparent 62%),
    linear-gradient(180deg, rgba(10, 18, 24, 0.18), rgba(3, 6, 10, 0.12));
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .special-icon {
  border-color: rgba(190, 145, 75, 0.12);
  background-color: rgba(5, 8, 9, 0.06);
  box-shadow: none;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #exitBtn,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #retireBtn,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .supply-draw-btn {
  box-shadow: none;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #exitBtn:disabled,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #retireBtn:disabled {
  box-shadow: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-plate,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .class-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .stat-card,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .passive-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .passive-row,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .relic-gear-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .set-effect-summary,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .supply-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .left-supply-panel,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .right-location-header,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .objective-panel,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .area-progress,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .floor-trait-panel {
  border-color: transparent;
  background: transparent;
  background-color: transparent;
  background-image: none;
  box-shadow: none;
  filter: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-plate::before,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-plate::after,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .class-panel::before,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .class-panel::after,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .passive-panel::before,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .passive-panel::after,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .relic-gear-panel::before,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .relic-gear-panel::after,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .left-supply-panel::before,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .left-supply-panel::after,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .right-location-header::before,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .right-location-header::after,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .objective-panel::before,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .objective-panel::after,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .floor-trait-panel::before,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .floor-trait-panel::after {
  display: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-portrait {
  background: #030607;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .portrait-hp-bar {
  border-color: rgba(176, 128, 72, 0.28);
  background: rgba(18, 5, 6, 0.34);
  box-shadow: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .gear-slot {
  border-color: rgba(210, 170, 90, 0.14);
  background: transparent;
  box-shadow: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .gear-slot.is-equipped {
  border-color: rgba(213, 184, 104, 0.30);
  box-shadow: none;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .special-icon {
  border-color: rgba(210, 170, 90, 0.14);
  background-color: transparent;
  box-shadow: none;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .supply-draw-btn,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #exitBtn,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #retireBtn {
  box-sizing: border-box;
  width: min(196px, calc(100% - 48px));
  max-width: calc(100% - 48px);
  min-height: 0;
  aspect-ratio: 7 / 2;
  justify-self: center;
  align-self: center;
  margin-left: auto;
  margin-right: auto;
  border: 0;
  background: url("assets/ui/exploration/button/ui_exploration_button_blue_gold_base.png") center / 100% 100% no-repeat;
  background-color: transparent;
  box-shadow: none;
  text-shadow: 0 2px 0 #000, 0 0 8px rgba(215, 172, 86, 0.18);
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #retireBtn {
  background-image: url("assets/ui/exploration/button/ui_exploration_button_red_gold_base.png");
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #exitBtn:disabled,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #retireBtn:disabled {
  opacity: 0.48;
  filter: grayscale(0.38) brightness(0.82);
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-plate,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .class-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .passive-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .relic-gear-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .run-resource,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .left-supply-panel,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .right-location-header,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .objective-panel,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .area-progress,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .floor-trait-panel {
  border-left: 0;
  border-right: 0;
  border-top: 0;
  border-bottom: 0;
  border-color: transparent;
  border-radius: 0;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .passive-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .relic-gear-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .run-resource,
.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .floor-trait-panel {
  border-top: 1px solid rgba(226, 181, 92, 0.46);
  border-image: linear-gradient(
    90deg,
    rgba(226, 181, 92, 0) 0%,
    rgba(190, 140, 64, 0.34) 10%,
    rgba(232, 190, 103, 0.58) 50%,
    rgba(190, 140, 64, 0.34) 90%,
    rgba(226, 181, 92, 0) 100%
  ) 1;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .right-location-header {
  border-bottom: 1px solid rgba(226, 181, 92, 0.46);
  border-image: linear-gradient(
    90deg,
    rgba(226, 181, 92, 0) 0%,
    rgba(190, 140, 64, 0.34) 10%,
    rgba(232, 190, 103, 0.58) 50%,
    rgba(190, 140, 64, 0.34) 90%,
    rgba(226, 181, 92, 0) 100%
  ) 1;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] {
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  position: relative;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hud {
  height: 100%;
  min-height: 0;
  grid-template-rows: auto auto auto auto auto;
  align-content: start;
  gap: clamp(5px, 0.72vh, 8px);
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-plate {
  width: calc(100% + 20px);
  margin: -12px -10px 0;
  aspect-ratio: 1 / 1;
  min-height: 0;
  height: auto;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .hero-portrait-image {
  object-position: var(--player-portrait-position, center 36%);
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .class-panel {
  gap: clamp(3px, 0.55vh, 6px);
  padding: 0;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .class-stats {
  gap: 5px;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .passive-panel,
.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .relic-gear-panel {
  gap: 3px;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .run-resource {
  padding: 0 4px;
}

.game-shell .left-panel[data-layout-resize-mode="nineSlice"] .supply-draw-btn {
  min-height: 0;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] {
  display: grid;
  grid-template-rows: auto auto auto auto auto;
  align-content: start;
  gap: clamp(11px, 1.25vh, 15px);
  position: relative;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .objective-panel {
  min-height: 0;
  display: grid;
  grid-template-rows: auto auto;
  align-content: start;
  gap: clamp(18px, 2.6vh, 34px);
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] .floor-trait-panel {
  align-self: auto;
  margin-bottom: 0;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #exitBtn {
  min-height: 0;
}

.game-shell .right-panel[data-layout-resize-mode="nineSlice"] #retireBtn {
  min-height: 0;
}

.panel > div::before {
  display: none;
}

.hud {
  display: grid;
  gap: 5px;
  position: relative;
  z-index: 1;
}

.player-status-portrait-area {
  --player-brooch-size: 35%;
  --player-brooch-left: -4.2%;
  --player-brooch-top: -4.4%;
  --player-emblem-icon-size: 36%;
  --player-emblem-center-x: 50%;
  --player-emblem-center-y: 50%;
  position: relative;
  overflow: visible;
}

.hero-plate {
  position: relative;
  width: calc(100% + 20px);
  margin: -12px -10px 0;
  height: auto;
  min-height: 0;
  aspect-ratio: 1 / 1;
  border: 1px solid rgba(179, 138, 69, 0.34);
  background:
    linear-gradient(180deg, rgba(12, 23, 31, 0.55), rgba(5, 6, 8, 0.85)),
    linear-gradient(135deg, rgba(62, 80, 92, 0.22), transparent 55%);
  box-shadow: inset 0 0 34px rgba(0, 0, 0, 0.78);
  overflow: hidden;
}

.hero-plate::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 50%;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.68) 58%,
    rgba(0, 0, 0, 0.9) 100%
  );
}

.hero-portrait {
  position: absolute;
  inset: 0;
  --player-portrait-image: url("assets/ui/portraits/portrait_rogue_default.png");
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  background: #030607;
}

.hero-portrait-image {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: var(--player-portrait-fit, cover);
  object-position: var(--player-portrait-position, center 36%);
  filter: saturate(0.92) brightness(0.86) contrast(1.08);
  pointer-events: none;
  user-select: none;
}

.hero-portrait::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(0, 0, 0, 0.62), transparent 38%, rgba(0, 0, 0, 0.62)),
    linear-gradient(180deg, rgba(0, 0, 0, 0.02), rgba(0, 0, 0, 0.36));
}

.player-emblem-brooch,
.player-emblem-brooch-ornament,
.player-emblem-icon {
  position: absolute;
  pointer-events: none;
}

.player-emblem-brooch {
  left: var(--player-brooch-left);
  top: var(--player-brooch-top);
  z-index: 4;
  width: var(--player-brooch-size);
  aspect-ratio: 956 / 1045;
  transform-origin: center center;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.player-emblem-brooch-ornament {
  inset: 0;
  aspect-ratio: 956 / 1045;
  background: url("assets/ui/exploration/panel/ui_player_top_left_ornament_transparent.png") center / contain no-repeat;
  filter: brightness(0.82) saturate(0.78) contrast(0.95) sepia(0.08);
}

.player-emblem-icon {
  left: var(--player-emblem-center-x);
  top: var(--player-emblem-center-y);
  z-index: 1;
  --player-job-icon-image: url("assets/ui/exploration/panel/ui_player_emblem_rogue_transparent.png");
  width: var(--player-emblem-icon-size);
  aspect-ratio: 1 / 1;
  background: var(--player-job-icon-image) center / contain no-repeat;
  filter: brightness(0.84) saturate(0.82) contrast(1.04);
  transform-origin: center center;
  transform: translate(-50%, -50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.portrait-class {
  position: absolute;
  left: 13px;
  bottom: 25px;
  z-index: 4;
  color: #f0dfb6;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 17px;
  line-height: 1;
  text-align: left;
  text-transform: uppercase;
  text-shadow: 0 2px 0 #000, 0 0 14px rgba(203, 168, 92, 0.22);
}

.portrait-hp {
  position: absolute;
  left: 13px;
  right: 13px;
  bottom: 6px;
  z-index: 4;
  height: 31px;
  pointer-events: none;
}

.portrait-hp-bar {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 6px;
  overflow: hidden;
  background: rgba(18, 5, 6, 0.82);
  border: 1px solid rgba(176, 128, 72, 0.42);
}

#portraitHpFill {
  display: block;
  width: 50%;
  height: 100%;
  background: linear-gradient(90deg, #7e1617, #d33a32 58%, #f0a060);
  box-shadow: 0 0 10px rgba(198, 38, 34, 0.42);
}

#portraitHpText {
  position: absolute;
  right: 0;
  top: 0;
  color: #f0dfb6;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 14px;
  line-height: 1;
  text-align: right;
  text-shadow: 0 1px 0 #000;
}

.vitals,
.stats {
  display: grid;
  gap: 8px;
}

.vitals,
.stats,
.state-row {
  display: none;
}

.class-panel {
  display: grid;
  gap: 4px;
  padding: 4px 0;
}

.class-row {
  display: grid;
  grid-template-columns: minmax(78px, auto) minmax(0, 1fr);
  align-items: center;
  gap: 6px 10px;
}

.class-row span,
.passive-panel h2 {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0;
}

.class-row strong {
  color: #f0dfb6;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
  line-height: 1;
  text-align: right;
}

.class-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.stat-card {
  min-height: 48px;
  display: grid;
  grid-template-columns: var(--left-ui-stat-icon-size) minmax(0, 1fr);
  align-items: center;
  gap: 3px;
  padding: 5px 6px;
  border: 1px solid rgba(179, 138, 69, 0.10);
  background: rgba(5, 8, 9, 0.22);
  box-shadow: none;
}

.stat-icon {
  width: var(--left-ui-stat-icon-size);
  height: var(--left-ui-stat-icon-size);
  aspect-ratio: 1 / 1;
  display: grid;
  place-items: center;
  border: 0;
  background-color: transparent;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  box-shadow: none;
}

.stat-icon--spd {
  width: 32px;
  height: 32px;
  margin-left: -1px;
}

.stat-icon--def {
  background-image: url("assets/ui/exploration/icon/ui_icon_stat_def_transparent.png");
}

.stat-icon--spd {
  background-image: url("assets/ui/exploration/icon/ui_icon_stat_spd_transparent.png");
}

.stat-copy {
  display: grid;
  justify-items: end;
  gap: 2px;
}

.stat-label {
  color: #a7d6df;
  font-size: 10px;
  font-weight: 900;
  line-height: 1;
}

.stat-card--spd .stat-label {
  color: #a9c990;
}

.stat-value {
  color: #87d3f2;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 24px;
  font-weight: 900;
  line-height: 0.95;
  text-shadow: 0 0 10px rgba(90, 188, 229, 0.26);
}

.stat-card--spd .stat-value {
  color: #9bd786;
  text-shadow: 0 0 7px rgba(122, 210, 105, 0.14);
}

.passive-panel {
  display: grid;
  gap: 4px;
}

.passive-panel h2 {
  margin: 0;
}

.passive-list {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.passive-row {
  display: grid;
  grid-template-columns: var(--left-ui-passive-icon-size) minmax(0, 1fr);
  align-items: center;
  gap: 5px;
  min-height: 31px;
  padding: 2px 5px;
  border: 1px solid rgba(179, 138, 69, 0.055);
  background: rgba(5, 8, 9, 0.14);
  color: #aaa18e;
  font-size: 11px;
  font-weight: 800;
}

.passive-icon {
  width: var(--left-ui-passive-icon-size);
  height: var(--left-ui-passive-icon-size);
  aspect-ratio: 1 / 1;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 0;
  color: #f0d184;
  background-color: transparent;
  background-image: var(--passive-icon-image, none);
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  box-shadow: none;
}

.passive-icon--thievery {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_thievery_transparent.png");
}

.passive-icon--doubleAttack {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_double_attack_transparent.png");
}

.passive-icon--stealth {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_stealth_transparent.png");
}

.passive-icon--bash {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_fighter_bash_transparent.png");
}

.passive-icon--swordMaster {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_fighter_sword_master_transparent.png");
}

.passive-icon--sluggish {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_fighter_fortress_transparent.png");
}

.passive-icon--arcaneBloodline {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_sorceress_arcane_bloodline_transparent.png");
}

.passive-icon--magicMaster {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_sorceress_magic_master_transparent.png");
}

.passive-icon--frailConstitution {
  --passive-icon-image: url("assets/ui/exploration/icon/ui_icon_passive_sorceress_glass_cannon_transparent.png");
}

.stat-icon img,
.passive-icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}

.passive-text {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.passive-name {
  color: #d8c79d;
  font-size: 10px;
  font-weight: 900;
}

.passive-effect {
  color: #a8b78b;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 10px;
  font-weight: 700;
}

.vital-meter,
.score-line {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  min-width: 0;
}

.score-line {
  grid-template-columns: minmax(78px, auto) minmax(0, 1fr);
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.score-line strong {
  justify-content: flex-end;
}

.run-resource {
  order: 20;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 7px;
  padding: 7px 8px;
  border: 1px solid var(--left-ui-block-border);
  background: rgba(5, 8, 9, 0.16);
  color: #d8c7a7;
  font-size: 12px;
  font-weight: 900;
}

.gold-heading {
  display: flex;
  align-items: center;
  gap: 8px;
}

.gold-icon {
  position: relative;
  width: var(--left-ui-resource-icon-size);
  height: var(--left-ui-resource-icon-size);
  display: inline-block;
  flex: 0 0 auto;
  background: url("assets/ui/exploration/icon/ui_icon_resource_gold_stack_transparent.png") center / contain no-repeat;
}

.gold-icon::before,
.gold-icon::after {
  display: none;
}

.run-resource strong {
  color: #f0d184;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 26px;
  line-height: 1;
  text-align: right;
  text-shadow: 0 0 10px rgba(219, 169, 73, 0.28);
}

.run-resource.gold-pulse strong {
  animation: gold-pulse 520ms ease;
}

.left-supply-panel {
  order: 30;
  position: relative;
  display: grid;
  gap: 4px;
  padding: 4px 7px;
  border: 1px solid var(--left-ui-block-border);
  background: rgba(5, 8, 9, 0.16);
  box-shadow: none;
}

.left-supply-panel::before {
  display: none;
}

.left-supply-panel h2 {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-bottom: 0;
}

.left-supply-panel h2::before {
  content: "";
  width: var(--left-ui-supply-icon-size);
  height: var(--left-ui-supply-icon-size);
  aspect-ratio: 1 / 1;
  border: 0;
  flex: 0 0 auto;
  background: url("assets/ui/exploration/icon/ui_icon_resource_supply_deck_transparent.png") center / contain no-repeat;
  box-shadow: none;
}

.supply-row {
  display: grid;
  grid-template-columns: minmax(72px, 0.9fr) minmax(64px, 1fr);
  align-items: center;
  gap: 6px;
}

.supply-deck-visual {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 90px;
  pointer-events: none;
}

.supply-deck-stack {
  position: relative;
  width: 92px;
  height: 94px;
  filter: drop-shadow(0 5px 8px rgba(0, 0, 0, 0.34));
}

.supply-deck-art {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 1;
  width: 108%;
  height: 108%;
  pointer-events: none;
  background: url("assets/ui/exploration/icon/ui_supply_deck_stack_transparent.png") center / contain no-repeat;
  transform: translate(-50%, -50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center center;
}

.game-shell .supply-deck-art[data-layout-id^="exploration-"] {
  transform: translate(-50%, -50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.supply-deck-card {
  position: absolute;
  left: 50%;
  top: 38%;
  z-index: 2;
  display: grid;
  gap: 1px;
  min-width: 48px;
  transform: translate(-50%, -50%);
  text-align: center;
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.82);
}

.supply-deck-card[data-layout-id^="exploration-"] {
  transform: translate(-50%, -50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center center;
}

.supply-deck-card strong {
  color: #f1dfb3;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 25px;
  line-height: 0.95;
}

.supply-deck-card span {
  color: #d7c18c;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0;
  line-height: 1;
}

.supply-deck-layers {
  display: none;
}

.relic-gear-panel {
  order: 10;
  display: grid;
  gap: 4px;
  padding-top: 3px;
}

.relic-gear-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.relic-gear-panel h2 {
  margin: 0;
  color: #d8bd7d;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 15px;
  letter-spacing: 0;
}

.relic-heading-copy {
  display: grid;
  gap: 1px;
}

.relic-heading-copy span {
  color: rgba(202, 184, 137, 0.72);
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0;
}

.manage-gear-icon-btn {
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  display: grid;
  place-items: center;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(179, 138, 69, 0.58);
  color: #f0dfb6;
  background: linear-gradient(180deg, rgba(41, 35, 27, 0.9), rgba(10, 9, 8, 0.96));
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
}

.manage-gear-icon-btn:hover {
  border-color: rgba(213, 184, 104, 0.82);
  filter: brightness(1.12);
}

.gear-slot-grid {
  display: grid;
  grid-template-columns: repeat(5, 34px);
  justify-content: center;
  gap: 4px;
}

.gear-slot {
  position: relative;
  width: 34px;
  height: 34px;
  min-height: 0;
  aspect-ratio: 1 / 1;
  display: grid;
  grid-template-rows: min-content 1fr;
  place-items: center;
  gap: 3px;
  padding: 4px 3px;
  border: 1px solid rgba(179, 138, 69, 0.12);
  background: rgba(5, 8, 9, 0.14);
  box-shadow: none;
  text-align: center;
}

.game-shell .left-panel .gear-slot-grid .gear-slot {
  width: 42px;
  height: 42px;
  padding: 6px 4px 5px;
  overflow: visible;
  background: transparent;
  border-color: transparent;
}

.game-shell .left-panel .gear-slot-grid .gear-slot::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background: url("assets/ui/relic/slot/ui_relic_slot_backplate_small.png") center / contain no-repeat;
  pointer-events: none;
}

.game-shell .left-panel .gear-slot-grid {
  grid-template-columns: repeat(5, 42px);
  gap: 4px;
}

.gear-slot.is-equipped {
  border-color: rgba(213, 184, 104, 0.42);
  box-shadow: 0 0 8px rgba(185, 139, 62, 0.08);
  gap: 1px;
  padding: 3px;
}

.gear-slot.gear-slot--has-thumb {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
}

.gear-slot span {
  position: relative;
  z-index: 1;
  color: var(--muted);
  font-size: 8px;
  font-weight: 900;
}

.gear-slot.gear-slot--has-thumb > span {
  display: none;
}

.gear-slot strong {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 100%;
  min-height: 18px;
  overflow: hidden;
  color: #d9ccb0;
  font-size: 7px;
  font-weight: 800;
  line-height: 1.1;
  overflow-wrap: anywhere;
}

.gear-slot--weapon strong {
  color: #e0c98d;
}

.gear-slot.gear-slot--has-thumb > strong {
  width: 100%;
  height: 100%;
  min-height: 0;
  display: grid;
  place-items: center;
}

.gear-slot img {
  position: relative;
  z-index: 1;
  width: 22px;
  height: 22px;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  pointer-events: none;
  filter: brightness(1.1) drop-shadow(0 0 5px rgba(220, 170, 70, 0.18));
}

.set-effect-summary {
  display: grid;
  gap: 1px;
  padding: 4px 7px;
  border: 1px solid rgba(179, 138, 69, 0.055);
  background: rgba(5, 8, 9, 0.13);
}

.set-effect-summary span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
}

.set-effect-summary strong {
  color: #b8ac8c;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 11px;
  line-height: 1.08;
}

.set-effect-summary strong .left-set-effect-line {
  display: block;
}

.set-effect-summary strong .left-set-effect-line + .left-set-effect-line {
  margin-top: 1px;
}

.set-effect-summary strong .left-set-effect-title {
  color: #d8c78f;
}

.set-effect-summary strong .left-set-effect-description {
  color: #c8b77f;
  font-size: 10px;
  font-weight: 700;
  margin-left: 0.35em;
}

.set-effect-summary small {
  color: #c8b77f;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 10px;
  line-height: 1.2;
}

.set-effect-summary small[hidden] {
  display: none;
}

.game-shell .left-panel .set-effect-summary {
  height: 54px;
  min-height: 54px;
  max-height: 54px;
  grid-template-rows: 10px 32px;
  align-content: start;
  overflow: hidden;
}

.game-shell .left-panel .set-effect-summary strong {
  display: block;
  min-height: 30px;
  max-height: 30px;
  overflow: hidden;
}

.game-shell .left-panel .set-effect-summary strong .left-set-effect-line {
  line-height: 1.32;
  white-space: nowrap;
  overflow: hidden;
}

.hud-icon {
  width: 34px;
  height: 34px;
  display: inline-block;
  background-image: url("assets/generated/hud-icons.png");
  background-repeat: no-repeat;
  background-size: 300% 100%;
  filter: drop-shadow(0 2px 0 #000);
}

.hud-icon-hp {
  background-position: 50% 0;
}

.hud-icon-def {
  background-position: 100% 0;
}

.digit-number {
  display: inline-flex;
  align-items: center;
  gap: var(--digit-gap, 1px);
  min-height: 28px;
}

.digit {
  width: var(--digit-width, 18px);
  height: var(--digit-height, 25px);
  display: inline-block;
  background-image: url("assets/generated/hud-digits.png");
  background-repeat: no-repeat;
  background-size: 1000% 100%;
  filter: brightness(1.12) drop-shadow(0 1px 0 #000);
}

.digit-inactive {
  opacity: 0.34;
  filter: grayscale(1) brightness(0.62);
}

.vital-meter .digit {
  width: 21px;
  height: 30px;
}

.digit-0 { background-position: 0 0; }
.digit-1 { background-position: 11.111% 0; }
.digit-2 { background-position: 22.222% 0; }
.digit-3 { background-position: 33.333% 0; }
.digit-4 { background-position: 44.444% 0; }
.digit-5 { background-position: 55.556% 0; }
.digit-6 { background-position: 66.667% 0; }
.digit-7 { background-position: 77.778% 0; }
.digit-8 { background-position: 88.889% 0; }
.digit-9 { background-position: 100% 0; }

.state-row {
  display: flex;
  align-items: center;
  min-height: 32px;
}

.state {
  width: 100%;
  margin: 0;
  padding: 8px 10px;
  border: 1px solid rgba(179, 138, 69, 0.34);
  color: #f1d58c;
  background: rgba(5, 7, 9, 0.72);
  font-size: 12px;
  font-weight: 900;
  text-align: center;
  letter-spacing: 0;
}

.state-playing {
  animation: state-pulse 2s ease-in-out infinite;
}

.state-row {
  display: none;
}

@keyframes state-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.72; }
}

.center-stage {
  --center-stage-edge-bleed: 2px;
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: 8px;
  min-width: 0;
  min-height: 0;
  position: relative;
  margin-inline: calc(var(--center-stage-edge-bleed) * -1);
  background: transparent;
  box-shadow: none;
  isolation: isolate;
  overflow: visible;
}

.center-stage::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(ellipse at 50% 44%, rgba(0, 0, 0, 0.18), rgba(0, 0, 0, 0.38) 72%, rgba(0, 0, 0, 0.48)),
    linear-gradient(180deg, rgba(0, 0, 0, 0.08), rgba(0, 0, 0, 0.24));
  opacity: 0;
  pointer-events: none;
  transition: opacity 160ms ease;
}

.center-stage::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 60;
  background:
    radial-gradient(ellipse at 50% 42%, rgba(0, 0, 0, 0.76), rgba(0, 0, 0, 0.94));
  opacity: 0;
  pointer-events: none;
  transition: opacity 160ms ease;
}

.center-stage.is-scene-fading::after {
  opacity: 1;
}

.center-stage.is-battle-ambient::before {
  opacity: 1;
  animation: battle-dim-in 160ms ease both;
}

.center-stage.is-final-boss-battle {
  overflow: visible;
}

.center-stage.is-shop-active {
  overflow: visible;
}

.center-stage.is-shop-active::before {
  opacity: 1;
  animation: battle-dim-in 160ms ease both;
}

.center-stage.is-shop-active::after {
  display: none;
  opacity: 0;
}

.center-stage.is-player-damage-shaking {
  animation: player-damage-stage-shake 160ms ease-out;
}

.game-shell.is-gameover .center-stage::before {
  opacity: 0;
  animation: none;
}

.game-shell.is-clear .center-stage::before {
  opacity: 0;
  animation: none;
}

.board-wrap {
  position: relative;
  z-index: 1;
  padding: 10px;
  overflow: visible;
  display: grid;
  place-items: center;
  min-height: 0;
  border-color: transparent;
  background: transparent;
  box-shadow: none;
}

.board-wrap::before {
  display: none;
}

#gameCanvas {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  max-width: 800px;
  max-height: calc(100vh - 190px);
  aspect-ratio: 4 / 3;
  height: auto;
  margin: 0 auto;
  background: transparent;
  cursor: pointer;
  image-rendering: auto;
}

.center-stage.is-shop-active #gameCanvas {
  filter: brightness(0.55) saturate(0.85);
}

.exploration-card-layer {
  position: absolute;
  z-index: 2;
  left: 50%;
  top: 50%;
  width: min(calc(100% - 20px), 800px);
  aspect-ratio: 4 / 3;
  transform: translate(-50%, -50%);
  perspective: 940px;
  perspective-origin: 50% 30%;
  transform-style: preserve-3d;
  pointer-events: none;
}

.exploration-card-layer[hidden] {
  display: none;
}

.exploration-card-layer.is-syncing {
  visibility: hidden;
  pointer-events: none;
}

.exploration-card-layer.is-battle-background {
  opacity: 0.42;
  filter: brightness(0.62) saturate(0.82);
  pointer-events: none;
}

.exploration-card-layer.is-battle-background .explore-card {
  pointer-events: none;
  cursor: default;
  filter: none;
  transform: translate3d(0, 0, 0) scale(var(--explore-card-scale));
  transition: none;
}

.exploration-card-layer.is-battle-background .explore-card:hover,
.exploration-card-layer.is-battle-background .explore-card.is-selected,
.exploration-card-layer.is-battle-background .explore-card.is-focused,
.exploration-card-layer.is-battle-background .explore-card:focus-visible,
.exploration-card-layer.is-battle-background .explore-card.is-selected:hover {
  filter: none;
  transform: translate3d(0, 0, 0) scale(var(--explore-card-scale));
  box-shadow: none;
}

.exploration-card-layer.is-battle-background .card-focus {
  opacity: 0;
  border-color: rgba(229, 195, 121, 0);
  box-shadow: none;
}

.center-stage.is-shop-active .exploration-card-layer {
  filter: brightness(0.55) saturate(0.85);
  pointer-events: none;
}

.center-stage.is-shop-active .exploration-card-layer .explore-card {
  pointer-events: none;
  cursor: default;
}

.center-stage.is-shop-active .exploration-card-layer .explore-card:hover,
.center-stage.is-shop-active .exploration-card-layer .explore-card.is-selected,
.center-stage.is-shop-active .exploration-card-layer .explore-card.is-focused,
.center-stage.is-shop-active .exploration-card-layer .explore-card:focus,
.center-stage.is-shop-active .exploration-card-layer .explore-card:focus-visible,
.center-stage.is-shop-active .exploration-card-layer .explore-card.is-selected:hover {
  filter: none;
  transform: translate3d(0, 0, 0) scale(var(--explore-card-scale));
  box-shadow: none;
}

.center-stage.is-shop-active .exploration-card-layer .explore-card:hover .card-focus,
.center-stage.is-shop-active .exploration-card-layer .explore-card.is-selected .card-focus,
.center-stage.is-shop-active .exploration-card-layer .explore-card.is-focused .card-focus,
.center-stage.is-shop-active .exploration-card-layer .explore-card:focus .card-focus,
.center-stage.is-shop-active .exploration-card-layer .explore-card:focus-visible .card-focus {
  opacity: 0;
  border-color: rgba(229, 195, 121, 0);
  box-shadow: none;
}

.exploration-card-board {
  --explore-card-w: 97px;
  --explore-card-h: 154.5px;
  --explore-card-gap-x: 10px;
  --explore-card-gap-y: 9px;
  --explore-card-scale: 0.95;
  --explore-card-hover-scale: 0.961;
  --explore-card-selected-scale: 0.96;
  --explore-card-selected-hover-scale: 0.965;
  --board-tilt-x: 52deg;
  --board-scale: 1.08;
  --board-y: -68px;
  --board-z: 0px;
  position: absolute;
  left: 50%;
  top: 50%;
  display: grid;
  grid-template-columns: repeat(4, var(--explore-card-w));
  grid-template-rows: repeat(4, var(--explore-card-h));
  gap: var(--explore-card-gap-y) var(--explore-card-gap-x);
  transform:
    translate(-50%, -50%)
    translate3d(0, var(--board-y), var(--board-z))
    rotateX(var(--board-tilt-x))
    scale(var(--board-scale));
  transform-origin: center center;
  transform-style: preserve-3d;
  pointer-events: none;
}

.explore-card {
  --card-face-zoom: 1.08;
  position: relative;
  width: var(--explore-card-w);
  height: var(--explore-card-h);
  padding: 0;
  border: 0;
  border-radius: 8px;
  background: transparent;
  box-shadow: none;
  cursor: pointer;
  opacity: 1;
  outline: none;
  overflow: visible;
  pointer-events: auto;
  transform: translate3d(0, 0, 0) scale(var(--explore-card-scale));
  transform-origin: center center;
  transform-style: preserve-3d;
  backface-visibility: hidden;
  isolation: isolate;
  will-change: transform, filter;
  transition: filter 120ms ease, opacity 120ms ease, transform 120ms ease, box-shadow 120ms ease;
}

.card-face {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  pointer-events: none;
  transform: translateZ(0) scale(var(--card-face-zoom));
  transform-origin: center center;
}

.card-surface {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  pointer-events: none;
}

.card-front-surface {
  overflow: hidden;
  isolation: isolate;
  clip-path: inset(0 round 8px);
}

.card-back-layer {
  z-index: 1;
  opacity: 1;
}

.card-back-surface {
  overflow: hidden;
  background: var(--asset-exploration-card-back) center / 128% 128% no-repeat;
}

.card-front-layer {
  z-index: 2;
  opacity: 0;
}

.card-front-surface::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
  pointer-events: none;
  opacity: 0;
  mix-blend-mode: color;
}

.explore-card.is-facedown .card-front-layer {
  opacity: 0;
}

.explore-card.is-revealed .card-back-layer {
  opacity: 0;
}

.explore-card.is-revealed .card-front-layer {
  opacity: 1;
}

.explore-card.is-hidden {
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}

.explore-card.is-revealed {
  background: transparent;
  box-shadow: none;
  color: #f2dfb6;
}

.explore-card.is-bingo-line-clear {
  animation: bingo-line-cell-flash 1000ms ease-out both;
}

.explore-card.is-bingo-line-clear::after {
  content: "";
  position: absolute;
  inset: -13%;
  z-index: 12;
  border-radius: 10px;
  background:
    linear-gradient(
      90deg,
      transparent 0%,
      rgba(255, 248, 192, 0) 36%,
      rgba(255, 248, 192, 0.92) 48%,
      rgba(255, 190, 80, 0.62) 54%,
      rgba(255, 248, 192, 0) 66%,
      transparent 100%
    );
  box-shadow:
    0 0 18px rgba(255, 214, 103, 0.72),
    0 0 34px rgba(207, 94, 38, 0.42);
  opacity: 0;
  pointer-events: none;
  mix-blend-mode: screen;
  animation: bingo-line-band-sweep 1000ms ease-out both;
}

.explore-card.is-bingo-line-column::after {
  transform: rotate(90deg) translateX(-130%);
  animation-name: bingo-line-band-sweep-column;
}

.explore-card.is-bingo-line-diagonal-main::after {
  transform: rotate(45deg) translateX(-142%);
  animation-name: bingo-line-band-sweep-diagonal-main;
}

.explore-card.is-bingo-line-diagonal-anti::after {
  transform: rotate(-45deg) translateX(-142%);
  animation-name: bingo-line-band-sweep-diagonal-anti;
}

@keyframes bingo-line-cell-flash {
  0% {
    filter: brightness(1) saturate(1);
    box-shadow: none;
  }

  16% {
    filter: brightness(1.46) saturate(1.24);
    box-shadow:
      0 0 0 1px rgba(255, 233, 153, 0.82),
      0 0 18px rgba(255, 209, 102, 0.72),
      0 0 38px rgba(173, 74, 28, 0.48);
  }

  62% {
    filter: brightness(1.18) saturate(1.12);
    box-shadow:
      0 0 0 1px rgba(255, 225, 136, 0.40),
      0 0 12px rgba(255, 204, 89, 0.40);
  }

  100% {
    filter: brightness(1) saturate(1);
    box-shadow: none;
  }
}

@keyframes bingo-line-band-sweep {
  0% {
    opacity: 0;
    transform: translateX(-135%);
  }

  20% {
    opacity: 0.9;
  }

  72% {
    opacity: 0.72;
  }

  100% {
    opacity: 0;
    transform: translateX(135%);
  }
}

@keyframes bingo-line-band-sweep-column {
  0% {
    opacity: 0;
    transform: rotate(90deg) translateX(-135%);
  }

  20% {
    opacity: 0.9;
  }

  72% {
    opacity: 0.72;
  }

  100% {
    opacity: 0;
    transform: rotate(90deg) translateX(135%);
  }
}

@keyframes bingo-line-band-sweep-diagonal-main {
  0% {
    opacity: 0;
    transform: rotate(45deg) translateX(-142%);
  }

  20% {
    opacity: 0.9;
  }

  72% {
    opacity: 0.72;
  }

  100% {
    opacity: 0;
    transform: rotate(45deg) translateX(142%);
  }
}

@keyframes bingo-line-band-sweep-diagonal-anti {
  0% {
    opacity: 0;
    transform: rotate(-45deg) translateX(-142%);
  }

  20% {
    opacity: 0.9;
  }

  72% {
    opacity: 0.72;
  }

  100% {
    opacity: 0;
    transform: rotate(-45deg) translateX(142%);
  }
}

.card-front-frame {
  position: absolute;
  left: -11%;
  top: -11%;
  z-index: 2;
  width: 122%;
  height: 122%;
  object-fit: fill;
  filter: contrast(1.02) saturate(0.98);
  pointer-events: none;
  user-select: none;
}

.card-event-full-image {
  position: absolute;
  inset: 0;
  z-index: 2;
  width: 100%;
  height: 100%;
  object-fit: fill;
  pointer-events: none;
  user-select: none;
}

.card-event-surface,
.explore-card.type-key .card-event-surface {
  background: transparent;
}

.explore-card.rarity-common .card-front-frame {
  filter: contrast(1.03) saturate(0.96) brightness(0.99);
}

.explore-card.rarity-common .card-front-surface::after {
  background: rgba(121, 91, 45, 0.10);
  opacity: 0.22;
}

.explore-card.rarity-rare .card-front-frame {
  filter: sepia(0.08) saturate(0.92) hue-rotate(174deg) brightness(1.08) contrast(1.04);
}

.explore-card.rarity-rare .card-front-surface::after {
  background: rgba(76, 133, 176, 0.26);
  opacity: 0.34;
}

.explore-card.rarity-legendary .card-front-frame {
  filter: sepia(0.28) saturate(1.18) hue-rotate(-18deg) brightness(1.07) contrast(1.06);
}

.explore-card.rarity-legendary .card-front-surface::after {
  background: rgba(179, 69, 36, 0.30);
  opacity: 0.36;
}

.explore-card.type-key .card-front-frame {
  filter: sepia(0.46) saturate(1.55) hue-rotate(-10deg) brightness(1.18) contrast(1.08);
}

.explore-card.type-key .card-front-surface {
  background:
    radial-gradient(circle at 50% 30%, rgba(255, 220, 109, 0.26), transparent 52%),
    linear-gradient(180deg, rgba(137, 91, 22, 0.26), rgba(52, 31, 8, 0.18));
}

.explore-card.type-key .card-front-surface::after {
  background: rgba(236, 172, 42, 0.46);
  opacity: 0.52;
}

.explore-card.rarity-common .card-event-surface::after,
.explore-card.rarity-rare .card-event-surface::after,
.explore-card.rarity-legendary .card-event-surface::after {
  background: transparent;
  opacity: 0;
}

.card-type-label {
  position: absolute;
  top: 7.5%;
  left: 50%;
  width: 56%;
  z-index: 3;
  color: #d7bb7c;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 8.5px;
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1;
  text-align: center;
  text-shadow:
    0 1px 2px rgba(0, 0, 0, 0.95),
    0 0 5px rgba(212, 176, 104, 0.18);
  transform: translateX(-50%);
}

.card-badge {
  position: absolute;
  top: 10%;
  z-index: 4;
  display: grid;
  place-items: center;
  width: 15%;
  aspect-ratio: 1;
  border: 1px solid rgba(255, 222, 151, 0.94);
  background: linear-gradient(135deg, rgba(76, 16, 19, 0.98), rgba(150, 46, 31, 0.96));
  box-shadow:
    inset 0 0 6px rgba(255, 229, 156, 0.32),
    0 1px 5px rgba(0, 0, 0, 0.66),
    0 0 7px rgba(175, 78, 49, 0.18);
  color: #fff0bf;
  font-size: 8.5px;
  font-weight: 900;
  line-height: 1;
  text-align: center;
  text-shadow:
    0 1px 1px rgba(0, 0, 0, 0.95),
    0 0 4px rgba(255, 239, 195, 0.30);
  transform: rotate(45deg);
}

.card-badge span {
  transform: rotate(-45deg);
}

.card-badge-left {
  left: 11.5%;
}

.card-badge-right {
  right: 11.5%;
}

.card-badge-def {
  background: linear-gradient(135deg, rgba(18, 42, 71, 0.98), rgba(43, 113, 165, 0.96));
  box-shadow:
    inset 0 0 6px rgba(197, 229, 255, 0.30),
    0 1px 5px rgba(0, 0, 0, 0.66),
    0 0 7px rgba(84, 161, 217, 0.16);
}

.card-badge-hp {
  background: linear-gradient(135deg, rgba(22, 74, 39, 0.98), rgba(66, 151, 78, 0.96));
  box-shadow:
    inset 0 0 6px rgba(205, 255, 198, 0.28),
    0 1px 5px rgba(0, 0, 0, 0.66),
    0 0 7px rgba(97, 191, 90, 0.16);
}

.card-badge-spd {
  background: linear-gradient(135deg, rgba(28, 62, 71, 0.98), rgba(61, 129, 142, 0.96));
  box-shadow:
    inset 0 0 6px rgba(197, 246, 255, 0.28),
    0 1px 5px rgba(0, 0, 0, 0.66),
    0 0 7px rgba(92, 190, 202, 0.16);
}

.card-art-area,
.card-art-placeholder,
.card-name,
.card-effect {
  position: absolute;
  z-index: 3;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.92);
  pointer-events: none;
}

.card-art-area {
  left: 9.5%;
  right: 9.5%;
  top: 18.5%;
  height: 50%;
  display: grid;
  place-items: center;
  overflow: visible;
}

.card-art-placeholder {
  position: relative;
  inset: auto;
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  color: rgba(238, 218, 162, 0.96);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 27px;
  font-weight: 900;
  letter-spacing: 0;
  line-height: 1;
  text-shadow:
    0 1px 2px rgba(0, 0, 0, 0.98),
    0 0 9px rgba(223, 185, 105, 0.20);
}

.card-art-placeholder::before,
.card-art-placeholder::after {
  content: "";
  display: block;
  pointer-events: none;
}

.card-art-image {
  display: block;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  pointer-events: none;
  user-select: none;
}

.card-art-image-monster-slime {
  width: 82%;
  height: 82%;
  filter: none;
}

.card-art-image-monster-goblin {
  width: 86%;
  height: 86%;
  filter: none;
}

.card-art-image-monster-skeleton {
  width: 90%;
  height: 90%;
  filter: none;
}

.card-art-image-monster-orc {
  width: 90%;
  height: 90%;
  filter: none;
}

.card-art-image-monster-dark-knight {
  width: 94%;
  height: 94%;
  filter: none;
}

.card-art-image-monster-lich {
  width: 90%;
  height: 92%;
  filter: none;
}

.card-art-image-monster-boss {
  width: 96%;
  height: 76%;
  filter: none;
}

.card-art-image-item {
  width: 86%;
  height: 86%;
  object-fit: contain;
  object-position: center center;
  filter: drop-shadow(0 4px 5px rgba(0, 0, 0, 0.58));
}

.card-art-image-dagger {
  width: 76%;
  height: 86%;
}

.card-art-image-wooden-bow {
  width: 90%;
  height: 86%;
}

.card-art-image-iron-sword {
  width: 86%;
  height: 88%;
}

.card-art-image-silver-axe {
  width: 92%;
  height: 90%;
}

.card-art-image-dragon-slayer {
  width: 94%;
  height: 92%;
}

.card-art-image-muramasa {
  width: 94%;
  height: 92%;
  object-position: center center;
}

.card-art-image-potion,
.card-art-image-shield,
.card-art-image-trap,
.card-art-image-board-effect,
.card-art-image-key {
  width: 82%;
  height: 82%;
}

.card-name {
  left: 11%;
  right: 11%;
  bottom: 20%;
  color: rgba(245, 228, 186, 0.82);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 7.4px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0.01em;
  height: 7%;
  display: flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
}

.card-effect {
  left: 11%;
  right: 11%;
  bottom: 10.5%;
  color: #ead39a;
  font-size: 8.5px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0.01em;
  height: 7%;
  display: flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
}

.type-monster .card-art-placeholder {
  color: rgba(168, 222, 190, 0.95);
  font-size: 31px;
  text-shadow:
    0 1px 2px rgba(0, 0, 0, 0.98),
    0 0 10px rgba(75, 173, 103, 0.26);
}

.type-monster .card-art-placeholder::before {
  width: 48px;
  height: 36px;
  border: 2px solid rgba(169, 235, 195, 0.72);
  border-radius: 50% 50% 42% 42% / 62% 62% 38% 38%;
  background:
    radial-gradient(circle at 34% 44%, rgba(231, 255, 229, 0.92) 0 2px, transparent 2.6px),
    radial-gradient(circle at 64% 44%, rgba(231, 255, 229, 0.92) 0 2px, transparent 2.6px),
    radial-gradient(circle at 50% 86%, rgba(4, 17, 13, 0.60), transparent 46%),
    linear-gradient(180deg, rgba(61, 148, 104, 0.88), rgba(14, 64, 61, 0.92));
  box-shadow:
    inset 0 -8px 12px rgba(2, 12, 13, 0.48),
    inset 0 3px 7px rgba(202, 255, 215, 0.16),
    0 0 12px rgba(55, 171, 111, 0.20);
  clip-path: polygon(50% 0, 78% 10%, 92% 36%, 100% 76%, 84% 100%, 16% 100%, 0 76%, 8% 36%, 22% 10%);
}

.type-weapon .card-art-placeholder {
  color: rgba(216, 228, 232, 0.96);
}

.type-weapon .card-art-placeholder::before {
  width: 19px;
  height: 55px;
  background:
    linear-gradient(90deg, transparent 0 23%, rgba(244, 247, 234, 0.94) 24% 50%, rgba(132, 154, 160, 0.94) 51% 76%, transparent 77%),
    linear-gradient(180deg, rgba(255, 245, 190, 0.90), rgba(78, 92, 100, 0.94));
  clip-path: polygon(50% 0, 64% 64%, 100% 73%, 100% 84%, 61% 84%, 61% 100%, 39% 100%, 39% 84%, 0 84%, 0 73%, 36% 64%);
  box-shadow:
    0 0 10px rgba(156, 195, 209, 0.18),
    0 2px 4px rgba(0, 0, 0, 0.72);
  transform: rotate(38deg);
}

.type-armor .card-art-placeholder {
  color: rgba(172, 205, 238, 0.96);
}

.type-armor .card-art-placeholder::before {
  width: 42px;
  height: 47px;
  border: 2px solid rgba(190, 223, 252, 0.78);
  background:
    linear-gradient(90deg, transparent 48%, rgba(235, 247, 255, 0.34) 49% 52%, transparent 53%),
    linear-gradient(180deg, rgba(73, 125, 170, 0.90), rgba(16, 48, 83, 0.94));
  clip-path: polygon(50% 0, 89% 15%, 80% 62%, 50% 100%, 20% 62%, 11% 15%);
  box-shadow:
    inset 0 0 10px rgba(222, 243, 255, 0.16),
    0 0 12px rgba(72, 151, 209, 0.18);
}

.type-heal .card-art-placeholder,
.type-merchant .card-art-placeholder {
  color: rgba(169, 226, 139, 0.96);
}

.type-heal .card-art-placeholder::before {
  width: 32px;
  height: 47px;
  border: 2px solid rgba(211, 255, 190, 0.74);
  border-radius: 9px 9px 14px 14px;
  background:
    linear-gradient(180deg, rgba(214, 255, 206, 0.30) 0 22%, transparent 23%),
    radial-gradient(circle at 50% 70%, rgba(163, 255, 122, 0.92), rgba(35, 111, 51, 0.92) 48%, rgba(8, 34, 24, 0.94) 72%);
  box-shadow:
    inset 0 0 9px rgba(222, 255, 207, 0.20),
    0 0 13px rgba(93, 203, 78, 0.20);
}

.type-heal .card-art-placeholder::after {
  position: absolute;
  width: 16px;
  height: 5px;
  border-radius: 2px;
  background: rgba(222, 255, 198, 0.86);
  box-shadow: 0 0 6px rgba(141, 240, 111, 0.25);
}

.type-trap .card-art-placeholder {
  color: rgba(238, 154, 119, 0.96);
}

.type-boardBuff .card-art-placeholder {
  color: rgba(159, 224, 229, 0.96);
}

.type-trap .card-art-placeholder::before {
  width: 50px;
  height: 38px;
  background: linear-gradient(180deg, rgba(234, 120, 87, 0.95), rgba(65, 18, 21, 0.96));
  clip-path: polygon(0 100%, 10% 100%, 20% 25%, 34% 100%, 45% 100%, 50% 5%, 55% 100%, 66% 100%, 80% 25%, 90% 100%, 100% 100%, 100% 92%, 0 92%);
  box-shadow:
    inset 0 -5px 8px rgba(0, 0, 0, 0.42),
    0 0 12px rgba(207, 64, 47, 0.22);
}

.type-key .card-art-placeholder {
  color: rgba(234, 204, 116, 0.96);
  font-size: 24px;
}

.type-key .card-art-placeholder::before {
  width: 50px;
  height: 24px;
  border: 3px solid rgba(242, 205, 109, 0.92);
  border-right-width: 0;
  border-radius: 50% 0 0 50%;
  background:
    linear-gradient(90deg, transparent 0 31%, rgba(242, 205, 109, 0.92) 32% 100%);
  box-shadow:
    inset 0 0 7px rgba(255, 238, 174, 0.22),
    0 0 12px rgba(219, 163, 52, 0.24);
}

.type-key .card-art-placeholder::after {
  position: absolute;
  width: 13px;
  height: 13px;
  right: 18%;
  bottom: 35%;
  border-right: 4px solid rgba(242, 205, 109, 0.92);
  border-bottom: 4px solid rgba(242, 205, 109, 0.92);
}

.type-merchant .card-art-placeholder::before {
  width: 43px;
  height: 38px;
  border: 2px solid rgba(218, 188, 111, 0.84);
  border-radius: 48% 48% 38% 38%;
  background:
    radial-gradient(circle at 50% 66%, rgba(244, 195, 70, 0.95), rgba(110, 75, 25, 0.94) 46%, rgba(36, 24, 16, 0.95) 68%),
    linear-gradient(180deg, rgba(120, 91, 40, 0.96), rgba(27, 21, 15, 0.96));
  box-shadow:
    inset 0 5px 8px rgba(255, 224, 139, 0.14),
    0 0 12px rgba(219, 158, 57, 0.22);
}

.type-merchant .card-art-placeholder::after {
  position: absolute;
  top: 18%;
  width: 18px;
  height: 7px;
  border-radius: 50%;
  border: 2px solid rgba(236, 204, 125, 0.84);
  border-bottom: 0;
}

.type-monster .card-type-label,
.type-trap .card-type-label {
  color: #e0a07e;
}

.type-boardBuff .card-type-label {
  color: #a8d7dd;
}

.type-weapon .card-type-label {
  color: #c5d8e0;
}

.type-armor .card-type-label {
  color: #a9c5df;
}

.type-heal .card-type-label,
.type-merchant .card-type-label {
  color: #a9d78d;
}

.type-key .card-type-label {
  color: #e6c979;
}

.explore-card::before {
  content: none;
  display: none;
  pointer-events: none;
}

.explore-card.is-revealed::before {
  display: none;
}

.explore-card::after {
  content: none;
  display: none;
}

.card-focus {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  border: 1px solid rgba(229, 195, 121, 0);
  box-shadow: 0 0 0 rgba(0, 0, 0, 0);
  opacity: 0;
  z-index: 30;
  transform-origin: center center;
  transition: border-color 120ms ease, box-shadow 120ms ease, opacity 120ms ease;
  pointer-events: none;
}

.explore-card:hover {
  filter: none;
  transform: translate3d(0, -2px, 16px) scale(var(--explore-card-hover-scale));
  box-shadow: none;
}

.explore-card.is-revealed:hover {
  box-shadow: none;
}

.explore-card:hover .card-focus,
.explore-card.is-selected .card-focus,
.explore-card.is-focused .card-focus,
.explore-card:focus-visible .card-focus {
  border-color: rgba(231, 198, 121, 0.54);
  box-shadow:
    0 0 9px rgba(215, 176, 93, 0.22),
    inset 0 0 5px rgba(215, 176, 93, 0.12);
  opacity: 1;
}

.explore-card.is-selected {
  filter: none;
  transform: translate3d(0, -2px, 14px) scale(var(--explore-card-selected-scale));
  box-shadow: none;
}

.explore-card.is-revealed.is-selected {
  box-shadow: none;
}

.explore-card.is-selected:hover {
  transform: translate3d(0, -3px, 22px) scale(var(--explore-card-selected-hover-scale));
}

.battle-card-stage {
  position: absolute;
  z-index: 4;
  left: 50%;
  top: 50%;
  width: min(calc(100% - 20px), 800px);
  aspect-ratio: 4 / 3;
  transform: translate(-50%, -50%);
  pointer-events: none;
  overflow: visible;
  perspective: 940px;
  perspective-origin: 50% 32%;
}

.battle-card-stage[hidden] {
  display: none;
}

.combat-effect-layer {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(calc(100% - 20px), 800px);
  aspect-ratio: 4 / 3;
  transform: translate(-50%, -50%);
  z-index: 18;
  pointer-events: none;
  overflow: visible;
}

.combat-effect-sprite {
  position: absolute;
  left: 50%;
  top: 45%;
  width: 320px;
  height: 320px;
  background-repeat: no-repeat;
  background-position: 0 0;
  background-size: 2560px 640px;
  transform: translate(-50%, -50%) scale(var(--combat-effect-scale, 1));
  transform-origin: center;
  opacity: var(--combat-effect-opacity, 1);
  pointer-events: none;
  will-change: background-position, opacity, transform;
}

.combat-cutin-dim {
  --cutin-dim-opacity: 0.32;
  position: absolute;
  inset: 0;
  z-index: 32;
  pointer-events: none;
  visibility: hidden;
  opacity: 0;
  background:
    radial-gradient(ellipse at 50% 45%, rgba(3, 5, 9, 0.08), rgba(0, 0, 0, 0.48) 78%),
    linear-gradient(90deg, rgba(2, 4, 8, 0.14), rgba(0, 0, 0, 0.64), rgba(2, 4, 8, 0.14));
  transition: opacity 120ms ease, visibility 0s linear 120ms;
}

.combat-cutin-dim.is-active {
  visibility: visible;
  opacity: var(--cutin-dim-opacity);
  transition: opacity 80ms ease;
}

.combat-cutin-dim--boss {
  --cutin-dim-opacity: 0.5;
  background:
    radial-gradient(ellipse at 52% 44%, rgba(80, 0, 0, 0.12), rgba(18, 0, 0, 0.46) 64%, rgba(0, 0, 0, 0.76) 100%),
    linear-gradient(90deg, rgba(42, 0, 0, 0.22), rgba(2, 0, 0, 0.68) 50%, rgba(70, 0, 0, 0.2));
}

.board-wrap.is-combat-cutin-dimming {
  z-index: 8;
}

.board-wrap.is-combat-cutin-dimming .log-strip {
  z-index: 70;
}

.combat-cutin-safe-area {
  --cutin-safe-margin: clamp(36px, 4.4%, 56px);
  --cutin-card-width: min(320px, calc(100% - (var(--cutin-safe-margin) + var(--cutin-safe-margin))));
  position: absolute;
  left: 0;
  right: 0;
  top: 10px;
  bottom: 10px;
  z-index: 90;
  pointer-events: none;
  overflow: visible;
}

.combat-cutin-card-layer {
  --cutin-art-scale: 1;
  --cutin-art-position: center center;
  --cutin-card-y: 50%;
  --cutin-flip-rotation: 180deg;
  --cutin-back-rotation: 180deg;
  --cutin-card-origin: center center;
  --cutin-perspective-x: 42%;
  --cutin-card-tilt: 0deg;
  --cutin-duration-ms: 820ms;
  position: absolute;
  z-index: 90;
  inset: 0;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  overflow: visible;
  perspective: 1120px;
  perspective-origin: var(--cutin-perspective-x) 36%;
  transition: opacity 120ms ease, visibility 0s linear 120ms;
}

.combat-cutin-card-layer.is-active {
  opacity: 1;
  visibility: visible;
  transition: opacity 80ms ease;
}

.combat-cutin-card-layer--boss {
  --cutin-flip-rotation: -180deg;
  --cutin-back-rotation: -180deg;
  --cutin-card-origin: center center;
  --cutin-perspective-x: 58%;
  --cutin-card-tilt: 0deg;
}

.combat-cutin-card {
  position: absolute;
  z-index: 2;
  left: var(--cutin-safe-margin);
  right: auto;
  top: var(--cutin-card-y);
  width: var(--cutin-card-width);
  aspect-ratio: 16 / 23;
  transform: translateY(-50%) scale(0.92);
  opacity: 0;
  transform-style: preserve-3d;
  filter:
    drop-shadow(0 14px 16px rgba(0, 0, 0, 0.38))
    drop-shadow(0 0 10px rgba(171, 121, 54, 0.1));
}

.combat-cutin-card--player {
  left: var(--cutin-safe-margin);
  right: auto;
}

.combat-cutin-card--boss {
  left: auto;
  right: var(--cutin-safe-margin);
}

.combat-cutin-card-layer.is-active .combat-cutin-card {
  animation: combat-cutin-card-presence var(--cutin-duration-ms) cubic-bezier(0.18, 0.82, 0.24, 1) both;
}

.combat-cutin-card-inner {
  position: absolute;
  inset: 0;
  transform-origin: var(--cutin-card-origin);
  transform-style: preserve-3d;
  animation: none;
}

.combat-cutin-card-layer.is-active .combat-cutin-card-inner {
  animation: combat-cutin-card-flip var(--cutin-duration-ms) cubic-bezier(0.18, 0.82, 0.24, 1) both;
}

.combat-cutin-card-face {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 0;
  background: transparent;
  backface-visibility: hidden;
  overflow: hidden;
  box-shadow: none;
}

.combat-cutin-card-front {
  background: transparent;
}

.combat-cutin-card-front::before {
  content: none;
}

.combat-cutin-card-back {
  padding: 0;
  transform: rotateY(var(--cutin-back-rotation));
  background: transparent;
}

.combat-cutin-card-back::before {
  content: none;
}

.combat-cutin-art {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: var(--cutin-art-position, center center);
  transform: scale(var(--cutin-art-scale, 1));
  transform-origin: center;
  filter: saturate(0.96) contrast(1.03);
  user-select: none;
}

.battle-card-dim {
  display: none;
}

.battle-focus-anchor {
  position: absolute;
  left: 50%;
  bottom: 58px;
  z-index: 5;
  width: 280px;
  height: 1px;
  transform: translateX(-50%);
  transform-style: flat;
  isolation: isolate;
  pointer-events: none;
}

.battle-focus-anchor.is-final-boss {
  bottom: 154px;
  width: 260px;
  height: 1px;
  z-index: 20;
}

.boss-parts-row {
  position: absolute;
  z-index: 25;
  left: 50%;
  bottom: 54px;
  display: flex;
  gap: 16px;
  transform: translateX(-50%);
  pointer-events: none;
}

.boss-part-card-wrap {
  position: relative;
  width: 106px;
  height: 168px;
  display: flex;
  flex-direction: column;
  align-items: center;
  pointer-events: none;
}

.boss-part-card {
  position: relative;
  width: 106px;
  height: 168px;
  display: grid;
  grid-template-rows: 32px 1fr auto auto;
  align-items: center;
  justify-items: center;
  padding: 11px 10px 14px;
  border: 1px solid rgba(188, 139, 70, 0.74);
  border-radius: 8px;
  color: #f0dfbd;
  background:
    linear-gradient(180deg, rgba(41, 17, 18, 0.72), rgba(8, 10, 12, 0.82)),
    radial-gradient(circle at 50% 38%, rgba(155, 42, 35, 0.2), transparent 56%),
    linear-gradient(90deg, rgba(215, 169, 86, 0.08), transparent 16%, transparent 84%, rgba(215, 169, 86, 0.08));
  box-shadow:
    inset 0 0 0 2px rgba(12, 8, 5, 0.78),
    inset 0 0 0 3px rgba(218, 171, 87, 0.2),
    inset 0 0 30px rgba(0, 0, 0, 0.34),
    0 8px 18px rgba(0, 0, 0, 0.28);
  cursor: pointer;
  pointer-events: auto;
  transform: rotateX(52deg);
  transform-origin: center center;
  transition: border-color 120ms ease, box-shadow 120ms ease, opacity 120ms ease;
}

.boss-part-card::before {
  content: "";
  position: absolute;
  inset: 7px;
  border: 1px solid rgba(222, 180, 96, 0.23);
  border-radius: 5px;
  pointer-events: none;
}

.boss-part-card::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 43%;
  width: 54px;
  height: 48px;
  opacity: 0.32;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.boss-part-card[data-boss-part="leftWing"]::after,
.boss-part-card[data-boss-part="rightWing"]::after {
  background:
    linear-gradient(135deg, transparent 0 28%, rgba(223, 181, 93, 0.42) 29% 34%, transparent 35%),
    radial-gradient(ellipse at 50% 55%, rgba(151, 31, 32, 0.46), rgba(44, 7, 10, 0.2) 62%, transparent 66%);
  clip-path: polygon(50% 6%, 95% 24%, 78% 36%, 100% 54%, 70% 55%, 88% 82%, 54% 64%, 50% 96%, 46% 64%, 12% 82%, 30% 55%, 0 54%, 22% 36%, 5% 24%);
}

.boss-part-card[data-boss-part="core"]::after {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(236, 197, 103, 0.62) 0 13%, transparent 14%),
    radial-gradient(circle, rgba(139, 25, 32, 0.55), rgba(31, 4, 8, 0.16) 64%, transparent 66%);
  box-shadow: 0 0 16px rgba(177, 39, 43, 0.22);
}

.boss-part-card.is-selected {
  border-color: rgba(190, 45, 35, 0.95);
  box-shadow:
    inset 0 0 0 2px rgba(18, 11, 6, 0.78),
    inset 0 0 0 3px rgba(221, 66, 47, 0.24),
    0 0 12px rgba(220, 40, 30, 0.68),
    0 0 22px rgba(130, 14, 18, 0.34),
    0 8px 18px rgba(0, 0, 0, 0.3);
}

.boss-part-card.is-destroyed {
  cursor: default;
  background:
    linear-gradient(180deg, rgba(18, 14, 15, 0.86), rgba(5, 6, 7, 0.9)),
    radial-gradient(circle at 50% 38%, rgba(92, 22, 24, 0.14), transparent 56%);
  border-color: rgba(111, 86, 58, 0.68);
  box-shadow:
    inset 0 0 0 2px rgba(8, 7, 6, 0.84),
    inset 0 0 0 3px rgba(117, 91, 56, 0.18),
    inset 0 0 36px rgba(0, 0, 0, 0.44),
    0 6px 16px rgba(0, 0, 0, 0.24);
}

.boss-part-card.is-destroyed::after {
  opacity: 0.14;
}

.boss-part-title {
  align-self: start;
  max-width: 100%;
  padding: 3px 5px 2px;
  color: #ecd39a;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 11px;
  font-weight: 900;
  line-height: 1.05;
  text-align: center;
  text-shadow:
    0 2px 0 #000,
    0 0 8px rgba(218, 174, 83, 0.28);
  background: rgba(4, 5, 6, 0.56);
  border: 1px solid rgba(214, 169, 86, 0.16);
  border-radius: 3px;
}

.boss-part-hp-bar {
  width: 78px;
  height: 9px;
  margin-top: 8px;
  overflow: hidden;
  border: 1px solid rgba(231, 188, 97, 0.42);
  background: rgba(26, 4, 6, 0.88);
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.72);
}

.boss-part-hp-fill {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, #7d1719, #d94736 68%, #f29a54);
  box-shadow: 0 0 7px rgba(217, 67, 48, 0.35);
  transition: width 140ms ease;
}

.boss-part-hp-text,
.boss-part-broken {
  color: rgba(239, 222, 185, 0.86);
  font-size: 11px;
  font-weight: 900;
  line-height: 1.1;
  text-shadow:
    0 2px 0 #000,
    0 0 6px rgba(0, 0, 0, 0.62);
}

.boss-part-target-label {
  position: absolute;
  left: 50%;
  top: calc(100% - 16px);
  display: none;
  min-width: 64px;
  padding: 0;
  color: #ff6b55;
  font-size: 12px;
  font-weight: 900;
  line-height: 1.05;
  letter-spacing: 0.06em;
  text-align: center;
  pointer-events: none;
  transform: translateX(-50%);
  text-shadow:
    0 1px 0 #000,
    0 0 6px rgba(255, 40, 30, 0.72),
    0 0 11px rgba(255, 40, 30, 0.45);
}

.boss-part-target-label::before {
  content: "\25B2";
  display: block;
  margin-bottom: 2px;
  color: #ff5444;
  font-size: 13px;
  line-height: 1;
  text-shadow:
    0 1px 0 #000,
    0 0 7px rgba(255, 40, 30, 0.75);
}

.boss-part-card-wrap.is-selected:not(.is-destroyed) .boss-part-target-label {
  display: block;
}

.boss-part-broken {
  display: none;
  margin-top: 2px;
  color: #ff9a7a;
  letter-spacing: 0.04em;
  background: rgba(32, 4, 6, 0.66);
  border: 1px solid rgba(198, 74, 58, 0.24);
  padding: 1px 5px;
}

.boss-part-card.is-destroyed .boss-part-broken {
  display: block;
}

.battle-card-base {
  position: absolute;
  left: 50%;
  bottom: 0;
  z-index: 1;
  width: 118px;
  height: 188px;
  transform:
    translateX(-50%)
    rotateX(52deg)
    scale(1.08);
  transform-origin: center center;
  transform-style: preserve-3d;
  opacity: 1;
  animation: none;
}

.battle-card-stage.is-summoning .battle-card-base {
  opacity: 0;
  animation: battle-card-summon 150ms ease-out both 80ms;
}

.battle-focus-anchor.is-final-boss .battle-card-base {
  display: none;
}

.battle-card-base-card {
  position: absolute;
  inset: 0;
  --card-face-zoom: 1;
  border-radius: 8px;
  color: #f2dfb6;
  pointer-events: none;
  transform-style: preserve-3d;
}

.battle-card-base-card .card-badge {
  transform: rotate(45deg) scale(0.86);
}

.battle-card-base-card .card-front-surface {
  opacity: 0.94;
}

.battle-card-base-card .card-art-area-popout-source {
  background:
    radial-gradient(circle at 50% 48%, rgba(213, 180, 91, 0.13), transparent 56%),
    rgba(4, 7, 8, 0.16);
  border: 1px solid rgba(201, 161, 86, 0.06);
}

.battle-enemy-focus-layer {
  position: absolute;
  left: 50%;
  bottom: 44px;
  z-index: 10;
  width: 340px;
  height: 330px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  overflow: visible;
  transform: translateX(-50%);
  transform-origin: center bottom;
  opacity: 1;
  animation: none;
  pointer-events: none;
}

.battle-enemy-focus-layer.size-s {
  width: 200px;
  height: 215px;
}

.battle-enemy-focus-layer.size-m {
  width: 340px;
  height: 330px;
}

.battle-enemy-focus-layer.size-l {
  width: 380px;
  height: 360px;
}

.battle-enemy-focus-layer.size-ex,
.battle-enemy-focus-layer.size-legendary {
  width: 400px;
  height: 380px;
}

.battle-card-stage.is-summoning .battle-enemy-focus-layer {
  opacity: 0;
  animation: battle-popout-rise 250ms cubic-bezier(0.2, 0.9, 0.25, 1.05) both 230ms;
}

.battle-enemy-focus-layer.is-final-boss {
  left: 50%;
  bottom: -34px;
  width: 760px;
  height: 300px;
  z-index: 24;
  overflow: visible;
  transform: translateX(-50%);
  transform-origin: center bottom;
}

.battle-card-stage.sprite-boss .battle-enemy-focus-layer.is-final-boss {
  bottom: -82px;
  width: 980px;
  height: 430px;
}

.battle-card-stage.sprite-verdant_dragon .battle-enemy-focus-layer.is-final-boss {
  bottom: -82px;
  width: 930px;
  height: 392px;
}

.battle-card-stage.sprite-frost_crown_dragon .battle-enemy-focus-layer.is-final-boss {
  bottom: -82px;
  width: 930px;
  height: 392px;
}

.battle-card-stage.sprite-blaze_armor_dragon .battle-enemy-focus-layer.is-final-boss {
  bottom: -86px;
  width: 930px;
  height: 410px;
}

.battle-card-stage.sprite-eclipse_dragon .battle-enemy-focus-layer.is-final-boss,
.battle-card-stage.sprite-planet_observer_16 .battle-enemy-focus-layer.is-final-boss {
  bottom: -82px;
  width: 930px;
  height: 392px;
}

.battle-enemy-focus-layer::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 3px;
  width: 72px;
  height: 14px;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(0, 0, 0, 0.34), rgba(0, 0, 0, 0));
  transform: translateX(-50%);
  z-index: -1;
}

.battle-card-stage.is-resolving-turn .battle-card-base,
.battle-card-stage.is-resolving-turn .battle-enemy-focus-layer {
  opacity: 1;
  animation: none;
}

.battle-card-stage.is-enemy-turn-notice .battle-card-base,
.battle-card-stage.is-enemy-turn-notice .battle-enemy-focus-layer {
  opacity: 1;
}

.battle-card-stage.is-enemy-turn-notice .battle-enemy-focus-layer {
  filter:
    drop-shadow(0 0 12px rgba(255, 54, 42, 0.38))
    brightness(1.05);
}

.battle-fx-layer {
  position: absolute;
  left: 50%;
  top: calc(48% + 12px);
  z-index: 7;
  width: 250px;
  height: 210px;
  transform: translate(-50%, -50%);
  pointer-events: none;
  overflow: visible;
  mix-blend-mode: screen;
}

.battle-fx-layer.is-boss-special-fx {
  z-index: 24;
}

.battle-fx-layer.is-boss-battle-fx {
  z-index: 24;
}

.battle-fx-layer.is-boss-battle-fx.is-boss-special-fx {
  z-index: 31;
}

.battle-fx-image,
.battle-fx-fallback {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
  user-select: none;
}

.battle-fx-image {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.battle-fx-fallback {
  display: none;
  width: 100%;
  height: 100%;
}

.battle-fx-layer.is-playing:not(.has-image-frames) .battle-fx-fallback {
  display: block;
}

.battle-fx-layer.is-playing.has-sprite-sheet .battle-fx-fallback {
  display: none;
}

.battle-fx-sheet {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 400px;
  height: 400px;
  transform: translate(-50%, -50%) scale(var(--battle-fx-sheet-scale, 0.75));
  transform-origin: center center;
  background-repeat: no-repeat;
  background-size: auto;
  mix-blend-mode: screen;
  pointer-events: none;
  will-change: background-position, opacity;
}

.battle-fx-sheet.fx-weaponSlash-sheet,
.battle-fx-sheet.fx-weaponImpact-sheet,
.battle-fx-sheet.fx-doubleAttackSlash-sheet,
.battle-fx-sheet.fx-fireballImpact-sheet,
.battle-fx-sheet.fx-prayerImpact-sheet {
  --battle-fx-sheet-scale: 1;
}

.battle-fx-sheet.fx-darkFlameImpact-sheet {
  filter: brightness(1.45) contrast(1.25) saturate(1.2);
}

.battle-fx-layer.fx-punch .battle-fx-fallback,
.battle-fx-layer.fx-weaponImpact .battle-fx-fallback {
  animation: battle-fx-punch 200ms ease-out forwards;
}

.battle-fx-layer.fx-punch .battle-fx-fallback::before,
.battle-fx-layer.fx-punch .battle-fx-fallback::after,
.battle-fx-layer.fx-weaponImpact .battle-fx-fallback::before,
.battle-fx-layer.fx-weaponImpact .battle-fx-fallback::after,
.battle-fx-layer.fx-swordSlash .battle-fx-fallback::before,
.battle-fx-layer.fx-swordSlash .battle-fx-fallback::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 48%;
  pointer-events: none;
}

.battle-fx-layer.fx-punch .battle-fx-fallback::before,
.battle-fx-layer.fx-weaponImpact .battle-fx-fallback::before {
  width: 82px;
  height: 54px;
  border: 2px solid rgba(255, 238, 177, 0.82);
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(255, 244, 200, 0.42), rgba(255, 170, 72, 0.18) 48%, transparent 68%);
  box-shadow: 0 0 18px rgba(255, 205, 101, 0.34);
  transform: translate(-50%, -50%);
}

.battle-fx-layer.fx-punch .battle-fx-fallback::after,
.battle-fx-layer.fx-weaponImpact .battle-fx-fallback::after {
  width: 126px;
  height: 78px;
  border: 1px solid rgba(255, 226, 154, 0.54);
  border-radius: 50%;
  transform: translate(-50%, -50%);
}

.battle-fx-layer.fx-swordSlash .battle-fx-fallback {
  animation: battle-fx-slash 220ms ease-out forwards;
}

.battle-fx-layer.fx-swordSlash .battle-fx-fallback::before {
  width: 178px;
  height: 18px;
  border-radius: 999px;
  background:
    linear-gradient(90deg, transparent, rgba(219, 244, 255, 0.18) 12%, rgba(255, 249, 218, 0.95) 50%, rgba(113, 193, 255, 0.24) 82%, transparent);
  box-shadow:
    0 0 14px rgba(168, 216, 255, 0.52),
    0 0 28px rgba(219, 183, 99, 0.22);
  transform: translate(-50%, -50%) rotate(-28deg);
}

.battle-fx-layer.fx-swordSlash .battle-fx-fallback::after {
  width: 116px;
  height: 2px;
  background: linear-gradient(90deg, transparent, rgba(255, 232, 151, 0.86), transparent);
  transform: translate(-50%, 22px) rotate(-28deg);
}

.battle-fx-layer.fx-weaponSlash .battle-fx-fallback {
  animation: battle-weapon-slash-fx 320ms ease-out forwards;
  filter: drop-shadow(0 0 10px rgba(186, 224, 255, 0.54));
}

.battle-fx-layer.fx-weaponSlash .battle-fx-fallback::before,
.battle-fx-layer.fx-weaponSlash .battle-fx-fallback::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 48%;
  pointer-events: none;
}

.battle-fx-layer.fx-weaponSlash .battle-fx-fallback::before {
  width: 184px;
  height: 13px;
  border-radius: 999px;
  background:
    linear-gradient(90deg, transparent, rgba(225, 248, 255, 0.28) 12%, rgba(255, 255, 244, 0.98) 48%, rgba(111, 196, 255, 0.36) 78%, transparent);
  box-shadow:
    0 0 16px rgba(191, 232, 255, 0.68),
    0 0 32px rgba(91, 164, 255, 0.28);
  transform: translate(-50%, -50%) rotate(-22deg);
}

.battle-fx-layer.fx-weaponSlash .battle-fx-fallback::after {
  width: 126px;
  height: 3px;
  border-radius: 999px;
  background:
    linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.9) 44%, rgba(129, 210, 255, 0.5) 72%, transparent);
  transform: translate(-50%, 19px) rotate(-22deg);
  opacity: 0.82;
}

.battle-player-hit-layer {
  position: absolute;
  inset: 0;
  z-index: 50;
  pointer-events: none;
  overflow: hidden;
  opacity: 0;
}

.battle-hit-flash,
.battle-hit-claws {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.battle-hit-flash {
  background:
    radial-gradient(ellipse at 50% 48%, rgba(255, 76, 45, 0.26), rgba(146, 11, 18, 0.18) 42%, transparent 70%),
    linear-gradient(90deg, transparent, rgba(255, 33, 22, 0.16), transparent);
  mix-blend-mode: screen;
  opacity: 0;
}

.battle-hit-claws {
  left: 50%;
  top: 50%;
  width: min(76%, 610px);
  height: min(60%, 360px);
  transform: translate(-50%, -50%) rotate(-20deg);
  mix-blend-mode: screen;
}

.battle-hit-claws i {
  position: absolute;
  left: 3%;
  right: 3%;
  height: 18px;
  border-radius: 999px;
  background:
    linear-gradient(90deg, transparent 0%, rgba(255, 58, 42, 0.22) 12%, rgba(255, 113, 68, 0.92) 46%, rgba(255, 225, 155, 0.72) 54%, rgba(159, 12, 23, 0.50) 78%, transparent 100%);
  box-shadow:
    0 0 12px rgba(255, 38, 28, 0.62),
    0 0 24px rgba(138, 0, 0, 0.35);
  transform: scaleX(0.18);
  transform-origin: 50% 50%;
  opacity: 0;
}

.battle-hit-claws i:nth-child(1) {
  top: 26%;
  transform: translateY(-24px) scaleX(0.18);
}

.battle-hit-claws i:nth-child(2) {
  top: 50%;
}

.battle-hit-claws i:nth-child(3) {
  top: 74%;
  transform: translateY(24px) scaleX(0.18);
}

.battle-player-hit-layer.is-playing {
  opacity: 1;
}

.battle-player-hit-layer.is-playing .battle-hit-flash {
  animation: battle-player-red-flash 180ms ease-out 80ms both;
}

.battle-player-hit-layer.is-playing .battle-hit-claws i {
  animation: battle-player-claw-slash 320ms cubic-bezier(0.16, 0.9, 0.2, 1) both;
}

.battle-turn-banner {
  display: none;
  position: absolute;
  z-index: 70;
  left: 50%;
  top: 212px;
  min-width: 166px;
  padding: 6px 16px 7px;
  border: 1px solid rgba(207, 166, 92, 0.28);
  background:
    linear-gradient(90deg, transparent, rgba(5, 8, 12, 0.74) 18%, rgba(7, 9, 12, 0.78) 82%, transparent);
  color: rgba(239, 222, 182, 0.9);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 14px;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-align: center;
  text-shadow: 0 2px 0 rgba(0, 0, 0, 0.92);
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transform: translateX(-50%) translateY(3px) scaleX(0.98);
  transition:
    opacity 120ms ease-out,
    transform 120ms ease-out,
    border-color 120ms ease-out,
    box-shadow 120ms ease-out;
}

.battle-turn-banner.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0) scaleX(1);
}

.battle-turn-banner.is-player {
  border-color: rgba(160, 220, 255, 0.34);
  color: #d9f4ff;
  box-shadow:
    0 0 10px rgba(100, 190, 255, 0.12),
    inset 0 0 10px rgba(180, 230, 255, 0.05);
}

.battle-turn-banner.is-enemy {
  border-color: rgba(206, 55, 44, 0.44);
  color: #ffc8bd;
  box-shadow:
    0 0 12px rgba(216, 38, 28, 0.16),
    inset 0 0 10px rgba(190, 28, 20, 0.06);
}

.battle-card-stage.is-enemy-intent .battle-enemy-focus-layer {
  animation: battle-enemy-intent-flash 190ms ease-out;
}

.battle-card-stage.is-enemy-intent .battle-hud {
  opacity: 1;
  animation: battle-enemy-hud-warning 190ms ease-out;
}

.battle-enemy-focus-image {
  --monster-hit-base-transform: scale(1);
  position: relative;
  z-index: 2;
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center bottom;
  user-select: none;
  pointer-events: none;
  transform: var(--monster-hit-base-transform);
  transform-origin: center bottom;
  filter: drop-shadow(0 10px 10px rgba(0, 0, 0, 0.42));
}

.battle-enemy-focus-image-boss {
  --monster-hit-base-transform: scale(1.08);
  max-width: 100%;
  max-height: 100%;
  transform-origin: center bottom;
  filter: drop-shadow(0 18px 30px rgba(0, 0, 0, 0.45));
}

.battle-card-stage.sprite-boss .battle-enemy-focus-image-boss {
  --monster-hit-base-transform: translateY(-2px) scale(1.16);
  max-width: 116%;
  max-height: 116%;
}

.battle-card-stage.boss-id-floor4_boss .battle-enemy-focus-image-boss {
  --monster-hit-base-transform: translateY(-14px) scale(1.16);
}

.battle-enemy-focus-image-verdant_dragon {
  --monster-hit-base-transform: translate(-46px, 20px) scale(1.34);
  max-width: 124%;
  max-height: 124%;
  transform-origin: center bottom;
  filter:
    drop-shadow(0 20px 32px rgba(0, 0, 0, 0.48))
    drop-shadow(0 0 18px rgba(86, 128, 76, 0.16));
}

.battle-enemy-focus-image-frost_crown_dragon {
  --monster-hit-base-transform: translateY(36px) scale(1.34);
  max-width: 124%;
  max-height: 124%;
  transform-origin: center bottom;
  filter:
    drop-shadow(0 20px 32px rgba(0, 0, 0, 0.48))
    drop-shadow(0 0 18px rgba(118, 190, 255, 0.18));
}

.battle-enemy-focus-image-blaze_armor_dragon {
  --monster-hit-base-transform: translateY(18px) scale(1.28);
  max-width: 124%;
  max-height: 124%;
  transform-origin: center bottom;
  filter:
    drop-shadow(0 20px 32px rgba(0, 0, 0, 0.48))
    drop-shadow(0 0 18px rgba(225, 72, 32, 0.16));
}

.battle-enemy-focus-image-eclipse_dragon {
  --monster-hit-base-transform: translateY(24px) scale(1.4);
  max-width: 106%;
  max-height: 106%;
  transform-origin: center bottom;
}

.battle-enemy-focus-image-planet_observer_16 {
  --monster-hit-base-transform: translateY(30px) scale(1.42);
  max-width: 108%;
  max-height: 108%;
  transform-origin: center bottom;
}

.battle-enemy-focus-image-vine_bat {
  --monster-hit-base-transform: translateY(-85px) scale(1);
}

.battle-enemy-focus-image-ruin_guardian {
  --monster-hit-base-transform: translateY(100px) scale(1.4);
  max-width: 128%;
  max-height: 128%;
  transform-origin: center bottom;
  filter: drop-shadow(0 20px 30px rgba(0, 0, 0, 0.5));
}

.battle-enemy-focus-image-glacier_mammoth {
  --monster-hit-base-transform: translateY(46px) scale(1.55);
  max-width: 130%;
  max-height: 130%;
  transform-origin: center bottom;
  filter: drop-shadow(0 20px 30px rgba(0, 0, 0, 0.5));
}

.battle-enemy-focus-image-siege_tortoise {
  --monster-hit-base-transform: translateY(42px) scale(1.62);
  max-width: 136%;
  max-height: 136%;
  transform-origin: center bottom;
  filter: drop-shadow(0 20px 30px rgba(0, 0, 0, 0.5));
}

.battle-enemy-focus-image-old_aberration {
  --monster-hit-base-transform: translateY(90px) scale(1.42);
  max-width: 128%;
  max-height: 128%;
  transform-origin: center bottom;
  filter:
    drop-shadow(0 20px 30px rgba(0, 0, 0, 0.5))
    drop-shadow(0 0 18px rgba(92, 48, 188, 0.16));
}

.battle-enemy-focus-image-mirror_witch {
  --monster-hit-base-transform: translateY(16px) scale(1.18);
  max-width: 116%;
  max-height: 116%;
  transform-origin: center bottom;
}

.battle-enemy-focus-image-frost_crown_knight {
  --monster-hit-base-transform: translateY(24px) scale(1.3);
  max-width: 116%;
  max-height: 116%;
  transform-origin: center bottom;
}

.battle-enemy-focus-image-outer_wing {
  --monster-hit-base-transform: translateY(18px) scale(1.18);
  max-width: 118%;
  max-height: 118%;
  transform-origin: center bottom;
  filter:
    drop-shadow(0 20px 30px rgba(0, 0, 0, 0.5))
    drop-shadow(0 0 18px rgba(92, 48, 188, 0.16));
}

.battle-card-stage.sprite-goblin .battle-enemy-focus-image-goblin {
  --monster-hit-base-transform: scale(1.28);
}

.battle-enemy-focus-fallback {
  --monster-hit-base-transform: scale(1);
  min-width: 82px;
  min-height: 82px;
  display: grid;
  place-items: center;
  border-radius: 44% 44% 38% 38%;
  color: #e7d9b7;
  background: radial-gradient(circle at 45% 35%, rgba(154, 199, 155, 0.76), rgba(42, 81, 49, 0.88) 64%, rgba(8, 14, 11, 0.98));
  border: 1px solid rgba(209, 176, 99, 0.34);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 28px;
  font-weight: 900;
  text-shadow: 0 2px 0 #000;
}

.battle-enemy-focus-image.is-monster-hit-shake,
.battle-enemy-focus-fallback.is-monster-hit-shake {
  animation: monster-hit-shake 220ms ease-out;
}

@keyframes monster-hit-shake {
  0% {
    transform: translate(0, 0) var(--monster-hit-base-transform);
  }

  18% {
    transform: translate(-5px, 1px) var(--monster-hit-base-transform);
  }

  38% {
    transform: translate(5px, -1px) var(--monster-hit-base-transform);
  }

  58% {
    transform: translate(-3px, 1px) var(--monster-hit-base-transform);
  }

  78% {
    transform: translate(2px, 0) var(--monster-hit-base-transform);
  }

  100% {
    transform: translate(0, 0) var(--monster-hit-base-transform);
  }
}

.battle-hud {
  position: absolute;
  z-index: 8;
  left: 50%;
  top: 68px;
  width: min(420px, 62%);
  transform: translateX(-50%);
  display: grid;
  gap: 6px;
  justify-items: center;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  opacity: 1;
  animation: none;
}

.battle-card-stage.is-summoning .battle-hud {
  opacity: 0;
  animation: battle-hud-in 160ms ease both 520ms;
}

.battle-card-stage.is-boss .battle-hud {
  background: transparent;
}

.battle-card-stage.is-final-boss .battle-hud {
  z-index: 30;
  width: min(360px, 54%);
  gap: 4px;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
}

.battle-card-stage.sprite-frost_crown_dragon .battle-hud {
  top: 322px;
  width: max-content;
  max-width: min(360px, 54%);
  padding: 5px 18px 6px;
  border-radius: 6px;
  background: rgba(1, 7, 13, 0.38);
  box-shadow:
    0 6px 18px rgba(0, 0, 0, 0.18),
    inset 0 0 18px rgba(22, 64, 91, 0.08);
  backdrop-filter: blur(1px);
}

.battle-card-stage.sprite-blaze_armor_dragon .battle-hud {
  top: 320px;
  width: max-content;
  max-width: min(360px, 54%);
  padding: 5px 18px 6px;
  border-radius: 6px;
  background: rgba(14, 3, 2, 0.38);
  box-shadow:
    0 6px 18px rgba(0, 0, 0, 0.18),
    inset 0 0 18px rgba(129, 38, 16, 0.08);
  backdrop-filter: blur(1px);
}

.battle-card-stage.sprite-eclipse_dragon .battle-hud,
.battle-card-stage.sprite-planet_observer_16 .battle-hud {
  top: 322px;
}

.battle-card-stage.sprite-ruin_guardian .battle-hud {
  top: 420px;
}

.battle-card-stage.sprite-glacier_mammoth .battle-hud {
  top: 420px;
}

.battle-card-stage.sprite-siege_tortoise .battle-hud {
  top: 430px;
}

.battle-card-stage.sprite-old_aberration .battle-hud {
  top: 425px;
}

.battle-card-stage.sprite-mirror_witch .battle-hud {
  top: 330px;
}

.battle-card-stage.sprite-frost_crown_knight .battle-hud {
  top: 340px;
}

.battle-card-stage.sprite-outer_wing .battle-hud {
  top: 350px;
}

.battle-card-stage.is-final-boss .battle-hud-kicker {
  font-size: 11px;
  color: rgba(209, 164, 89, 0.92);
}

.battle-card-stage.is-final-boss .battle-enemy-name {
  font-size: 22px;
}

.battle-card-stage.is-final-boss .battle-hud-row {
  gap: 18px;
  font-size: 11px;
  color: rgba(236, 219, 184, 0.76);
}

.battle-hud-kicker,
.battle-enemy-name {
  font-family: Georgia, "Times New Roman", serif;
  text-align: center;
  text-shadow: 0 2px 0 #000;
}

.battle-turn-header {
  display: flex;
  align-items: center;
  justify-content: center;
  width: auto;
  min-width: 0;
  margin-bottom: 1px;
  margin-left: auto;
  margin-right: auto;
  color: #d8b35a;
  letter-spacing: 0.08em;
  text-shadow:
    0 0 6px rgba(0, 0, 0, 0.86),
    0 1px 2px rgba(0, 0, 0, 0.9);
  pointer-events: none;
}

.battle-turn-label-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  min-width: 0;
}

.battle-turn-marker {
  display: block;
  position: absolute;
  top: 50%;
  z-index: 1;
  width: 64px;
  height: 64px;
  margin: 0;
  object-fit: contain;
  opacity: 1;
  pointer-events: none;
  user-select: none;
  filter:
    brightness(1.22)
    drop-shadow(0 1px 1px rgba(0, 0, 0, 0.85))
    drop-shadow(0 0 5px rgba(214, 165, 58, 0.35));
  will-change: transform, opacity;
}

.battle-turn-marker-left {
  right: calc(100% - 8px);
  animation: battleTurnMarkerLeft 1.3s ease-in-out infinite;
}

.battle-turn-marker-right {
  left: calc(100% - 8px);
  animation: battleTurnMarkerRight 1.3s ease-in-out infinite;
}

@keyframes battleTurnMarkerLeft {
  0%, 100% {
    opacity: 1;
    transform: translateY(-50%) rotate(-90deg) translateY(0);
  }

  55% {
    opacity: 0.3;
    transform: translateY(-50%) rotate(-90deg) translateY(-10px);
  }
}

@keyframes battleTurnMarkerRight {
  0%, 100% {
    opacity: 1;
    transform: translateY(-50%) rotate(90deg) translateY(0);
  }

  55% {
    opacity: 0.3;
    transform: translateY(-50%) rotate(90deg) translateY(-10px);
  }
}

.battle-hud-kicker {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 2;
  width: auto;
  min-width: 0;
  margin-left: 0;
  margin-right: 0;
  padding: 0;
  padding-left: 0;
  padding-right: 0;
  color: #d8ecff;
  font-size: 12px;
  font-weight: 900;
  line-height: 1.08;
  letter-spacing: 0.08em;
  pointer-events: none;
}

.battle-hud.is-player-turn .battle-hud-kicker {
  color: #d9f3ff;
  text-shadow:
    0 0 6px rgba(110, 200, 255, 0.48),
    0 1px 2px rgba(0, 0, 0, 0.9);
}

.battle-hud.is-enemy-turn .battle-hud-kicker {
  color: #ffd1c8;
  text-shadow:
    0 0 7px rgba(255, 70, 45, 0.42),
    0 1px 2px rgba(0, 0, 0, 0.9);
}

.battle-card-stage.is-final-boss .battle-hud-kicker {
  min-width: 118px;
  font-size: 11px;
}

.battle-enemy-name {
  color: #f0dfbd;
  font-size: 24px;
  font-weight: 900;
  line-height: 1;
}

.battle-enemy-hp {
  width: min(300px, 84%);
  height: 9px;
  overflow: hidden;
  border: 1px solid rgba(214, 176, 99, 0.28);
  background: rgba(26, 4, 6, 0.72);
}

.battle-enemy-hp-fill {
  display: block;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, #861b1e, #d84a38 66%, #f3a05d);
  box-shadow: 0 0 8px rgba(218, 62, 45, 0.28);
  transition: width 130ms ease;
}

.battle-hud-row {
  display: flex;
  gap: 15px;
  justify-content: center;
  color: rgba(236, 219, 184, 0.82);
  font-size: 12px;
  font-weight: 800;
}

.battle-card-stage.is-defeated .battle-enemy-focus-layer {
  opacity: 0.32;
  filter: saturate(0.4) brightness(0.7);
  transform: translateX(-50%) translateY(8px) scale(0.96);
  transition: opacity 260ms ease, filter 260ms ease, transform 260ms ease;
}

.gameover-layer {
  position: absolute;
  inset: 0;
  z-index: 80;
  display: grid;
  grid-template-rows: auto auto;
  place-items: center;
  align-content: center;
  gap: 18px;
  padding: 24px;
  background:
    radial-gradient(ellipse at 50% 42%, rgba(78, 10, 15, 0.28), rgba(0, 0, 0, 0.08) 38%, rgba(0, 0, 0, 0)),
    rgba(0, 0, 0, 0.56);
  pointer-events: auto;
}

.gameover-layer[hidden] {
  display: none;
}

.clear-layer {
  position: absolute;
  inset: 0;
  z-index: 80;
  display: grid;
  place-items: center;
  padding: 24px;
  background:
    radial-gradient(ellipse at 50% 42%, rgba(187, 129, 42, 0.18), rgba(0, 0, 0, 0.07) 38%, rgba(0, 0, 0, 0)),
    rgba(0, 0, 0, 0.52);
  pointer-events: none;
}

.clear-layer[hidden] {
  display: none;
}

.gameover-panel,
.clear-panel {
  width: min(380px, 36vw);
  min-width: 300px;
  padding: 22px 26px 24px;
  display: grid;
  justify-items: center;
  gap: 8px;
  border: 1px solid rgba(142, 31, 31, 0.78);
  background:
    linear-gradient(180deg, rgba(23, 8, 9, 0.94), rgba(5, 6, 8, 0.94)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.025) 0 1px, transparent 1px 8px);
  box-shadow:
    0 24px 48px rgba(0, 0, 0, 0.62),
    0 0 0 1px rgba(231, 124, 84, 0.12),
    inset 0 0 34px rgba(0, 0, 0, 0.5);
  text-align: center;
}

.clear-panel {
  position: relative;
  overflow: hidden;
  width: min(520px, 46vw);
  min-width: 380px;
  padding: 22px 34px 28px;
  border-color: rgba(198, 150, 71, 0.82);
  background:
    linear-gradient(180deg, rgba(26, 18, 8, 0.94), rgba(6, 7, 8, 0.95)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.025) 0 1px, transparent 1px 8px);
  box-shadow:
    0 24px 48px rgba(0, 0, 0, 0.58),
    0 0 0 1px rgba(239, 203, 117, 0.13),
    inset 0 0 34px rgba(0, 0, 0, 0.46);
  animation: clear-panel-enter 360ms ease-out both;
  pointer-events: auto;
}

.clear-panel::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(circle at 50% 37%, rgba(220, 171, 88, 0.1), rgba(95, 67, 33, 0.04) 34%, transparent 62%),
    linear-gradient(180deg, rgba(50, 35, 18, 0.16), rgba(0, 0, 0, 0.12) 58%, rgba(0, 0, 0, 0.18));
  opacity: 0.78;
  pointer-events: none;
}

.clear-panel > * {
  position: relative;
  z-index: 1;
}

.gameover-panel span,
.clear-panel span {
  color: #bd9250;
  font: 900 12px Georgia, "Times New Roman", serif;
  letter-spacing: 0.12em;
}

.gameover-panel strong {
  color: #cf3434;
  font: 900 42px Georgia, "Times New Roman", serif;
  letter-spacing: 0;
  text-shadow: 0 2px 0 #000, 0 0 18px rgba(185, 36, 36, 0.28);
}

.gameover-panel {
  pointer-events: none;
}

.gameover-retry-btn {
  display: grid;
  place-items: center;
  width: min(228px, 20vw);
  min-width: 190px;
  min-height: var(--exploration-side-button-height);
  padding: 7px 22px 8px;
  border: 0;
  background: url("assets/ui/exploration/button/ui_exploration_button_red_gold_base.png") center / 100% 100% no-repeat;
  color: #e8d5af;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 20px;
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1;
  text-align: center;
  text-shadow: 0 2px 0 #000, 0 0 8px rgba(215, 172, 86, 0.18);
  cursor: pointer;
  pointer-events: auto;
  transition: filter 120ms ease;
}

.gameover-retry-btn:hover {
  filter: brightness(1.12);
}

.gameover-retry-btn:active {
  filter: brightness(1.02);
}

.clear-panel strong {
  color: #ead29a;
  font: 900 24px Georgia, "Times New Roman", serif;
  letter-spacing: 0;
  text-shadow: 0 2px 0 #000, 0 0 18px rgba(208, 152, 57, 0.24);
}

.clear-reward-header {
  position: relative;
  width: min(100%, 430px);
  display: grid;
  justify-items: center;
  gap: 5px;
  margin: 0 auto;
}

.clear-reward-header .clear-reward-kicker {
  color: #bd9250;
  font: 900 13px Georgia, "Times New Roman", serif;
  letter-spacing: 0.14em;
}

.clear-reward-header .clear-reward-title {
  color: #ead29a;
  font: 900 31px Georgia, "Times New Roman", serif;
  letter-spacing: 0;
  text-shadow: 0 2px 0 #000, 0 0 18px rgba(208, 152, 57, 0.24);
}

.clear-reward-header::after {
  content: "";
  position: relative;
  width: min(100%, 250px);
  height: 1px;
  margin-top: 8px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(190, 145, 73, 0.3) 28%,
    rgba(235, 203, 126, 0.82) 50%,
    rgba(190, 145, 73, 0.3) 72%,
    transparent 100%
  );
  box-shadow: 0 0 7px rgba(214, 167, 83, 0.12);
}

.clear-reward-header::before {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -4px;
  width: 7px;
  height: 7px;
  z-index: 2;
  transform: translate(-50%, 50%) rotate(45deg);
  border: 1px solid rgba(230, 196, 115, 0.64);
  background: rgba(36, 26, 12, 0.82);
  box-shadow: 0 0 7px rgba(218, 174, 91, 0.16);
}

.gameover-panel p,
.clear-reward-body {
  margin: 0;
  color: rgba(235, 218, 181, 0.84);
  font-size: 14px;
  font-weight: 800;
}

.clear-reward-body {
  display: grid;
  gap: 0;
  justify-items: center;
  width: 100%;
}

.clear-reward-main {
  width: min(100%, 410px);
  display: grid;
  justify-items: center;
  gap: 0;
  margin-top: -4px;
}

.clear-reward-stage {
  position: relative;
  isolation: isolate;
  width: 192px;
  height: 192px;
  margin: -7px auto -12px;
  animation: clear-reward-stage-enter 260ms ease-out both;
}

.clear-reward-halo-anchor,
.clear-reward-glow-anchor,
.clear-reward-icon-anchor {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  transform-origin: 50% 50%;
  pointer-events: none;
}

.clear-reward-glow-anchor {
  z-index: 0;
  width: 164px;
  height: 164px;
}

.clear-reward-glow {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background:
    radial-gradient(
      circle,
      rgba(255, 224, 150, 0.09) 0%,
      rgba(199, 150, 76, 0.04) 42%,
      rgba(0, 0, 0, 0) 70%
    );
}

.clear-reward-glow::before {
  content: "";
  position: absolute;
  inset: 8px;
  border-radius: 50%;
  background:
    radial-gradient(
      circle,
      rgba(244, 218, 136, 0.065) 0%,
      rgba(137, 93, 38, 0.034) 40%,
      rgba(0, 0, 0, 0) 70%
    );
  filter: blur(1.4px);
  transform-origin: 50% 50%;
}

.clear-reward-halo-anchor {
  z-index: 1;
  width: 176px;
  height: 176px;
}

.clear-reward-halo-intro {
  position: relative;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  transform-origin: 50% 50%;
  animation: clear-reward-halo-intro 520ms cubic-bezier(0.2, 0.9, 0.18, 1.12) both;
}

.clear-reward-halo-spin {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background:
    repeating-conic-gradient(
      from 0deg,
      rgba(232, 198, 124, 0.18) 0deg 0.9deg,
      rgba(232, 198, 124, 0.08) 0.9deg 2.8deg,
      rgba(185, 156, 94, 0.025) 2.8deg 5.4deg,
      rgba(0, 0, 0, 0) 5.4deg 30deg
    );
  -webkit-mask-image:
    radial-gradient(circle, transparent 0 47%, rgba(0, 0, 0, 0.28) 50%, #000 54% 56%, rgba(0, 0, 0, 0.2) 61%, transparent 67%);
  mask-image:
    radial-gradient(circle, transparent 0 47%, rgba(0, 0, 0, 0.28) 50%, #000 54% 56%, rgba(0, 0, 0, 0.2) 61%, transparent 67%);
  filter:
    blur(0.85px)
    drop-shadow(0 0 4px rgba(218, 176, 101, 0.11));
  opacity: 0.44;
  transform-origin: 50% 50%;
  transform: rotate(0deg);
  animation: clear-reward-halo-spin 32000ms linear infinite;
}

.clear-reward-icon-anchor {
  z-index: 2;
  width: 112px;
  height: 112px;
}

.clear-reward-icon-frame {
  position: relative;
  width: 100%;
  height: 100%;
  transform-origin: 50% 50%;
}

.clear-reward-frame,
.clear-reward-icon {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  transform-origin: 50% 50%;
  display: block;
  object-fit: contain;
  pointer-events: none;
  user-select: none;
}

.clear-reward-frame {
  width: 100%;
  height: 100%;
  filter:
    drop-shadow(0 0 8px rgba(238, 190, 86, 0.2))
    drop-shadow(0 6px 12px rgba(0, 0, 0, 0.45));
}

.clear-reward-icon {
  width: 76px;
  height: 76px;
  filter:
    brightness(1.08)
    drop-shadow(0 0 7px rgba(244, 211, 121, 0.22))
    drop-shadow(0 4px 8px rgba(0, 0, 0, 0.48));
}

.clear-reward-info {
  width: min(100%, 390px);
  display: grid;
  justify-items: center;
  gap: 6px;
  margin-top: 0;
}

.clear-reward-info .clear-reward-name {
  color: #f0ddb0;
  font: 900 33px Georgia, "Times New Roman", serif;
  letter-spacing: 0;
  line-height: 1;
  text-shadow: 0 2px 0 #000, 0 0 15px rgba(208, 152, 57, 0.2);
}

.clear-reward-info .clear-reward-type {
  color: #d6bd7b;
  font: 900 15px Georgia, "Times New Roman", serif;
  letter-spacing: 0.1em;
  line-height: 1.1;
}

.clear-reward-stat {
  color: rgba(234, 214, 171, 0.82);
  font-size: 14px;
  font-weight: 900;
  line-height: 1.25;
}

.clear-reward-info .clear-reward-status {
  color: #93c779;
  font: 900 15px Georgia, "Times New Roman", serif;
  letter-spacing: 0.06em;
  line-height: 1.1;
  text-shadow: 0 0 8px rgba(128, 204, 91, 0.16);
}

.clear-reward-divider {
  position: relative;
  width: min(100%, 430px);
  height: 1px;
  margin: 28px 0 22px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(185, 137, 66, 0.28) 18%,
    rgba(232, 196, 117, 0.86) 50%,
    rgba(185, 137, 66, 0.28) 82%,
    transparent 100%
  );
  box-shadow: 0 0 8px rgba(216, 167, 84, 0.14);
}

.clear-reward-divider::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 7px;
  height: 7px;
  transform: translate(-50%, -50%) rotate(45deg);
  border: 1px solid rgba(230, 196, 115, 0.7);
  background: rgba(27, 20, 10, 0.95);
}

.clear-reward-summary {
  width: min(100%, 390px);
  display: grid;
  justify-items: center;
  gap: 8px;
}

.clear-reward-set {
  color: #e7d19d;
  font: 900 18px Georgia, "Times New Roman", serif;
  letter-spacing: 0;
  line-height: 1.1;
}

.clear-reward-current,
.clear-reward-next {
  color: rgba(220, 204, 163, 0.76);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.28;
}

.clear-reward-current {
  color: rgba(165, 214, 132, 0.92);
  text-shadow: 0 0 8px rgba(118, 195, 86, 0.12);
}

.clear-reward-continue {
  position: relative;
  width: min(100%, 310px);
  margin-top: 20px;
  color: rgba(177, 223, 244, 0.86);
  font: 900 17px Georgia, "Times New Roman", serif;
  letter-spacing: 0.15em;
  line-height: 1.1;
  text-shadow: 0 0 8px rgba(122, 201, 239, 0.22);
}

.clear-reward-continue::before,
.clear-reward-continue::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 58px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(139, 197, 226, 0.5));
}

.clear-reward-continue::before {
  right: calc(100% + 12px);
}

.clear-reward-continue::after {
  left: calc(100% + 12px);
  transform: scaleX(-1);
}

.clear-new-run-btn {
  position: relative;
  z-index: 1;
  min-width: 220px;
  min-height: 48px;
  margin-top: 4px;
  border: 1px solid rgba(92, 154, 196, 0.72);
  color: #f1e6c8;
  background:
    linear-gradient(180deg, rgba(34, 72, 98, 0.94), rgba(7, 18, 28, 0.96)),
    linear-gradient(90deg, rgba(218, 172, 91, 0.18), transparent 18%, transparent 82%, rgba(218, 172, 91, 0.18));
  box-shadow:
    0 8px 18px rgba(0, 0, 0, 0.36),
    inset 0 0 0 1px rgba(244, 220, 157, 0.10),
    inset 0 0 20px rgba(0, 0, 0, 0.42);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 22px;
  font-weight: 900;
  letter-spacing: 0;
  cursor: pointer;
  pointer-events: auto;
}

.clear-new-run-btn:hover {
  border-color: rgba(219, 181, 103, 0.9);
  color: #fff2d0;
}

.clear-new-run-btn:disabled {
  cursor: default;
}

.game-shell.is-clear .board-wrap,
.game-shell.is-clear .bottom-panel,
.game-shell.is-clear .hand-panel,
.game-shell.is-clear .hand-heading,
.game-shell.is-clear .hand-count,
.game-shell.is-clear .hand-area,
.game-shell.is-clear .battle-card-stage,
.game-shell.is-clear .exploration-card-layer {
  visibility: hidden;
  pointer-events: none;
}

.game-shell.is-clear .clear-layer {
  padding: clamp(18px, 3vw, 42px);
  background:
    radial-gradient(ellipse at 50% 42%, rgba(196, 140, 58, 0.2), rgba(20, 13, 6, 0.16) 34%, rgba(0, 0, 0, 0) 62%),
    radial-gradient(ellipse at 50% 76%, rgba(55, 86, 108, 0.13), rgba(0, 0, 0, 0) 48%),
    rgba(0, 0, 0, 0.68);
}

.game-shell.is-clear .clear-panel {
  width: min(1040px, 82vw);
  min-width: 0;
  min-height: min(650px, 76vh);
  padding: clamp(24px, 3.1vw, 44px);
  grid-template-rows: auto 1fr auto;
  align-items: center;
  gap: clamp(15px, 2vw, 26px);
  border: 1px solid rgba(197, 150, 76, 0.22);
  background:
    linear-gradient(180deg, rgba(15, 13, 12, 0.78), rgba(6, 8, 10, 0.84)),
    radial-gradient(ellipse at 50% 12%, rgba(143, 111, 48, 0.11), rgba(0, 0, 0, 0) 58%);
  box-shadow:
    0 28px 70px rgba(0, 0, 0, 0.58),
    0 0 0 1px rgba(233, 196, 121, 0.08),
    inset 0 0 80px rgba(0, 0, 0, 0.46);
  overflow: visible;
}

.game-shell.is-clear .clear-panel::before {
  inset: 12px;
  border: 1px solid rgba(210, 164, 82, 0.16);
  background:
    linear-gradient(90deg, rgba(184, 132, 55, 0.06), transparent 19%, transparent 81%, rgba(184, 132, 55, 0.06)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 10px);
  opacity: 1;
}

.game-shell.is-clear .clear-reward-header {
  width: min(100%, 620px);
  gap: 7px;
}

.game-shell.is-clear .clear-reward-header[data-layout-id] {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.game-shell.is-clear .clear-reward-header .clear-reward-kicker {
  color: #d1a45d;
  font-size: 15px;
  letter-spacing: 0.18em;
}

.game-shell.is-clear .clear-reward-header .clear-reward-title {
  color: #f2dfb1;
  font-size: clamp(34px, 4.2vw, 54px);
  line-height: 0.96;
  text-shadow:
    0 2px 0 #000,
    0 0 22px rgba(220, 166, 72, 0.22);
}

.game-shell.is-clear .clear-reward-header::after {
  width: min(100%, 390px);
}

.game-shell.is-clear .clear-reward-body {
  align-self: stretch;
  align-content: center;
}

.clear-reward-card-flow {
  width: min(100%, 900px);
  display: grid;
  justify-items: center;
  grid-template-rows: minmax(330px, auto) auto;
  gap: clamp(16px, 2.2vw, 24px);
}

.clear-reward-card-row {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(16px, 2.4vw, 34px);
  overflow: visible;
}

.clear-reward-card-row[data-layout-id] {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.clear-reward-card {
  position: relative;
  isolation: isolate;
  width: min(100%, 220px);
  aspect-ratio: 0.706;
  min-height: 0;
  border: 0;
  border-radius: 0;
  padding: 0;
  overflow: visible;
  background: transparent;
  box-shadow: 0 18px 34px rgba(0, 0, 0, 0.44);
  color: #ead6a6;
  cursor: pointer;
  transform-origin: 50% 50%;
  transition:
    transform 140ms ease,
    border-color 140ms ease,
    filter 140ms ease;
}

.clear-reward-card[data-layout-id] {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
}

.clear-reward-card:hover:not(:disabled) {
  filter: brightness(1.08);
  transform: translateY(-4px);
}

.clear-reward-card[data-layout-id]:hover:not(:disabled) {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1))) translateY(-4px);
}

.clear-reward-card:disabled {
  cursor: default;
}

.clear-reward-card-face,
.clear-reward-card-back,
.clear-reward-card-front {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  pointer-events: none;
}

.clear-reward-card-face {
  padding: 0;
  overflow: visible;
}

.clear-reward-card-back {
  background: url("assets/ui/clear_reward/ui_clear_reward_card_back_chest_keyed.png") center / 100% 100% no-repeat;
}

.clear-reward-card-back[data-layout-id],
.clear-reward-card-front[data-layout-id] {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.clear-reward-card-back::before {
  content: none;
}

.clear-reward-card-back strong {
  color: #f0dcad;
  font: 900 50px Georgia, "Times New Roman", serif;
  line-height: 1;
}

.clear-reward-chest-mark,
.clear-reward-card-kicker,
.clear-reward-card-label {
  color: #c99a52;
  font: 900 12px Georgia, "Times New Roman", serif;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.clear-reward-card-front {
  z-index: 1;
  align-content: end;
  justify-items: center;
  gap: clamp(5px, 0.7vw, 9px);
  padding: 31% 12% 12%;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.clear-reward-card-front--relic {
  background-image: url("assets/ui/clear_reward/ui_clear_reward_card_face_relic_keyed.png");
  align-content: end;
  gap: clamp(5px, 0.55vw, 8px);
  padding: 18% 10% 11%;
}

.clear-reward-card-front--gem {
  background-image: url("assets/ui/clear_reward/ui_clear_reward_card_face_gem_keyed.png");
  padding: 0;
}

.clear-reward-card.is-relic {
  --clear-reward-relic-art-scale: 1;
  --clear-reward-relic-glow-opacity: 0.72;
  --clear-reward-relic-particle-opacity: 0.68;
  --clear-reward-relic-edge-glow-opacity: 0.7;
  --clear-reward-relic-effect-color: rgba(232, 197, 116, 0.78);
  --clear-reward-relic-shadow-color: rgba(73, 49, 116, 0.36);
}

.clear-reward-new-badge {
  position: absolute;
  top: clamp(-28px, -2.1vw, -18px);
  left: 50%;
  z-index: 5;
  display: inline-grid;
  place-items: center;
  min-width: 50px;
  min-height: 22px;
  padding: 2px 10px 3px;
  border: 1px solid rgba(224, 176, 91, 0.66);
  border-radius: 2px;
  background:
    linear-gradient(180deg, rgba(74, 36, 19, 0.92), rgba(18, 10, 8, 0.96)),
    linear-gradient(90deg, rgba(230, 176, 91, 0.12), transparent 30%, transparent 70%, rgba(230, 176, 91, 0.12));
  color: #edcb7d;
  font: 900 12px Georgia, "Times New Roman", serif;
  letter-spacing: 0.12em;
  line-height: 1;
  text-shadow: 0 1px 0 #000, 0 0 7px rgba(219, 169, 74, 0.2);
  box-shadow:
    0 6px 12px rgba(0, 0, 0, 0.32),
    inset 0 0 0 1px rgba(255, 229, 151, 0.08);
  pointer-events: none;
  transform: translateX(-50%);
}

.clear-reward-new-badge[data-layout-id] {
  transform: translateX(-50%) translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.clear-reward-card-name {
  max-width: 92%;
  color: #f2dfb2;
  font: 900 clamp(17px, 1.6vw, 24px) Georgia, "Times New Roman", serif;
  line-height: 0.96;
  text-align: center;
  text-shadow: 0 2px 0 #000, 0 0 14px rgba(217, 166, 74, 0.18);
}

.clear-reward-card-name[data-layout-id],
.clear-reward-card-slot[data-layout-id],
.clear-reward-card-series[data-layout-id],
.clear-reward-card-art[data-layout-id] {
  display: block;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.clear-reward-card-front--relic .clear-reward-card-name {
  font-size: clamp(18px, 1.55vw, 24px);
  line-height: 1.05;
}

.clear-reward-card-type,
.clear-reward-card-status,
.clear-reward-card-copy,
.clear-reward-card-flavor,
.clear-reward-card-meta {
  max-width: 88%;
  color: rgba(228, 210, 170, 0.82);
  font: 800 13px Georgia, "Times New Roman", serif;
  line-height: 1.25;
  text-align: center;
}

.clear-reward-card-meta {
  display: grid;
  gap: 1px;
  justify-items: center;
  color: rgba(232, 210, 166, 0.9);
  font-size: clamp(11px, 0.85vw, 13px);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.clear-reward-card-slot,
.clear-reward-card-series {
  display: block;
}

.clear-reward-card-status {
  color: #a7d887;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.clear-reward-card-art {
  position: relative;
  display: grid;
  place-items: center;
  pointer-events: none;
}

.clear-reward-card-art-relic {
  width: calc(clamp(150px, 10.8vw, 190px) * var(--clear-reward-relic-art-scale, 1));
  aspect-ratio: 1;
  margin-bottom: clamp(-2px, 0.2vw, 3px);
}

.clear-reward-card-art-effect,
.clear-reward-relic-edge-trace,
.clear-reward-relic-particles,
.clear-reward-relic-particles span {
  pointer-events: none;
}

.clear-reward-card-art-effect {
  position: absolute;
  inset: 5%;
  z-index: 0;
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 48%, rgba(255, 240, 184, 0.22), transparent 24%),
    radial-gradient(circle at 50% 56%, var(--clear-reward-relic-effect-color), transparent 49%),
    radial-gradient(circle at 50% 52%, var(--clear-reward-relic-shadow-color), transparent 68%);
  box-shadow:
    0 0 34px rgba(219, 180, 92, 0.2),
    0 0 54px var(--clear-reward-relic-shadow-color);
  opacity: 0;
  transform: scale(0.7);
  mix-blend-mode: screen;
  animation:
    clear-reward-relic-art-awaken 880ms ease-out 120ms both,
    clear-reward-relic-art-breathe 4200ms ease-in-out 1100ms infinite;
}

.clear-reward-card-frame,
.clear-reward-card-icon {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}

.clear-reward-card-icon {
  z-index: 1;
  filter:
    drop-shadow(0 12px 13px rgba(0, 0, 0, 0.48))
    drop-shadow(0 0 5px rgba(214, 172, 88, 0.12));
}

.clear-reward-relic-edge-trace {
  position: absolute;
  inset: 3.8%;
  z-index: 4;
  border: 1px solid rgba(238, 205, 130, 0.45);
  border-radius: 18px;
  opacity: 0;
  box-shadow:
    inset 0 0 0 1px rgba(255, 244, 190, 0.1),
    inset 0 0 22px rgba(207, 168, 76, 0.16),
    0 0 18px rgba(214, 166, 74, 0.22);
  overflow: hidden;
  animation: clear-reward-relic-edge-awaken 780ms ease-out 40ms both;
}

.clear-reward-relic-edge-trace::before,
.clear-reward-relic-edge-trace::after {
  content: "";
  position: absolute;
  inset: -8%;
  background:
    linear-gradient(115deg, transparent 20%, rgba(255, 242, 175, 0.72) 46%, transparent 63%);
  opacity: 0;
  transform: translateX(-120%);
  mix-blend-mode: screen;
  animation: clear-reward-relic-edge-sweep 760ms ease-out 60ms both;
}

.clear-reward-relic-edge-trace::after {
  background:
    linear-gradient(25deg, transparent 20%, rgba(189, 156, 230, 0.28) 48%, transparent 65%);
  animation-delay: 180ms;
}

.clear-reward-relic-particles {
  position: absolute;
  inset: 4% 6% 7%;
  z-index: 5;
  overflow: hidden;
  border-radius: 18px;
  opacity: var(--clear-reward-relic-particle-opacity, 0.52);
  mix-blend-mode: screen;
}

.clear-reward-relic-particles::before,
.clear-reward-relic-particles::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle, rgba(247, 219, 145, 0.5) 0 1.1px, transparent 1.9px) 11% 16% / 54px 74px,
    radial-gradient(circle, rgba(204, 187, 244, 0.26) 0 1.1px, transparent 2px) 34% 28% / 72px 88px,
    radial-gradient(circle, rgba(255, 239, 184, 0.34) 0 0.9px, transparent 1.9px) 63% 6% / 46px 64px;
  opacity: 0.45;
  transform: translateY(12px);
  animation: clear-reward-relic-dust-drift 7200ms linear infinite;
}

.clear-reward-relic-particles::after {
  background:
    radial-gradient(circle, rgba(236, 204, 128, 0.36) 0 1px, transparent 1.9px) 19% 40% / 68px 82px,
    radial-gradient(circle, rgba(151, 129, 204, 0.24) 0 1px, transparent 2.1px) 71% 31% / 58px 78px;
  opacity: 0.34;
  animation-duration: 9400ms;
  animation-delay: -2600ms;
}

.clear-reward-relic-particles span {
  position: absolute;
  bottom: var(--clear-reward-particle-bottom, 10%);
  left: var(--clear-reward-particle-left, 50%);
  width: var(--clear-reward-particle-size, 2px);
  height: var(--clear-reward-particle-size, 2px);
  border-radius: 50%;
  background: rgba(248, 226, 160, 0.78);
  box-shadow:
    0 0 7px rgba(242, 204, 112, 0.34),
    0 0 14px rgba(128, 99, 190, 0.16);
  opacity: 0;
  animation: clear-reward-relic-particle-rise var(--clear-reward-particle-duration, 4400ms) ease-in-out infinite;
}

.clear-reward-relic-particles span:nth-child(1) { --clear-reward-particle-left: 15%; --clear-reward-particle-bottom: 10%; --clear-reward-particle-size: 2px; animation-delay: 520ms; }
.clear-reward-relic-particles span:nth-child(2) { --clear-reward-particle-left: 28%; --clear-reward-particle-bottom: 29%; --clear-reward-particle-size: 1.7px; --clear-reward-particle-duration: 5200ms; animation-delay: 960ms; }
.clear-reward-relic-particles span:nth-child(3) { --clear-reward-particle-left: 47%; --clear-reward-particle-bottom: 13%; --clear-reward-particle-size: 2.2px; animation-delay: 260ms; }
.clear-reward-relic-particles span:nth-child(4) { --clear-reward-particle-left: 63%; --clear-reward-particle-bottom: 41%; --clear-reward-particle-size: 1.8px; --clear-reward-particle-duration: 5600ms; animation-delay: 1240ms; }
.clear-reward-relic-particles span:nth-child(5) { --clear-reward-particle-left: 80%; --clear-reward-particle-bottom: 20%; --clear-reward-particle-size: 1.6px; animation-delay: 720ms; }
.clear-reward-relic-particles span:nth-child(6) { --clear-reward-particle-left: 22%; --clear-reward-particle-bottom: 57%; --clear-reward-particle-size: 1.5px; --clear-reward-particle-duration: 6100ms; animation-delay: 1620ms; }
.clear-reward-relic-particles span:nth-child(7) { --clear-reward-particle-left: 55%; --clear-reward-particle-bottom: 66%; --clear-reward-particle-size: 1.8px; animation-delay: 1980ms; }
.clear-reward-relic-particles span:nth-child(8) { --clear-reward-particle-left: 73%; --clear-reward-particle-bottom: 52%; --clear-reward-particle-size: 1.4px; --clear-reward-particle-duration: 5900ms; animation-delay: 2360ms; }

.clear-reward-count {
  color: #e8cc8e;
  font: 900 25px Georgia, "Times New Roman", serif;
  letter-spacing: 0.08em;
  text-shadow: 0 2px 0 #000;
}

.clear-reward-count[data-layout-id] {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.game-shell.is-clear .clear-new-run-btn {
  min-width: min(300px, 28vw);
  min-height: var(--exploration-side-button-height);
  margin-top: 0;
  border: 0;
  background: url("assets/ui/exploration/button/ui_exploration_button_blue_gold_base.png") center / contain no-repeat;
  box-shadow: none;
}

.game-shell.is-clear .clear-new-run-btn[data-layout-id] {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.game-shell.is-clear .clear-new-run-btn:not(.is-available) {
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}

.clear-new-run-btn[hidden] {
  display: none;
}

@keyframes clear-reward-relic-edge-awaken {
  0% {
    opacity: 0;
    filter: brightness(0.92);
  }
  28% {
    opacity: calc(var(--clear-reward-relic-edge-glow-opacity, 0.7) * 1);
    filter: brightness(1.08);
  }
  100% {
    opacity: 0.18;
    filter: brightness(0.98);
  }
}

@keyframes clear-reward-relic-edge-sweep {
  0% {
    opacity: 0;
    transform: translateX(-120%);
  }
  38% {
    opacity: 0.42;
  }
  100% {
    opacity: 0;
    transform: translateX(120%);
  }
}

@keyframes clear-reward-relic-art-awaken {
  0% {
    opacity: 0;
    transform: scale(0.7);
  }
  55% {
    opacity: var(--clear-reward-relic-glow-opacity, 0.72);
    transform: scale(1.06);
  }
  100% {
    opacity: 0.42;
    transform: scale(1);
  }
}

@keyframes clear-reward-relic-art-breathe {
  0%,
  100% {
    opacity: 0.32;
    transform: scale(0.98);
  }
  50% {
    opacity: 0.48;
    transform: scale(1.04);
  }
}

@keyframes clear-reward-relic-dust-drift {
  0% {
    transform: translateY(18px);
  }
  100% {
    transform: translateY(-62px);
  }
}

@keyframes clear-reward-relic-particle-rise {
  0% {
    opacity: 0;
    transform: translate3d(0, 26px, 0) scale(0.42);
  }
  18% {
    opacity: 0;
  }
  34% {
    opacity: 0.42;
  }
  78% {
    opacity: 0.16;
  }
  100% {
    opacity: 0;
    transform: translate3d(7px, -128px, 0) scale(0.9);
  }
}

@keyframes clear-reward-card-open {
  from {
    opacity: 0;
    transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1))) rotateY(-12deg) scale(0.96);
  }
  to {
    opacity: 1;
    transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1))) rotateY(0deg) scale(1);
  }
}

.clear-reward-card.is-open .clear-reward-card-front {
  animation: clear-reward-card-open 220ms ease-out both;
}

.game-shell.is-clear .clear-layer {
  place-items: center;
  padding: clamp(18px, 2.6vw, 34px);
  background:
    radial-gradient(ellipse at 50% 52%, rgba(15, 12, 8, 0.08), rgba(0, 0, 0, 0) 48%),
    rgba(0, 0, 0, 0.34);
}

.game-shell.is-clear .clear-panel {
  width: min(860px, 72vw);
  min-height: 0;
  padding: 0;
  gap: clamp(14px, 2vw, 22px);
  grid-template-rows: auto minmax(390px, auto) 64px;
  border: 0;
  background: transparent;
  box-shadow: none;
  overflow: visible;
  animation: clear-panel-enter 300ms ease-out both;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.game-shell.is-clear .clear-panel::before {
  content: none;
}

.game-shell.is-clear .clear-reward-header {
  width: min(100%, 560px);
  gap: 4px;
  padding: 0;
  filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.56));
}

.game-shell.is-clear .clear-reward-header .clear-reward-kicker {
  color: rgba(205, 160, 86, 0.94);
  font-size: clamp(13px, 1.1vw, 16px);
  letter-spacing: 0.18em;
}

.game-shell.is-clear .clear-reward-header .clear-reward-title {
  color: #f3dfac;
  font-size: clamp(30px, 3.3vw, 46px);
  line-height: 0.98;
  text-shadow:
    0 2px 0 rgba(0, 0, 0, 0.86),
    0 0 18px rgba(205, 145, 53, 0.18);
}

.game-shell.is-clear .clear-reward-header::before {
  display: none;
}

.game-shell.is-clear .clear-reward-header::after {
  width: min(100%, 300px);
  margin-top: 8px;
  opacity: 0.8;
}

.game-shell.is-clear .clear-reward-body {
  align-self: auto;
  align-content: center;
  width: 100%;
}

.game-shell.is-clear .clear-reward-card-flow {
  width: 100%;
  grid-template-rows: minmax(322px, auto) 34px;
  gap: clamp(13px, 1.8vw, 20px);
}

.game-shell.is-clear .clear-reward-count {
  order: 1;
  color: #dfbd74;
  font-size: clamp(18px, 1.7vw, 25px);
  letter-spacing: 0.12em;
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.62));
}

.game-shell.is-clear .clear-reward-card-row {
  order: 0;
  width: min(100%, 780px);
  gap: clamp(18px, 2.2vw, 30px);
  align-items: center;
  overflow: visible;
}

.game-shell.is-clear .clear-reward-card {
  width: min(100%, 220px);
  max-width: 220px;
  justify-self: center;
  background: transparent;
  box-shadow: none;
  filter: none;
}

.game-shell.is-clear .clear-reward-card:hover:not(:disabled) {
  border-color: rgba(224, 178, 91, 0.76);
  filter: none;
  transform: translateY(-3px);
}

.game-shell.is-clear .clear-reward-card[data-layout-id]:hover:not(:disabled) {
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1))) translateY(-3px);
}

.game-shell.is-clear .clear-reward-card-back,
.game-shell.is-clear .clear-reward-card-front {
  background-color: transparent;
  box-shadow: none;
  filter: none;
}

.game-shell.is-clear .clear-reward-card-back::before {
  content: none;
}

.game-shell.is-clear .clear-reward-card-back strong {
  font-size: clamp(36px, 4vw, 48px);
}

.game-shell.is-clear .clear-new-run-btn {
  width: min(260px, 24vw);
  min-width: 190px;
  align-self: start;
  margin-top: 0;
}

@keyframes clear-panel-enter {
  from {
    opacity: 0;
    transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1))) translateY(10px) scale(0.97);
  }
  to {
    opacity: 1;
    transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1))) translateY(0) scale(1);
  }
}

@keyframes clear-reward-stage-enter {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes clear-reward-halo-intro {
  from {
    opacity: 0;
    transform: scale(0.72);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes clear-reward-halo-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes battle-dim-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes combat-cutin-card-presence {
  0% {
    opacity: 0;
    transform: translateY(-50%) scale(0.92);
  }
  18% {
    opacity: 1;
    transform: translateY(-50%) scale(1);
  }
  74% {
    opacity: 1;
    transform: translateY(-50%) scale(1);
  }
  100% {
    opacity: 0;
    transform: translateY(-50%) scale(0.98);
  }
}

@keyframes combat-cutin-card-flip {
  0% {
    transform: rotateY(0deg) rotateZ(var(--cutin-card-tilt)) scale(0.98);
  }
  34% {
    transform: rotateY(var(--cutin-flip-rotation)) rotateZ(var(--cutin-card-tilt)) scale(1);
  }
  82% {
    transform: rotateY(var(--cutin-flip-rotation)) rotateZ(var(--cutin-card-tilt)) scale(1);
  }
  100% {
    transform: rotateY(var(--cutin-flip-rotation)) rotateZ(var(--cutin-card-tilt)) scale(0.985);
  }
}

@keyframes battle-card-summon {
  from {
    opacity: 0;
    transform: translateX(-50%) rotateX(52deg) scale(0.86);
  }
  to {
    opacity: 1;
    transform: translateX(-50%) rotateX(52deg) scale(1.08);
  }
}

@keyframes battle-popout-rise {
  from {
    opacity: 0;
    transform: translateX(-50%) translateY(34px) scaleY(0.38) scaleX(0.88);
  }
  72% {
    opacity: 1;
    transform: translateX(-50%) translateY(-4px) scaleY(1.04) scaleX(1);
  }
  to {
    opacity: 1;
    transform: translateX(-50%) translateY(0) scaleY(1) scaleX(1);
  }
}

@keyframes battle-fx-punch {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.72);
  }
  18% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(1.18);
  }
}

@keyframes battle-fx-slash {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) translate(-18px, 14px) scale(0.86);
  }
  18% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) translate(18px, -12px) scale(1.08);
  }
}

@keyframes battle-weapon-slash-fx {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) translate(-22px, 15px) scaleX(0.72) scaleY(0.82);
  }
  22% {
    opacity: 1;
    transform: translate(-50%, -50%) translate(-4px, 3px) scaleX(1.03) scaleY(1);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) translate(20px, -14px) scaleX(1.18) scaleY(0.74);
  }
}

@keyframes battle-player-red-flash {
  0% {
    opacity: 0;
  }
  18% {
    opacity: 1;
  }
  58% {
    opacity: 0.42;
  }
  100% {
    opacity: 0;
  }
}

@keyframes battle-player-claw-slash {
  0% {
    opacity: 0;
    transform: translateX(-34px) scaleX(0.18);
    filter: brightness(1.06);
  }
  18% {
    opacity: 1;
  }
  48% {
    opacity: 0.92;
    transform: translateX(0) scaleX(1);
    filter: brightness(1.24);
  }
  100% {
    opacity: 0;
    transform: translateX(34px) scaleX(1.04);
    filter: brightness(0.9);
  }
}

@keyframes player-damage-screen-flash {
  0% {
    opacity: 0;
  }
  18% {
    opacity: 1;
  }
  58% {
    opacity: 0.62;
  }
  100% {
    opacity: 0;
  }
}

@keyframes player-damage-stage-shake {
  0% {
    transform: translate3d(0, 0, 0);
  }
  18% {
    transform: translate3d(-8px, 2px, 0);
  }
  36% {
    transform: translate3d(7px, -2px, 0);
  }
  54% {
    transform: translate3d(-5px, 1px, 0);
  }
  72% {
    transform: translate3d(4px, 0, 0);
  }
  100% {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes battle-turn-banner-in {
  0% {
    opacity: 0;
    transform: translateX(-50%) translateY(8px) scaleX(0.94);
  }
  28% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    transform: translateX(-50%) translateY(0) scaleX(1);
  }
}

@keyframes battle-enemy-intent-flash {
  0%,
  100% {
    filter: none;
  }
  42% {
    filter:
      drop-shadow(0 0 13px rgba(255, 58, 42, 0.68))
      drop-shadow(0 0 28px rgba(145, 10, 8, 0.42))
      saturate(1.18)
      brightness(1.12);
  }
}

@keyframes battle-enemy-hud-warning {
  0%,
  100% {
    border-color: rgba(196, 151, 80, 0.34);
    box-shadow: 0 12px 22px rgba(0, 0, 0, 0.22);
  }
  42% {
    border-color: rgba(216, 48, 38, 0.64);
    box-shadow:
      0 12px 22px rgba(0, 0, 0, 0.22),
      0 0 18px rgba(216, 48, 38, 0.2);
  }
}

@keyframes battle-hud-in {
  from {
    opacity: 0;
    transform: translateX(-50%) translateY(-6px);
  }
  to {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }
}

.panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 190px;
  gap: 12px;
  min-width: 0;
}

.bottom-panel {
  grid-template-columns: minmax(0, 1fr);
}

.panel > div {
  position: relative;
  min-width: 0;
  padding: 12px;
}

.bottom-panel > div {
  background-color: transparent;
  border-color: transparent;
  background-image: none;
  box-shadow: none;
}

.bottom-panel .hand-panel {
  background-color: transparent;
  width: max-content;
  max-width: min(100%, 580px);
  margin: 0 auto;
  padding: 10px 12px 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  pointer-events: auto;
}

.bottom-panel {
  display: flex;
  position: relative;
  z-index: 5;
  justify-content: center;
  align-items: flex-start;
  margin-top: -28px;
  pointer-events: none;
}

.bottom-panel > div::before {
  display: none;
}

.panel h2,
.supply-panel h2 {
  margin: 0 0 8px;
  color: #c9ad72;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 14px;
  letter-spacing: 0;
}

.log-strip {
  position: absolute;
  left: 50%;
  bottom: 5px;
  width: min(68%, 560px);
  transform: translateX(-50%);
  z-index: 3;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  min-height: 26px;
  max-height: 30px;
  padding: 4px 10px;
  border: 1px solid rgba(188, 143, 71, 0.30);
  background:
    linear-gradient(180deg, rgba(8, 14, 19, 0.54), rgba(2, 4, 7, 0.42)),
    rgba(3, 5, 8, 0.34);
  box-shadow:
    0 6px 12px rgba(0, 0, 0, 0.20),
    inset 0 0 0 1px rgba(255, 236, 177, 0.05);
  backdrop-filter: blur(2px);
  pointer-events: none;
}

.center-stage.is-shop-active .log-strip {
  z-index: 7;
}

.log-panel::before {
  display: none;
}

.log-strip h2 {
  margin: 0;
  color: #c9ad72;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 12px;
}

.log-strip-header {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.auto-battle-button {
  pointer-events: auto;
  min-width: 50px;
  height: 20px;
  padding: 0 10px;
  border: 1px solid rgba(188, 143, 71, 0.22);
  border-radius: 3px;
  color: rgba(191, 164, 111, 0.58);
  background: rgba(5, 8, 12, 0.18);
  box-shadow: inset 0 0 0 1px rgba(255, 236, 177, 0.03);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  text-align: center;
  cursor: pointer;
  transition:
    color 160ms ease,
    border-color 160ms ease,
    background-color 160ms ease,
    box-shadow 160ms ease,
    opacity 160ms ease;
}

.auto-battle-button:hover,
.auto-battle-button:focus-visible {
  color: rgba(240, 214, 151, 0.86);
  border-color: rgba(219, 178, 93, 0.42);
  outline: none;
}

.auto-battle-button.is-active {
  color: #ffe8aa;
  border-color: rgba(255, 218, 126, 0.58);
  background: rgba(72, 48, 14, 0.28);
  box-shadow:
    0 0 8px rgba(236, 184, 79, 0.22),
    inset 0 0 0 1px rgba(255, 239, 184, 0.10);
  text-shadow: 0 0 7px rgba(255, 223, 147, 0.72);
}

.hand-heading {
  order: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: -2px 0 0;
  min-width: 116px;
  padding: 2px 10px 0;
  line-height: 1;
  text-align: center;
  text-shadow: 0 1px 0 #000;
}

.hand-count {
  min-width: 0;
  padding: 0;
  border: 0;
  color: #f0dfb6;
  background: transparent;
  font-size: 12px;
  line-height: 1;
  text-align: center;
}

.hand-area {
  position: relative;
  order: 1;
  display: block;
  min-height: 130px;
  padding: 8px 8px 0;
  overflow: visible;
}

.hand-card {
  position: absolute;
  left: 50%;
  bottom: 8px;
  width: 94px;
  height: 116px;
  display: grid;
  grid-template-rows: 48px minmax(0, 1fr);
  place-items: center;
  gap: 3px;
  border: 1px solid rgba(197, 153, 79, 0.66);
  border-radius: 6px;
  box-shadow:
    0 8px 16px rgba(0, 0, 0, 0.56),
    inset 0 0 0 1px rgba(255, 231, 166, 0.10),
    inset 0 -18px 28px rgba(0, 0, 0, 0.46);
  background:
    radial-gradient(ellipse at 50% 30%, rgba(194, 152, 76, 0.12), transparent 48%),
    linear-gradient(180deg, rgba(255, 237, 179, 0.10), transparent 36px),
    linear-gradient(160deg, #1a1c1d, #070807 72%);
  color: #eee0c0;
  text-align: center;
  font-size: 12px;
  font-weight: 700;
  overflow: visible;
  transform: translate(calc(-50% + var(--hand-x, 0px)), var(--hand-y, 0px)) rotate(var(--hand-rot, 0deg));
  transform-origin: center 120%;
  transition: transform 120ms ease, border-color 120ms ease, box-shadow 120ms ease, background 120ms ease;
}

.hand-weak-label {
  position: absolute;
  left: 50%;
  top: -18px;
  z-index: 4;
  transform: translateX(-50%);
  min-width: 42px;
  padding: 2px 7px 1px;
  border: 1px solid rgba(225, 176, 92, 0.72);
  border-radius: 3px;
  background: rgba(35, 8, 9, 0.88);
  color: #f0d48a;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 10px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0;
  text-align: center;
  text-shadow: 0 1px 0 #050303;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.42);
  pointer-events: none;
}

.hand-card::before {
  content: "";
  position: absolute;
  inset: 3px;
  border-radius: 4px;
  background:
    linear-gradient(180deg, rgba(255, 240, 190, 0.05), transparent 42%),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 7px),
    url("assets/ui/exploration/cards/card_front_base.png");
  background-size: 100% 100%;
  background-position: center;
  border: 1px solid rgba(233, 199, 128, 0.10);
  pointer-events: none;
}

.hand-card::after {
  content: "";
  position: absolute;
  inset: 3px;
  border: 1px solid rgba(226, 188, 108, 0);
  border-radius: 4px;
  box-shadow: none;
  opacity: 0;
  pointer-events: none;
  transition: opacity 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.hand-key-badge {
  position: absolute;
  top: 5px;
  left: 5px;
  z-index: 1;
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(212, 170, 91, 0.72);
  border-radius: 3px;
  background:
    linear-gradient(160deg, rgba(47, 60, 66, 0.98), rgba(8, 10, 12, 0.98));
  box-shadow:
    inset 0 0 0 1px rgba(255, 233, 166, 0.16),
    0 2px 6px rgba(0, 0, 0, 0.42);
  pointer-events: none;
}

.hand-key-badge .digit {
  width: 10px;
  height: 14px;
}

.hand-infinity-mark {
  position: absolute;
  top: 7px;
  right: 7px;
  z-index: 1;
  display: grid;
  min-width: 18px;
  height: 18px;
  place-items: center;
  color: #f3ddb0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 15px;
  font-weight: 900;
  line-height: 1;
  pointer-events: none;
  text-shadow: 0 1px 0 #050403, 0 0 6px rgba(214, 169, 82, 0.36);
}

.hand-icon {
  position: relative;
  z-index: 1;
  width: 43px;
  height: 43px;
  margin-top: 14px;
  background-image: url("assets/generated/ui-icons.png");
  background-repeat: no-repeat;
  background-size: 600% 400%;
  background-position: var(--icon-x, 40%) var(--icon-y, 0%);
  filter: saturate(0.96) brightness(1.02) drop-shadow(0 3px 4px rgba(0, 0, 0, 0.82));
  pointer-events: none;
}

.hand-art-image {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  margin: 0;
  object-fit: contain;
  object-position: center center;
  filter: saturate(1.02) brightness(1.04) drop-shadow(0 3px 4px rgba(0, 0, 0, 0.82));
  pointer-events: none;
  user-select: none;
}

.hand-art-icon {
  width: 76%;
  height: 76%;
  transform-origin: center center;
}

.hand-art-frame {
  position: relative;
  z-index: 1;
  width: 50px;
  height: 42px;
  margin-top: 15px;
  display: grid;
  place-items: center;
  overflow: hidden;
  pointer-events: none;
}

.hand-art-frame-barehand {
  width: 50px;
  height: 50px;
  margin-top: 9px;
  overflow: visible;
}

.hand-art-frame-weapon {
  width: 51px;
  height: 52px;
  margin-top: 9px;
  overflow: visible;
}

.hand-art-frame-item {
  width: 50px;
  height: 44px;
  margin-top: 13px;
}

.hand-art-frame-potion {
  height: 52px;
  margin-top: 7px;
  overflow: visible;
}

.hand-art-barehand {
  width: 100%;
  height: 100%;
  transform: translateY(5px) scale(0.8);
  transform-origin: center center;
}

.hand-art-prayer {
  width: 100%;
  height: 100%;
  transform: translateY(1px) scale(0.84);
  transform-origin: center center;
  object-position: center center;
}

.hand-art-fighter-bash {
  width: 100%;
  height: 100%;
  transform: translateY(1px) scale(0.86);
  transform-origin: center center;
  object-position: center center;
}

.hand-art-sorceress-magic-missile {
  width: 100%;
  height: 100%;
  transform: translateY(17px) scale(0.86);
  transform-origin: center center;
  object-position: center 60%;
}

.hand-art-sorceress-fireball {
  width: 100%;
  height: 100%;
  transform: translateY(17px) scale(0.86);
  transform-origin: center center;
  object-position: center 60%;
}

.hand-art-icon-barehand {
  width: 124%;
  height: 124%;
  transform: translateY(4px) scale(1);
}

.hand-art-dagger {
  transform: translateY(3px) scale(0.82);
  transform-origin: center center;
}

.hand-art-wooden-bow {
  transform: translateY(2px) scale(0.88);
  transform-origin: center center;
}

.hand-art-iron-sword {
  transform: translateY(2px) scale(0.9);
  transform-origin: center center;
}

.hand-art-silver-axe {
  transform: translateY(2px) scale(0.9);
  transform-origin: center center;
}

.hand-art-dragon-slayer {
  transform: translateY(2px) scale(0.92);
  transform-origin: center center;
}

.hand-art-muramasa {
  transform: translateY(2px) scale(0.94);
  transform-origin: center center;
}

.hand-art-shield,
.hand-art-trap {
  transform: translateY(1px) scale(0.88);
  transform-origin: center center;
}

.hand-art-potion {
  transform: translateY(11px) scale(0.88);
  transform-origin: center center;
}

.hand-card-text {
  position: relative;
  z-index: 1;
  width: 100%;
  min-width: 0;
  align-self: stretch;
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: 2px;
  padding: 0 7px 8px;
  overflow: hidden;
}

.hand-card-name,
.hand-card-effect {
  display: block;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}

.hand-card-name {
  align-self: end;
  line-height: 1.08;
  color: #f2dfad;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 12px;
  font-weight: 900;
  text-shadow: 0 1px 0 #000;
  overflow-wrap: anywhere;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.hand-card-effect {
  white-space: nowrap;
  line-height: 1;
  color: #d4bd7e;
  font-size: 10px;
  font-weight: 900;
  text-shadow: 0 1px 0 #000;
}

.hand-card.usable {
  cursor: pointer;
  border-color: rgba(219, 177, 96, 0.78);
}

.hand-card:not(.usable) {
  border-color: rgba(154, 126, 75, 0.48);
}

.hand-card:not(.usable) .hand-icon,
.hand-card:not(.usable) .hand-card-text {
  opacity: 0.82;
}

.hand-card:hover,
.hand-card.focused {
  z-index: 3;
  transform: translate(calc(-50% + var(--hand-x, 0px)), calc(var(--hand-y, 0px) - 10px)) rotate(var(--hand-rot, 0deg)) scale(1.04);
  border-color: rgba(232, 196, 119, 0.98);
  box-shadow:
    0 13px 22px rgba(0, 0, 0, 0.62),
    inset 0 0 0 1px rgba(226, 194, 122, 0.20),
    inset 0 -16px 26px rgba(0, 0, 0, 0.36),
    0 0 16px rgba(186, 137, 58, 0.20);
}

.hand-card:hover::after,
.hand-card.focused::after {
  opacity: 1;
  border-color: rgba(228, 191, 111, 0.62);
  box-shadow:
    0 0 0 1px rgba(255, 238, 176, 0.10),
    0 0 12px rgba(200, 153, 75, 0.22);
}

.hand-card.is-playing {
  z-index: 4;
  animation: hand-card-use-pop 260ms ease-out both;
}

.hand-card.is-playing::after {
  opacity: 1;
  border-color: rgba(255, 231, 161, 0.72);
  box-shadow:
    0 0 0 1px rgba(255, 245, 202, 0.12),
    0 0 18px rgba(229, 181, 91, 0.38);
}

.hand-card.is-playing-heal::after {
  border-color: rgba(154, 235, 144, 0.72);
  box-shadow:
    0 0 0 1px rgba(212, 255, 191, 0.12),
    0 0 20px rgba(97, 205, 101, 0.42);
}

.hand-card.is-playing-slash .hand-icon {
  filter: saturate(1.15) brightness(1.32) drop-shadow(0 0 8px rgba(225, 241, 255, 0.38));
}

.hand-card.is-playing-punch .hand-icon {
  filter: saturate(1.08) brightness(1.26) drop-shadow(0 0 8px rgba(242, 214, 132, 0.36));
}

.hand-card.is-playing-heal .hand-icon {
  filter: saturate(1.22) brightness(1.26) drop-shadow(0 0 8px rgba(123, 224, 112, 0.45));
}

@keyframes hand-card-use-pop {
  0% {
    transform: translate(calc(-50% + var(--hand-x, 0px)), var(--hand-y, 0px)) rotate(var(--hand-rot, 0deg)) scale(1);
  }
  32% {
    transform: translate(calc(-50% + var(--hand-x, 0px)), calc(var(--hand-y, 0px) + 2px)) rotate(var(--hand-rot, 0deg)) scale(0.98);
  }
  68% {
    transform: translate(calc(-50% + var(--hand-x, 0px)), calc(var(--hand-y, 0px) - 12px)) rotate(var(--hand-rot, 0deg)) scale(1.06);
  }
  100% {
    transform: translate(calc(-50% + var(--hand-x, 0px)), var(--hand-y, 0px)) rotate(var(--hand-rot, 0deg)) scale(1);
  }
}

.hand-strike {
  background:
    radial-gradient(ellipse at 50% 30%, rgba(150, 100, 54, 0.12), transparent 48%),
    linear-gradient(180deg, rgba(255, 228, 174, 0.08), transparent 36px),
    linear-gradient(160deg, #211711, #070707 72%);
}

.hand-weapon {
  background:
    radial-gradient(ellipse at 50% 30%, rgba(104, 134, 150, 0.12), transparent 48%),
    linear-gradient(180deg, rgba(226, 239, 255, 0.08), transparent 36px),
    linear-gradient(160deg, #171d21, #070809 72%);
}

.hand-heal {
  background:
    radial-gradient(ellipse at 50% 30%, rgba(88, 157, 99, 0.13), transparent 48%),
    linear-gradient(180deg, rgba(198, 255, 199, 0.07), transparent 36px),
    linear-gradient(160deg, #142119, #060907 72%);
}

.log {
  min-height: 0;
  max-height: 18px;
  margin: 0;
  color: #cfc2a4;
  font-size: 13px;
  line-height: 1.15;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.supply-panel {
  display: grid;
  grid-template-rows: auto auto;
  align-content: start;
  gap: 8px;
}

.supply-count {
  display: grid;
  gap: 1px;
  width: 100%;
  justify-self: stretch;
  padding: 5px 4px;
  border: 0;
  background: transparent;
  text-align: center;
}

.supply-count strong {
  color: #f0dfb6;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 25px;
  line-height: 1;
}

.supply-count span,
.supply-cost {
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
}

.supply-cost {
  display: grid;
  gap: 1px;
  margin: 0;
  text-align: center;
  line-height: 1.05;
}

.supply-cost strong {
  color: #f0d184;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 19px;
}

.supply-draw-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  min-height: 44px;
  border: 1px solid rgba(92, 154, 196, 0.66);
  color: #e6f0f7;
  background: linear-gradient(180deg, rgba(32, 63, 83, 0.9), rgba(7, 16, 22, 0.96));
  font-family: Georgia, "Times New Roman", serif;
  font-size: 19px;
  font-weight: 800;
  padding: 8px 18px;
  cursor: pointer;
}

.supply-draw-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  line-height: 1;
  white-space: nowrap;
}

.supply-draw-cost {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 3px;
  min-width: 40px;
  flex: 0 0 auto;
  color: #f0d184;
  font-size: 17px;
  line-height: 1;
  white-space: nowrap;
  text-shadow: 0 0 8px rgba(240, 209, 132, 0.26);
}

.supply-draw-cost strong {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  min-width: 1.1em;
  height: 18px;
  text-align: right;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  transform: translateY(-1px);
}

.supply-draw-coin {
  width: 15px;
  height: 15px;
  aspect-ratio: 1 / 1;
  flex: 0 0 15px;
  display: block;
  background: url("assets/ui/exploration/icon/ui_icon_gold_coin_skull_transparent.png") center / contain no-repeat;
  pointer-events: none;
}

.supply-draw-btn:disabled {
  opacity: 0.42;
  cursor: default;
  filter: grayscale(0.35);
  border-color: rgba(179, 138, 69, 0.3);
  color: #9b8d72;
  background: linear-gradient(180deg, rgba(28, 34, 39, 0.70), rgba(7, 9, 11, 0.84));
}

.supply-draw-btn:not(:disabled):hover {
  filter: brightness(1.14);
}

.right-panel {
  display: grid;
  grid-template-rows: auto auto auto auto auto;
  align-content: start;
  gap: 10px;
}

.top-controls {
  display: flex;
  justify-content: flex-end;
  position: relative;
  z-index: 1;
}

.audio-controls {
  display: flex;
  align-items: center;
  gap: 7px;
}

.help-toggle,
.audio-toggle {
  width: 28px;
  height: 28px;
  padding: 3px;
  border: 1px solid rgba(179, 138, 69, 0.36);
  border-radius: 50%;
  opacity: 0.72;
  background:
    linear-gradient(180deg, rgba(23, 29, 32, 0.88), rgba(5, 7, 9, 0.94));
  box-shadow:
    inset 0 0 0 1px rgba(255, 238, 190, 0.035),
    0 4px 10px rgba(0, 0, 0, 0.28);
  cursor: pointer;
  transition: opacity 140ms ease, border-color 140ms ease, filter 140ms ease, box-shadow 140ms ease, transform 120ms ease;
}

.help-toggle:hover,
.audio-toggle:hover {
  opacity: 1;
  border-color: rgba(216, 185, 105, 0.68);
  filter: brightness(1.12);
  box-shadow:
    inset 0 0 0 1px rgba(255, 238, 190, 0.06),
    0 0 10px rgba(213, 175, 90, 0.18);
}

.help-toggle:active,
.audio-toggle:active {
  transform: translateY(1px);
}

.help-toggle:focus-visible,
.audio-toggle:focus-visible,
#exitBtn:focus-visible,
.hand-card:focus-visible {
  outline: 2px solid #d7b86f;
  outline-offset: 2px;
}

.audio-toggle.is-off {
  opacity: 0.46;
  filter: saturate(0.25) brightness(0.78);
}

.audio-toggle.is-off:hover {
  opacity: 0.78;
}

.audio-toggle-icon {
  display: block;
  width: 100%;
  height: 100%;
  background-image: url("assets/generated/ui-icons.png");
  background-repeat: no-repeat;
  background-size: 600% 400%;
  background-position: 60% 66.666%;
  pointer-events: none;
}

.audio-toggle.is-off .audio-toggle-icon {
  background-position: 80% 66.666%;
}

.help-toggle-icon {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  color: #d7bd7a;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
  font-weight: 900;
  line-height: 1;
  pointer-events: none;
}

.right-location-header,
.objective-panel {
  position: relative;
  z-index: 1;
}

.right-location-header {
  padding: 12px 13px;
  border: 1px solid rgba(179, 138, 69, 0.22);
  background: rgba(4, 6, 8, 0.34);
}

.floor-panel {
  position: relative;
  z-index: 1;
}

.objective-panel {
  position: relative;
  z-index: 1;
  padding: 4px 0 0;
  border: 0;
  background: transparent;
}

.panel-kicker,
.right-objective h2 {
  margin: 0 0 8px;
  color: #bda26d;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 13px;
  letter-spacing: 0;
}

.floor-panel .panel-kicker {
  display: none;
}

.right-header-divider {
  position: relative;
  height: 1px;
  margin: 12px 9px 11px;
  background: linear-gradient(
    90deg,
    rgba(120, 190, 255, 0) 0%,
    rgba(150, 210, 255, 0.34) 18%,
    rgba(245, 225, 150, 0.78) 50%,
    rgba(150, 210, 255, 0.34) 82%,
    rgba(120, 190, 255, 0) 100%
  );
  box-shadow:
    0 0 5px rgba(160, 220, 255, 0.24),
    0 0 10px rgba(245, 210, 120, 0.14);
  pointer-events: none;
}

.right-header-divider::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 6px;
  height: 6px;
  transform: translate(-50%, -50%) rotate(45deg);
  border: 1px solid rgba(245, 225, 150, 0.82);
  background: rgba(35, 60, 70, 0.55);
  box-shadow:
    0 0 7px rgba(170, 225, 255, 0.32),
    0 0 10px rgba(245, 220, 150, 0.2);
}

.right-objective {
  display: grid;
  justify-items: center;
  gap: 3px;
  margin-top: 1px;
}

.right-objective h2 {
  margin: 0;
  color: rgba(218, 188, 116, 0.82);
  font-size: 10px;
  line-height: 1;
  letter-spacing: 0.08em;
  text-align: center;
  text-shadow:
    0 2px 3px rgba(0, 0, 0, 0.86),
    0 0 8px rgba(0, 0, 0, 0.68);
}

.floor-progress-text {
  margin: 0;
  color: #efe1bd;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 22px;
  font-weight: 700;
  line-height: 1.08;
  text-align: center;
  text-shadow:
    0 2px 4px rgba(0, 0, 0, 0.90),
    0 0 10px rgba(0, 0, 0, 0.72);
}

.location-text {
  font-size: 20px;
  line-height: 1.12;
  text-transform: uppercase;
  white-space: pre-line;
}

.right-objective p {
  display: block;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  color: #aee7ff;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 15px;
  font-weight: 900;
  line-height: 1.05;
  letter-spacing: 0.02em;
  text-align: center;
  text-transform: uppercase;
  background: transparent;
  text-shadow:
    0 2px 4px rgba(0, 0, 0, 0.88),
    0 0 7px rgba(80, 190, 255, 0.42),
    0 0 12px rgba(160, 220, 255, 0.20);
}

.status-list {
  display: grid;
  grid-template-columns: 86px minmax(0, 1fr);
  gap: 10px 12px;
  margin: 0;
  padding-top: 13px;
}

.status-list dt {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.status-list dd {
  margin: 0;
  color: #f1e1bf;
  font-size: 13px;
  font-weight: 800;
  text-align: right;
}

.floor-trait-panel {
  --special-accent: #cfff91;
  --special-glow: rgba(120, 255, 100, 0.22);
  margin: 0 0 4px;
  min-height: 92px;
  padding: 10px 10px 11px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(185, 145, 75, 0.34);
  background:
    radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--special-accent) 16%, transparent), transparent 58%),
    linear-gradient(180deg, rgba(14, 18, 20, 0.58), rgba(4, 6, 7, 0.46)),
    rgba(5, 8, 9, 0.42);
  box-shadow:
    inset 0 1px 0 rgba(255, 230, 170, 0.05),
    0 0 10px rgba(0, 0, 0, 0.28);
  text-align: center;
}

.trait-kicker {
  display: block;
  margin-bottom: 5px;
  color: rgba(230, 190, 120, 0.72);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.08em;
}

.special-icon {
  position: relative;
  isolation: isolate;
  z-index: 0;
  --special-icon-image: url("assets/ui/exploration/icon/ui_special_merchant_present.png");
  --special-halo-inner: color-mix(in srgb, var(--special-accent) 48%, transparent);
  --special-halo-outer: color-mix(in srgb, var(--special-accent) 28%, transparent);
  width: 48px;
  height: 48px;
  flex: 0 0 48px;
  display: block;
  margin: 2px auto 7px;
  border: 1px solid rgba(190, 145, 75, 0.18);
  border-radius: 50%;
  overflow: visible;
  background:
    radial-gradient(circle at 50% 50%, rgba(5, 8, 9, 0.82) 0 44%, rgba(5, 8, 9, 0.24) 67%, transparent 78%);
  box-shadow:
    0 0 0 1px rgba(226, 181, 92, 0.08),
    0 0 10px rgba(0, 0, 0, 0.52),
    0 0 28px var(--special-glow);
  pointer-events: none;
}

.special-icon::before,
.special-icon::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
}

.special-icon::before {
  inset: -16px -18px;
  z-index: 0;
  background:
    radial-gradient(ellipse at 50% 52%, rgba(0, 0, 0, 0.76) 0 34%, var(--special-halo-outer) 52%, transparent 78%);
  filter: blur(4px);
  opacity: 0.95;
}

.special-icon::after {
  inset: -3px;
  z-index: 1;
  background: var(--special-icon-image) center / 118% 118% no-repeat;
  opacity: 1;
}

.floor-trait-panel strong {
  display: block;
  color: var(--special-accent);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 15px;
  line-height: 1.08;
  letter-spacing: 0;
  text-shadow: 0 0 8px var(--special-glow);
}

.trait-description {
  display: block;
  max-width: 150px;
  margin-top: 4px;
  color: rgba(232, 213, 175, 0.78);
  font-size: 10px;
  line-height: 1.24;
}

.special-card--trap {
  --special-accent: #ffb08a;
  --special-glow: rgba(255, 70, 40, 0.42);
  --special-halo-inner: rgba(255, 110, 64, 0.42);
  --special-halo-outer: rgba(120, 18, 12, 0.50);
}

.special-card--trap .special-icon {
  --special-icon-image: url("assets/ui/exploration/icon/ui_special_trap_zone.png");
}

.special-card--healing {
  --special-accent: #cfff91;
  --special-glow: rgba(120, 255, 100, 0.38);
  --special-halo-inner: rgba(165, 255, 125, 0.36);
  --special-halo-outer: rgba(80, 130, 55, 0.42);
}

.special-card--healing .special-icon {
  --special-icon-image: url("assets/ui/exploration/icon/ui_special_healing_spring.png");
}

.special-card--merchant {
  --special-accent: #f0d184;
  --special-glow: rgba(224, 152, 62, 0.38);
  --special-halo-inner: rgba(236, 172, 78, 0.42);
  --special-halo-outer: rgba(128, 72, 24, 0.48);
}

.special-card--merchant .special-icon {
  --special-icon-image: url("assets/ui/exploration/icon/ui_special_merchant_present.png");
}

.special-card--merchant-visited {
  --special-accent: rgba(220, 205, 160, 0.82);
  --special-glow: rgba(160, 140, 90, 0.22);
  --special-halo-inner: rgba(180, 160, 112, 0.28);
  --special-halo-outer: rgba(80, 70, 48, 0.34);
}

.special-card--merchant-visited .special-icon {
  --special-icon-image: url("assets/ui/exploration/icon/ui_special_merchant_visited.png");
  opacity: 0.88;
}

.special-card--armory {
  --special-accent: #d8bd7d;
  --special-glow: rgba(220, 174, 86, 0.38);
  --special-halo-inner: rgba(214, 176, 92, 0.38);
  --special-halo-outer: rgba(84, 70, 46, 0.48);
}

.special-card--armory .special-icon {
  --special-icon-image: url("assets/ui/exploration/icon/ui_special_armory.png");
}

.special-card--danger {
  --special-accent: #f3a37f;
  --special-glow: rgba(255, 76, 48, 0.40);
  --special-halo-inner: rgba(255, 90, 56, 0.42);
  --special-halo-outer: rgba(120, 22, 12, 0.50);
}

.special-card--danger .special-icon {
  --special-icon-image: url("assets/ui/exploration/icon/ui_special_strong_enemies.png");
}

#exitBtn {
  position: relative;
  display: grid;
  place-items: center;
  min-height: var(--exploration-side-button-height);
  padding: 7px 22px 8px;
  border: 1px solid rgba(92, 154, 196, 0.74);
  color: #e4f2ff;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1;
  text-align: center;
  text-shadow: 0 2px 0 #000;
  background:
    linear-gradient(180deg, rgba(36, 78, 105, 0.86), rgba(7, 18, 27, 0.94)),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.035) 0 1px, transparent 1px 10px);
  box-shadow:
    0 18px 36px rgba(0, 0, 0, 0.62),
    inset 0 0 0 1px rgba(165, 218, 255, 0.12),
    0 0 18px rgba(57, 124, 170, 0.12);
  cursor: pointer;
  transition: border-color 120ms ease, filter 120ms ease, opacity 120ms ease;
}

#exitBtn:disabled {
  opacity: 0.48;
  cursor: default;
  filter: grayscale(0.38) brightness(0.82);
  border-color: rgba(179, 138, 69, 0.3);
  color: #9b8d72;
  background:
    linear-gradient(180deg, rgba(28, 34, 39, 0.70), rgba(7, 9, 11, 0.84));
  box-shadow:
    0 12px 26px rgba(0, 0, 0, 0.46),
    inset 0 0 0 1px rgba(255, 239, 190, 0.04);
}

#exitBtn:not(:disabled):hover {
  border-color: rgba(167, 221, 255, 0.95);
  filter: brightness(1.14);
}

#exitBtn:not(:disabled):active {
  filter: brightness(1.04);
}

#retireBtn {
  position: relative;
  display: grid;
  place-items: center;
  min-height: var(--exploration-side-button-height);
  padding: 7px 22px 8px;
  border: 1px solid rgba(180, 84, 66, 0.78);
  color: #ffe1c8;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 19px;
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1;
  text-align: center;
  text-shadow: 0 2px 0 #000;
  background:
    linear-gradient(180deg, rgba(99, 32, 28, 0.88), rgba(24, 8, 10, 0.96)),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.035) 0 1px, transparent 1px 10px);
  box-shadow:
    0 18px 36px rgba(0, 0, 0, 0.62),
    inset 0 0 0 1px rgba(255, 214, 160, 0.10),
    0 0 18px rgba(166, 58, 36, 0.12);
  cursor: pointer;
  transition: border-color 120ms ease, filter 120ms ease, opacity 120ms ease;
}

#retireBtn:disabled {
  opacity: 0.48;
  cursor: default;
  filter: grayscale(0.38) brightness(0.82);
  border-color: rgba(179, 138, 69, 0.3);
  color: #9b8d72;
  background:
    linear-gradient(180deg, rgba(28, 34, 39, 0.70), rgba(7, 9, 11, 0.84));
  box-shadow:
    0 12px 26px rgba(0, 0, 0, 0.46),
    inset 0 0 0 1px rgba(255, 239, 190, 0.04);
}

#retireBtn:not(:disabled):hover {
  border-color: rgba(255, 189, 147, 0.94);
  filter: brightness(1.13);
}

#retireBtn:not(:disabled):active {
  filter: brightness(1.03);
}

.game-shell .supply-draw-btn,
.game-shell #exitBtn,
.game-shell #retireBtn {
  box-sizing: border-box;
  width: min(196px, calc(100% - 32px));
  max-width: calc(100% - 32px);
  min-height: 0;
  aspect-ratio: 7 / 2;
  justify-self: center;
  align-self: center;
  margin-left: auto;
  margin-right: auto;
}

.help-modal[hidden] {
  display: none;
}

.retire-confirm-layer[hidden] {
  display: none;
}

.retire-confirm-layer {
  position: absolute;
  inset: 0;
  z-index: 72;
  display: grid;
  place-items: center;
  padding: 24px;
  color: #efe0bf;
  background:
    radial-gradient(circle at 50% 44%, rgba(136, 47, 36, 0.20), transparent 36%),
    rgba(0, 0, 0, 0.68);
  pointer-events: auto;
}

.retire-confirm-panel {
  position: relative;
  width: min(460px, calc(100% - 48px));
  display: grid;
  gap: 14px;
  padding: 28px 30px 26px;
  text-align: center;
  border: 1px solid rgba(201, 151, 78, 0.72);
  background:
    radial-gradient(circle at 50% 0%, rgba(168, 69, 42, 0.16), transparent 42%),
    linear-gradient(180deg, rgba(25, 22, 20, 0.98), rgba(8, 6, 7, 0.98));
  box-shadow:
    0 24px 62px rgba(0, 0, 0, 0.86),
    inset 0 0 0 1px rgba(255, 231, 179, 0.08),
    inset 0 0 42px rgba(112, 34, 26, 0.16);
}

.retire-confirm-panel::before {
  content: "";
  position: absolute;
  inset: 9px;
  border: 1px solid rgba(229, 194, 117, 0.10);
  pointer-events: none;
}

.retire-confirm-kicker {
  color: #d7a24c;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.16em;
}

.retire-confirm-panel strong {
  color: #f5e4c0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 34px;
  line-height: 1;
  text-shadow: 0 2px 0 #000, 0 0 20px rgba(190, 76, 52, 0.24);
}

.retire-confirm-panel p {
  margin: 0;
  color: rgba(235, 218, 183, 0.82);
  font-size: 15px;
  line-height: 1.55;
}

.retire-confirm-actions {
  display: flex;
  justify-content: center;
  gap: 14px;
  margin-top: 4px;
}

.retire-confirm-btn,
.retire-cancel-btn {
  min-width: 128px;
  min-height: 42px;
  display: grid;
  place-items: center;
  padding: 8px 18px 9px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 15px;
  font-weight: 900;
  letter-spacing: 0.08em;
  line-height: 1;
  text-align: center;
  text-shadow: 0 2px 0 #000;
  cursor: pointer;
  transition: border-color 120ms ease, filter 120ms ease;
}

.retire-confirm-btn {
  border: 1px solid rgba(190, 86, 64, 0.82);
  color: #ffe0c4;
  background:
    linear-gradient(180deg, rgba(102, 34, 28, 0.94), rgba(27, 8, 9, 0.96));
}

.retire-cancel-btn {
  border: 1px solid rgba(92, 154, 196, 0.74);
  color: #e4f2ff;
  background:
    linear-gradient(180deg, rgba(36, 78, 105, 0.86), rgba(7, 18, 27, 0.94));
}

.retire-confirm-btn:hover,
.retire-cancel-btn:hover,
.retire-confirm-btn:focus-visible,
.retire-cancel-btn:focus-visible {
  filter: brightness(1.12);
}

.shop-modal[hidden] {
  display: none;
}

.shop-modal {
  position: absolute;
  inset: 8px 12px 58px;
  z-index: auto;
  display: grid;
  place-items: center;
  padding: 14px 18px 18px;
  pointer-events: auto;
  background: transparent;
}

.shop-modal::before {
  display: none;
}

.shop-window {
  position: relative;
  z-index: 10;
  width: min(700px, 94%);
  max-height: min(470px, calc(100% - 8px));
  min-height: min(430px, calc(100% - 8px));
  display: grid;
  grid-template-columns: 176px minmax(0, 1fr);
  column-gap: 18px;
  row-gap: 6px;
  padding: 18px;
  color: #eadfbd;
  border: 1px solid rgba(179, 138, 69, 0.72);
  box-shadow:
    inset 0 0 0 1px rgba(255, 239, 190, 0.08),
    inset 0 0 42px rgba(116, 71, 27, 0.16);
  background:
    radial-gradient(circle at 50% 0%, rgba(196, 145, 71, 0.12), transparent 38%),
    linear-gradient(180deg, rgba(22, 25, 25, 0.98), rgba(5, 7, 8, 0.98)),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 12px);
  overflow: hidden;
}

.shop-window::before {
  content: "";
  position: absolute;
  inset: 9px;
  border: 1px solid rgba(229, 194, 117, 0.1);
  box-shadow:
    inset 0 0 0 1px rgba(20, 22, 22, 0.72),
    inset 0 0 34px rgba(0, 0, 0, 0.42);
  pointer-events: none;
}

.shop-window::after {
  display: none;
}

.shop-portrait {
  min-height: 0;
  align-self: stretch;
  border: 0;
  background-image: url("assets/ui/shop/merchant/ui_shop_merchant_illustration.png");
  background-size: auto 100%;
  background-position: center 50%;
  background-repeat: no-repeat;
  position: relative;
  overflow: hidden;
  box-shadow: none;
}

.shop-portrait::before {
  display: none;
}

.shop-portrait::after {
  display: none;
}

.shop-main {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto auto 1fr;
  gap: 9px;
  padding: 1px 0 0;
}

.shop-header {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 12px;
  padding: 2px 0 7px;
  border-bottom: 1px solid rgba(179, 138, 69, 0.18);
}

.shop-kicker {
  margin: 0 0 4px;
  color: #bda26d;
  font-size: 12px;
  font-weight: 800;
}

.shop-header h2 {
  margin: 0;
  color: #efd9a3;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 25px;
  line-height: 1;
}

.shop-gold {
  min-width: 92px;
  padding: 7px 10px;
  border: 1px solid rgba(179, 138, 69, 0.42);
  background:
    radial-gradient(circle at 50% 18%, rgba(227, 182, 84, 0.14), transparent 48%),
    linear-gradient(180deg, rgba(11, 14, 14, 0.82), rgba(4, 6, 7, 0.9));
  text-align: center;
  box-shadow:
    inset 0 0 0 1px rgba(255, 235, 177, 0.04),
    inset 0 -14px 22px rgba(0, 0, 0, 0.24);
}

.shop-gold span {
  display: block;
  color: #bda26d;
  font-size: 10px;
  font-weight: 900;
}

.shop-gold strong {
  color: #f2d58b;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 23px;
}

.shop-message {
  margin: 0;
  min-height: 18px;
  color: #cdbd9e;
  font-size: 13px;
  padding-left: 2px;
  padding-right: 4px;
}

.shop-items {
  display: grid;
  gap: 8px;
  min-height: 0;
  overflow-y: auto;
  padding: 0 2px 0 0;
}

.shop-item {
  display: grid;
  grid-template-columns: 50px minmax(0, 1fr) 50px 76px;
  gap: 9px;
  align-items: center;
  min-height: 62px;
  padding: 7px 9px;
  border: 1px solid rgba(191, 148, 78, 0.34);
  background:
    radial-gradient(circle at 0% 50%, rgba(180, 124, 58, 0.16), transparent 44%),
    linear-gradient(90deg, rgba(42, 31, 20, 0.38), rgba(8, 10, 12, 0.68) 38%, rgba(9, 11, 12, 0.58)),
    linear-gradient(180deg, rgba(38, 34, 26, 0.18), rgba(0, 0, 0, 0.10));
  box-shadow:
    inset 0 1px 0 rgba(255, 236, 180, 0.055),
    inset 0 -1px 0 rgba(0, 0, 0, 0.18);
}

.shop-item.is-unaffordable:not(.is-sold) {
  filter: saturate(0.78) brightness(0.88);
}

.shop-item.is-sold {
  opacity: 0.68;
}

.shop-item-icon {
  width: 48px;
  height: 48px;
  border: 1px solid rgba(179, 138, 69, 0.30);
  background:
    radial-gradient(circle at 50% 42%, rgba(218, 181, 91, 0.14), transparent 58%),
    linear-gradient(180deg, rgba(32, 39, 44, 0.82), rgba(9, 11, 13, 0.88));
  position: relative;
  box-shadow:
    inset 0 0 0 1px rgba(255, 236, 188, 0.04);
}

.shop-item-icon::after {
  content: "";
  position: absolute;
  inset: 5px;
  border-radius: 0;
  background: var(--shop-item-icon, radial-gradient(circle, #c13b33, #501410)) center / contain no-repeat;
  box-shadow: none;
  filter: drop-shadow(0 0 5px rgba(218, 181, 91, 0.22));
}

.shop-healingPotion {
  --shop-item-icon: url("assets/ui/shop/icon/ui_shop_item_heal_potion.png");
}

.shop-dagger {
  --shop-item-icon: url("assets/ui/shop/icon/ui_shop_item_dagger_short.png");
}

.shop-silverAxe {
  --shop-item-icon: url("assets/ui/shop/icon/ui_shop_item_axe_silver.png");
}

.shop-muramasa {
  --shop-item-icon: url("assets/ui/shop/icon/ui_shop_item_weapon_muramasa.png");
}

.shop-ironSword {
  --shop-item-icon: url("assets/ui/shop/icon/ui_shop_item_sword_iron.png");
}

.shop-staff {
  --shop-item-icon: url("assets/ui/exploration/item/card_staff.png");
}

.shop-woodenBow {
  --shop-item-icon: url("assets/ui/shop/icon/ui_shop_item_bow_wood.png");
}

.shop-muramasa::after {
  inset: 2px;
  filter: drop-shadow(0 0 6px rgba(220, 36, 32, 0.48));
}

.shop-item-copy {
  display: grid;
  gap: 3px;
}

.shop-item-copy strong {
  color: #efdcac;
  font-size: 15px;
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.72);
}

.shop-item-copy span {
  color: #b5a88f;
  font-size: 12px;
}

.shop-price {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: #f0d184;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
}

.coin {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #fff0a3, #d39b31 48%, #6d4112 78%);
  box-shadow: 0 0 8px rgba(218, 166, 54, 0.32);
}

.shop-item button,
.leave-shop-btn {
  min-height: 34px;
  border: 1px solid rgba(92, 154, 196, 0.66);
  color: #e6f0f7;
  background:
    linear-gradient(180deg, rgba(32, 63, 83, 0.9), rgba(7, 16, 22, 0.96));
  font-family: Georgia, "Times New Roman", serif;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
  white-space: nowrap;
  box-shadow:
    inset 0 0 0 1px rgba(224, 244, 255, 0.05),
    0 0 14px rgba(41, 111, 158, 0.08);
}

.shop-item button:disabled {
  cursor: default;
  color: #9d927c;
  border-color: rgba(179, 138, 69, 0.3);
  background: linear-gradient(180deg, rgba(30, 30, 28, 0.74), rgba(9, 9, 8, 0.92));
}

.shop-item button:not(:disabled):hover,
.leave-shop-btn:hover {
  filter: brightness(1.14);
}

.leave-shop-btn {
  grid-column: 1 / -1;
  width: min(260px, 100%);
  justify-self: center;
  min-height: 36px;
  margin-top: -6px;
  font-size: 17px;
  position: relative;
  background:
    linear-gradient(180deg, rgba(38, 72, 94, 0.92), rgba(8, 18, 25, 0.98));
}

.gear-modal[hidden] {
  display: none;
}

.gear-modal {
  position: absolute;
  inset: 0;
  z-index: 64;
  display: grid;
  place-items: stretch;
  padding: 0;
  background: transparent;
  pointer-events: none;
}

.gear-window {
  width: 100%;
  height: 100%;
  min-height: 0;
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  gap: 8px;
  padding: 12px 16px 10px;
  color: #eadfbd;
  border: 1px solid rgba(179, 138, 69, 0.72);
  background:
    radial-gradient(circle at 50% 0%, rgba(76, 53, 83, 0.22), transparent 46%),
    linear-gradient(180deg, rgba(23, 26, 27, 0.98), rgba(6, 7, 9, 0.98)),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 12px);
  box-shadow:
    0 30px 70px rgba(0, 0, 0, 0.82),
    inset 0 0 0 1px rgba(255, 239, 190, 0.08);
  pointer-events: auto;
  overflow: hidden;
}

.reliquary-side-panel-bg {
  display: none;
  position: absolute;
  left: 100%;
  top: 0;
  bottom: 0;
  width: 320px;
  z-index: 1;
  border: 1px solid rgba(179, 138, 69, 0.28);
  background: rgba(3, 5, 7, 0.44);
  box-shadow:
    inset 0 0 28px rgba(0, 0, 0, 0.58),
    0 14px 34px rgba(0, 0, 0, 0.36);
  opacity: 0.82;
  overflow: hidden;
  pointer-events: none;
  transform: translate(var(--layout-x, 0px), var(--layout-y, 0px)) scale(calc(var(--layout-scale, 1) * var(--layout-scale-x, 1)), calc(var(--layout-scale, 1) * var(--layout-scale-y, 1)));
  transform-origin: center;
}

.game-shell.is-reliquary-gear-open .gear-modal .reliquary-side-panel-bg {
  display: block;
}

.collector-side-panel-bg {
  --collector-side-illustration: url("assets/ui/collector/bg/ui_collector_side_illustration.png");
  display: none;
  position: absolute;
  left: 100%;
  top: 0;
  bottom: 0;
  width: 320px;
  z-index: 1;
  border: 1px solid rgba(179, 138, 69, 0.30);
  background:
    linear-gradient(180deg, rgba(7, 8, 10, 0.08), rgba(0, 0, 0, 0.42)),
    var(--collector-side-illustration) center / cover no-repeat,
    radial-gradient(circle at 52% 18%, rgba(126, 83, 158, 0.20), transparent 42%),
    linear-gradient(180deg, rgba(26, 21, 18, 0.92), rgba(5, 6, 7, 0.96));
  box-shadow:
    inset 0 0 42px rgba(0, 0, 0, 0.66),
    0 14px 34px rgba(0, 0, 0, 0.36);
  opacity: 0.88;
  overflow: hidden;
  pointer-events: none;
}

.collector-side-panel-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(0, 0, 0, 0.56), transparent 26%, transparent 74%, rgba(0, 0, 0, 0.58)),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.024) 0 1px, transparent 1px 8px);
}

.game-shell.is-collector-open .collector-modal .collector-side-panel-bg {
  display: block;
}

.reliquary-side-panel-bg img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  filter: brightness(0.74) saturate(0.88);
  pointer-events: none;
}

.gear-header,
.gear-layout,
.gear-actions {
  position: relative;
  z-index: 2;
}

.gear-header {
  display: flex;
  justify-content: flex-start;
  gap: 16px;
  align-items: start;
  border-bottom: 1px solid rgba(179, 138, 69, 0.22);
  padding-bottom: 6px;
}

.gear-header p,
.gear-header h2 {
  margin: 0;
}

.gear-header p {
  color: #bda26d;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.08em;
}

.gear-header h2 {
  color: #efd9a3;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 26px;
  line-height: 1;
}

.collector-window {
  background:
    radial-gradient(circle at 50% -4%, rgba(120, 84, 52, 0.20), transparent 40%),
    linear-gradient(180deg, rgba(24, 25, 23, 0.98), rgba(6, 7, 8, 0.98)),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.015) 0 1px, transparent 1px 12px);
}

.collector-header {
  display: grid;
  grid-template-columns: minmax(100px, 1fr) auto minmax(100px, 1fr);
  align-items: end;
  column-gap: 16px;
  text-align: center;
}

.collector-title-copy {
  grid-column: 2;
}

.collector-subtitle {
  display: block;
  margin-top: 6px;
  color: rgba(226, 211, 174, 0.72);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0;
}

.collector-layout {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 0.98fr) minmax(0, 1.2fr);
  grid-template-rows: minmax(0, 1fr);
  grid-template-areas: "details list";
  gap: 10px;
  position: relative;
  z-index: 2;
}

.collector-detail-block,
.collector-list-block {
  min-width: 0;
  border: 1px solid rgba(179, 138, 69, 0.30);
  background: rgba(4, 6, 8, 0.50);
  padding: 8px;
}

.collector-detail-block {
  grid-area: details;
  min-height: 0;
}

.collector-list-block {
  grid-area: list;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}

.collector-detail-block h3,
.collector-list-block h3 {
  margin: 0 0 8px;
  color: #d8bd7d;
  font-size: 13px;
  letter-spacing: 0.04em;
}

.collector-stone-count {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: rgba(239, 217, 163, 0.88);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.04em;
}

.collector-stone-count--header {
  grid-column: 3;
  justify-self: end;
  align-self: end;
  margin-bottom: 2px;
  padding: 4px 8px 4px 6px;
  border: 1px solid rgba(179, 138, 69, 0.24);
  background: rgba(6, 7, 9, 0.50);
}

.collector-stone-icon {
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  background: url("assets/ui/collector/item/ui_collector_mystery_stone_transparent.png") center / contain no-repeat;
  filter: drop-shadow(0 0 6px rgba(160, 92, 235, 0.62));
}

.collector-stone-count strong {
  min-width: 1.4em;
  color: #ead0ff;
  font-size: 13px;
  text-align: right;
}

.collector-weapon-emblem {
  width: 64px;
  height: 64px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(179, 138, 69, 0.30);
  background:
    radial-gradient(circle at 50% 44%, rgba(184, 139, 62, 0.18), transparent 56%),
    linear-gradient(180deg, rgba(21, 19, 16, 0.96), rgba(5, 6, 7, 0.98));
  color: rgba(220, 192, 123, 0.88);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 25px;
  font-weight: 900;
}

.collector-weapon-emblem.has-image {
  overflow: hidden;
  padding: 4px;
}

.collector-weapon-emblem img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.58));
}

.collector-weapon-detail h4 {
  margin: 0 0 5px;
  color: #f0dfb6;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 20px;
  line-height: 1.1;
}

.collector-weapon-detail p {
  margin: 0 0 6px;
  color: rgba(226, 218, 194, 0.78);
  font-size: 12px;
  line-height: 1.35;
}

.collector-weapon-detail {
  display: grid;
  gap: 12px;
  align-content: start;
}

.collector-selected-weapon {
  min-width: 0;
  border: 1px solid rgba(179, 138, 69, 0.18);
  background: rgba(7, 8, 9, 0.42);
  padding: 10px;
}

.collector-detail-kicker {
  margin: 0 0 7px;
  color: rgba(216, 189, 125, 0.82);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.05em;
}

.collector-selected-summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  justify-items: start;
  gap: 9px;
  margin-bottom: 8px;
}

.collector-selected-summary .collector-weapon-emblem {
  position: relative;
  width: 120px;
  height: 120px;
  font-size: 32px;
}

.collector-selected-summary .collector-weapon-emblem.has-image {
  padding: 0;
}

.collector-selected-summary .collector-weapon-emblem > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.collector-selected-summary p {
  color: rgba(222, 207, 165, 0.76);
  font-weight: 800;
}

.collector-detail-stat {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  gap: 8px;
  padding-top: 7px;
  border-top: 1px solid rgba(179, 138, 69, 0.18);
  font-size: 12px;
}

.collector-detail-stat span {
  color: rgba(202, 184, 137, 0.70);
  font-weight: 900;
}

.collector-detail-stat strong {
  color: #efd9a3;
}

.collector-weapon-flavor {
  margin: 12px 0 0;
  padding-top: 10px;
  border-top: 1px solid rgba(179, 138, 69, 0.16);
}

.collector-weapon-flavor h5 {
  margin: 0 0 5px;
  color: #d8c48f;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 13px;
  letter-spacing: 0;
}

.collector-weapon-flavor p {
  margin: 0;
  color: rgba(204, 190, 149, 0.68);
  font-size: 13px;
  line-height: 1.55;
  white-space: pre-line;
}

.collector-weapon-list {
  min-height: 0;
  display: grid;
  align-content: start;
  gap: 7px;
  overflow: auto;
  padding-right: 2px;
}

.collector-weapon-item {
  width: 100%;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 7px 8px;
  border: 1px solid rgba(179, 138, 69, 0.20);
  color: #eadfbd;
  background: rgba(7, 8, 9, 0.62);
  text-align: left;
  cursor: pointer;
}

.collector-weapon-item:hover,
.collector-weapon-item.is-selected {
  border-color: rgba(213, 184, 104, 0.62);
  background: linear-gradient(90deg, rgba(60, 41, 21, 0.58), rgba(10, 11, 12, 0.70));
}

.collector-weapon-item.is-selected {
  box-shadow: inset 0 0 0 1px rgba(255, 226, 150, 0.08);
}

.collector-weapon-item .collector-weapon-emblem {
  width: 42px;
  height: 42px;
  font-size: 17px;
}

.collector-weapon-item .collector-weapon-emblem.has-image {
  padding: 3px;
}

.collector-weapon-name {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.collector-weapon-name strong {
  color: #f0dfb6;
  font-size: 14px;
  line-height: 1.15;
}

.collector-weapon-name small {
  color: rgba(222, 207, 165, 0.72);
  font-size: 11px;
  line-height: 1.15;
}

.collector-weapon-meta {
  display: grid;
  justify-items: end;
  gap: 4px;
  color: rgba(211, 184, 230, 0.95);
  font-size: 12px;
  font-weight: 900;
}

.collector-weapon-meta em,
.collector-status-not-owned {
  color: #e36b63;
  font-style: normal;
}

.collector-status-owned {
  color: #c8b77f;
}

.collector-status-equipped {
  color: #a9d68b;
}

.collector-actions button:disabled {
  opacity: 0.42;
  cursor: default;
  filter: grayscale(0.35);
}

.gear-layout {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr);
  grid-template-rows: auto minmax(0, 1fr);
  grid-template-areas:
    "equipped equipped"
    "details collection";
  gap: 10px;
}

.gear-equipped-block,
.gear-collection-block,
.gear-detail-block {
  border: 1px solid rgba(179, 138, 69, 0.28);
  background: rgba(4, 6, 8, 0.48);
  padding: 8px;
  min-width: 0;
}

.gear-equipped-block {
  grid-area: equipped;
}

.gear-collection-block {
  grid-area: collection;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}

.gear-detail-block {
  grid-area: details;
  min-height: 0;
  display: grid;
  grid-template-rows: auto auto auto;
  gap: 6px;
}

.gear-equipped-block h3,
.gear-collection-block h3,
.gear-detail-block h3 {
  margin: 0 0 5px;
  color: #d8bd7d;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 16px;
  letter-spacing: 0.03em;
}

.gear-section-heading {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: baseline;
}

.gear-section-heading strong {
  color: #b9a178;
  font-size: 11px;
}

.equipped-gear-list {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
}

.equipped-gear-card,
.gear-collection-item {
  border: 1px solid rgba(179, 138, 69, 0.28);
  background: linear-gradient(180deg, rgba(21, 24, 27, 0.72), rgba(5, 6, 8, 0.9));
  color: #d9ccb0;
  cursor: pointer;
}

.equipped-gear-card {
  box-sizing: border-box;
  min-height: 170px;
  height: 170px;
  display: grid;
  grid-template-rows: 13px 104px minmax(0, 18px);
  justify-items: center;
  align-content: start;
  gap: 7px;
  padding: 8px 8px 10px;
  font-size: 11px;
  overflow: hidden;
}

.equipped-gear-card.is-selected {
  perspective: 700px;
}

.equipped-gear-card strong {
  color: #eadfbd;
  font-size: 11px;
  line-height: 1.15;
  max-width: 100%;
  min-width: 0;
  align-self: center;
  text-align: center;
}

.gear-slot-name {
  color: #bda26d;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.06em;
}

.relic-square-stage {
  --relic-stage-size: 96px;
  width: var(--relic-stage-size);
  height: var(--relic-stage-size);
  max-width: var(--relic-stage-size);
  max-height: var(--relic-stage-size);
  aspect-ratio: 1 / 1;
  display: block;
  position: relative;
  overflow: visible;
  flex: 0 0 auto;
  box-sizing: border-box;
  filter: drop-shadow(0 6px 8px rgba(0, 0, 0, 0.52));
}

.relic-square-base,
.relic-square-item {
  position: absolute;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}

.relic-square-base {
  inset: 0;
  opacity: 0.96;
}

.relic-square-item {
  inset: 10%;
  width: 80%;
  height: 80%;
  transform-origin: center center;
}

.relic-square-stage.is-empty .relic-square-base,
.relic-square-stage.is-locked .relic-square-base {
  opacity: 0.42;
  filter: grayscale(0.35) brightness(0.72);
}

.relic-square-stage.is-locked::after,
.relic-square-stage.is-empty::after {
  content: "";
  position: absolute;
  inset: 28%;
  border: 1px solid rgba(153, 128, 82, 0.32);
  background: rgba(3, 5, 6, 0.28);
  transform: rotate(45deg);
}

.equipped-gear-list .relic-square-stage {
  --relic-stage-size: 104px;
}

.gear-relic-weapon-stage {
  --relic-stage-size: 54px;
  width: var(--relic-stage-size);
  height: var(--relic-stage-size);
  max-width: var(--relic-stage-size);
  max-height: var(--relic-stage-size);
  aspect-ratio: 1 / 1;
  display: grid;
  place-items: center;
  position: relative;
  overflow: hidden;
  box-sizing: border-box;
  border: 1px solid rgba(179, 138, 69, 0.28);
  background:
    radial-gradient(circle at 50% 42%, rgba(214, 178, 96, 0.14), rgba(0, 0, 0, 0) 58%),
    rgba(2, 4, 6, 0.72);
  box-shadow:
    inset 0 0 14px rgba(0, 0, 0, 0.72),
    0 6px 8px rgba(0, 0, 0, 0.52);
}

.equipped-gear-card--weapon .gear-relic-weapon-stage {
  background: transparent;
  border-color: transparent;
  box-shadow: none;
  filter: drop-shadow(0 6px 8px rgba(0, 0, 0, 0.52));
  overflow: hidden;
}

.equipped-gear-card--weapon .gear-relic-weapon-stage::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background: url("assets/ui/relic/frame/ui_relic_gear_weapon_slot_bg_diamond_dark.png") center / contain no-repeat;
  opacity: 0.92;
  pointer-events: none;
}

.equipped-gear-card--weapon .gear-relic-weapon-stage.is-discovered::before {
  opacity: 0.74;
}

.equipped-gear-list .gear-relic-weapon-stage {
  --relic-stage-size: 104px;
}

.gear-relic-weapon-art {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  display: grid;
  place-items: center;
}

.gear-relic-weapon-art img {
  width: auto;
  height: auto;
  max-width: 80%;
  max-height: 80%;
  object-fit: contain;
  display: block;
  min-width: 0;
  min-height: 0;
}

.gear-relic-weapon-fallback {
  color: #d8bd7d;
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 900;
  font-size: 22px;
}

.gear-collection-item .relic-square-stage {
  --relic-stage-size: 54px;
}

.gear-detail-preview .relic-square-stage {
  --relic-stage-size: 154px;
}

.relic-square-item--body {
  inset: 8%;
  width: 84%;
  height: 84%;
}

.equipped-gear-card.is-selected,
.gear-collection-item.is-selected {
  border-color: rgba(216, 189, 125, 0.88);
  box-shadow:
    0 0 16px rgba(150, 100, 210, 0.18),
    inset 0 0 16px rgba(216, 164, 67, 0.08);
}

.equipped-gear-card.is-selected .relic-square-stage,
.equipped-gear-card.is-selected .gear-relic-weapon-stage,
.gear-collection-item.is-selected .relic-square-stage,
.gear-collection-item.is-selected .gear-relic-weapon-stage,
.gear-detail-preview .relic-square-stage.is-discovered {
  filter:
    drop-shadow(0 7px 8px rgba(0, 0, 0, 0.55))
    drop-shadow(0 0 10px rgba(135, 92, 210, 0.22));
}

.equipped-gear-card.is-selected .relic-square-stage,
.equipped-gear-card.is-selected .gear-relic-weapon-stage {
  animation: equippedRelicTilt 6s ease-in-out infinite;
  transform-origin: center bottom;
}

@keyframes equippedRelicTilt {
  0%,
  100% {
    transform: rotateX(-4deg);
  }

  50% {
    transform: rotateX(4deg);
  }
}

.gear-collection-list {
  display: grid;
  gap: 7px;
  max-height: 100%;
  overflow: auto;
  padding-right: 4px;
}

.gear-collection-item {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  min-height: 64px;
  padding: 7px 9px;
  text-align: left;
}

.gear-collection-item strong {
  display: block;
  color: #eadfbd;
  font-size: 15px;
}

.gear-collection-item small {
  display: block;
  color: #b5a689;
  font-size: 11px;
}

.gear-collection-item em {
  color: #d8bd7d;
  font-style: normal;
  font-weight: 900;
  font-size: 10px;
  text-align: right;
}

.gear-collection-item.is-undiscovered {
  opacity: 0.62;
}

.gear-collection-item.is-equipped em {
  color: #9fca7a;
}

.gear-detail {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 10px;
  align-items: start;
}

.gear-detail h4 {
  margin: 0 0 5px;
  color: #f0dfb6;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 20px;
}

.gear-detail p {
  margin: 0 0 5px;
  color: #c5b595;
  font-size: 12px;
}

.gear-detail strong {
  color: #9fca7a;
  font-size: 12px;
}

.gear-detail-copy--full {
  display: grid;
  gap: 6px;
  min-width: 0;
}

.gear-detail-row {
  display: grid;
  grid-template-columns: 108px minmax(0, 1fr);
  gap: 10px;
  align-items: baseline;
  border-top: 1px solid rgba(179, 138, 69, 0.14);
  padding-top: 5px;
}

.gear-detail-row span {
  color: #a99a80;
  font-size: 11px;
  font-weight: 900;
}

.gear-detail-row strong {
  color: #eadfbd;
  font-size: 12px;
  line-height: 1.35;
}

.gear-detail-row strong.gear-status-equipped,
.gear-collection-item em.gear-status-equipped {
  color: #9fca7a;
}

.gear-detail-row strong.gear-status-owned,
.gear-collection-item em.gear-status-owned {
  color: #d8bd7d;
}

.gear-detail-row strong.gear-status-locked,
.gear-detail-row strong.gear-status-not-owned,
.gear-collection-item em.gear-status-locked,
.gear-collection-item em.gear-status-not-owned {
  color: #ff7770;
}

.gear-detail-flavor {
  margin-top: 4px;
  padding-top: 8px;
  border-top: 1px solid rgba(179, 138, 69, 0.14);
  color: #9f967f;
  white-space: pre-line;
}

.gear-detail-flavor-section {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid rgba(179, 138, 69, 0.14);
}

.gear-detail-flavor-section h5 {
  margin: 0 0 5px;
  color: #d8c48f;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 13px;
  letter-spacing: 0;
}

.gear-detail-flavor-section .gear-detail-flavor {
  margin: 0;
  padding-top: 0;
  border-top: 0;
  font-size: 13px;
  line-height: 1.55;
}

.gear-detail-preview {
  display: grid;
  place-items: center;
}

.gear-detail-preview .relic-square-stage {
  --relic-stage-size: 128px;
}

.gear-set-effects {
  display: grid;
  gap: 6px;
}

.gear-set-title {
  margin: 4px 0 0;
  color: #d8bd7d;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 16px;
  letter-spacing: 0.03em;
}

.gear-set-summary,
.gear-set-bonus,
.gear-set-empty {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 3px 8px;
  align-items: center;
  padding: 6px 8px;
  border: 1px solid rgba(179, 138, 69, 0.18);
  background: rgba(0, 0, 0, 0.22);
}

.gear-set-summary {
  border-color: rgba(179, 138, 69, 0.24);
}

.gear-set-summary strong,
.gear-set-bonus strong,
.gear-set-empty strong {
  color: #d8bd7d;
}

.gear-set-summary span,
.gear-set-bonus span,
.gear-set-empty span {
  color: #c6b796;
  font-size: 11px;
}

.gear-set-empty {
  grid-template-columns: 1fr;
  border-color: rgba(179, 138, 69, 0.12);
  background: rgba(0, 0, 0, 0.16);
}

.gear-set-empty strong {
  color: #9f967f;
}

.gear-set-empty span {
  color: #877d6a;
}

.gear-set-bonus em {
  color: #7f7667;
  font-size: 10px;
  font-style: normal;
  font-weight: 900;
}

.gear-set-bonus.is-active em {
  color: #9fca7a;
}

.gear-set-bonus.is-active {
  border-color: rgba(118, 194, 98, 0.28);
  box-shadow: inset 0 0 12px rgba(104, 180, 90, 0.07);
}

.gear-actions {
  display: flex;
  justify-content: center;
  gap: 12px;
}

.gear-actions button {
  min-width: 150px;
  min-height: 40px;
  border: 1px solid rgba(92, 154, 196, 0.66);
  color: #e6f0f7;
  background: linear-gradient(180deg, rgba(32, 63, 83, 0.9), rgba(7, 16, 22, 0.96));
  font-family: Georgia, "Times New Roman", serif;
  font-size: 16px;
  font-weight: 800;
  cursor: pointer;
}

.gear-actions button:disabled {
  opacity: 0.45;
  cursor: default;
  filter: grayscale(0.35);
}

.area-progress {
  position: relative;
  display: grid;
  gap: 4px;
  margin: 6px 0 8px;
  padding: 6px 0 4px 12px;
}

.area-progress::before {
  content: "";
  position: absolute;
  z-index: 0;
  left: 29px;
  top: 20px;
  bottom: 38px;
  width: 1px;
  background: linear-gradient(
    180deg,
    rgba(220, 170, 80, 0.48) 0%,
    rgba(120, 170, 210, 0.32) 46%,
    rgba(120, 80, 70, 0.24) 72%,
    rgba(180, 30, 25, 0.38) 100%
  );
  box-shadow:
    0 0 7px rgba(200, 158, 82, 0.13),
    0 0 10px rgba(95, 170, 220, 0.08);
  pointer-events: none;
}

.progress-node {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 13px;
  align-items: center;
  min-height: 38px;
  color: #817965;
  font-weight: 800;
}

.progress-node::before {
  content: none;
}

.progress-dot {
  position: relative;
  z-index: 1;
  width: 26px;
  height: 26px;
  justify-self: center;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 50%;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  color: #9b8d72;
  font-size: 12px;
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 900;
  line-height: 1;
}

.progress-dot::after {
  content: "";
  display: none;
  line-height: 1;
}

.progress-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.progress-label {
  display: block;
  color: inherit;
  font-size: 13px;
  line-height: 1;
  letter-spacing: 0;
  opacity: 0.96;
}

.progress-status {
  display: block;
  font-size: 9px;
  line-height: 1;
  color: rgba(220, 205, 170, 0.7);
  letter-spacing: 0;
  opacity: 0.84;
}

.progress-node.is-complete {
  color: #c9b485;
}

.progress-node.is-complete .progress-dot {
  width: 33px;
  height: 33px;
  background-image: url("assets/ui/exploration/icon/ui_progress_node_cleared.png");
  color: #f0dfb6;
  filter: brightness(1.12) contrast(1.05);
  box-shadow:
    0 0 9px rgba(224, 176, 84, 0.34),
    0 0 15px rgba(224, 176, 84, 0.12),
    inset 0 0 6px rgba(255, 220, 150, 0.14);
}

.progress-node.is-complete .progress-dot::after {
  content: "";
  display: none;
}

.progress-node.is-complete .progress-status {
  color: rgba(228, 196, 126, 0.78);
}

.progress-node.is-current {
  color: #e4f2ff;
}

.progress-node.is-current .progress-dot {
  width: 32px;
  height: 32px;
  background-image: url("assets/ui/exploration/icon/ui_progress_node_current.png");
  color: #e4f2ff;
  box-shadow:
    0 0 8px rgba(160, 220, 255, 0.52),
    0 0 17px rgba(70, 160, 255, 0.26),
    inset 0 0 8px rgba(230, 250, 255, 0.18);
}

.progress-node.is-current .progress-dot::after {
  content: "";
  display: none;
}

.progress-node:not(.is-complete):not(.is-current):not(.is-boss) .progress-dot {
  width: 30px;
  height: 30px;
  background-image: url("assets/ui/exploration/icon/ui_progress_node_locked.png");
  filter: brightness(1.25) contrast(1.08);
  box-shadow: 0 0 5px rgba(180, 145, 90, 0.1);
  opacity: 0.82;
}

.progress-node.is-current .progress-status {
  color: rgba(194, 237, 255, 0.86);
}

.progress-node.is-exit {
  color: #aee779;
}

.progress-node.is-exit .progress-dot {
  border-color: rgba(164, 232, 111, 0.95);
  color: #d9ffbd;
  box-shadow: 0 0 16px rgba(110, 199, 73, 0.42);
}

.progress-node.is-boss {
  margin-top: 9px;
  padding-top: 10px;
  color: #d89b8e;
}

.progress-node.is-boss::after {
  content: "";
  position: absolute;
  left: 0;
  right: 8px;
  top: -3px;
  height: 1px;
  background: linear-gradient(
    90deg,
    rgba(116, 18, 18, 0),
    rgba(144, 28, 24, 0.38) 18%,
    rgba(232, 67, 48, 0.88) 50%,
    rgba(144, 28, 24, 0.38) 82%,
    rgba(116, 18, 18, 0)
  );
  box-shadow:
    0 0 7px rgba(255, 55, 38, 0.42),
    0 0 16px rgba(120, 10, 10, 0.28);
  opacity: 0.82;
  pointer-events: none;
  animation: finalBossThreatPulse 2400ms ease-in-out infinite;
}

.progress-node.is-boss .progress-dot {
  width: 32px;
  height: 32px;
  background-image: url("assets/ui/exploration/icon/ui_progress_node_boss.png");
  color: #ffb3a8;
  box-shadow:
    0 0 10px rgba(255, 50, 40, 0.45),
    0 0 20px rgba(130, 0, 0, 0.28);
}

.progress-node.is-boss .progress-dot::after {
  content: "";
  display: none;
}

.progress-node.is-boss .progress-label {
  color: #ffb0a0;
}

.progress-node.is-boss .progress-status {
  color: rgba(232, 178, 164, 0.76);
}

.progress-node.is-boss.is-current .progress-dot {
  box-shadow:
    0 0 18px rgba(171, 51, 45, 0.65),
    0 0 24px rgba(81, 164, 222, 0.34);
}

.progress-node.is-boss.is-complete {
  color: #d8c18a;
}

.progress-node.is-boss.is-complete .progress-dot {
  background-image: url("assets/ui/exploration/icon/ui_progress_node_boss.png");
  color: #f4dfad;
  box-shadow: 0 0 14px rgba(201, 155, 67, 0.36);
}

@keyframes finalBossThreatPulse {
  0%, 100% {
    opacity: 0.62;
    transform: scaleX(0.96);
  }
  50% {
    opacity: 0.92;
    transform: scaleX(1);
  }
}

.area-progress {
  gap: 6px;
  margin: 8px 0 12px;
  padding: 8px 0;
  overflow: hidden;
  isolation: isolate;
}

.exploration-progress-bg {
  display: none;
}

.area-progress::before {
  left: 50%;
  top: 22px;
  bottom: 88px;
  width: 2px;
  transform: translateX(-50%);
  background: linear-gradient(
    180deg,
    rgba(190, 150, 82, 0.46) 0%,
    rgba(116, 159, 184, 0.36) 42%,
    rgba(123, 85, 76, 0.32) 74%,
    rgba(174, 34, 30, 0.54) 100%
  );
  box-shadow:
    0 0 6px rgba(209, 167, 82, 0.16),
    0 0 10px rgba(82, 159, 218, 0.10);
  z-index: 1;
}

.progress-node {
  grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr);
  gap: 10px;
  min-height: 42px;
  z-index: 2;
}

.progress-node .progress-dot {
  grid-column: 2;
  z-index: 2;
}

.progress-node .progress-copy {
  grid-column: 3;
}

.progress-node:not(.is-complete):not(.is-current):not(.is-boss) {
  color: rgba(188, 170, 132, 0.70);
}

.progress-node:not(.is-complete):not(.is-current):not(.is-boss) .progress-dot {
  opacity: 1;
  background-color: rgba(7, 9, 11, 0.62);
  filter: grayscale(0.72) brightness(0.86) contrast(1.18) saturate(0.72);
  box-shadow:
    0 0 0 1px rgba(166, 134, 80, 0.42),
    0 0 0 3px rgba(7, 10, 13, 0.70),
    0 0 8px rgba(130, 110, 78, 0.20),
    inset 0 0 7px rgba(202, 169, 103, 0.12);
}

.progress-node:not(.is-complete):not(.is-current):not(.is-boss) .progress-dot::before {
  content: "";
  position: absolute;
  inset: 5px;
  border-radius: 50%;
  border: 1px solid rgba(173, 148, 98, 0.30);
  background:
    radial-gradient(circle, rgba(188, 166, 118, 0.16), rgba(8, 11, 13, 0.26) 58%, transparent 72%);
  pointer-events: none;
}

.progress-node:not(.is-complete):not(.is-current):not(.is-boss) .progress-status {
  color: rgba(178, 158, 120, 0.60);
}

.progress-node.is-current .progress-dot {
  width: 34px;
  height: 34px;
  filter: brightness(1.25) saturate(1.08);
  box-shadow:
    0 0 8px rgba(210, 242, 255, 0.76),
    0 0 18px rgba(72, 167, 238, 0.45),
    0 0 34px rgba(34, 104, 198, 0.24),
    inset 0 0 8px rgba(237, 251, 255, 0.22);
}

.progress-node.is-current .progress-label {
  color: #e8f7ff;
  text-shadow: 0 0 8px rgba(130, 205, 255, 0.26);
}

.progress-node.is-current .progress-status {
  color: rgba(194, 237, 255, 0.92);
}

.progress-node.is-boss {
  grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr);
  grid-template-rows: auto auto;
  align-items: start;
  min-height: 84px;
  margin-top: 12px;
  padding-top: 16px;
}

.progress-node.is-boss::after {
  left: calc(50% - 94px);
  right: calc(50% - 94px);
  top: 32px;
  z-index: 1;
  height: 1px;
  background: linear-gradient(
    90deg,
    rgba(116, 18, 18, 0),
    rgba(148, 28, 24, 0.46) 18%,
    rgba(235, 62, 46, 0.88) 50%,
    rgba(148, 28, 24, 0.46) 82%,
    rgba(116, 18, 18, 0)
  );
  box-shadow:
    0 0 7px rgba(255, 55, 38, 0.45),
    0 0 16px rgba(120, 10, 10, 0.30);
}

.progress-node.is-boss .progress-dot {
  grid-column: 2;
  grid-row: 1;
  z-index: 3;
  width: 44px;
  height: 44px;
  justify-self: center;
  border: 1px solid rgba(255, 118, 84, 0.64);
  background-color: rgba(30, 4, 5, 0.88);
  filter: brightness(1.22) saturate(1.18) contrast(1.08);
  box-shadow:
    0 0 0 2px rgba(92, 10, 10, 0.88),
    0 0 12px rgba(255, 72, 54, 0.70),
    0 0 28px rgba(166, 8, 8, 0.42),
    0 0 46px rgba(80, 0, 0, 0.26),
    inset 0 0 10px rgba(255, 195, 160, 0.16),
    inset 0 0 18px rgba(32, 0, 0, 0.72);
}

.progress-node.is-boss.is-current .progress-dot {
  box-shadow:
    0 0 0 2px rgba(105, 12, 12, 0.9),
    0 0 16px rgba(255, 88, 64, 0.74),
    0 0 34px rgba(178, 12, 12, 0.48),
    0 0 50px rgba(88, 0, 0, 0.28),
    inset 0 0 10px rgba(255, 205, 178, 0.18),
    inset 0 0 18px rgba(32, 0, 0, 0.72);
}

.progress-node.is-boss .progress-copy {
  grid-column: 1 / -1;
  grid-row: 2;
  width: 124px;
  margin-top: 4px;
  justify-self: center;
  text-align: center;
}

.progress-node.is-boss .progress-label {
  color: #ffb0a0;
  font-size: 13px;
  text-shadow: 0 0 8px rgba(235, 76, 54, 0.22);
}

.progress-node.is-boss .progress-status {
  color: rgba(232, 178, 164, 0.82);
  font-size: 9px;
}

.progress-copy {
  display: grid;
  gap: 2px;
}

.progress-label {
  font-family: Georgia, "Times New Roman", serif;
  letter-spacing: 0;
  text-shadow:
    0 2px 4px rgba(0, 0, 0, 0.90),
    0 0 8px rgba(0, 0, 0, 0.70);
}

.progress-status {
  color: #827763;
  font-size: 10px;
  font-weight: 700;
  text-shadow:
    0 2px 4px rgba(0, 0, 0, 0.90),
    0 0 8px rgba(0, 0, 0, 0.70);
}

.help-modal {
  position: fixed;
  inset: 0;
  z-index: 20;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(0, 0, 0, 0.72);
}

.help-window {
  position: relative;
  width: min(580px, calc(100vw - 32px));
  color: #eadfbd;
  border: 1px solid rgba(179, 138, 69, 0.62);
  box-shadow:
    0 24px 48px rgba(0, 0, 0, 0.74),
    inset 0 0 0 1px rgba(255, 239, 190, 0.08);
  background:
    linear-gradient(180deg, rgba(31, 37, 42, 0.98), rgba(8, 10, 12, 0.98));
  padding: 24px 26px 26px;
}

.help-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 32px;
  height: 32px;
  border: 1px solid rgba(179, 138, 69, 0.58);
  background: linear-gradient(180deg, #58201d, #210b0a);
  color: #f4e3c0;
  font-size: 22px;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}

.help-close:hover {
  filter: brightness(1.12);
}

.help-window h2 {
  margin: 0 44px 18px 0;
  color: #d8bd7d;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 24px;
  line-height: 1;
}

.help-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}

.help-grid h3 {
  margin: 0 0 10px;
  color: #d8c7a7;
  font-size: 15px;
}

.help-grid dl {
  display: grid;
  grid-template-columns: minmax(112px, auto) 1fr;
  gap: 8px 12px;
  margin: 0;
  font-size: 13px;
  line-height: 1.35;
}

.help-grid dt {
  color: #e9d39d;
  font-weight: 900;
  white-space: nowrap;
}

.help-grid dd {
  margin: 0;
  color: #b7aa91;
}

.flash-hit {
  animation: flash-hit 160ms ease;
}

.flash-defeat {
  animation: flash-defeat 300ms ease;
}

.flash-defeat-strong {
  animation: flash-defeat 460ms ease;
}

.flash-damage {
  animation: flash-damage 300ms ease;
}

@keyframes flash-hit {
  0%, 100% { filter: none; }
  35% { filter: brightness(1.5) saturate(1.18); }
}

@keyframes flash-defeat {
  0%, 100% { filter: none; }
  22% { filter: brightness(2) saturate(1.45) sepia(0.22); }
  48% { filter: brightness(1.35) saturate(1.2); }
}

@keyframes flash-damage {
  0%, 100% { filter: none; }
  35% { filter: brightness(1.65) saturate(1.45); }
}

@keyframes gold-pulse {
  0%, 100% { color: #f0d184; text-shadow: 0 0 10px rgba(219, 169, 73, 0.28); }
  45% { color: #fff2bd; text-shadow: 0 0 18px rgba(241, 193, 82, 0.72); }
}

@media (max-width: 1180px) {
  .game-shell:not(.is-fixed-layout-preview) {
    grid-template-columns:
      minmax(168px, var(--exploration-left-column-width))
      minmax(470px, 1fr)
      minmax(168px, var(--exploration-right-column-width));
  }

  .game-shell:not(.is-fixed-layout-preview) .left-panel,
  .game-shell:not(.is-fixed-layout-preview) .right-panel {
    padding: 10px;
  }

  .game-shell:not(.is-fixed-layout-preview) .hero-plate {
    min-height: 152px;
  }

  .game-shell:not(.is-fixed-layout-preview) .hero-portrait {
    min-height: 152px;
  }

  .game-shell:not(.is-fixed-layout-preview) .panel {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 900px) {
  .app {
    place-items: center;
  }

  .game-shell:not(.is-fixed-layout-preview) {
    grid-template-columns:
      minmax(150px, var(--exploration-left-column-width))
      minmax(360px, 1fr)
      minmax(150px, var(--exploration-right-column-width));
  }

  .game-shell:not(.is-fixed-layout-preview) .left-panel,
  .game-shell:not(.is-fixed-layout-preview) .right-panel {
    padding: 8px;
  }

  .game-shell:not(.is-fixed-layout-preview) .hero-plate {
    min-height: 132px;
  }

  .game-shell:not(.is-fixed-layout-preview) .hero-portrait {
    min-height: 132px;
  }

  .game-shell:not(.is-fixed-layout-preview) .right-panel {
    grid-template-columns: none;
  }

  .game-shell:not(.is-fixed-layout-preview) .panel {
    grid-template-columns: 1fr;
  }

  .game-shell:not(.is-fixed-layout-preview) .hand-area {
    min-height: 120px;
  }

  .game-shell:not(.is-fixed-layout-preview) .help-grid {
    grid-template-columns: 1fr;
  }

  .game-shell:not(.is-fixed-layout-preview) .help-grid dl {
    grid-template-columns: minmax(104px, auto) 1fr;
    font-size: 12px;
  }
}
