/* DOBOX ASIA — L'Été Bleu V125
   Continuity + visual quality layer.
   Purpose: world first, player-paced reading, camera continuity and tangible reactions.
   Loaded after the legacy stylesheet so new work is isolated instead of extending the old patch stack. */

:root{
  --v123-safe-top:max(74px,calc(env(safe-area-inset-top,0px) + 58px));
  --v123-safe-bottom:max(18px,calc(env(safe-area-inset-bottom,0px) + 12px));
  --v123-glass:rgba(5,20,28,.78);
  --v123-glass-soft:rgba(8,28,36,.63);
  --v123-line:rgba(238,229,207,.30);
  --v123-paper:#f6f0e3;
  --v123-ink:#233038;
}

/* ---------- COMMON: WORLD FIRST ---------- */
.experience .scene-action,
.experience .world-action,
.experience .d2-primary,
.experience .continue-meal,
.experience .v123-breakfast-eat,
.experience .v123-cash-pay{
  min-height:48px;
  touch-action:manipulation;
}

.v123-world-caption{
  position:absolute;
  z-index:24;
  left:clamp(18px,4vw,58px);
  right:auto;
  bottom:clamp(22px,6vh,70px);
  width:min(520px,calc(100vw - 36px));
  padding:14px 16px;
  border:1px solid var(--v123-line);
  border-radius:16px;
  background:linear-gradient(135deg,rgba(4,20,27,.82),rgba(4,20,27,.58));
  backdrop-filter:blur(13px) saturate(1.05);
  box-shadow:0 15px 48px rgba(0,0,0,.25);
  color:#fbf8ef;
}
.v123-world-caption p{margin:0;line-height:1.52;font-size:clamp(.92rem,1.2vw,1.04rem)}
.v123-world-caption small{opacity:.74;letter-spacing:.1em;text-transform:uppercase}
.v123-world-caption button{margin-top:12px}

/* Keep HUD readable but visually subordinate to the place. */
.experience .scene-meta{z-index:38!important}
.experience .top-actions,.experience .journey-hud,.experience .hud-top{z-index:40}

/* ---------- J1 TAXI: ONE CONTINUOUS PLACE ---------- */
.d1-ride .world-image,
.d1-ride .taxi-route-video{
  transform-origin:52% 54%;
  animation:v123TaxiBreath 8s ease-in-out infinite alternate;
}
@keyframes v123TaxiBreath{
  from{transform:scale(1.025) translate3d(-.35%,0,0)}
  to{transform:scale(1.045) translate3d(.35%,-.22%,0)}
}
.d1-ride .taxi-route-video{
  filter:saturate(.92) contrast(1.02) brightness(.90);
}
.d1-ride .v123-taxi-continuous:before{
  content:"";
  position:absolute;inset:0;z-index:8;pointer-events:none;
  background:
    linear-gradient(100deg,transparent 0 48%,rgba(255,248,226,.09) 52%,transparent 57%),
    linear-gradient(180deg,rgba(0,0,0,.04),transparent 45%,rgba(0,0,0,.22));
  background-size:220% 100%,100% 100%;
  animation:v123GlassSweep 9s linear infinite;
  mix-blend-mode:screen;
}
@keyframes v123GlassSweep{from{background-position:110% 0,0 0}to{background-position:-105% 0,0 0}}

.v123-route-glance{
  position:absolute;z-index:22;left:50%;top:calc(var(--v123-safe-top) + 12px);transform:translateX(-50%);
  display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:999px;
  background:rgba(3,17,23,.58);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.14);
  color:#f7f1e5;font-size:.72rem;white-space:nowrap;
}
.v123-route-glance i{width:18px;height:1px;background:rgba(255,255,255,.32)}
.v123-route-glance span{opacity:.72}.v123-route-glance b{font-weight:650}
.v123-optional-cue{
  position:absolute;z-index:25;left:clamp(18px,4vw,58px);bottom:clamp(116px,17vh,184px);
  width:min(390px,calc(100vw - 36px));color:#f7f1e5;
  border:1px solid rgba(255,255,255,.16);border-radius:14px;background:rgba(4,20,27,.66);backdrop-filter:blur(12px);
}
.v123-optional-cue summary{padding:10px 12px;cursor:pointer;font-size:.84rem}
.v123-optional-cue p{padding:0 12px 8px;margin:0;line-height:1.45;font-size:.82rem}
.v123-optional-cue a{display:inline-block;padding:0 12px 12px;color:inherit;opacity:.78;font-size:.75rem}

.v123-meter,.v123-d3-taxi-meter{
  position:absolute;z-index:28;right:clamp(18px,4vw,58px);bottom:clamp(24px,6vh,72px);
  width:min(300px,calc(100vw - 36px));padding:14px 16px;border-radius:16px;
  border:1px solid rgba(243,220,166,.28);background:rgba(4,17,22,.82);backdrop-filter:blur(14px);color:#fff8e8;
  box-shadow:0 18px 55px rgba(0,0,0,.35);
}
.v123-meter strong,.v123-d3-taxi-meter b{display:block;font-size:clamp(1.8rem,4vw,2.5rem);font-variant-numeric:tabular-nums;letter-spacing:.03em}

.v123-taxi-wallet{
  position:absolute;z-index:45;left:50%;bottom:var(--v123-safe-bottom);transform:translateX(-50%);
  width:min(430px,calc(100vw - 30px));padding:15px;border-radius:20px;
  background:linear-gradient(165deg,rgba(20,34,37,.96),rgba(7,19,24,.96));
  border:1px solid rgba(255,255,255,.14);box-shadow:0 22px 70px rgba(0,0,0,.48);color:#faf6eb;
  animation:v123WalletUp .36s cubic-bezier(.2,.9,.2,1) both;
}
@keyframes v123WalletUp{from{opacity:0;transform:translate(-50%,28px) scale(.98)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
.v123-wallet-head,.v123-fare-row{display:flex;justify-content:space-between;align-items:center;gap:12px}
.v123-wallet-head{padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.1)}
.v123-wallet-head small{opacity:.62;letter-spacing:.12em}.v123-wallet-head b{font-size:1.05rem}
.v123-fare-row{margin:12px 0}.v123-fare-row strong{font-size:1.55rem}
.v123-cash-stack{position:relative;height:78px;margin:6px 0 12px}
.v123-cash-stack .note,.v123-cash-stack .coin{position:absolute;display:grid;place-items:center;font-style:normal;font-weight:700;color:#344238;box-shadow:0 7px 18px rgba(0,0,0,.18)}
.v123-cash-stack .note{width:112px;height:48px;border-radius:5px;background:#dce4cf;border:1px solid #9eac93}
.v123-cash-stack .n1{left:18%;top:15px;transform:rotate(-6deg)}
.v123-cash-stack .n2{left:35%;top:19px;transform:rotate(5deg)}
.v123-cash-stack .coin{width:34px;height:34px;border-radius:50%;background:#ded2a8;border:1px solid #ad9b67;font-size:.66rem}
.v123-cash-stack .c1{right:24%;top:5px}.v123-cash-stack .c2{right:14%;top:31px}.v123-cash-stack .c3{right:34%;top:42px}
.v123-cash-pay{width:100%;border-radius:13px;border:1px solid rgba(255,255,255,.16);background:#f4eddf;color:#18272c;font-weight:750}

.v123-taxi-receipt,.v123-d3-taxi-receipt{
  position:absolute;z-index:44;left:50%;bottom:clamp(24px,7vh,76px);transform:translateX(-50%);
  width:min(330px,calc(100vw - 36px));padding:20px 18px 18px;color:var(--v123-ink);background:var(--v123-paper);
  border-radius:4px;box-shadow:0 20px 65px rgba(0,0,0,.43);text-align:center;
  clip-path:polygon(0 0,5% 2%,10% 0,15% 2%,20% 0,25% 2%,30% 0,35% 2%,40% 0,45% 2%,50% 0,55% 2%,60% 0,65% 2%,70% 0,75% 2%,80% 0,85% 2%,90% 0,95% 2%,100% 0,100% 100%,0 100%);
  animation:v123ReceiptPrint .62s cubic-bezier(.18,.88,.25,1) both;
}
@keyframes v123ReceiptPrint{from{opacity:.25;clip-path:inset(0 0 100% 0);transform:translate(-50%,18px)}to{opacity:1;clip-path:inset(0);transform:translate(-50%,0)}}
.v123-taxi-receipt small,.v123-d3-taxi-receipt small{display:block;letter-spacing:.12em;opacity:.58}
.v123-taxi-receipt b,.v123-d3-taxi-receipt b{display:block;margin:8px 0;font-size:1.08rem}
.v123-taxi-receipt span,.v123-d3-taxi-receipt span{display:block}.v123-taxi-receipt em{display:block;margin-top:10px;font-size:.75rem;opacity:.66}
.v123-expense-float{animation:v123ExpenseFly .9s .25s ease-out both}
@keyframes v123ExpenseFly{0%{opacity:0;transform:translateY(10px)}30%{opacity:1}100%{opacity:.75;transform:translateY(-5px)}}

/* ---------- J1 DINNER: LEARNING INSIDE THE MEAL ---------- */
.d1-meal.meal-stage-2 .world-image,
.d1-meal.meal-stage-3 .world-image{transform:scale(1.035);filter:brightness(.78) saturate(.92)}
.meal-learning,.chopstick-lesson{
  position:absolute!important;z-index:30!important;left:clamp(18px,4vw,56px)!important;right:auto!important;bottom:clamp(20px,5vh,54px)!important;
  width:min(500px,calc(100vw - 36px))!important;max-height:min(70vh,610px)!important;overflow:auto!important;
  border-radius:18px!important;background:rgba(5,21,27,.82)!important;backdrop-filter:blur(15px)!important;border:1px solid rgba(255,255,255,.17)!important;color:#fbf7ee!important;
  box-shadow:0 18px 60px rgba(0,0,0,.32)!important;padding:16px!important;
}
.meal-learning h3,.chopstick-lesson h3{font-size:clamp(1.35rem,3vw,2rem)!important;margin:.25rem 0 .45rem!important}
.meal-learning p,.chopstick-lesson p{line-height:1.45!important;margin:.35rem 0 .65rem!important}
.meal-learning .kana-beat{margin:10px 0!important}
.meal-learning .pronounce-row{gap:8px!important;display:flex!important;flex-wrap:wrap!important}
.meal-learning .pronounce-row button{min-height:42px!important}
.chopstick-lesson .chop-counter{margin:8px 0!important;font-size:.84rem!important}

/* ---------- J2 BREAKFAST: ONE CAMERA, OBJECT-BASED DISCOVERY ---------- */
.d2-breakfast .world-image{transition:transform .72s cubic-bezier(.2,.75,.2,1),filter .5s ease,object-position .72s ease;transform:scale(1.018)}
.d2-breakfast.breakfast-focus-fish .world-image{transform:scale(1.12) translate3d(7%,-2%,0);filter:brightness(.74) saturate(.92)}
.d2-breakfast.breakfast-focus-rice .world-image{transform:scale(1.12) translate3d(-3%,-3%,0);filter:brightness(.74) saturate(.92)}
.d2-breakfast.breakfast-focus-miso .world-image{transform:scale(1.12) translate3d(-8%,1%,0);filter:brightness(.74) saturate(.92)}
.v123-breakfast-steam{position:absolute;z-index:9;inset:0;pointer-events:none;overflow:hidden}
.v123-breakfast-steam i{position:absolute;bottom:33%;left:52%;width:13px;height:78px;border-radius:50%;border-left:2px solid rgba(255,255,255,.22);filter:blur(1px);opacity:0;animation:v123Steam 5.8s ease-in infinite}
.v123-breakfast-steam i:nth-child(2){left:56%;animation-delay:1.8s;height:66px}.v123-breakfast-steam i:nth-child(3){left:49%;animation-delay:3.7s;height:54px}
@keyframes v123Steam{0%{opacity:0;transform:translateY(12px) translateX(0) scale(.8)}20%{opacity:.45}70%{opacity:.15}100%{opacity:0;transform:translateY(-60px) translateX(16px) scale(1.3)}}
.v123-breakfast-world{position:absolute;inset:0;z-index:18}
.v123-breakfast-sato{left:clamp(18px,4vw,50px);bottom:auto;top:calc(var(--v123-safe-top) + 18px);width:min(440px,calc(100vw - 36px))}
.v123-breakfast-world .v97-breakfast-hotspot{z-index:24;box-shadow:0 0 0 1px rgba(255,255,255,.36),0 0 0 7px rgba(255,255,255,.06);transition:transform .2s ease,opacity .2s ease}
.v123-breakfast-world .v97-breakfast-hotspot:hover,.v123-breakfast-world .v97-breakfast-hotspot:focus-visible{transform:scale(1.08)}
.v123-breakfast-world .v97-breakfast-hotspot.seen{opacity:.68}.v123-breakfast-world .v97-breakfast-hotspot.seen:after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;font-size:.76rem}
.v123-breakfast-eat{position:absolute;z-index:30;right:clamp(18px,4vw,50px);bottom:var(--v123-safe-bottom);padding:0 18px;border-radius:999px;border:1px solid rgba(255,255,255,.25);background:rgba(6,22,27,.82);backdrop-filter:blur(10px);color:#fff;font-weight:700}
.v123-object-focus{
  position:absolute!important;z-index:34!important;left:clamp(18px,4vw,54px)!important;bottom:clamp(20px,5vh,56px)!important;right:auto!important;
  width:min(460px,calc(100vw - 36px))!important;max-height:44vh!important;overflow:auto!important;padding:15px 16px!important;
  border-radius:16px!important;border:1px solid rgba(255,255,255,.18)!important;background:rgba(5,20,27,.78)!important;backdrop-filter:blur(14px)!important;color:#fbf7ef!important;box-shadow:0 18px 58px rgba(0,0,0,.34)!important;
}
.v123-object-focus h2{font-size:clamp(1.15rem,2.7vw,1.65rem)!important;margin:.2rem 0 .5rem!important}.v123-object-focus p{line-height:1.48!important;margin:.3rem 0!important}
.v123-context-detail{margin-top:8px;border-top:1px solid rgba(255,255,255,.12);padding-top:8px}.v123-context-detail summary{cursor:pointer;font-size:.8rem;opacity:.8}
.v123-before-bite .v123-language-moment{position:absolute;z-index:33;right:clamp(18px,4vw,54px);bottom:clamp(22px,6vh,64px);width:min(360px,calc(100vw - 36px));padding:14px;border-radius:16px;background:rgba(5,20,27,.78);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.17);color:#fff}

/* ---------- J2 SHRINE: BODY/CAMERA, NOT A COURSE CARD ---------- */
.v123-shrine-world .world-image{transition:transform .7s cubic-bezier(.2,.75,.2,1),filter .5s ease}
.v123-ritual-hud{
  position:absolute!important;z-index:30!important;left:clamp(16px,3.2vw,48px)!important;right:auto!important;bottom:clamp(18px,5vh,48px)!important;top:auto!important;
  width:min(470px,calc(100vw - 32px))!important;max-height:46vh!important;overflow:auto!important;
  padding:13px 14px!important;border-radius:16px!important;background:rgba(5,20,26,.74)!important;backdrop-filter:blur(14px)!important;border:1px solid rgba(255,255,255,.16)!important;color:#faf7ef!important;box-shadow:0 16px 56px rgba(0,0,0,.3)!important;
}
.v123-ritual-hud h2,.v123-ritual-hud h3{font-size:clamp(1.05rem,2.5vw,1.5rem)!important;margin:.22rem 0 .45rem!important}.v123-ritual-hud p{line-height:1.43!important;margin:.3rem 0!important}
.v123-ritual-hud .d2-primary{width:100%;margin-top:10px;border-radius:12px}
.v123-shrine-world .v86-shrine-whisper{max-width:min(440px,calc(100vw - 36px));background:rgba(4,19,24,.62)!important;backdrop-filter:blur(12px)!important}
.v123-shrine-world .v86-shrine-discovery{max-width:min(430px,calc(100vw - 36px))!important;max-height:50vh!important;overflow:auto!important;background:rgba(5,20,26,.79)!important;backdrop-filter:blur(15px)!important}
.v123-shrine-world .v86-shrine-hotspot span{opacity:0;transform:translateY(4px);transition:.2s ease}.v123-shrine-world .v86-shrine-hotspot:hover span,.v123-shrine-world .v86-shrine-hotspot:focus-visible span{opacity:1;transform:none}

/* ---------- J3 TAXI / COOKING ---------- */
.v123-night-taxi .v104-bg,.v123-night-taxi .d3-scene-bg,.v123-night-taxi .scene-bg,.v123-night-taxi img.scene-image{animation:v123NightTaxi 7s ease-in-out infinite alternate}
@keyframes v123NightTaxi{from{transform:scale(1.025) translateX(-.2%)}to{transform:scale(1.045) translateX(.35%)}}
.v123-moving-reflections{opacity:.72}
.v123-night-road-motion{position:absolute;inset:0;z-index:7;overflow:hidden;pointer-events:none;mix-blend-mode:screen}
.v123-night-road-motion i{position:absolute;top:8%;bottom:14%;width:7vw;min-width:44px;max-width:92px;background:linear-gradient(90deg,transparent,rgba(255,229,176,.13),transparent);filter:blur(10px);transform:skewX(-9deg);animation:v123RoadLight 6.4s linear infinite}
.v123-night-road-motion i:nth-child(2){animation-delay:2.2s;opacity:.6}.v123-night-road-motion i:nth-child(3){animation-delay:4.5s;opacity:.4}
@keyframes v123RoadLight{from{left:108%}to{left:-18%}}
.v123-cooking-observation{position:absolute;z-index:30;left:clamp(16px,4vw,50px);bottom:clamp(18px,5vh,50px);width:min(420px,calc(100vw - 32px));padding:12px 14px;border-radius:15px;background:rgba(7,22,27,.72);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.15);color:#fff}
.v123-cooking-observation p{margin:.3rem 0 0;line-height:1.45}.v123-cooking-live:after{content:"";position:absolute;z-index:8;left:48%;bottom:24%;width:25px;height:100px;border-left:2px solid rgba(255,255,255,.18);border-radius:50%;filter:blur(2px);animation:v123Steam 5.2s ease-in infinite;pointer-events:none}

/* ---------- MOBILE QUALITY GATE ---------- */
@media (max-width:760px){
  :root{--v123-safe-top:max(70px,calc(env(safe-area-inset-top,0px) + 54px))}
  .experience .scene-meta{top:var(--v123-safe-top)!important;left:14px!important;right:auto!important;max-width:56vw!important;transform:none!important;font-size:.68rem!important}
  .v123-world-caption{left:14px;right:14px;bottom:max(14px,var(--v123-safe-bottom));width:auto;padding:12px 13px;border-radius:14px}
  .v123-route-glance{top:calc(var(--v123-safe-top) + 34px);max-width:calc(100vw - 28px);overflow:hidden;font-size:.62rem;gap:5px}.v123-route-glance i{width:8px}
  .v123-optional-cue{left:14px;bottom:94px;width:calc(100vw - 28px)}
  .v123-meter,.v123-d3-taxi-meter{left:14px;right:14px;bottom:14px;width:auto}
  .v123-taxi-wallet{width:calc(100vw - 20px);bottom:max(10px,var(--v123-safe-bottom));padding:13px}.v123-cash-stack{height:62px}.v123-cash-stack .note{width:94px;height:41px}.v123-cash-stack .coin{width:30px;height:30px}
  .v123-taxi-receipt,.v123-d3-taxi-receipt{bottom:max(15px,var(--v123-safe-bottom));width:calc(100vw - 34px);max-width:320px}
  .meal-learning,.chopstick-lesson{left:12px!important;right:12px!important;bottom:max(12px,var(--v123-safe-bottom))!important;width:auto!important;max-height:58vh!important;padding:13px!important}
  .meal-learning .pronounce-row button{flex:1 1 44%!important;font-size:.78rem!important}.meal-learning audio{width:100%!important}
  .v123-breakfast-sato{left:12px;right:12px;top:calc(var(--v123-safe-top) + 26px);width:auto}.v123-breakfast-eat{right:12px;bottom:max(12px,var(--v123-safe-bottom));max-width:62vw}
  .v123-object-focus{left:12px!important;right:12px!important;bottom:max(12px,var(--v123-safe-bottom))!important;width:auto!important;max-height:38vh!important;padding:13px!important}
  .d2-breakfast.breakfast-focus-fish .world-image{transform:scale(1.16) translate3d(9%,-1%,0)}
  .d2-breakfast.breakfast-focus-rice .world-image{transform:scale(1.16) translate3d(-3%,-2%,0)}
  .d2-breakfast.breakfast-focus-miso .world-image{transform:scale(1.16) translate3d(-10%,1%,0)}
  .v123-before-bite .v123-language-moment{left:12px;right:12px;bottom:max(12px,var(--v123-safe-bottom));width:auto}
  .v123-ritual-hud{left:12px!important;right:12px!important;bottom:max(12px,var(--v123-safe-bottom))!important;width:auto!important;max-height:42vh!important;padding:12px!important}
  .v123-shrine-world .v86-shrine-whisper{left:12px!important;right:12px!important;max-width:none!important}.v123-shrine-world .v86-shrine-discovery{left:12px!important;right:12px!important;max-width:none!important;max-height:42vh!important}
  .v123-cooking-observation{left:12px;right:12px;bottom:max(12px,var(--v123-safe-bottom));width:auto}
}

@media (prefers-reduced-motion:reduce){
  .d1-ride .world-image,.d1-ride .taxi-route-video,.v123-taxi-continuous:before,.v123-breakfast-steam i,.v123-night-taxi .v104-bg,.v123-night-taxi .d3-scene-bg,.v123-night-road-motion i,.v123-cooking-live:after{animation:none!important}
}

/* ---------- J2 KONBINI: THE CASHIER CAN MOVE; THE PLAYER CONTROLS DECISIONS ---------- */
.v123-konbini-checkout .v73-scan-whisper{background:rgba(5,20,26,.66)!important;backdrop-filter:blur(11px)!important}
.v123-konbini-checkout .v73-payment-dock{transition:transform .32s ease,opacity .32s ease}
.v123-konbini-checkout.pay-cash .v73-payment-dock:after{
  content:"¥";position:absolute;right:18%;bottom:18%;width:38px;height:38px;display:grid;place-items:center;border-radius:50%;
  background:#d8c88f;color:#4d4631;font-weight:800;box-shadow:0 8px 20px rgba(0,0,0,.25);animation:v123CashReady 1.7s ease-in-out infinite alternate;pointer-events:none
}
@keyframes v123CashReady{from{transform:translateY(2px) rotate(-5deg)}to{transform:translateY(-4px) rotate(5deg)}}
.v123-konbini-checkout.pay-ic .v73-payment-dock:after{
  content:"▣";position:absolute;right:18%;bottom:18%;font-size:1.6rem;opacity:.65;animation:v123CardReady 1.5s ease-in-out infinite alternate;pointer-events:none
}
@keyframes v123CardReady{from{transform:translateY(1px)}to{transform:translateY(-4px)}}
.v123-konbini-receipt .v73-receipt-object{animation:v123ReceiptPrint .6s cubic-bezier(.18,.88,.25,1) both}
.v123-konbini-receipt .v73-receipt-store{min-height:48px}

/* ---------- J2 AOI: A PERSON IN THE VERANDA, NOT A FULL-SCREEN LESSON ---------- */
.d2-aoi.v102-aoi-scene .world-image,.d2-aoi .world-image{transform:scale(1.02);transform-origin:56% 48%}
.v102-aoi-panel{
  position:absolute!important;z-index:28!important;left:clamp(18px,4vw,54px)!important;right:auto!important;bottom:clamp(20px,5vh,56px)!important;top:auto!important;
  width:min(500px,calc(100vw - 36px))!important;max-height:58vh!important;overflow:auto!important;padding:14px 16px!important;border-radius:17px!important;
  background:rgba(5,20,27,.72)!important;backdrop-filter:blur(14px)!important;border:1px solid rgba(255,255,255,.16)!important;color:#fbf8f0!important;box-shadow:0 17px 55px rgba(0,0,0,.28)!important
}
.v102-aoi-panel .d2-aoi-beat{font-size:.94rem!important;line-height:1.45!important;margin:.3rem 0 .55rem!important}.v102-aoi-panel .d2-aoi-speech{padding:9px 11px!important;margin:7px 0!important;background:rgba(255,255,255,.07)!important;border-radius:12px!important}.v102-aoi-panel .d2-primary{min-height:46px!important}
@media(max-width:760px){.v102-aoi-panel{left:12px!important;right:12px!important;bottom:max(12px,var(--v123-safe-bottom))!important;width:auto!important;max-height:51vh!important;padding:12px!important}}

/* ---------- DIRECT FIXES FROM THE MOBILE WALK-THROUGH ---------- */
/* Airport: the persistent clock must never sit inside the direction signs. */
.chapter-day1.d1-airport .scene-meta{top:31vh!important;left:clamp(14px,4vw,54px)!important;right:auto!important;transform:none!important;background:rgba(4,20,27,.48);padding:6px 9px;border-radius:999px;backdrop-filter:blur(8px)}

/* Garden: a detail belongs to the object the player touched; it is not the whole screen. */
.chapter-day1.d1-garden .garden-fact{
  left:clamp(16px,4vw,54px)!important;right:auto!important;bottom:clamp(82px,12vh,126px)!important;width:min(390px,calc(100vw - 32px))!important;
  padding:12px 14px!important;max-height:35vh!important;overflow:auto!important;border-radius:15px!important;background:rgba(5,21,27,.72)!important;backdrop-filter:blur(13px)!important;border:1px solid rgba(255,255,255,.16)!important
}
.chapter-day1.d1-garden .garden-fact p{font-size:clamp(.88rem,1.7vw,1rem)!important;line-height:1.44!important;margin:.35rem 0!important}.chapter-day1.d1-garden .garden-fact b{font-size:.72rem!important;letter-spacing:.12em!important}.chapter-day1.d1-garden .garden-exit{min-height:50px!important;max-width:330px!important}

/* End-of-day memory: three images remain a strip; they never fall over the checklist. */
.trial-journal-stage .memory-strip{display:grid!important;grid-template-columns:1.35fr .72fr 1.15fr!important;gap:7px!important;overflow:hidden!important;max-height:255px!important;margin:16px 0!important}
.trial-journal-stage .memory-strip img{position:static!important;width:100%!important;height:clamp(135px,25vw,245px)!important;object-fit:cover!important;min-width:0!important;transform:none!important;margin:0!important}
.trial-journal-stage .end-day-checks{position:relative!important;z-index:2!important;margin-top:12px!important}

/* Day 0 paper objects remain readable and the menu does not sit over the letter seal. */
.chapter-day0:has(.letter-focus) .journey-menu-trigger{top:max(88px,calc(env(safe-area-inset-top,0px) + 74px))!important;right:12px!important;width:50px!important;height:50px!important}

@media(max-width:760px){
  .chapter-day1.d1-airport .scene-meta{top:31svh!important;max-width:none!important;font-size:.64rem!important}
  .chapter-day1.d1-garden .garden-fact{left:12px!important;right:12px!important;bottom:78px!important;width:auto!important;max-height:27svh!important}
  .chapter-day1.d1-garden .garden-exit{left:12px!important;right:12px!important;width:auto!important;max-width:none!important;bottom:max(10px,var(--v123-safe-bottom))!important}
  .trial-journal-stage .memory-strip{max-height:190px!important}.trial-journal-stage .memory-strip img{height:170px!important}
}
.v123-chopstick-cue{max-height:min(48vh,430px)!important}.v123-chopstick-cue .chopsticks-demo{height:min(150px,18vh)!important;margin:8px 0!important}.v123-chopstick-cue details{margin-top:7px!important}.v123-chopstick-cue .continue-meal{margin-top:9px!important}
@media(max-width:760px){.v123-chopstick-cue{max-height:45svh!important}.v123-chopstick-cue .chopsticks-demo{height:120px!important}}


/* ========================================================================== */
/* V124 — WALK-THROUGH FIXES + CONTINUITY GATE                              */
/* ========================================================================== */

/* The V123 quality sheet was shipped but not linked in index.html. V124 is
   explicitly loaded after the legacy sheet. The rules below also fix issues
   revealed by the real Android walkthrough. */

/* ---------- KONBINI ENTRY: collapsed help is a small cue, not a blank card ---------- */
.chapter-day2.d2-konbiniEntry .v97-context-fold{
  right:14px!important;
  bottom:max(14px,var(--v123-safe-bottom))!important;
  left:auto!important;
  width:auto!important;
  max-width:min(310px,calc(100vw - 28px))!important;
  min-height:0!important;
  padding:8px 11px!important;
  border:1px solid rgba(255,255,255,.18)!important;
  border-radius:999px!important;
  background:rgba(4,22,29,.64)!important;
  color:#fff!important;
  box-shadow:0 10px 30px rgba(0,0,0,.18)!important;
  backdrop-filter:blur(10px)!important;
  overflow:hidden!important;
}
.chapter-day2.d2-konbiniEntry .v97-context-fold[open]{
  width:min(330px,calc(100vw - 28px))!important;
  border-radius:14px!important;
  padding:10px 12px 12px!important;
}
.chapter-day2.d2-konbiniEntry .v97-context-fold summary{font-size:.78rem!important;line-height:1.25!important}
.chapter-day2.d2-konbiniEntry .v97-context-fold p{font-size:.76rem!important;line-height:1.45!important}

/* ---------- KONBINI RECEIPT: V123 accidentally animated the full viewport container
   with translateX(-50%). Animate the paper itself and keep every control in-bounds. ---------- */
.v123-konbini-receipt .v73-receipt-object{
  animation:none!important;
  inset:max(116px,calc(var(--v123-safe-top) + 38px)) 12px max(12px,var(--v123-safe-bottom))!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:14px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding:18px 8px 26px!important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.v123-konbini-receipt .v73-receipt-paper{
  flex:0 0 auto!important;
  width:min(390px,calc(100vw - 38px))!important;
  max-width:100%!important;
  transform:rotate(-.35deg)!important;
  animation:v124KonbiniPaperIn .55s cubic-bezier(.18,.88,.25,1) both!important;
}
@keyframes v124KonbiniPaperIn{
  from{opacity:0;transform:translateY(28px) rotate(-.35deg) scale(.985)}
  to{opacity:1;transform:translateY(0) rotate(-.35deg) scale(1)}
}
.v123-konbini-receipt .v73-receipt-store{
  position:relative!important;
  flex:0 0 auto!important;
  width:min(390px,calc(100vw - 38px))!important;
  max-width:100%!important;
  min-height:50px!important;
  margin:0!important;
  padding:11px 15px!important;
  font-size:.78rem!important;
  line-height:1.25!important;
}

/* ---------- PASSPORT AWARD: the whole page must be scrollable on short phones ---------- */
.stamp-award{
  align-items:start!important;
  justify-items:center!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  -webkit-overflow-scrolling:touch!important;
  padding:max(14px,env(safe-area-inset-top,0px)) 10px max(18px,env(safe-area-inset-bottom,0px))!important;
}
.stamp-award-card{
  width:min(560px,100%)!important;
  max-height:none!important;
  overflow:visible!important;
  margin:auto 0!important;
}
@media(max-width:760px){
  .stamp-award-card{padding:19px 14px 18px!important;border-radius:17px!important}
  .stamp-passport-page{height:210px!important;margin:9px 0 8px!important}
  .stamp-descend{width:142px!important;max-height:160px!important}
  .stamp-target-ring{width:132px!important;height:132px!important}
  .stamp-impact{width:150px!important;height:150px!important}
  .stamp-award h2{font-size:clamp(2.45rem,13vw,3.65rem)!important;line-height:.88!important;margin:10px 0 8px!important}
  .stamp-award p{font-size:.92rem!important;line-height:1.42!important;margin-bottom:11px!important}
  .stamp-skill-proof{margin:9px 0 12px!important;padding:10px!important}
  .stamp-skill-proof span{font-size:.82rem!important;line-height:1.32!important}
  .stamp-award button{width:100%!important;min-height:50px!important}
}

/* ---------- J3 TAXI: real moving route, graded into early evening ---------- */
.v124-night-taxi-video{
  position:absolute;
  z-index:0;
  inset:-1.5%;
  width:103%;
  height:103%;
  object-fit:cover;
  object-position:center;
  filter:brightness(.58) saturate(.72) contrast(1.08) hue-rotate(5deg);
  transform:scale(1.035);
  animation:v124NightTaxiDrift 8s ease-in-out infinite alternate;
}
@keyframes v124NightTaxiDrift{
  from{transform:scale(1.035) translate3d(-.2%,0,0)}
  to{transform:scale(1.055) translate3d(.25%,-.12%,0)}
}
.v123-night-taxi .v104-bg{opacity:0!important}
.v123-night-taxi .v104-grade{
  z-index:1!important;
  background:
    linear-gradient(180deg,rgba(8,25,52,.24),rgba(6,19,35,.08) 43%,rgba(2,12,20,.38)),
    linear-gradient(100deg,rgba(32,67,103,.16),transparent 48%,rgba(238,173,101,.07))!important;
}
.v123-night-taxi .v104-window-reflections{z-index:4!important}
.v123-night-taxi .v123-night-road-motion{z-index:5!important}
.v123-night-taxi.beat-3 .v124-night-taxi-video,
.v123-night-taxi.beat-4 .v124-night-taxi-video{animation-play-state:paused;filter:brightness(.48) saturate(.68) contrast(1.08)}
.v123-d3-taxi-receipt .v124-receipt-action{
  position:static!important;
  display:flex!important;
  width:100%!important;
  min-height:48px!important;
  margin-top:13px!important;
  justify-content:center!important;
  border-radius:12px!important;
  background:#153a46!important;
  color:#fff!important;
  border:0!important;
}

/* ---------- J3 YATAI: make the approach an actual spatial progression ---------- */
.v124-yatai-walk .v104-bg{transition:transform 1.15s cubic-bezier(.2,.72,.2,1),filter .7s ease,opacity .5s ease!important}
.v124-yatai-walk.stage-0 .v104-bg{transform:scale(1.03) translateY(0)!important;filter:brightness(.76) saturate(.92)!important}
.v124-yatai-walk.stage-1 .v104-bg{animation:v124WalkToYatai 1.2s cubic-bezier(.22,.75,.2,1) both!important}
.v124-yatai-walk.stage-2 .v104-bg{transform:scale(1.075) translate3d(-1.1%,-.2%,0)!important;filter:brightness(.88)!important}
@keyframes v124WalkToYatai{
  0%{opacity:.62;transform:scale(1.02) translateY(1.5%);filter:blur(1.2px) brightness(.72)}
  100%{opacity:1;transform:scale(1.045) translateY(0);filter:blur(0) brightness(.88)}
}
.v124-yatai-walk.stage-1>.v104-whisper{
  left:clamp(18px,4vw,56px)!important;
  right:auto!important;
  bottom:clamp(92px,13vh,130px)!important;
  max-width:min(430px,calc(100vw - 36px))!important;
  background:linear-gradient(90deg,rgba(4,20,27,.74),rgba(4,20,27,.24),transparent)!important;
}

/* ---------- SHRINE: keep the body gesture readable and the building visible ---------- */
.chapter-day2.d2-purification .v123-ritual-hud,
.chapter-day2.d2-prayer .v123-ritual-hud{
  width:min(430px,calc(100vw - 32px))!important;
  max-height:min(42vh,400px)!important;
  padding:11px 13px!important;
  background:linear-gradient(100deg,rgba(3,23,31,.76),rgba(3,23,31,.32) 78%,transparent)!important;
  border:0!important;
  border-left:2px solid rgba(239,181,150,.78)!important;
  border-radius:0 14px 14px 0!important;
  backdrop-filter:blur(9px)!important;
}
.chapter-day2.d2-purification .v123-ritual-hud h2,
.chapter-day2.d2-prayer .v123-ritual-hud h2{font-size:clamp(1.15rem,3vw,1.55rem)!important;line-height:1.05!important}
.chapter-day2 :is(.d2-water-action,.d2-prayer-action){
  display:grid!important;
  width:100%!important;
  min-width:0!important;
  height:auto!important;
  min-height:58px!important;
  margin:9px 0 0!important;
  padding:10px 12px!important;
  border:1px solid rgba(255,255,255,.22)!important;
  border-radius:13px!important;
  background:linear-gradient(135deg,rgba(18,62,73,.86),rgba(8,35,44,.72))!important;
  box-shadow:0 10px 28px rgba(0,0,0,.18)!important;
  text-align:left!important;
  backdrop-filter:blur(8px)!important;
}
.chapter-day2 :is(.d2-water-action,.d2-prayer-action) span{font-size:1.06rem!important;line-height:1.1!important}
.chapter-day2 :is(.d2-water-action,.d2-prayer-action) small{font-size:.68rem!important;line-height:1.32!important;margin-top:4px!important}
.chapter-day2.d2-prayer .world-image{transform-origin:50% 72%!important}
.chapter-day2.d2-purification .world-image{transform-origin:50% 62%!important}
.chapter-day2.d2-prayer .d2-prayer-fx .clap-ring{
  width:26px!important;height:26px!important;border-width:1.5px!important;
  box-shadow:0 0 22px rgba(255,236,196,.16)!important;
}
.chapter-day2.d2-prayer-step-2 .d2-prayer-fx:after{
  content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 48%,rgba(255,240,203,.10),transparent 24%);animation:v124ShrineFlash .55s ease-out both
}
@keyframes v124ShrineFlash{0%{opacity:0}30%{opacity:1}100%{opacity:0}}

/* ---------- Generic mobile containment from the walkthrough ---------- */
@media(max-width:760px){
  .chapter-day2.d2-konbiniEntry .v97-context-fold{right:12px!important;bottom:max(12px,var(--v123-safe-bottom))!important;max-width:calc(100vw - 24px)!important}
  .v123-konbini-receipt .v73-receipt-object{inset:calc(var(--v123-safe-top) + 42px) 8px max(8px,var(--v123-safe-bottom))!important;padding-top:10px!important}
  .v123-konbini-receipt .v73-receipt-paper,.v123-konbini-receipt .v73-receipt-store{width:calc(100vw - 30px)!important}
  .v123-d3-taxi-receipt{width:calc(100vw - 30px)!important;max-width:340px!important;padding:18px 15px 15px!important}
  .v124-yatai-walk.stage-1>.v104-whisper{left:12px!important;right:12px!important;bottom:max(82px,calc(env(safe-area-inset-bottom) + 74px))!important;max-width:none!important}
  .chapter-day2.d2-purification .v123-ritual-hud,
  .chapter-day2.d2-prayer .v123-ritual-hud{left:12px!important;right:12px!important;bottom:max(10px,var(--v123-safe-bottom))!important;width:auto!important;max-height:36svh!important;padding:10px 11px!important}
  .chapter-day2 :is(.d2-water-action,.d2-prayer-action){min-height:54px!important;padding:9px 10px!important}
  .chapter-day2 :is(.d2-water-action,.d2-prayer-action) span{font-size:.98rem!important}
  .v124-night-taxi-video{object-position:center center}
}

@media(prefers-reduced-motion:reduce){
  .v124-night-taxi-video,.v124-yatai-walk.stage-1 .v104-bg{animation:none!important}
}

/* Taxi stops spatially: moving road gives way to the Nakasu river view before payment. */
.v124-night-taxi-video{pointer-events:none;transition:opacity .7s ease,filter .7s ease}
.v123-night-taxi.beat-3 .v124-night-taxi-video,
.v123-night-taxi.beat-4 .v124-night-taxi-video{opacity:0!important}
.v123-night-taxi.beat-3 .v104-bg,
.v123-night-taxi.beat-4 .v104-bg{opacity:1!important;filter:brightness(.70) saturate(.9)!important;transform:scale(1.03)!important}

/* ---------- J1 TAXI ARRIVAL: the moving road must visibly become Kukuru ---------- */
.d1-ride .taxi-route-video,
.d1-ride .taxi-approach-world{transition:opacity .8s ease,filter .8s ease,transform 1.2s ease!important}
.d1-ride .taxi-approach-world{display:block!important;opacity:0!important;z-index:2!important;background-position:center!important;background-size:cover!important;pointer-events:none!important}
.d1-ride.ride-stage-2 .taxi-route-video,
.d1-ride.ride-stage-3 .taxi-route-video,
.d1-ride.ride-stage-4 .taxi-route-video{opacity:0!important;filter:brightness(.62) saturate(.78)!important}
.d1-ride.ride-stage-2 .taxi-approach-world,
.d1-ride.ride-stage-3 .taxi-approach-world,
.d1-ride.ride-stage-4 .taxi-approach-world{opacity:1!important;transform:scale(1.045)!important;filter:brightness(.80) saturate(.91)!important}
.d1-ride.ride-stage-2 .taxi-motion,
.d1-ride.ride-stage-3 .taxi-motion,
.d1-ride.ride-stage-4 .taxi-motion{opacity:.14!important}
.d1-ride.ride-stage-4 .v123-taxi-receipt{bottom:max(94px,calc(var(--v123-safe-bottom) + 76px))!important}
.d1-ride.ride-stage-4 .v123-expense-float{top:calc(var(--v123-safe-top) + 52px)!important;bottom:auto!important}
.d1-ride.ride-stage-4 .taxi-arrival-exit{z-index:47!important}

/* The stamp award is a page, not a locked poster. */
.stamp-award{touch-action:pan-y!important;scrollbar-gutter:stable both-edges}
.stamp-award-card{touch-action:pan-y!important}

/* Shrine gesture feedback should feel like a body action, not a floating quiz control. */
.chapter-day2.d2-prayer-step-1 .v123-ritual-hud,
.chapter-day2.d2-prayer-step-2 .v123-ritual-hud,
.chapter-day2.d2-prayer-step-3 .v123-ritual-hud,
.chapter-day2.d2-prayer-step-4 .v123-ritual-hud{transform:translateZ(0)}
.chapter-day2.d2-prayer-step-2 .world-image{filter:brightness(.94) saturate(.96)!important}
.chapter-day2.d2-prayer-step-2 .d2-prayer-action{animation:v124GesturePulse .5s ease-out both}
@keyframes v124GesturePulse{0%{transform:scale(.985)}45%{transform:scale(1.012)}100%{transform:scale(1)}}

/* Yatai transition: keep Mei in the world, but let the route remain the main subject. */
.v124-yatai-walk.stage-0 .mei-whisper,
.v124-yatai-walk.stage-0 .v104-mei-whisper{max-width:min(430px,calc(100vw - 36px))!important}
.v124-yatai-walk.stage-0 .v104-action,
.v124-yatai-walk.stage-1 .v104-action{backdrop-filter:blur(10px)!important}

@media(max-width:760px){
  .d1-ride.ride-stage-4 .v123-taxi-receipt{bottom:max(86px,calc(var(--v123-safe-bottom) + 70px))!important;max-height:46svh!important;overflow:auto!important}
  .d1-ride.ride-stage-4 .taxi-arrival-exit{left:12px!important;right:12px!important;bottom:max(10px,var(--v123-safe-bottom))!important;width:auto!important}
  .stamp-award{padding-left:8px!important;padding-right:8px!important}
}


/* ========================================================================== */
/* V125 — PLAYER-PACED CONTINUITY + J0/J1 NARRATIVE LANGUAGE                 */
/* ========================================================================== */

/* Yatai seat gate: never rely on an unlabeled/hidden hotspot to continue. */
.v104-counter.phase-2 .v125-seat-action{
  position:absolute;z-index:32;right:clamp(18px,4vw,56px);bottom:max(18px,var(--v123-safe-bottom));
  min-height:52px;padding:12px 18px;border-radius:999px;border:1px solid rgba(255,255,255,.26);
  background:rgba(5,24,31,.84);color:#fff;font-weight:760;backdrop-filter:blur(12px);box-shadow:0 14px 38px rgba(0,0,0,.28)
}
.v104-counter.phase-2 .v104-seat-stool{z-index:31}
@media(max-width:760px){
  .v104-counter.phase-2 .v125-seat-action{left:12px;right:12px;bottom:max(12px,var(--v123-safe-bottom));width:auto}
  .v104-counter.phase-2 .v104-context-card{bottom:86px!important;max-width:calc(100vw - 24px)!important}
}

/* J0/J1 share the same entrance grammar for narration/dialogue surfaces:
   quick spatial arrival, no timed disappearance. Physical paper objects stay paper. */
.chapter-day0 .narration,
.chapter-day0 .focus-copy,
.chapter-day0 .packing-copy,
.chapter-day1 .airport-whisper,
.chapter-day1 .shuttle-whisper,
.chapter-day1 .hakata-whisper,
.chapter-day1 .ryokan-whisper,
.chapter-day1 .room-whisper,
.chapter-day1 .bath-entry-whisper,
.chapter-day1 .wash-whisper,
.chapter-day1 .meal-sato-whisper,
.chapter-day1 .garden-whisper,
.chapter-day1 .night-whisper,
.chapter-day1 .gate-copy,
.chapter-day1 .genkan-copy,
.chapter-day1 .evening-copy{
  animation:v125NarrativeArrive .42s cubic-bezier(.2,.78,.22,1) both!important;
}
@keyframes v125NarrativeArrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

/* Important readable copy never fades because a timer elapsed. */
.chapter-day1 .bath-presence-copy,
.chapter-day1 .bath-step-5 .soak-rule{animation:none!important;opacity:1!important;transform:none!important;pointer-events:auto!important}

/* Keep narration subordinate to the world across J0/J1 on mobile. */
@media(max-width:760px){
  .chapter-day0 .narration>div,
  .chapter-day1 .airport-whisper,
  .chapter-day1 .shuttle-whisper,
  .chapter-day1 .hakata-whisper,
  .chapter-day1 .ryokan-whisper,
  .chapter-day1 .wash-whisper,
  .chapter-day1 .garden-whisper,
  .chapter-day1 .night-whisper{
    background:linear-gradient(90deg,rgba(4,24,31,.76),rgba(4,24,31,.34))!important;
    backdrop-filter:blur(8px)!important;
  }
}

/* Journey menu safety: always scroll, always respect mobile safe areas. */
.journey-menu{overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important}
@media(max-width:760px){
  .journey-menu{padding-bottom:max(34px,calc(env(safe-area-inset-bottom,0px) + 24px))!important}
  .journey-menu .object-ledger,.journey-menu-home{overflow:visible!important}
}


/* Critical progression in J3 is never hidden behind a hotspot alone. */
.v104-counter .v125-critical-action{
  min-height:50px;padding:11px 16px;border-radius:999px;border:1px solid rgba(255,255,255,.24);
  background:rgba(5,24,31,.82);color:#fff;font-weight:760;backdrop-filter:blur(11px);box-shadow:0 12px 32px rgba(0,0,0,.24)
}
.v104-counter .v104-dialogue-stack>.v125-critical-action,
.v104-counter .v104-bill-ready>.v125-critical-action{margin-top:10px}
@media(max-width:760px){
  .v104-counter .v125-critical-action{width:100%;max-width:none}
}


/* V126 · Canon drink photography in the physical yatai menu. */
.v112-drink-group button{grid-template-columns:72px minmax(0,1fr) auto!important;gap:11px!important;align-items:center;min-height:76px;padding:8px!important}
.v126-drink-photo{display:block;width:72px;height:62px;object-fit:cover;border-radius:8px;border:1px solid rgba(40,46,42,.16);box-shadow:0 4px 14px rgba(34,26,18,.14);background:#d8c5a7}
.v112-drink-group button.is-selected .v126-drink-photo{box-shadow:0 0 0 2px rgba(168,95,79,.35),0 5px 16px rgba(34,26,18,.18)}
@media(max-width:760px){
  .v112-drink-group button{grid-template-columns:66px minmax(0,1fr) auto!important;min-height:70px}
  .v126-drink-photo{width:66px;height:58px}
}

/* ========================================================================== */
/* V127 — RESPONSIVE SCENE COMPOSITION GUARD                                  */
/* Fixes controls/text competing for the same mobile bottom zone.             */
/* ========================================================================== */

/* Critical actions that are direct scene children must live in the action
   zone, never in normal document flow behind the brand/HUD. */
.v104-counter > .v127-bottom-action{
  position:absolute!important;z-index:34!important;
  right:clamp(22px,5vw,72px);bottom:clamp(24px,6vh,62px);
  width:auto;max-width:min(360px,42vw)
}

/* A reusable low action surface. Copy and action move together so they cannot
   overlap each other when localization or font metrics change. */
.v127-action-panel{
  position:absolute;z-index:33;
  left:clamp(22px,5vw,72px);bottom:clamp(24px,6vh,62px);
  width:min(430px,42vw);display:grid;gap:10px;
  padding:12px 14px;border:1px solid rgba(255,255,255,.16);border-radius:14px;
  background:linear-gradient(135deg,rgba(5,22,29,.76),rgba(5,22,29,.58));
  color:#fff;backdrop-filter:blur(11px);box-shadow:0 14px 38px rgba(0,0,0,.24)
}
.v127-action-panel p{margin:0;font-size:10px;line-height:1.45;color:rgba(255,255,255,.9)}
.v127-action-panel .v125-critical-action{position:static!important;margin:0!important;width:max-content;max-width:100%}
.v123-cooking-observation.v127-action-panel{bottom:clamp(24px,6vh,62px)!important}

/* Neighbor exchange is one composition, not three absolute layers. */
.v127-conversation-panel,
.v127-choice-panel{
  position:absolute;z-index:34;
  left:clamp(22px,5vw,72px);bottom:clamp(28px,7vh,78px);
  width:min(440px,42vw);display:grid;gap:10px
}
.v127-conversation-panel>.v104-whisper{
  position:static!important;inset:auto!important;width:100%!important;
  box-sizing:border-box
}
.v127-choice-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.v127-choice-row>.v104-action{width:100%;min-width:0;white-space:normal;text-align:center}
.v127-choice-panel{
  padding:11px 12px;border:1px solid rgba(255,255,255,.15);border-radius:14px;
  background:rgba(5,22,29,.66);backdrop-filter:blur(10px)
}
.v127-choice-panel>small{font-size:9px;line-height:1.4;color:rgba(255,255,255,.74)}

/* Meal arrival: keep the food as the hero and reserve a stable reading/action
   strip beneath the chef's line. */
.v127-meal-arrival .v104-bg{animation:v127MealSettle 1.15s cubic-bezier(.2,.72,.22,1) both!important}
@keyframes v127MealSettle{from{transform:scale(1.065) translateY(.7%);filter:brightness(.84)}to{transform:scale(1.025) translateY(0);filter:brightness(1)}}
.v127-meal-prompt{width:min(390px,38vw)}

/* Phase-specific spacing: one vertical hierarchy = dialogue > cue > action. */
.v104-counter.phase-7>.v104-dialogue{bottom:clamp(170px,22vh,220px)!important}
.v104-counter.phase-10>.v127-bill-prompt{width:min(390px,38vw)}

/* Browser chrome and small phones: always keep actionable controls out of the
   top brand zone and above the back button. */
@media(max-width:760px){
  .v104-counter > .v127-bottom-action{
    left:72px!important;right:12px!important;
    bottom:max(12px,var(--v123-safe-bottom))!important;
    width:auto!important;max-width:none!important
  }
  .v127-action-panel{
    left:72px!important;right:12px!important;
    bottom:max(12px,var(--v123-safe-bottom))!important;
    width:auto!important;max-width:none!important;
    padding:10px 11px!important;gap:8px!important
  }
  .v127-action-panel .v125-critical-action{width:100%!important;min-height:48px!important}
  .v123-cooking-observation.v127-action-panel{
    left:72px!important;right:12px!important;bottom:max(12px,var(--v123-safe-bottom))!important;
    width:auto!important
  }
  .v127-conversation-panel,
  .v127-choice-panel{
    left:12px!important;right:12px!important;
    bottom:max(68px,calc(env(safe-area-inset-bottom,0px) + 60px))!important;
    width:auto!important;max-width:none!important;
    max-height:min(44svh,390px);overflow:auto;overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch
  }
  .v127-conversation-panel>.v104-whisper{padding:10px 12px!important}
  .v127-conversation-panel>.v104-whisper p{font-size:18px!important;line-height:1.24!important}
  .v127-choice-row{grid-template-columns:1fr 1fr;gap:7px}
  .v127-choice-row>.v104-action{min-height:52px;padding:9px 10px;font-size:10px}
  .v127-choice-panel{padding:10px!important}

  .v104-counter.phase-7>.v104-dialogue{
    left:12px!important;right:12px!important;
    bottom:max(184px,calc(env(safe-area-inset-bottom,0px) + 174px))!important;
    width:auto!important
  }
  .v127-meal-prompt{left:72px!important;right:12px!important}

  /* Phase 3 has only one readable layer plus the bottom action. */
  .v104-counter.phase-3>.v104-whisper{
    bottom:max(82px,calc(env(safe-area-inset-bottom,0px) + 74px))!important
  }

  /* Protect the physical menu and bill from the Android address/navigation bars. */
  .v104-menu-object{max-height:calc(100dvh - 24px)!important;overscroll-behavior:contain}
  .v104-bill-flow{max-height:calc(100dvh - 154px);overflow:auto;overscroll-behavior:contain}
}

@media(max-width:390px){
  .v127-choice-row{grid-template-columns:1fr}
  .v127-conversation-panel,.v127-choice-panel{max-height:min(50svh,410px)}
  .v104-counter.phase-7>.v104-dialogue{bottom:max(210px,calc(env(safe-area-inset-bottom,0px) + 198px))!important}
}

@media(min-width:761px){
  .v127-conversation-panel,.v127-choice-panel{max-height:56vh;overflow:auto}
  .v127-meal-prompt{left:clamp(22px,5vw,72px)}
}

/* Visible progression fallback for world hotspots. The hotspot remains immersive,
   but an essential route can never depend on discovering a circle by accident. */
.v127-world-continue{
  position:absolute;z-index:36;right:clamp(18px,4vw,54px);bottom:clamp(22px,6vh,64px);
  min-height:48px;padding:11px 16px;border:1px solid rgba(255,255,255,.26);border-radius:999px;
  background:rgba(5,24,31,.78);color:#fff;font-weight:760;box-shadow:0 12px 34px rgba(0,0,0,.24);
  backdrop-filter:blur(11px)
}
@media(max-width:760px){
  .v127-world-continue{left:72px;right:12px;bottom:max(12px,var(--v123-safe-bottom));width:auto}
  .d2-konbini-entry .v97-context-fold,
  .d2-shrine-approach-scene .v97-context-fold{bottom:max(78px,calc(env(safe-area-inset-bottom,0px) + 70px))!important}
}

/* ========================================================================== */
/* NAKASU CRUISE — LIVING ILLUSTRATED BACKGROUND                              */
/* ========================================================================== */
.v128-cruise-live::before{
  content:"";position:absolute;inset:-1%;z-index:.5;pointer-events:none;
  background:url("../assets/ete-bleu/day3/world/cruise-pov-desktop.webp") center/cover no-repeat;
  opacity:.13;mix-blend-mode:soft-light;filter:saturate(.78) contrast(1.08);
}
.v128-cruise-live .v104-grade{
  background:linear-gradient(180deg,rgba(3,14,21,.09),rgba(3,14,21,.01) 48%,rgba(3,14,21,.42));
}
.v128-cruise-reflections{
  position:absolute;inset:0;z-index:3;pointer-events:none;opacity:.17;mix-blend-mode:screen;
  background:linear-gradient(107deg,transparent 0 31%,rgba(255,196,111,.08) 42%,transparent 53% 70%,rgba(111,175,255,.07) 80%,transparent 91%);
  background-size:180% 100%;animation:v128Reflections 11s linear infinite;
}
@keyframes v128Reflections{from{background-position:130% 0}to{background-position:-80% 0}}

.v128-cruise-experience{
  position:absolute;z-index:13;left:clamp(22px,5vw,72px);bottom:clamp(28px,7vh,76px);
  width:min(430px,41vw);display:grid;gap:9px;padding:14px 15px 15px;border-radius:18px;
  border:1px solid rgba(255,255,255,.16);background:linear-gradient(180deg,rgba(5,21,28,.72),rgba(5,19,27,.86));
  box-shadow:0 22px 65px rgba(0,0,0,.28);backdrop-filter:blur(14px) saturate(1.08);
}
.v128-cruise-experience>small{font-size:8px;font-weight:850;letter-spacing:.17em;color:#f3b59f}
.v128-cruise-experience>p{margin:0;max-width:38ch;font-size:12px;line-height:1.48;color:rgba(255,255,255,.9)}
.v128-cruise-glances{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.v128-cruise-glances.is-three{grid-template-columns:repeat(3,1fr)}
.v128-cruise-glances button{
  min-height:39px;padding:8px 10px;border:1px solid rgba(255,255,255,.16);border-radius:999px;
  background:rgba(255,255,255,.07);color:#fff;font:750 9px/1.2 var(--font-sans,Arial,sans-serif);
  transition:transform .18s ease,background .18s ease,border-color .18s ease;
}
.v128-cruise-glances button:active{transform:scale(.98)}
.v128-cruise-glances button.is-seen{background:rgba(238,182,156,.15);border-color:rgba(238,182,156,.48);color:#ffd7c7}
.v128-cruise-observation{
  padding:9px 10px;border-left:2px solid rgba(238,155,128,.78);border-radius:0 10px 10px 0;
  background:rgba(2,13,18,.27);font-size:10px;line-height:1.5;color:rgba(255,255,255,.86);
}
.v128-cruise-continue{position:static!important;width:100%!important;margin-top:1px!important;min-height:45px!important}
.v128-inline-memory{position:static!important;justify-self:start;margin:0!important}

@media(max-width:760px){
  .v128-cruise-live::before{background-image:url("../assets/ete-bleu/day3/world/cruise-pov-mobile.webp");opacity:.105}
  .v128-cruise-experience{
    left:12px;right:12px;bottom:max(68px,calc(env(safe-area-inset-bottom) + 58px));width:auto;
    max-height:min(43svh,390px);overflow:auto;padding:12px;border-radius:16px;gap:8px;
  }
  .v128-cruise-experience>p{font-size:11px;line-height:1.42}
  .v128-cruise-glances.is-three{grid-template-columns:repeat(3,minmax(0,1fr))}
  .v128-cruise-glances button{min-height:42px;padding:7px 6px;font-size:8.5px;white-space:normal}
  .v128-cruise-observation{font-size:9.5px}
}

@media(max-width:390px){
  .v128-cruise-experience{left:10px;right:10px;bottom:max(62px,calc(env(safe-area-inset-bottom) + 54px));max-height:46svh}
  .v128-cruise-glances.is-three{grid-template-columns:1fr 1fr}.v128-cruise-glances.is-three button:last-child{grid-column:1/-1}
}

@media(prefers-reduced-motion:reduce){
  .v128-cruise-reflections{animation:none!important}
}


/* V131 — LANDING FOOTER MOBILE COMPOSITION */
.threshold-legal{align-items:center}
@media(max-width:760px){
  .chapter-threshold .threshold{padding-bottom:max(22px,calc(env(safe-area-inset-bottom,0px) + 16px))!important}
  .chapter-threshold .threshold-legal{
    display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;
    width:100%!important;max-width:none!important;margin-top:16px!important;padding-top:10px!important;
    gap:2px 4px!important;border-top:1px solid rgba(247,240,223,.20)!important;
  }
  .chapter-threshold .threshold-legal a{
    display:flex!important;align-items:center!important;justify-content:center!important;
    width:auto!important;min-width:0!important;min-height:34px!important;height:auto!important;
    margin:0!important;padding:6px 3px!important;border:0!important;border-radius:0!important;
    background:transparent!important;backdrop-filter:none!important;box-shadow:none!important;
    font-size:9.5px!important;font-weight:650!important;line-height:1.2!important;text-align:center!important;
    white-space:normal!important;opacity:.83!important;
  }
  .chapter-threshold .threshold-legal a:active,
  .chapter-threshold .threshold-legal a:focus-visible{
    background:rgba(247,240,223,.10)!important;color:#fff!important;opacity:1!important;
  }
}
@media(max-width:350px){
  .chapter-threshold .threshold-legal{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
