:root {
  --night: #071d24;
  --deep: #0b3038;
  --deep-soft: rgba(8, 35, 42, .78);
  --paper: #f4ecde;
  --paper-2: #fff9ee;
  --ink: #18353c;
  --white: #fffaf0;
  --coral: #d97660;
  --coral-light: #efb09b;
  --gold: #c69a54;
  --line: rgba(255, 255, 255, .25);
  --shadow: 0 24px 80px rgba(0, 0, 0, .32);
  --safe-top: max(16px, env(safe-area-inset-top));
  --safe-bottom: max(16px, env(safe-area-inset-bottom));
}

* { box-sizing: border-box; }
html, body, #app { width: 100%; height: 100%; margin: 0; }
html { background: var(--night); }
body { overflow: hidden; color: var(--white); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
button, input, select, textarea { font: inherit; }
button { color: inherit; cursor: pointer; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, a:focus-visible, [tabindex]:focus-visible { outline: 3px solid #ffe5a7; outline-offset: 4px; }
button:disabled { cursor: default; }

.sr-only { position: fixed !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }
html[data-reduced-motion="true"] *, html[data-reduced-motion="true"] *::before, html[data-reduced-motion="true"] *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }

.scene { position: relative; isolation: isolate; width: 100%; height: 100%; min-height: 100svh; overflow: hidden; background: var(--night); }
.world { position: absolute; inset: 0; z-index: -3; overflow: hidden; background: #123841; }
.world picture, .world img { display: block; width: 100%; height: 100%; }
.world img { object-fit: cover; user-select: none; -webkit-user-drag: none; }
.scene-vignette { position: absolute; inset: 0; z-index: -2; pointer-events: none; background: linear-gradient(180deg, rgba(2, 12, 15, .28), transparent 26%, transparent 54%, rgba(2, 13, 17, .66)); }

.chrome { position: absolute; z-index: 30; top: 0; left: 0; right: 0; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 24px; padding: var(--safe-top) clamp(18px, 3vw, 44px) 28px; background: linear-gradient(180deg, rgba(4, 19, 23, .66), transparent); text-shadow: 0 2px 14px rgba(0,0,0,.48); }
.chrome--quiet { background: linear-gradient(180deg, rgba(4, 19, 23, .42), transparent); }
.identity { display: flex; align-items: center; gap: 11px; min-width: 0; font-family: Georgia, serif; font-size: 14px; letter-spacing: .16em; white-space: nowrap; }
.identity__seal { display: grid; place-items: center; width: 42px; height: 42px; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.62); border-radius: 50%; background: rgba(245, 235, 216, .94); color: var(--ink); font: 700 11px/1 Georgia, serif; letter-spacing: .08em; box-shadow: 0 8px 24px rgba(0,0,0,.16); }
.place { text-align: center; min-width: 0; }
.place strong, .place span { display: block; }
.place strong { font: 500 clamp(20px, 2.4vw, 30px)/1 Georgia, serif; }
.place span { max-width: 42vw; margin-top: 5px; overflow: hidden; color: rgba(255,250,240,.75); font-size: 11px; font-weight: 700; letter-spacing: .11em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.tools { display: flex; justify-content: flex-end; gap: 8px; }
.tool { position: relative; display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid var(--line); border-radius: 50%; background: rgba(7, 29, 35, .5); backdrop-filter: blur(14px); font-size: 12px; font-weight: 850; }
.tool i { position: absolute; top: -4px; right: -4px; display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--coral); color: white; font-size: 10px; font-style: normal; }
.phone-glyph { width: 13px; height: 21px; border: 1.8px solid currentColor; border-radius: 3px; }

.whisper { position: absolute; z-index: 8; left: clamp(20px, 4vw, 62px); bottom: clamp(30px, 5vh, 60px); width: min(640px, 58vw); text-shadow: 0 2px 20px rgba(0,0,0,.68); animation: reveal .7s ease both; }
.whisper > span { display: block; margin-bottom: 10px; color: #f2b4a0; font-size: 11px; font-weight: 900; letter-spacing: .22em; text-transform: uppercase; }
.whisper h1 { margin: 0; font: 500 clamp(36px, 5vw, 72px)/.98 Georgia, serif; letter-spacing: -.025em; text-wrap: balance; }
.whisper p { max-width: 55ch; margin: 14px 0 0; color: rgba(255,250,240,.92); font-size: clamp(15px, 1.4vw, 19px); line-height: 1.55; }
.whisper--room { width: min(540px, 44vw); }
.whisper--night, .whisper--plane, .whisper--ride { bottom: clamp(40px, 8vh, 90px); }

.world-cue { position: absolute; z-index: 12; left: var(--x); top: var(--y); display: flex; align-items: center; gap: 10px; min-width: 48px; min-height: 48px; padding: 7px 13px 7px 7px; transform: translate(-50%, -50%); border: 0; border-radius: 999px; background: rgba(7, 29, 34, .66); box-shadow: 0 12px 34px rgba(0,0,0,.24); backdrop-filter: blur(13px); font-size: 12px; font-weight: 800; text-shadow: 0 1px 5px rgba(0,0,0,.55); animation: cueIn .55s ease both; }
.world-cue i { position: relative; display: block; width: 32px; height: 32px; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.8); border-radius: 50%; }
.world-cue i::after { content: ''; position: absolute; inset: 8px; border-radius: 50%; background: rgba(255,255,255,.9); animation: breathe 2s ease-in-out infinite; }
.world-cue:hover { background: rgba(7, 29, 34, .84); }

.cover .world img { transform: scale(1.02); animation: coverDrift 14s ease-out both; }
.cover-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(5,25,31,.72), rgba(5,25,31,.08) 58%), linear-gradient(0deg, rgba(3,18,23,.38), transparent 45%); }
.cover-brand { position: absolute; z-index: 3; top: 0; left: 0; right: 0; display: flex; align-items: center; gap: 12px; padding: var(--safe-top) clamp(20px,4vw,60px); font: 700 14px Georgia, serif; letter-spacing: .16em; }
.cover-brand button { margin-left: auto; width: 42px; height: 42px; border: 1px solid var(--line); border-radius: 50%; background: rgba(4,24,30,.45); font-size: 12px; font-weight: 900; }
.cover-copy { position: absolute; z-index: 2; left: clamp(22px, 7vw, 110px); top: 50%; width: min(700px, 55vw); transform: translateY(-42%); text-shadow: 0 3px 24px rgba(0,0,0,.6); }
.cover-copy small { color: #ffe1d4; font-size: 11px; font-weight: 900; letter-spacing: .25em; }
.cover-copy h1 { margin: 15px 0 12px; font: 500 clamp(72px, 10vw, 150px)/.82 Georgia, serif; letter-spacing: -.06em; }
.cover-copy p { max-width: 42ch; margin: 0; font: 500 clamp(17px, 1.5vw, 21px)/1.5 Georgia, serif; }
.enter-summer { display: inline-flex; align-items: center; gap: 28px; min-height: 56px; margin-top: 34px; padding: 8px 9px 8px 22px; border: 1px solid rgba(255,255,255,.42); border-radius: 999px; background: rgba(8,42,50,.7); backdrop-filter: blur(12px); font-weight: 800; }
.enter-summer i { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--paper); color: var(--ink); font-style: normal; }

.desk-objects { position: absolute; z-index: 10; right: clamp(4vw, 8vw, 150px); bottom: clamp(9vh, 14vh, 170px); display: flex; align-items: end; gap: clamp(8px, 2vw, 28px); }
.envelope { position: relative; width: clamp(145px, 16vw, 240px); padding: 0; transform: rotate(-4deg); border: 0; background: transparent; filter: drop-shadow(0 16px 18px rgba(0,0,0,.26)); transition: transform .3s ease, filter .3s ease, opacity .3s ease; }
.envelope--mei { transform: rotate(6deg) translateY(10px); }
.envelope img { display: block; width: 100%; }
.envelope span { position: absolute; left: 50%; bottom: -12px; padding: 7px 10px; transform: translateX(-50%); border-radius: 999px; background: rgba(8,35,42,.76); font-size: 11px; font-weight: 800; white-space: nowrap; backdrop-filter: blur(10px); }
.envelope:not(:disabled):hover { transform: rotate(0) translateY(-8px); filter: drop-shadow(0 22px 25px rgba(0,0,0,.36)); }
.envelope.is-locked { opacity: .48; filter: grayscale(.35) drop-shadow(0 8px 14px rgba(0,0,0,.2)); }
.envelope.is-read { opacity: .38; }
.phone-room-object { position: absolute; z-index: 14; right: clamp(34px, 14vw, 250px); bottom: 13vh; width: clamp(120px, 14vw, 190px); padding: 0; border: 0; background: transparent; filter: drop-shadow(0 18px 24px rgba(0,0,0,.36)); }
.phone-room-object img { display: block; width: 100%; animation: phoneWake 1.8s ease-in-out infinite; }
.phone-room-object span { position: absolute; left: 50%; bottom: -8px; padding: 8px 12px; transform: translateX(-50%); border-radius: 999px; background: var(--paper); color: var(--ink); font-size: 11px; font-weight: 850; white-space: nowrap; }

.object-focus { position: absolute; z-index: 80; inset: 0; display: grid; place-items: center; padding: max(70px, var(--safe-top)) 24px max(24px, var(--safe-bottom)); background: rgba(4,22,27,.56); backdrop-filter: blur(8px); }
.letter-sheet { position: relative; width: min(720px, 90vw); max-height: min(78vh, 780px); overflow: auto; padding: clamp(34px, 6vw, 72px); border-radius: 4px 18px 8px 14px; background: linear-gradient(135deg, #fffaf0, #eee1cd); color: #294149; box-shadow: 0 35px 100px rgba(0,0,0,.48); transform: rotate(-.8deg); animation: letterOpen .6s cubic-bezier(.2,.8,.2,1) both; }
.letter-sheet::before { content: ''; position: absolute; inset: 16px; pointer-events: none; border: 1px solid rgba(110,82,50,.18); }
.letter-sheet--mei { transform: rotate(.6deg); }
.letter-sheet > small { color: #a85d4d; font-weight: 900; letter-spacing: .2em; }
.letter-sheet > div { margin-top: 28px; }
.letter-sheet p { position: relative; margin: 0 0 16px; font: 400 clamp(15px,1.3vw,18px)/1.7 Georgia, serif; }
.letter-sheet .signature { margin-top: 28px; font-style: italic; }
.letter-sheet button { position: sticky; bottom: 0; float: right; min-height: 45px; margin-top: 8px; padding: 10px 17px; border: 1px solid rgba(31,59,66,.2); border-radius: 999px; background: rgba(255,250,240,.92); color: var(--ink); font-weight: 800; box-shadow: 0 5px 18px rgba(51,37,22,.11); }

.phone-object { position: absolute; z-index: 28; right: clamp(18px, 3vw, 44px); bottom: calc(var(--safe-bottom) + 8px); display: flex; align-items: center; width: 102px; min-height: 54px; padding: 0 9px 0 0; border: 1px solid rgba(255,255,255,.24); border-radius: 999px; background: rgba(7,29,35,.7); backdrop-filter: blur(13px); font-size: 10px; font-weight: 800; }
.phone-object img { width: 55px; height: 55px; object-fit: contain; transform: rotate(-12deg); }
.phone-object--alert::after { content: ''; position: absolute; top: 5px; left: 42px; width: 9px; height: 9px; border: 2px solid white; border-radius: 50%; background: var(--coral); }

.phone-mode { position: absolute; z-index: 70; inset: 0; display: grid; place-items: center; background: rgba(3,17,21,.54); backdrop-filter: blur(10px); animation: phoneModeIn .4s ease both; }
.phone-mode--forced { animation: none; }
.phone-device { position: relative; width: min(378px, 86vw); height: min(760px, 86vh); padding: 13px; overflow: hidden; border: 2px solid rgba(255,255,255,.25); border-radius: 48px; background: #071c22; box-shadow: 0 38px 120px rgba(0,0,0,.58); }
.phone-device::before { content: ''; position: absolute; z-index: 8; top: 18px; left: 50%; width: 78px; height: 22px; transform: translateX(-50%); border-radius: 999px; background: #06171c; }
.phone-status { position: absolute; z-index: 10; top: 20px; left: 28px; right: 28px; display: flex; justify-content: space-between; color: rgba(255,255,255,.78); font-size: 9px; font-weight: 800; }
.phone-status--paper { color: rgba(24,53,60,.72); }
.phone-screen { width: 100%; height: 100%; overflow: auto; border-radius: 37px; background: var(--paper); color: var(--ink); }
.phone-screen--home { padding: 50px 22px 60px; background: radial-gradient(circle at 80% 15%, rgba(247,183,130,.9), transparent 27%), linear-gradient(155deg,#0b4650 0%,#0a2c38 52%,#081d28 100%); color: white; }
.phone-sky { min-height: 180px; padding-top: 42px; }
.phone-sky small, .phone-sky strong { display: block; }
.phone-sky small { color: #f1b39e; font-size: 10px; font-weight: 900; letter-spacing: .18em; }
.phone-sky strong { width: 80%; margin-top: 10px; font: 500 34px/1 Georgia,serif; }
.app-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 19px 10px; }
.app-icon { position: relative; display: grid; justify-items: center; gap: 6px; padding: 0; border: 0; background: transparent; color: white; font-size: 10px; }
.app-icon i { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 15px; background: linear-gradient(145deg,#f7efe2,#d9bd9f); color: #193b43; box-shadow: 0 8px 18px rgba(0,0,0,.2); font: 500 22px Georgia,serif; font-style: normal; }
.app-icon b { position: absolute; top: -5px; right: 2px; display: grid; place-items: center; width: 19px; height: 19px; border-radius: 50%; background: var(--coral); font-size: 10px; }
.phone-home { position: absolute; z-index: 12; bottom: 21px; left: 50%; width: 92px; height: 5px; padding: 10px; transform: translateX(-50%); border: 0; background: transparent; }
.phone-home::after { content: ''; display: block; width: 100%; height: 5px; border-radius: 5px; background: rgba(255,255,255,.58); }
.phone-return { position: absolute; right: clamp(18px,4vw,60px); bottom: max(26px,var(--safe-bottom)); min-height: 44px; padding: 9px 15px; border: 1px solid var(--line); border-radius: 999px; background: rgba(7,29,35,.74); backdrop-filter: blur(12px); font-size: 12px; font-weight: 800; }
.app-header { position: sticky; z-index: 4; top: 0; display: grid; grid-template-columns: 40px 1fr 40px; align-items: center; min-height: 70px; padding: 20px 10px 0; background: rgba(250,245,235,.94); backdrop-filter: blur(14px); border-bottom: 1px solid rgba(24,53,60,.1); }
.app-header button { width: 40px; height: 40px; border: 0; background: transparent; color: var(--ink); font-size: 32px; }
.app-header strong { text-align: center; font-family: Georgia,serif; }
.mei-thread, .trip-stack, .digital-wallet, .memory-list { padding: 18px 18px 70px; }
.mei-thread article { margin: 0 0 13px; padding: 13px 14px; border-radius: 3px 18px 18px 18px; background: white; box-shadow: 0 5px 15px rgba(57,43,26,.08); }
.mei-thread article span { color: var(--coral); font-size: 9px; font-weight: 900; letter-spacing: .15em; }
.mei-thread article p { margin: 6px 0 0; font: 400 14px/1.55 Georgia,serif; }
.empty-app { padding: 46px 24px; text-align: center; color: #657a7e; font: 400 15px/1.6 Georgia,serif; }
.trip-stack { display: grid; gap: 12px; }
.trip-card { display: grid; gap: 7px; padding: 18px; border: 1px solid rgba(26,57,65,.12); border-radius: 20px; background: white; box-shadow: 0 7px 20px rgba(50,36,22,.08); }
.trip-card small { color: var(--coral); font-size: 9px; font-weight: 900; letter-spacing: .15em; }
.trip-card strong { font: 500 23px Georgia,serif; }
.trip-card span { color: #68797c; font-size: 12px; }
.trip-card--pass { background: #0d3f49; color: white; }
.trip-card--address { cursor: pointer; background: #f2dfc7; }
.digital-card { min-height: 176px; padding: 21px; border-radius: 24px; background: linear-gradient(140deg,#153f49,#08242d); color: white; box-shadow: 0 18px 30px rgba(8,35,42,.25); }
.digital-card small, .digital-card strong, .digital-card span { display: block; }
.digital-card small { color: #efad99; font-size: 9px; font-weight: 900; letter-spacing: .14em; }
.digital-card strong { margin-top: 52px; font: 500 25px Georgia,serif; letter-spacing: .08em; }
.digital-card span { margin-top: 8px; font-size: 11px; }
.digital-wallet dl { display: grid; gap: 9px; margin-top: 18px; }
.digital-wallet dl div { padding: 13px; border-radius: 15px; background: white; }
.digital-wallet dt { color: #718084; font-size: 11px; }
.digital-wallet dd { margin: 3px 0 0; font: 500 22px Georgia,serif; }
.memory-list { display: grid; gap: 10px; }
.memory-list article { padding: 16px; border-left: 3px solid var(--coral); background: white; }
.memory-list small { color: var(--coral); font-weight: 900; }
.memory-list p { margin: 6px 0 0; font: 400 14px/1.55 Georgia,serif; }

.phone-screen--profile { padding: 58px 24px 48px; background: linear-gradient(165deg,#f8f1e6,#eadcc8); }
.profile-mei { display: flex; align-items: center; gap: 10px; }
.profile-mei span { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: #17454d; color: white; font: 500 20px Georgia,serif; }
.profile-mei small { color: #ac614e; font-weight: 900; letter-spacing: .12em; }
.profile-question { margin-top: 28px; }
.profile-question > p { margin: 0 0 20px; font: 500 24px/1.32 Georgia,serif; }
.profile-question label { display: grid; gap: 6px; color: #62767a; font-size: 11px; font-weight: 800; }
.profile-question input { min-height: 50px; padding: 0 14px; border: 1px solid rgba(23,56,64,.17); border-radius: 14px; background: rgba(255,255,255,.85); color: var(--ink); font-size: 16px; }
.profile-question button, .profile-choices button { width: 100%; min-height: 50px; margin-top: 12px; padding: 11px 14px; border: 0; border-radius: 15px; background: #16444d; color: white; font-weight: 800; }
.profile-choices { display: grid; gap: 8px; }
.profile-choices button { margin: 0; background: rgba(255,255,255,.88); color: var(--ink); text-align: left; }
.profile-choices button:hover { background: white; transform: translateY(-1px); }

.laptop-experience { position: absolute; z-index: 15; top: 12vh; right: 5vw; bottom: 7vh; width: min(800px,64vw); overflow: auto; border: 7px solid #152b30; border-radius: 18px 18px 10px 10px; background: var(--paper); color: var(--ink); box-shadow: 0 28px 80px rgba(0,0,0,.42); animation: laptopIn .5s ease both; }
.laptop-experience > header { position: sticky; z-index: 4; top: 0; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; min-height: 48px; padding: 0 16px; border-bottom: 1px solid rgba(24,53,60,.12); background: rgba(250,245,235,.96); font-size: 11px; font-weight: 850; letter-spacing: .09em; }
.laptop-experience > header small { color: #839093; }
.mini-brand { display: grid; place-items: center; width: 29px; height: 29px; border-radius: 50%; background: var(--deep); color: white; font: 700 8px Georgia,serif; }
.booking-form { display: grid; grid-template-columns: .82fr 1.18fr; gap: clamp(24px,4vw,60px); padding: clamp(28px,5vw,65px); }
.booking-intro small { color: var(--coral); font-size: 10px; font-weight: 900; letter-spacing: .18em; }
.booking-intro h1 { margin: 14px 0; font: 500 clamp(36px,4vw,62px)/.98 Georgia,serif; }
.booking-intro p { color: #63777b; font: 400 14px/1.55 Georgia,serif; }
.booking-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.booking-fields label { display: grid; align-content: start; gap: 6px; color: #627579; font-size: 10px; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.booking-fields label.wide, .booking-fields fieldset { grid-column: 1/-1; }
.booking-fields input { min-width: 0; min-height: 47px; padding: 0 12px; border: 1px solid rgba(23,55,63,.15); border-radius: 10px; background: white; color: var(--ink); text-transform: none; }
.booking-fields input:disabled { background: #e9dfd0; color: #6a7778; }
.booking-fields fieldset { display: flex; flex-wrap: wrap; gap: 14px; margin: 0; padding: 12px; border: 1px solid rgba(23,55,63,.15); border-radius: 12px; }
.booking-fields legend { color: #627579; font-size: 10px; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.booking-fields fieldset label { display: flex; align-items: center; gap: 6px; color: var(--ink); font-size: 12px; text-transform: none; }
.booking-fields fieldset input { min-height: auto; }
.booking-submit { grid-column: 2; display: flex; justify-content: space-between; align-items: center; min-height: 52px; margin-top: -45px; padding: 0 8px 0 18px; border: 0; border-radius: 999px; background: var(--deep); color: white; font-weight: 850; }
.booking-submit span { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--paper); color: var(--ink); }

.wallet-scene { position: absolute; z-index: 14; inset: 0; display: grid; place-items: center; padding: 90px 4vw 40px; }
.budget-envelope { width: min(520px,70vw); padding: 0; border: 0; background: transparent; filter: drop-shadow(0 28px 36px rgba(0,0,0,.36)); transition: transform .3s ease; }
.budget-envelope:hover { transform: translateY(-8px) scale(1.015); }
.budget-envelope img { display: block; width: 100%; }
.budget-envelope span { display: inline-block; padding: 11px 16px; border-radius: 999px; background: rgba(7,29,35,.78); backdrop-filter: blur(12px); font-weight: 850; }
.wallet-physical { position: relative; width: min(700px,62vw); filter: drop-shadow(0 28px 44px rgba(0,0,0,.34)); }
.wallet-physical > img { display: block; width: 100%; }
.wallet-note { position: absolute; top: 27%; left: 48%; width: 39%; padding: 18px; transform: rotate(-3deg); background: var(--paper-2); color: var(--ink); box-shadow: 0 10px 24px rgba(0,0,0,.22); }
.wallet-note small, .wallet-note strong { display: block; }
.wallet-note small { color: var(--coral); font-size: 9px; font-weight: 900; letter-spacing: .14em; }
.wallet-note strong { margin-top: 5px; font: 500 33px Georgia,serif; }
.wallet-note p { margin: 8px 0 0; font: 400 12px/1.45 Georgia,serif; }
.allocation-strip { position: absolute; right: clamp(22px,5vw,80px); bottom: 7vh; display: grid; gap: 9px; width: min(350px,31vw); }
.allocation-strip button { display: grid; gap: 3px; min-height: 64px; padding: 12px 15px; border: 1px solid rgba(255,255,255,.58); border-radius: 16px; background: rgba(248,242,232,.93); color: var(--ink); text-align: left; box-shadow: 0 10px 30px rgba(0,0,0,.2); }
.allocation-strip button span { color: #69797c; font-size: 11px; }

.packing-stage { position: absolute; z-index: 13; inset: 90px 0 0; display: grid; grid-template-columns: .75fr 1.1fr .75fr; grid-template-rows: 1fr auto; align-items: center; gap: 20px; padding: 2vh 5vw max(4vh,var(--safe-bottom)); }
.packing-copy { align-self: start; max-width: 300px; padding-top: 5vh; text-shadow: 0 2px 18px rgba(0,0,0,.62); }
.packing-copy small { color: #f0b09c; font-weight: 900; letter-spacing: .17em; }
.packing-copy p { font: 400 15px/1.55 Georgia,serif; }
.suitcase-drop { position: relative; align-self: end; width: min(530px,42vw); margin: 0 auto; transition: transform .25s ease, filter .25s ease; }
.suitcase-drop img { display: block; width: 100%; filter: drop-shadow(0 24px 38px rgba(0,0,0,.38)); }
.suitcase-drop > span { position: absolute; left: 50%; bottom: 9%; padding: 8px 12px; transform: translateX(-50%); border: 1px solid var(--line); border-radius: 999px; background: rgba(7,29,35,.68); font-size: 10px; font-weight: 800; backdrop-filter: blur(12px); }
.suitcase-drop.is-receiving { transform: scale(1.035); filter: brightness(1.12); }
.suitcase-drop.is-complete > span { background: #f4ecde; color: var(--ink); }
.packing-objects { display: grid; align-self: center; gap: 13px; }
.packing-object { touch-action: none; display: grid; grid-template-columns: 70px 1fr; align-items: center; gap: 12px; min-height: 82px; padding: 7px 13px 7px 7px; border: 1px solid rgba(255,255,255,.5); border-radius: 18px; background: rgba(248,242,232,.93); color: var(--ink); text-align: left; box-shadow: 0 12px 28px rgba(0,0,0,.22); transition: opacity .25s, transform .15s; }
.packing-object img { width: 70px; height: 70px; object-fit: contain; border-radius: 14px; }
.packing-object span { font-size: 12px; font-weight: 850; }
.packing-object.is-active { position: relative; z-index: 30; }
.packing-object.is-packed { opacity: .24; }
.suitcase-close { grid-column: 2; justify-self: center; min-height: 48px; padding: 9px 18px; border: 1px solid var(--line); border-radius: 999px; background: rgba(7,29,35,.76); backdrop-filter: blur(12px); font-weight: 850; }

.night-notification { position: absolute; z-index: 15; right: 7vw; bottom: 12vh; width: min(360px,33vw); padding: 15px 17px; border: 1px solid rgba(255,255,255,.24); border-radius: 18px; background: rgba(8,31,38,.78); text-align: left; backdrop-filter: blur(16px); box-shadow: var(--shadow); animation: notificationIn .5s ease both; }
.night-notification span { color: var(--coral-light); font-size: 9px; font-weight: 900; letter-spacing: .15em; }
.night-notification p { margin: 7px 0 0; font: 400 14px/1.5 Georgia,serif; }
.lights-out { position: absolute; z-index: 15; right: 7vw; bottom: 12vh; min-height: 48px; padding: 10px 17px; border: 1px solid var(--line); border-radius: 999px; background: rgba(7,29,35,.75); font-weight: 850; }

.gate-present { position: absolute; z-index: 14; right: 8vw; bottom: 8vh; display: grid; grid-template-columns: auto auto; align-items: end; gap: 26px; }
.gate-reader { display: grid; place-items: center; gap: 7px; width: 140px; height: 140px; border: 1px solid rgba(255,255,255,.42); border-radius: 24px; background: rgba(9,42,49,.76); backdrop-filter: blur(15px); }
.gate-reader i { width: 70px; height: 45px; border: 2px solid rgba(255,255,255,.55); border-radius: 12px; }
.gate-reader.is-receiving { border-color: #ffe6a9; box-shadow: 0 0 0 5px rgba(255,230,169,.18); }
.boarding-pass { touch-action: none; display: grid; gap: 7px; width: min(330px,34vw); padding: 18px 20px; border: 0; border-radius: 7px 20px 7px 20px; background: linear-gradient(135deg,#f5e6c9,#fff9eb); color: var(--ink); box-shadow: 0 18px 40px rgba(0,0,0,.3); text-align: left; }
.boarding-pass small { color: #a75e4e; font-size: 9px; font-weight: 900; letter-spacing: .13em; }
.boarding-pass strong { font: 500 26px Georgia,serif; }
.boarding-pass strong i { color: var(--coral); font-style: normal; }
.boarding-pass span { font-size: 11px; font-weight: 750; }
.boarding-pass.is-active { position: relative; z-index: 30; }
.scene--aisle .world img { object-position: center 42%; }
.sleep-gesture { --hold-duration: 1200ms; position: absolute; z-index: 14; right: 7vw; bottom: 10vh; display: grid; gap: 8px; min-width: 170px; padding: 15px; border: 1px solid var(--line); border-radius: 20px; background: rgba(7,29,35,.68); backdrop-filter: blur(14px); font-weight: 850; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; }
.sleep-gesture i { position: relative; height: 3px; overflow: hidden; border-radius: 4px; background: rgba(255,255,255,.24); }
.sleep-gesture i::after { content: ''; display: block; width: 0; height: 100%; background: #f1b19d; }
.sleep-gesture.is-holding i::after { width: 100%; transition: width var(--hold-duration) linear; }
.sleep-gesture.is-complete { opacity: .2; }

/* J1B + J2 — the objects remain in the room; only their use changes. */
.whisper--sato, .whisper--bath, .whisper--yukata, .whisper--dinner, .whisper--morning, .whisper--breakfast, .whisper--aoi, .whisper--street, .whisper--konbini, .whisper--kushida, .whisper--temizu, .whisper--mainhall, .whisper--tanaka, .whisper--return { max-width: 520px; }
.scene--j1b-room .world img, .scene--yukata .world img, .scene--morning .world img, .scene--breakfast .world img { object-position: center 60%; }
.scene--bath .world img { object-position: center; }
.scene--bath-soak .world img { animation: bathSteam 11s ease-in-out infinite alternate; }
.room-suitcase, .room-baggage-place { position: absolute; z-index: 12; bottom: 12vh; width: min(200px, 20vw); min-height: 78px; border-radius: 18px; }
.room-suitcase { right: 20vw; border: 1px solid rgba(255,255,255,.55); background: linear-gradient(135deg,#4c3a30,#201c1b); color: #fff7e9; box-shadow: 0 18px 34px rgba(0,0,0,.37); touch-action: none; }
.room-suitcase span { display: block; padding-top: 35px; font-size: 11px; font-weight: 850; }
.room-suitcase::before { content: ''; position: absolute; top: 10px; left: 50%; width: 44px; height: 24px; transform: translateX(-50%); border: 2px solid rgba(255,255,255,.7); border-bottom: 0; border-radius: 11px 11px 0 0; }
.room-baggage-place { right: 5vw; display: grid; place-items: center; border: 1px dashed rgba(255,255,255,.66); background: rgba(4,26,31,.26); color: white; text-align: center; font-size: 11px; font-weight: 850; backdrop-filter: blur(7px); }
.room-baggage-place.is-receiving { background: rgba(244,236,222,.88); color: var(--ink); transform: scale(1.04); }
.room-suitcase.is-complete { opacity: .2; pointer-events: none; }
.shoji-breath { position: absolute; z-index: 11; top: 29%; left: 52%; padding: 9px 14px; border-radius: 999px; background: rgba(247,238,221,.82); color: var(--ink); font: 500 13px Georgia,serif; box-shadow: 0 10px 28px rgba(0,0,0,.2); animation: riseIn .7s ease both; }
.scene--garden .world picture { width: 156%; }
.garden-focus { position: absolute; z-index: 7; top: 50%; left: 50%; width: 86px; height: 86px; transform: translate(-50%,-50%); border: 1px solid rgba(255,255,255,.42); border-radius: 50%; box-shadow: 0 0 0 999px rgba(4,21,25,.04); pointer-events: none; }
.garden-lantern { position: absolute; z-index: 11; top: 55%; display: grid; place-items: center; width: 116px; height: 102px; padding: 0; transform: translate(-50%,-50%); border: 0; border-radius: 50%; background: radial-gradient(circle,rgba(255,221,150,.42),transparent 67%); color: white; font-size: 10px; font-weight: 850; opacity: 0; pointer-events: none; transition: opacity .3s, transform .3s; }
.garden-lantern::before { content: ''; width: 22px; height: 42px; border: 2px solid #ffe7ac; border-radius: 6px; box-shadow: 0 0 22px #ffcb77; }
.garden-lantern.is-visible { opacity: 1; pointer-events: auto; }
.garden-lantern span { position: absolute; top: 88px; width: 170px; padding: 6px; border-radius: 999px; background: rgba(6,26,31,.72); }
.bath-breathe, .prayer-gesture { --hold-duration: 2600ms; position: absolute; z-index: 14; right: 7vw; bottom: 9vh; display: grid; gap: 8px; min-width: 190px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 19px; background: rgba(7,29,35,.7); color: white; font-weight: 850; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
.bath-breathe i, .prayer-gesture i { height: 3px; overflow: hidden; border-radius: 4px; background: rgba(255,255,255,.28); }
.bath-breathe i::after, .prayer-gesture i::after { content: ''; display: block; width: 0; height: 100%; background: #f1b19d; }
.bath-breathe.is-holding i::after, .prayer-gesture.is-holding i::after { width: 100%; transition: width var(--hold-duration) linear; }
.obi-place { position: absolute; z-index: 11; top: 48%; left: 53%; display: grid; place-items: center; width: min(270px,27vw); height: 88px; border: 1px dashed rgba(255,255,255,.82); border-radius: 12px; background: rgba(8,28,33,.27); font: 700 11px Georgia,serif; letter-spacing: .12em; }
.obi-place.is-receiving { background: rgba(247,235,212,.86); color: var(--ink); transform: scale(1.04); }
.obi-object { position: absolute; z-index: 13; right: 10vw; bottom: 12vh; width: min(270px,30vw); min-height: 54px; border: 0; background: linear-gradient(100deg,#173f50,#2a6b84 36%,#f1d9bc 38%,#f1d9bc 62%,#173f50 64%); color: transparent; box-shadow: 0 14px 25px rgba(0,0,0,.3); touch-action: none; }
.obi-object.is-active { z-index: 30; }
.obi-object.is-complete { opacity: .2; }
.dinner-gesture { position: absolute; z-index: 14; right: 7vw; bottom: 10vh; display: grid; width: min(280px,26vw); overflow: hidden; border: 1px solid rgba(255,255,255,.42); border-radius: 18px; background: rgba(244,236,222,.93); color: var(--ink); box-shadow: var(--shadow); }
.dinner-gesture button { min-height: 60px; padding: 12px 16px; border: 0; background: transparent; color: inherit; font: 600 14px Georgia,serif; text-align: left; }
.dinner-gesture button + button { border-top: 1px solid rgba(24,53,60,.12); color: #5d7478; font: 700 11px Inter,sans-serif; }
.scene--night .world img { object-position: center 60%; }
.scene--aoi .world img, .scene--konbini-outside .world img, .scene--temizu .world img, .scene--mainhall .world img, .scene--kawabata .world img { object-position: center; }
.konbini-shelf { position: absolute; z-index: 14; right: 5vw; bottom: 7vh; width: min(680px,53vw); padding: 18px; border: 1px solid rgba(255,255,255,.46); border-radius: 24px; background: rgba(247,240,226,.93); color: var(--ink); box-shadow: var(--shadow); backdrop-filter: blur(17px); }
.konbini-shelf header small, .konbini-shelf header strong, .konbini-shelf header span { display: block; }
.konbini-shelf header small { color: var(--coral); font-size: 9px; font-weight: 900; letter-spacing: .16em; }
.konbini-shelf header strong { margin-top: 5px; font: 500 25px Georgia,serif; }
.konbini-shelf header span { margin-top: 5px; color: #65787d; font-size: 11px; }
.product-row { display: grid; grid-template-columns: repeat(4,1fr); gap: 9px; margin-top: 14px; }
.product-item { position: relative; display: grid; gap: 5px; min-width: 0; padding: 7px; border: 1px solid rgba(24,53,60,.13); border-radius: 13px; background: rgba(255,255,255,.78); color: var(--ink); text-align: left; transition: transform .2s, box-shadow .2s; }
.product-item img { width: 100%; aspect-ratio: 1; object-fit: contain; }
.product-item span { overflow: hidden; font-size: 10px; font-weight: 850; text-overflow: ellipsis; white-space: nowrap; }
.product-item small { color: #9c5b4c; font-size: 10px; font-weight: 850; }
.product-item.is-picked { border-color: #c27661; background: #fff5e4; box-shadow: inset 0 0 0 2px rgba(208,119,96,.16); transform: translateY(-5px); }
.product-item.is-picked::after { content: '✓'; position: absolute; top: 5px; right: 5px; display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--coral); color: white; font-size: 11px; }
.shelf-checkout { display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 46px; margin-top: 15px; padding: 0 3px 0 12px; border: 0; border-radius: 999px; background: var(--deep); color: white; font-size: 12px; font-weight: 850; }
.shelf-checkout i { display: grid; place-items: center; width: 36px; height: 36px; margin-right: 5px; border-radius: 50%; background: var(--paper); color: var(--ink); font-size: 19px; font-style: normal; }
.checkout-slip { position: absolute; z-index: 14; right: 6vw; bottom: 8vh; width: min(330px,31vw); padding: 22px; border-radius: 3px 3px 18px 18px; background: #fffaf0; color: var(--ink); box-shadow: 0 22px 54px rgba(0,0,0,.33); }
.checkout-slip::after { content: ''; position: absolute; right: 0; bottom: -14px; left: 0; height: 16px; background: linear-gradient(135deg,transparent 7px,#fffaf0 0) 0 0/14px 16px repeat-x; }
.checkout-slip > small { color: #aa6552; font-size: 9px; font-weight: 900; letter-spacing: .16em; }
.checkout-slip > strong { display: block; margin: 8px 0 14px; font: 500 38px Georgia,serif; }
.checkout-methods { display: grid; gap: 6px; }
.checkout-methods button { min-height: 42px; padding: 0 12px; border: 1px solid rgba(24,53,60,.12); border-radius: 9px; background: #f4ecde; color: var(--ink); text-align: left; font-size: 12px; font-weight: 850; }
.checkout-reader { display: grid; place-items: center; gap: 7px; min-height: 140px; border: 1px dashed #7b969b; border-radius: 14px; color: #63777a; font-size: 11px; text-align: center; }
.checkout-reader i { width: 45px; height: 32px; border: 2px solid #527177; border-radius: 7px; }
.checkout-reader.is-receiving { background: #e8f5ed; color: #204e3a; }
.checkout-object { position: absolute; z-index: 16; right: calc(6vw + 360px); bottom: 13vh; min-width: 180px; min-height: 62px; border: 0; border-radius: 12px; box-shadow: 0 16px 30px rgba(0,0,0,.35); font-weight: 850; touch-action: none; }
.checkout-object--cash { background: #e6d1a1; color: #4f4022; }
.checkout-object--bank, .checkout-object--phone, .checkout-object--card { background: #16434f; color: white; }
.checkout-object--hayakaken { background: #efcb5e; color: #25424a; }
.prayer-gesture { --hold-duration: 1200ms; }
.scene--tanaka-close .world img { object-fit: contain; background: #171512; }
.return-traces { position: absolute; z-index: 14; right: 6vw; bottom: 10vh; width: min(340px,30vw); padding: 18px; border: 1px solid rgba(255,255,255,.35); border-radius: 17px; background: rgba(7,29,35,.72); backdrop-filter: blur(15px); }
.return-traces small { display: block; color: #f0b19b; font-size: 9px; font-weight: 900; letter-spacing: .16em; }
.return-traces span { display: block; margin-top: 8px; font: 400 16px/1.4 Georgia,serif; }

.world--panorama { touch-action: pan-y; }
.world--panorama picture { position: absolute; top: 0; bottom: 0; left: 0; width: 145%; will-change: transform; }
.world--panorama picture img { object-position: center; }
.panorama-scene { cursor: grab; }
.panorama-scene:active { cursor: grabbing; }
.look-focus { position: absolute; z-index: 7; top: 50%; left: 50%; width: 84px; height: 84px; transform: translate(-50%,-50%); border: 1px solid rgba(255,255,255,.45); border-radius: 50%; pointer-events: none; box-shadow: 0 0 0 999px rgba(3,20,25,.035); }
.baggage-target { position: absolute; z-index: 11; top: 61%; display: grid; place-items: center; width: 105px; height: 95px; padding: 0; transform: translate(-50%,-50%) scale(.8); border: 0; background: radial-gradient(circle,rgba(255,243,214,.15),transparent 67%); opacity: 0; pointer-events: none; filter: drop-shadow(0 18px 20px rgba(0,0,0,.35)); transition: opacity .25s, transform .25s; }
.baggage-target.is-visible { opacity: 1; transform: translate(-50%,-50%) scale(1); pointer-events: auto; }
.baggage-target i { position: absolute; top: 18px; width: 44px; height: 32px; border: 3px solid #f7ead0; border-bottom: 0; border-radius: 12px 12px 0 0; box-shadow: 0 0 0 5px rgba(8,30,36,.24); }
.baggage-target span { position: absolute; bottom: -2px; padding: 6px 9px; border-radius: 999px; background: var(--paper); color: var(--ink); font-size: 10px; font-weight: 850; }
.gesture-hint { position: absolute; z-index: 12; left: 50%; bottom: max(24px,var(--safe-bottom)); display: flex; align-items: center; gap: 10px; max-width: min(90vw,480px); padding: 11px 16px; transform: translateX(-50%); border: 1px solid var(--line); border-radius: 999px; background: rgba(7,29,35,.68); font-size: 12px; font-weight: 800; text-align: center; backdrop-filter: blur(14px); transition: opacity .3s; }
.gesture-hint i { font-size: 19px; font-style: normal; animation: horizontal 1.7s ease-in-out infinite; }
.gesture-hint.is-faded { opacity: 0; pointer-events: none; }
.gesture-hint--ride { bottom: 7vh; }

.travel-line, .taxi-route { position: absolute; z-index: 12; left: 50%; bottom: 9vh; display: grid; grid-template-columns: auto minmax(130px,22vw) auto; align-items: center; gap: 12px; transform: translateX(-50%); text-shadow: 0 2px 10px rgba(0,0,0,.65); font-size: 11px; font-weight: 850; }
.travel-line i, .taxi-route i { position: relative; height: 3px; border-radius: 3px; background: rgba(255,255,255,.38); }
.travel-line i b, .taxi-route i b { position: absolute; top: 50%; left: 0; width: 11px; height: 11px; transform: translateY(-50%); border-radius: 50%; background: #f3b09c; animation: routeMove 5s linear forwards; }
.travel-line .is-past { color: #f3b09c; }
.scene--moving .world img { width: 106%; animation: sceneryMove 8s linear infinite alternate; }

.machine-ui { position: absolute; z-index: 14; right: 5vw; bottom: 6vh; width: min(680px,52vw); max-height: 72vh; overflow: auto; border: 1px solid rgba(255,255,255,.42); border-radius: 24px; background: rgba(246,239,226,.95); color: var(--ink); box-shadow: var(--shadow); backdrop-filter: blur(16px); }
.machine-ui > header { padding: 22px; }
.machine-ui > header small, .machine-ui > header strong, .machine-ui > header span { display: block; }
.machine-ui > header small { color: var(--coral); font-size: 10px; font-weight: 900; letter-spacing: .15em; }
.machine-ui > header strong { margin-top: 7px; font: 500 29px Georgia,serif; }
.machine-ui > header span { margin-top: 5px; color: #62777b; font-size: 12px; }
.machine-options { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; border-top: 1px solid rgba(24,53,60,.12); background: rgba(24,53,60,.12); }
.machine-options button { display: grid; align-content: start; justify-items: start; gap: 7px; min-height: 180px; padding: 22px 16px; border: 0; background: var(--paper-2); color: var(--ink); text-align: left; }
.machine-options button:hover { background: white; }
.machine-options i { display: grid; place-items: center; width: 47px; height: 35px; border-radius: 7px; background: #154650; color: white; font-size: 11px; font-style: normal; font-weight: 900; }
.machine-options b { margin-top: 8px; font-family: Georgia,serif; }
.machine-options span { color: #677a7e; font-size: 11px; line-height: 1.35; }
.ticket-icon::after { content: ''; width: 24px; height: 13px; border: 1px solid white; border-radius: 2px; }
.machine-payment { position: relative; min-height: 330px; padding: 24px; }
.machine-screen { display: grid; gap: 6px; min-height: 145px; padding: 20px; border-radius: 16px; background: #103d46; color: white; }
.machine-screen small { color: #f0b19d; font-size: 10px; font-weight: 900; letter-spacing: .14em; }
.machine-screen strong { font: 500 30px/1.1 Georgia,serif; }
.machine-screen span { font-size: 11px; }
.bill-slot { position: absolute; right: 27px; bottom: 33px; display: grid; justify-items: center; gap: 5px; width: 120px; height: 100px; padding: 16px; border: 1px solid rgba(24,53,60,.2); border-radius: 14px; background: white; }
.bill-slot i { width: 80px; height: 7px; border-radius: 6px; background: #18353c; box-shadow: inset 0 2px 2px black; }
.bill-slot span { color: #6c7d80; font-size: 10px; }
.bill-slot.is-receiving { box-shadow: 0 0 0 5px rgba(217,118,96,.18); }
.cash-note { touch-action: none; position: absolute; left: 30px; bottom: 40px; display: grid; justify-items: start; gap: 5px; width: 210px; min-height: 80px; padding: 15px; border: 1px solid rgba(58,77,67,.3); border-radius: 4px; background: linear-gradient(140deg,#e9dfb9,#cad5b8); color: #3b514b; box-shadow: 0 10px 24px rgba(0,0,0,.18); text-align: left; }
.cash-note small { font-size: 8px; font-weight: 900; letter-spacing: .13em; }
.cash-note strong { font: 500 27px Georgia,serif; }
.instrument-choice, .wallet-methods { display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; margin-top: 14px; }
.instrument-choice button, .wallet-methods button { display: grid; justify-items: center; gap: 8px; min-height: 105px; padding: 13px; border: 1px solid rgba(24,53,60,.14); border-radius: 16px; background: white; color: var(--ink); }
.phone-card-mini { width: 25px; height: 43px; border: 2px solid var(--deep); border-radius: 6px; }
.bank-card-mini { width: 57px; height: 38px; border-radius: 7px; background: linear-gradient(135deg,#123e48,#206371); }

.scene--gate .world img { filter: brightness(.76) saturate(.75); }
.gate-stage { position: absolute; z-index: 13; inset: 90px 0 0; }
.gate-copy { position: absolute; top: 5vh; left: 6vw; width: min(380px,34vw); text-shadow: 0 2px 15px rgba(0,0,0,.7); }
.gate-copy small { color: #f1b09d; font-weight: 900; letter-spacing: .16em; }
.gate-copy p { font: 400 17px/1.5 Georgia,serif; }
.transit-reader { position: absolute; top: 40%; left: 57%; display: grid; place-items: center; gap: 7px; width: 140px; height: 130px; transform: translate(-50%,-50%); border: 1px solid rgba(255,255,255,.43); border-radius: 20px; background: rgba(6,30,36,.78); backdrop-filter: blur(14px); }
.transit-reader i { width: 72px; height: 48px; border: 2px solid #8bd2c7; border-radius: 14px; }
.transit-reader--slot i { width: 86px; height: 8px; border: 0; border-radius: 5px; background: #06181d; box-shadow: inset 0 2px 3px rgba(0,0,0,.9); }
.transit-reader.is-receiving { border-color: #ffe6a9; box-shadow: 0 0 0 6px rgba(255,230,169,.16); }
.plain-ic-card, .paper-ticket, .travel-phone, .travel-bank-card { touch-action: none; position: absolute; z-index: 16; right: 9vw; bottom: 9vh; display: grid; align-content: center; gap: 6px; width: 220px; min-height: 132px; padding: 18px; border: 0; border-radius: 18px; text-align: left; box-shadow: 0 20px 45px rgba(0,0,0,.34); }
.plain-ic-card { background: linear-gradient(135deg,#e9e1cc,#c9b68e); color: #16373f; }
.plain-ic-card::after { content: ')))'; position: absolute; right: 15px; top: 13px; transform: rotate(90deg); font-size: 10px; font-weight: 900; }
.plain-ic-card small, .travel-bank-card small { color: #9a5f4d; font-size: 9px; font-weight: 900; letter-spacing: .14em; }
.plain-ic-card strong, .paper-ticket strong, .travel-phone strong, .travel-bank-card strong { font: 500 22px Georgia,serif; }
.plain-ic-card span, .paper-ticket span, .travel-phone span, .travel-bank-card span { font-size: 10px; font-weight: 750; }
.paper-ticket { width: 190px; min-height: 90px; border-radius: 5px 12px 5px 12px; background: #fff3d9; color: var(--ink); }
.paper-ticket--return { left: 57%; top: 57%; right: auto; bottom: auto; transform: translateX(-50%); animation: ticketReturn .45s ease both; }
.travel-phone { width: 150px; min-height: 245px; border: 7px solid #102930; border-radius: 28px; background: linear-gradient(165deg,#f5ecdd,#d8c2a4); color: var(--ink); text-align: center; }
.travel-phone i { position: absolute; top: 8px; left: 50%; width: 45px; height: 11px; transform: translateX(-50%); border-radius: 10px; background: #102930; }
.travel-bank-card { background: linear-gradient(145deg,#123e48,#071f29); color: white; }
.plain-ic-card.is-active, .paper-ticket.is-active, .travel-phone.is-active, .travel-bank-card.is-active { z-index: 40; }

.metro-route { position: absolute; z-index: 13; top: 14vh; left: 50%; display: flex; align-items: center; gap: 10px; padding: 10px 14px; transform: translateX(-50%); border: 1px solid var(--line); border-radius: 999px; background: rgba(7,29,35,.64); text-align: center; backdrop-filter: blur(12px); font-size: 10px; font-weight: 850; }
.metro-route span { min-width: 58px; opacity: .65; }
.metro-route small { font-size: 8px; font-weight: 600; }
.metro-route i { width: clamp(35px,6vw,90px); height: 2px; background: rgba(255,255,255,.45); }
.metro-route .is-past { color: #f0b19d; opacity: 1; }
.metro-route .is-current { color: white; opacity: 1; text-shadow: 0 0 10px white; }
.train-announcement { position: absolute; z-index: 12; left: 50%; bottom: 10vh; width: min(460px,70vw); padding: 15px 18px; transform: translateX(-50%); border: 1px solid var(--line); border-radius: 17px; background: rgba(7,29,35,.64); text-align: center; backdrop-filter: blur(13px); }
.train-announcement span { color: #efb09b; font-size: 9px; font-weight: 900; letter-spacing: .15em; }
.train-announcement p { margin: 7px 0 0; font: 500 18px Georgia,serif; }

.exit-sign-target { position: absolute; z-index: 12; top: 35%; display: grid; justify-items: start; width: 230px; padding: 13px 17px; transform: translate(-50%,-50%) scale(.9); border: 1px solid rgba(255,255,255,.4); background: #174a77; color: white; box-shadow: 0 16px 30px rgba(0,0,0,.3); opacity: 0; pointer-events: none; text-align: left; transition: opacity .25s, transform .25s; }
.exit-sign-target.is-visible { opacity: 1; transform: translate(-50%,-50%) scale(1); pointer-events: auto; }
.exit-sign-target small { font-size: 8px; letter-spacing: .16em; }
.exit-sign-target strong { font: 500 28px Georgia,serif; }
.exit-sign-target span { font-size: 10px; }

.scene--taxi-door .world img { transform: scale(1.04); }
.taxi-door-plane { position: absolute; z-index: 9; right: 6vw; bottom: 12vh; width: min(340px,34vw); height: min(360px,42vh); perspective: 900px; overflow: visible; }
.taxi-door-plane::before { content: ''; position: absolute; inset: 0; border: 8px solid rgba(15,35,39,.92); border-radius: 110px 20px 20px 30px; background: linear-gradient(145deg,rgba(44,68,72,.15),rgba(4,18,22,.68)); box-shadow: 0 20px 50px rgba(0,0,0,.34); }
.taxi-door-plane > div { position: absolute; inset: 8px; transform-origin: right center; border-radius: 100px 13px 13px 23px; background: linear-gradient(140deg,rgba(27,51,56,.86),rgba(8,25,30,.96)); transition: transform .9s cubic-bezier(.2,.8,.2,1); }
.door-is-open .taxi-door-plane > div { transform: rotateY(-72deg); }
.door-observation { position: absolute; z-index: 11; left: 50%; bottom: 8vh; transform: translateX(-50%); padding: 10px 15px; border: 1px solid var(--line); border-radius: 999px; background: rgba(7,29,35,.7); font-size: 12px; font-weight: 800; backdrop-filter: blur(12px); }

.taxi-dialogue { position: absolute; z-index: 14; inset: 100px 5vw 5vh; display: grid; grid-template-columns: .75fr 1.25fr; align-items: end; gap: 30px; }
.driver-line { align-self: start; margin-top: 8vh; padding: 18px; border-left: 2px solid #efb09b; text-shadow: 0 2px 16px rgba(0,0,0,.7); }
.driver-line small { color: #efb09b; font-weight: 900; letter-spacing: .15em; }
.driver-line p { margin: 8px 0 3px; font: 500 38px Georgia,serif; }
.driver-line span { font-size: 12px; }
.dialogue-choices { display: grid; gap: 10px; width: min(570px,46vw); justify-self: end; }
.dialogue-choices button { display: grid; gap: 6px; min-height: 90px; padding: 16px 18px; border: 1px solid rgba(255,255,255,.42); border-radius: 19px; background: rgba(246,239,227,.94); color: var(--ink); text-align: left; box-shadow: 0 15px 35px rgba(0,0,0,.26); }
.dialogue-choices small { color: var(--coral); font-size: 9px; font-weight: 900; letter-spacing: .15em; }
.dialogue-choices span { font: 500 16px/1.45 Georgia,serif; }
.driver-target { position: absolute; top: 37%; left: 35%; display: grid; place-items: center; width: 170px; height: 130px; border: 1px solid var(--line); border-radius: 20px; background: rgba(7,29,35,.62); text-align: center; backdrop-filter: blur(12px); font-size: 11px; }
.driver-target.is-receiving { border-color: #ffe6a9; box-shadow: 0 0 0 5px rgba(255,230,169,.17); }
.travel-phone--address { right: 9vw; bottom: 7vh; width: 180px; }
.taxi-route { bottom: auto; top: 15vh; }
.taxi-route i b { animation-duration: 6.5s; }

.taxi-payment { position: absolute; z-index: 14; inset: 90px 4vw 4vh; display: grid; grid-template-columns: .8fr 1.2fr; align-items: end; gap: 4vw; }
.fare-display { align-self: start; margin-top: 8vh; padding-left: 18px; border-left: 2px solid #efb09b; text-shadow: 0 2px 15px rgba(0,0,0,.72); }
.fare-display small, .fare-display strong, .fare-display span { display: block; }
.fare-display small { color: #efb09b; font-weight: 900; letter-spacing: .16em; }
.fare-display strong { margin-top: 8px; font: 500 clamp(44px,6vw,82px) Georgia,serif; }
.fare-display span { max-width: 38ch; font-size: 12px; line-height: 1.5; }
.physical-wallet { justify-self: end; width: min(520px,45vw); padding: 20px; border: 1px solid rgba(255,255,255,.38); border-radius: 24px; background: rgba(245,237,224,.94); color: var(--ink); box-shadow: var(--shadow); }
.wallet-methods { grid-template-columns: repeat(3,1fr); }
.wallet-methods button { min-height: 125px; }
.wallet-methods button span { color: #687a7d; font-size: 10px; }
.yen-note-mini { display: grid; place-items: center; width: 56px; height: 38px; background: #d8d9ad; color: #405249; font-style: normal; }
.payment-present { position: relative; min-height: 55vh; }
.neutral-terminal { position: absolute; top: 5%; right: 10%; display: grid; gap: 7px; width: 250px; min-height: 250px; padding: 25px; border: 8px solid #1a2e32; border-radius: 28px; background: #e6e4dd; color: var(--ink); box-shadow: 0 25px 55px rgba(0,0,0,.4); }
.neutral-terminal span { color: #6b7a7d; font-size: 9px; font-weight: 900; letter-spacing: .12em; }
.neutral-terminal strong { align-self: center; font: 500 34px Georgia,serif; }
.neutral-terminal i { justify-self: center; width: 80px; height: 58px; border: 2px solid #5a8f88; border-radius: 16px; }
.neutral-terminal.is-receiving { box-shadow: 0 0 0 6px rgba(255,230,169,.17), 0 25px 55px rgba(0,0,0,.4); }
.payment-present > .travel-phone, .payment-present > .travel-bank-card, .payment-present > .cash-note { right: auto; left: 5%; bottom: 3%; }
.cash-note--taxi { position: absolute; width: 230px; min-height: 95px; }

.scene--kukuru .world img { object-position: 50% 48%; }
.scene--kukuru .scene-vignette { background: linear-gradient(180deg,rgba(3,16,20,.2),transparent 32%,rgba(3,16,20,.65)); }
.whisper--kukuru { width: min(560px,45vw); }
.genkan-interaction { position: absolute; z-index: 13; inset: 90px 0 0; }
.genkan-copy { position: absolute; top: 5vh; left: 6vw; width: min(420px,36vw); padding-left: 17px; border-left: 2px solid #efb09b; text-shadow: 0 2px 16px rgba(0,0,0,.72); }
.genkan-copy small { color: #efb09b; font-weight: 900; letter-spacing: .15em; }
.genkan-copy p { font: 400 17px/1.5 Georgia,serif; }
.lower-floor { position: absolute; left: 31%; bottom: 4vh; display: grid; place-items: center; width: 35%; height: 25%; border: 1px dashed rgba(255,255,255,.42); border-radius: 50%; background: rgba(236,182,124,.08); transition: background .25s, box-shadow .25s; }
.lower-floor span { padding: 7px 10px; border-radius: 999px; background: rgba(7,29,35,.7); font-size: 10px; font-weight: 800; }
.lower-floor.is-receiving { background: rgba(255,226,172,.18); box-shadow: inset 0 0 40px rgba(255,226,172,.2); }
.lower-floor.is-complete { border-style: solid; }
.shoe-pair { touch-action: none; position: absolute; z-index: 15; right: 9vw; bottom: 8vh; display: flex; align-items: end; gap: 9px; padding: 10px 14px 27px; border: 0; background: transparent; filter: drop-shadow(0 12px 16px rgba(0,0,0,.4)); }
.shoe-pair i { display: block; width: 45px; height: 100px; transform: rotate(-4deg); border-radius: 48% 48% 35% 35% / 60% 60% 25% 25%; background: linear-gradient(90deg,#2d241e,#5b4233 55%,#261e19); box-shadow: inset -5px -8px 12px rgba(0,0,0,.25); }
.shoe-pair i + i { transform: rotate(5deg); }
.shoe-pair span { position: absolute; left: 50%; bottom: 0; width: max-content; padding: 6px 9px; transform: translateX(-50%); border-radius: 999px; background: rgba(7,29,35,.74); font-size: 10px; font-weight: 800; }

.fatal { display: grid; place-items: center; height: 100%; background: var(--night); color: white; }

@keyframes reveal { from { opacity: 0; transform: translateY(10px); } }
@keyframes cueIn { from { opacity: 0; transform: translate(-50%,-42%) scale(.94); } }
@keyframes breathe { 50% { transform: scale(.55); opacity: .5; } }
@keyframes coverDrift { from { transform: scale(1.08); } to { transform: scale(1.02); } }
@keyframes phoneWake { 50% { transform: translateY(-5px); filter: drop-shadow(0 20px 30px rgba(239,176,155,.4)); } }
@keyframes letterOpen { from { opacity: 0; transform: rotate(-2deg) scale(.88) translateY(30px); } }
@keyframes phoneModeIn { from { opacity: 0; } }
@keyframes laptopIn { from { opacity: 0; transform: scale(.96) translateY(12px); } }
@keyframes notificationIn { from { opacity: 0; transform: translateY(12px); } }
@keyframes horizontal { 50% { transform: translateX(6px); } }
@keyframes routeMove { to { left: calc(100% - 11px); } }
@keyframes sceneryMove { from { transform: translateX(-2%); } to { transform: translateX(0); } }
@keyframes ticketReturn { from { opacity: 0; transform: translate(-50%,-40px); } }
@keyframes bathSteam { to { transform: scale(1.025); filter: saturate(1.08) brightness(1.06); } }
@keyframes riseIn { from { opacity: 0; transform: translateY(10px); } }

@media (max-width: 800px) {
  .chrome { grid-template-columns: 1fr auto; gap: 10px; padding: var(--safe-top) 14px 25px; }
  .identity { font-size: 11px; letter-spacing: .12em; }
  .identity__seal { width: 37px; height: 37px; font-size: 9px; }
  .place { position: absolute; top: calc(var(--safe-top) + 52px); left: 50%; width: 70%; transform: translateX(-50%); }
  .place strong { font-size: 19px; }
  .place span { max-width: 100%; font-size: 9px; }
  .tools { grid-column: 2; }
  .tool { width: 37px; height: 37px; }
  .whisper { left: 17px; right: 17px; bottom: calc(var(--safe-bottom) + 78px); width: auto; }
  .whisper > span { font-size: 9px; }
  .whisper h1 { font-size: clamp(34px,10vw,48px); }
  .whisper p { margin-top: 10px; font-size: 15px; line-height: 1.45; }
  .whisper--room { top: calc(var(--safe-top) + 103px); bottom: auto; width: auto; }
  .whisper--night, .whisper--plane, .whisper--ride { bottom: calc(var(--safe-bottom) + 185px); }
  .world-cue { max-width: 76vw; min-height: 44px; padding-right: 11px; }
  .world-cue i { width: 29px; height: 29px; }

  .cover-shade { background: linear-gradient(0deg,rgba(4,24,30,.76),transparent 62%); }
  .cover-brand { padding: var(--safe-top) 17px; font-size: 11px; }
  .cover-copy { left: 18px; right: 18px; top: auto; bottom: calc(var(--safe-bottom) + 24px); width: auto; transform: none; }
  .cover-copy h1 { font-size: clamp(66px,22vw,92px); }
  .cover-copy p { font-size: 16px; }
  .enter-summer { width: 100%; justify-content: space-between; min-height: 54px; margin-top: 25px; }

  .desk-objects { left: 14px; right: 14px; bottom: calc(var(--safe-bottom) + 38px); justify-content: center; gap: 3px; }
  .envelope { width: min(45vw,190px); }
  .envelope--mei { transform: rotate(5deg); }
  .envelope span { font-size: 9px; }
  .phone-room-object { right: 50%; bottom: calc(var(--safe-bottom) + 52px); width: 150px; transform: translateX(50%); }
  .object-focus { align-items: stretch; padding: 0; background: rgba(3,18,22,.92); backdrop-filter: none; }
  .letter-sheet { width: 100%; max-height: 100svh; padding: calc(var(--safe-top) + 45px) 25px calc(var(--safe-bottom) + 34px); border-radius: 0; transform: none; }
  .letter-sheet::before { inset: calc(var(--safe-top) + 15px) 12px calc(var(--safe-bottom) + 12px); }
  .letter-sheet p { font-size: 16px; line-height: 1.65; }
  .letter-sheet button { min-height: 47px; }

  .phone-object { right: 12px; bottom: var(--safe-bottom); width: 53px; height: 53px; padding: 0; overflow: visible; border-radius: 50%; }
  .phone-object img { width: 58px; height: 58px; }
  .phone-object span { display: none; }
  .phone-mode { place-items: stretch; background: #071c22; backdrop-filter: none; animation: none; }
  .phone-device { width: 100%; height: 100svh; padding: 0; border: 0; border-radius: 0; box-shadow: none; }
  .phone-device::before { top: calc(var(--safe-top) + 5px); }
  .phone-status { top: calc(var(--safe-top) + 7px); }
  .phone-screen { border-radius: 0; }
  .phone-screen--home { padding-top: calc(var(--safe-top) + 45px); }
  .phone-home { bottom: calc(var(--safe-bottom) + 2px); }
  .phone-return { z-index: 15; right: auto; left: 17px; bottom: calc(var(--safe-bottom) + 12px); background: rgba(7,29,35,.86); }
  .phone-mode--forced .phone-return { display: none; }
  .phone-mode--forced .phone-device::before { display: none; }
  .phone-screen--profile { padding: calc(var(--safe-top) + 50px) 22px calc(var(--safe-bottom) + 34px); }
  .profile-question > p { font-size: 23px; }

  .laptop-experience { top: 0; right: 0; bottom: 0; left: 0; width: 100%; border: 0; border-radius: 0; background: var(--paper); }
  .laptop-experience > header { padding-top: var(--safe-top); min-height: calc(48px + var(--safe-top)); }
  .laptop-experience > header small { display: none; }
  .booking-form { grid-template-columns: 1fr; gap: 24px; padding: 28px 18px calc(var(--safe-bottom) + 28px); }
  .booking-intro h1 { font-size: 42px; }
  .booking-intro p { font-size: 13px; }
  .booking-fields { gap: 11px; }
  .booking-submit { grid-column: 1; margin: 0; }

  .wallet-scene { padding: 100px 14px calc(var(--safe-bottom) + 16px); align-items: center; }
  .budget-envelope { width: min(96vw,460px); }
  .wallet-physical { align-self: start; width: min(96vw,560px); margin-top: 4vh; }
  .wallet-note { top: 25%; left: 45%; width: 48%; padding: 10px; }
  .wallet-note strong { font-size: 23px; }
  .wallet-note p { font-size: 10px; }
  .allocation-strip { position: absolute; left: 14px; right: 14px; bottom: var(--safe-bottom); width: auto; grid-template-columns: repeat(3,1fr); gap: 5px; }
  .allocation-strip button { min-width: 0; min-height: 82px; padding: 9px; border-radius: 13px; }
  .allocation-strip b { font-size: 11px; }
  .allocation-strip button span { font-size: 9px; }

  .packing-stage { inset: 122px 0 0; grid-template-columns: 1fr; grid-template-rows: auto minmax(0,1fr) auto auto; gap: 7px; padding: 0 13px calc(var(--safe-bottom) + 8px); }
  .packing-copy { align-self: start; max-width: none; padding: 0; text-align: center; }
  .packing-copy small { font-size: 9px; }
  .packing-copy p { margin: 5px auto 0; max-width: 40ch; font-size: 11px; line-height: 1.35; }
  .suitcase-drop { align-self: center; width: min(62vw,300px); }
  .suitcase-drop > span { font-size: 9px; }
  .packing-objects { grid-template-columns: repeat(3,1fr); gap: 6px; }
  .packing-object { grid-template-columns: 1fr; justify-items: center; min-height: 88px; padding: 6px; border-radius: 13px; text-align: center; }
  .packing-object img { width: 55px; height: 55px; }
  .packing-object span { font-size: 9px; }
  .suitcase-close { grid-column: 1; min-height: 44px; }

  .night-notification { right: 14px; bottom: calc(var(--safe-bottom) + 78px); left: 14px; width: auto; }
  .lights-out { right: 14px; bottom: calc(var(--safe-bottom) + 84px); left: 14px; width: auto; min-height: 56px; }
  .gate-present { right: 14px; bottom: calc(var(--safe-bottom) + 70px); left: 14px; grid-template-columns: .72fr 1.28fr; gap: 10px; }
  .gate-reader { width: 100%; height: 115px; border-radius: 18px; }
  .boarding-pass { width: 100%; padding: 14px; }
  .boarding-pass strong { font-size: 19px; }
  .sleep-gesture { right: 14px; bottom: calc(var(--safe-bottom) + 84px); left: 14px; width: auto; min-width: 0; min-height: 64px; justify-items: center; }
  .scene--aisle .world img { object-position: center; }

  .world--panorama picture { width: 220%; }
  .look-focus { top: 47%; width: 72px; height: 72px; }
  .baggage-target { top: 60%; width: 105px; height: 100px; }
  .gesture-hint { bottom: calc(var(--safe-bottom) + 8px); width: max-content; font-size: 11px; }
  .travel-line, .taxi-route { bottom: calc(var(--safe-bottom) + 75px); grid-template-columns: auto minmax(90px,28vw) auto; width: 90%; }
  .gesture-hint--ride { bottom: calc(var(--safe-bottom) + 70px); }

  .machine-ui { top: calc(var(--safe-top) + 108px); right: 12px; bottom: calc(var(--safe-bottom) + 12px); left: 12px; width: auto; max-height: none; border-radius: 20px; }
  .machine-ui:has(.machine-options) { bottom: auto; }
  .machine-ui > header { padding: 17px; }
  .machine-ui > header strong { font-size: 25px; }
  .machine-options { grid-template-columns: 1fr; }
  .machine-options button { grid-template-columns: 48px 1fr; grid-template-rows: auto auto; align-content: center; min-height: 92px; padding: 13px; }
  .machine-options i { grid-row: 1/3; }
  .machine-options b { margin: 0; }
  .machine-payment { min-height: 360px; padding: 16px; }
  .bill-slot { right: 20px; bottom: 30px; width: 105px; }
  .cash-note { left: 20px; bottom: 42px; width: 155px; }
  .instrument-choice { margin-top: 25px; }

  .scene--gate .world img { object-position: 52% center; }
  .gate-copy { top: 2vh; left: 17px; right: 17px; width: auto; }
  .gate-copy p { margin-top: 8px; font-size: 14px; }
  .transit-reader { top: 39%; left: 50%; width: 120px; height: 112px; }
  .plain-ic-card, .paper-ticket, .travel-phone, .travel-bank-card { right: 50%; bottom: calc(var(--safe-bottom) + 55px); transform: translateX(50%); }
  .paper-ticket--return { top: 57%; bottom: auto; left: 50%; right: auto; transform: translateX(-50%); }
  .metro-route { top: calc(var(--safe-top) + 92px); width: 92%; gap: 5px; }
  .metro-route span { min-width: 48px; }
  .train-announcement { bottom: calc(var(--safe-bottom) + 78px); width: calc(100% - 28px); }
  .train-announcement p { font-size: 16px; }
  .exit-sign-target { top: 34%; width: 200px; }

  .whisper--taxi { bottom: calc(var(--safe-bottom) + 88px); }
  .taxi-door-plane { right: 3vw; bottom: 19vh; width: 70vw; height: 37vh; }
  .door-observation { bottom: calc(var(--safe-bottom) + 72px); width: max-content; max-width: 86vw; text-align: center; }
  .taxi-dialogue { inset: calc(var(--safe-top) + 112px) 14px calc(var(--safe-bottom) + 68px); grid-template-columns: 1fr; align-content: space-between; gap: 16px; }
  .driver-line { align-self: start; margin: 0; padding: 12px; }
  .driver-line p { font-size: 32px; }
  .dialogue-choices { width: 100%; }
  .dialogue-choices button { min-height: 78px; }
  .driver-target { top: 31%; left: 50%; transform: translateX(-50%); }
  .travel-phone--address { right: 50%; bottom: 0; transform: translateX(50%); }
  .taxi-route { top: calc(var(--safe-top) + 92px); bottom: auto; }

  .taxi-payment { inset: calc(var(--safe-top) + 112px) 14px calc(var(--safe-bottom) + 34px); grid-template-columns: 1fr; align-content: space-between; gap: 14px; }
  .fare-display { align-self: start; margin: 0; }
  .fare-display strong { font-size: 48px; }
  .physical-wallet { width: 100%; padding: 12px; }
  .wallet-methods { gap: 6px; }
  .wallet-methods button { min-height: 96px; padding: 8px; }
  .wallet-methods b { font-size: 10px; }
  .payment-present { min-height: 47vh; }
  .neutral-terminal { top: 0; right: 50%; width: 190px; min-height: 190px; padding: 18px; transform: translateX(50%); }
  .neutral-terminal strong { font-size: 27px; }
  .neutral-terminal i { width: 67px; height: 47px; }
  .payment-present > .travel-phone, .payment-present > .travel-bank-card, .payment-present > .cash-note { right: 50%; left: auto; bottom: 0; transform: translateX(50%); }

  .scene--kukuru .world img { object-position: 49% center; }
  .whisper--kukuru { bottom: calc(var(--safe-bottom) + 82px); }
  .genkan-interaction { inset: calc(var(--safe-top) + 112px) 0 0; }
  .genkan-copy { top: 0; left: 17px; right: 17px; width: auto; }
  .genkan-copy p { font-size: 14px; }
  .lower-floor { left: 11%; bottom: 4vh; width: 56%; height: 24%; }
  .shoe-pair { right: 5vw; bottom: 7vh; }
  .shoe-pair i { width: 37px; height: 82px; }

}

@media (max-width: 370px) {
  .whisper h1 { font-size: 32px; }
  .whisper p { font-size: 13px; }
  .cover-copy h1 { font-size: 64px; }
  .phone-sky { min-height: 155px; }
  .profile-question > p { font-size: 20px; }
  .booking-fields { grid-template-columns: 1fr; }
  .booking-fields label.wide, .booking-fields fieldset { grid-column: auto; }
  .wallet-note p { display: none; }
  .packing-stage { inset: 116px 0 0; }
  .packing-copy p { max-height: 31px; overflow: hidden; }
  .suitcase-drop { width: 52vw; }
  .packing-object img { width: 45px; height: 45px; }
  .packing-object { min-height: 73px; }
  .machine-options button { min-height: 82px; }
  .machine-options span { font-size: 10px; }
  .fare-display span { display: none; }
}

/* Experience pass: no floating choice cards over the dinner table or shelf. */
.dinner-word { position: absolute; z-index: 14; right: 12vw; bottom: 13vh; display: grid; gap: 5px; padding: 13px 18px; border: 1px solid rgba(255,255,255,.44); border-radius: 999px; background: rgba(11,38,43,.66); color: white; text-align: left; text-shadow: 0 1px 8px rgba(0,0,0,.5); backdrop-filter: blur(12px); }
.dinner-word small { color: #efb19c; font-size: 8px; font-weight: 900; letter-spacing: .16em; }
.dinner-word strong { font: 500 21px Georgia,serif; }
.dinner-listen { position: absolute; z-index: 14; right: 14vw; bottom: 8vh; padding: 7px 2px; border: 0; border-bottom: 1px solid rgba(255,255,255,.62); background: transparent; color: white; font-size: 11px; font-weight: 800; text-shadow: 0 2px 10px rgba(0,0,0,.65); }
.konbini-objects { position: absolute; z-index: 14; right: 6vw; bottom: 11vh; display: grid; grid-template-columns: repeat(4, minmax(78px, 112px)); gap: 16px; align-items: end; }
.konbini-objects .product-item { display: grid; gap: 4px; padding: 0; border: 0; border-radius: 0; background: transparent; color: white; text-align: center; text-shadow: 0 2px 8px rgba(0,0,0,.78); box-shadow: none; }
.konbini-objects .product-item img { width: 100%; aspect-ratio: 1; object-fit: contain; filter: drop-shadow(0 14px 12px rgba(0,0,0,.38)); transition: transform .22s ease, filter .22s ease; }
.konbini-objects .product-item span { overflow: visible; font-size: 10px; white-space: normal; }
.konbini-objects .product-item small { color: #ffead7; font-size: 10px; }
.konbini-objects .product-item:hover img, .konbini-objects .product-item:focus-visible img { transform: translateY(-8px) rotate(-2deg); filter: drop-shadow(0 20px 15px rgba(0,0,0,.44)); }
.konbini-objects .product-item.is-picked { background: transparent; box-shadow: none; transform: none; }
.konbini-objects .product-item.is-picked img { transform: translateY(-8px); filter: drop-shadow(0 0 0 rgba(0,0,0,0)) drop-shadow(0 0 12px rgba(255,232,182,.85)); }
.konbini-objects .product-item.is-picked::after { top: -7px; right: 6px; }

@media (max-width: 800px) {
  .dinner-word { right: 17px; bottom: calc(var(--safe-bottom) + 135px); }
  .dinner-listen { right: 18px; bottom: calc(var(--safe-bottom) + 91px); }
  .konbini-objects { right: 12px; bottom: calc(var(--safe-bottom) + 87px); grid-template-columns: repeat(4, minmax(52px, 1fr)); gap: 6px; width: calc(100% - 24px); }
  .konbini-objects .product-item span { font-size: 8px; }
  .konbini-objects .product-item small { font-size: 8px; }
  .scene--konbini .whisper { top: calc(var(--safe-top) + 106px); bottom: auto; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

@media (max-width: 800px) {
  .scene--j1b-room .world img, .scene--yukata .world img, .scene--morning .world img, .scene--breakfast .world img { object-position: 56% center; }
  .whisper--sato, .whisper--bath, .whisper--yukata, .whisper--dinner, .whisper--morning, .whisper--breakfast, .whisper--aoi, .whisper--street, .whisper--konbini, .whisper--kushida, .whisper--temizu, .whisper--mainhall, .whisper--tanaka, .whisper--return { bottom: calc(var(--safe-bottom) + 78px); }
  .scene--j1b-room .whisper { top: calc(var(--safe-top) + 108px); bottom: auto; }
  .room-suitcase { right: 13px; bottom: calc(var(--safe-bottom) + 98px); width: 132px; min-height: 64px; }
  .room-baggage-place { right: 50%; bottom: calc(var(--safe-bottom) + 98px); width: 128px; min-height: 64px; transform: translateX(50%); }
  .shoji-breath { top: 32%; left: 50%; transform: translateX(-50%); white-space: nowrap; }
  .scene--garden .world picture { width: 250%; }
  .garden-lantern { top: 54%; }
  .bath-breathe, .prayer-gesture { right: 14px; bottom: calc(var(--safe-bottom) + 86px); left: 14px; width: auto; min-height: 62px; justify-items: center; }
  .obi-place { top: 46%; left: 50%; width: 190px; transform: translateX(-50%); }
  .obi-object { right: 50%; bottom: calc(var(--safe-bottom) + 88px); width: 225px; transform: translateX(50%); }
  .dinner-gesture { right: 14px; bottom: calc(var(--safe-bottom) + 84px); left: 14px; width: auto; }
  .scene--night .whisper { bottom: calc(var(--safe-bottom) + 174px); }
  .scene--aoi .world img { object-position: center; }
  .scene--street .whisper { bottom: calc(var(--safe-bottom) + 84px); }
  .konbini-shelf { right: 12px; bottom: calc(var(--safe-bottom) + 10px); left: 12px; width: auto; padding: 13px; border-radius: 18px; }
  .konbini-shelf header strong { font-size: 21px; }
  .product-row { gap: 5px; }
  .product-item { padding: 4px; border-radius: 10px; }
  .product-item span { font-size: 8px; }
  .product-item small { font-size: 8px; }
  .checkout-slip { right: 14px; bottom: calc(var(--safe-bottom) + 94px); left: 14px; width: auto; }
  .checkout-object { right: 50%; bottom: calc(var(--safe-bottom) + 20px); min-width: 190px; transform: translateX(50%); }
  .scene--tanaka .world img { object-position: 56% center; }
  .scene--tanaka-close .world img { object-fit: contain; }
  .return-traces { right: 14px; bottom: calc(var(--safe-bottom) + 16px); left: 14px; width: auto; }
}

@media (max-width: 370px) {
  .whisper--sato h1, .whisper--bath h1, .whisper--yukata h1, .whisper--dinner h1, .whisper--morning h1, .whisper--breakfast h1, .whisper--aoi h1, .whisper--street h1, .whisper--konbini h1, .whisper--kushida h1, .whisper--temizu h1, .whisper--mainhall h1, .whisper--tanaka h1, .whisper--return h1 { font-size: 30px; }
  .konbini-shelf header span { display: none; }
  .checkout-slip { bottom: calc(var(--safe-bottom) + 80px); padding: 15px; }
  .checkout-slip > strong { margin: 5px 0 9px; font-size: 31px; }
}

/* 2026-09-12 lived-experience pass: J1B + J2 */
.scene--sato-welcome .whisper { max-width: 430px; }
.scene--kukuru-street .world img { object-position: 74% center; }
.taxi-paid-state { position:absolute; z-index:15; right:7vw; bottom:11vh; display:grid; justify-items:center; gap:7px; min-width:260px; padding:22px; border:1px solid rgba(255,255,255,.28); border-radius:22px; background:rgba(8,36,42,.82); box-shadow:var(--shadow); backdrop-filter:blur(16px); }
.taxi-paid-state i { display:grid; place-items:center; width:46px; height:46px; border-radius:50%; background:#e6f2e8; color:#225b3e; font-style:normal; font-size:25px; }
.taxi-paid-state strong { font:500 24px Georgia,serif; }
.taxi-paid-state span,.taxi-paid-state small { color:#d8e7e4; font-size:11px; }

.bath-effects,.bath-towel,.temizu-ladle,.dinner-chopsticks,.yukata-panel,.obi-object--lived { touch-action:none; user-select:none; -webkit-user-select:none; }
.bath-effects { position:absolute; z-index:15; right:10vw; bottom:14vh; min-width:160px; min-height:70px; padding:12px 18px; border:1px solid rgba(255,255,255,.4); border-radius:16px; background:linear-gradient(145deg,#263f44,#112a30); color:#fff; box-shadow:0 18px 35px rgba(0,0,0,.33); font-weight:850; }
.bath-dry-shelf { position:absolute; z-index:14; right:6vw; top:22vh; display:grid; place-items:center; width:170px; min-height:82px; border:1px dashed rgba(255,255,255,.6); border-radius:16px; background:rgba(9,33,38,.35); color:#fff; font-size:11px; }
.bath-towel { position:absolute; z-index:15; left:8vw; bottom:11vh; display:flex; align-items:center; gap:10px; padding:9px 14px; border:1px solid rgba(255,255,255,.45); border-radius:999px; background:rgba(250,245,235,.92); color:var(--ink); box-shadow:0 14px 26px rgba(0,0,0,.25); font-weight:800; }
.bath-towel i { width:42px; height:24px; border-radius:6px; background:linear-gradient(135deg,#fff,#ded8cf); box-shadow:inset 0 0 0 1px rgba(0,0,0,.08); }
.bath-shower { --hold-duration:1400ms; position:absolute; z-index:15; right:8vw; bottom:10vh; display:grid; gap:8px; min-width:180px; padding:13px 16px; border:1px solid rgba(255,255,255,.42); border-radius:18px; background:rgba(8,35,40,.76); color:#fff; font-weight:850; }
.bath-shower i { height:3px; overflow:hidden; border-radius:6px; background:rgba(255,255,255,.24); }
.bath-shower i::after { content:''; display:block; width:0; height:100%; background:#dce9e4; }
.bath-shower.is-holding i::after { width:100%; transition:width var(--hold-duration) linear; }
.bath-silence { position:absolute; z-index:10; inset:0; pointer-events:none; overflow:hidden; }
.bath-silence i { position:absolute; left:18%; bottom:12%; width:14px; height:14px; border:1px solid rgba(255,255,255,.22); border-radius:50%; animation:bathBubble 5s ease-out infinite; }
.bath-silence i:nth-child(2){ left:34%; animation-delay:1.8s; width:8px; height:8px; }
.bath-silence i:nth-child(3){ left:26%; animation-delay:3.2s; width:11px; height:11px; }
@keyframes bathBubble { 0%{transform:translateY(0) scale(.7);opacity:0} 25%{opacity:.5} 100%{transform:translateY(-90px) scale(1.4);opacity:0} }

.yukata-body { position:absolute; z-index:12; left:50%; top:25%; width:min(270px,24vw); height:54vh; transform:translateX(-50%); border-radius:46% 46% 25% 25%; border:1px solid rgba(255,255,255,.18); background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(7,29,35,.17)); pointer-events:none; }
.yukata-panel { position:absolute; z-index:15; top:38%; width:175px; min-height:170px; padding:12px; border:1px solid rgba(255,255,255,.34); background:rgba(24,44,54,.74); color:#fff; box-shadow:0 18px 34px rgba(0,0,0,.32); font-weight:850; }
.yukata-panel--right { left:9vw; border-radius:80% 18px 18px 36%; transform:rotate(-6deg); }
.yukata-panel--left { right:9vw; border-radius:18px 80% 36% 18px; transform:rotate(6deg); }
.yukata-target { position:absolute; z-index:13; top:38%; width:125px; height:190px; border:1px dashed rgba(255,255,255,.5); border-radius:22px; }
.yukata-target--right { left:calc(50% - 105px); }
.yukata-target--left { left:calc(50% - 20px); }
.obi-object--lived { right:9vw; bottom:12vh; width:240px; min-height:58px; border-radius:12px; background:linear-gradient(90deg,#3c4250,#141d29,#3c4250); color:#f7eee2; box-shadow:0 14px 30px rgba(0,0,0,.3); }
.obi-place--lived { top:54%; left:50%; width:260px; height:58px; transform:translateX(-50%); }
.yukata-progress-mark { position:absolute; z-index:16; left:50%; top:31%; width:32px; height:32px; display:grid; place-items:center; border-radius:50%; background:#eaf3e9; color:#285b3e; }

.dinner-chopsticks { position:absolute; z-index:15; left:15vw; bottom:13vh; display:flex; align-items:center; gap:4px; padding:10px 14px; border:0; border-radius:999px; background:rgba(7,29,35,.68); color:#fff; backdrop-filter:blur(10px); }
.dinner-chopsticks i { width:3px; height:72px; border-radius:3px; background:#c49662; transform:rotate(67deg); transform-origin:center; }
.dinner-chopsticks i+ i { margin-left:7px; }
.dinner-hand { position:absolute; z-index:14; right:17vw; bottom:17vh; display:grid; place-items:center; width:120px; height:80px; border:1px dashed rgba(255,255,255,.55); border-radius:50%; color:#fff; font-size:10px; }
.dinner-conversation,.aoi-conversation,.wish-choice { position:absolute; z-index:15; right:7vw; bottom:8vh; display:grid; gap:8px; width:min(410px,38vw); }
.dinner-conversation button,.aoi-conversation button,.wish-choice button { padding:12px 15px; border:1px solid rgba(255,255,255,.36); border-radius:16px; background:rgba(8,34,40,.72); color:#fff; text-align:left; font:500 13px/1.35 Georgia,serif; backdrop-filter:blur(12px); }
.night-breath,.kawabata-breath { position:absolute; z-index:12; inset:0; pointer-events:none; background:radial-gradient(circle at 60% 60%,rgba(255,210,132,.08),transparent 38%); animation:quietPulse 4.4s ease-in-out infinite alternate; }
@keyframes quietPulse { from{opacity:.45} to{opacity:1} }

.breakfast-anchor { position:absolute; z-index:14; width:46px; height:46px; border:1px solid rgba(255,255,255,.62); border-radius:50%; background:rgba(255,255,255,.08); box-shadow:0 0 0 9px rgba(255,255,255,.04); }
.breakfast-anchor--salmon { left:44%; top:51%; }
.breakfast-anchor--rice { left:58%; top:48%; }
.breakfast-anchor--tea { left:68%; top:61%; }
.breakfast-anchor::after { content:''; position:absolute; inset:50%; width:6px; height:6px; transform:translate(-50%,-50%); border-radius:50%; background:#f2c0a9; }
.breakfast-anchor.is-seen { border-color:#f2c0a9; background:rgba(242,192,169,.12); }
.breakfast-phrase { position:absolute; z-index:15; left:8vw; bottom:9vh; padding:10px 16px; border:1px solid rgba(255,255,255,.4); border-radius:999px; background:rgba(8,34,40,.66); color:#fff; font:500 17px Georgia,serif; }
.aoi-conversation { left:7vw; right:auto; }

.aisle-edges { position:absolute; z-index:15; right:6vw; bottom:5vh; display:flex; gap:8px; }
.aisle-edges button { padding:9px 12px; border:1px solid rgba(255,255,255,.35); border-radius:999px; background:rgba(7,29,35,.62); color:#fff; font-size:10px; font-weight:850; backdrop-filter:blur(10px); }
.konbini-objects--zone { grid-template-columns:repeat(3,minmax(88px,118px)); }
.bag-question p { margin:0 0 5px; font:500 21px Georgia,serif; }
.bag-question>span { color:#65787d; font-size:11px; }
.bag-question>div { display:grid; gap:6px; margin-top:12px; }
.bag-question button { min-height:42px; padding:8px 11px; border:1px solid rgba(24,53,60,.13); border-radius:10px; background:#f4ecde; color:var(--ink); text-align:left; font-weight:800; }
.checkout-slip--paid { text-align:center; }
.payment-accepted { display:grid; justify-items:center; gap:5px; }
.payment-accepted i { display:grid; place-items:center; width:44px; height:44px; border-radius:50%; background:#e5f1e6; color:#255c3d; font-style:normal; font-size:23px; }
.payment-accepted span { font-weight:900; }
.payment-accepted small { color:#718083; }

.temizu-ladle { position:absolute; z-index:15; left:13vw; bottom:13vh; min-width:145px; min-height:48px; border:1px solid rgba(255,255,255,.45); border-radius:999px; background:#b98a56; color:#fff; box-shadow:0 12px 28px rgba(0,0,0,.3); font-weight:900; }
.temizu-water { position:absolute; z-index:14; right:20vw; bottom:18vh; display:grid; place-items:center; width:145px; height:80px; border:1px dashed rgba(255,255,255,.6); border-radius:50%; background:rgba(173,213,219,.16); color:#fff; font-size:10px; }
.wish-choice { left:50%; right:auto; bottom:10vh; transform:translateX(-50%); width:min(520px,70vw); grid-template-columns:1fr 1fr; }
.tanaka-pan picture { width:155%; }
.tanaka-detail { position:absolute; z-index:14; top:48%; width:78px; height:78px; border:1px solid rgba(255,255,255,.42); border-radius:50%; background:rgba(7,29,35,.35); color:#fff; opacity:.12; transition:opacity .3s,transform .3s; }
.tanaka-detail.is-visible { opacity:1; transform:scale(1.05); }
.tanaka-detail span { font-size:10px; font-weight:850; }

@media (max-width:800px) {
  .scene--kukuru-street .world img { object-position:72% center; }
  .taxi-paid-state { right:14px; left:14px; bottom:calc(var(--safe-bottom) + 92px); min-width:0; }
  .bath-effects { right:16px; bottom:calc(var(--safe-bottom) + 108px); }
  .bath-dry-shelf { right:14px; top:24%; width:135px; min-height:70px; }
  .bath-towel { left:14px; bottom:calc(var(--safe-bottom) + 92px); }
  .bath-shower { right:14px; left:14px; bottom:calc(var(--safe-bottom) + 86px); width:auto; }
  .scene--bath .whisper { top:calc(var(--safe-top) + 94px); bottom:auto; }
  .yukata-body { top:28%; width:170px; height:45vh; }
  .yukata-panel { top:45%; width:112px; min-height:125px; }
  .yukata-panel--right { left:12px; }
  .yukata-panel--left { right:12px; }
  .yukata-target { top:44%; width:90px; height:140px; }
  .yukata-target--right { left:calc(50% - 82px); }
  .yukata-target--left { left:calc(50% - 8px); }
  .obi-object--lived { right:50%; bottom:calc(var(--safe-bottom) + 92px); width:210px; transform:translateX(50%); }
  .obi-place--lived { top:55%; width:205px; }
  .dinner-chopsticks { left:14px; bottom:calc(var(--safe-bottom) + 92px); }
  .dinner-hand { right:16px; bottom:calc(var(--safe-bottom) + 115px); width:100px; height:68px; }
  .dinner-conversation,.aoi-conversation,.wish-choice { right:14px; bottom:calc(var(--safe-bottom) + 82px); left:14px; width:auto; transform:none; }
  .aoi-conversation { bottom:calc(var(--safe-bottom) + 82px); }
  .wish-choice { grid-template-columns:1fr; }
  .breakfast-anchor--salmon { left:32%; top:56%; }
  .breakfast-anchor--rice { left:55%; top:50%; }
  .breakfast-anchor--tea { left:70%; top:62%; }
  .breakfast-phrase { left:14px; bottom:calc(var(--safe-bottom) + 92px); }
  .konbini-objects--zone { right:12px; bottom:calc(var(--safe-bottom) + 120px); grid-template-columns:repeat(3,1fr); width:calc(100% - 24px); }
  .aisle-edges { right:12px; bottom:calc(var(--safe-bottom) + 18px); left:12px; justify-content:space-between; }
  .aisle-edges button span { display:none; }
  .temizu-ladle { left:14px; bottom:calc(var(--safe-bottom) + 94px); }
  .temizu-water { right:16px; bottom:calc(var(--safe-bottom) + 96px); width:120px; height:70px; }
  .tanaka-pan picture { width:235%; }
}

/* 2026-09-12 visual QA corrections: integrate gestures into the world. */
.scene--yukata .yukata-body { display:none; }
.scene--yukata .yukata-panel {
  top:38%;
  width:245px;
  min-height:220px;
  padding:0;
  border:0;
  border-radius:34%;
  background:transparent;
  color:#fff;
  box-shadow:none;
  touch-action:none;
}
.scene--yukata .yukata-panel--right { left:24%; transform:rotate(-5deg); }
.scene--yukata .yukata-panel--left { right:23%; transform:rotate(5deg); }
.scene--yukata .yukata-panel span {
  position:absolute;
  left:50%;
  bottom:11%;
  transform:translateX(-50%);
  padding:7px 11px;
  border:1px solid rgba(255,255,255,.35);
  border-radius:999px;
  background:rgba(8,30,35,.52);
  color:#fff;
  font-size:10px;
  letter-spacing:.03em;
  white-space:nowrap;
  backdrop-filter:blur(8px);
}
.scene--yukata .yukata-panel span::after { content:'  ↘'; opacity:.8; }
.scene--yukata .yukata-panel--left span::after { content:'  ↙'; }
.scene--yukata .yukata-target {
  top:42%;
  width:54px;
  height:150px;
  border:0;
  border-left:1px dashed rgba(255,255,255,.58);
  border-radius:0;
  background:linear-gradient(90deg,rgba(255,255,255,.06),transparent);
  box-shadow:none;
  pointer-events:none;
}
.scene--yukata .yukata-target--right { left:calc(50% - 55px); }
.scene--yukata .yukata-target--left { left:calc(50% + 12px); transform:scaleX(-1); }
.scene--yukata .obi-place--lived {
  border-color:rgba(255,255,255,.4);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);
}
.dialogue-question {
  margin:0 0 3px;
  padding:0 4px 6px;
  border-bottom:1px solid rgba(255,255,255,.22);
  color:#fff;
  font:500 18px/1.25 Georgia,serif;
  text-shadow:0 2px 10px rgba(0,0,0,.65);
}
.aisle-edges button { display:flex; align-items:center; gap:7px; }
.aisle-edges b { display:grid; place-items:center; width:21px; height:21px; border-radius:50%; background:rgba(255,255,255,.12); font:700 11px/1 system-ui,sans-serif; }
.konbini-objects .product-item img { background:transparent; }

@media (max-width:800px) {
  .scene--yukata .yukata-panel { top:43%; width:46vw; min-height:180px; }
  .scene--yukata .yukata-panel--right { left:2%; transform:rotate(-4deg); }
  .scene--yukata .yukata-panel--left { right:2%; transform:rotate(4deg); }
  .scene--yukata .yukata-target { top:45%; width:42px; height:125px; }
  .scene--yukata .yukata-target--right { left:calc(50% - 45px); }
  .scene--yukata .yukata-target--left { left:calc(50% + 7px); }
  .scene--dialogue-active .whisper { display:none; }
  .scene--dialogue-active .dinner-conversation,
  .scene--dialogue-active .aoi-conversation {
    bottom:calc(var(--safe-bottom) + 74px);
    padding:13px;
    border:1px solid rgba(255,255,255,.2);
    border-radius:20px;
    background:linear-gradient(180deg,rgba(5,25,31,.55),rgba(5,25,31,.78));
    backdrop-filter:blur(13px);
  }
  .scene--dialogue-active .dinner-conversation button,
  .scene--dialogue-active .aoi-conversation button { padding:10px 12px; }
  .dialogue-question { font-size:17px; }
  .aisle-edges button { min-width:46px; justify-content:center; padding:9px 10px; }
  .aisle-edges b { width:24px; height:24px; font-size:12px; }
}

/* Dialogue compositions own their question; the large scene whisper stays out of the way. */
.scene--dialogue-active .whisper { display:none; }
.scene--taxi-paid .taxi-paid-state { animation:paymentArrive .38s cubic-bezier(.2,.8,.2,1) both; }
.scene--taxi-paid .taxi-paid-state i { animation:paymentConfirm .55s .12s cubic-bezier(.2,.9,.2,1) both; }
.scene--taxi-paid::after {
  content:'';
  position:absolute;
  z-index:13;
  left:50%;
  top:54%;
  width:170px;
  height:170px;
  border:1px solid rgba(205,241,220,.65);
  border-radius:50%;
  pointer-events:none;
  animation:paymentRipple .85s ease-out both;
}
@keyframes paymentArrive { from{opacity:0;transform:translateY(16px) scale(.98)} to{opacity:1;transform:none} }
@keyframes paymentConfirm { 0%{transform:scale(.55);opacity:0} 70%{transform:scale(1.12);opacity:1} 100%{transform:scale(1)} }
@keyframes paymentRipple { from{opacity:.85;transform:translate(-50%,-50%) scale(.25)} to{opacity:0;transform:translate(-50%,-50%) scale(1.35)} }

/* 2026-09-12 — J3 Nakasu: lived evening, yatai first, river after. */
.scene--j3-kukuru .world img { object-position:center 58%; filter:brightness(.72) saturate(.88); }
.whisper--j3-kukuru { width:min(520px,44vw); }
.j3-mei-ping { position:absolute; z-index:16; right:6vw; top:17vh; width:min(310px,29vw); padding:13px 15px; border:1px solid rgba(255,255,255,.2); border-radius:17px; background:rgba(7,29,35,.72); color:#fff; text-align:left; backdrop-filter:blur(16px); box-shadow:0 16px 38px rgba(0,0,0,.28); animation:notificationIn .5s ease both; }
.j3-mei-ping span { color:var(--coral-light); font-size:9px; font-weight:900; letter-spacing:.16em; }
.j3-mei-ping p { margin:6px 0 0; font:400 13px/1.45 Georgia,serif; }
.j3-essentials { position:absolute; z-index:15; right:5vw; bottom:8vh; width:min(520px,43vw); height:250px; }
.j3-essential { position:absolute; touch-action:manipulation; border:0; background:transparent; filter:drop-shadow(0 16px 22px rgba(0,0,0,.3)); transition:transform .25s ease,opacity .25s ease; }
.j3-essential:hover { transform:translateY(-7px) rotate(1deg); }
.j3-essential img { display:block; width:100%; max-height:150px; object-fit:contain; }
.j3-essential span { position:absolute; left:50%; bottom:-7px; transform:translateX(-50%); padding:6px 9px; border-radius:999px; background:rgba(7,29,35,.7); color:white; font-size:9px; font-weight:850; white-space:nowrap; backdrop-filter:blur(8px); }
.j3-essential--phone { left:3%; bottom:18px; width:94px; transform:rotate(-5deg); }
.j3-essential--wallet { left:29%; bottom:0; width:170px; transform:rotate(4deg); }
.j3-essential--card { right:3%; bottom:44px; display:grid; align-content:space-between; width:158px; height:96px; padding:15px; border-radius:13px; background:linear-gradient(135deg,#153e45,#071d24 60%,#31565d); color:#fff; box-shadow:0 16px 30px rgba(0,0,0,.28); text-align:left; }
.j3-essential--card i { font-style:normal; font:500 15px Georgia,serif; letter-spacing:.08em; }
.j3-essential--card span { position:static; justify-self:start; transform:none; background:transparent; padding:0; }
.j3-pocket { position:absolute; right:32%; bottom:2px; width:140px; height:42px; border:1px solid rgba(255,255,255,.25); border-top:0; border-radius:0 0 70px 70px; opacity:.45; }
.j3-pocket.is-ready { opacity:.85; box-shadow:0 12px 36px rgba(0,0,0,.22); }

.scene--j3-arrival .world img { transform:scale(1.02); transition:filter 1.2s ease,transform 6s ease; }
.scene--j3-arrival.is-breathing .chrome { opacity:.32; transition:opacity .8s ease; }
.scene--j3-arrival.is-breathing .world img { filter:brightness(.82) saturate(.94); transform:scale(1.045); }
.whisper--j3-arrival { width:min(530px,45vw); }
.j3-breathing-dot { position:absolute; z-index:10; left:50%; bottom:10vh; width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,.72); box-shadow:0 0 0 0 rgba(255,255,255,.2); animation:j3Breath 2.4s ease-in-out infinite; }
@keyframes j3Breath { 50%{box-shadow:0 0 0 13px rgba(255,255,255,0);opacity:.55} }

.scene--j3-yatai-row .world img { object-position:center; }
.j3-yatai-breathe { position:absolute; inset:0; pointer-events:none; background:linear-gradient(90deg,rgba(245,171,105,.05),transparent 30%); animation:quietPulse 3.5s ease-in-out infinite alternate; }
.j3-stand-space { position:absolute; z-index:15; inset:0; pointer-events:none; }
.j3-stand-zone { --sx:25%; --sy:55%; position:absolute; left:var(--sx); top:var(--sy); display:grid; justify-items:center; gap:6px; min-width:50px; padding:0; transform:translate(-50%,-50%); border:0; background:transparent; color:#fff; pointer-events:auto; text-shadow:0 2px 12px rgba(0,0,0,.8); }
.j3-stand-zone i { width:42px; height:42px; border:1px solid rgba(255,255,255,.66); border-radius:50%; background:rgba(7,29,35,.22); box-shadow:0 0 0 8px rgba(255,255,255,.035); backdrop-filter:blur(3px); transition:transform .25s ease,background .25s ease; }
.j3-stand-zone span { max-width:145px; padding:5px 8px; border-radius:999px; background:rgba(7,29,35,.56); font-size:10px; font-weight:850; opacity:.76; backdrop-filter:blur(8px); }
.j3-stand-zone:hover i,.j3-stand-zone:focus-visible i { transform:scale(1.14); background:rgba(215,151,96,.34); }
.j3-stand-zone--full { --sx:21%; --sy:42%; }
.j3-stand-zone--quiet { --sx:42%; --sy:56%; }
.j3-stand-zone--open { --sx:63%; --sy:48%; }
.j3-stand-zone--full i::after { content:'×'; display:grid; place-items:center; width:100%; height:100%; font-size:17px; opacity:.5; }
.j3-stand-zone--full.is-seen span { background:rgba(95,47,38,.65); }

.j3-counter-dialogue { position:absolute; z-index:15; left:6vw; top:19vh; width:min(410px,36vw); padding:16px 18px; border-left:2px solid var(--coral-light); background:linear-gradient(90deg,rgba(5,24,29,.72),rgba(5,24,29,.08)); text-shadow:0 2px 14px rgba(0,0,0,.72); }
.j3-counter-dialogue small { color:var(--coral-light); font-size:9px; font-weight:900; letter-spacing:.16em; }
.j3-counter-dialogue p { margin:8px 0 4px; font:500 clamp(20px,2.3vw,31px)/1.18 Georgia,serif; }
.j3-counter-dialogue span { color:rgba(255,250,240,.8); font-size:12px; line-height:1.45; }
.j3-social-postures,.j3-order-postures { position:absolute; z-index:16; right:6vw; bottom:8vh; display:flex; align-items:stretch; gap:9px; width:min(620px,54vw); }
.j3-social-postures button,.j3-order-postures button { flex:1; min-height:92px; padding:13px 15px; border:1px solid rgba(255,255,255,.25); border-radius:17px; background:rgba(6,28,34,.7); color:#fff; text-align:left; backdrop-filter:blur(13px); box-shadow:0 13px 34px rgba(0,0,0,.22); }
.j3-social-postures button:hover,.j3-order-postures button:hover { background:rgba(12,50,58,.82); }
.j3-social-postures b,.j3-order-postures b { display:block; font:500 18px Georgia,serif; }
.j3-social-postures span,.j3-order-postures span { display:block; margin-top:5px; color:rgba(255,255,255,.7); font-size:10px; }
.j3-phrase { display:grid; gap:4px; }
.j3-phrase b { font:500 19px Georgia,serif; }
.j3-phrase i { color:#f1c8b6; font-size:10px; font-style:normal; }
.j3-phrase small { color:rgba(255,255,255,.72); font-size:10px; font-weight:500; }

.scene--j3-menu .world img { filter:brightness(.79); }
.j3-physical-menu { position:absolute; z-index:15; right:11vw; top:14vh; width:min(410px,36vw); max-height:76vh; overflow:auto; padding:20px 22px 22px; transform:rotate(-1deg); border:1px solid rgba(87,64,42,.18); border-radius:4px 4px 12px 5px; background:rgba(250,242,222,.96); color:#283b3f; box-shadow:0 24px 55px rgba(0,0,0,.36); }
.j3-physical-menu header { display:flex; align-items:end; justify-content:space-between; padding-bottom:12px; border-bottom:1px solid rgba(50,57,54,.18); }
.j3-physical-menu header small { color:#9c654e; font-size:9px; font-weight:900; letter-spacing:.12em; }
.j3-physical-menu header strong { font:500 27px Georgia,serif; }
.j3-menu-section { display:grid; gap:3px; padding-top:12px; }
.j3-menu-section>span { margin-bottom:4px; color:#a05f4c; font-size:9px; font-weight:900; letter-spacing:.13em; text-transform:uppercase; }
.j3-menu-section button { display:grid; grid-template-columns:1fr auto; grid-template-areas:'jp price' 'sub price'; gap:1px 10px; min-height:43px; padding:6px 7px; border:0; border-bottom:1px solid rgba(32,53,56,.1); background:transparent; color:var(--ink); text-align:left; }
.j3-menu-section button b { grid-area:jp; font:500 15px Georgia,serif; }
.j3-menu-section button i { grid-area:sub; color:#6a7878; font-size:9px; font-style:normal; }
.j3-menu-section button em { grid-area:price; align-self:center; font:500 14px Georgia,serif; font-style:normal; }
.j3-menu-section button.is-selected { border-radius:8px; background:#e8d5bc; box-shadow:inset 3px 0 0 #b66f57; }
.j3-chef-ready { position:absolute; z-index:16; left:19vw; bottom:10vh; display:flex; align-items:center; gap:9px; padding:8px 13px 8px 8px; border:1px solid rgba(255,255,255,.27); border-radius:999px; background:rgba(7,29,35,.66); color:#fff; backdrop-filter:blur(11px); font-size:10px; font-weight:850; }
.j3-chef-ready i { width:30px; height:30px; border:1px solid rgba(255,255,255,.55); border-radius:50%; }
.j3-chef-ready i::after { content:''; display:block; width:6px; height:6px; margin:11px; border-radius:50%; background:#f4c4af; }

.whisper--j3-order { width:min(500px,42vw); }
.j3-order-postures { width:min(510px,46vw); }
.scene--j3-cooking .world img { transform:scale(1.035); animation:j3CookDrift 8s ease-out both; }
@keyframes j3CookDrift { to{transform:scale(1.08) translateX(-1%)} }
.j3-steam { position:absolute; z-index:7; inset:0; overflow:hidden; pointer-events:none; }
.j3-steam i { position:absolute; left:50%; bottom:24%; width:90px; height:220px; border-radius:50%; background:radial-gradient(ellipse at center,rgba(255,255,255,.2),rgba(255,255,255,0) 68%); filter:blur(15px); animation:j3Steam 4.8s ease-in-out infinite; }
.j3-steam i:nth-child(2){ left:61%; animation-delay:1.5s; transform:scale(.7); }
.j3-steam i:nth-child(3){ left:39%; animation-delay:3s; transform:scale(.55); }
@keyframes j3Steam { 0%{opacity:0;translate:0 30px} 45%{opacity:.7} 100%{opacity:0;translate:12px -70px} }
.j3-silent-line,.j3-cruise-line { position:absolute; z-index:12; left:50%; bottom:8vh; max-width:min(620px,70vw); margin:0; transform:translateX(-50%); color:rgba(255,250,240,.86); font:400 16px/1.5 Georgia,serif; text-align:center; text-shadow:0 2px 18px rgba(0,0,0,.75); }
.j3-serving-line { position:absolute; z-index:14; left:7vw; bottom:9vh; display:grid; gap:5px; max-width:420px; text-shadow:0 2px 18px rgba(0,0,0,.76); }
.j3-serving-line span { font:500 27px Georgia,serif; }
.j3-serving-line p { margin:0; color:rgba(255,255,255,.8); font:400 14px/1.45 Georgia,serif; }

.scene--j3-meal .world img { object-fit:cover; filter:brightness(.88); }
.scene--j3-meal::before { content:''; position:absolute; z-index:-1; inset:0; background:radial-gradient(circle at 50% 58%,transparent 5%,rgba(4,18,23,.28) 72%); }
.j3-bite-target { position:absolute; z-index:13; left:50%; top:54%; width:min(260px,25vw); aspect-ratio:1.25; transform:translate(-50%,-50%); border-radius:50%; pointer-events:none; }
.j3-bite-target::after { content:''; position:absolute; inset:20%; border:1px solid transparent; border-radius:50%; transition:.2s ease; }
.j3-bite-target.is-receiving::after { border-color:rgba(255,255,255,.45); box-shadow:0 0 0 18px rgba(255,255,255,.035); }
.j3-bite-utensil { touch-action:none; position:absolute; z-index:16; right:8vw; bottom:10vh; display:flex; align-items:center; justify-content:center; width:120px; height:58px; padding:0; border:0; background:transparent; color:#fff; filter:drop-shadow(0 8px 12px rgba(0,0,0,.45)); }
.j3-bite-utensil i { position:absolute; right:22px; width:88px; height:3px; border-radius:999px; background:linear-gradient(90deg,#c59666,#6f432b); transform-origin:right center; }
.j3-bite-utensil i:first-child { transform:rotate(-8deg) translateY(-4px); }
.j3-bite-utensil i:nth-child(2) { transform:rotate(-2deg) translateY(4px); }
.j3-bite-utensil span { position:absolute; right:0; bottom:-7px; padding:5px 8px; border-radius:999px; background:rgba(7,29,35,.68); font-size:9px; font-weight:850; backdrop-filter:blur(8px); }
.j3-bite-utensil.is-active { filter:drop-shadow(0 12px 18px rgba(0,0,0,.5)); }
.j3-bite-utensil.is-complete { opacity:0; transition:opacity .18s ease; }
.j3-reactions { position:absolute; z-index:16; right:6vw; bottom:8vh; display:flex; gap:8px; }
.j3-reactions button { display:grid; gap:3px; min-width:118px; padding:11px 13px; border:1px solid rgba(255,255,255,.3); border-radius:15px; background:rgba(7,29,35,.69); color:#fff; text-align:left; backdrop-filter:blur(11px); }
.j3-reactions b { font:500 19px Georgia,serif; }
.j3-reactions span { color:rgba(255,255,255,.7); font-size:9px; }
.whisper--j3-meal { width:min(500px,42vw); }

.j3-neighbor-question,.j3-neighbor-reply { position:absolute; z-index:15; left:6vw; top:18vh; width:min(450px,40vw); padding:15px 18px; border-left:2px solid var(--coral-light); background:linear-gradient(90deg,rgba(5,24,30,.78),rgba(5,24,30,.12)); color:white; text-shadow:0 2px 16px rgba(0,0,0,.72); }
.j3-neighbor-question small,.j3-neighbor-reply small { display:block; margin-bottom:7px; color:#f1b59f; font-size:9px; font-weight:900; letter-spacing:.14em; }
.j3-neighbor-question b { display:block; font:500 clamp(22px,2.8vw,35px)/1.1 Georgia,serif; }
.j3-neighbor-question span { display:block; margin-top:7px; color:rgba(255,255,255,.76); font-size:12px; }
.j3-neighbor-reply p { margin:0; font:400 clamp(16px,1.5vw,20px)/1.48 Georgia,serif; }
.neighbor--drink .j3-neighbor-reply { border-left-color:#d9c287; }
.j3-intents { position:absolute; z-index:16; right:5vw; bottom:6vh; display:grid; grid-template-columns:repeat(2,minmax(150px,1fr)); gap:7px; width:min(620px,51vw); }
.j3-intents button { display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:52px; padding:10px 12px; border:1px solid rgba(255,255,255,.24); border-radius:14px; background:rgba(7,29,35,.68); color:#fff; text-align:left; backdrop-filter:blur(12px); }
.j3-intents button:last-child { grid-column:2; }
.j3-intents b { font-size:10px; }
.j3-intents span { color:#f2c4b0; font:500 11px Georgia,serif; }
.whisper--j3-neighbor-end { width:min(560px,46vw); }

.j3-bill-request { position:absolute; z-index:16; right:7vw; bottom:9vh; display:grid; gap:10px; width:min(360px,33vw); padding:16px; border:1px solid rgba(255,255,255,.25); border-radius:18px; background:rgba(6,28,34,.76); backdrop-filter:blur(13px); }
.j3-bill-request>button { min-height:43px; border:0; border-radius:12px; background:var(--paper); color:var(--ink); font-weight:850; }
.j3-bill-paper { position:absolute; z-index:15; right:7vw; top:20vh; display:grid; gap:4px; width:190px; padding:19px 18px; transform:rotate(2deg); background:#fff7e8; color:var(--ink); box-shadow:0 17px 34px rgba(0,0,0,.3); }
.j3-bill-paper small { color:#a4604d; font-size:9px; font-weight:900; }
.j3-bill-paper strong { font:500 29px Georgia,serif; }
.j3-bill-paper span { color:#718083; font-size:10px; }
.j3-cash-tray { position:absolute; z-index:14; right:29vw; bottom:13vh; display:grid; place-items:center; width:180px; height:88px; border:1px solid rgba(255,255,255,.35); border-radius:14px; background:rgba(45,56,56,.56); color:#fff; }
.j3-cash-tray i { position:absolute; inset:12px; border:1px solid rgba(255,255,255,.16); border-radius:8px; }
.j3-cash-tray span { z-index:2; font-size:9px; font-weight:850; }
.j3-cash-stack,.j3-cruise-cash { touch-action:none; position:absolute; z-index:16; left:11vw; bottom:11vh; display:flex; align-items:center; gap:4px; min-width:175px; min-height:76px; padding:12px; border:0; border-radius:10px; background:#d8c49d; color:#334b4d; box-shadow:0 16px 34px rgba(0,0,0,.3); }
.j3-cash-stack b,.j3-cruise-cash b { display:grid; place-items:center; width:67px; height:42px; border:1px solid rgba(49,70,67,.27); background:#e8d7b5; font:600 12px Georgia,serif; }
.j3-cash-stack span,.j3-cruise-cash span { position:absolute; left:50%; bottom:-12px; transform:translateX(-50%); padding:5px 8px; border-radius:999px; background:rgba(7,29,35,.75); color:white; font-size:9px; white-space:nowrap; }
.j3-change-scene { position:absolute; z-index:16; right:7vw; bottom:8vh; display:grid; grid-template-columns:1fr 1fr; gap:10px; width:min(430px,40vw); }
.j3-receipt,.j3-change { display:grid; gap:4px; padding:15px; background:#fff7e8; color:var(--ink); box-shadow:0 14px 30px rgba(0,0,0,.24); }
.j3-receipt { transform:rotate(-2deg); }
.j3-change { border-radius:18px; background:rgba(7,29,35,.82); color:white; }
.j3-change-scene>button { grid-column:1/-1; min-height:46px; border:1px solid rgba(255,255,255,.3); border-radius:14px; background:rgba(7,29,35,.76); color:white; font-weight:850; }

.j3-farewell { position:absolute; z-index:16; right:6vw; bottom:8vh; display:flex; gap:8px; width:min(480px,44vw); }
.j3-farewell button { flex:1; min-height:78px; padding:12px 14px; border:1px solid rgba(255,255,255,.28); border-radius:16px; background:rgba(7,29,35,.68); color:white; text-align:left; backdrop-filter:blur(11px); }
.j3-farewell button>b { display:block; font:500 18px Georgia,serif; }
.whisper--j3-exit { width:min(530px,44vw); }

.scene--j3-bridge .world img { filter:brightness(.86); }
.j3-night-directions { position:absolute; z-index:15; inset:0; pointer-events:none; }
.j3-night-direction { position:absolute; display:grid; justify-items:center; gap:6px; border:0; background:transparent; color:white; pointer-events:auto; text-shadow:0 2px 14px rgba(0,0,0,.8); }
.j3-night-direction i { width:54px; height:54px; border:1px solid rgba(255,255,255,.62); border-radius:50%; background:rgba(7,29,35,.22); box-shadow:0 0 0 10px rgba(255,255,255,.03); }
.j3-night-direction span { padding:6px 9px; border-radius:999px; background:rgba(7,29,35,.58); font-size:10px; font-weight:850; backdrop-filter:blur(9px); }
.j3-night-direction--boat { left:41%; top:59%; }
.j3-night-direction--walk { left:70%; top:48%; }
.j3-ticket-window { position:absolute; z-index:15; left:7vw; top:21vh; display:grid; gap:7px; width:min(370px,34vw); padding:18px; border:1px solid rgba(255,255,255,.24); border-radius:18px; background:rgba(6,28,34,.78); color:white; backdrop-filter:blur(13px); }
.j3-ticket-window small { color:#f0b39e; font-size:9px; font-weight:900; letter-spacing:.13em; }
.j3-ticket-window strong { font:500 25px Georgia,serif; }
.j3-ticket-window p { margin:0; font:500 32px Georgia,serif; }
.j3-ticket-window span { color:rgba(255,255,255,.66); font-size:10px; line-height:1.4; }
.j3-cruise-cash-tray { position:absolute; z-index:14; right:15vw; bottom:14vh; display:grid; place-items:center; width:170px; height:82px; border:1px dashed rgba(255,255,255,.55); border-radius:15px; background:rgba(7,29,35,.28); font-size:11px; }
.j3-cruise-cash { left:auto; right:34vw; bottom:13vh; }
.j3-cruise-ticket { position:absolute; z-index:16; left:50%; bottom:9vh; display:grid; grid-template-columns:1fr auto; grid-template-areas:'small time' 'place time' 'info info'; gap:5px 20px; width:min(430px,45vw); padding:18px 20px; transform:translateX(-50%) rotate(-1deg); border-left:8px solid #c77b5f; border-radius:6px; background:#f6eddc; color:var(--ink); box-shadow:0 18px 40px rgba(0,0,0,.3); }
.j3-cruise-ticket small { grid-area:small; color:#a45e49; font-size:9px; font-weight:900; letter-spacing:.13em; }
.j3-cruise-ticket b { grid-area:time; align-self:center; font:500 30px Georgia,serif; }
.j3-cruise-ticket strong { grid-area:place; font:500 18px Georgia,serif; }
.j3-cruise-ticket span { grid-area:info; color:#69797c; font-size:10px; }
.j3-ticket-walk { min-height:45px; border:1px solid rgba(255,255,255,.3); border-radius:13px; background:rgba(7,29,35,.75); color:white; font-weight:850; }

.scene--j3-cruise .chrome,.scene--j3-river-walk .chrome { opacity:.72; }
.scene--j3-cruise .world img { animation:j3WaterDrift 7s ease-in-out both; }
@keyframes j3WaterDrift { from{transform:scale(1.01)} to{transform:scale(1.055) translateX(-.7%)} }
.j3-cruise-line { bottom:7vh; max-width:680px; }
.j3-cruise-home-marker { position:absolute; left:50%; bottom:4vh; width:5px; height:5px; transform:translateX(-50%); border-radius:50%; background:rgba(255,255,255,.56); }
.whisper--j3-return { width:min(620px,50vw); }
.j3-end-mark { position:absolute; right:6vw; bottom:6vh; width:38px; height:1px; background:rgba(255,255,255,.35); }

@media (max-width:800px) {
  .scene--j3-kukuru .world img { object-position:58% center; }
  .whisper--j3-kukuru,.whisper--j3-arrival,.whisper--j3-order,.whisper--j3-meal,.whisper--j3-neighbor-end,.whisper--j3-exit,.whisper--j3-return { top:calc(var(--safe-top) + 92px); bottom:auto; width:calc(100% - 28px); }
  .whisper--j3-kukuru h1,.whisper--j3-arrival h1,.whisper--j3-order h1,.whisper--j3-meal h1,.whisper--j3-neighbor-end h1,.whisper--j3-exit h1,.whisper--j3-return h1 { font-size:31px; }
  .j3-mei-ping { right:14px; top:calc(var(--safe-top) + 82px); width:min(280px,72vw); }
  .j3-essentials { right:12px; bottom:calc(var(--safe-bottom) + 72px); width:calc(100% - 24px); height:205px; }
  .j3-essential--phone { left:4%; width:74px; }
  .j3-essential--wallet { left:27%; width:135px; }
  .j3-essential--card { right:2%; width:128px; height:80px; }
  .j3-pocket { right:32%; width:108px; }
  .scene--j3-arrival .world img { object-position:center; }
  .j3-breathing-dot { bottom:calc(var(--safe-bottom) + 54px); }
  .j3-stand-zone span { opacity:1; max-width:112px; font-size:9px; }
  .j3-stand-zone i { width:38px; height:38px; }
  .j3-stand-zone--full { --sx:22%; --sy:40%; }
  .j3-stand-zone--quiet { --sx:49%; --sy:54%; }
  .j3-stand-zone--open { --sx:74%; --sy:46%; }
  .j3-counter-dialogue { left:14px; top:calc(var(--safe-top) + 82px); width:calc(100% - 28px); padding:12px 14px; background:linear-gradient(90deg,rgba(5,24,29,.78),rgba(5,24,29,.36)); }
  .j3-counter-dialogue p { font-size:21px; }
  .j3-social-postures,.j3-order-postures { right:12px; bottom:calc(var(--safe-bottom) + 72px); left:12px; display:grid; grid-template-columns:1fr 1fr; width:auto; }
  .j3-social-postures button,.j3-order-postures button { min-height:66px; padding:9px 10px; }
  .j3-social-postures button:last-child { grid-column:1/-1; min-height:48px; }
  .j3-phrase b { font-size:16px; }
  .scene--j3-menu .world img { object-position:48% center; }
  .j3-physical-menu { right:50%; top:calc(var(--safe-top) + 72px); width:min(330px,86vw); max-height:calc(100svh - 155px); padding:14px 16px; transform:translateX(50%) rotate(-.5deg); }
  .j3-physical-menu header strong { font-size:23px; }
  .j3-menu-section button { min-height:39px; }
  .j3-menu-section button b { font-size:14px; }
  .j3-chef-ready { left:50%; bottom:calc(var(--safe-bottom) + 13px); transform:translateX(-50%); }
  .j3-order-postures { grid-template-columns:1fr; }
  .j3-silent-line,.j3-cruise-line { bottom:calc(var(--safe-bottom) + 35px); max-width:82vw; font-size:14px; }
  .j3-serving-line { left:16px; bottom:calc(var(--safe-bottom) + 70px); max-width:78vw; }
  .j3-bite-target { top:55%; width:54vw; }
  .j3-bite-utensil { right:14px; bottom:calc(var(--safe-bottom) + 76px); width:104px; height:54px; }
  .j3-reactions { right:12px; bottom:calc(var(--safe-bottom) + 70px); left:12px; display:grid; grid-template-columns:repeat(3,1fr); }
  .j3-reactions button { min-width:0; padding:9px; }
  .j3-neighbor-question,.j3-neighbor-reply { left:14px; top:calc(var(--safe-top) + 82px); width:calc(100% - 28px); padding:12px 14px; background:linear-gradient(90deg,rgba(5,24,30,.82),rgba(5,24,30,.48)); }
  .j3-neighbor-question b { font-size:24px; }
  .j3-intents { right:12px; bottom:calc(var(--safe-bottom) + 56px); left:12px; grid-template-columns:1fr 1fr; width:auto; gap:6px; }
  .j3-intents button { min-height:48px; padding:8px 9px; }
  .j3-intents button:last-child { grid-column:1/-1; }
  .j3-bill-request { right:12px; bottom:calc(var(--safe-bottom) + 70px); left:12px; width:auto; }
  .j3-bill-paper { right:14px; top:calc(var(--safe-top) + 86px); width:160px; }
  .j3-cash-tray { right:16px; bottom:calc(var(--safe-bottom) + 105px); width:130px; height:72px; }
  .j3-cash-stack { left:16px; bottom:calc(var(--safe-bottom) + 100px); min-width:145px; min-height:68px; }
  .j3-cash-stack b { width:55px; height:36px; }
  .j3-change-scene { right:12px; bottom:calc(var(--safe-bottom) + 70px); left:12px; width:auto; }
  .j3-farewell { right:12px; bottom:calc(var(--safe-bottom) + 70px); left:12px; width:auto; }
  .j3-night-direction--boat { left:38%; top:61%; }
  .j3-night-direction--walk { left:74%; top:47%; }
  .j3-night-direction span { max-width:130px; font-size:9px; }
  .j3-ticket-window { left:14px; top:calc(var(--safe-top) + 84px); width:calc(100% - 28px); }
  .j3-cruise-cash-tray { right:16px; bottom:calc(var(--safe-bottom) + 92px); width:130px; height:68px; }
  .j3-cruise-cash { right:auto; left:16px; bottom:calc(var(--safe-bottom) + 90px); min-width:145px; min-height:64px; }
  .j3-cruise-cash b { width:52px; height:35px; }
  .j3-cruise-ticket { bottom:calc(var(--safe-bottom) + 82px); width:82vw; }
  .scene--j3-cruise .world img { object-position:center; }
}

@media (max-width:370px) {
  .j3-essential--wallet { left:25%; width:122px; }
  .j3-essential--card { width:112px; }
  .j3-physical-menu { max-height:calc(100svh - 140px); }
  .j3-menu-section { padding-top:8px; }
  .j3-menu-section button { min-height:34px; padding:4px 5px; }
  .j3-menu-section button b { font-size:13px; }
  .j3-menu-section button i { font-size:8px; }
  .j3-intents b { font-size:9px; }
  .j3-intents span { font-size:10px; }
}
.j3-player-phrase { position:absolute; z-index:16; right:6vw; top:19vh; display:grid; gap:4px; width:min(390px,34vw); padding:13px 16px; border-right:2px solid rgba(255,255,255,.46); background:linear-gradient(270deg,rgba(5,24,30,.7),rgba(5,24,30,.08)); text-align:right; text-shadow:0 2px 14px rgba(0,0,0,.7); }
.j3-player-phrase small { color:rgba(255,255,255,.6); font-size:9px; font-weight:900; letter-spacing:.15em; }
.j3-player-phrase b { font:500 20px/1.25 Georgia,serif; }
@media (max-width:800px) {
  .j3-player-phrase { right:14px; top:calc(var(--safe-top) + 84px); width:calc(100% - 28px); padding:10px 13px; }
  .j3-player-phrase + .j3-neighbor-reply { top:calc(var(--safe-top) + 162px); }
  .j3-player-phrase b { font-size:17px; }
}

/* ===== J4 · Chez Yuki / rain, threshold, kitchen ===== */
.j3-next-day{position:absolute;z-index:18;right:6vw;bottom:7vh;display:flex;align-items:center;gap:10px;min-height:48px;padding:11px 16px;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:rgba(6,27,33,.62);color:#fff;font-weight:850;backdrop-filter:blur(12px)}
.j3-next-day span{font-size:18px}
.scene[data-scene^="j4-"] .world img{filter:saturate(.91) brightness(.87)}
.scene[data-scene^="j4-"] .scene-vignette{background:linear-gradient(90deg,rgba(4,24,28,.28),transparent 46%,rgba(4,24,28,.18)),linear-gradient(0deg,rgba(4,24,28,.22),transparent 42%)}
.j4-rain-film{position:absolute;z-index:2;inset:0;pointer-events:none;opacity:.16;background-image:repeating-linear-gradient(103deg,transparent 0 14px,rgba(223,239,242,.22) 14px 15px,transparent 15px 30px);animation:j4Rain 1.7s linear infinite}
@keyframes j4Rain{from{background-position:0 -120px}to{background-position:-40px 120px}}
.j4-rain-breath{position:absolute;z-index:12;left:50%;bottom:8vh;width:4px;height:4px;transform:translateX(-50%);border-radius:50%;background:rgba(255,255,255,.68);box-shadow:0 0 0 0 rgba(255,255,255,.12);animation:j4Pulse 2.1s ease-in-out infinite}
@keyframes j4Pulse{50%{box-shadow:0 0 0 18px rgba(255,255,255,0);opacity:.52}}
.whisper--j4-arrival,.whisper--j4-threshold,.whisper--j4-done,.whisper--j4-departure,.whisper--j4-farewell{left:6vw;bottom:8vh;width:min(560px,45vw)}
.whisper--j4-arrival h1,.whisper--j4-farewell h1{font-size:clamp(34px,4.2vw,64px)}
.j4-yuki-line{position:absolute;z-index:15;left:6vw;top:21vh;display:grid;gap:5px;width:min(470px,40vw);padding:15px 18px;border-left:2px solid rgba(255,255,255,.58);background:linear-gradient(90deg,rgba(5,29,33,.76),rgba(5,29,33,.1));color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.55)}
.j4-yuki-line small{font-size:9px;font-weight:900;letter-spacing:.18em;color:#d7c7a4}
.j4-yuki-line b{font:500 24px/1.25 Georgia,"Yu Mincho",serif}
.j4-yuki-line p,.j4-yuki-line span{margin:0;font-size:11px;line-height:1.5;color:rgba(255,255,255,.8)}
.j4-yuki-line--small{top:18vh}
.j4-yuki-line--kitchen{top:18vh}
.j4-yuki-line--prep{top:17vh;width:min(390px,34vw)}
.j4-yuki-line--table{top:17vh}
.j4-umbrella-stand{position:absolute;z-index:12;right:11vw;bottom:12vh;display:grid;place-items:center;width:120px;height:165px;border:1px dashed rgba(255,255,255,.45);border-radius:45% 45% 18px 18px;background:rgba(5,29,33,.18);color:#fff}
.j4-umbrella-stand.is-receiving{background:rgba(222,240,230,.18);box-shadow:0 0 0 8px rgba(255,255,255,.04)}
.j4-umbrella-stand span{padding:5px 8px;border-radius:999px;background:rgba(5,29,33,.62);font-size:9px;font-weight:850}
.j4-umbrella{touch-action:none;position:absolute;z-index:16;left:16vw;bottom:10vh;width:76px;height:190px;border:0;background:transparent;color:#fff;filter:drop-shadow(0 12px 14px rgba(0,0,0,.45))}
.j4-umbrella i{position:absolute;left:14px;top:4px;width:48px;height:118px;border-radius:50% 50% 8px 8px;background:linear-gradient(90deg,#142e39,#315666 55%,#0d2732);clip-path:polygon(50% 0,100% 82%,76% 73%,52% 82%,29% 73%,0 82%)}
.j4-umbrella b{position:absolute;left:37px;top:103px;width:3px;height:62px;background:#c4b18b}.j4-umbrella b:after{content:"";position:absolute;left:-1px;bottom:-12px;width:12px;height:13px;border:3px solid #c4b18b;border-left:0;border-top:0;border-radius:0 0 10px 0}
.j4-umbrella span{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:max-content;padding:5px 7px;border-radius:999px;background:rgba(5,29,33,.72);font-size:9px;font-weight:850}
.j4-lower-floor{left:27%;bottom:4vh;width:36%;height:26%}.j4-shoes{right:8vw;bottom:6vh}
.j4-hall-line,.j4-kitchen-observe,.j4-table-silence,.j4-rain-pause p{position:absolute;z-index:15;left:50%;bottom:7vh;transform:translateX(-50%);max-width:min(680px,70vw);margin:0;padding:8px 12px;border-radius:999px;background:rgba(6,28,33,.44);color:#fff;font:500 16px/1.45 Georgia,serif;text-align:center;text-shadow:0 2px 10px rgba(0,0,0,.5);backdrop-filter:blur(8px)}
.j4-postures{position:absolute;z-index:16;right:6vw;bottom:8vh;display:grid;grid-template-columns:1fr 1fr;gap:8px;width:min(500px,42vw)}
.j4-postures button,.j4-intents button{min-height:82px;padding:12px 14px;border:1px solid rgba(255,255,255,.26);border-radius:17px;background:rgba(6,31,36,.65);color:#fff;text-align:left;backdrop-filter:blur(12px)}
.j4-postures b,.j4-intents b{display:block;font:600 15px Georgia,serif}.j4-postures span,.j4-intents span{display:block;margin-top:4px;font-size:10px;line-height:1.35;color:rgba(255,255,255,.67)}
.j4-prep-status{position:absolute;z-index:15;left:6vw;top:18vh;display:grid;gap:5px;width:min(380px,34vw);padding:14px 16px;background:linear-gradient(90deg,rgba(5,29,34,.74),rgba(5,29,34,.08));color:#fff}
.j4-prep-status small{font-size:9px;letter-spacing:.13em;color:#d6c49e}.j4-prep-status b{font:500 22px Georgia,serif}.j4-prep-status span{font:600 12px/1 system-ui}
.j4-cut-zone{touch-action:none;position:absolute;z-index:18;left:12%;top:57%;width:37%;height:28%;border:1px solid rgba(255,255,255,.22);border-radius:50%;background:rgba(255,255,255,.025);color:#fff;cursor:ew-resize}
.j4-cut-zone i{position:absolute;left:50%;top:50%;width:65%;height:1px;transform:translate(-50%,-50%);background:rgba(255,255,255,.48)}
.j4-cut-zone span{position:absolute;left:50%;bottom:9px;transform:translateX(-50%);padding:4px 7px;border-radius:999px;background:rgba(5,29,34,.56);font-size:9px;font-weight:850}
.j4-bowl-drop{position:absolute;z-index:13;left:47%;top:61%;display:grid;place-items:center;width:180px;height:120px;border:1px dashed rgba(255,255,255,.5);border-radius:50%;color:#fff;background:rgba(255,255,255,.03)}
.j4-bowl-drop span{padding:4px 7px;border-radius:999px;background:rgba(5,29,34,.6);font-size:9px}
.j4-bowl-drop.is-receiving{background:rgba(221,239,225,.14)}
.j4-salt-dish,.j4-dressing{touch-action:none;position:absolute;z-index:17;left:15vw;bottom:12vh;display:grid;place-items:center;gap:2px;width:90px;height:70px;border:1px solid rgba(255,255,255,.28);border-radius:50%;background:#e8e0cc;color:#29464a;box-shadow:0 12px 25px rgba(0,0,0,.28)}
.j4-salt-dish b,.j4-dressing b{font:600 19px Georgia,"Yu Mincho",serif}.j4-salt-dish span,.j4-dressing span{font-size:8px}
.j4-resting{position:absolute;z-index:15;left:50%;bottom:9vh;display:grid;justify-items:center;gap:10px;width:min(520px,60vw);transform:translateX(-50%);color:#fff;text-align:center}
.j4-resting i,.j4-rain-pause i{width:6px;height:6px;border-radius:50%;background:#fff;animation:j4Pulse 2.2s infinite}.j4-resting p{margin:0;font:500 18px/1.5 Georgia,serif;text-shadow:0 2px 12px rgba(0,0,0,.55)}
.j4-squeeze,.j4-mix{position:absolute;z-index:16;left:53%;top:68%;display:grid;place-items:center;gap:4px;width:190px;height:190px;transform:translate(-50%,-50%);border:1px solid rgba(255,255,255,.45);border-radius:50%;background:rgba(5,29,34,.22);color:#fff;backdrop-filter:blur(4px)}
.j4-squeeze:before,.j4-mix:before{content:"";position:absolute;inset:8px;border-radius:50%;background:conic-gradient(rgba(255,255,255,.65) var(--hold-progress,0%),rgba(255,255,255,.06) 0)}
.j4-squeeze.is-holding:before,.j4-mix.is-holding:before{animation:j4Hold var(--hold-duration) linear forwards}@keyframes j4Hold{to{transform:rotate(360deg)}}
.j4-squeeze i,.j4-mix i{position:relative;z-index:2;width:80px;height:48px;border-radius:50%;background:rgba(226,236,222,.72)}
.j4-squeeze b,.j4-squeeze span,.j4-mix b,.j4-mix span{position:relative;z-index:2}.j4-squeeze b,.j4-mix b{font:600 15px Georgia,serif}.j4-squeeze span,.j4-mix span{font-size:9px;opacity:.7}
.j4-dressing{width:110px;height:78px;border-radius:50% 50% 44% 44%;background:#c9ad78}.j4-bowl-drop--dress{left:47%;top:61%}
.j4-intents{position:absolute;z-index:17;right:6vw;bottom:7vh;display:grid;grid-template-columns:1fr 1fr;gap:7px;width:min(520px,44vw)}
.j4-intents button{min-height:74px}
.j4-table-reply{position:absolute;z-index:16;right:6vw;top:24vh;width:min(500px,42vw);padding:17px 19px;border-right:2px solid rgba(255,255,255,.5);background:linear-gradient(270deg,rgba(5,29,34,.74),rgba(5,29,34,.08));color:#fff;text-align:right;text-shadow:0 2px 12px rgba(0,0,0,.5)}
.j4-table-reply p{margin:0;font:500 18px/1.5 Georgia,serif}
.j4-rain-pause{position:absolute;z-index:15;inset:0;display:grid;place-items:center;pointer-events:none}.j4-rain-pause p{position:static;transform:none}.j4-end-mark{position:absolute;z-index:12;right:6vw;bottom:6vh;width:42px;height:1px;background:rgba(255,255,255,.35)}

@media(max-width:800px){
  .j3-next-day{right:14px;bottom:calc(var(--safe-bottom) + 70px)}
  .scene--j4-arrival .world img,.scene--j4-farewell .world img{object-position:center 62%}.scene--j4-threshold .world img{object-position:center 58%}.scene--j4-kitchen .world img,.scene--j4-prep .world img,.scene--j4-table .world img{object-position:center 52%}
  .whisper--j4-arrival,.whisper--j4-threshold,.whisper--j4-done,.whisper--j4-departure,.whisper--j4-farewell{left:14px;top:calc(var(--safe-top) + 86px);bottom:auto;width:calc(100% - 28px)}
  .whisper--j4-arrival h1,.whisper--j4-farewell h1{font-size:34px}
  .j4-yuki-line,.j4-yuki-line--small,.j4-yuki-line--kitchen,.j4-yuki-line--prep,.j4-yuki-line--table{left:14px;top:calc(var(--safe-top) + 82px);width:calc(100% - 28px);padding:11px 13px;background:linear-gradient(90deg,rgba(5,29,33,.82),rgba(5,29,33,.36))}
  .j4-yuki-line b{font-size:20px}.j4-yuki-line p,.j4-yuki-line span{font-size:10px}
  .j4-umbrella{left:12px;bottom:calc(var(--safe-bottom) + 60px);width:68px;height:170px}.j4-umbrella-stand{right:16px;bottom:calc(var(--safe-bottom) + 58px);width:98px;height:145px}
  .j4-lower-floor{left:8%;bottom:4vh;width:58%;height:23%}.j4-shoes{right:3vw;bottom:6vh}
  .j4-hall-line,.j4-kitchen-observe,.j4-table-silence,.j4-rain-pause p{bottom:calc(var(--safe-bottom) + 66px);max-width:calc(100% - 28px);font-size:14px}
  .j4-postures,.j4-intents{right:12px;bottom:calc(var(--safe-bottom) + 62px);left:12px;width:auto;grid-template-columns:1fr 1fr;gap:6px}.j4-postures button,.j4-intents button{min-height:64px;padding:9px 10px}.j4-postures b,.j4-intents b{font-size:13px}.j4-postures span,.j4-intents span{font-size:9px}
  .j4-prep-status{left:14px;top:calc(var(--safe-top) + 82px);width:calc(100% - 28px);padding:10px 12px}.j4-prep-status b{font-size:18px}
  .j4-cut-zone{left:2%;top:55%;width:52%;height:25%}.j4-bowl-drop{left:38%;top:59%;width:150px;height:105px}.j4-bowl-drop--dress{left:38%;top:59%}
  .j4-salt-dish,.j4-dressing{left:18px;bottom:calc(var(--safe-bottom) + 72px)}
  .j4-resting{bottom:calc(var(--safe-bottom) + 70px);width:calc(100% - 40px)}.j4-resting p{font-size:15px}
  .j4-squeeze,.j4-mix{left:50%;top:66%;width:160px;height:160px}.j4-squeeze i,.j4-mix i{width:66px;height:42px}
  .j4-table-reply{right:14px;top:calc(var(--safe-top) + 92px);width:calc(100% - 28px);padding:13px 14px}.j4-table-reply p{font-size:16px}
}
@media(max-width:370px){.j4-postures,.j4-intents{grid-template-columns:1fr}.j4-postures button,.j4-intents button{min-height:52px}.j4-yuki-line b{font-size:18px}.j4-cut-zone{left:1%;width:55%}}

/* J4 tactile polish: interaction zones belong to the photographed space. */
.scene--j4-threshold .j4-umbrella-stand{
  border:0;
  border-radius:18px;
  background:transparent;
  box-shadow:none;
}
.scene--j4-threshold .j4-umbrella-stand::after{
  content:"";
  position:absolute;
  right:14%;
  bottom:8%;
  width:9px;
  height:9px;
  border-radius:50%;
  background:rgba(239,232,211,.78);
  box-shadow:0 0 0 0 rgba(239,232,211,.24);
  animation:j4StandHint 2.4s ease-out infinite;
}
@keyframes j4StandHint{70%,100%{box-shadow:0 0 0 16px rgba(239,232,211,0)}}
.scene--j4-threshold .j4-umbrella-stand.is-receiving{
  border:1px solid rgba(239,232,211,.4);
  background:rgba(239,232,211,.04);
  box-shadow:0 0 28px rgba(239,232,211,.12);
}
.scene--j4-threshold .j4-umbrella{
  width:48px;
  height:184px;
  filter:drop-shadow(0 10px 10px rgba(0,0,0,.42));
}
.scene--j4-threshold .j4-umbrella i{
  left:15px;
  top:18px;
  width:18px;
  height:116px;
  border-radius:55% 55% 24% 24% / 8% 8% 92% 92%;
  background:linear-gradient(90deg,#122934,#35515a 48%,#10232c);
  clip-path:polygon(48% 0,74% 7%,100% 100%,53% 91%,0 100%,25% 7%);
}
.scene--j4-threshold .j4-umbrella b{
  left:23px;
  top:0;
  width:3px;
  height:153px;
  background:#a99068;
}
.scene--j4-threshold .j4-umbrella b:after{
  left:-1px;
  bottom:-13px;
}
.scene--j4-threshold .j4-umbrella span{
  bottom:0;
  padding:4px 6px;
  background:rgba(5,29,33,.55);
  font-size:8px;
}
.scene--j4-threshold .j4-lower-floor{
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.scene--j4-threshold .j4-lower-floor.is-receiving{
  background:linear-gradient(0deg,rgba(239,232,211,.09),transparent 80%);
  box-shadow:inset 0 -1px 0 rgba(239,232,211,.35);
}
.scene--j4-prep .j4-bowl-drop{
  border:0;
  background:transparent;
}
.scene--j4-prep .j4-bowl-drop.is-receiving{
  border:1px solid rgba(255,255,255,.34);
  background:rgba(255,255,255,.04);
  box-shadow:0 0 28px rgba(255,255,255,.09);
}
.scene--j4-prep .j4-squeeze,.scene--j4-prep .j4-mix{
  width:150px;
  height:150px;
  border-color:rgba(255,255,255,.3);
  background:rgba(5,29,34,.14);
}
@media(max-width:800px){
  .scene--j4-threshold .j4-umbrella{left:20px;width:44px;height:170px}
  .scene--j4-threshold .j4-umbrella i{left:14px;width:17px;height:106px}
  .scene--j4-threshold .j4-umbrella b{left:22px;height:141px}
  .scene--j4-prep .j4-squeeze,.scene--j4-prep .j4-mix{width:132px;height:132px}
}

/* Drag handles: decorative children must not steal the initial pointer hit. */
[data-draggable] > i,
[data-draggable] > b,
[data-draggable] > span { pointer-events:none; }

/* J4 recipe elements — canonical mise en place + lived cucumber sunomono */
.scene--j4-mise .world img,.scene--j4-prep .world img{filter:saturate(.9) brightness(.78)}
.j4-yuki-line--mise{top:15vh;width:min(390px,33vw)}
.j4-mise-stage,.j4-recipe-worktop{position:absolute;z-index:14;left:50%;bottom:5vh;width:min(860px,72vw);height:min(500px,58vh);transform:translateX(-50%);border-radius:30px;background:radial-gradient(circle at 50% 80%,rgba(244,225,190,.14),rgba(13,36,38,.03) 58%,transparent 72%);filter:drop-shadow(0 18px 28px rgba(0,0,0,.18))}
.j4-mise-stage img,.j4-recipe-worktop img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}
.j4-mise-board{position:absolute!important;left:50%;top:55%;width:43%!important;height:auto!important;transform:translate(-50%,-50%);opacity:.96}
.j4-board-target{position:absolute;z-index:13;left:32%;top:40%;width:36%;height:31%;border-radius:28px}
.j4-board-target.is-receiving{box-shadow:0 0 0 2px rgba(255,255,255,.55),0 0 36px rgba(230,210,166,.3);background:rgba(255,255,255,.035)}
.j4-recipe-object{position:absolute;z-index:16;padding:0;border:0;background:transparent;filter:drop-shadow(0 10px 12px rgba(0,0,0,.3));transition:transform .18s ease,filter .18s ease;touch-action:none}
.j4-recipe-object:hover,.j4-recipe-object:focus-visible{transform:translateY(-5px) scale(1.035);filter:drop-shadow(0 16px 18px rgba(0,0,0,.38));outline:none}
.j4-recipe-object img{width:100%;height:100%;object-fit:contain}
.j4-mise-cucumber{left:34%;top:42%;width:24%;height:22%;transform:rotate(-8deg)}
.j4-mise-cucumber:hover,.j4-mise-cucumber:focus-visible{transform:rotate(-8deg) translateY(-5px) scale(1.035)}
.j4-mise-knife{left:59%;top:48%;width:23%;height:16%;cursor:grab}
.j4-mise-knife.is-active{cursor:grabbing}
.j4-mise-salt{left:11%;top:35%;width:12%;height:16%}
.j4-mise-vinegar{right:9%;top:25%;width:8%;height:28%}
.j4-mise-sugar{left:17%;bottom:10%;width:12%;height:17%}
.j4-mise-sesame{right:10%;bottom:8%;width:12%;height:18%}
.j4-mise-bowl{right:23%;top:20%;width:15%;height:17%}
.j4-mise-spoon{right:26%;bottom:8%;width:18%;height:17%;transform:rotate(-13deg)}
.j4-mise-spoon:hover,.j4-mise-spoon:focus-visible{transform:rotate(-13deg) translateY(-5px) scale(1.035)}
.j4-ingredient-note{position:absolute;z-index:20;right:5vw;top:17vh;display:grid;gap:2px;min-width:150px;padding:10px 13px;border-radius:14px;background:rgba(5,29,34,.7);border:1px solid rgba(255,255,255,.16);color:#fff;backdrop-filter:blur(10px);box-shadow:0 10px 26px rgba(0,0,0,.16)}
.j4-ingredient-note b{font:600 19px/1.1 Georgia,"Yu Mincho",serif}.j4-ingredient-note span{font-size:10px;opacity:.76}.j4-ingredient-note--quiet{max-width:260px;font:500 11px/1.4 system-ui}

.j4-recipe-worktop--slice{height:min(500px,58vh)}
.j4-work-board{position:absolute!important;left:50%;top:57%;width:58%!important;height:auto!important;transform:translate(-50%,-50%)}
.j4-work-cucumber-whole{position:absolute!important;left:42%;top:52%;width:29%!important;height:auto!important;transform:translate(-50%,-50%) rotate(-8deg);transition:opacity .18s ease,transform .18s ease}
.j4-work-cucumber-slices{position:absolute!important;left:43%;top:57%;width:26%!important;height:auto!important;transform:translate(-50%,-50%);opacity:0;transition:opacity .18s ease,transform .18s ease}
.slice-count-1 .j4-work-cucumber-whole{opacity:.78;transform:translate(-48%,-50%) rotate(-8deg) scale(.94)}
.slice-count-1 .j4-work-cucumber-slices{opacity:.35;transform:translate(-50%,-50%) scale(.82)}
.slice-count-2 .j4-work-cucumber-whole{opacity:.48;transform:translate(-44%,-50%) rotate(-8deg) scale(.87)}
.slice-count-2 .j4-work-cucumber-slices{opacity:.68;transform:translate(-50%,-50%) scale(.9)}
.slice-count-3 .j4-work-cucumber-whole{opacity:.08}.slice-count-3 .j4-work-cucumber-slices{opacity:1;transform:translate(-50%,-50%) scale(1)}
.j4-work-knife{touch-action:none;position:absolute;z-index:18;left:57%;top:47%;display:block;width:27%;height:23%;padding:0;border:0;background:transparent;cursor:ew-resize;filter:drop-shadow(0 14px 16px rgba(0,0,0,.35))}
.j4-work-knife img{width:100%;height:100%;object-fit:contain;transform:rotate(-9deg)}
.j4-work-knife span{position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);padding:4px 8px;border-radius:999px;background:rgba(5,29,34,.68);color:#fff;font-size:9px;font-weight:850;letter-spacing:.03em}

.j4-recipe-worktop--bowl,.j4-recipe-worktop--rest,.j4-recipe-worktop--mix{display:grid;place-items:center}
.j4-recipe-bowl{position:absolute;z-index:14;left:50%;top:56%;width:32%;height:32%;transform:translate(-50%,-50%);filter:drop-shadow(0 18px 20px rgba(0,0,0,.3))}
.j4-recipe-bowl>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.j4-bowl-base{z-index:1}.j4-bowl-cucumber{z-index:2;left:50%!important;top:50%!important;width:68%!important;height:68%!important;transform:translate(-50%,-48%) scale(.9)}
.j4-recipe-bowl--dressed,.j4-recipe-bowl--final{width:35%;height:35%}
.j4-recipe-drop{position:absolute;z-index:15;left:50%;top:56%;width:38%;height:38%;transform:translate(-50%,-50%);border-radius:50%}
.j4-recipe-drop .j4-recipe-bowl{width:84%;height:84%}
.j4-recipe-drop.is-receiving{box-shadow:0 0 0 2px rgba(255,255,255,.45),0 0 34px rgba(238,219,177,.26);background:rgba(255,255,255,.025)}
.j4-recipe-drag{touch-action:none;position:absolute;z-index:18;padding:0;border:0;background:transparent;filter:drop-shadow(0 13px 16px rgba(0,0,0,.35));color:#fff;cursor:grab}
.j4-recipe-drag.is-active{cursor:grabbing}
.j4-recipe-drag img{width:100%;height:100%;object-fit:contain}.j4-recipe-drag span{position:absolute;left:50%;bottom:-8px;transform:translateX(-50%);padding:4px 8px;border-radius:999px;background:rgba(5,29,34,.72);font-size:9px;font-weight:800;white-space:nowrap}
.j4-recipe-drag--salt{left:15%;top:57%;width:15%;height:23%}
.j4-recipe-drag--vinegar{left:15%;top:44%;width:10%;height:36%}
.j4-recipe-drag--sugar{left:15%;top:56%;width:15%;height:23%}
.j4-recipe-drag--sesame{left:15%;top:54%;width:15%;height:24%}
.j4-squeeze--recipe{left:50%;top:57%;width:168px;height:168px;background:rgba(5,29,34,.12)}
.j4-recipe-worktop--mix .j4-recipe-bowl{top:55%;width:36%;height:36%}
.j4-mix--spoon{left:58%;top:53%;width:210px;height:210px;background:transparent;border:0;backdrop-filter:none;filter:drop-shadow(0 13px 16px rgba(0,0,0,.32))}
.j4-mix--spoon:before{inset:26px;background:conic-gradient(rgba(255,255,255,.58) var(--hold-progress,0%),rgba(255,255,255,.05) 0)}
.j4-mix-spoon{position:absolute!important;left:50%!important;top:43%!important;width:78%!important;height:78%!important;transform:translate(-50%,-50%) rotate(-22deg);object-fit:contain!important}
.j4-mix--spoon b,.j4-mix--spoon span{position:absolute;z-index:4;left:50%;transform:translateX(-50%);white-space:nowrap;text-shadow:0 2px 8px rgba(0,0,0,.55)}.j4-mix--spoon b{bottom:17px}.j4-mix--spoon span{bottom:3px}
.j4-finished-dish{position:absolute;z-index:16;left:50%;top:58%;display:flex;align-items:center;gap:18px;transform:translate(-50%,-50%);width:min(620px,65vw)}
.j4-finished-dish .j4-recipe-bowl{position:relative;left:auto;top:auto;width:330px;height:280px;transform:none;flex:0 0 auto}
.j4-finished-dish>div:last-child{display:grid;gap:4px;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.6)}.j4-finished-dish b{font:500 34px Georgia,"Yu Mincho",serif}.j4-finished-dish span{font:500 13px/1.4 system-ui;opacity:.8}

@media(max-width:760px){
  .j4-yuki-line--mise{top:calc(var(--safe-top) + 78px)}
  .j4-mise-stage,.j4-recipe-worktop{bottom:calc(var(--safe-bottom) + 42px);width:calc(100% - 12px);height:52vh;max-height:470px}
  .j4-mise-board{width:65%!important;top:59%}
  .j4-board-target{left:19%;top:47%;width:58%;height:26%}
  .j4-mise-cucumber{left:25%;top:48%;width:37%;height:18%}
  .j4-mise-knife{left:55%;top:51%;width:36%;height:14%}
  .j4-mise-salt{left:3%;top:36%;width:18%;height:14%}
  .j4-mise-vinegar{right:3%;top:27%;width:13%;height:26%}
  .j4-mise-sugar{left:6%;bottom:4%;width:18%;height:15%}
  .j4-mise-sesame{right:2%;bottom:4%;width:18%;height:16%}
  .j4-mise-bowl{right:16%;top:20%;width:23%;height:15%}
  .j4-mise-spoon{right:20%;bottom:1%;width:26%;height:14%}
  .j4-ingredient-note{left:14px;right:auto;top:auto;bottom:calc(var(--safe-bottom) + 48px);min-width:0;max-width:58%;padding:8px 10px}.j4-ingredient-note b{font-size:16px}
  .j4-ingredient-note--quiet{max-width:66%;font-size:9px}
  .j4-work-board{width:82%!important;top:59%}
  .j4-work-cucumber-whole{left:37%;top:54%;width:43%!important}.j4-work-cucumber-slices{left:38%;top:59%;width:41%!important}
  .j4-work-knife{left:52%;top:48%;width:44%;height:21%}
  .j4-recipe-bowl{top:58%;width:52%;height:30%}.j4-recipe-bowl--dressed,.j4-recipe-bowl--final{width:58%;height:34%}
  .j4-recipe-drop{top:58%;width:62%;height:37%}.j4-recipe-drop .j4-recipe-bowl{width:88%;height:88%}
  .j4-recipe-drag--salt,.j4-recipe-drag--sugar,.j4-recipe-drag--sesame{left:3%;top:59%;width:23%;height:20%}.j4-recipe-drag--vinegar{left:5%;top:45%;width:16%;height:32%}
  .j4-squeeze--recipe{top:60%;width:144px;height:144px}
  .j4-recipe-worktop--mix .j4-recipe-bowl{top:58%;width:56%;height:34%}.j4-mix--spoon{left:58%;top:56%;width:175px;height:175px}
  .j4-finished-dish{top:58%;width:calc(100% - 34px);display:grid;justify-items:center;gap:4px}.j4-finished-dish .j4-recipe-bowl{width:250px;height:210px}.j4-finished-dish>div:last-child{text-align:center}.j4-finished-dish b{font-size:26px}
}

/* J5 · Itoshima — lived excursion, not card-tour UI */
.scene[class*="scene--j5"] .scene-vignette{background:linear-gradient(180deg,rgba(3,18,21,.22),transparent 22%,transparent 67%,rgba(3,18,21,.48))}
.scene--j5-futamigaura .chrome,.scene--j5-ride .chrome{opacity:.34;transition:opacity .3s}.scene--j5-futamigaura .chrome:hover,.scene--j5-ride .chrome:hover{opacity:1}
.j5-sato-line,.j5-rental-dialogue,.j5-order-card,.j5-home-note{position:absolute;z-index:15;left:5vw;bottom:8vh;width:min(520px,44vw);padding:20px 24px;border-radius:22px;background:rgba(7,29,35,.78);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(16px);box-shadow:var(--shadow)}
.j5-sato-line b,.j5-rental-dialogue b{font:600 14px Georgia,serif;color:#f0c8a7}.j5-sato-line p,.j5-rental-dialogue p,.j5-order-card p{margin:7px 0;font:500 23px/1.35 Georgia,"Yu Mincho",serif}.j5-sato-line span,.j5-rental-dialogue span,.j5-order-card span{display:block;font-size:13px;opacity:.8}
.j5-daybag{position:absolute;z-index:15;right:6vw;bottom:9vh;width:min(460px,40vw);padding:18px;border-radius:28px;background:rgba(244,236,222,.9);color:var(--ink);box-shadow:var(--shadow)}.j5-daybag-items{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.j5-pack-item{aspect-ratio:1;border:1px solid rgba(24,53,60,.18);border-radius:18px;background:#fffaf0;color:var(--ink);font-weight:900}.j5-pack-item.is-packed{opacity:.35;transform:scale(.94)}.j5-bag-pocket{display:flex;justify-content:space-between;margin-top:12px;padding:13px 16px;border-radius:18px;background:#d7b48b}.j5-depart,.j5-enter-rental,.j5-board,.j5-arrive,.j5-next-key,.j5-start-ride,.j5-cafe-leave,.j5-arrive-rental,.j5-go-home-train,.j5-back-kukuru,.j5-local-leave,.j5-resume{position:absolute;z-index:18;right:5vw;bottom:5vh;min-height:48px;padding:11px 18px;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:rgba(7,29,35,.78);backdrop-filter:blur(12px);font-weight:800}
.j5-platform-card{position:absolute;z-index:15;left:6vw;top:18vh;display:grid;gap:5px;padding:18px 22px;border-radius:20px;background:rgba(244,236,222,.92);color:var(--ink);box-shadow:var(--shadow)}.j5-platform-card strong{font:700 30px Georgia}.j5-ic-card{position:absolute;z-index:18;right:9vw;bottom:15vh;width:220px;height:125px;border:0;border-radius:20px;background:linear-gradient(135deg,#f3d6a6,#d58369);box-shadow:0 24px 50px rgba(0,0,0,.35);color:#17363c;transform:rotate(-4deg)}.j5-ic-card b,.j5-ic-card span{display:block}.j5-gate-reject,.j5-platform-sign{position:absolute;z-index:18;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;gap:9px;padding:18px 24px;border-radius:18px;background:rgba(7,29,35,.9);text-align:center;box-shadow:var(--shadow)}.j5-listen{position:absolute;z-index:18;left:6vw;bottom:7vh;padding:12px 16px;border:1px solid rgba(255,255,255,.24);border-radius:999px;background:rgba(7,29,35,.72)}
.j5-train-line{position:absolute;z-index:12;left:6vw;bottom:9vh;max-width:520px;margin:0;font:500 clamp(24px,3vw,44px)/1.12 Georgia,serif;text-shadow:0 3px 18px #000}.scene--j5-train .world img{animation:j5TrainDrift 10s ease-in-out infinite alternate}@keyframes j5TrainDrift{to{transform:scale(1.035) translateX(-1.4%)}}
.j5-arrival-note{position:absolute;z-index:12;left:6vw;bottom:8vh;display:grid;gap:4px;text-shadow:0 3px 18px #000}.j5-arrival-note b{font:600 40px Georgia}.j5-arrival-note span{font-size:14px}
.j5-rental-form{position:absolute;z-index:22;left:6vw;top:13vh;width:min(520px,48vw);max-height:78vh;overflow:auto;display:grid;gap:10px;padding:24px 26px;background:#f7f0e3;color:#203c43;border-radius:4px 18px 8px 12px;box-shadow:0 30px 90px rgba(0,0,0,.45);transform:rotate(-.5deg)}.j5-rental-form header{display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid #b9a98d;padding-bottom:12px}.j5-rental-form header b{font:700 20px Georgia,"Yu Mincho",serif}.j5-rental-form header span{font-size:10px;letter-spacing:.16em}.j5-rental-form label{display:grid;gap:5px;font-size:11px;font-weight:800}.j5-rental-form input,.j5-rental-form select{width:100%;min-height:38px;padding:8px 10px;border:0;border-bottom:1px solid #8c7e69;background:rgba(255,255,255,.48);color:#17363c}.j5-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.j5-passport-line{display:flex!important;align-items:center;gap:8px}.j5-passport-line input{width:18px!important;min-height:18px!important}.j5-rental-form>button{min-height:44px;border:0;border-radius:999px;background:#17363c;color:#fff;font-weight:850}.j5-rental-dialogue>div{display:flex;gap:8px;margin-top:14px}.j5-rental-dialogue button,.j5-pay-methods button,.j5-late-fee button,.j5-returned button{padding:10px 14px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(255,255,255,.1)}.j5-rental-slip{position:absolute;z-index:16;left:7vw;bottom:10vh;display:grid;gap:7px;padding:18px 22px;border-radius:8px;background:#f5eddc;color:#1d3b42;box-shadow:var(--shadow)}.j5-rental-slip strong{font:700 32px Georgia}.j5-rental-slip label{font-size:12px}.j5-pay-methods{position:absolute;z-index:17;right:7vw;bottom:12vh;display:flex;gap:10px}.j5-pay-methods button{min-width:110px;background:rgba(7,29,35,.78)}
.scene--j5-key .world img{object-fit:cover;filter:brightness(.78)}.j5-key-object,.j5-key-return{position:absolute;z-index:18;left:49%;top:63%;width:145px;height:145px;padding:0;border:0;background:transparent;touch-action:none;filter:drop-shadow(0 15px 18px rgba(0,0,0,.38))}.j5-key-object img,.j5-key-return img{width:100%;height:100%;object-fit:contain}.j5-key-object span,.j5-key-return span{position:absolute;left:50%;bottom:-12px;transform:translateX(-50%);padding:6px 9px;border-radius:999px;background:rgba(7,29,35,.74);white-space:nowrap;font-size:10px}.j5-key-pocket,.j5-key-tray{position:absolute;z-index:15;right:7vw;bottom:8vh;width:180px;height:110px;display:grid;place-items:center;border:2px dashed rgba(255,255,255,.55);border-radius:22px;background:rgba(7,29,35,.22)}.j5-key-tray{right:10vw;bottom:18vh}.j5-map-open{position:absolute;z-index:18;right:6vw;bottom:7vh;padding:11px 16px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(7,29,35,.72)}.j5-route-strip{position:absolute;z-index:20;left:50%;bottom:7vh;transform:translateX(-50%);display:flex;align-items:center;gap:16px;padding:12px 18px;border-radius:999px;background:rgba(7,29,35,.84);backdrop-filter:blur(14px)}.j5-route-strip span{font-size:11px;opacity:.7}.j5-route-strip button{border:0;border-radius:999px;background:#f3e8d5;color:#18353c;padding:8px 12px;font-weight:800}
.j5-bike-check{position:absolute;z-index:18;left:var(--x);top:var(--y);transform:translate(-50%,-50%);display:grid;place-items:center;gap:4px;width:72px;height:72px;border:1px solid rgba(255,255,255,.55);border-radius:50%;background:rgba(7,29,35,.5);backdrop-filter:blur(8px)}.j5-bike-check i{width:13px;height:13px;border:2px solid white;border-radius:50%}.j5-bike-check span{font-size:9px}.j5-bike-check.is-done{background:rgba(90,135,101,.72)}
.j5-pedal{position:absolute;z-index:18;left:50%;bottom:8vh;transform:translateX(-50%);width:150px;height:150px;border:1px solid rgba(255,255,255,.6);border-radius:50%;background:rgba(7,29,35,.24);backdrop-filter:blur(4px);touch-action:none}.j5-pedal span,.j5-pedal b{display:block}.j5-pedal span{font-size:12px}.j5-pedal b{font:700 30px Georgia}.j5-riding-hud{position:absolute;z-index:12;left:50%;bottom:4vh;transform:translateX(-50%);font-size:10px;opacity:.5}.j5-stop-road,.j5-keep-riding,.j5-london-enter,.j5-london-pass,.j5-put-bike{position:absolute;z-index:18;bottom:7vh;padding:11px 15px;border:1px solid rgba(255,255,255,.26);border-radius:999px;background:rgba(7,29,35,.7)}.j5-stop-road,.j5-london-enter{left:6vw}.j5-keep-riding,.j5-london-pass,.j5-put-bike{right:6vw}.j5-local-browse{position:absolute;z-index:12;left:6vw;bottom:8vh;display:grid;gap:5px;text-shadow:0 2px 15px #000}.j5-local-browse b{font:600 32px Georgia}.j5-local-browse span{font-size:12px}
.j5-order-card{width:min(430px,40vw)}.j5-order-card strong{display:block;margin:12px 0;font:700 34px Georgia}.j5-order-card button{min-height:44px;padding:9px 14px;border:0;border-radius:999px;background:#f3e8d5;color:#17363c;font-weight:800}.j5-cafe-receipt{position:absolute;z-index:12;left:6vw;bottom:8vh;display:grid;padding:10px 14px;background:#f8efdd;color:#18353c;transform:rotate(-2deg);box-shadow:0 12px 26px rgba(0,0,0,.3)}
.scene--j5-futamigaura[data-phase="watching"] .chrome{opacity:0}.scene--j5-futamigaura[data-phase="watching"] .scene-vignette{opacity:.15}.j5-shore-actions{position:absolute;z-index:18;left:50%;bottom:6vh;transform:translateX(-50%);display:flex;gap:10px}.j5-shore-actions button{padding:10px 15px;border:1px solid rgba(255,255,255,.24);border-radius:999px;background:rgba(7,29,35,.56);backdrop-filter:blur(10px)}.j5-shore-actions .j5-resume{position:static}
.j5-pendant-focus{position:absolute;z-index:16;right:9vw;bottom:10vh;width:180px;padding:0;border:0;background:transparent;filter:drop-shadow(0 17px 22px rgba(0,0,0,.3))}.j5-pendant-focus img{width:100%;display:block}.j5-pendant-focus span{display:block;margin-top:4px;font-size:10px}.j5-shop-leave{position:absolute;z-index:16;left:6vw;bottom:7vh;padding:10px 14px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(7,29,35,.62)}.j5-product-card{position:absolute;z-index:20;right:6vw;top:14vh;width:min(360px,34vw);display:grid;gap:10px;padding:18px;border-radius:28px;background:rgba(247,240,226,.94);color:#18353c;box-shadow:var(--shadow)}.j5-product-card img{width:70%;max-height:260px;object-fit:contain;justify-self:center}.j5-product-card strong{font:700 30px Georgia}.j5-product-card button{padding:9px 12px;border:1px solid rgba(24,53,60,.2);border-radius:999px;background:#fffaf0;color:#18353c;font-weight:800}.j5-discount{color:#8b4a3d;font-weight:900}
.j5-return-time{position:absolute;z-index:14;left:6vw;bottom:8vh;display:grid;text-shadow:0 2px 18px #000}.j5-return-time b{font:600 58px Georgia}.j5-return-time span{font-size:12px}.j5-late-fee,.j5-returned,.j5-evening-reload{position:absolute;z-index:20;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;gap:10px;min-width:280px;padding:20px 24px;border-radius:22px;background:rgba(7,29,35,.9);text-align:center;box-shadow:var(--shadow)}.j5-late-fee strong,.j5-returned strong{font:700 36px Georgia}.j5-return-bag{position:absolute;z-index:12;left:7vw;bottom:7vh;display:flex;align-items:end;gap:15px}.j5-return-bag img{width:90px;filter:drop-shadow(0 10px 12px rgba(0,0,0,.3))}.j5-return-bag span{font-size:12px;text-shadow:0 2px 10px #000}.j5-room-souvenir{position:absolute;z-index:15;right:10vw;bottom:15vh;display:grid;justify-items:center}.j5-room-souvenir img{width:clamp(120px,14vw,210px);filter:drop-shadow(0 18px 20px rgba(0,0,0,.35))}.j5-room-souvenir span{font-size:10px}.j5-home-note{width:min(480px,42vw)}.j5-home-note>*{display:block;margin:6px 0}.j5-home-note b{font:600 27px Georgia}.j5-home-note button{margin-top:12px;padding:10px 14px;border:0;border-radius:999px;background:#f3e8d5;color:#17363c;font-weight:800}
.j4-next-day{position:absolute;z-index:18;right:6vw;bottom:7vh;padding:11px 16px;border:1px solid rgba(255,255,255,.24);border-radius:999px;background:rgba(7,29,35,.72);font-weight:800}
@media(max-width:800px){
 .j5-sato-line,.j5-rental-dialogue,.j5-order-card,.j5-home-note{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 120px);width:auto;padding:15px 17px}.j5-sato-line p,.j5-rental-dialogue p,.j5-order-card p{font-size:18px}.j5-daybag{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 14px);width:auto;padding:12px}.j5-daybag-items{gap:6px}.j5-pack-item{border-radius:13px}.j5-depart{right:18px;bottom:calc(var(--safe-bottom) + 18px)}
 .j5-platform-card{left:14px;top:calc(var(--safe-top) + 86px);padding:12px 15px}.j5-ic-card{right:18px;bottom:18vh;width:150px;height:90px}.j5-platform-sign{width:calc(100% - 32px)}.j5-listen{left:16px;bottom:calc(var(--safe-bottom) + 16px)}.j5-board{right:16px;bottom:calc(var(--safe-bottom) + 16px)}.j5-train-line{left:18px;bottom:13vh;max-width:80vw;font-size:27px}.j5-arrival-note{left:18px;bottom:10vh}.j5-arrival-note b{font-size:30px}
 .j5-rental-form{left:10px;right:10px;top:calc(var(--safe-top) + 70px);width:auto;max-height:76vh;padding:18px 16px;border-radius:10px}.j5-form-row{grid-template-columns:1fr 1fr}.j5-pay-methods{right:14px;bottom:8vh}.j5-rental-slip{left:14px;bottom:20vh}.j5-key-object,.j5-key-return{left:44%;top:60%;width:112px;height:112px}.j5-key-pocket,.j5-key-tray{right:16px;bottom:9vh;width:130px;height:85px}.j5-route-strip{left:12px;right:12px;bottom:calc(var(--safe-bottom) + 12px);transform:none;display:grid;grid-template-columns:1fr auto;width:auto;border-radius:18px}.j5-route-strip span{grid-column:1/2}.j5-bike-check{width:58px;height:58px}.j5-bike-check span{display:none}.j5-pedal{width:128px;height:128px}.j5-riding-hud{display:none}
 .j5-stop-road,.j5-keep-riding,.j5-london-enter,.j5-london-pass,.j5-put-bike{bottom:calc(var(--safe-bottom) + 18px)}.j5-local-browse{left:18px;bottom:14vh}.j5-local-leave,.j5-cafe-leave,.j5-arrive-rental,.j5-go-home-train,.j5-back-kukuru{right:16px;bottom:calc(var(--safe-bottom) + 18px)}.j5-shore-actions{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 14px);transform:none;justify-content:space-between}.j5-pendant-focus{right:18px;bottom:17vh;width:130px}.j5-product-card{left:14px;right:14px;top:auto;bottom:calc(var(--safe-bottom) + 14px);width:auto;grid-template-columns:90px 1fr;align-items:center;border-radius:20px}.j5-product-card img{grid-row:1/6;width:90px;max-height:140px}.j5-product-card strong{font-size:24px}.j5-product-card button{grid-column:2}.j5-return-time{left:18px;bottom:15vh}.j5-return-time b{font-size:46px}.j5-return-bag{left:18px;bottom:14vh}.j5-room-souvenir{right:20px;bottom:20vh}.j5-home-note{bottom:calc(var(--safe-bottom) + 18px)}
}

/* J6 · Tenjin Natsu Matsuri */
.scene--j6-kukuru .world img{filter:brightness(.86) saturate(.9)}
.j6-sato,.j6-compact-dialog,.j6-vasara-entry,.j6-game-entry,.j6-culture-note,.j6-end-note,.j6-home-copy{position:absolute;z-index:18;left:6vw;bottom:8vh;width:min(520px,42vw);padding:20px 22px;border-radius:24px;background:rgba(7,29,35,.78);backdrop-filter:blur(18px);box-shadow:var(--shadow)}
.j6-sato b,.j6-vasara-entry b,.j6-end-note b,.j6-home-copy b{display:block;font:600 28px/1.05 Georgia,serif}.j6-sato p{margin:10px 0 5px;font:500 20px/1.35 "Yu Mincho",serif}.j6-sato span,.j6-vasara-entry span,.j6-end-note span,.j6-home-copy span{display:block;margin-top:7px;font-size:13px;line-height:1.5;opacity:.88}
.j6-pack-world{position:absolute;z-index:15;right:6vw;bottom:7vh;width:min(520px,44vw);min-height:250px;display:grid;grid-template-columns:repeat(4,1fr);align-items:end;gap:10px;padding:18px;border-radius:26px;background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(7,29,35,.34));backdrop-filter:blur(10px)}
.j6-pack-object{min-height:130px;border:0;border-radius:20px;background:rgba(250,243,230,.9);color:var(--ink);display:grid;place-items:center;align-content:center;gap:8px;transition:.25s}.j6-pack-object i{font:600 30px Georgia,serif;font-style:normal}.j6-pack-object span{font-size:10px;font-weight:800}.j6-pack-object.is-packed{transform:translateY(18px) scale(.86);opacity:.32}.j6-pouch{grid-column:1/-1;min-height:58px;border:1px dashed rgba(255,255,255,.46);border-radius:18px;display:flex;justify-content:space-between;align-items:center;padding:0 16px;background:rgba(4,20,24,.3)}
.j6-world-next,.j6-world-back,.j6-rent-confirm,.j6-enter-festival{position:absolute;z-index:24;right:5vw;bottom:6vh;min-height:48px;padding:11px 18px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(7,29,35,.76);backdrop-filter:blur(14px);font-weight:850}.j6-world-back{left:5vw;right:auto}.j6-walk-caption{position:absolute;z-index:10;left:6vw;bottom:8vh;max-width:460px;font:500 25px/1.25 Georgia,serif;text-shadow:0 2px 22px #000}.j6-gate-amount{position:absolute;z-index:15;left:6vw;top:18vh;display:grid;gap:4px;padding:12px 15px;border-radius:16px;background:rgba(7,29,35,.7);backdrop-filter:blur(10px)}.j6-gate-amount small{font-size:10px;letter-spacing:.12em}.j6-gate-amount strong{font:600 32px Georgia}.j6-ic{position:absolute;z-index:18;right:7vw;bottom:16vh;width:165px;height:102px;border:0;border-radius:18px;background:linear-gradient(150deg,#d7e8d1,#90b98d);color:#17363c;box-shadow:0 18px 38px rgba(0,0,0,.3);transform:rotate(-5deg);display:grid;align-content:center;gap:5px}.j6-ic b{font:800 17px Georgia}.j6-ic span{font-size:11px}.j6-compact-dialog{left:50%;top:50%;bottom:auto;transform:translate(-50%,-50%);width:min(360px,84vw);display:grid;gap:10px;text-align:center}.j6-compact-dialog button,.j6-vasara-entry button,.j6-game-entry button,.j6-culture-note button,.j6-end-note button,.j6-home-copy button{min-height:42px;padding:9px 13px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.1)}
.j6-metro-note{position:absolute;z-index:12;left:6vw;bottom:10vh;display:grid;gap:5px;max-width:380px;text-shadow:0 2px 18px #000}.j6-metro-note b{font:600 36px Georgia}.j6-metro-note span{font-size:13px}.j6-choice-path{position:absolute;z-index:20;left:50%;bottom:7vh;transform:translateX(-50%);display:flex;gap:10px}.j6-choice-path button{padding:12px 17px;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:rgba(7,29,35,.72);backdrop-filter:blur(12px);font-weight:800}.j6-vasara-entry>div{display:flex;gap:8px;margin-top:15px}.j6-rack-stage{position:absolute;z-index:12;inset:11vh 6vw 14vh;display:grid;grid-template-columns:1fr 1fr;align-items:end;gap:4vw}.j6-garment{position:relative;height:70vh;border:0;background:transparent;filter:drop-shadow(0 20px 35px rgba(0,0,0,.36));transition:.25s}.j6-garment img{width:100%;height:92%;object-fit:contain}.j6-garment span{position:absolute;left:50%;bottom:0;transform:translateX(-50%);padding:8px 12px;border-radius:999px;background:rgba(7,29,35,.7);white-space:nowrap;font-size:11px}.j6-garment.is-selected{transform:translateY(-10px) scale(1.035);filter:drop-shadow(0 24px 42px rgba(255,220,160,.26))}.j6-rack-note{position:absolute;left:50%;top:3%;transform:translateX(-50%);width:min(480px,52vw);text-align:center;text-shadow:0 2px 16px #000}.j6-rack-note b,.j6-rack-note span{display:block}.j6-rack-note b{font:600 24px Georgia}.j6-rack-note span{font-size:11px;margin-top:6px;opacity:.8}.j6-rent-confirm{bottom:4vh;left:50%;right:auto;transform:translateX(-50%);background:#f5ead7;color:#17363c}
.j6-outfit-persist{position:absolute;z-index:14;left:7vw;bottom:4vh;width:280px;height:68vh}.j6-worn-yukata{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 20px 30px rgba(0,0,0,.36))}.j6-worn-bag{position:absolute;width:35%;right:-8%;bottom:12%;filter:drop-shadow(0 10px 18px rgba(0,0,0,.3))}.j6-worn-uchiwa{position:absolute;width:30%;left:-7%;bottom:16%;transform:rotate(-12deg);filter:drop-shadow(0 10px 18px rgba(0,0,0,.3))}.j6-dressed-line{position:absolute;z-index:14;right:6vw;bottom:10vh;max-width:460px;margin:0;font:500 25px/1.3 Georgia,serif;text-shadow:0 2px 20px #000}
.scene--j6-festival-arrival[data-phase="breathing"] .chrome{opacity:0;pointer-events:none}.scene--j6-festival-arrival[data-phase="breathing"] .scene-vignette{opacity:.16}.j6-enter-festival{left:50%;right:auto;transform:translateX(-50%)}.j6-festival-zones{position:absolute;z-index:16;inset:0;pointer-events:none}.j6-zone{position:absolute;pointer-events:auto;display:grid;gap:2px;min-width:92px;padding:9px 12px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(7,29,35,.58);backdrop-filter:blur(10px);text-shadow:0 2px 8px #000}.j6-zone b{font:700 16px Georgia}.j6-zone span{font-size:9px;opacity:.78}.j6-zone--food{left:7%;bottom:17%}.j6-zone--super{right:7%;bottom:17%}.j6-zone--shoot{right:13%;top:31%}.j6-zone--bon{left:50%;top:40%;transform:translate(-50%,-50%);background:rgba(128,51,43,.72)}.j6-time-breath{position:absolute;z-index:15;right:5vw;top:14vh;display:grid;justify-items:end;gap:7px;text-shadow:0 2px 15px #000}.j6-time-breath span{font:500 34px Georgia}.j6-time-breath button{padding:7px 11px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(7,29,35,.5);font-size:10px}
.j6-food-choice{position:absolute;z-index:18;left:50%;bottom:7vh;transform:translateX(-50%);display:flex;gap:22px}.j6-food-choice button{width:210px;min-height:245px;border:1px solid rgba(255,255,255,.18);border-radius:28px;background:rgba(7,29,35,.64);backdrop-filter:blur(14px);display:grid;justify-items:center;align-content:end;padding:10px}.j6-food-choice img{width:180px;height:180px;object-fit:contain;filter:drop-shadow(0 14px 18px rgba(0,0,0,.35))}.j6-food-choice b{font:600 19px Georgia}.j6-food-choice span{font-size:11px}.j6-order-phrase{position:absolute;z-index:18;left:6vw;bottom:10vh;padding:15px 18px;border-radius:20px;background:rgba(7,29,35,.72);backdrop-filter:blur(12px)}.j6-order-phrase b{display:block;font:600 27px "Yu Mincho",serif}.j6-order-phrase span{font-size:12px}.j6-cash-tray{position:absolute;z-index:16;right:8vw;bottom:11vh;width:190px;height:100px;border:2px dashed rgba(255,255,255,.6);border-radius:20px;display:grid;place-items:center;background:rgba(0,0,0,.2)}.j6-cash{position:absolute;z-index:20;right:31vw;bottom:13vh;width:140px;height:76px;border:0;border-radius:8px;background:#efe1b8;color:#55442a;box-shadow:0 12px 24px rgba(0,0,0,.28);touch-action:none}.j6-cash b,.j6-cash span{display:block}.j6-food-held{position:absolute;z-index:16;left:50%;bottom:5vh;transform:translateX(-50%);display:grid;grid-template-columns:180px minmax(240px,420px);align-items:center;gap:18px;padding:15px 18px;border-radius:28px;background:rgba(7,29,35,.64);backdrop-filter:blur(14px)}.j6-food-held img{width:180px;height:180px;object-fit:contain}.j6-food-held p{margin:0;font:500 18px/1.5 Georgia}.j6-food-held button{grid-column:2;padding:9px 12px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.08)}
.j6-game-entry{left:6vw;bottom:7vh;width:min(370px,36vw);display:grid;gap:10px}.j6-game-entry b{font:600 30px Georgia}.j6-game-entry span{font:600 22px Georgia}.j6-game-entry--dark{background:rgba(14,16,25,.84)}.j6-poi{position:absolute;z-index:18;left:22%;bottom:15%;width:115px;height:115px;border:0;background:transparent;touch-action:none}.j6-poi i{display:block;width:80px;height:80px;margin:auto;border:8px solid #efe8d5;border-radius:50%;background:rgba(255,255,255,.12);box-shadow:0 0 0 3px #8e6e50}.j6-poi span{display:block;padding:4px 8px;border-radius:999px;background:rgba(7,29,35,.7);font-size:10px}.j6-ball-target{position:absolute;z-index:14;right:24%;top:43%;width:90px;height:90px;border-radius:50%;display:grid;place-items:center}.j6-ball-target i{width:42px;height:42px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#fff,#ff5f70 26%,#2874d9 58%,#f5d14b);box-shadow:0 8px 18px rgba(0,0,0,.25)}.j6-game-whisper{position:absolute;z-index:12;left:50%;bottom:5vh;transform:translateX(-50%);margin:0;padding:8px 12px;border-radius:999px;background:rgba(7,29,35,.56);font-size:11px}.j6-prize-small{position:absolute;z-index:17;left:50%;bottom:8vh;transform:translateX(-50%);display:flex;align-items:center;gap:14px;padding:14px 18px;border-radius:24px;background:rgba(7,29,35,.72);backdrop-filter:blur(14px)}.j6-prize-small button{padding:8px 11px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.08)}.j6-ball-prize{display:inline-block;width:50px;height:50px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff,#ff4d66 25%,#32a1e8 58%,#f5d14b);box-shadow:0 8px 18px rgba(0,0,0,.25)}.j6-targets button{position:absolute;z-index:20;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:76px;height:76px;border:2px solid rgba(255,255,255,.7);border-radius:50%;background:rgba(255,255,255,.04);box-shadow:0 0 0 8px rgba(255,255,255,.05)}.j6-targets button::after{content:'';position:absolute;inset:23px;border-radius:50%;background:#df6d55}.j6-mini-prize{width:58px;height:58px;display:grid;place-items:center;border-radius:14px;background:#f1d5a7;color:#633;font:800 20px Georgia;box-shadow:0 8px 18px rgba(0,0,0,.22)}
.scene--j6-bon .chrome,.scene--j6-dance .chrome{opacity:.24}.scene--j6-bon .scene-vignette,.scene--j6-dance .scene-vignette{opacity:.16}.j6-bon-actions{position:absolute;z-index:18;left:50%;bottom:5vh;transform:translateX(-50%);display:flex;gap:8px}.j6-bon-actions button{padding:10px 14px;border:1px solid rgba(255,255,255,.24);border-radius:999px;background:rgba(7,29,35,.55);backdrop-filter:blur(12px)}.j6-culture-note{left:50%;top:50%;bottom:auto;transform:translate(-50%,-50%);width:min(570px,82vw);background:rgba(245,236,219,.96);color:var(--ink)}.j6-culture-note small{letter-spacing:.17em;color:#9d604d}.j6-culture-note b{display:block;margin:7px 0 10px;font:600 38px Georgia}.j6-culture-note p{font:400 16px/1.7 Georgia}.j6-culture-note button{position:absolute;right:12px;top:12px;width:36px;height:36px;padding:0;color:var(--ink);border-color:rgba(24,53,60,.2)}.j6-join-breath{position:absolute;z-index:16;left:50%;bottom:7vh;transform:translateX(-50%);display:grid;justify-items:center;gap:12px;text-align:center;text-shadow:0 2px 20px #000}.j6-join-breath b{font:500 24px/1.35 Georgia}.j6-join-breath button{padding:10px 16px;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:rgba(7,29,35,.55)}.j6-gesture-area{position:absolute;z-index:20;left:50%;top:57%;transform:translate(-50%,-50%);width:min(520px,58vw);height:250px;border:1px solid rgba(255,255,255,.24);border-radius:999px;background:rgba(7,29,35,.12);backdrop-filter:blur(2px);display:grid;place-items:center;text-align:center;touch-action:none}.j6-gesture-area i{position:absolute;width:76%;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent)}.j6-gesture-area span{max-width:24ch;font:500 21px/1.35 Georgia;text-shadow:0 2px 18px #000}.j6-gesture-area small{position:absolute;bottom:28px;font-size:10px;opacity:.65}.j6-room-traces{position:absolute;z-index:14;right:9vw;bottom:16vh;display:flex;align-items:end;gap:12px}.j6-room-traces img{width:120px;filter:drop-shadow(0 14px 18px rgba(0,0,0,.35))}.j6-home-copy{bottom:8vh}.j6-home-copy button{margin-top:12px}

@media (max-width:800px){
  .j6-sato,.j6-vasara-entry,.j6-game-entry,.j6-end-note,.j6-home-copy{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 18px);width:auto;padding:15px 16px;border-radius:20px}.j6-sato b,.j6-vasara-entry b,.j6-end-note b,.j6-home-copy b{font-size:23px}.j6-sato p{font-size:17px}.j6-pack-world{left:12px;right:12px;bottom:calc(var(--safe-bottom) + 12px);width:auto;min-height:170px;grid-template-columns:repeat(4,1fr);padding:10px}.j6-pack-object{min-height:88px;padding:6px}.j6-pack-object i{font-size:22px}.j6-pack-object span{font-size:8px}.j6-pouch{min-height:42px}.j6-world-next{right:16px;bottom:calc(var(--safe-bottom) + 18px)}.j6-world-back{left:16px;bottom:calc(var(--safe-bottom) + 18px)}.j6-walk-caption{left:18px;right:18px;bottom:14vh;font-size:22px}.j6-gate-amount{left:16px;top:calc(var(--safe-top) + 82px)}.j6-ic{right:18px;bottom:18vh;width:145px;height:92px}.j6-choice-path{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 16px);transform:none;display:grid;grid-template-columns:1fr 1fr}.j6-choice-path button{padding:10px 8px;font-size:11px}.j6-rack-stage{inset:9vh 8px 13vh;gap:4px}.j6-garment{height:61vh}.j6-garment span{font-size:9px;padding:6px 8px}.j6-rack-note{top:1%;width:90vw}.j6-rack-note b{font-size:19px}.j6-rack-note span{font-size:9px}.j6-rent-confirm{bottom:calc(var(--safe-bottom) + 10px);width:calc(100% - 28px);text-align:center}.j6-outfit-persist{left:2vw;bottom:9vh;width:155px;height:55vh}.j6-dressed-line{left:45%;right:16px;bottom:15vh;font-size:19px}.j6-enter-festival{left:14px;right:14px;transform:none;text-align:center}.j6-zone{min-width:72px;padding:7px 9px}.j6-zone b{font-size:13px}.j6-zone span{font-size:8px}.j6-zone--food{left:4%;bottom:18%}.j6-zone--super{right:4%;bottom:17%}.j6-zone--shoot{right:7%;top:30%}.j6-zone--bon{top:43%}.j6-time-breath{right:16px;top:calc(var(--safe-top) + 78px)}.j6-food-choice{left:10px;right:10px;bottom:calc(var(--safe-bottom) + 14px);transform:none;gap:8px}.j6-food-choice button{width:50%;min-height:190px;border-radius:20px}.j6-food-choice img{width:125px;height:125px}.j6-order-phrase{left:16px;right:16px;bottom:30vh}.j6-order-phrase b{font-size:22px}.j6-cash-tray{right:18px;bottom:12vh;width:145px;height:86px}.j6-cash{left:18px;right:auto;bottom:13vh;width:125px}.j6-food-held{left:12px;right:12px;bottom:calc(var(--safe-bottom) + 12px);transform:none;grid-template-columns:110px 1fr;gap:10px;padding:12px}.j6-food-held img{width:110px;height:110px}.j6-food-held p{font-size:15px}.j6-game-entry{bottom:calc(var(--safe-bottom) + 16px)}.j6-poi{left:15%;bottom:16%;width:90px;height:90px}.j6-poi i{width:66px;height:66px}.j6-ball-target{right:17%;top:45%;width:76px;height:76px}.j6-game-whisper{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 12px);transform:none;text-align:center}.j6-prize-small{left:12px;right:12px;bottom:calc(var(--safe-bottom) + 14px);transform:none}.j6-targets button{width:58px;height:58px}.j6-targets button::after{inset:17px}.j6-bon-actions{left:12px;right:12px;bottom:calc(var(--safe-bottom) + 14px);transform:none;display:grid;grid-template-columns:1fr 1fr}.j6-bon-actions button:last-child{grid-column:1/-1}.j6-culture-note{width:calc(100% - 24px);max-height:74vh;overflow:auto}.j6-culture-note b{font-size:31px}.j6-join-breath{left:16px;right:16px;bottom:calc(var(--safe-bottom) + 20px);transform:none}.j6-join-breath b{font-size:20px}.j6-gesture-area{width:86vw;height:220px;top:58%}.j6-gesture-area span{font-size:18px}.j6-room-traces{right:20px;bottom:25vh}.j6-room-traces img{width:92px}.j6-home-copy{bottom:calc(var(--safe-bottom) + 14px)}
}
.j6-join-breath>div{display:flex;gap:8px;justify-content:center}.j6-join-breath>div button{padding:9px 13px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(7,29,35,.55)}
@media(max-width:800px){.j6-join-breath>div{width:100%;display:grid;grid-template-columns:1fr 1fr}.j6-join-breath>div button{font-size:11px}}

/* J7 · Mata ne / departure */
.scene--j7-room .chrome,.scene--j7-flight .chrome,.scene--j7-final .chrome{opacity:.36}
.j7-morning-copy,.j7-route-note,.j7-farewell,.j7-airport-cue,.j7-shuttle-note,.j7-flight-doc,.j7-security-flow,.j7-gate-copy,.j7-boarded,.j7-flight-memory,.j7-final-copy,.j7-returned,.j7-compact{position:absolute;z-index:18;left:6vw;bottom:7vh;width:min(520px,42vw);padding:18px 20px;border-radius:24px;background:rgba(7,29,35,.76);backdrop-filter:blur(18px);box-shadow:var(--shadow)}
.j7-morning-copy small,.j7-flight-memory small,.j7-final-copy small{letter-spacing:.15em;font-size:9px}.j7-morning-copy b,.j7-route-note b,.j7-farewell b,.j7-airport-cue b,.j7-shuttle-note b,.j7-flight-doc b,.j7-security-flow b,.j7-gate-copy b,.j7-boarded b,.j7-flight-memory b,.j7-final-copy b,.j7-returned b,.j7-compact b{display:block;font:600 29px/1.1 Georgia,serif}.j7-morning-copy span,.j7-route-note span,.j7-farewell span,.j7-airport-cue span,.j7-shuttle-note span,.j7-flight-doc span,.j7-security-flow span,.j7-boarded span,.j7-flight-memory span,.j7-returned span,.j7-compact span{display:block;margin-top:8px;font-size:13px;line-height:1.55;opacity:.88}
.j7-suitcase-zone{position:absolute;z-index:12;left:50%;top:55%;transform:translate(-50%,-50%);width:min(620px,48vw);height:min(520px,65vh);display:grid;place-items:center}.j7-suitcase-zone img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 24px 36px rgba(0,0,0,.36))}.j7-suitcase-zone span{position:absolute;bottom:7%;padding:7px 12px;border-radius:999px;background:rgba(7,29,35,.65);font-size:10px}.j7-suitcase-zone.is-receiving{filter:drop-shadow(0 0 18px rgba(248,223,167,.55))}
.j7-pack-tray{position:absolute;z-index:20;right:5vw;top:19vh;width:min(230px,20vw);display:grid;gap:10px}.j7-pack-item{position:relative;min-height:112px;border:1px solid rgba(255,255,255,.24);border-radius:20px;background:rgba(244,236,221,.9);color:var(--ink);display:grid;place-items:center;align-content:center;touch-action:none}.j7-pack-item img{width:92px;height:92px;object-fit:contain}.j7-pack-item span{font-size:9px;font-weight:800}.j7-pack-item--token i{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#f65d74,#2f8fcf,#f0ca4f);font-style:normal;font-weight:900;color:white}.j7-pack-item.is-active{transform:scale(1.03)}
.j7-close-case{position:absolute;z-index:24;left:50%;bottom:5vh;transform:translateX(-50%);min-width:260px;min-height:52px;padding:11px 20px;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:rgba(7,29,35,.72);backdrop-filter:blur(14px);overflow:hidden}.j7-close-case::after{content:"";position:absolute;inset:0;right:100%;background:rgba(247,227,187,.22);transition:none}.j7-close-case.is-holding::after{right:0;transition:right .9s linear}.j7-close-case span{position:relative;z-index:1}
.j7-next,.j7-farewell button,.j7-returned button,.j7-security-flow button,.j7-boarded button,.j7-flight-memory button,.j7-final-copy button,.j7-compact button{min-height:46px;padding:10px 16px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(255,255,255,.1);font-weight:800}.j7-next{position:absolute;z-index:24;right:5vw;bottom:6vh;background:rgba(7,29,35,.74);backdrop-filter:blur(14px)}
.j7-rental-bundle{position:absolute;z-index:20;left:14vw;bottom:8vh;width:260px;height:64vh;border:0;background:transparent;touch-action:none}.j7-rental-bundle img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 18px 30px rgba(0,0,0,.34))}.j7-rental-bundle span{position:absolute;left:50%;bottom:2%;transform:translateX(-50%);padding:7px 11px;border-radius:999px;background:rgba(7,29,35,.7);font-size:10px;white-space:nowrap}.j7-rental-counter{position:absolute;z-index:14;right:12vw;bottom:19vh;width:260px;height:150px;border:2px dashed rgba(255,255,255,.5);border-radius:24px;background:rgba(7,29,35,.24);display:grid;place-items:center;align-content:center;gap:6px}.j7-rental-counter b{font:600 28px Georgia}.j7-rental-counter span{font-size:11px}.j7-rental-counter.is-receiving{background:rgba(218,184,130,.2)}.j7-returned{left:50%;top:50%;bottom:auto;transform:translate(-50%,-50%);text-align:center}.j7-returned button{margin-top:12px}
.j7-farewell button{display:grid;width:100%;text-align:left;gap:4px;margin-top:14px}.j7-farewell button strong{font:600 22px "Yu Mincho",serif}.j7-farewell p{font:600 25px/1.4 "Yu Mincho",serif;margin:0 0 8px}
.j7-gate{position:absolute;z-index:15;right:9vw;bottom:20vh;width:220px;height:130px;border:2px solid rgba(255,255,255,.45);border-radius:22px;background:rgba(7,29,35,.4);display:grid;place-items:center;align-content:center}.j7-gate b{font:700 28px Georgia}.j7-gate small{font-size:10px}.j7-gate.is-receiving{background:rgba(220,191,133,.23)}.j7-ic-card{position:absolute;z-index:20;left:11vw;bottom:16vh;width:170px;height:105px;border:0;border-radius:18px;background:linear-gradient(145deg,#d8ead3,#8db68a);color:#17363c;box-shadow:0 18px 36px rgba(0,0,0,.3);transform:rotate(-5deg);touch-action:none}.j7-ic-card b,.j7-ic-card span{display:block}.j7-ic-card b{font:800 17px Georgia}.j7-ic-card span{font-size:11px}.j7-compact{left:50%;top:50%;bottom:auto;transform:translate(-50%,-50%);width:min(360px,84vw);text-align:center}.j7-compact button{margin-top:12px}
.j7-metro-line{position:absolute;z-index:16;left:50%;top:53%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:13px;padding:18px 24px;border-radius:22px;background:rgba(7,29,35,.58);backdrop-filter:blur(14px)}.j7-metro-line span,.j7-metro-line strong{text-align:center}.j7-metro-line i{width:48px;height:2px;background:rgba(255,255,255,.6)}.j7-metro-line strong{color:#f4d9a2}
.j7-airport-cue{bottom:8vh}.j7-shuttle-note b{font-size:36px}.j7-flight-doc{left:auto;right:5vw;bottom:7vh;width:min(390px,34vw)}
.j7-bagdrop{position:absolute;z-index:14;right:8vw;top:30vh;width:260px;height:180px;border:2px dashed rgba(255,255,255,.5);border-radius:26px;background:rgba(7,29,35,.25);display:grid;place-items:center;align-content:center}.j7-bagdrop b{font:700 25px Georgia}.j7-bagdrop span{font-size:11px}.j7-suitcase-closed{position:absolute;z-index:20;left:11vw;bottom:9vh;width:220px;height:160px;border:0;background:transparent;touch-action:none}.j7-suitcase-closed i{display:block;width:160px;height:112px;margin:auto;border:5px solid #3f3228;border-radius:20px;background:linear-gradient(145deg,#4a3a2d,#171411);box-shadow:0 20px 35px rgba(0,0,0,.4)}.j7-suitcase-closed span{padding:5px 9px;border-radius:999px;background:rgba(7,29,35,.7);font-size:10px}.j7-security-flow{left:50%;top:52%;bottom:auto;transform:translate(-50%,-50%);text-align:center}.j7-security-flow button{margin-top:14px}
.j7-return-pass{position:absolute;z-index:20;left:9vw;bottom:12vh;width:330px;min-height:150px;border:0;border-radius:20px;background:#f5ead7;color:#16363d;box-shadow:0 18px 40px rgba(0,0,0,.3);display:grid;align-content:center;text-align:left;padding:20px;touch-action:none}.j7-return-pass small{letter-spacing:.14em}.j7-return-pass strong{font:700 27px Georgia}.j7-return-pass span{font-size:12px}.j7-pass-scanner{position:absolute;z-index:14;right:12vw;bottom:18vh;width:220px;height:150px;border:2px dashed rgba(255,255,255,.55);border-radius:22px;background:rgba(7,29,35,.25);display:grid;place-items:center;align-content:center;gap:6px}.j7-pass-scanner i{width:72px;height:8px;border-radius:4px;background:#86d9b8;box-shadow:0 0 18px rgba(134,217,184,.45)}.j7-pass-scanner span{font-size:10px;letter-spacing:.15em}.j7-pass-scanner.is-receiving{background:rgba(134,217,184,.15)}.j7-boarded{left:50%;top:52%;bottom:auto;transform:translate(-50%,-50%);text-align:center}.j7-boarded button{margin-top:12px}
.j7-flight-memory{bottom:8vh}.j7-flight-memory button{margin-top:14px}.scene--j7-final .chrome{opacity:0;pointer-events:none}.scene--j7-final .scene-vignette{opacity:.12}.j7-final-stamp{position:absolute;z-index:15;right:8vw;top:50%;transform:translateY(-50%);width:min(360px,31vw);display:grid;justify-items:center;gap:10px}.j7-final-stamp img{width:100%;border-radius:50%;filter:drop-shadow(0 22px 36px rgba(0,0,0,.3));mix-blend-mode:multiply}.j7-final-stamp span{max-width:34ch;text-align:center;font-size:10px;line-height:1.5;text-shadow:0 2px 14px #000}.j7-final-copy{bottom:8vh}.j7-final-copy p{font:500 17px/1.5 Georgia;margin:8px 0}.j7-final-copy button{margin-top:14px}
@media(max-width:800px){
  .j7-morning-copy,.j7-route-note,.j7-farewell,.j7-airport-cue,.j7-shuttle-note,.j7-flight-doc,.j7-security-flow,.j7-gate-copy,.j7-boarded,.j7-flight-memory,.j7-final-copy,.j7-returned,.j7-compact{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 14px);width:auto;padding:14px 15px;border-radius:19px}.j7-morning-copy b,.j7-route-note b,.j7-farewell b,.j7-airport-cue b,.j7-shuttle-note b,.j7-flight-doc b,.j7-security-flow b,.j7-gate-copy b,.j7-boarded b,.j7-flight-memory b,.j7-final-copy b,.j7-returned b,.j7-compact b{font-size:22px}
  .j7-suitcase-zone{left:50%;top:46%;width:90vw;height:47vh}.j7-pack-tray{left:10px;right:10px;top:auto;bottom:22vh;width:auto;grid-template-columns:repeat(3,1fr);gap:6px}.j7-pack-item{min-height:88px}.j7-pack-item img{width:67px;height:67px}.j7-close-case{bottom:calc(var(--safe-bottom) + 10px);width:calc(100% - 28px)}
  .j7-next{right:14px;bottom:calc(var(--safe-bottom) + 16px)}.j7-rental-bundle{left:4vw;bottom:16vh;width:44vw;height:54vh}.j7-rental-counter{right:4vw;bottom:20vh;width:43vw;height:125px}.j7-returned{top:50%;bottom:auto;transform:translateY(-50%)}
  .j7-gate{right:16px;bottom:21vh;width:145px;height:100px}.j7-ic-card{left:16px;bottom:21vh;width:140px;height:92px}.j7-metro-line{left:12px;right:12px;top:48%;transform:none;justify-content:center;gap:6px;padding:12px}.j7-metro-line i{width:18px}.j7-metro-line small{font-size:7px}
  .j7-flight-doc{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 14px)}.j7-bagdrop{right:15px;top:24vh;width:150px;height:120px}.j7-suitcase-closed{left:18px;bottom:20vh;width:150px;height:120px}.j7-suitcase-closed i{width:120px;height:82px}.j7-security-flow,.j7-boarded{top:50%;bottom:auto;transform:translateY(-50%)}
  .j7-return-pass{left:14px;bottom:23vh;width:58vw;min-height:122px;padding:14px}.j7-return-pass strong{font-size:20px}.j7-pass-scanner{right:14px;bottom:25vh;width:30vw;height:105px}
  .j7-final-stamp{right:50%;top:24%;transform:translateX(50%);width:45vw}.j7-final-stamp span{display:none}.j7-final-copy{bottom:calc(var(--safe-bottom) + 16px)}
}

/* ========================================================================== */
/* PREMIUM GLOBAL JOURNEY SHELL — route book, trailers, dossier and end sheet */
/* ========================================================================== */
.cover-brand__spacer { flex: 1; }
.cover-brand__spacer ~ button { margin-left: 0; }
.cover-brand__spacer + button { font-size: 17px; }
.tool--menu { font-size: 16px; line-height: 1; }

.journey-menu,
.chapter-teaser,
.trial-sheet,
.journey-end { position: fixed; inset: 0; z-index: 120; }

.journey-menu { display: grid; place-items: stretch; padding: 0; color: var(--ink); }
.journey-menu__backdrop { position: absolute; inset: 0; border: 0; background: rgba(3,16,20,.7); backdrop-filter: blur(16px) saturate(.8); }
.journey-menu__panel { position: relative; z-index: 1; display: grid; grid-template-rows: auto auto minmax(0,1fr); width: min(1220px, calc(100vw - 54px)); height: min(810px, calc(100svh - 54px)); margin: auto; overflow: hidden; border: 1px solid rgba(255,255,255,.32); border-radius: 28px; background: rgba(248,242,230,.97); box-shadow: 0 40px 120px rgba(0,0,0,.5); }
.journey-menu__head { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 22px 28px 15px; border-bottom: 1px solid rgba(24,53,60,.12); }
.journey-menu__head > div { display: grid; grid-template-columns: auto auto; align-items: baseline; gap: 3px 12px; }
.journey-menu__head small { grid-column: 1 / -1; color: #8d604f; font-size: 9px; font-weight: 900; letter-spacing: .2em; }
.journey-menu__head strong { font: 500 30px Georgia,serif; }
.journey-menu__head span { color: #66777a; font-size: 12px; }
.journey-menu__head > button { width: 42px; height: 42px; border: 1px solid rgba(24,53,60,.17); border-radius: 50%; background: transparent; color: var(--ink); font-size: 27px; line-height: 1; }
.journey-menu__tabs { display: flex; gap: 7px; padding: 10px 28px 12px; overflow-x: auto; border-bottom: 1px solid rgba(24,53,60,.1); }
.journey-menu__tabs button { min-height: 39px; padding: 8px 14px; border: 1px solid transparent; border-radius: 999px; background: transparent; color: #5c6d70; font-size: 11px; font-weight: 850; white-space: nowrap; }
.journey-menu__tabs button.is-active { border-color: rgba(24,53,60,.14); background: #18353c; color: #fff9ef; }
.journey-menu__content { min-height: 0; overflow: auto; overscroll-behavior: contain; }

.route-book { padding: 26px 28px 30px; }
.route-book > header { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
.route-book > header small,
.notebook-panel__lead small,
.travel-folder__identity small,
.settings-panel > small { color: #a16553; font-size: 9px; font-weight: 900; letter-spacing: .18em; }
.route-book h2,
.notebook-panel h2,
.travel-folder h2,
.settings-panel h2 { margin: 5px 0 0; font: 500 clamp(27px,3vw,40px)/1.08 Georgia,serif; color: var(--ink); }
.route-book__resume { min-height: 43px; padding: 9px 16px; border: 1px solid rgba(24,53,60,.16); border-radius: 999px; background: var(--ink); color: #fff8eb; font-weight: 850; }
.route-book__resume span { margin-left: 14px; }
.route-rail { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; }
.route-card { position: relative; min-height: 205px; overflow: hidden; border: 1px solid rgba(24,53,60,.1); border-radius: 18px; background: #18353c; box-shadow: 0 12px 30px rgba(28,46,49,.1); }
.route-card__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease, filter .4s ease; }
.route-card__shade { position: absolute; inset: 0; background: linear-gradient(180deg,rgba(7,25,31,.06),rgba(7,25,31,.16) 38%,rgba(7,25,31,.88)); }
.route-card__copy { position: absolute; z-index: 2; left: 16px; right: 16px; bottom: 14px; display: grid; gap: 4px; color: #fff9ef; text-shadow: 0 2px 13px rgba(0,0,0,.45); }
.route-card__copy small { color: #f1c9b9; font-size: 8px; font-weight: 900; letter-spacing: .12em; }
.route-card__copy strong { font: 500 20px/1.05 Georgia,serif; }
.route-card__copy span { font-size: 9px; font-weight: 800; opacity: .76; }
.route-card__stamp { position: absolute; z-index: 2; top: 8px; right: 7px; width: 72px; height: 72px; object-fit: contain; opacity: .83; transform: rotate(7deg); filter: drop-shadow(0 4px 10px rgba(0,0,0,.2)); }
.route-card--locked .route-card__image { filter: saturate(.25) brightness(.75); }
.route-card--locked::after { content: ''; position: absolute; inset: 0; background: rgba(9,34,40,.18); }
.route-card--current { outline: 2px solid #ce846d; outline-offset: -2px; }
.route-card--current .route-card__image { transform: scale(1.025); }

.notebook-panel { display: grid; grid-template-columns: minmax(230px,.7fr) minmax(0,1.3fr); gap: 26px; padding: 28px; }
.notebook-panel__lead { align-self: start; position: sticky; top: 0; }
.notebook-panel__lead p { color: #637377; font: 400 15px/1.55 Georgia,serif; }
.stamp-strip { grid-column: 1; display: flex; flex-wrap: wrap; gap: 6px; align-self: start; }
.stamp-strip img { width: 62px; height: 62px; object-fit: contain; mix-blend-mode: multiply; opacity: .82; }
.memory-ledger { grid-column: 2; grid-row: 1 / span 2; display: grid; gap: 10px; align-content: start; }
.memory-ledger article { padding: 16px 18px; border: 1px solid rgba(24,53,60,.1); border-radius: 16px; background: rgba(255,255,255,.55); }
.memory-ledger small { color: #9e6251; font-size: 9px; font-weight: 900; letter-spacing: .11em; }
.memory-ledger p { margin: 7px 0 0; color: #324b50; font: 400 14px/1.55 Georgia,serif; }
.memory-empty { color: #758387; font: 400 15px/1.6 Georgia,serif; }

.travel-folder,
.settings-panel { padding: 28px; }
.travel-folder__identity { margin-bottom: 20px; }
.travel-folder__identity p { color: #66777a; font-size: 12px; }
.folder-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.folder-card { display: grid; grid-template-columns: 48px 1fr; align-items: center; gap: 12px; min-height: 88px; padding: 14px 16px; border: 1px solid rgba(24,53,60,.12); border-radius: 17px; background: rgba(255,255,255,.58); color: var(--ink); text-align: left; }
.folder-card > span { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 14px; background: #18353c; color: #fff7e8; font: 500 20px Georgia,serif; }
.folder-card div { display: grid; gap: 3px; }
.folder-card b { font-size: 13px; }
.folder-card small { color: #728084; font-size: 10px; line-height: 1.4; }
.folder-card--mei > span { background: #a96858; }
.menu-letter { position: relative; margin-top: 18px; padding: 25px 28px 22px; border: 1px solid rgba(113,67,52,.19); border-radius: 18px; background: #fff8e9; box-shadow: 0 14px 36px rgba(53,40,29,.08); }
.menu-letter::before { content: ''; position: absolute; inset: 8px; border: 1px solid rgba(121,76,58,.12); border-radius: 13px; pointer-events: none; }
.menu-letter > small { color: #9f614f; font-weight: 900; letter-spacing: .18em; }
.menu-letter p { max-width: 64ch; color: #344f54; font: 400 15px/1.65 Georgia,serif; }
.menu-letter img { display: block; width: 120px; height: 44px; object-fit: contain; object-position: left center; }
.menu-letter__close { position: absolute; z-index: 2; top: 10px; right: 10px; width: 35px; height: 35px; border: 0; border-radius: 50%; background: rgba(24,53,60,.07); color: var(--ink); font-size: 20px; }

.settings-panel { max-width: 760px; }
.settings-list { display: grid; gap: 9px; margin-top: 22px; }
.settings-list button { display: flex; justify-content: space-between; gap: 20px; min-height: 54px; padding: 12px 15px; border: 1px solid rgba(24,53,60,.12); border-radius: 14px; background: rgba(255,255,255,.55); color: var(--ink); }
.settings-list button span { font-weight: 780; }
.settings-list button b { color: #a36755; }
.settings-note { margin-top: 20px; padding-left: 14px; border-left: 2px solid #c9826d; color: #68797d; font: 400 13px/1.55 Georgia,serif; }

.chapter-teaser { overflow: hidden; color: #fff8ec; background: #071d24; }
.chapter-teaser__backdrop { position: absolute; inset: -2%; width: 104%; height: 104%; object-fit: cover; filter: brightness(.66) saturate(.92); transform: scale(1.02); animation: teaserDrift 10s ease-out both; }
.chapter-teaser__veil { position: absolute; inset: 0; background: radial-gradient(circle at 74% 52%,rgba(255,208,177,.08),transparent 35%),linear-gradient(90deg,rgba(4,19,23,.94) 0%,rgba(4,19,23,.78) 42%,rgba(4,19,23,.2) 77%,rgba(4,19,23,.44)); }
.chapter-teaser__copy { position: absolute; z-index: 3; left: clamp(28px,6vw,86px); top: 50%; width: min(520px,42vw); transform: translateY(-50%); text-shadow: 0 3px 20px rgba(0,0,0,.55); }
.chapter-teaser__copy small { color: #efb09b; font-size: 10px; font-weight: 900; letter-spacing: .2em; }
.chapter-teaser__copy h2 { margin: 12px 0 13px; font: 500 clamp(48px,6vw,84px)/.96 Georgia,serif; }
.chapter-teaser__copy p { max-width: 39ch; margin: 0; color: rgba(255,249,237,.82); font: 400 17px/1.58 Georgia,serif; }
.chapter-teaser__copy button { min-height: 50px; margin-top: 27px; padding: 10px 18px; border: 1px solid rgba(255,255,255,.45); border-radius: 999px; background: #f4ecde; color: #18353c; font-weight: 880; }
.chapter-teaser__copy button span { margin-left: 24px; }
.chapter-teaser__media { position: absolute; z-index: 2; top: 50%; right: clamp(30px,6vw,90px); width: min(370px,29vw); height: min(650px,78svh); transform: translateY(-50%); overflow: hidden; border: 1px solid rgba(255,255,255,.3); border-radius: 28px; background: rgba(5,27,32,.4); box-shadow: 0 35px 80px rgba(0,0,0,.45); }
.chapter-teaser__video,
.chapter-teaser__still,
.chapter-teaser__still img { width: 100%; height: 100%; }
.chapter-teaser__video,
.chapter-teaser__still img { object-fit: cover; }
.chapter-teaser__menu { position: absolute; z-index: 5; top: var(--safe-top); right: 22px; width: 44px; height: 44px; border: 1px solid rgba(255,255,255,.32); border-radius: 50%; background: rgba(7,29,35,.52); color: white; font-size: 17px; backdrop-filter: blur(12px); }

.trial-sheet { overflow: hidden; color: #fff8eb; background: #071d24; }
.trial-sheet__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(.5) saturate(.8); }
.trial-sheet__veil { position: absolute; inset: 0; background: linear-gradient(90deg,rgba(5,26,31,.94),rgba(5,26,31,.62) 56%,rgba(5,26,31,.22)); }
.trial-sheet__copy { position: absolute; left: clamp(26px,7vw,100px); top: 50%; width: min(610px,48vw); transform: translateY(-50%); }
.trial-sheet__copy > small { color: #efb09b; font-weight: 900; letter-spacing: .19em; }
.trial-sheet__copy h2 { margin: 12px 0; font: 500 clamp(43px,6vw,76px)/.98 Georgia,serif; }
.trial-sheet__copy p { color: rgba(255,249,237,.84); font: 400 16px/1.65 Georgia,serif; }
.trial-sheet__stats { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 22px; }
.trial-sheet__stats span { padding: 9px 12px; border: 1px solid rgba(255,255,255,.25); border-radius: 999px; background: rgba(6,28,34,.46); font-size: 11px; }
.trial-sheet__actions { display: flex; gap: 9px; flex-wrap: wrap; margin-top: 23px; }
.trial-sheet__actions button { min-height: 47px; padding: 9px 16px; border: 1px solid rgba(255,255,255,.34); border-radius: 999px; background: #f4ecde; color: #18353c; font-weight: 850; }
.trial-sheet__actions button + button { background: rgba(7,29,35,.5); color: #fff8eb; }

.journey-end { display: grid; grid-template-columns: minmax(260px,.75fr) minmax(340px,1.1fr); align-items: center; gap: clamp(28px,5vw,72px); padding: clamp(30px,7vw,110px); background: radial-gradient(circle at 30% 30%,#31535a 0,#0a2e36 44%,#061c23 100%); color: #fff9ef; }
.journey-end__stamp { justify-self: end; width: min(390px,36vw); max-height: 60svh; object-fit: contain; filter: drop-shadow(0 25px 48px rgba(0,0,0,.36)); }
.journey-end > div { max-width: 590px; }
.journey-end small { color: #efb09b; font-weight: 900; letter-spacing: .19em; }
.journey-end h2 { margin: 10px 0 12px; font: 500 clamp(52px,6vw,88px)/1 Georgia,serif; }
.journey-end p { color: rgba(255,249,237,.82); font: 400 16px/1.62 Georgia,serif; }
.journey-end dl { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; margin: 22px 0; overflow: hidden; border: 1px solid rgba(255,255,255,.15); border-radius: 16px; background: rgba(255,255,255,.1); }
.journey-end dl div { padding: 13px; background: rgba(5,27,33,.58); }
.journey-end dt { color: rgba(255,255,255,.55); font-size: 9px; }
.journey-end dd { margin: 5px 0 0; font: 500 20px Georgia,serif; }
.journey-end > div > div { display: flex; gap: 8px; flex-wrap: wrap; }
.journey-end button { min-height: 44px; padding: 9px 14px; border: 1px solid rgba(255,255,255,.28); border-radius: 999px; background: #f4ecde; color: #18353c; font-weight: 850; }
.journey-end button.quiet { background: transparent; color: #fff8ed; }

.legacy-resume { position: absolute; z-index: 15; left: 7vw; bottom: 9vh; display: grid; gap: 8px; max-width: 390px; padding: 18px; border-left: 2px solid #efb09b; text-shadow: 0 2px 16px rgba(0,0,0,.7); }
.legacy-resume small { color: #efb09b; font-weight: 900; letter-spacing: .16em; }
.legacy-resume b { font: 500 24px Georgia,serif; }
.legacy-resume button { justify-self: start; min-height: 43px; padding: 8px 14px; border: 1px solid rgba(255,255,255,.32); border-radius: 999px; background: rgba(7,29,35,.66); font-weight: 850; }

@keyframes teaserDrift { from { transform: scale(1.07); } to { transform: scale(1.01); } }

@media (max-width: 900px) {
  .journey-menu__panel { width: 100vw; height: 100svh; border: 0; border-radius: 0; }
  .journey-menu__head { padding: calc(var(--safe-top) + 10px) 18px 12px; }
  .journey-menu__head strong { font-size: 26px; }
  .journey-menu__tabs { padding: 9px 16px 11px; }
  .route-book { padding: 20px 16px calc(var(--safe-bottom) + 22px); }
  .route-book > header { align-items: start; }
  .route-book > header h2 { font-size: 30px; }
  .route-book__resume { min-width: 44px; padding: 9px 13px; font-size: 0; }
  .route-book__resume span { margin: 0; font-size: 18px; }
  .route-rail { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
  .route-card { min-height: 184px; }
  .route-card__stamp { width: 58px; height: 58px; }
  .notebook-panel { grid-template-columns: 1fr; padding: 20px 16px calc(var(--safe-bottom) + 22px); }
  .notebook-panel__lead { position: static; }
  .stamp-strip { grid-column: 1; }
  .memory-ledger { grid-column: 1; grid-row: auto; }
  .travel-folder,.settings-panel { padding: 20px 16px calc(var(--safe-bottom) + 24px); }
  .folder-grid { grid-template-columns: 1fr; }
  .chapter-teaser__backdrop { inset: 0; width: 100%; height: 100%; }
  .chapter-teaser__veil { background: linear-gradient(180deg,rgba(5,23,28,.14),rgba(5,23,28,.34) 36%,rgba(5,23,28,.94) 76%); }
  .chapter-teaser__media { top: calc(var(--safe-top) + 54px); right: 16px; left: 16px; width: auto; height: min(50svh,430px); transform: none; border-radius: 22px; }
  .chapter-teaser__copy { left: 20px; right: 20px; top: auto; bottom: calc(var(--safe-bottom) + 22px); width: auto; transform: none; }
  .chapter-teaser__copy h2 { max-width: 10ch; font-size: clamp(45px,14vw,70px); }
  .chapter-teaser__copy p { font-size: 15px; }
  .chapter-teaser__copy button { width: 100%; justify-content: space-between; }
  .chapter-teaser__menu { right: 14px; }
  .trial-sheet__veil { background: linear-gradient(180deg,rgba(5,26,31,.22),rgba(5,26,31,.94) 64%); }
  .trial-sheet__copy { left: 20px; right: 20px; top: auto; bottom: calc(var(--safe-bottom) + 24px); width: auto; transform: none; }
  .trial-sheet__copy h2 { font-size: clamp(40px,12vw,62px); }
  .journey-end { grid-template-columns: 1fr; grid-template-rows: minmax(180px,38svh) auto; align-content: center; gap: 18px; padding: calc(var(--safe-top) + 18px) 20px calc(var(--safe-bottom) + 22px); overflow: auto; }
  .journey-end__stamp { justify-self: center; width: min(270px,68vw); max-height: 36svh; }
  .journey-end h2 { font-size: clamp(47px,14vw,70px); }
  .journey-end dl { grid-template-columns: 1fr 1fr 1fr; }
}

@media (max-width: 520px) {
  .route-rail { grid-template-columns: 1fr 1fr; }
  .route-card { min-height: 162px; }
  .route-card__copy { left: 12px; right: 12px; bottom: 11px; }
  .route-card__copy strong { font-size: 17px; }
  .route-card__stamp { width: 48px; height: 48px; }
  .chapter-teaser__media { height: 44svh; }
  .chapter-teaser__copy h2 { font-size: 46px; }
  .journey-end dl { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .chapter-teaser__backdrop { animation: none; transform: none; }
  .route-card__image { transition: none; }
}

/* Legal / privacy centre */
.legal-panel { max-width: 820px; }
.legal-back { margin: 0 0 18px; padding: 0; border: 0; background: transparent; color: #8d6257; font-weight: 800; }
.legal-copy { display: grid; gap: 12px; margin-top: 20px; }
.legal-copy p { margin: 0; padding: 15px 17px; border: 1px solid rgba(24,53,60,.1); border-radius: 15px; background: rgba(255,255,255,.48); color: #40565a; font: 400 14px/1.62 Georgia,serif; }
.legal-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 20px; }
.legal-actions button,.legal-actions a { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 9px 14px; border: 1px solid rgba(24,53,60,.15); border-radius: 999px; background: #18353c; color: #fff9ef; text-decoration: none; font-size: 12px; font-weight: 850; }
.legal-actions .danger { background: transparent; color: #9b4d42; border-color: rgba(155,77,66,.35); }
.legal-import { position: relative; display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 9px 14px; border: 1px solid rgba(24,53,60,.15); border-radius: 999px; background: rgba(24,53,60,.08); color: #18353c; font-size: 12px; font-weight: 850; cursor: pointer; }
.legal-import:focus-within { outline: 3px solid #8d6257; outline-offset: 3px; }
.legal-import input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.save-recovery-note { border-color: rgba(198,154,84,.32) !important; background: rgba(255,240,199,.56) !important; }

/* End-of-journey feedback with separated permissions */
.feedback-sheet { position: fixed; inset: 0; z-index: 160; display: grid; place-items: center; padding: 24px; background: rgba(5,24,29,.78); backdrop-filter: blur(12px); }
.feedback-sheet__card { position: relative; width: min(760px,94vw); max-height: 90svh; overflow: auto; padding: 30px; border: 1px solid rgba(255,255,255,.22); border-radius: 24px; background: #f7f0e4; color: #18353c; box-shadow: 0 35px 100px rgba(0,0,0,.42); }
.feedback-sheet__close { position: absolute; top: 14px; right: 14px; width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(24,53,60,.08); color: #18353c; font-size: 22px; }
.feedback-sheet__card > small { color: #a16553; font-size: 9px; font-weight: 900; letter-spacing: .18em; }
.feedback-sheet__card h2 { margin: 8px 48px 8px 0; font: 500 clamp(32px,4vw,48px)/1.03 Georgia,serif; }
.feedback-sheet__card > p { max-width: 62ch; color: #627377; font: 400 14px/1.55 Georgia,serif; }
.feedback-sheet form { display: grid; gap: 15px; margin-top: 20px; }
.feedback-sheet fieldset { margin: 0; padding: 0; border: 0; }
.feedback-sheet legend,.feedback-sheet label { display: grid; gap: 7px; color: #29464b; font-size: 11px; font-weight: 800; }
.feedback-rating { display: flex; gap: 8px; margin-top: 8px; }
.feedback-rating label { display: block; }
.feedback-rating input { position: absolute; opacity: 0; pointer-events: none; }
.feedback-rating span { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid rgba(24,53,60,.18); border-radius: 50%; background: rgba(255,255,255,.58); }
.feedback-rating input:checked + span { background: #18353c; color: #fff9ef; }
.feedback-sheet textarea,.feedback-sheet input[name="displayName"],.feedback-sheet select { width: 100%; border: 1px solid rgba(24,53,60,.16); border-radius: 12px; background: rgba(255,255,255,.7); color: #18353c; font: inherit; }
.feedback-sheet textarea { min-height: 130px; resize: vertical; padding: 12px; }
.feedback-sheet input[name="displayName"],.feedback-sheet select { min-height: 44px; padding: 9px 11px; }
.feedback-consent { grid-template-columns: 22px 1fr !important; align-items: start; gap: 9px !important; padding: 12px 13px; border: 1px solid rgba(24,53,60,.11); border-radius: 13px; background: rgba(255,255,255,.45); font-weight: 500 !important; line-height: 1.45; }
.feedback-consent input { margin-top: 2px; width: 17px; height: 17px; }
.feedback-privacy { margin: 0; color: #748286; font: 400 12px/1.5 Georgia,serif; }
.feedback-sheet form > button { min-height: 48px; border: 0; border-radius: 999px; background: #18353c; color: #fff9ef; font-weight: 850; }

@media (max-width: 900px) {
  .legal-panel { padding-bottom: calc(var(--safe-bottom) + 28px); }
  .legal-actions { display: grid; grid-template-columns: 1fr; }
  .feedback-sheet { padding: 0; place-items: stretch; }
  .feedback-sheet__card { width: 100vw; max-height: 100svh; min-height: 100svh; border: 0; border-radius: 0; padding: calc(var(--safe-top) + 24px) 18px calc(var(--safe-bottom) + 26px); }
  .feedback-rating { justify-content: space-between; }
  .feedback-rating span { width: 46px; height: 46px; }
}

/* Experience pass — J0 departure folder, lived conversations, complete temizu */
.laptop-experience--travel { background: linear-gradient(145deg,#efe4d2,#f7f0e4 42%,#e8dcc8); }
.booking-form--folder { position: relative; grid-template-columns: minmax(250px,.82fr) minmax(360px,1.18fr); gap: clamp(22px,3vw,46px); align-items: start; }
.booking-route-card { grid-column: 1; position: relative; overflow: hidden; min-height: 210px; padding: 20px; border: 1px solid rgba(24,53,60,.13); border-radius: 20px; background: linear-gradient(155deg,rgba(255,255,255,.88),rgba(244,235,219,.76)); box-shadow: 0 14px 36px rgba(41,54,49,.09); }
.booking-route-card::after { content:'旅'; position:absolute; right:-5px; bottom:-31px; color:rgba(177,111,89,.09); font:700 118px/1 Georgia,serif; transform:rotate(-9deg); }
.booking-route-card__top,.booking-route-card__stay { position:relative; z-index:1; display:flex; align-items:flex-end; justify-content:space-between; gap:12px; }
.booking-route-card__top span { color:#7c8a88; font-size:10px; font-weight:850; letter-spacing:.11em; text-transform:uppercase; }
.booking-route-card__top b { font:600 30px/1 Georgia,serif; color:#18353c; }
.booking-route-card__line { position:relative; display:grid; grid-template-columns:11px 1fr 11px; align-items:center; gap:0; margin:28px 2px; }
.booking-route-card__line i { width:11px; height:11px; border-radius:50%; border:2px solid #9c6757; background:#f7f0e4; }
.booking-route-card__line span { height:1px; background:linear-gradient(90deg,#9c6757,rgba(156,103,87,.24)); }
.booking-route-card__stay { align-items:start; flex-direction:column; gap:4px; }
.booking-route-card__stay small { color:#a16553; font-size:9px; font-weight:900; letter-spacing:.14em; }
.booking-route-card__stay strong { font:500 30px/1 Georgia,serif; }
.booking-route-card__stay span { color:#687a7d; font:400 12px/1.4 Georgia,serif; }
.booking-form--folder .booking-intro { grid-column:2; }
.booking-form--folder .booking-intro h1 { max-width:13ch; font-size:clamp(34px,3.4vw,54px); }
.booking-fields--folder { grid-column:1/-1; display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.booking-paper { display:grid; grid-template-columns:1fr 1fr; gap:12px; padding:15px; border:1px solid rgba(24,53,60,.11); border-radius:16px; background:rgba(255,255,255,.55); box-shadow:inset 0 1px 0 rgba(255,255,255,.6); }
.booking-paper > small { grid-column:1/-1; color:#a16553; font-size:9px; font-weight:900; letter-spacing:.16em; }
.booking-paper--route { grid-template-columns:1.1fr .9fr; }
.booking-paper--route label.wide { grid-column:auto; }
.booking-destination { display:grid; align-content:end; gap:7px; min-height:68px; padding:0 0 5px; border-bottom:1px solid rgba(24,53,60,.12); }
.booking-destination span { color:#627579; font-size:9px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.booking-destination b { font:600 15px/1.2 Georgia,serif; }
.booking-seat { grid-column:1/-1 !important; display:grid !important; grid-template-columns:1fr 1fr; gap:8px !important; padding:0 !important; border:0 !important; }
.booking-seat legend { grid-column:1/-1; margin:2px 0 4px; }
.booking-seat label { position:relative; min-height:66px; padding:12px 14px; border:1px solid rgba(24,53,60,.14); border-radius:15px; background:rgba(255,255,255,.52); }
.booking-seat label:has(input:checked) { border-color:#234d55; box-shadow:inset 0 0 0 1px #234d55; background:rgba(255,255,255,.82); }
.booking-seat input { width:14px; }
.booking-seat label span { display:grid; gap:2px; }
.booking-seat label b { font-size:12px; }
.booking-seat label small { color:#718084; font:400 10px/1.3 Georgia,serif; }
.booking-submit--folder { grid-column:2; margin-top:0; align-self:end; box-shadow:0 14px 30px rgba(24,53,60,.15); }

.dinner-conversation--intent,.aoi-conversation--intent { padding:12px; border:1px solid rgba(255,255,255,.22); border-radius:22px; background:rgba(7,29,35,.54); backdrop-filter:blur(16px); }
.dinner-conversation--intent .dialogue-question { margin:0 0 8px; color:rgba(255,255,255,.74); font:400 12px/1.45 Georgia,serif; }
.conversation-intents { display:flex; flex-wrap:wrap; gap:7px; }
.dinner-conversation--intent .conversation-intents button,.aoi-conversation--intent .conversation-intents button { flex:1 1 120px; min-height:56px; margin:0; padding:10px 12px; border:1px solid rgba(255,255,255,.22); border-radius:999px; background:rgba(5,25,30,.48); }
.conversation-intents b { display:block; font:600 12px/1.2 Georgia,serif; }
.conversation-intents span { display:block; margin-top:3px; color:rgba(255,255,255,.62); font-size:9px; line-height:1.3; }

.temizu-observe { position:absolute; z-index:16; right:6vw; bottom:8vh; display:grid; grid-template-columns:1fr 1fr; gap:8px; width:min(510px,44vw); }
.temizu-observe button { min-height:82px; padding:13px 15px; border:1px solid rgba(255,255,255,.3); border-radius:18px; background:rgba(6,31,36,.67); color:#fff; text-align:left; backdrop-filter:blur(14px); }
.temizu-observe b { display:block; font:600 14px Georgia,serif; }
.temizu-observe span { display:block; margin-top:5px; color:rgba(255,255,255,.68); font-size:10px; line-height:1.4; }
.temizu-sequence { position:absolute; inset:0; z-index:14; pointer-events:none; }
.temizu-sequence > * { pointer-events:auto; }
.temizu-progress { position:absolute; z-index:18; top:calc(var(--safe-top) + 76px); left:50%; display:flex; gap:5px; transform:translateX(-50%); }
.temizu-progress i { width:22px; height:3px; border-radius:999px; background:rgba(255,255,255,.25); box-shadow:0 2px 8px rgba(0,0,0,.22); }
.temizu-progress i.is-on { background:#f2ddc1; }
.temizu-ladle--sequence { left:12vw; bottom:12vh; }
.temizu-target { position:absolute; z-index:15; display:grid; place-items:center; width:160px; min-height:88px; padding:12px; border:1px dashed rgba(255,255,255,.8); border-radius:48%; background:rgba(171,212,218,.17); color:#fff; text-align:center; box-shadow:0 12px 34px rgba(0,0,0,.18); backdrop-filter:blur(4px); }
.temizu-target span { font:600 12px Georgia,serif; }
.temizu-target small { display:block; margin-top:5px; color:rgba(255,255,255,.72); font-size:9px; line-height:1.35; }
.temizu-target--left,.temizu-target--left-final { right:16vw; bottom:22vh; }
.temizu-target--right { right:12vw; bottom:13vh; }
.temizu-target--mouth { right:20vw; bottom:16vh; width:190px; min-height:104px; }
.temizu-target--handle { right:18vw; bottom:24vh; border-radius:18px; }

.j4-intents--quiet { display:flex; grid-template-columns:none; flex-wrap:wrap; justify-content:flex-end; width:min(560px,48vw); gap:7px; }
.j4-intents--quiet button { flex:0 1 auto; min-height:42px; padding:9px 13px; border-radius:999px; background:rgba(6,31,36,.58); }
.j4-intents--quiet button b { font-size:12px; }

@media (max-width: 900px) {
  .booking-form--folder { grid-template-columns:1fr; gap:16px; padding:22px 16px calc(var(--safe-bottom) + 22px); }
  .booking-route-card,.booking-form--folder .booking-intro,.booking-fields--folder,.booking-submit--folder { grid-column:1; }
  .booking-route-card { min-height:150px; }
  .booking-route-card__line { margin:18px 2px; }
  .booking-route-card__stay strong { font-size:25px; }
  .booking-form--folder .booking-intro h1 { max-width:12ch; margin:10px 0; font-size:35px; }
  .booking-fields--folder { grid-template-columns:1fr; }
  .booking-paper,.booking-paper--route { grid-template-columns:1fr 1fr; }
  .booking-seat { grid-template-columns:1fr 1fr !important; }
  .booking-submit--folder { width:100%; }
  .dinner-conversation--intent,.aoi-conversation--intent { right:12px; left:12px; bottom:calc(var(--safe-bottom) + 74px); width:auto; padding:9px; }
  .dinner-conversation--intent .dialogue-question { font-size:11px; }
  .conversation-intents { flex-wrap:nowrap; overflow-x:auto; padding-bottom:2px; scrollbar-width:none; }
  .conversation-intents::-webkit-scrollbar { display:none; }
  .dinner-conversation--intent .conversation-intents button,.aoi-conversation--intent .conversation-intents button { flex:0 0 min(42vw,148px); min-height:50px; border-radius:15px; }
  .conversation-intents span { display:none; }
  .temizu-observe { right:12px; bottom:calc(var(--safe-bottom) + 82px); left:12px; width:auto; grid-template-columns:1fr 1fr; }
  .temizu-observe button { min-height:70px; padding:10px 11px; }
  .temizu-observe span { font-size:9px; }
  .temizu-ladle--sequence { left:14px; bottom:calc(var(--safe-bottom) + 92px); }
  .temizu-target { width:124px; min-height:70px; padding:9px; }
  .temizu-target--left,.temizu-target--left-final { right:18px; bottom:calc(var(--safe-bottom) + 180px); }
  .temizu-target--right { right:16px; bottom:calc(var(--safe-bottom) + 105px); }
  .temizu-target--mouth { right:16px; bottom:calc(var(--safe-bottom) + 124px); width:154px; min-height:88px; }
  .temizu-target--handle { right:18px; bottom:calc(var(--safe-bottom) + 188px); }
  .j4-intents--quiet { right:12px; bottom:calc(var(--safe-bottom) + 68px); left:12px; width:auto; justify-content:center; }
  .j4-intents--quiet button { flex:1 1 42%; min-height:40px; padding:8px 10px; }
}

@media (max-width: 520px) {
  .booking-paper,.booking-paper--route { grid-template-columns:1fr; }
  .booking-destination { min-height:54px; }
  .booking-seat { grid-template-columns:1fr 1fr !important; }
  .booking-seat label { min-height:58px; padding:9px 10px; }
  .temizu-observe { grid-template-columns:1fr; }
  .temizu-observe button { min-height:54px; }
}

/* ========================================================================== */
/* EXPERIENCE PASS 2 — J3 continuity, J6 dusk chronology, J7 departure flow   */
/* ========================================================================== */
.scene--j3-menu .j3-physical-menu{transition:width .35s ease,transform .35s ease}
.scene--j3-menu .j3-physical-menu header i{margin-left:auto;margin-right:10px;color:#a05f4c;font:500 12px Georgia,serif;font-style:normal;opacity:.8}
.scene--j3-menu .j3-menu-section--drink{margin-top:8px;padding-top:12px;border-top:1px dashed rgba(50,57,54,.18);animation:j3MenuReveal .34s ease both}
.scene--j3-menu .j3-physical-menu footer{margin-top:12px;padding-top:10px;border-top:1px solid rgba(50,57,54,.18);color:#6d7775;font:400 11px/1.45 Georgia,serif;text-align:right}
.scene--j3-menu.is-complete .j3-physical-menu{transform:rotate(-1deg) translateY(5px)}
@keyframes j3MenuReveal{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.j3-boat-edge{position:absolute;z-index:9;left:50%;bottom:-3vh;transform:translateX(-50%);width:min(820px,78vw);height:16vh;border-radius:50% 50% 0 0;background:linear-gradient(180deg,rgba(15,30,34,.08),rgba(9,22,28,.72));border-top:1px solid rgba(238,231,211,.24);box-shadow:0 -16px 38px rgba(0,0,0,.18);pointer-events:none}
.j3-boat-edge i{position:absolute;left:50%;top:12%;width:1px;height:58%;background:linear-gradient(180deg,rgba(255,255,255,.34),transparent)}
.cruise--underbridge .world img{filter:brightness(.62) saturate(.82)}
.cruise--underbridge .j3-boat-edge{background:linear-gradient(180deg,rgba(7,15,18,.16),rgba(4,10,13,.88))}
.cruise--boarding .j3-boat-edge{opacity:.72}

.scene--j6-festival-arrival .world img{object-position:center 54%;filter:brightness(.86) saturate(.94)}
.j6-arrival-yagura{position:absolute;z-index:10;left:50%;top:28%;transform:translateX(-50%);width:58px;height:58px;border-radius:50%;border:1px solid rgba(255,240,205,.18);display:grid;place-items:center;pointer-events:none;opacity:.68}
.j6-arrival-yagura span{padding:5px 7px;border-radius:999px;background:rgba(7,29,35,.44);font:600 10px Georgia,serif;letter-spacing:.08em}
.scene--j6-festival-arrival .chrome{opacity:.42}

.j7-document-check{position:absolute;z-index:14;right:10vw;top:31vh;width:250px;height:160px;border:2px dashed rgba(255,255,255,.5);border-radius:24px;background:rgba(7,29,35,.2);display:grid;place-items:center;align-content:center;gap:5px;backdrop-filter:blur(6px)}
.j7-document-check b{font:600 25px Georgia,serif}.j7-document-check span{font-size:10px;opacity:.78}.j7-document-check.is-receiving{background:rgba(219,196,147,.18);border-color:rgba(255,237,195,.72)}
.j7-passport-object{position:absolute;z-index:20;left:10vw;bottom:13vh;width:230px;min-height:154px;padding:18px;border:0;border-radius:12px;background:linear-gradient(145deg,#4b1f27,#241116);color:#ead9b8;box-shadow:0 22px 42px rgba(0,0,0,.4);display:grid;grid-template-columns:1fr auto;grid-template-areas:'jp jp' 'title route' 'name route';gap:4px 10px;text-align:left;touch-action:none;transform:rotate(-3deg)}
.j7-passport-object i{grid-area:jp;font:500 28px "Yu Mincho",serif;font-style:normal}.j7-passport-object small{grid-area:title;font-size:9px;letter-spacing:.16em}.j7-passport-object strong{grid-area:name;font:600 18px Georgia,serif;overflow:hidden;text-overflow:ellipsis}.j7-passport-object em{grid-area:route;align-self:end;font:600 10px Georgia,serif;font-style:normal;writing-mode:vertical-rl;opacity:.8}
.j7-international--documents .world img{filter:brightness(.86) saturate(.92)}
.j7-international--security .world img{filter:brightness(.76) saturate(.82)}
.j7-security-flow small,.j7-gate-copy small{display:block;margin-bottom:6px;font-size:9px;letter-spacing:.16em;opacity:.7}

@media(max-width:800px){
  .scene--j3-menu .j3-physical-menu{left:12px;right:12px;top:14vh;width:auto;max-height:68vh;padding:15px 16px 16px;transform:rotate(-.4deg)}
  .scene--j3-menu .j3-menu-section button{min-height:39px;padding:5px 6px}.scene--j3-menu .j3-menu-section button b{font-size:14px}
  .j3-boat-edge{width:96vw;height:13vh;bottom:-2vh}
  .scene--j6-festival-arrival .world img{object-position:50% 52%;transform:scale(1.04)}
  .j6-arrival-yagura{top:31%;width:50px;height:50px}
  .j7-document-check{right:14px;top:25vh;width:38vw;height:118px}
  .j7-passport-object{left:14px;bottom:22vh;width:52vw;min-height:132px;padding:14px}.j7-passport-object i{font-size:24px}.j7-passport-object strong{font-size:15px}
}

/* Experience pass 2 — VASARA behaves like a rental counter, not a skin selector. */
.scene--j6-rack .j6-rack-stage.has-choice{bottom:24vh}
.j6-rental-counter{position:absolute;z-index:23;left:50%;bottom:5.5vh;transform:translateX(-50%);width:min(330px,36vw);min-height:102px;display:grid;place-items:center;align-content:center;gap:2px;padding:12px 18px;border:1px solid rgba(255,255,255,.22);border-radius:18px;background:rgba(23,24,24,.82);backdrop-filter:blur(14px);box-shadow:0 16px 42px rgba(0,0,0,.32);text-align:center}
.j6-rental-counter.is-receiving{outline:2px solid rgba(255,238,185,.8);box-shadow:0 0 0 7px rgba(255,238,185,.09),0 16px 42px rgba(0,0,0,.38)}
.j6-rental-counter small{font-size:9px;letter-spacing:.16em;opacity:.7}.j6-rental-counter b{font:600 24px/1.05 Georgia,serif}.j6-rental-counter span{font-size:10px;opacity:.78}
.j6-payment-wallet{position:absolute;z-index:24;left:5vw;bottom:5vh;display:flex;gap:10px;align-items:flex-end}
.j6-payment-object{width:126px;min-height:78px;padding:10px;border:1px solid rgba(255,255,255,.25);border-radius:16px;display:grid;align-content:center;gap:3px;text-align:left;box-shadow:0 14px 30px rgba(0,0,0,.28);touch-action:none;cursor:grab}
.j6-payment-object.is-active{cursor:grabbing;z-index:40}.j6-payment-object small{font-size:8px;letter-spacing:.14em}.j6-payment-object b{font-size:15px}.j6-payment-object span{font-size:9px;opacity:.7}
.j6-payment-object--card{background:linear-gradient(145deg,#e7e0ca,#a9b8ab);color:#20363a;transform:rotate(-3deg)}
.j6-payment-object--cash{background:linear-gradient(145deg,#d9ceb0,#8fa384);color:#18312f;transform:rotate(2deg)}
.j6-payment-insufficient{width:min(330px,70vw);padding:13px 15px;border-radius:18px;background:rgba(21,23,24,.85);backdrop-filter:blur(14px);display:grid;gap:6px}.j6-payment-insufficient span{font-size:10px;opacity:.75}.j6-payment-insufficient button{margin-top:3px;min-height:38px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(255,255,255,.08);padding:8px 12px}
@media(max-width:700px){
  .scene--j6-rack .j6-rack-stage.has-choice{inset:7vh 6px 29vh}
  .scene--j6-rack .j6-garment{height:49vh}.scene--j6-rack .j6-garment.is-selected{transform:translateY(-4px) scale(1.025)}
  .j6-rental-counter{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 12px);transform:none;width:auto;min-height:88px;border-radius:17px}
  .j6-rental-counter b{font-size:21px}
  .j6-payment-wallet{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 112px);display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .j6-payment-object{width:100%;min-height:64px;padding:8px 10px}.j6-payment-object b{font-size:13px}
  .j6-payment-insufficient{grid-column:1/-1;width:auto}
}
/* Festival stalls: payment is handed over before the game object appears. */
.j6-game-tray{position:absolute;z-index:22;right:9vw;bottom:12vh;width:150px;height:92px;border:1px dashed rgba(255,255,255,.5);border-radius:18px;background:rgba(87,52,28,.68);backdrop-filter:blur(9px);display:grid;place-content:center;text-align:center;gap:2px;box-shadow:inset 0 0 0 4px rgba(255,255,255,.035)}
.j6-game-tray.is-receiving{outline:2px solid rgba(255,230,160,.85);transform:scale(1.025)}.j6-game-tray small{font-size:9px;letter-spacing:.12em}.j6-game-tray b{font-size:16px}.j6-game-tray--dark{background:rgba(35,28,29,.78)}
.j6-game-cash{position:absolute;z-index:24;left:10vw;bottom:13vh;width:126px;min-height:72px;padding:9px 12px;border:1px solid rgba(255,255,255,.28);border-radius:15px;background:linear-gradient(145deg,#d9ceb0,#8fa384);color:#18312f;box-shadow:0 15px 34px rgba(0,0,0,.3);display:grid;align-content:center;gap:2px;text-align:left;touch-action:none;transform:rotate(-3deg)}
.j6-game-cash small{font-size:8px;letter-spacing:.16em}.j6-game-cash b{font-size:15px}.j6-game-no-cash{position:absolute;z-index:23;left:50%;bottom:13vh;transform:translateX(-50%);padding:10px 14px;border-radius:999px;background:rgba(21,23,24,.8);backdrop-filter:blur(10px);font-size:11px}
@media(max-width:700px){.j6-game-tray{right:18px;bottom:calc(var(--safe-bottom) + 18px);width:135px;height:82px}.j6-game-cash{left:18px;bottom:calc(var(--safe-bottom) + 22px);width:115px;min-height:65px}.j6-game-no-cash{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 16px);transform:none;text-align:center}}
/* J7 departure continuity: the checked bag visibly leaves before documents/controls. */
.j7-bag-belt{position:absolute;z-index:13;left:7vw;right:7vw;bottom:16vh;height:116px;border-radius:22px;background:linear-gradient(180deg,rgba(18,22,24,.45),rgba(9,13,14,.78));overflow:hidden;border:1px solid rgba(255,255,255,.1)}
.j7-bag-belt::before{content:"";position:absolute;left:0;right:0;top:56%;height:8px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.16) 0 34px,rgba(255,255,255,.04) 34px 48px)}
.j7-bag-belt i{position:absolute;left:18%;top:22px;width:116px;height:72px;border:4px solid #403329;border-radius:15px;background:linear-gradient(145deg,#4a3a2d,#171411);animation:j7BagAway 1.65s ease-in forwards}.j7-bag-belt span{position:absolute;right:18px;top:16px;font-size:9px;letter-spacing:.14em;text-transform:uppercase;opacity:.66}
@keyframes j7BagAway{to{left:78%;opacity:.16;transform:scale(.88)}}
.j7-bag-away{left:50%;top:30%;bottom:auto;transform:translateX(-50%);width:min(520px,72vw);text-align:center}.j7-bag-away b{font-size:27px}.j7-bag-away span{display:block;margin-top:7px;font-size:11px;opacity:.76}
.j7-departure-flow{display:flex;align-items:center;justify-content:center;gap:8px;margin:17px 0 10px}.j7-departure-flow span{padding:7px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.15);font-size:9px;letter-spacing:.08em}.j7-departure-flow span.is-current{background:rgba(238,220,180,.14);border-color:rgba(238,220,180,.42)}.j7-departure-flow i{width:24px;height:1px;background:rgba(255,255,255,.3)}.j7-security-flow p{max-width:52ch;margin:0 auto;font-size:11px;line-height:1.5;opacity:.7}
.j7-gates-wayfinding{position:absolute;z-index:22;right:8vw;top:22vh;width:220px;padding:15px 18px;border-radius:12px;background:rgba(25,30,32,.84);box-shadow:0 16px 36px rgba(0,0,0,.34);display:grid;gap:2px}.j7-gates-wayfinding small{font-size:9px;letter-spacing:.18em;opacity:.7}.j7-gates-wayfinding b{font:600 28px "Yu Mincho",serif}.j7-gates-wayfinding button{margin-top:9px;min-height:40px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(255,255,255,.08);padding:8px 11px;text-align:left}
@media(max-width:700px){.j7-bag-belt{left:12px;right:12px;bottom:19vh;height:100px}.j7-bag-belt i{width:92px;height:62px}.j7-bag-away{left:14px;right:14px;top:27%;transform:none;width:auto}.j7-bag-away b{font-size:22px}.j7-departure-flow{gap:5px}.j7-departure-flow span{padding:6px 7px;font-size:8px}.j7-departure-flow i{width:12px}.j7-gates-wayfinding{left:14px;right:14px;top:28vh;width:auto}.j7-gates-wayfinding button{text-align:center}}
@media(prefers-reduced-motion:reduce){.j7-bag-belt i{animation:none;left:70%;opacity:.4}}

/* EXPERIENCE PASS 3 — quieter global chrome, audio-captioned J5, spatial J7 terminal */
.chrome--quiet{background:linear-gradient(180deg,rgba(4,19,23,.18),transparent);opacity:.34;transition:opacity .35s ease,background .35s ease}
.chrome--quiet:hover,.chrome--quiet:focus-within{opacity:1;background:linear-gradient(180deg,rgba(4,19,23,.58),transparent)}
@media (hover:none){
  .chrome--quiet{opacity:1;background:linear-gradient(180deg,rgba(4,19,23,.12),transparent)}
  .chrome--quiet .identity,.chrome--quiet .place{opacity:.34}
  .chrome--quiet .tools{opacity:.94}
}

.j5-platform-caption{position:absolute;z-index:22;left:50%;top:28%;transform:translateX(-50%);width:min(620px,72vw);padding:15px 18px;border:1px solid rgba(255,255,255,.17);border-radius:18px;background:rgba(8,27,33,.76);backdrop-filter:blur(14px);box-shadow:0 18px 44px rgba(0,0,0,.28);text-align:center}
.j5-platform-caption small{display:block;font-size:9px;letter-spacing:.18em;opacity:.62}.j5-platform-caption b{display:block;margin:5px 0 7px;font:500 17px/1.45 "Yu Mincho",serif}.j5-platform-caption span{display:block;font-size:11px;line-height:1.45;opacity:.78}

.j7-terminal-sign{position:absolute;z-index:11;left:6vw;top:16vh;display:grid;gap:3px;padding:12px 16px;border-radius:10px;background:rgba(16,27,31,.78);box-shadow:0 14px 34px rgba(0,0,0,.25);text-shadow:none}
.j7-terminal-sign small{font-size:8px;letter-spacing:.16em;opacity:.65}.j7-terminal-sign b{font:700 15px/1.1 system-ui,sans-serif;letter-spacing:.08em}
.j7-checkin-islands{position:absolute;z-index:8;left:25vw;right:21vw;bottom:18vh;height:110px;display:flex;gap:18px;align-items:end;opacity:.68;pointer-events:none}.j7-checkin-islands i{display:block;flex:1;height:72px;border-radius:12px 12px 6px 6px;background:linear-gradient(180deg,rgba(235,239,237,.34),rgba(18,28,31,.58));border:1px solid rgba(255,255,255,.12);box-shadow:0 14px 30px rgba(0,0,0,.22)}.j7-checkin-islands i:nth-child(2){height:95px}
.j7-security-lanes{position:absolute;z-index:8;left:12vw;right:12vw;bottom:16vh;height:150px;display:grid;grid-template-columns:repeat(3,1fr);gap:16px;perspective:700px;opacity:.54;pointer-events:none}.j7-security-lanes i{border:1px solid rgba(255,255,255,.16);border-radius:10px;background:linear-gradient(180deg,rgba(37,48,52,.12),rgba(10,18,21,.55));transform:rotateX(62deg);transform-origin:bottom;box-shadow:inset 0 -28px 0 rgba(17,24,27,.35)}
.j7-gate-corridor{position:absolute;z-index:9;left:8vw;right:8vw;top:26vh;display:flex;justify-content:flex-end;gap:12px;pointer-events:none}.j7-gate-corridor i{width:54px;height:54px;border-radius:8px;background:rgba(20,31,35,.78);display:grid;place-items:center;font:700 20px Georgia,serif;font-style:normal;box-shadow:0 12px 28px rgba(0,0,0,.24)}
.j7-gate-lounge{position:absolute;z-index:9;left:6vw;right:6vw;bottom:9vh;height:165px;display:grid;grid-template-columns:180px repeat(3,1fr);gap:14px;align-items:end;pointer-events:none;opacity:.72}.j7-gate-lounge>div{height:116px;padding:14px;border-radius:14px;background:rgba(18,29,33,.84);display:grid;align-content:center;box-shadow:0 16px 36px rgba(0,0,0,.26)}.j7-gate-lounge>div span{font-size:8px;letter-spacing:.2em;opacity:.64}.j7-gate-lounge>div b{font:700 40px/1 Georgia,serif}.j7-gate-lounge>i{height:62px;border-radius:26px 26px 8px 8px;background:linear-gradient(180deg,rgba(216,226,225,.22),rgba(20,31,34,.58));border:1px solid rgba(255,255,255,.1);box-shadow:0 13px 24px rgba(0,0,0,.2)}
.scene--j7-international .world img,.scene--j7-gate .world img{filter:brightness(.77) saturate(.82)}
.j7-international--checkin .world img{filter:brightness(.83) saturate(.88)}
.j7-international--cleared .world img,.scene--j7-gate .world img{filter:brightness(.72) saturate(.78)}

@media(max-width:700px){
  .j5-platform-caption{left:14px;right:14px;top:24%;transform:none;width:auto;padding:12px 13px}.j5-platform-caption b{font-size:14px}
  .j7-terminal-sign{left:14px;top:18vh;padding:9px 11px}.j7-terminal-sign b{font-size:12px}
  .j7-checkin-islands{left:10px;right:10px;bottom:22vh;height:92px;gap:8px}.j7-checkin-islands i{height:58px}.j7-checkin-islands i:nth-child(2){height:78px}
  .j7-security-lanes{left:10px;right:10px;bottom:20vh;height:110px;gap:7px}
  .j7-gate-corridor{left:14px;right:14px;top:24vh;gap:7px}.j7-gate-corridor i{width:42px;height:42px;font-size:16px}
  .j7-gate-lounge{left:10px;right:10px;bottom:17vh;height:118px;grid-template-columns:92px repeat(3,1fr);gap:6px}.j7-gate-lounge>div{height:92px;padding:9px}.j7-gate-lounge>div b{font-size:28px}.j7-gate-lounge>i{height:48px}
}

/* Experience pass 3 — Itoshima rental payment is an object handoff, not CARD/CASH buttons. */
.j5-rental-counter{position:absolute;z-index:23;right:7vw;bottom:9vh;width:min(310px,34vw);min-height:102px;display:grid;place-items:center;align-content:center;gap:3px;padding:12px 16px;border:1px solid rgba(255,255,255,.22);border-radius:18px;background:rgba(7,29,35,.82);backdrop-filter:blur(14px);box-shadow:0 16px 42px rgba(0,0,0,.34);text-align:center}
.j5-rental-counter.is-receiving{outline:2px solid rgba(255,238,185,.82);box-shadow:0 0 0 7px rgba(255,238,185,.09),0 16px 42px rgba(0,0,0,.38)}
.j5-rental-counter small{font-size:8px;letter-spacing:.16em;opacity:.72}.j5-rental-counter b{font:600 25px/1.05 Georgia,serif}.j5-rental-counter span{font-size:10px;opacity:.76}
.j5-payment-wallet{position:absolute;z-index:24;right:7vw;bottom:calc(9vh + 116px);display:flex;gap:10px;align-items:flex-end}
.j5-payment-object{width:126px;min-height:76px;padding:10px;border:1px solid rgba(255,255,255,.24);border-radius:16px;display:grid;align-content:center;gap:3px;text-align:left;box-shadow:0 14px 30px rgba(0,0,0,.28);touch-action:none;cursor:grab}
.j5-payment-object.is-active{cursor:grabbing;z-index:40}.j5-payment-object small{font-size:8px;letter-spacing:.14em}.j5-payment-object b{font-size:15px}.j5-payment-object span{font-size:9px;opacity:.72}
.j5-payment-object--card{background:linear-gradient(145deg,#e7e0ca,#a9b8ab);color:#20363a;transform:rotate(-3deg)}.j5-payment-object--cash{background:linear-gradient(145deg,#d9ceb0,#8fa384);color:#18312f;transform:rotate(2deg)}
.j5-payment-insufficient{width:min(310px,70vw);padding:13px 15px;border-radius:18px;background:rgba(21,23,24,.87);backdrop-filter:blur(14px);display:grid;gap:5px}.j5-payment-insufficient span{font-size:10px;opacity:.76}
@media(max-width:700px){
  .j5-rental-slip{left:14px;right:14px;bottom:auto;top:calc(var(--safe-top) + 82px)}
  .j5-rental-counter{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 12px);width:auto;min-height:86px}
  .j5-rental-counter b{font-size:21px}.j5-payment-wallet{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 108px);display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .j5-payment-object{width:100%;min-height:62px;padding:8px 10px}.j5-payment-object b{font-size:13px}.j5-payment-insufficient{grid-column:1/-1;width:auto}
}

/* Experience pass 3 — late bike return: cash is handed to the desk instead of a Pay button. */
.j5-late-cash-tray{position:absolute;z-index:22;right:12vw;bottom:13vh;width:180px;height:92px;border:2px dashed rgba(255,255,255,.58);border-radius:18px;background:rgba(7,29,35,.3);display:grid;place-items:center;align-content:center;gap:3px}.j5-late-cash-tray small{font-size:8px;letter-spacing:.15em}.j5-late-cash-tray b{font-size:17px}
.j5-late-cash{position:absolute;z-index:24;right:34vw;bottom:15vh;width:132px;min-height:72px;padding:9px 12px;border:1px solid rgba(255,255,255,.27);border-radius:15px;background:linear-gradient(145deg,#d9ceb0,#8fa384);color:#18312f;box-shadow:0 15px 34px rgba(0,0,0,.3);display:grid;align-content:center;gap:2px;text-align:left;touch-action:none;transform:rotate(-3deg)}.j5-late-cash small{font-size:8px;letter-spacing:.16em}.j5-late-cash b{font-size:15px}
@media(max-width:700px){.j5-late-fee{top:calc(var(--safe-top) + 108px);transform:translateX(-50%)}.j5-late-cash-tray{right:18px;bottom:calc(var(--safe-bottom) + 18px);width:138px;height:80px}.j5-late-cash{left:18px;right:auto;bottom:calc(var(--safe-bottom) + 22px);width:118px;min-height:64px}}

/* EXPERIENCE PASS 4 — canonical Fukuoka International arrival + pronunciation handoff */
.scene--j7-international-arrival .world img{filter:brightness(.9) saturate(.96)}
.scene--j7-international-arrival .scene-vignette{background:linear-gradient(180deg,rgba(5,22,28,.06),rgba(5,22,28,.12) 48%,rgba(5,22,28,.66))}
.j7-terminal-arrival{position:absolute;z-index:20;left:5.5vw;bottom:7vh;width:min(540px,45vw);padding:18px 20px;border:1px solid rgba(255,255,255,.2);border-radius:24px;background:rgba(7,29,35,.68);backdrop-filter:blur(16px);box-shadow:0 18px 48px rgba(0,0,0,.28)}
.j7-terminal-arrival small{display:block;font-size:8px;letter-spacing:.18em;opacity:.68}.j7-terminal-arrival>b{display:block;margin-top:6px;font:600 29px/1.08 Georgia,serif}.j7-terminal-arrival>span{display:block;margin-top:8px;font-size:12px;line-height:1.55;opacity:.84}
.j7-floor-route{display:grid;grid-template-columns:auto 1fr auto auto 1fr;align-items:center;gap:7px;margin-top:13px;padding-top:11px;border-top:1px solid rgba(255,255,255,.13)}
.j7-floor-route i{min-width:34px;padding:5px 7px;border:1px solid rgba(255,255,255,.16);border-radius:999px;font-style:normal;font-size:9px;text-align:center}.j7-floor-route i.is-current{background:rgba(226,209,167,.18);border-color:rgba(226,209,167,.5)}.j7-floor-route span{font-size:9px;opacity:.68}.j7-floor-route b{font-size:14px;opacity:.68}
.j7-enter-terminal{position:absolute;z-index:22;right:6vw;bottom:8vh;min-height:48px;padding:11px 18px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(7,29,35,.7);backdrop-filter:blur(12px);box-shadow:0 14px 34px rgba(0,0,0,.24);font-size:11px}
.pronounce-inline{margin-top:9px;min-height:34px;padding:7px 11px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(255,255,255,.07);font-size:10px;letter-spacing:.02em}
.j6-order-phrase .pronounce-inline{display:block}.j7-farewell .pronounce-inline{display:inline-flex;align-items:center}
@media(max-width:700px){
  .j7-terminal-arrival{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 78px);width:auto;padding:14px 15px;border-radius:20px}.j7-terminal-arrival>b{font-size:22px}.j7-terminal-arrival>span{font-size:11px}.j7-floor-route{grid-template-columns:auto 1fr auto auto 1fr;gap:5px}.j7-floor-route span{font-size:8px}.j7-enter-terminal{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 16px);text-align:center}
}

/* FINAL PREMIUM PASS — object rituals, optional discoveries and J7 payoff */
.passport-ritual{position:absolute;z-index:30;inset:0;display:grid;place-items:center;padding:clamp(18px,5vw,72px);background:radial-gradient(circle at 50% 42%,rgba(31,55,60,.15),rgba(4,17,21,.78));perspective:1100px}
.passport-cover,.passport-book{width:min(560px,82vw);max-height:76vh;object-fit:contain;filter:drop-shadow(0 28px 42px rgba(0,0,0,.48));transition:transform .65s cubic-bezier(.2,.75,.25,1),opacity .4s ease}
.passport-cover{cursor:pointer}.passport-ritual.is-open .passport-book{animation:passport-open .72s both}.passport-entry{position:absolute;z-index:2;left:50%;bottom:14vh;transform:translateX(-50%);width:min(420px,72vw);padding:15px 18px;border:1px solid rgba(255,255,255,.2);border-radius:18px;background:rgba(7,27,32,.8);backdrop-filter:blur(14px);text-align:center}.passport-entry b,.passport-entry span{display:block}.passport-entry b{font:600 18px/1.2 Georgia,serif}.passport-entry span{margin-top:5px;font-size:10px;opacity:.72}.passport-close{margin-top:11px;min-height:42px;padding:9px 16px;border-radius:999px;background:#e5d6ad;color:#183236}.passport-caption{position:absolute;top:calc(var(--safe-top) + 18px);left:50%;transform:translateX(-50%);font-size:9px;letter-spacing:.18em;text-transform:uppercase;opacity:.68}
@keyframes passport-open{from{opacity:.25;transform:rotateY(-18deg) scale(.92)}to{opacity:1;transform:none}}

.j3-cruise-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;opacity:.62;mix-blend-mode:screen}.j3-photo-cue,.j3-photo-saved{position:absolute;z-index:23;right:6vw;top:16vh;padding:10px 15px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(6,26,32,.64);backdrop-filter:blur(12px);font-size:10px}.j3-photo-saved{opacity:.74}
.photo-roll{display:grid;gap:12px;padding:12px;overflow:auto}.photo-roll__card{display:grid;grid-template-columns:92px 1fr;gap:11px;padding:9px;border-radius:16px;background:rgba(20,44,48,.08)}.photo-roll__card img{width:92px;height:76px;object-fit:cover;border-radius:11px}.photo-roll__card small,.photo-roll__card strong,.photo-roll__card p{display:block}.photo-roll__card small{font-size:8px;letter-spacing:.1em;opacity:.62}.photo-roll__card strong{margin-top:3px;font-size:12px}.photo-roll__card p{margin:4px 0 0;font-size:10px;line-height:1.4;opacity:.76}.notebook-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:14px}.notebook-photos figure{margin:0}.notebook-photos img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px}.notebook-photos figcaption{margin-top:4px;font-size:9px}.letter-back-line{margin:18px -2px 3px;padding-top:12px;border-top:1px dashed rgba(52,55,50,.28);font:500 16px/1.5 "Yu Mincho",serif;text-align:right;color:#35515a}

.kushida-history-cue{position:absolute;z-index:22;right:5vw;top:17vh;max-width:230px;padding:12px 15px;border:1px solid rgba(255,255,255,.23);border-radius:16px;background:rgba(8,29,34,.68);backdrop-filter:blur(12px);text-align:left}.kushida-history-cue small,.kushida-history-cue span{display:block}.kushida-history-cue small{font-size:7px;letter-spacing:.16em;opacity:.6}.kushida-history-cue span{margin-top:4px;font-size:11px}.kushida-history-card{position:absolute;z-index:26;right:5vw;top:14vh;width:min(390px,40vw);padding:19px 21px;border:1px solid rgba(255,255,255,.22);border-radius:22px;background:rgba(7,27,31,.86);backdrop-filter:blur(18px);box-shadow:0 20px 55px rgba(0,0,0,.36)}.kushida-history-card small{font-size:8px;letter-spacing:.17em;opacity:.62}.kushida-history-card b{display:block;margin:7px 0;font:600 22px/1.15 Georgia,serif}.kushida-history-card p{font-size:12px;line-height:1.65;opacity:.82}.kushida-history-card button{margin-top:8px;min-height:42px;padding:9px 14px;border-radius:999px;background:rgba(255,255,255,.1)}

.j4-route-start{position:absolute;z-index:24;right:6vw;bottom:8vh;min-height:46px;padding:11px 18px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(7,29,34,.72);backdrop-filter:blur(12px)}.j4-route-card,.j4-market-copy{position:absolute;z-index:23;left:5vw;bottom:7vh;width:min(520px,45vw);padding:18px 20px;border:1px solid rgba(255,255,255,.2);border-radius:22px;background:rgba(7,27,32,.76);backdrop-filter:blur(16px);box-shadow:0 18px 46px rgba(0,0,0,.32)}.j4-route-card small,.j4-market-copy>small{display:block;font-size:8px;letter-spacing:.17em;opacity:.62}.j4-route-card b,.j4-market-copy>b{display:block;margin:6px 0;font:600 23px/1.16 Georgia,serif}.j4-route-card span,.j4-market-copy>p{display:block;margin:0;font-size:12px;line-height:1.58;opacity:.82}.j4-route-card button,.j4-market-next{margin-top:13px;min-height:42px;padding:9px 15px;border-radius:999px;background:#e3d3aa;color:#173136}.j4-market-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:13px}.j4-market-actions button{min-height:42px;padding:9px 14px;border:1px solid rgba(255,255,255,.23);border-radius:999px;background:rgba(255,255,255,.08)}.j4-market-actions .j4-market-next{background:#e3d3aa;color:#173136}.j4-market-detail{margin-top:11px;padding:11px 12px;border-left:2px solid rgba(226,208,163,.7);background:rgba(255,255,255,.06);font-size:11px;line-height:1.5}.j4-tea-card{display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:center;margin-top:12px;padding:10px;border-radius:16px;background:rgba(255,255,255,.08)}.j4-tea-card img{width:72px;height:72px;object-fit:contain}.j4-tea-card strong,.j4-tea-card span,.j4-tea-card small{display:block}.j4-tea-card span{margin-top:4px;font-size:11px}.j4-tea-card small{margin-top:3px;font-size:9px;opacity:.65}.j4-choice-result{margin-top:12px!important}.j4-gift-moment{position:absolute;z-index:25;right:6vw;bottom:8vh;display:flex;align-items:end;gap:14px}.j4-gift-target{width:190px;min-height:92px;padding:12px;border:2px dashed rgba(255,255,255,.46);border-radius:18px;background:rgba(7,29,34,.55);display:grid;align-content:center}.j4-gift-target b,.j4-gift-target span{display:block}.j4-gift-target span{font-size:10px;line-height:1.4;opacity:.72}.j4-gift-object{width:98px;padding:9px;border-radius:17px;background:rgba(245,239,218,.92);color:#244044;touch-action:none}.j4-gift-object img{width:100%;height:64px;object-fit:contain}.j4-gift-object span{display:block;font-size:10px}.j4-gift-thanks{position:absolute;z-index:24;right:6vw;bottom:9vh;width:min(340px,36vw);padding:15px 17px;border-radius:20px;background:rgba(7,29,34,.76);backdrop-filter:blur(14px)}.j4-gift-thanks b,.j4-gift-thanks span{display:block}.j4-gift-thanks b{font:600 18px/1.3 "Yu Mincho",serif}.j4-gift-thanks span{margin-top:5px;font-size:11px;line-height:1.5;opacity:.8}

.j7-letter-discovery{position:absolute;z-index:25;left:50%;bottom:9vh;transform:translateX(-50%);width:min(520px,82vw);text-align:center}.j7-mei-envelope{width:min(360px,78vw);padding:18px 20px;border:1px solid rgba(78,71,54,.25);border-radius:7px;background:linear-gradient(145deg,#f4edda,#d9cba9);color:#314349;box-shadow:0 20px 55px rgba(0,0,0,.4);transform:rotate(-1.5deg)}.j7-mei-envelope span{display:block;font-size:9px;letter-spacing:.2em}.j7-mei-envelope i{display:block;margin:8px 0;font-size:24px;font-style:normal}.j7-mei-envelope b{font:500 15px/1.3 Georgia,serif}.j7-letter-discovery p{margin:15px auto 0;width:min(460px,80vw);font-size:11px;line-height:1.55;text-shadow:0 2px 8px #000}.j7-letter-backdrop{position:absolute;z-index:40;inset:0;display:grid;place-items:center;padding:clamp(18px,5vw,64px);overflow:auto;background:rgba(5,15,18,.82);backdrop-filter:blur(8px)}.j7-farewell-sheet{width:min(620px,88vw);max-height:82vh;overflow:auto;animation:letter-arrive .6s both}.j7-final-callbacks{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.j7-final-callbacks span{padding:6px 9px;border:1px solid rgba(255,255,255,.15);border-radius:999px;font-size:9px;opacity:.72}.j7-final-copy>em{display:block;margin:8px 0 12px;font:italic 12px/1.5 Georgia,serif;opacity:.78}@keyframes letter-arrive{from{opacity:0;transform:translateY(18px) rotate(-1deg)}to{opacity:1;transform:none}}

@media(max-width:700px){
  .passport-cover,.passport-book{width:92vw;max-height:68vh}.passport-entry{bottom:calc(var(--safe-bottom) + 18px);width:88vw}.j3-photo-cue,.j3-photo-saved{right:14px;top:calc(var(--safe-top) + 74px)}
  .kushida-history-cue{right:14px;top:calc(var(--safe-top) + 74px);max-width:190px}.kushida-history-card{left:14px;right:14px;top:calc(var(--safe-top) + 72px);width:auto;max-height:62vh;overflow:auto}.kushida-history-card b{font-size:18px}
  .j4-route-start{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 15px)}.j4-route-card,.j4-market-copy{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 14px);width:auto;max-height:52vh;overflow:auto;padding:14px 15px}.j4-route-card b,.j4-market-copy>b{font-size:19px}.j4-market-actions{display:grid;grid-template-columns:1fr}.j4-market-actions button{width:100%}.j4-gift-moment{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 14px);justify-content:center}.j4-gift-target{width:min(190px,52vw)}.j4-gift-thanks{left:14px;right:14px;bottom:calc(var(--safe-bottom) + 76px);width:auto}
  .j7-letter-discovery{bottom:calc(var(--safe-bottom) + 24px)}.j7-letter-backdrop{padding:calc(var(--safe-top) + 12px) 12px calc(var(--safe-bottom) + 12px)}.j7-farewell-sheet{width:100%;max-height:86vh}.photo-roll__card{grid-template-columns:76px 1fr}.photo-roll__card img{width:76px;height:68px}
}
@media(prefers-reduced-motion:reduce){.passport-ritual.is-open .passport-book,.j7-farewell-sheet{animation:none}.j3-cruise-video{display:none}}

/* PREMIUM TRUTH PASS — carnet vivant, passeport, portefeuille et respiration de fin de journée */
.notebook-panel--premium{grid-template-columns:minmax(235px,.66fr) minmax(0,1.34fr);align-items:start}
.journal-reflection,.language-entry,.notebook-section,.passport-profile-card,.passport-wallet-card,.passport-docs{border:1px solid rgba(24,53,60,.12);border-radius:22px;background:rgba(255,255,255,.58);box-shadow:0 12px 34px rgba(34,55,58,.08)}
.journal-reflection{grid-column:2;display:grid;grid-template-columns:minmax(180px,.62fr) minmax(280px,1.38fr);gap:18px;padding:18px 20px}
.journal-reflection>div{display:grid;align-content:start;gap:5px}.journal-reflection small,.notebook-section header small,.language-entry small,.passport-panel small{font-size:8px;font-weight:900;letter-spacing:.17em;color:#8d604f}.journal-reflection strong{font:600 23px/1.1 Georgia,serif}.journal-reflection span{color:#68797b;font-size:11px;line-height:1.45}
.journal-reflection form{display:grid;gap:10px}.journal-reflection textarea{min-height:118px;resize:vertical;padding:14px 15px;border:1px solid rgba(24,53,60,.14);border-radius:15px;background:#fffdf8;color:#18353c;font:400 14px/1.55 Georgia,serif;outline:none}.journal-reflection textarea:focus{border-color:#8d604f;box-shadow:0 0 0 3px rgba(141,96,79,.12)}.journal-reflection button{justify-self:end;min-height:42px;padding:9px 14px;border-radius:999px;background:#18353c;color:#fff9ef;font-weight:850}
.reflection-history{grid-column:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.reflection-history article{padding:14px 15px;border-left:2px solid rgba(141,96,79,.4);background:rgba(255,255,255,.45)}.reflection-history small{font-size:8px;letter-spacing:.15em;color:#8d604f}.reflection-history p{margin:5px 0 0;color:#40575b;font:400 12px/1.55 Georgia,serif}
.notebook-section{grid-column:2;padding:18px 20px}.notebook-section header{display:grid;gap:4px;margin-bottom:13px}.notebook-section header strong{font:500 17px/1.35 Georgia,serif;color:#29474d}
.notebook-moments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.notebook-moments figure{position:relative;margin:0;min-height:178px;overflow:hidden;border-radius:17px;background:#17383e}.notebook-moments img{width:100%;height:100%;min-height:178px;object-fit:cover;filter:saturate(.92) brightness(.86);transition:transform .6s ease}.notebook-moments figure:hover img{transform:scale(1.025)}.notebook-moments figcaption{position:absolute;inset:auto 0 0;padding:36px 13px 12px;background:linear-gradient(180deg,transparent,rgba(5,25,30,.88));color:#fff9ef}.notebook-moments small,.notebook-moments b{display:block}.notebook-moments small{font-size:7px;letter-spacing:.13em;opacity:.7}.notebook-moments b{margin-top:4px;font:500 16px/1.2 Georgia,serif}
.culture-recap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.culture-recap article{display:grid;grid-template-columns:58px 1fr;gap:11px;align-items:start;padding:11px;border-radius:15px;background:rgba(24,53,60,.055)}.culture-recap b{font:600 20px/1.1 "Yu Mincho",serif;color:#274b52}.culture-recap p{margin:0;color:#52676a;font-size:11px;line-height:1.52}
.language-entry{grid-column:2;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px}.language-entry>div{display:grid;gap:4px}.language-entry strong{font:500 18px/1.3 Georgia,serif;color:#29474d}.language-entry span{font-size:10px;color:#6b797c}.language-entry button{flex:none;min-height:43px;padding:9px 15px;border-radius:999px;background:#18353c;color:#fff8ef;font-weight:850}
.souvenir-strip{display:flex;gap:9px;overflow-x:auto;padding-bottom:3px}.souvenir-strip article{flex:0 0 128px;min-height:100px;padding:12px;border-radius:16px;background:linear-gradient(145deg,#f4ead4,#dfd0aa);color:#28464c;display:grid;align-content:center;gap:8px;box-shadow:inset 0 0 0 1px rgba(70,63,48,.08)}.souvenir-strip i{font-style:normal;font:600 25px/1 "Yu Mincho",serif}.souvenir-strip span{font-size:10px;line-height:1.3}

.language-lab{padding:28px;max-width:980px;margin:0 auto}.language-lab>.legal-back{margin-bottom:18px}.language-lab>small{display:block;font-size:8px;letter-spacing:.17em;color:#8d604f;font-weight:900}.language-lab__head{display:flex;justify-content:space-between;gap:24px;align-items:start;margin-top:6px}.language-lab__head h2{margin:0;font:500 34px/1.08 Georgia,serif;color:#18353c}.language-lab__head p{max-width:58ch;margin:8px 0 0;color:#66777a;font:400 14px/1.55 Georgia,serif}.language-lab__head>span{flex:none;padding:7px 10px;border-radius:999px;background:rgba(24,53,60,.08);font-size:9px;font-weight:850;color:#36565c}
.language-progress{display:flex;gap:7px;margin:20px 0 14px;overflow-x:auto}.language-progress button{width:38px;height:38px;border-radius:50%;border:1px solid rgba(24,53,60,.14);background:transparent;color:#53696d;font-weight:900}.language-progress button.is-active{background:#18353c;color:#fff8ef}.language-progress button.is-done{box-shadow:inset 0 0 0 2px rgba(141,96,79,.35)}
.phrase-workbench{padding:22px;border:1px solid rgba(24,53,60,.12);border-radius:24px;background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(244,238,224,.68));box-shadow:0 18px 44px rgba(24,53,60,.08)}.phrase-target{min-height:74px;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;padding:13px;border:1px dashed rgba(24,53,60,.22);border-radius:18px;background:rgba(255,255,255,.46)}.phrase-target span{padding:10px 12px;border-radius:12px;background:#18353c;color:#fffaf0;font:600 17px/1 "Yu Mincho",serif}.phrase-target em{font:italic 12px/1.4 Georgia,serif;color:#718083}.phrase-chunks{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:18px}.phrase-chunks button{min-height:46px;padding:9px 15px;border:1px solid rgba(24,53,60,.16);border-radius:14px;background:#fffdf8;color:#24454b;font:600 16px/1 "Yu Mincho",serif;box-shadow:0 7px 16px rgba(34,55,58,.06)}.phrase-chunks button:disabled{opacity:.28;transform:scale(.96)}.phrase-result{display:grid;gap:5px;margin-top:18px;padding:18px;border-radius:18px;background:#17383e;color:#fff9ef;text-align:center}.phrase-result b{font:600 28px/1.3 "Yu Mincho",serif}.phrase-result span{font-size:11px;letter-spacing:.03em;opacity:.76}.phrase-result p{margin:3px 0 0;font:400 13px/1.45 Georgia,serif}.phrase-feedback{margin:13px 0 0;padding:10px 12px;border-radius:13px;font-size:11px;line-height:1.45}.phrase-feedback.is-retry{background:rgba(151,99,67,.1);color:#704d3e}.mei-hint{display:flex;gap:9px;align-items:flex-start;margin:13px 0 0;padding:11px 13px;border-radius:14px;background:rgba(24,53,60,.07);color:#50666a;font:400 11px/1.5 Georgia,serif}.mei-hint i{font-style:normal;font:600 19px/1 "Yu Mincho",serif;color:#8d604f}.phrase-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:14px}.phrase-actions button{min-height:38px;padding:8px 12px;border:1px solid rgba(24,53,60,.15);border-radius:999px;background:transparent;color:#38565c;font-size:10px;font-weight:850}.phrase-actions span{font-size:10px;color:#4f7165;font-weight:850}

.passport-panel{padding:26px 28px 34px}.passport-hero{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:18px;align-items:stretch}.passport-hero__book{position:relative;min-height:230px;overflow:hidden;border-radius:24px;background:#17383e;box-shadow:0 18px 45px rgba(24,53,60,.12)}.passport-hero__book>img{width:100%;height:100%;object-fit:cover;opacity:.66;filter:saturate(.88) brightness(.72)}.passport-hero__book>div{position:absolute;inset:auto 22px 20px;color:#fff9ef;text-shadow:0 3px 18px rgba(0,0,0,.35)}.passport-hero__book strong,.passport-hero__book span{display:block}.passport-hero__book strong{margin-top:5px;font:500 29px/1.05 Georgia,serif}.passport-hero__book span{margin-top:7px;font-size:11px;opacity:.8}.passport-progress{display:grid;align-content:center;justify-items:center;padding:18px;border-radius:24px;background:#18353c;color:#fff9ef;text-align:center}.passport-progress small{color:#efb09b}.passport-progress b{margin:6px 0 0;font:500 48px/1 Georgia,serif}.passport-progress span{margin-top:6px;font-size:10px;opacity:.65}
.passport-stamps{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px;margin:16px 0}.passport-stamps figure{margin:0;padding:8px;border-radius:15px;background:rgba(255,255,255,.52);text-align:center;transition:filter .2s ease,opacity .2s ease}.passport-stamps figure.is-locked{filter:grayscale(1);opacity:.28}.passport-stamps img{width:100%;aspect-ratio:1;object-fit:contain}.passport-stamps figcaption{margin-top:4px;font-size:7px;line-height:1.2;color:#617276}.passport-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.passport-profile-card,.passport-wallet-card{padding:17px 18px}.passport-profile-card dl,.passport-wallet-card dl{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:13px 0 0}.passport-profile-card dl div,.passport-wallet-card dl div{padding:10px;border-radius:13px;background:rgba(24,53,60,.055)}.passport-profile-card dt,.passport-wallet-card dt{font-size:8px;color:#718083}.passport-profile-card dd,.passport-wallet-card dd{margin:3px 0 0;font-size:11px;font-weight:850;color:#29474d}.wallet-mini-card{margin-top:11px;padding:13px;border-radius:16px;background:linear-gradient(145deg,#17383e,#476369);color:#fff9ef}.wallet-mini-card span,.wallet-mini-card b{display:block}.wallet-mini-card span{font-size:8px;letter-spacing:.14em;opacity:.7}.wallet-mini-card b{margin-top:14px;font-size:15px}.passport-docs{margin-top:12px;padding:17px 18px}.passport-docs header{display:grid;gap:4px;margin-bottom:12px}.passport-docs header strong{font:500 16px/1.35 Georgia,serif;color:#29474d}

.digital-wallet--rich{display:grid;gap:11px}.digital-ic-card{padding:15px;border-radius:18px;background:linear-gradient(145deg,#dce8dc,#91b092);color:#21483c;box-shadow:0 10px 24px rgba(36,80,63,.14)}.digital-ic-card small,.digital-ic-card strong,.digital-ic-card span{display:block}.digital-ic-card small{font-size:8px;letter-spacing:.12em;opacity:.65}.digital-ic-card strong{margin:8px 0 4px;font:700 19px/1 sans-serif}.digital-ic-card span{font:600 17px/1 Georgia,serif}.wallet-balances{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.wallet-balances article{padding:10px;border-radius:14px;background:#fff}.wallet-balances small,.wallet-balances b{display:block}.wallet-balances small{font-size:7px;color:#758286}.wallet-balances b{margin-top:4px;font:600 15px/1.1 Georgia,serif;color:#1f4148}.wallet-paper-ticket{padding:11px 13px;border:1px dashed rgba(24,53,60,.26);border-radius:9px;background:#fbf4df;color:#39545a}.wallet-paper-ticket small,.wallet-paper-ticket b,.wallet-paper-ticket span{display:block}.wallet-paper-ticket small{font-size:7px;letter-spacing:.13em}.wallet-paper-ticket b{margin-top:4px;font-size:13px}.wallet-paper-ticket span{margin-top:2px;font-size:8px;opacity:.66}.wallet-receipts{padding:11px 12px;border-radius:15px;background:rgba(255,255,255,.68)}.wallet-receipts>small{font-size:7px;letter-spacing:.13em;color:#718083}.wallet-receipts article{display:flex;justify-content:space-between;gap:8px;padding:7px 0;border-top:1px solid rgba(24,53,60,.08);font-size:9px}.wallet-receipts article:first-of-type{margin-top:5px}.wallet-receipts span{max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.memory-list--rich .phone-reflection{background:#fff7e8}.memory-list--rich .phone-language{background:#edf3ec}

.chapter-teaser__copy em{display:block;max-width:38ch;margin-top:12px;color:rgba(255,249,237,.62);font:italic 12px/1.5 Georgia,serif}.chapter-teaser__mei-shadow{position:absolute;z-index:2;left:48%;bottom:-8%;width:170px;height:58%;opacity:.3;filter:blur(.2px);pointer-events:none}.chapter-teaser__mei-shadow:before{content:"";position:absolute;left:55px;top:0;width:55px;height:55px;border-radius:50%;background:#031014;box-shadow:0 18px 48px rgba(0,0,0,.4)}.chapter-teaser__mei-shadow:after{content:"";position:absolute;left:20px;top:43px;width:130px;height:84%;border-radius:72px 72px 18px 18px;background:linear-gradient(180deg,#061419,#02090b)}.chapter-teaser__mei-shadow i{position:absolute;z-index:2;left:25px;right:25px;bottom:9%;height:38%;border-radius:50%;background:rgba(1,8,10,.58);filter:blur(14px)}.chapter-teaser__mei-shadow span{position:absolute;z-index:3;left:68px;top:84px;color:rgba(255,255,255,.18);font:600 23px/1 "Yu Mincho",serif}.chapter-teaser__signature{position:absolute;z-index:4;left:47%;bottom:7%;width:100px;max-height:54px;object-fit:contain;opacity:.45;filter:brightness(2) grayscale(1)}

.trial-sheet--premium .trial-sheet__copy{width:min(760px,58vw);max-height:88svh;overflow:auto;padding-right:7px}.trial-sheet--premium .trial-sheet__copy h2{font-size:clamp(40px,5vw,68px)}.trial-sheet--premium .trial-sheet__stats span{display:grid;gap:2px;min-width:116px}.trial-sheet--premium .trial-sheet__stats b{font:600 17px/1 Georgia,serif}.trial-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:18px}.trial-preview-grid article{position:relative;min-height:120px;overflow:hidden;border-radius:16px;border:1px solid rgba(255,255,255,.18)}.trial-preview-grid img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.5) saturate(.75)}.trial-preview-grid article>div{position:absolute;inset:auto 0 0;padding:28px 10px 10px;background:linear-gradient(180deg,transparent,rgba(4,21,26,.9))}.trial-preview-grid small,.trial-preview-grid b,.trial-preview-grid span{display:block}.trial-preview-grid small{font-size:7px;letter-spacing:.14em;opacity:.6}.trial-preview-grid b{margin-top:2px;font:500 13px/1.15 Georgia,serif}.trial-preview-grid span{margin-top:2px;font-size:8px;opacity:.68}.trial-sheet__promise{font-size:12px!important;opacity:.76}.trial-sheet__actions .primary{background:#f1dca7;color:#17383e}

.journey-end__hanabi{position:absolute;inset:0;overflow:hidden;pointer-events:none;opacity:.55}.journey-end__hanabi i{position:absolute;width:210px;height:210px;border-radius:50%;background:repeating-conic-gradient(from 0deg,rgba(255,232,167,.92) 0deg 1deg,transparent 1deg 11deg);mask:radial-gradient(circle,transparent 0 18%,#000 20% 21%,transparent 23% 42%,#000 44% 45%,transparent 47%);animation:hanabi-breathe 4.8s ease-in-out infinite}.journey-end__hanabi i:nth-child(1){left:6%;top:8%;transform:scale(.75)}.journey-end__hanabi i:nth-child(2){right:7%;top:17%;animation-delay:1.2s;transform:scale(.52)}.journey-end__hanabi i:nth-child(3){left:42%;bottom:2%;animation-delay:2.1s;transform:scale(.42)}@keyframes hanabi-breathe{0%,100%{opacity:.2;filter:blur(.3px)}45%{opacity:.8;filter:blur(0)}}

.payment-tilt-note{display:none;margin-top:8px;font-size:9px;opacity:.7}.payment-present.is-tilting .neutral-terminal{box-shadow:0 0 0 5px rgba(239,214,156,.12),0 18px 44px rgba(0,0,0,.28)}.payment-present.is-tilting .travel-bank-card,.payment-present.is-tilting .travel-phone{transition:transform .12s linear;transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateZ(0)}

@media(max-width:700px){
  .notebook-panel--premium{grid-template-columns:1fr}.journal-reflection,.reflection-history,.notebook-section,.language-entry{grid-column:1}.journal-reflection{grid-template-columns:1fr;padding:15px}.journal-reflection textarea{min-height:100px}.reflection-history{grid-template-columns:1fr}.notebook-moments{grid-template-columns:1fr 1fr}.notebook-moments figure,.notebook-moments img{min-height:132px}.culture-recap{grid-template-columns:1fr}.language-entry{align-items:flex-start}.language-entry strong{font-size:16px}.language-entry button{align-self:center}.language-lab{padding:18px 16px calc(var(--safe-bottom) + 24px)}.language-lab__head{display:grid}.language-lab__head h2{font-size:28px}.language-lab__head>span{justify-self:start}.phrase-workbench{padding:15px}.phrase-target span,.phrase-chunks button{font-size:14px}.phrase-actions{justify-content:stretch}.phrase-actions button{flex:1}.passport-panel{padding:18px 16px calc(var(--safe-bottom) + 24px)}.passport-hero{grid-template-columns:1fr}.passport-hero__book{min-height:190px}.passport-progress{grid-template-columns:auto auto auto;justify-content:center;gap:6px;min-height:76px}.passport-progress b{font-size:34px}.passport-stamps{grid-template-columns:repeat(4,1fr)}.passport-grid{grid-template-columns:1fr}.passport-profile-card dl,.passport-wallet-card dl{grid-template-columns:1fr 1fr}.wallet-balances{grid-template-columns:1fr 1fr 1fr}.chapter-teaser__mei-shadow{left:auto;right:-14px;bottom:30%;width:112px;height:33%;opacity:.2}.chapter-teaser__mei-shadow:before{left:37px;width:38px;height:38px}.chapter-teaser__mei-shadow:after{left:16px;top:31px;width:84px}.chapter-teaser__mei-shadow span{left:44px;top:58px;font-size:17px}.chapter-teaser__signature{left:auto;right:18px;bottom:37%;width:70px}.chapter-teaser__copy em{font-size:10px;margin-top:7px}.trial-sheet--premium .trial-sheet__copy{left:16px;right:16px;bottom:calc(var(--safe-bottom) + 14px);width:auto;max-height:72svh;padding-right:0}.trial-sheet--premium .trial-sheet__copy h2{font-size:clamp(34px,10.5vw,50px)}.trial-preview-grid{grid-template-columns:repeat(3,1fr)}.trial-preview-grid article{min-height:92px}.trial-preview-grid span{display:none}.journey-end__hanabi i{width:150px;height:150px}.payment-tilt-note{display:block}
}
@media(max-width:420px){.notebook-moments{grid-template-columns:1fr}.passport-profile-card dl,.passport-wallet-card dl{grid-template-columns:1fr}.trial-preview-grid{grid-template-columns:1fr 1fr 1fr}.trial-sheet--premium .trial-sheet__stats{display:grid;grid-template-columns:1fr 1fr}.trial-sheet--premium .trial-sheet__stats span:last-child{grid-column:1/-1}}
@media(prefers-reduced-motion:reduce){.notebook-moments img,.journey-end__hanabi i{transition:none;animation:none}.chapter-teaser__mei-shadow,.chapter-teaser__signature{opacity:.18}}

/* PREMIUM TRUTH PASS — local personalized resume gate (honest pre-account shell) */
.session-gate{position:fixed;z-index:1200;inset:0;display:grid;place-items:center;padding:clamp(16px,4vw,44px);isolation:isolate}.session-gate__backdrop{position:absolute;inset:0;background:radial-gradient(circle at 50% 30%,rgba(26,62,68,.34),rgba(3,15,19,.88) 58%,rgba(1,8,10,.96));backdrop-filter:blur(18px)}.session-gate__card{position:relative;z-index:1;width:min(720px,94vw);max-height:min(760px,92svh);overflow:auto;padding:clamp(22px,4vw,38px);border:1px solid rgba(239,222,175,.32);border-radius:28px;background:linear-gradient(150deg,rgba(12,39,44,.96),rgba(5,24,29,.94));box-shadow:0 34px 90px rgba(0,0,0,.52),inset 0 1px rgba(255,255,255,.08);color:#fbf5e8}.session-gate__card:before{content:"";position:absolute;inset:9px;border:1px solid rgba(239,222,175,.08);border-radius:20px;pointer-events:none}.session-gate__card header{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding-bottom:18px;border-bottom:1px solid rgba(255,255,255,.1)}.session-gate__card header .identity__seal{width:48px;height:48px;display:grid;place-items:center;border:1px solid rgba(239,222,175,.35);border-radius:50%;font:600 12px/1 Georgia,serif;letter-spacing:.12em;color:#ead8aa}.session-gate__card header small,.session-gate__card header strong{display:block}.session-gate__card header small{font-size:8px;letter-spacing:.18em;opacity:.58}.session-gate__card header strong{margin-top:4px;font:500 clamp(21px,3.2vw,34px)/1.08 Georgia,serif}.session-gate__card header button{min-width:46px;min-height:46px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:rgba(255,255,255,.06);color:inherit}.session-gate__route{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center;margin:24px 0 17px;padding:17px 18px;border:1px solid rgba(239,222,175,.15);border-radius:18px;background:rgba(255,255,255,.035)}.session-gate__route span,.session-gate__route b{text-transform:uppercase;letter-spacing:.14em;font-size:10px}.session-gate__route b{text-align:right;color:#ead8aa}.session-gate__route i{font-style:normal;opacity:.46}.session-gate__card>p{max-width:62ch;margin:0;font-size:13px;line-height:1.68;opacity:.78}.session-gate__card dl{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:22px 0 0}.session-gate__card dl>div{padding:13px 14px;border-radius:15px;background:rgba(255,255,255,.055)}.session-gate__card dt{font-size:7px;letter-spacing:.15em;text-transform:uppercase;opacity:.52}.session-gate__card dd{margin:6px 0 0;font:500 16px/1.15 Georgia,serif}.session-gate__card footer{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.session-gate__card footer button{min-height:48px;padding:11px 17px;border-radius:999px}.session-gate__card footer .secondary{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.055);color:inherit}.session-gate__card footer .primary{background:#ecdcae;color:#17343a;font-weight:700}.session-gate__card footer .primary span{margin-left:6px}.session-gate__truth{display:block;margin-top:15px;font-size:8px;line-height:1.45;opacity:.44}
@media(max-width:700px){.session-gate{padding:calc(var(--safe-top) + 12px) 12px calc(var(--safe-bottom) + 12px)}.session-gate__card{width:100%;max-height:100%;padding:20px 17px;border-radius:23px}.session-gate__card header{grid-template-columns:auto 1fr auto;gap:10px}.session-gate__card header .identity__seal{width:42px;height:42px}.session-gate__card header strong{font-size:22px}.session-gate__card header small{font-size:7px}.session-gate__card header button{min-width:44px;min-height:44px}.session-gate__route{margin:18px 0 14px;padding:14px 13px}.session-gate__card>p{font-size:11px}.session-gate__card dl{grid-template-columns:1fr 1fr}.session-gate__card dl>div:last-child{grid-column:1/-1}.session-gate__card footer{display:grid;grid-template-columns:1fr 1fr}.session-gate__card footer button{min-width:0;padding:10px 11px}.session-gate__truth{font-size:7px}}
@media(max-width:390px){.session-gate__card{padding:17px 14px}.session-gate__route span,.session-gate__route b{font-size:8px}.session-gate__card footer{grid-template-columns:1fr}.session-gate__card dl{gap:7px}.session-gate__card dl>div{padding:11px}}
@media(prefers-reduced-motion:reduce){.session-gate__backdrop{backdrop-filter:none}}
/* PREMIUM TRUTH QA — touch target corrections */
.j3-photo-cue{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.j5-passport-line{min-height:44px;padding:6px 0;cursor:pointer}.j5-passport-line input{flex:0 0 18px}
@media(max-width:700px){.tool{width:44px;height:44px;min-width:44px;min-height:44px}}

/* Premium trial end: keep the conversion action reachable on short phones. */
@media(max-width:800px){
  .trial-sheet--premium .trial-sheet__copy{
    top:calc(var(--safe-top) + 72px);
    bottom:calc(var(--safe-bottom) + 10px);
    transform:none;
    max-height:none;
    overflow-y:auto;
    overscroll-behavior:contain;
    scrollbar-width:none;
    padding:8px 0 88px;
    -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 18px,#000 calc(100% - 76px),transparent 100%);
            mask-image:linear-gradient(to bottom,transparent 0,#000 18px,#000 calc(100% - 76px),transparent 100%);
  }
  .trial-sheet--premium .trial-sheet__copy::-webkit-scrollbar{display:none}
  .trial-sheet--premium .trial-sheet__copy h2{font-size:clamp(31px,9.6vw,45px);line-height:1.01}
  .trial-sheet--premium .trial-sheet__copy p{font-size:14px;line-height:1.55}
  .trial-sheet--premium .trial-sheet__stats{margin-top:14px}
  .trial-sheet--premium .trial-sheet__actions{
    position:sticky;
    z-index:4;
    bottom:-76px;
    margin:18px 0 -76px;
    padding:14px 0 calc(var(--safe-bottom) + 8px);
    background:linear-gradient(180deg,rgba(6,28,34,0),rgba(6,28,34,.92) 26%,rgba(6,28,34,.98));
  }
  .trial-sheet--premium .trial-sheet__actions button{min-height:48px}
}

/* Small-screen festival controls must stay thumb-sized even when visually quiet. */
@media(max-width:800px){
  .j6-time-breath button{min-height:40px;padding:9px 13px;font-size:10px}
}

/* Touch-safe festival time control across phones and tablets. */
.j6-time-breath button{min-height:40px;padding:9px 13px}
