/* CALL RESIDENT / visual core only.
   This layer deliberately contains no conversation UI or simulated Resident state. */
.call-resident-core {
  --resident-core-rgb: 87, 221, 239;
  --resident-core-accent: #71f1ff;
  --resident-audio-level: 0;
  --resident-audio-scale: 1;
  --resident-audio-glow: 0px;
  position: fixed;
  z-index: 22;
  inset: clamp(4.8rem, 9vh, 6.5rem) 4vw calc(var(--white-floor-depth, 22%) + .55rem);
  display: block;
  overflow: hidden;
  pointer-events: none;
  perspective: 900px;
  isolation: isolate;
  opacity: 0;
  transition: opacity .45s ease;
}

.call-resident-core[hidden] { display: none; }
.call-resident-core.is-visible { opacity: 1; }

.call-resident-core::before {
  position: absolute;
  z-index: 0;
  inset: 2% clamp(4%, 8vw, 10%) 1%;
  content: "";
  clip-path: polygon(7% 0, 93% 0, 100% 100%, 0 100%);
  border-top: 1px solid rgba(var(--resident-core-rgb), .3);
  background:
    radial-gradient(ellipse at 50% 43%, rgba(var(--resident-core-rgb), .17), transparent 38%),
    linear-gradient(90deg, rgba(0, 6, 13, .32), rgba(1, 11, 20, .92) 13% 87%, rgba(0, 6, 13, .32));
  box-shadow: inset 0 0 7rem rgba(var(--resident-core-rgb), .08), 0 0 5rem rgba(1, 21, 34, .22);
  transition: background .4s ease;
}

.call-resident-core__space { position:absolute; z-index:1; inset:2% clamp(4%,8vw,10%) 1%; overflow:hidden; clip-path:polygon(7% 0,93% 0,100% 100%,0 100%); }
.call-resident-core__stars {
  position:absolute; inset:0; opacity:.68;
  background-image:
    radial-gradient(circle,rgba(192,250,255,.9) 0 1px,transparent 1.7px),
    radial-gradient(circle,rgba(var(--resident-core-rgb),.78) 0 1px,transparent 1.8px),
    radial-gradient(circle,rgba(167,119,255,.68) 0 1px,transparent 1.6px);
  background-position:0 0,2.8rem 1.7rem,5.3rem 3.1rem;
  background-size:7.8rem 6.7rem,10.9rem 8.6rem,14.2rem 11.4rem;
  mask-image:radial-gradient(ellipse at 50% 45%,#000 0 46%,rgba(0,0,0,.62) 69%,transparent 96%);
  animation:resident-space-drift 15s linear infinite;
}
.call-resident-core__halo {
  position:absolute; top:42%; left:50%; width:min(72vw,62rem); aspect-ratio:1; border-radius:50%;
  translate:-50% -50%; opacity:.62;
  background:repeating-radial-gradient(circle,transparent 0 4.2rem,rgba(var(--resident-core-rgb),.07) 4.25rem 4.32rem);
  filter:drop-shadow(0 0 1.2rem rgba(var(--resident-core-rgb),.24));
  animation:resident-halo-breathe 5.4s ease-in-out infinite alternate;
}
.call-resident-core__beam { position:absolute; top:45%; width:46%; height:1px; opacity:.5; background:linear-gradient(90deg,transparent,rgba(var(--resident-core-rgb),.78)); box-shadow:0 0 .7rem rgba(var(--resident-core-rgb),.55); }
.call-resident-core__beam--left { left:0; transform:rotate(-12deg); transform-origin:right; }
.call-resident-core__beam--right { right:0; transform:rotate(12deg); transform-origin:left; background:linear-gradient(90deg,rgba(var(--resident-core-rgb),.78),transparent); }

.call-resident-core__field {
  position: absolute;
  z-index: 1;
  left: 50%;
  top: 42%;
  width: min(58vw, 42rem);
  aspect-ratio: 1;
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(var(--resident-core-rgb), .12) 0 4%, transparent 5% 20%, rgba(var(--resident-core-rgb), .035) 31%, transparent 60%),
    repeating-radial-gradient(circle, transparent 0 2.5rem, rgba(var(--resident-core-rgb), .06) 2.55rem 2.6rem);
  filter: blur(.1px);
  transform: translate(-50%, -50%) rotateX(67deg) translateZ(-115px) scale(1.08);
  opacity: .64;
  transition: background .4s ease, opacity .4s ease;
}

.call-resident-core__object {
  position: absolute;
  z-index: 2;
  left: 50%;
  top: 42%;
  width: clamp(18rem, 36vmin, 29rem);
  aspect-ratio: 1;
  transform-style: preserve-3d;
  transform: translate(-50%, -50%) rotateX(-4deg) scale(var(--resident-audio-scale));
  transition: transform 70ms linear, filter 120ms linear;
  filter: drop-shadow(0 0 calc(.85rem + var(--resident-audio-glow)) rgba(var(--resident-core-rgb), .56));
}
.call-resident-core__object::before {
  position:absolute; inset:-12%; content:""; border-radius:50%;
  background:radial-gradient(circle,rgba(215,253,255,.16) 0 3%,rgba(var(--resident-core-rgb),.13) 10%,rgba(var(--resident-core-rgb),.045) 38%,transparent 68%);
  box-shadow:inset 0 0 3rem rgba(var(--resident-core-rgb),.12),0 0 4rem rgba(var(--resident-core-rgb),.18);
  transform:translateZ(-60px); animation:resident-core-breathe 3.8s ease-in-out infinite alternate;
}

.call-resident-core__plane {
  position: absolute;
  inset: 0;
  display: block;
  border-radius: 50%;
  transform-style: preserve-3d;
}

.call-resident-core__plane i {
  position: absolute;
  inset: 0;
  display: block;
  border: 1.5px solid rgba(var(--resident-core-rgb), .9);
  border-radius: 50%;
  box-shadow: inset 0 0 1.2rem rgba(var(--resident-core-rgb), .22), 0 0 1rem rgba(var(--resident-core-rgb), .4);
  background:
    conic-gradient(from 12deg, transparent 0 8%, rgba(var(--resident-core-rgb), .86) 8.4% 9%, transparent 9.4% 23%, rgba(var(--resident-core-rgb), .4) 23.4% 24%, transparent 24.4% 48%, rgba(var(--resident-core-rgb), .96) 48.4% 49.2%, transparent 49.6% 77%, rgba(var(--resident-core-rgb), .45) 77.4% 78.1%, transparent 78.5%);
  -webkit-mask: radial-gradient(circle, transparent 0 81%, #000 82% 100%);
  mask: radial-gradient(circle, transparent 0 81%, #000 82% 100%);
  opacity: .94;
  animation: resident-core-spin 15s linear infinite;
}

.call-resident-core__plane i::before,
.call-resident-core__plane i::after {
  position: absolute;
  content: "";
  width: .38rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--resident-core-accent);
  box-shadow: 0 0 .75rem var(--resident-core-accent);
}
.call-resident-core__plane i::before { top: 4%; left: 34%; }
.call-resident-core__plane i::after { right: 6%; bottom: 26%; }

.call-resident-core__plane--outer { transform: rotateX(67deg) rotateZ(-10deg) translateZ(-42px) scale(1.13); }
.call-resident-core__plane--outer i { animation-duration: 21s; }
.call-resident-core__plane--tilt-a { transform: rotateY(68deg) rotateZ(34deg) translateZ(25px) scale(.93); }
.call-resident-core__plane--tilt-a i { animation-direction: reverse; animation-duration: 13s; }
.call-resident-core__plane--tilt-b { transform: rotateX(58deg) rotateY(-31deg) rotateZ(74deg) translateZ(47px) scale(.74); }
.call-resident-core__plane--tilt-b i { animation-duration: 9s; }
.call-resident-core__plane--inner { transform: rotateX(-25deg) rotateY(18deg) translateZ(62px) scale(.47); }
.call-resident-core__plane--inner i { animation-direction: reverse; animation-duration: 6.5s; border-width: 2px; }

.call-resident-core__axis {
  position: absolute;
  top: 50%; left: 50%;
  width: 1px;
  height: 132%;
  background: linear-gradient(transparent, rgba(var(--resident-core-rgb), .5), transparent);
  transform: translate(-50%, -50%) rotateZ(34deg) rotateX(22deg) translateZ(-18px);
  box-shadow: 0 0 .45rem rgba(var(--resident-core-rgb), .5);
  opacity: .22;
}

.call-resident-core__nucleus {
  position: absolute;
  top: 50%; left: 50%;
  width: 18%;
  aspect-ratio: 1;
  border: 1px solid rgba(var(--resident-core-rgb), .9);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(220,253,255,.88) 0 4%, rgba(var(--resident-core-rgb), .68) 9%, rgba(var(--resident-core-rgb), .14) 38%, transparent 68%);
  box-shadow: 0 0 calc(.7rem + var(--resident-audio-glow)) rgba(var(--resident-core-rgb), calc(.38 + var(--resident-audio-level) * .38));
  transform: translate(-50%, -50%) translateZ(80px) scale(var(--resident-audio-scale));
  transition: transform 65ms linear, box-shadow 80ms linear, background .35s ease;
}

.call-resident-core__readout {
  position: absolute;
  z-index: 3;
  left: 50%;
  top: 9%;
  display: grid;
  gap: .2rem;
  margin: 0;
  padding: .65rem .75rem .55rem;
  border-block: 1px solid rgba(var(--resident-core-rgb), .42);
  color: var(--resident-core-accent);
  font: 500 .58rem/1.25 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  letter-spacing: .12em;
  text-align: center;
  text-shadow: 0 0 .7rem rgba(var(--resident-core-rgb), .5);
  transform: translateX(-50%);
}
.call-resident-core__readout span { opacity: .56; }
.call-resident-core__readout strong { font-size: .72rem; font-weight: 600; }
.call-resident-core__readout small { color: rgba(225, 252, 255, .65); font-size: .5rem; }

.call-resident-core__systems { position:absolute; z-index:3; top:37%; right:clamp(8%,13vw,16%); left:clamp(8%,13vw,16%); display:flex; justify-content:space-between; color:rgba(196,248,252,.72); font:500 clamp(.5rem,.7vw,.62rem)/1 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace; letter-spacing:.18em; text-shadow:0 0 .7rem rgba(var(--resident-core-rgb),.65); }
.call-resident-core__systems ul { display:grid; gap:1.35rem; width:clamp(7rem,13vw,11rem); margin:0; padding:0; list-style:none; }
.call-resident-core__systems ul:last-child { text-align:right; }
.call-resident-core__systems li { display:flex; align-items:center; gap:.5rem; }
.call-resident-core__systems li::before,.call-resident-core__systems li::after { flex:1; height:1px; content:""; background:linear-gradient(90deg,rgba(var(--resident-core-rgb),.78),transparent); box-shadow:0 0 .35rem rgba(var(--resident-core-rgb),.55); }
.call-resident-core__systems ul:first-child li::after,.call-resident-core__systems ul:last-child li::before { display:none; }
.call-resident-core__systems ul:last-child li { flex-direction:row-reverse; }
.call-resident-core__systems ul:last-child li::after { background:linear-gradient(90deg,transparent,rgba(var(--resident-core-rgb),.78)); }

.call-resident-core[data-state="standby"] .call-resident-core__field { opacity: .55; }
.call-resident-core[data-state="standby"] .call-resident-core__nucleus { opacity: .72; }

.call-resident-core[data-state="listening"] {
  --resident-core-rgb: 69, 244, 191;
  --resident-core-accent: #70ffd2;
}
.call-resident-core[data-state="listening"] .call-resident-core__field { opacity: .96; }
.call-resident-core[data-state="listening"] .call-resident-core__plane i { animation-duration: 7.5s; }
.call-resident-core[data-state="listening"] .call-resident-core__plane--tilt-a i { animation-duration: 5.5s; }

.call-resident-core[data-state="thinking"] {
  --resident-core-rgb: 176, 112, 255;
  --resident-core-accent: #c69aff;
}
.call-resident-core[data-state="thinking"] .call-resident-core__plane--outer i { animation-duration: 4.8s; }
.call-resident-core[data-state="thinking"] .call-resident-core__plane--tilt-a i { animation-duration: 3.1s; }
.call-resident-core[data-state="thinking"] .call-resident-core__plane--tilt-b i { animation-duration: 2.2s; }
.call-resident-core[data-state="thinking"] .call-resident-core__plane--inner i { animation-duration: 1.4s; }

.call-resident-core[data-state="speaking"] {
  --resident-core-rgb: 74, 188, 255;
  --resident-core-accent: #80d8ff;
}
.call-resident-core[data-state="speaking"] .call-resident-core__plane i { animation-duration: 8s; }
.call-resident-core[data-state="speaking"] .call-resident-core__plane--tilt-b i { animation-duration: 5s; }

.white-room.call-resident-open .room > :is(.door-wrap, .wall-fragment, .wall-message) { opacity: .08; transition: opacity .35s ease; }
.white-room.call-resident-open .journey-resident--white { z-index:24; }
.white-room .journey-resident--white [data-journey-follow] { position:fixed; right:max(1rem,env(safe-area-inset-right)); bottom:max(1rem,env(safe-area-inset-bottom)); z-index:48; }
.white-room.call-resident-open .journey-resident--white [data-journey-follow] { border-color:rgba(var(--resident-core-rgb),.7); background:rgba(2,12,19,.92); color:#c9fbff; box-shadow:0 0 1.4rem rgba(var(--resident-core-rgb),.2); }

/* CALL RESIDENT is one stage, not a projection with a panel on top.
   The conversation terminal replaces the former CORE / STANDBY scenery. */
.white-room.call-resident-open .call-resident-core > :not(.resident-terminal) { display:none; }
.white-room.call-resident-open .call-resident-core::before { opacity:0; }

/* The mode arbiter is the final visual authority. These guards also protect
   against a late animation frame from an effect that is being cleaned up. */
.white-room:not([data-white-room-mode="call-resident"]) .call-resident-core,
.white-room:is(.dance-mode,.event-mode) .call-resident-core {
  opacity: 0 !important;
  visibility: hidden;
}
.white-room[data-white-room-mode="dance"] .event-projection,
.white-room[data-white-room-mode="dance"] .call-resident-core,
.white-room[data-white-room-mode="build-your-digital-self"] .digital-stage,
.white-room[data-white-room-mode="build-your-digital-self"] .call-resident-core,
.white-room[data-white-room-mode="call-resident"] :is(.digital-stage,.event-projection,.white-depth-stage),
.white-room[data-white-room-mode="follow"] :is(.digital-stage,.event-projection,.white-depth-stage,.call-resident-core),
.white-room[data-white-room-mode="idle"] :is(.digital-stage,.event-projection,.white-depth-stage,.call-resident-core) {
  opacity: 0 !important;
  visibility: hidden;
  pointer-events: none;
}

@keyframes resident-core-spin { to { rotate: 1turn; } }
@keyframes resident-core-breathe { from { opacity:.52; scale:.94; } to { opacity:1; scale:1.04; } }
@keyframes resident-space-drift { to { background-position:0 -6.7rem,2.8rem -6.9rem,5.3rem -8.3rem; } }
@keyframes resident-halo-breathe { from { opacity:.38; scale:.94; } to { opacity:.72; scale:1.04; } }

@media (max-width: 760px) {
  .white-room .journey-resident--white [data-journey-follow] {
    right:max(.65rem,env(safe-area-inset-right));
    bottom:calc(max(.65rem,env(safe-area-inset-bottom)) + 5.5rem);
    z-index:60;
    width:max-content;
    max-width:calc(100vw - 1.3rem);
    white-space:nowrap;
  }
  .call-resident-core { inset: 4.4rem .2rem calc(var(--white-floor-depth, 22%) + .25rem); }
  .call-resident-core::before { inset:1% 1% 0; }
  .call-resident-core__space { inset:1% 1% 0; }
  .call-resident-core__field { top:34%; width:min(94vw,30rem); transform:translate(-50%,-50%) rotateY(67deg) translateZ(-95px) scale(1.2); opacity:.72; }
  .call-resident-core__object { left:50%; top:34%; width:clamp(19rem,84vw,25rem); transform:translate(-50%,-50%) rotateX(-8deg) rotateY(7deg) scale(var(--resident-audio-scale)); }
  .call-resident-core__readout { left:1.15rem; top:5.1rem; bottom:auto; transform:none; min-width:11.5rem; text-align:left; border-block:0; border-left:1px solid rgba(var(--resident-core-rgb),.65); }
  .call-resident-core__systems { top:61%; right:.85rem; left:.85rem; }
  .call-resident-core__systems ul { width:6.8rem; gap:.85rem; }
}

@media (prefers-reduced-motion: reduce) {
  .call-resident-core__plane i { animation: none !important; }
  .call-resident-core,
  .call-resident-core__object,
  .call-resident-core__nucleus { transition-duration: .01ms; }
}
