/* Night Vendor Living World — Phase 2 v1.0
   Rare room behavior. Additive only. No sound, no layout shift, no interaction blocking. */

#nv-p2-atmosphere{
  position:fixed;
  inset:0;
  overflow:hidden;
  pointer-events:none;
  z-index:2;
  contain:strict;
}
#nv-p2-atmosphere span{
  position:absolute;
  display:block;
  pointer-events:none;
}
.nv-p2-halo{
  width:min(58vw,620px);
  aspect-ratio:1;
  left:var(--nv-p2-x,65%);
  top:var(--nv-p2-y,16%);
  transform:translate(-50%,-50%) scale(.92);
  border:1px solid rgba(185,216,248,.09);
  border-radius:50%;
  box-shadow:0 0 80px rgba(122,184,255,.035), inset 0 0 70px rgba(122,184,255,.025);
  opacity:0;
}
.nv-p2-trace{
  right:clamp(13px,3vw,34px);
  top:18vh;
  width:1px;
  height:min(26vh,260px);
  background:linear-gradient(180deg,transparent,rgba(217,198,162,.16),rgba(95,23,34,.16),transparent);
  box-shadow:0 0 18px rgba(122,184,255,.08);
  opacity:0;
}
.nv-p2-glass-trace{
  position:absolute;
  z-index:5;
  right:17%;
  bottom:24%;
  width:56px;
  height:72px;
  border:1px solid rgba(185,216,248,.11);
  border-radius:44% 46% 48% 42%;
  filter:blur(.2px);
  opacity:0;
  transform:rotate(-7deg);
  box-shadow:
    inset 8px -5px 18px rgba(185,216,248,.035),
    0 0 24px rgba(122,184,255,.035);
  pointer-events:none;
}
.nv-p2-desk-cursor{
  display:inline-block;
  width:1px;
  height:.9em;
  margin-left:8px;
  vertical-align:-.05em;
  background:rgba(217,198,162,.58);
  opacity:0;
  pointer-events:none;
}
.nv-p2-owner-corner{
  position:absolute;
  right:clamp(18px,4vw,42px);
  top:clamp(18px,4vw,38px);
  width:34px;
  height:22px;
  border-top:1px solid rgba(217,198,162,.20);
  border-right:1px solid rgba(217,198,162,.16);
  opacity:.32;
  pointer-events:none;
  transform:rotate(1deg);
}

/* Persistent consequences: visible only after relevant prior actions. */
body.nv-p2-bookshop-return .bookroom-visual .chair-back,
body.nv-p2-bookshop-return .bookroom-visual .chair-seat{
  transform:translateX(2px) rotate(-.18deg);
}
body.nv-p2-record-seen .nv-p2-glass-trace,
body.nv-p2-matchbook-seen .nv-p2-glass-trace{
  opacity:.20;
}
body.nv-p2-matchbook-seen .nv-p2-glass-trace{
  border-color:rgba(217,198,162,.14);
  box-shadow:inset 8px -5px 18px rgba(217,198,162,.035),0 0 26px rgba(217,198,162,.035);
}
body.nv-p2-first-body .cabinet-visual .drawer:nth-child(5){
  border-color:rgba(217,198,162,.20);
  box-shadow:inset 0 0 24px rgba(95,23,34,.045);
}
body.nv-p2-bell-opened .nv-p2-trace{
  opacity:.28;
}
body.nv-p2-deep-witness .nv-p2-trace{
  opacity:.52;
}

/* One rare room action. Every transform is visual only, never layout-affecting. */
body.nv-p2-idle-anomaly .nv-p2-halo,
body.nv-p2-returned-to-room .nv-p2-halo{
  animation:nv-p2-halo-wake 2.8s ease-out both;
}
body.nv-p2-idle-anomaly.nv-lw-home .fluor,
body.nv-p2-returned-to-room.nv-lw-home .fluor,
body.nv-p2-idle-anomaly.nv-lw-home .cinema-scene::before,
body.nv-p2-returned-to-room.nv-lw-home .cinema-scene::before{
  animation:nv-p2-light-correction 2.4s steps(1,end) both;
}
body.nv-p2-idle-anomaly.nv-lw-late-files .cabinet-visual .drawer:nth-child(2),
body.nv-p2-returned-to-room.nv-lw-late-files .cabinet-visual .drawer:nth-child(2){
  animation:nv-p2-drawer-breathe 2.6s ease-in-out both;
}
body.nv-p2-idle-anomaly.nv-lw-night-desk .nv-p2-desk-cursor,
body.nv-p2-returned-to-room.nv-lw-night-desk .nv-p2-desk-cursor{
  animation:nv-p2-cursor-answer 2.8s steps(1,end) both;
}
body.nv-p2-idle-anomaly.nv-lw-hidden-bookshop .bookroom-visual .chair-back,
body.nv-p2-idle-anomaly.nv-lw-hidden-bookshop .bookroom-visual .chair-seat,
body.nv-p2-returned-to-room.nv-lw-hidden-bookshop .bookroom-visual .chair-back,
body.nv-p2-returned-to-room.nv-lw-hidden-bookshop .bookroom-visual .chair-seat{
  animation:nv-p2-chair-correct 2.8s ease-in-out both;
}
body.nv-p2-idle-anomaly.nv-lw-fiction-shop .nv-p2-glass-trace,
body.nv-p2-returned-to-room.nv-lw-fiction-shop .nv-p2-glass-trace{
  animation:nv-p2-print-arrive 3s ease-in-out both;
}
body.nv-p2-idle-anomaly.nv-lw-widows-bell .nv-p2-halo,
body.nv-p2-returned-to-room.nv-lw-widows-bell .nv-p2-halo{
  animation:nv-p2-bell-miss 3.1s ease-in-out both;
}
body.nv-p2-idle-anomaly.nv-lw-late-file .nv-p2-trace,
body.nv-p2-idle-anomaly.nv-lw-night-desk-entry .nv-p2-trace,
body.nv-p2-returned-to-room.nv-lw-late-file .nv-p2-trace,
body.nv-p2-returned-to-room.nv-lw-night-desk-entry .nv-p2-trace{
  animation:nv-p2-thread-correct 2.8s ease-in-out both;
}

@keyframes nv-p2-halo-wake{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.92)}
  35%{opacity:.36}
  70%{opacity:.16;transform:translate(-50%,-50%) scale(1.025)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.045)}
}
@keyframes nv-p2-light-correction{
  0%,18%,35%,100%{opacity:1}
  20%{opacity:.38}
  22%{opacity:.86}
  31%{opacity:.52}
  33%{opacity:1}
}
@keyframes nv-p2-drawer-breathe{
  0%,100%{transform:translateX(0)}
  45%{transform:translateX(4px)}
  70%{transform:translateX(3px)}
}
@keyframes nv-p2-cursor-answer{
  0%,14%,28%,44%,60%,100%{opacity:0}
  7%,21%,36%,52%{opacity:.78}
}
@keyframes nv-p2-chair-correct{
  0%,100%{transform:translateX(2px) rotate(-.18deg)}
  45%{transform:translateX(5px) rotate(-.35deg)}
  70%{transform:translateX(4px) rotate(-.28deg)}
}
@keyframes nv-p2-print-arrive{
  0%{opacity:0;transform:rotate(-7deg) scale(.97)}
  38%{opacity:.28}
  70%{opacity:.17;transform:rotate(-7deg) scale(1.015)}
  100%{opacity:.08;transform:rotate(-7deg) scale(1)}
}
@keyframes nv-p2-bell-miss{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}
  30%{opacity:.34;transform:translate(-50%,-50%) scale(1)}
  44%{opacity:0}
  61%{opacity:.24;transform:translate(-50%,-50%) scale(1.035)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.06)}
}
@keyframes nv-p2-thread-correct{
  0%,100%{opacity:var(--nv-p2-thread-base,0);transform:translateY(0)}
  45%{opacity:.62;transform:translateY(5px)}
  70%{opacity:.34;transform:translateY(3px)}
}

@media (prefers-reduced-motion: reduce){
  body.nv-p2-idle-anomaly .nv-p2-halo,
  body.nv-p2-returned-to-room .nv-p2-halo,
  body.nv-p2-idle-anomaly .nv-p2-trace,
  body.nv-p2-returned-to-room .nv-p2-trace,
  body.nv-p2-idle-anomaly .nv-p2-glass-trace,
  body.nv-p2-returned-to-room .nv-p2-glass-trace,
  body.nv-p2-idle-anomaly .nv-p2-desk-cursor,
  body.nv-p2-returned-to-room .nv-p2-desk-cursor{
    animation:none!important;
  }
  body.nv-p2-idle-anomaly .nv-p2-halo,
  body.nv-p2-returned-to-room .nv-p2-halo{opacity:.12;}
}

@media (max-width:820px){
  .nv-p2-halo{width:88vw;}
  .nv-p2-glass-trace{right:10%;bottom:22%;width:46px;height:62px;}
  .nv-p2-owner-corner{width:28px;height:18px;}
}
