.archive-v2-background {
  position: absolute;
  z-index: 0;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  pointer-events: none;
  user-select: none;
}

#scene-archive > .archive-wall,
#scene-archive > .concept-copy { display: none; }

.archive-v2-character {
  position: absolute;
  z-index: 5;
  left: 49%;
  top: 34.5%;
  display: block;
  width: 44%;
  height: auto;
  object-fit: contain;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  user-select: none;
}

.archive-v2-character.is-playing {
  opacity: 1;
  visibility: visible;
}

.archive-v2-character-idle.is-playing {
  pointer-events: auto;
  cursor: pointer;
}

.archive-v2-ui {
  position: absolute;
  z-index: 10;
  width: var(--corner-icon-size);
  height: auto;
  aspect-ratio: 1;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  transition: transform .2s ease;
}

.archive-v2-ui img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}

.archive-v2-ui:hover,
.archive-v2-ui:focus-visible {
  transform: scale(1.08);
  outline: 0;
}

.archive-v2-return { left: var(--corner-icon-left); top: var(--corner-icon-top); }
.archive-v2-sound { right: var(--corner-sound-right); top: var(--corner-icon-top); }
.archive-v2-voice { right: var(--corner-settings-right); top: var(--corner-icon-top); }
.archive-v2-sound[aria-pressed="true"] { filter: drop-shadow(0 0 10px #fff); }

.archive-categories {
  position: absolute;
  z-index: 20;
  inset: 0;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .4s ease, visibility .4s;
}

.archive-categories::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(35, 24, 16, .52);
  pointer-events: none;
}

.archive-scene.archive-cards-visible .archive-categories {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.archive-categories-grid {
  position: absolute;
  z-index: 1;
  left: calc(17% - 20px);
  top: 22.8%;
  width: calc(66% + 40px);
  height: 54.2%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: calc(3% + 20px);
  align-items: stretch;
}

.archive-category-card {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  transition: transform .2s ease, filter .2s ease;
}

.archive-category-card img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}

.archive-category-card:hover,
.archive-category-card:focus-visible {
  transform: translateY(-1.5%) scale(1.025);
  filter: drop-shadow(0 12px 14px rgba(40, 25, 15, .28));
  outline: 0;
}

.archive-categories-close {
  position: absolute;
  z-index: 2;
  left: 50%;
  top: 82.5%;
  width: 5.2%;
  height: auto;
  aspect-ratio: 1;
  padding: 0;
  border: 0;
  background: transparent;
  transform: translateX(-50%);
  cursor: pointer;
  transition: transform .18s ease, filter .18s ease;
}

.archive-categories-close img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}

.archive-categories-close:hover,
.archive-categories-close:focus-visible {
  transform: translateX(-50%) scale(1.08);
  filter: brightness(1.08);
  outline: 0;
}

.archive-viewer { position: absolute; z-index: 30; inset: 0; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .35s ease, visibility .35s; }
.archive-viewer::before { content: ""; position: absolute; inset: 0; background: rgba(35,24,16,.62); backdrop-filter: blur(5px); pointer-events: none; }
.archive-scene.archive-viewer-open .archive-viewer { opacity: 1; visibility: visible; pointer-events: auto; }
.archive-viewer-frame { position: absolute; z-index: 1; left: 50%; top: 7%; width: 74.6%; height: 86%; transform: translateX(-50%); overflow: hidden; border-radius: 2.2%; background: #fff; box-shadow: 0 24px 70px rgba(35,21,14,.35); }
.archive-viewer-scroll { position: absolute; inset: 0; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.archive-viewer-image { display: block; width: 100%; height: auto; object-fit: contain; object-position: top center; }
.archive-viewer-placeholder { position: absolute; inset: 0; display: grid; place-content: center; gap: 12px; text-align: center; color: #704a35; background: linear-gradient(135deg,#fff 0%,#fff7f5 100%); }
.archive-viewer-placeholder[hidden] { display: none; }
.archive-viewer-placeholder b { font-size: clamp(24px,3vw,52px); }
.archive-viewer-placeholder span { font-size: clamp(12px,1.2vw,21px); opacity: .68; }
.archive-viewer-close { position: absolute; z-index: 3; right: 2.2%; top: 3.6%; width: 6.1%; height: auto; aspect-ratio: 1; padding: 0; border: 0; background: transparent; cursor: pointer; transition: transform .18s ease, filter .18s ease; }
.archive-viewer-close img,.archive-viewer-arrow img { display: block; width: 100%; height: 100%; object-fit: contain; pointer-events: none; }
.archive-viewer-close:hover,.archive-viewer-close:focus-visible { transform: scale(1.08); filter: brightness(1.08); outline: 0; }
.archive-viewer-arrow { position: absolute; z-index: 2; top: 50%; width: 5.1%; height: auto; aspect-ratio: 1; padding: 0; border: 0; background: transparent; transform: translateY(-50%); cursor: pointer; transition: transform .18s ease, filter .18s ease; }
.archive-viewer-prev { left: 6.9%; }
.archive-viewer-next { right: 6.9%; }
.archive-viewer-arrow:hover:not(:disabled),.archive-viewer-arrow:focus-visible:not(:disabled) { transform: translateY(-50%) scale(1.08); filter: brightness(1.1); outline: 0; }
.archive-viewer-arrow:disabled { opacity: .42; cursor: default; }

.game:has(#scene-archive.active) > .hud,
.game:has(#scene-archive.active) > .dialogue,
.game:has(#scene-archive.active) > .hint { display: none; }
