/* V1.107 — identity/character commits own one immutable, visible transaction. */
body:not(.maintenance-mode) :is(#identitySelect, #characterSelect, #modeDialog)[data-selection-commit]:not([data-selection-commit="idle"]) {
  --selection-commit-accent: #f2ca69;
}

body:not(.maintenance-mode) #identitySelect[data-selection-commit="identity"] {
  --selection-commit-accent: #86d7ff;
}

body:not(.maintenance-mode) .selection-commit-announcer {
  position: absolute;
  z-index: 40;
  top: 14px;
  right: 18px;
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 30px 5px 12px;
  border: 1px solid color-mix(in srgb, var(--selection-commit-accent) 58%, transparent);
  border-radius: 999px;
  color: #fff7da;
  background: rgba(6, 20, 34, 0.9);
  box-shadow: 0 0 18px color-mix(in srgb, var(--selection-commit-accent) 24%, transparent);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.08em;
  pointer-events: none;
}

body:not(.maintenance-mode) .selection-commit-announcer::after {
  content: "";
  position: absolute;
  right: 9px;
  width: 12px;
  height: 12px;
  border: 2px solid color-mix(in srgb, var(--selection-commit-accent) 30%, transparent);
  border-top-color: var(--selection-commit-accent);
  border-radius: 50%;
  animation: selection-commit-spin 700ms linear infinite;
}

body:not(.maintenance-mode) button:is(#identityConfirm, #lockCharacter, #modeLockCharacter)[data-selection-pending="true"] {
  position: relative !important;
  cursor: wait !important;
  opacity: 1 !important;
  filter: saturate(0.88) brightness(0.98) !important;
  box-shadow:
    0 0 0 2px color-mix(in srgb, var(--selection-commit-accent) 62%, transparent),
    0 0 26px color-mix(in srgb, var(--selection-commit-accent) 34%, transparent) !important;
}

body:not(.maintenance-mode) :is(#identitySelect, #characterSelect, #modeDialog)[data-selection-commit]:not([data-selection-commit="idle"]) [data-selection-commit-locked="true"]:not([data-selection-pending="true"]) {
  opacity: 0.48 !important;
  filter: grayscale(0.28) saturate(0.62) !important;
  cursor: wait !important;
}

body:not(.maintenance-mode) #characterSelect[data-selection-commit]:not([data-selection-commit="idle"]) .character-option.previewed,
body:not(.maintenance-mode) #characterSelect[data-selection-commit]:not([data-selection-commit="idle"]) .character-option.selected {
  opacity: 1 !important;
  filter: saturate(1.06) brightness(1.02) !important;
  box-shadow: 0 0 0 2px var(--selection-commit-accent), 0 0 26px color-mix(in srgb, var(--selection-commit-accent) 38%, transparent) !important;
}

body:not(.maintenance-mode) #identitySelect[data-selection-commit="identity"] .identity-option.selected {
  opacity: 1 !important;
  filter: saturate(1.04) brightness(1.02) !important;
  box-shadow: 0 0 0 2px var(--selection-commit-accent), 0 0 22px rgba(91, 192, 242, 0.26) !important;
}

@keyframes selection-commit-spin {
  to { transform: rotate(1turn); }
}

@media (max-width: 720px) {
  body:not(.maintenance-mode) .selection-commit-announcer {
    top: 8px;
    right: 8px;
    min-height: 24px;
    padding: 3px 26px 3px 9px;
    font-size: 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body:not(.maintenance-mode) .selection-commit-announcer::after {
    animation: none !important;
  }
}

@media (forced-colors: active) {
  body:not(.maintenance-mode) .selection-commit-announcer,
  body:not(.maintenance-mode) button:is(#identityConfirm, #lockCharacter, #modeLockCharacter)[data-selection-pending="true"] {
    border: 2px solid Highlight !important;
    color: CanvasText !important;
    background: Canvas !important;
    box-shadow: none !important;
  }
}
