/* V129 social cues: brief, in-world, non-blocking. */
.v129-social-whisper{margin:.7rem 0;padding:.62rem .78rem;border-left:2px solid rgba(239,172,145,.8);background:rgba(5,27,35,.72);backdrop-filter:blur(8px);color:#f7f0e7;font-size:clamp(.82rem,2.5vw,.98rem);line-height:1.46;max-width:46rem}.v129-social-whisper.compact{padding:.5rem .65rem;font-size:clamp(.78rem,2.35vw,.92rem);opacity:.96}.sato-response .v129-social-whisper{max-width:38rem}.d2-aoi-panel .v129-social-whisper{max-width:34rem}.v104-counter .v129-social-whisper{max-width:34rem}@media(max-width:700px){.v129-social-whisper{width:auto;max-width:100%;margin:.52rem 0;padding:.52rem .64rem;font-size:.82rem}.v129-social-whisper.compact{font-size:.78rem;line-height:1.38}}

.v129-social-whisper::before{content:attr(data-label);display:block;margin:0 0 .28rem;font-size:.63rem;line-height:1;letter-spacing:.16em;font-weight:800;text-transform:uppercase;color:#efac91;opacity:.92}.v129-social-whisper[data-label=""]::before{display:none}.sato-choice-feedback{margin:.35rem 0 .65rem;font-size:.9rem;line-height:1.45;opacity:.92}

/* Human interaction choices: same grammar across J1-J3, never floating over copy. */
.v129-human-choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.58rem;margin:.62rem 0 .78rem;max-width:46rem}
.v129-human-choice>button,.v129-human-choice .world-action{min-width:0;min-height:66px;border:1px solid rgba(242,222,205,.25);border-radius:18px;background:rgba(5,28,35,.86);color:#fff;padding:.72rem .78rem;text-align:left;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:.18rem;box-shadow:0 10px 30px rgba(0,0,0,.16);backdrop-filter:blur(10px)}
.v129-human-choice>button:hover,.v129-human-choice>button:focus-visible,.v129-human-choice .world-action:focus-visible{border-color:rgba(239,172,145,.78);outline:none}
.v129-human-choice b{display:block;font-size:.96rem;line-height:1.22}.v129-human-choice small{display:block;font-size:.72rem;line-height:1.32;opacity:.78;font-weight:500}
.v129-human-reaction{margin:.42rem 0 .68rem;padding:.52rem .66rem;border-radius:14px;background:rgba(5,28,35,.66);border:1px solid rgba(244,233,219,.13);color:#f6eee6;font-size:.84rem;line-height:1.43;max-width:42rem;backdrop-filter:blur(9px)}
.meal-farewell-choice{max-width:44rem}.meal-farewell-choice .v129-social-whisper{margin-bottom:.5rem}
.sato-human-choice{max-width:38rem}.breakfast-human-choice{max-width:38rem}.taxi-human-choice{max-width:38rem}.aoi-human-choice{max-width:38rem}
.v104-exit .yatai-farewell-choice{max-width:34rem}

/* Keep the social layer readable without turning it into another modal. */
@media(max-width:700px){
  .v129-human-choice{grid-template-columns:1fr;gap:.42rem;margin:.48rem 0 .64rem;width:100%;max-width:100%}
  .v129-human-choice>button,.v129-human-choice .world-action{min-height:58px;padding:.62rem .68rem;border-radius:15px}
  .v129-human-choice b{font-size:.9rem}.v129-human-choice small{font-size:.68rem}
  .v129-human-reaction{font-size:.78rem;line-height:1.38;padding:.46rem .58rem;max-width:100%}
}

/* Kushida threshold: make arrival feel like movement through one place, not a hard card jump. */
.d2-shrine-approach-scene.v129-shrine-threshold::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(1,10,15,.08),rgba(1,10,15,.18));z-index:1}
.v129-shrine-cross{position:absolute;z-index:8;left:50%;bottom:max(5.2rem,calc(env(safe-area-inset-bottom) + 4rem));transform:translateX(-50%);width:min(88vw,30rem);border:1px solid rgba(245,235,219,.28);border-radius:999px;background:rgba(5,28,35,.82);color:#fff;padding:.8rem 1rem;backdrop-filter:blur(11px);box-shadow:0 16px 42px rgba(0,0,0,.22)}
.v129-shrine-cross b,.v129-shrine-cross small{display:block}.v129-shrine-cross b{font-size:1rem}.v129-shrine-cross small{margin-top:.16rem;font-size:.7rem;opacity:.72;font-weight:500}
.chapter-day2.d2-shrineApproach .world-image{transition:transform 1.1s cubic-bezier(.2,.8,.2,1),filter .9s ease}
.chapter-day2.d2-shrineApproach:has(.v129-shrine-entered) .world-image{transform:scale(1.045) translateY(-.45%);filter:saturate(1.02) brightness(.98)}
.d2-shrine-approach-scene.v129-shrine-entered .v97-world-whisper{animation:v129ShrineSettle .75s ease both}
@keyframes v129ShrineSettle{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(max-width:700px){.v129-shrine-cross{bottom:max(4.7rem,calc(env(safe-area-inset-bottom) + 3.5rem));width:calc(100% - 2.1rem);padding:.72rem .82rem}}

/* V129.2 boot resilience: never present a silent blue screen. */
#boot-status{position:fixed;inset:0;z-index:99990;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.55rem;background:#061820;color:#f6efe4;text-align:center;font-family:system-ui,sans-serif;letter-spacing:.02em}
#boot-status .boot-mark{font-family:Georgia,serif;font-weight:700;letter-spacing:.18em;font-size:clamp(1.15rem,4vw,1.65rem)}
#boot-status small{opacity:.68;font-size:.82rem}
#boot-error>div{max-width:34rem}#boot-error strong{font-size:1.05rem}#boot-error span{display:inline-block;margin:.65rem 0;opacity:.82}#boot-error small{opacity:.62}
