/* INTRO only: anchored disclosures over the approved world map. */
body:has(#intro.on) :is(#codex-stage-dialog, #funnelLangToggle .funnel-lang-dropdown) {
  --intro-menu-gold: #d9bc7b;
  --intro-menu-ink: #e9edf2;
  --intro-menu-ease: cubic-bezier(.2, .72, .22, 1);
  box-sizing: border-box !important;
  color: var(--intro-menu-ink) !important;
  background: radial-gradient(ellipse at 100% 0%, rgba(217, 188, 123, .08), transparent 65%), rgba(7, 17, 29, .96) !important;
  border: 1px solid rgba(217, 188, 123, .3) !important;
  border-radius: 18px !important;
  box-shadow: 0 20px 56px rgba(0, 0, 0, .45), 0 1px 0 rgba(255, 255, 255, .06) inset !important;
  backdrop-filter: blur(22px) saturate(115%) !important;
  -webkit-backdrop-filter: blur(22px) saturate(115%) !important;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(217, 188, 123, .35) transparent;
}

/* A restrained surface sweep follows the panel, like light across the book's envelope. */
body:has(#intro.on) :is(#codex-stage-dialog, #funnelLangToggle .funnel-lang-dropdown)::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background: linear-gradient(115deg, transparent 32%, rgba(255, 237, 192, .035) 44%, rgba(255, 237, 192, .13) 49%, transparent 61%);
  background-size: 280% 100%;
  background-position: 110% 0;
  opacity: 0;
}

body:has(#intro.on) :is(#codex-stage-dialog[data-motion="open"], #funnelLangToggle .funnel-lang-dropdown.is-open)::before {
  animation: intro-menu-surface-reveal 520ms 70ms var(--intro-menu-ease) both;
}

@keyframes intro-menu-surface-reveal {
  0% { background-position: 110% 0; opacity: 0; }
  30% { opacity: .8; }
  100% { background-position: -65% 0; opacity: 0; }
}

body:has(#intro.on) #codex-stage-dialog {
  position: fixed !important;
  inset: auto !important;
  top: var(--intro-menu-top, 92px) !important;
  right: var(--intro-menu-right, 32px) !important;
  left: auto !important;
  bottom: auto !important;
  width: min(320px, calc(100vw - 32px)) !important;
  min-width: 0 !important;
  max-width: calc(100vw - 32px) !important;
  max-height: calc(100vh - var(--intro-menu-top, 92px) - 16px) !important;
  max-height: calc(100dvh - var(--intro-menu-top, 92px) - 16px) !important;
  margin: 0 !important;
  padding: 16px !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  z-index: 2147483647 !important;
  opacity: 0 !important;
  transform: perspective(900px) translateY(-14px) rotateX(-7deg) scale(.97) !important;
  clip-path: inset(0 0 58% 0 round 18px);
  transform-origin: top right;
  visibility: hidden !important;
  pointer-events: none !important;
  transition: opacity 240ms ease, transform 240ms var(--intro-menu-ease), clip-path 240ms var(--intro-menu-ease), visibility 0s linear 240ms !important;
}

body:has(#intro.on) #codex-stage-dialog:not([open]) { display: none !important; }
body:has(#intro.on) #codex-stage-dialog[open] { display: block !important; }

body:has(#intro.on) #codex-stage-dialog[open][data-motion="open"] {
  opacity: 1 !important;
  transform: perspective(900px) translateY(0) rotateX(0) scale(1) !important;
  clip-path: inset(0 round 18px);
  visibility: visible !important;
  pointer-events: auto !important;
  transition-duration: 460ms, 580ms, 580ms, 0s !important;
  transition-delay: 0s !important;
}

body:has(#intro.on) #codex-stage-dialog[open][data-motion="closing"] {
  transform: perspective(900px) translateY(-7px) rotateX(-3deg) scale(.985) !important;
  clip-path: inset(0 0 12% 0 round 18px);
  visibility: visible !important;
  transition-delay: 0s !important;
}

/* A nonmodal disclosure never dims or blurs the page behind it. */
body:has(#intro.on) #codex-stage-dialog::backdrop {
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* The stage list is the disclosure; keep its accessible name without a visible header. */
body:has(#intro.on) #codex-stage-dialog .codex-stage-heading {
  display: none !important;
}

body:has(#intro.on) #codex-stage-dialog .codex-stage-options {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  gap: 4px !important;
}

body:has(#intro.on) #codex-stage-dialog [data-mobile-station] {
  display: grid !important;
  grid-template-columns: 28px minmax(0, 1fr) 6px;
  align-items: center !important;
  justify-content: initial !important;
  gap: 12px;
  width: 100% !important;
  min-width: 0 !important;
  min-height: 48px !important;
  padding: 10px 12px !important;
  border: 1px solid transparent !important;
  border-radius: 11px !important;
  background: transparent !important;
  color: #c9d3de !important;
  font: 400 14px/1.45 "Plus Jakarta Sans", Inter, sans-serif !important;
  letter-spacing: 0 !important;
  text-align: start !important;
  white-space: normal !important;
  overflow-wrap: anywhere;
}

body:has(#intro.on) #codex-stage-dialog [data-mobile-station]::before {
  content: "0" attr(data-mobile-station);
  color: var(--intro-menu-gold);
  font: 500 12px/1.4 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .06em;
}

body:has(#intro.on) #codex-stage-dialog [data-mobile-station]::after {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: rgba(217, 188, 123, .24);
}

body:has(#intro.on) #codex-stage-dialog [data-mobile-station][aria-current="step"] {
  color: #fff4d9 !important;
  background: rgba(217, 188, 123, .09) !important;
  border-color: rgba(217, 188, 123, .24) !important;
}

body:has(#intro.on) #codex-stage-dialog [aria-current="step"]::after { background: var(--intro-menu-gold); }

body:has(#intro.on) #funnelLangToggle .funnel-lang-dropdown {
  display: flex !important;
  left: 0 !important;
  right: auto !important;
  top: calc(100% + 14px) !important;
  width: min(232px, calc(100vw - 32px)) !important;
  min-width: 0 !important;
  max-width: calc(100vw - 32px) !important;
  max-height: calc(100vh - 108px) !important;
  max-height: calc(100dvh - 108px - env(safe-area-inset-bottom, 0px)) !important;
  padding: 8px !important;
  gap: 3px !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  opacity: 0 !important;
  transform: perspective(900px) translateY(-14px) rotateX(-7deg) scale(.97) !important;
  clip-path: inset(0 0 58% 0 round 18px);
  transform-origin: top left;
  visibility: hidden !important;
  pointer-events: none !important;
  transition: opacity 240ms ease, transform 240ms var(--intro-menu-ease), clip-path 240ms var(--intro-menu-ease), visibility 0s linear 240ms !important;
}

body:has(#intro.on) #funnelLangToggle .funnel-lang-dropdown.is-open {
  opacity: 1 !important;
  transform: perspective(900px) translateY(0) rotateX(0) scale(1) !important;
  clip-path: inset(0 round 18px);
  visibility: visible !important;
  pointer-events: auto !important;
  transition-duration: 460ms, 580ms, 580ms, 0s !important;
  transition-delay: 0s !important;
}

body:has(#intro.on) #funnelLangToggle .funnel-lang-item {
  position: relative;
  min-height: 48px !important;
  padding: 11px 12px !important;
  gap: 12px !important;
  border: 1px solid transparent !important;
  border-radius: 11px !important;
  color: #c9d3de !important;
  font: 400 14px/1.45 "Plus Jakarta Sans", Inter, sans-serif !important;
}

body:has(#intro.on) #funnelLangToggle .funnel-lang-item .lang-name { color: inherit !important; }
body:has(#intro.on) #funnelLangToggle .funnel-lang-item .lang-flag { font-size: 20px !important; }

body:has(#intro.on) #funnelLangToggle .funnel-lang-item.is-active {
  background: rgba(217, 188, 123, .09) !important;
  border-color: rgba(217, 188, 123, .24) !important;
  color: #fff4d9 !important;
}

body:has(#intro.on) :is(#codex-stage-dialog [data-mobile-station], #funnelLangToggle .funnel-lang-item) {
  --intro-item-index: 0;
  opacity: 0 !important;
  transform: translateY(7px) !important;
  transition: opacity 140ms ease, transform 180ms var(--intro-menu-ease), background-color 160ms ease, border-color 160ms ease, color 160ms ease !important;
  transition-delay: 0s !important;
}

body:has(#intro.on) :is(#codex-stage-dialog [data-mobile-station], #funnelLangToggle .funnel-lang-item):nth-child(2) { --intro-item-index: 1; }
body:has(#intro.on) :is(#codex-stage-dialog [data-mobile-station], #funnelLangToggle .funnel-lang-item):nth-child(3) { --intro-item-index: 2; }
body:has(#intro.on) :is(#codex-stage-dialog [data-mobile-station], #funnelLangToggle .funnel-lang-item):nth-child(4) { --intro-item-index: 3; }
body:has(#intro.on) :is(#codex-stage-dialog [data-mobile-station], #funnelLangToggle .funnel-lang-item):nth-child(5) { --intro-item-index: 4; }
body:has(#intro.on) :is(#codex-stage-dialog [data-mobile-station], #funnelLangToggle .funnel-lang-item):nth-child(6) { --intro-item-index: 5; }
body:has(#intro.on) :is(#codex-stage-dialog [data-mobile-station], #funnelLangToggle .funnel-lang-item):nth-child(7) { --intro-item-index: 6; }
body:has(#intro.on) :is(#codex-stage-dialog [data-mobile-station], #funnelLangToggle .funnel-lang-item):nth-child(8) { --intro-item-index: 7; }

body:has(#intro.on) :is(#codex-stage-dialog[data-motion="open"] [data-mobile-station], #funnelLangToggle .funnel-lang-dropdown.is-open .funnel-lang-item) {
  opacity: 1 !important;
  transform: translateY(0) !important;
  transition-duration: 320ms, 320ms, 160ms, 160ms, 160ms !important;
  transition-delay: calc(70ms + var(--intro-item-index) * 26ms), calc(70ms + var(--intro-item-index) * 26ms), 0s, 0s, 0s !important;
}

@media (hover: hover) {
  body:has(#intro.on) :is(#codex-stage-dialog button, #funnelLangToggle .funnel-lang-item):hover {
    background: rgba(217, 188, 123, .1) !important;
    border-color: rgba(217, 188, 123, .28) !important;
    color: #fff4d9 !important;
  }
}

html:not([data-codex-input="pointer"]) body:has(#intro.on) :is(#codex-stage-dialog button, #funnelLangToggle .funnel-lang-item, #funnelLangBtn, #codex-stage-toggle):focus-visible {
  outline: 2px solid #e2c585 !important;
  outline-offset: 2px !important;
  box-shadow: none !important;
}

body:has(#intro.on) #codex-top-controls :is(#codex-stage-toggle, #funnelLangBtn)[aria-expanded="true"] {
  color: #e2c585 !important;
  border-color: rgba(217, 188, 123, .55) !important;
  background: rgba(217, 188, 123, .08) !important;
}

body:has(#intro.on) #codex-top-controls :is(#codex-stage-toggle, #funnelLangBtn)[aria-expanded="true"] svg { opacity: 1 !important; }

@media (max-width: 799px) {
  body:has(#intro.on) #codex-stage-dialog {
    top: var(--intro-menu-top, calc(68px + env(safe-area-inset-top, 0px))) !important;
    right: var(--intro-menu-right, max(16px, env(safe-area-inset-right, 0px))) !important;
    max-height: calc(100vh - var(--intro-menu-top, 68px) - 16px) !important;
    max-height: calc(100dvh - var(--intro-menu-top, 68px) - max(16px, env(safe-area-inset-bottom, 0px))) !important;
    padding: 12px !important;
    border-radius: 16px !important;
  }

  body:has(#intro.on) #funnelLangToggle .funnel-lang-dropdown { border-radius: 16px !important; }
}

@media (prefers-reduced-motion: reduce) {
  html body:has(#intro.on) :is(#codex-stage-dialog[open][data-motion], #codex-stage-dialog[open][data-motion] [data-mobile-station], #codex-stage-dialog .codex-stage-heading, #codex-stage-dialog button, #funnelLangToggle .funnel-lang-dropdown, #funnelLangToggle .funnel-lang-item) {
    transition: none !important;
    transition-duration: 0s !important;
    transition-delay: 0s !important;
    transform: none !important;
    animation: none !important;
  }
  body:has(#intro.on) :is(#codex-stage-dialog, #funnelLangToggle .funnel-lang-dropdown)::before { animation: none !important; }
}
