/* Emble speaks in the page, without a speech card. Travel and expression have
   separate owners: the presence moves; the orb gives one small conversational nod. */
.page-aura {position:fixed;inset:0;z-index:75;pointer-events:none;opacity:0;background:radial-gradient(ellipse 160px 55% at 0 25%,#8ebcff45,transparent),radial-gradient(ellipse 160px 55% at 100% 25%,#8ebcff45,transparent),linear-gradient(90deg,#8abaff22,transparent 7%,transparent 93%,#8abaff22);box-shadow:inset 0 0 32px 2px #79adff66;transition:opacity 450ms var(--ease);}
html:has(.hud.story-speaking:not(.compact)) body>.page-aura,html.voice-active body>.page-aura {opacity:1;}
.companion-preview {position:absolute;top:145px;left:50%;width:310px;max-width:calc(100vw - 40px);display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;pointer-events:none;opacity:0;transform:translate(-50%,-100px);transition:transform 480ms var(--shell-ease),opacity 220ms ease;}
.companion-preview .emble-orb {width:42px;height:42px;}
.speaking-caption {font-size:15px;line-height:1.4;font-weight:450;letter-spacing:-.2px;color:#263e48;text-shadow:0 1px 12px #fff,0 1px 4px #fff;}
.hud.story-speaking:not(.compact) .companion-preview {transform:translate(-50%,0);opacity:1;}
.hud.story-speaking:not(.compact) .companion-preview>.emble-orb {animation:companion-nod 1700ms ease-in-out 1;}
@keyframes companion-nod {0%,100%{transform:translateY(0)}25%{transform:translateY(-3px)}56%{transform:translateY(1px)}78%{transform:translateY(-1.5px)}}
.story-deck {top:232px;}
.story-deck.has-reply .story-caption {opacity:0;visibility:hidden;}
html.voice-active .story-deck {opacity:0;pointer-events:none;}
html.voice-active .story-controls {pointer-events:none;}

/* Release status occupies an open, softly lit scene. Native dialog semantics
   retain focus/Escape behavior, but there is no floating modal box. */
.release-dialog {inset:0;margin:0;width:100%;height:100%;max-width:none;max-height:none;padding:24px;border:0;border-radius:0;box-shadow:none;background:transparent;overflow:auto;text-align:center;}
.release-dialog::backdrop {background:transparent;backdrop-filter:none;}
.release-atmosphere {position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 25%,#f4f8f9f7 0%,#f1f6f2ee 30%,#f0f5f085 72%,#e4edf140),url(/assets/playground-botanical.png) center/cover;opacity:0;transition:opacity 350ms ease;}
.release-dialog .page-aura {z-index:-1;}
.release-dialog[open]:not(.is-leaving) .release-atmosphere,.release-dialog[open]:not(.is-leaving) .page-aura {opacity:1;}
.release-return {position:relative;z-index:2;display:flex;align-items:center;gap:9px;min-height:44px;margin:58px auto 0;padding:0 12px;font-size:14px;color:#344e5e;opacity:0;transition:opacity 200ms ease;}
.release-return img {width:16px;height:16px;}
.release-return:hover {text-decoration:underline;text-underline-offset:4px;}
.release-scene {width:min(380px,100%);margin:clamp(34px,7svh,70px) auto 40px;}
.companion-arrival {transform:translateY(-240px);opacity:0;transition:transform 600ms var(--ease),opacity 220ms ease;}
.companion-arrival .emble-orb {width:68px;height:68px;}
.release-words {opacity:0;transform:translateY(-8px);transition:opacity 240ms ease,transform 350ms var(--ease);}
.release-dialog[open]:not(.is-leaving) .companion-arrival {transform:translateY(0);opacity:1;}
.release-dialog[open]:not(.is-leaving) .release-words {opacity:1;transform:translateY(0);transition-delay:120ms;}
.release-dialog[open]:not(.is-leaving) .release-return {opacity:1;}
.release-dialog[open]:not(.is-leaving) .companion-arrival>.emble-orb {animation:companion-nod 1700ms 500ms ease-in-out 1;}
.release-dialog .eyebrow {margin:22px 0 12px;font-size:10px;letter-spacing:1.6px;color:#57707d;}
.release-dialog h2 {font-size:24px;line-height:1.25;font-weight:500;letter-spacing:-.6px;margin:0 0 14px;}
.release-dialog p:not(.eyebrow) {font-size:15px;line-height:1.55;color:#475c65;}
.release-dialog .field-note {margin-top:24px!important;color:#5b727d!important;font-size:12px!important;}
.release-dialog .pill,.release-dialog .primary-button {margin-top:20px;border-radius:13px;}
.release-dialog.is-leaving .companion-arrival {transition-duration:350ms;}
.release-dialog.is-leaving .release-words {transition-delay:0s;}
@starting-style {
  .release-dialog[open]:not(.is-leaving) .companion-arrival {transform:translateY(-240px);opacity:0;}
  .release-dialog[open]:not(.is-leaving) .release-words,.release-dialog[open]:not(.is-leaving) .release-return,.release-dialog[open]:not(.is-leaving) .release-atmosphere,.release-dialog[open]:not(.is-leaving) .page-aura {opacity:0;}
}

/* Opt-in speech uses short synchronized captions in the same open space. */
.voice-caption {top:148px;left:50%;right:auto;bottom:auto;width:min(340px,calc(100% - 40px));max-width:none;padding:0;background:none;border:0;border-radius:0;box-shadow:none;display:flex;flex-direction:column;align-items:center;gap:0;transform:translateX(-50%);text-align:center;}
.voice-caption::before {content:'';position:absolute;z-index:-1;inset:-56px -110px -65px;background:radial-gradient(ellipse,#f3f7f1fa 0%,#f3f7f1e6 38%,#f3f7f100 72%);pointer-events:none;}
.voice-arrival {transform:translateY(0);opacity:1;transition:transform 480ms var(--shell-ease),opacity 220ms ease;}
.voice-arrival .emble-orb {width:48px;height:48px;}
.voice-caption.is-speaking .emble-orb {animation:companion-nod 1700ms ease-in-out 1;}
.voice-caption p {font-size:16px;line-height:1.45;color:#293f49;margin:14px 0 0;min-height:47px;text-wrap:balance;}
.voice-caption #voice-availability {font-size:11px;line-height:1.4;margin-top:12px;color:#516c79;}
#voice-stop {display:flex;align-items:center;gap:6px;min-height:44px;margin-top:5px;font-size:12px;color:#3d5966;}
#voice-stop img {width:13px;height:13px;}
#voice-stop:hover {text-decoration:underline;text-underline-offset:4px;}
@starting-style {.voice-arrival {transform:translateY(-160px);opacity:0;}}
@media(min-width:1200px) and (max-height:800px) {.story-deck {left:calc(50% - 374px);top:380px;width:240px;}}
@media(min-width:900px) and (max-width:1199px) {.story-deck {top:230px;}}
@media(max-width:899px) {
  .companion-preview {top:201px;gap:8px;}
  .companion-preview .emble-orb {width:36px;height:36px;}
  .speaking-caption {font-size:14px;}
  .story-deck,.hud.story-playing+main .story-deck {top:auto;padding-top:76px;}
  .voice-caption {top:203px;}
  html:has(.hud.compact) .voice-caption {transform:translate(-50%,-113px);}
  .release-return {margin-top:48px;}
  .release-scene {margin-top:35px;}
  .companion-arrival .emble-orb {width:58px;height:58px;}
  .release-dialog h2 {font-size:22px;}
  .release-dialog {padding:20px 28px;}
}
html[data-motion="paused"] body>.page-aura,html[data-visible="false"] .page-aura,html[data-hero-visible="false"]:not(.voice-active) body>.page-aura {opacity:0;}
html[data-motion="paused"] .companion-preview>.emble-orb,html[data-motion="paused"] .voice-caption .emble-orb,.hud[data-story-suspended="true"] .companion-preview>.emble-orb {animation-play-state:paused;}
html[data-motion-preference="paused"] .companion-arrival>.emble-orb,html[data-visible="false"] .companion-arrival>.emble-orb {animation-play-state:paused;}
html[data-motion-preference="paused"] .companion-arrival,html[data-motion-preference="paused"] .voice-arrival {transition:none;}
@media(prefers-reduced-motion:reduce) {
  .companion-preview,.companion-arrival,.voice-arrival {transform:none!important;transition:opacity 120ms linear!important;}
  .companion-preview {transform:translateX(-50%)!important;}
  .companion-preview>.emble-orb,.companion-arrival>.emble-orb,.voice-caption .emble-orb {animation:none!important;}
  .release-words {transform:none!important;transition:opacity 120ms linear;transition-delay:0s!important;}
  .page-aura {transition:none;}
}
.release-return img {transform:rotate(180deg);}
.voice-caption {opacity:1;transition:opacity 240ms ease,transform 480ms var(--shell-ease);}
.voice-caption.is-leaving {opacity:0;pointer-events:none;}
.voice-caption.is-leaving .voice-arrival {transform:translateY(-160px);opacity:0;transition-duration:350ms;}
@media(prefers-reduced-motion:reduce) {.voice-caption.is-leaving .voice-arrival {transform:none!important;}}

.release-dialog code {
  font-size: 10px;
  display: block;
  overflow-wrap: anywhere;
  margin-top: 16px;
  line-height: 1.6;
}
/* Preference/visibility always outrank the active speaking state's specificity. */
html[data-motion="paused"] body>.page-aura,html[data-visible="false"] .page-aura,html[data-hero-visible="false"]:not(.voice-active) body>.page-aura {opacity:0!important;}
html[data-motion="paused"] .companion-preview>.emble-orb,html[data-motion="paused"] .voice-caption .emble-orb,.hud[data-story-suspended="true"] .companion-preview>.emble-orb,html[data-motion-preference="paused"] .companion-arrival>.emble-orb,html[data-visible="false"] .companion-arrival>.emble-orb {animation-play-state:paused!important;}
