/* Grand Exchange — RuneScape-inspired offer board */
@import url("https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Cinzel:wght@600;700&display=swap");

.ge-shell {
  max-width: 1180px;
  --ge-bg: #1a2330;
  --ge-panel: #243044;
  --ge-slot: #1c2838;
  --ge-border: #6f879e;
  --ge-gold: #ffe066;
  --ge-yellow: #ffd24a;
  --ge-text: #e8eef6;
  --ge-muted: #9aafc2;
  --ge-buy: #d4a017;
  --ge-sell: #3d9e5f;
  --ge-danger: #c44;
  margin: 0.5rem auto 2rem;
  padding: 0;
  color: var(--ge-text);
  font-family: Verdana, Geneva, Tahoma, sans-serif;
}

.ge-window {
  background: linear-gradient(180deg, #2a3548 0%, var(--ge-bg) 40%, #121820 100%);
  border: 4px solid #7a8fa5;
  border-radius: 6px;
  box-shadow:
    inset 0 0 0 2px #3a4a5c,
    0 10px 28px rgba(0, 0, 0, 0.45);
  overflow: hidden;
}

.ge-titlebar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.55rem 0.75rem;
  background: linear-gradient(180deg, #5a1e1e 0%, #3a1212 100%);
  border-bottom: 3px solid #8a3030;
}

.ge-titlebar h2 {
  margin: 0;
  font-family: "Cinzel", Georgia, serif;
  font-size: 1.15rem;
  letter-spacing: 0.08em;
  color: var(--ge-gold);
  text-shadow: 0 1px 0 #000;
}

.ge-titlebar .ge-cash {
  font-size: 0.85rem;
  color: var(--ge-yellow);
}
.ge-titlebar-right {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.ge-level-chip {
  font-size: 0.8rem;
  font-weight: 800;
  color: var(--ge-gold);
  text-shadow: 0 1px 0 #000;
  white-space: nowrap;
}
.ge-xp-bar {
  width: 7rem;
  height: 0.55rem;
  background: #0d141c;
  border: 1px solid #6a8096;
  border-radius: 3px;
  overflow: hidden;
  box-shadow: inset 0 1px 2px rgba(0,0,0,0.45);
}
.ge-xp-bar--sm { width: 5rem; height: 0.45rem; }
.ge-xp-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #c9a227, #ffe066 60%, #fff3a0);
  transition: width 0.2s ease;
}

.ge-tabs {
  display: flex;
  gap: 0.35rem;
  padding: 0.45rem 0.65rem 0;
  background: #1a2432;
}

.ge-tab {
  appearance: none;
  border: 2px solid #5a6f84;
  background: #243246;
  color: var(--ge-muted);
  padding: 0.35rem 0.85rem;
  border-radius: 4px 4px 0 0;
  cursor: pointer;
  font-weight: 700;
  font-size: 0.85rem;
}

.ge-tab.active {
  background: #3a516c;
  color: var(--ge-yellow);
  border-bottom-color: #3a516c;
}

.ge-toolbar {
  display: flex;
  justify-content: flex-end;
  gap: 0.4rem;
  padding: 0.35rem 0.65rem;
  background: #1a2432;
}

.ge-icon-btn {
  width: 2.1rem;
  height: 2.1rem;
  border: 2px solid #6a8096;
  border-radius: 4px;
  background: #2a3a4e;
  color: var(--ge-yellow);
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
}

.ge-icon-btn:hover { background: #354a62; }

.ge-body {
  padding: 0.65rem 0.75rem 0.9rem;
  background: var(--ge-panel);
  min-height: 28rem;
}

.ge-summary {
  text-align: center;
  color: #dfe7f0;
  margin: 0 0 0.65rem;
  font-size: 0.92rem;
}

.ge-slots {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.55rem;
}

@media (max-width: 820px) {
  .ge-slots { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.ge-slot {
  background: var(--ge-slot);
  border: 2px solid var(--ge-border);
  border-radius: 4px;
  min-height: 7.5rem;
  padding: 0.4rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  box-shadow: inset 0 0 0 1px #0d141c;
}

.ge-slot-label {
  text-align: center;
  color: var(--ge-yellow);
  font-weight: 700;
  font-size: 0.9rem;
}

.ge-slot-empty-actions {
  display: flex;
  gap: 0.4rem;
  justify-content: center;
  align-items: center;
  flex: 1;
}

.ge-slot-action {
  width: 3.2rem;
  height: 3.2rem;
  border: 2px solid #7a6540;
  border-radius: 4px;
  background: linear-gradient(180deg, #6b4e2e, #3e2b16);
  color: var(--ge-yellow);
  cursor: pointer;
  font-size: 1.35rem;
  font-weight: 700;
}

.ge-slot-action.buy { box-shadow: inset 0 -2px 0 #2a1a0a; }
.ge-slot-action.sell { box-shadow: inset 0 -2px 0 #2a1a0a; }
.ge-slot-action:hover { filter: brightness(1.08); }

.ge-slot-row {
  display: flex;
  gap: 0.45rem;
  align-items: flex-start;
}

.ge-slot-row img {
  width: 42px;
  height: 42px;
  object-fit: cover;
  border: 1px solid #6a8096;
  border-radius: 3px;
  background: #0d141c;
}

.ge-slot-meta { flex: 1; min-width: 0; }
.ge-slot-meta .name {
  color: var(--ge-yellow);
  font-size: 0.82rem;
  font-weight: 700;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ge-slot-meta .qty { color: var(--ge-yellow); font-size: 0.8rem; }
.ge-slot-meta .px { color: #fff; font-size: 0.78rem; }

.ge-progress {
  height: 10px;
  border: 1px solid #0d141c;
  background: #0f1620;
  border-radius: 2px;
  overflow: hidden;
  margin-top: auto;
}
.ge-progress > span {
  display: block;
  height: 100%;
  width: 0;
  background: var(--ge-buy);
}
.ge-progress.sell > span { background: var(--ge-sell); }
.ge-progress.done > span { background: #5ecf7a; }
.ge-progress.abort > span { background: #c44; }

.ge-slot-foot {
  display: flex;
  justify-content: space-between;
  gap: 0.3rem;
}
.ge-slot-foot button {
  flex: 1;
  font-size: 0.72rem;
  padding: 0.25rem;
  border: 1px solid #6a8096;
  background: #2a3a4e;
  color: var(--ge-text);
  border-radius: 3px;
  cursor: pointer;
}

.ge-setup, .ge-history, .ge-pick, .ge-tracker {
  display: none;
}
.ge-setup.show, .ge-history.show, .ge-pick.show, .ge-tracker.show { display: block; }
.ge-home.hide { display: none; }

.ge-setup-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 0.6rem;
}
.ge-setup-head h3 {
  margin: 0;
  color: var(--ge-yellow);
  font-size: 1.1rem;
}

.ge-setup-item {
  display: flex;
  gap: 0.75rem;
  align-items: center;
  margin-bottom: 0.85rem;
  padding: 0.5rem;
  background: #1a2432;
  border: 2px solid #5a6f84;
  border-radius: 4px;
}
.ge-setup-item img {
  width: 64px;
  height: 64px;
  object-fit: cover;
  border: 1px solid #7a8fa5;
  background: #0d141c;
}
.ge-setup-item .name { color: var(--ge-yellow); font-weight: 700; font-size: 1rem; }
.ge-setup-item .desc { color: var(--ge-muted); font-size: 0.85rem; margin-top: 0.2rem; }
.ge-setup-item .guide { color: #fff; margin-top: 0.35rem; font-size: 0.85rem; }

.ge-setup-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  margin-bottom: 0.75rem;
}
@media (max-width: 640px) {
  .ge-setup-grid { grid-template-columns: 1fr; }
}

.ge-field {
  background: #1a2432;
  border: 2px solid #5a6f84;
  border-radius: 4px;
  padding: 0.55rem;
}
.ge-field h4 {
  margin: 0 0 0.4rem;
  color: var(--ge-yellow);
  font-size: 0.9rem;
}
.ge-stepper {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  margin-bottom: 0.45rem;
}
.ge-stepper input {
  flex: 1;
  background: #0d141c;
  border: 1px solid #6a8096;
  color: var(--ge-yellow);
  padding: 0.4rem;
  border-radius: 3px;
  text-align: center;
  font-weight: 700;
}
.ge-stepper button {
  width: 2rem;
  height: 2rem;
  border: 1px solid #6a8096;
  background: #2a3a4e;
  color: #fff;
  cursor: pointer;
  border-radius: 3px;
  font-weight: 700;
}
.ge-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
}
.ge-presets button {
  border: 1px solid #6a8096;
  background: #2a3a4e;
  color: var(--ge-text);
  padding: 0.28rem 0.45rem;
  border-radius: 3px;
  cursor: pointer;
  font-size: 0.75rem;
}

.ge-total {
  text-align: center;
  background: #0d141c;
  border: 2px solid #5a6f84;
  color: var(--ge-yellow);
  font-weight: 700;
  padding: 0.55rem;
  margin-bottom: 0.65rem;
  border-radius: 4px;
}

.ge-confirm {
  display: block;
  width: 100%;
  max-width: 16rem;
  margin: 0 auto;
  padding: 0.65rem 1rem;
  border: 2px solid #8a9aab;
  background: linear-gradient(180deg, #6a7a8c, #3a4a5c);
  color: #fff;
  font-weight: 800;
  font-size: 1rem;
  border-radius: 4px;
  cursor: pointer;
}
.ge-confirm:hover { filter: brightness(1.06); }

.ge-back {
  margin-top: 0.75rem;
  border: 1px solid #6a8096;
  background: #2a3a4e;
  color: #fff;
  padding: 0.35rem 0.7rem;
  border-radius: 3px;
  cursor: pointer;
}

.ge-pick-filters {
  display: flex;
  gap: 0.4rem;
  margin-bottom: 0.5rem;
  flex-wrap: wrap;
}
.ge-pick-search {
  flex: 1 1 160px;
  min-width: 0;
  box-sizing: border-box;
  padding: 0.45rem;
  background: #0d141c;
  border: 1px solid #6a8096;
  color: #fff;
  border-radius: 3px;
}
.ge-tag-filter {
  flex: 0 1 180px;
  min-width: 120px;
  box-sizing: border-box;
  padding: 0.45rem 0.4rem;
  background: #0d141c;
  border: 1px solid #6a8096;
  color: var(--ge-yellow);
  border-radius: 3px;
  font-weight: 700;
  font-size: 0.8rem;
}
.ge-pick-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
  gap: 0.4rem;
  max-height: 50vh;
  overflow: auto;
}
.ge-pick-item {
  border: 1px solid #5a6f84;
  background: #1a2432;
  border-radius: 4px;
  padding: 0.25rem;
  cursor: pointer;
  color: inherit;
  text-align: center;
}
.ge-pick-item img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  display: block;
  border-radius: 3px;
}
.ge-pick-item span {
  display: block;
  font-size: 0.68rem;
  color: var(--ge-yellow);
  margin-top: 0.2rem;
}

.ge-history table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.85rem;
}
.ge-history th, .ge-history td {
  border-bottom: 1px solid #3a4a5c;
  padding: 0.35rem 0.25rem;
  text-align: left;
}
.ge-history th { color: var(--ge-yellow); }

.ge-status {
  margin: 0.35rem 0 0;
  text-align: center;
  color: var(--ge-muted);
  font-size: 0.8rem;
  min-height: 1.1em;
}
.ge-status.err { color: #f08888; }

.ge-note {
  margin: 0.5rem 0.75rem 0;
  color: var(--ge-muted);
  font-size: 0.78rem;
}


.ge-layout-rs {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: 0.65rem;
  align-items: start;
}
@media (max-width: 900px) {
  .ge-layout-rs { grid-template-columns: 1fr; }
}

.ge-side {
  background: linear-gradient(180deg, #2a3548 0%, #1a2330 100%);
  border: 4px solid #7a8fa5;
  border-radius: 6px;
  box-shadow: inset 0 0 0 2px #3a4a5c, 0 10px 28px rgba(0,0,0,.4);
  overflow: hidden;
}
.ge-side-title {
  margin: 0;
  padding: 0.45rem 0.55rem;
  background: linear-gradient(180deg, #3a2a12, #24180a);
  border-bottom: 2px solid #8a7030;
  color: var(--ge-gold);
  font-family: "Cinzel", Georgia, serif;
  font-size: 0.95rem;
  letter-spacing: 0.06em;
}
.ge-side-tabs {
  display: flex;
  gap: 0.25rem;
  padding: 0.35rem;
  background: #1a2432;
}
.ge-side-tab {
  flex: 1;
  border: 2px solid #5a6f84;
  background: #243246;
  color: var(--ge-muted);
  padding: 0.3rem;
  border-radius: 3px;
  cursor: pointer;
  font-weight: 700;
  font-size: 0.78rem;
}
.ge-side-tab.active {
  background: #3a516c;
  color: var(--ge-yellow);
}
.ge-side-body { padding: 0.4rem; }
.ge-inv-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.28rem;
}
.ge-bank-grid {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: 0.22rem;
  max-height: 28rem;
  overflow: auto;
}
.ge-inv-slot, .ge-bank-slot {
  aspect-ratio: 1;
  border: 2px solid #5a6f84;
  background: #121a24;
  border-radius: 3px;
  position: relative;
  padding: 0.15rem;
  cursor: pointer;
  min-height: 0;
}
.ge-inv-slot:hover, .ge-bank-slot:hover { border-color: var(--ge-yellow); }
.ge-inv-slot.selected, .ge-bank-slot.selected {
  border-color: var(--ge-gold);
  box-shadow: 0 0 0 1px var(--ge-gold);
}
.ge-inv-slot img, .ge-bank-slot img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 2px;
  background: #0d141c;
}
.ge-inv-slot .qty, .ge-bank-slot .qty {
  position: absolute;
  right: 2px;
  bottom: 1px;
  font-size: 0.65rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 0 2px #000, 0 1px 0 #000;
}
.ge-inv-slot.empty, .ge-bank-slot.empty {
  background: repeating-linear-gradient(45deg, #121a24, #121a24 4px, #152030 4px, #152030 8px);
  cursor: default;
}
.ge-side-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin-top: 0.45rem;
}
.ge-side-actions button {
  flex: 1;
  min-width: 40%;
  border: 1px solid #6a8096;
  background: #2a3a4e;
  color: var(--ge-text);
  padding: 0.35rem 0.4rem;
  border-radius: 3px;
  cursor: pointer;
  font-size: 0.72rem;
  font-weight: 700;
}
.ge-side-meta {
  margin-top: 0.35rem;
  color: var(--ge-muted);
  font-size: 0.72rem;
  text-align: center;
}
.ge-bank-pager {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.35rem;
  color: var(--ge-yellow);
  font-size: 0.75rem;
  font-weight: 700;
}
.ge-bank-pager button {
  border: 1px solid #6a8096;
  background: #2a3a4e;
  color: #fff;
  width: 1.8rem;
  height: 1.8rem;
  border-radius: 3px;
  cursor: pointer;
}

/* Compact Spellforge strip in GE side panel */
.ge-forge {
  border-top: 3px solid #8a7030;
  background: linear-gradient(180deg, #24180a 0%, #1a2330 35%, #121820 100%);
  padding: 0.5rem 0.45rem 0.55rem;
}
.ge-forge-title {
  margin: 0 0 0.25rem;
  font-family: "Cinzel", Georgia, serif;
  font-size: 0.85rem;
  letter-spacing: 0.08em;
  color: var(--ge-gold);
  text-shadow: 0 1px 0 #000;
}
.ge-forge-hint {
  margin: 0 0 0.45rem;
  color: var(--ge-muted);
  font-size: 0.68rem;
  line-height: 1.35;
}
.ge-forge-slots {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.35rem;
  margin-bottom: 0.4rem;
}
.ge-forge-slot {
  aspect-ratio: 1;
  border: 2px solid #8a7030;
  background: #121a24;
  border-radius: 3px;
  padding: 0.12rem;
  cursor: pointer;
  position: relative;
  min-height: 0;
  color: var(--ge-gold);
}
.ge-forge-slot:hover { border-color: var(--ge-yellow); }
.ge-forge-slot.filled {
  border-color: var(--ge-gold);
  box-shadow: 0 0 0 1px rgba(255, 224, 102, 0.35);
}
.ge-forge-slot img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 2px;
  background: #0d141c;
}
.ge-forge-num {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: "Cinzel", Georgia, serif;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--ge-gold);
  text-shadow: 0 1px 2px #000;
  pointer-events: none;
}
.ge-forge-slot.filled .ge-forge-num { display: none; }
.ge-forge-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin-bottom: 0.35rem;
}
.ge-forge-actions button,
.ge-forge-result-actions button {
  flex: 1;
  min-width: 40%;
  border: 1px solid #8a7030;
  background: #2a3a4e;
  color: var(--ge-text);
  padding: 0.35rem 0.4rem;
  border-radius: 3px;
  cursor: pointer;
  font-size: 0.72rem;
  font-weight: 700;
}
.ge-forge-combine {
  background: linear-gradient(180deg, #5a3a12, #3a2410) !important;
  color: var(--ge-gold) !important;
  border-color: #c9a227 !important;
}
.ge-forge-actions button:hover,
.ge-forge-result-actions button:hover {
  border-color: var(--ge-yellow);
  color: var(--ge-yellow);
}
.ge-forge-result {
  display: flex;
  gap: 0.45rem;
  align-items: flex-start;
  margin: 0.35rem 0;
  padding: 0.4rem;
  border: 2px solid #6a8096;
  border-radius: 4px;
  background: #1c2838;
}
.ge-forge-result[hidden] { display: none !important; }
.ge-forge-result img {
  width: 3.4rem;
  height: 3.4rem;
  object-fit: cover;
  border-radius: 3px;
  border: 1px solid #8a7030;
  background: #0d141c;
  flex-shrink: 0;
}
.ge-forge-result strong {
  display: block;
  color: var(--ge-gold);
  font-size: 0.78rem;
  margin-bottom: 0.15rem;
}
.ge-forge-result p {
  margin: 0 0 0.35rem;
  color: var(--ge-muted);
  font-size: 0.68rem;
  line-height: 1.3;
  max-height: 3.2em;
  overflow: hidden;
}
.ge-forge-result-actions {
  display: flex;
  gap: 0.25rem;
  flex-wrap: wrap;
}
.ge-forge-status {
  margin: 0.2rem 0 0;
  min-height: 1em;
  color: var(--ge-muted);
  font-size: 0.68rem;
  text-align: center;
}
.ge-forge-status.err { color: #f88; }


/* —— World Art Floor (shown when GE UI closed) —— */
.ge-exchange-ui[hidden],
.ge-world[hidden] {
  display: none !important;
}
.ge-world {
  margin: 0.35rem 0 0.75rem;
  border: 4px solid #a89878;
  border-radius: 6px;
  overflow: hidden;
  background: linear-gradient(180deg, #3a3428 0%, #2a241c 50%, #1a1610 100%);
  box-shadow:
    inset 0 0 0 2px #5a4a30,
    0 10px 28px rgba(0, 0, 0, 0.45);
}
.ge-world-hud {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
  padding: 0.55rem 0.75rem;
  background: linear-gradient(180deg, #5a1e1e 0%, #3a1212 100%);
  border-bottom: 3px solid #8a3030;
}
.ge-world-hud-left {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  flex-wrap: wrap;
}
.ge-world-cash {
  color: var(--ge-yellow);
  font-size: 0.85rem;
}
.ge-open-exchange {
  appearance: none;
  border: 2px solid #c9a227;
  background: linear-gradient(180deg, #5a3a12, #3a2410);
  color: var(--ge-gold);
  font-weight: 800;
  font-family: "Cinzel", Georgia, serif;
  letter-spacing: 0.04em;
  padding: 0.4rem 0.85rem;
  border-radius: 4px;
  cursor: pointer;
  text-shadow: 0 1px 0 #000;
}
.ge-open-exchange:hover {
  border-color: var(--ge-yellow);
  color: #fff3a0;
}
.ge-world-stage {
  position: relative;
  height: min(62vh, 520px);
  min-height: 320px;
  outline: none;
  overflow: hidden;
  cursor: grab;
  background: #1a1610;
}
.ge-world-stage:active {
  cursor: grabbing;
}
.ge-world-stage--artfloor3d {
  box-shadow: inset 0 0 40px rgba(0, 0, 0, 0.35);
}
.ge-world-canvas {
  display: block;
  width: 100%;
  height: 100%;
  touch-action: none;
  position: relative;
  z-index: 1;
  background: #3a3024;
}
.ge-world-splash {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  background: #2a2418;
}
.ge-world-splash img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(1.05) brightness(0.85);
  transform: scale(1.04);
}
.ge-world-splash-hall {
  width: 100%;
  height: 100%;
  background:
    radial-gradient(ellipse at 50% 20%, rgba(255,242,220,0.55), transparent 55%),
    linear-gradient(180deg, #e8dcc8 0%, #d4c8b4 40%, #3a3024 100%);
}
.ge-world-loader {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(180deg, rgba(26,22,16,0.25), rgba(26,22,16,0.55));
  transition: opacity 0.35s ease, visibility 0.35s ease;
}
.ge-world-loader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.ge-world-loader-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.55rem;
  padding: 0.85rem 1.15rem;
  border: 2px solid #c9a227;
  border-radius: 6px;
  background: rgba(26, 22, 16, 0.9);
  box-shadow: 0 10px 28px rgba(0,0,0,0.45);
  color: #ffe066;
  font-family: "Cinzel", Georgia, serif;
  font-weight: 800;
  font-size: 1rem;
  letter-spacing: 0.04em;
  text-shadow: 0 1px 0 #000;
}
.ge-world-loader-dots span {
  animation: ge-loader-blink 1.2s infinite;
  opacity: 0.2;
}
.ge-world-loader-dots span:nth-child(2) { animation-delay: 0.2s; }
.ge-world-loader-dots span:nth-child(3) { animation-delay: 0.4s; }
@keyframes ge-loader-blink {
  0%, 80%, 100% { opacity: 0.15; }
  40% { opacity: 1; }
}
.ge-world-loader-card {
  flex-direction: column;
  align-items: stretch;
  min-width: min(18rem, 86vw);
  gap: 0.55rem;
}
.ge-world-loader-row {
  display: flex;
  align-items: center;
  gap: 0.55rem;
}
.ge-world-loader-spinner {
  width: 1rem;
  height: 1rem;
  border: 2px solid rgba(255,224,102,0.25);
  border-top-color: #ffe066;
  border-radius: 50%;
  animation: ge-loader-spin 0.8s linear infinite;
  flex: 0 0 auto;
}
.ge-world-loader-pct {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
  color: #f7e69c;
  font-size: 0.85rem;
}
.ge-world-loader-bar {
  height: 0.45rem;
  border-radius: 999px;
  background: rgba(255,224,102,0.15);
  overflow: hidden;
  border: 1px solid rgba(201,162,39,0.45);
}
.ge-world-loader-bar-fill {
  height: 100%;
  width: 0%;
  border-radius: inherit;
  background: linear-gradient(90deg, #c9a227, #ffe066, #f7e69c);
  box-shadow: 0 0 10px rgba(255,224,102,0.35);
  transition: width 0.18s ease-out;
}
.ge-world-loader-bar-fill.is-indeterminate {
  width: 35% !important;
  animation: ge-loader-indeterminate 1.1s ease-in-out infinite;
}
.ge-world-loader-sub {
  font-family: system-ui, sans-serif;
  font-weight: 600;
  font-size: 0.72rem;
  letter-spacing: 0.02em;
  color: rgba(255,224,102,0.72);
}
@keyframes ge-loader-spin {
  to { transform: rotate(360deg); }
}
@keyframes ge-loader-indeterminate {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(320%); }
}

.ge-world-interact-hint {
  position: absolute;
  left: 50%;
  bottom: 1rem;
  transform: translateX(-50%);
  z-index: 4;
  padding: 0.45rem 0.9rem;
  border: 2px solid #c9a227;
  border-radius: 4px;
  background: rgba(26, 22, 16, 0.88);
  color: #ffe066;
  font-family: "Cinzel", Georgia, serif;
  font-weight: 800;
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  pointer-events: none;
  text-shadow: 0 1px 0 #000;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.45);
}
.ge-world-interact-hint[hidden] {
  display: none !important;
}
.ge-booth-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.ge-world-hint {
  margin: 0;
  padding: 0.4rem 0.75rem 0.55rem;
  color: #d8cdb8;
  font-size: 0.78rem;
  background: #2a2418;
  border-top: 1px solid #5a4a30;
}

/* Right-click Spellforge slot picker */
.ge-forge-menu {
  position: fixed;
  z-index: 12000;
  min-width: 168px;
  padding: 0.3rem;
  margin: 0;
  border: 2px solid var(--ge-yellow, #c9a227);
  border-radius: 6px;
  background: linear-gradient(180deg, #2a2418 0%, #1a1610 100%);
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.55);
}
.ge-forge-menu[hidden] {
  display: none !important;
}
.ge-forge-menu button {
  display: block;
  width: 100%;
  text-align: left;
  border: 1px solid transparent;
  border-radius: 4px;
  background: transparent;
  color: #f0e6c8;
  font: inherit;
  font-size: 0.82rem;
  padding: 0.45rem 0.55rem;
  cursor: pointer;
}
.ge-forge-menu button:hover {
  border-color: var(--ge-yellow, #c9a227);
  background: rgba(201, 162, 39, 0.15);
}
.ge-forge-menu button.occupied {
  color: #ffe066;
}

.ge-forge-menu-divider {
  height: 1px;
  margin: 0.35rem 0.25rem;
  background: rgba(201, 162, 39, 0.35);
}
.ge-forge-menu button[hidden] {
  display: none !important;
}
.ge-forge-notes {
  margin: 0.55rem 0 0.35rem;
  padding: 0.45rem 0.5rem;
  border: 1px solid rgba(201, 162, 39, 0.28);
  border-radius: 6px;
  background: rgba(0, 0, 0, 0.22);
}
.ge-forge-notes-label,
.ge-forge-notes-field-label,
.ge-forge-aspect-label {
  display: block;
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #c9b896;
  margin-bottom: 0.3rem;
}
.ge-forge-notes-field-label {
  margin-top: 0.35rem;
  margin-bottom: 0.2rem;
  text-transform: none;
  letter-spacing: 0.02em;
  font-size: 0.7rem;
  color: #b8a878;
}
.ge-note-title,
.ge-note-text {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #4a3f2a;
  border-radius: 4px;
  background: #12100c;
  color: #f0e6c8;
  font: inherit;
  font-size: 0.8rem;
  padding: 0.4rem 0.45rem;
}
.ge-note-title {
  min-height: 0;
  margin-bottom: 0.1rem;
}
.ge-note-text {
  min-height: 3.4rem;
  resize: vertical;
}
.ge-forge-notes-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0.4rem 0;
}
.ge-forge-notes-actions button,
.ge-forge-to-animate {
  border: 1px solid #5a4a28;
  border-radius: 4px;
  background: #2a2418;
  color: #f0e6c8;
  font: inherit;
  font-size: 0.75rem;
  padding: 0.3rem 0.45rem;
  cursor: pointer;
}
.ge-forge-notes-actions button:hover,
.ge-forge-to-animate:hover {
  border-color: var(--ge-yellow, #c9a227);
  background: rgba(201, 162, 39, 0.18);
}
.ge-forge-aspect {
  margin-left: 0.35rem;
  border: 1px solid #5a4a28;
  border-radius: 4px;
  background: #1a1610;
  color: #f0e6c8;
  font: inherit;
  font-size: 0.78rem;
  padding: 0.2rem 0.35rem;
}
.ge-forge-slot.note-slot {
  background: linear-gradient(160deg, #2b3344 0%, #1a2030 100%);
}
.ge-forge-slot .ge-note-badge {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.15rem;
  width: 100%;
  height: 100%;
  padding: 0.25rem;
  box-sizing: border-box;
  color: #d7e6ff;
  font-size: 0.65rem;
  line-height: 1.15;
  text-align: center;
  pointer-events: none;
}
.ge-forge-slot .ge-note-badge img {
  width: 22px;
  height: 22px;
  object-fit: contain;
}


/* GE item fullscreen viewer */
.ge-lightbox {
  position: fixed;
  inset: 0;
  z-index: 13000;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  padding: 1.25rem;
  background: rgba(8, 10, 14, 0.92);
  backdrop-filter: blur(4px);
}
.ge-lightbox[hidden] {
  display: none !important;
}
.ge-lightbox-close {
  position: absolute;
  top: 0.75rem;
  right: 0.9rem;
  border: 2px solid var(--ge-yellow, #c9a227);
  border-radius: 6px;
  background: #2a2418;
  color: #ffe066;
  font-size: 1.4rem;
  line-height: 1;
  width: 2.2rem;
  height: 2.2rem;
  cursor: pointer;
}
.ge-lightbox-stage {
  max-width: min(920px, 94vw);
  max-height: min(72vh, 820px);
  display: flex;
  align-items: center;
  justify-content: center;
}
.ge-lightbox-stage img {
  max-width: 100%;
  max-height: min(72vh, 820px);
  object-fit: contain;
  border: 3px solid #7a8fa5;
  border-radius: 6px;
  background: #111;
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.55);
}
.ge-lightbox-note {
  max-width: min(720px, 90vw);
  max-height: min(60vh, 640px);
  overflow: auto;
  padding: 1.1rem 1.25rem;
  border: 3px solid var(--ge-yellow, #c9a227);
  border-radius: 8px;
  background: #1a1610;
  color: #f0e6c8;
  white-space: pre-wrap;
  font-size: 1rem;
  line-height: 1.45;
}
.ge-lightbox-meta {
  max-width: min(920px, 94vw);
  text-align: center;
  color: #e8dcc0;
}
.ge-lightbox-meta strong {
  display: block;
  color: #ffe066;
  font-size: 1.05rem;
  margin-bottom: 0.25rem;
}
.ge-lightbox-meta p {
  margin: 0;
  font-size: 0.85rem;
  color: #b8a88a;
  max-height: 4.5em;
  overflow: hidden;
}


/* In-GE Animate (no tab switch) */
.ge-animate {
  margin-top: 0.65rem;
  padding-top: 0.55rem;
  border-top: 2px solid #5a4a28;
}
.ge-animate-title {
  margin: 0 0 0.2rem;
  color: #ffe066;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
}
.ge-animate-hint {
  margin: 0 0 0.45rem;
  color: #a89878;
  font-size: 0.68rem;
}
.ge-animate-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
  margin-bottom: 0.35rem;
}
.ge-animate-controls label {
  color: #d8c8a8;
  font-size: 0.72rem;
  display: flex;
  align-items: center;
  gap: 0.3rem;
}
.ge-animate-controls select {
  background: #1a1610;
  color: #f0e6c8;
  border: 1px solid #7a6a40;
  border-radius: 4px;
  padding: 0.2rem 0.35rem;
}
.ge-animate-cancel {
  border: 1px solid #a44;
  background: #3a1818;
  color: #f88;
  border-radius: 4px;
  padding: 0.25rem 0.5rem;
  cursor: pointer;
  font-size: 0.72rem;
}
.ge-animate-status {
  min-height: 1.1em;
  margin: 0 0 0.35rem;
  color: #c8b890;
  font-size: 0.72rem;
}
.ge-animate-status.err { color: #f88; }
.ge-animate-status.ok { color: #8d8; }
.ge-animate-progress {
  height: 6px;
  border-radius: 4px;
  background: #2a2418;
  overflow: hidden;
  margin-bottom: 0.45rem;
}
.ge-animate-progress-fill {
  height: 100%;
  width: 8%;
  background: linear-gradient(90deg, #c9a227, #ffe066);
  transition: width 0.35s ease;
}
.ge-animate-stage {
  position: relative;
  min-height: 120px;
  border: 2px solid #5a4a28;
  border-radius: 6px;
  background: #0e0c0a;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ge-animate-still,
.ge-animate-video {
  max-width: 100%;
  max-height: 220px;
  display: block;
}


.ge-inv-slot img.broken,
.ge-bank-slot img.broken,
.ge-forge-slot img.broken {
  outline: 1px solid #c45c26;
  opacity: 0.85;
}


.ge-animate-prompt {
  position: fixed;
  inset: 0;
  z-index: 12000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: rgba(0, 0, 0, 0.62);
}
.ge-animate-prompt[hidden] {
  display: none !important;
}
.ge-animate-prompt-card {
  width: min(440px, 100%);
  background: #1a1510;
  border: 2px solid #c9a227;
  border-radius: 8px;
  padding: 16px 16px 14px;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.55);
  color: #e8dcc8;
}
.ge-animate-prompt-title {
  margin: 0 0 6px;
  font-size: 1.05rem;
  color: #e8c547;
  letter-spacing: 0.04em;
}
.ge-animate-prompt-lead {
  margin: 0 0 12px;
  font-size: 0.85rem;
  color: #b8a88a;
}
.ge-animate-prompt-label {
  display: block;
  font-size: 0.78rem;
  color: #c9a227;
  margin-bottom: 4px;
}
.ge-animate-direction {
  width: 100%;
  box-sizing: border-box;
  resize: vertical;
  min-height: 88px;
  background: #0f0c09;
  border: 1px solid #5a4a2e;
  border-radius: 4px;
  color: #f0e6d2;
  padding: 8px 10px;
  font: inherit;
  line-height: 1.35;
}
.ge-animate-direction:focus {
  outline: 1px solid #c9a227;
  border-color: #c9a227;
}
.ge-animate-prompt-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 12px;
}
.ge-animate-prompt-cancel,
.ge-animate-prompt-go {
  font: inherit;
  cursor: pointer;
  border-radius: 4px;
  padding: 7px 14px;
  border: 1px solid #5a4a2e;
}
.ge-animate-prompt-cancel {
  background: #2a2218;
  color: #d4c4a8;
}
.ge-animate-prompt-go {
  background: #3d6b2e;
  border-color: #5a9a3e;
  color: #e8ffe0;
  font-weight: 600;
}
.ge-animate-prompt-go:hover {
  filter: brightness(1.08);
}


.ge-color-chips-hint {
  margin: 0 0 6px;
  font-size: 0.7rem;
  color: #a89878;
}
.ge-color-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}
.ge-color-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 4px 8px 4px 4px;
  border-radius: 999px;
  border: 1px solid #5a4a2e;
  background: #1a1510;
  color: #e8dcc8;
  font: inherit;
  font-size: 0.72rem;
  cursor: pointer;
}
.ge-color-chip:hover {
  border-color: #c9a227;
  filter: brightness(1.06);
}
.ge-color-chip-swatch {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1px solid rgba(0,0,0,0.45);
  flex: 0 0 auto;
}
.ge-color-chip-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 140px;
}
.ge-color-chip-make {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.ge-color-chip-make input[type="color"] {
  width: 36px;
  height: 28px;
  padding: 0;
  border: 1px solid #5a4a2e;
  background: transparent;
  cursor: pointer;
}
.ge-color-add-pack {
  font: inherit;
  font-size: 0.75rem;
  padding: 5px 10px;
  border-radius: 4px;
  border: 1px solid #5a4a2e;
  background: #2a2218;
  color: #e8dcc8;
  cursor: pointer;
}
.ge-color-add-pack:hover {
  border-color: #c9a227;
}
.ge-forge-slot.color-slot {
  box-shadow: inset 0 0 0 2px #c9a22788;
}
.ge-inv-slot.color-item img,
.ge-bank-slot.color-item img {
  object-fit: contain;
  padding: 4px;
}


.ge-note-color-hits {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 6px 0 8px;
  min-height: 0;
}
.ge-note-color-hits:empty {
  display: none;
}
.ge-color-hit {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 8px 3px 4px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--swatch, #888) 55%, #5a4a2e);
  background: #1a1510;
  color: #f0e6d2;
  font: inherit;
  font-size: 0.72rem;
  cursor: pointer;
  max-width: 100%;
}
.ge-color-hit:hover {
  filter: brightness(1.08);
  border-color: var(--swatch, #c9a227);
}
.ge-color-hit-swatch {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--swatch, #888);
  border: 1px solid rgba(0,0,0,0.4);
  flex: 0 0 auto;
}
.ge-color-hit-hex {
  opacity: 0.75;
  font-style: normal;
  font-size: 0.68rem;
}
.ge-lightbox-desc-rich {
  margin-top: 8px;
  font-size: 0.9rem;
  line-height: 1.45;
  color: #e8dcc8;
  max-height: 40vh;
  overflow: auto;
  white-space: pre-wrap;
}
.ge-lightbox-desc-rich .ge-color-hit {
  vertical-align: baseline;
  white-space: nowrap;
}
.ge-color-popover {
  position: fixed;
  z-index: 20000;
  width: min(280px, calc(100vw - 24px));
  background: #1a1510;
  border: 2px solid #c9a227;
  border-radius: 8px;
  padding: 12px;
  box-shadow: 0 12px 36px rgba(0,0,0,0.55);
  color: #e8dcc8;
}
.ge-color-popover-title {
  margin: 0 0 8px;
  font-size: 0.9rem;
  color: #e8c547;
}
.ge-color-popover-row {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
}
.ge-color-popover-row input[type="color"] {
  width: 40px;
  height: 32px;
  border: 1px solid #5a4a2e;
  background: transparent;
  cursor: pointer;
}
.ge-color-popover-row input[type="text"] {
  flex: 1;
  background: #0f0c09;
  border: 1px solid #5a4a2e;
  color: #f0e6d2;
  border-radius: 4px;
  padding: 6px 8px;
  font: inherit;
}
.ge-color-popover-preview {
  font-size: 0.8rem;
  margin-bottom: 10px;
  color: #c8b890;
}
.ge-color-popover-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
.ge-color-popover-actions button {
  font: inherit;
  cursor: pointer;
  border-radius: 4px;
  padding: 6px 12px;
  border: 1px solid #5a4a2e;
  background: #2a2218;
  color: #e8dcc8;
}
.ge-color-popover-actions .ge-color-popover-apply {
  background: #3d6b2e;
  border-color: #5a9a3e;
  color: #e8ffe0;
  font-weight: 600;
}


.ge-desc-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 8px 0 10px;
}
.ge-desc-toolbar button {
  font: inherit;
  font-size: 0.78rem;
  cursor: pointer;
  border-radius: 4px;
  padding: 5px 10px;
  border: 1px solid #5a4a2e;
  background: #2a2218;
  color: #e8dcc8;
}
.ge-desc-toolbar button:disabled {
  opacity: 0.45;
  cursor: default;
}
.ge-desc-edit {
  width: 100%;
  box-sizing: border-box;
  min-height: 120px;
  margin-top: 8px;
  background: #0f0c09;
  border: 1px solid #5a4a2e;
  border-radius: 4px;
  color: #f0e6d2;
  padding: 8px 10px;
  font: inherit;
  line-height: 1.4;
  resize: vertical;
}
.ge-desc-edit-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 8px;
}


.ge-qty-max {
  font-weight: 700;
  color: #1a1510;
  background: #c9a227;
  border-color: #e8c547;
}
.ge-qty-max:hover {
  filter: brightness(1.08);
}

/* —— Market Tracker —— */
.ge-tracker {
  display: none;
  padding: 0.55rem 0.75rem 0.85rem;
}
.ge-tracker.show { display: block; }
.ge-tracker-empty {
  margin: 0.75rem 0;
  padding: 1rem 1.1rem;
  border: 2px dashed #5a6f84;
  border-radius: 6px;
  background: #1a2432;
  color: var(--ge-muted);
  text-align: center;
  font-size: 0.88rem;
  line-height: 1.45;
}
.ge-tracker-list {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}
.ge-tracker-row {
  display: grid;
  grid-template-columns: 44px minmax(0, 1.4fr) minmax(0, 1fr) 72px 28px;
  gap: 0.45rem 0.55rem;
  align-items: center;
  padding: 0.4rem 0.5rem;
  background: linear-gradient(180deg, #2a3548 0%, #1c2838 100%);
  border: 2px solid #5a6f84;
  border-radius: 5px;
  box-shadow: inset 0 0 0 1px #3a4a5c;
}
.ge-tracker-row img {
  width: 40px;
  height: 40px;
  object-fit: cover;
  border: 1px solid #6f879e;
  border-radius: 3px;
  background: #0d141c;
}
.ge-tracker-meta .name {
  font-weight: 700;
  color: var(--ge-gold);
  font-size: 0.82rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ge-tracker-meta .sub {
  font-size: 0.72rem;
  color: var(--ge-muted);
}
.ge-tracker-prices {
  font-size: 0.74rem;
  line-height: 1.35;
  color: var(--ge-text);
}
.ge-tracker-prices .guide { color: var(--ge-yellow); font-weight: 700; }
.ge-tracker-prices .buy { color: #d4a017; }
.ge-tracker-prices .sell { color: #6ecf8e; }
.ge-tracker-prices .delta-up { color: #6ecf8e; }
.ge-tracker-prices .delta-down { color: #e07070; }
.ge-tracker-prices .delta-flat { color: var(--ge-muted); }
.ge-tracker-spark {
  width: 72px;
  height: 28px;
  display: block;
}
.ge-tracker-untrack {
  appearance: none;
  width: 26px;
  height: 26px;
  border: 1px solid #6a4040;
  background: #3a1a1a;
  color: #e8a0a0;
  border-radius: 3px;
  cursor: pointer;
  font-size: 0.85rem;
  line-height: 1;
  padding: 0;
}
.ge-tracker-untrack:hover {
  background: #5a2222;
  color: #fff;
}
@media (max-width: 720px) {
  .ge-tracker-row {
    grid-template-columns: 40px minmax(0, 1fr) 28px;
    grid-template-areas:
      "thumb meta untrack"
      "prices prices prices"
      "spark spark spark";
  }
  .ge-tracker-row img { grid-area: thumb; }
  .ge-tracker-meta { grid-area: meta; }
  .ge-tracker-prices { grid-area: prices; }
  .ge-tracker-spark { grid-area: spark; width: 100%; }
  .ge-tracker-untrack { grid-area: untrack; justify-self: end; }
}


/* —— Auto-forge toggle + ready-to-generate result —— */
.ge-autoforge-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem 0.85rem;
  margin: 0.35rem 0 0.55rem;
  padding: 0.4rem 0.55rem;
  background: linear-gradient(180deg, #2a2418 0%, #1a1610 100%);
  border: 1px solid #6a5730;
  border-radius: 6px;
}
.ge-autoforge-bar.on {
  border-color: #c9a227;
  box-shadow: 0 0 0 1px rgba(201, 162, 39, 0.25);
}
.ge-autoforge-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #f0d78c;
  cursor: pointer;
  user-select: none;
}
.ge-autoforge-toggle input {
  width: 1rem;
  height: 1rem;
  accent-color: #c9a227;
  cursor: pointer;
}
.ge-autoforge-status {
  font-size: 0.78rem;
  color: #b8c4d4;
  min-height: 1.1em;
}
.ge-autoforge-bar.on .ge-autoforge-status {
  color: #e8dcc8;
}
.ge-forge-result.ge-forge-ready {
  border-color: #c9a227;
  box-shadow: 0 0 0 1px rgba(201, 162, 39, 0.35), inset 0 0 18px rgba(201, 162, 39, 0.08);
}
.ge-forge-result-meta {
  min-width: 0;
  flex: 1;
}
.ge-forge-result-desc-label {
  display: block;
  margin: 0.35rem 0 0.2rem;
  font-size: 0.72rem;
  color: #c8b890;
}
.ge-forge-result-desc-edit {
  width: 100%;
  box-sizing: border-box;
  min-height: 88px;
  background: #0f0c09;
  border: 1px solid #5a4a2e;
  border-radius: 4px;
  color: #f0e6d2;
  padding: 8px 10px;
  font: inherit;
  font-size: 0.8rem;
  line-height: 1.4;
  resize: vertical;
}
.ge-forge-result-desc-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0.35rem 0 0.45rem;
}
.ge-forge-result-desc-actions button,
.ge-forge-result-generate {
  font: inherit;
  font-size: 0.75rem;
  cursor: pointer;
  border-radius: 4px;
  padding: 5px 10px;
  border: 1px solid #5a4a2e;
  background: #2a2218;
  color: #e8dcc8;
}
.ge-forge-result-generate {
  background: #3d6b2e;
  border-color: #5a9a3e;
  color: #e8ffe0;
  font-weight: 700;
}
.ge-forge-result-generate:hover {
  filter: brightness(1.08);
}
.ge-forge-ready-hint {
  margin: 0.35rem 0 0;
  font-size: 0.72rem;
  color: #d4c090;
  line-height: 1.35;
}


/* Prompt ledger inventory chips */
.ge-inv-slot.ledger,
.ge-bank-slot.ledger {
  box-shadow: inset 0 0 0 2px #c9a227;
}
.ge-inv-slot.ledger::after,
.ge-bank-slot.ledger::after {
  content: "✦";
  position: absolute;
  right: 3px;
  top: 2px;
  font-size: 0.65rem;
  color: #c9a227;
  text-shadow: 0 0 4px #000;
  pointer-events: none;
}
.ge-inv-slot.note,
.ge-bank-slot.note {
  box-shadow: inset 0 0 0 1px #64748b;
}
.ge-forge-menu [data-ge-action="generate"],
.ge-forge-menu [data-ge-action="generate-all"] {
  color: #f0d78c;
  font-weight: 600;
}
