.arrival{position:absolute;inset:0;z-index:8;isolation:isolate;display:flex;flex-direction:column;justify-content:space-between;background:var(--cream);color:var(--ink)}
.phone[data-arrival="true"]>.topbar{visibility:hidden}
.arrival-photo,.arrival-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 30%;z-index:-2}
.arrival-video{z-index:-1}
.arrival-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:max(16px,env(safe-area-inset-top)) 18px 10px;background:linear-gradient(#fbf9f5f5,#fbf9f5ba,transparent)}
.arrival-head>span{font-family:serif;letter-spacing:.18em;font-size:16px}
.arrival-head>div{display:flex;gap:5px}
.arrival-head button{min-height:44px;padding:9px 12px;background:#fbf9f5eb;border:1px solid #d6cbb9;border-radius:24px;font-size:11px;color:#4b4130}
.arrival-head button[aria-pressed="true"]{background:#15372b;border-color:#15372b;color:#f1e9d6}
.arrival-copy{padding:48px 22px max(19px,env(safe-area-inset-bottom));background:linear-gradient(transparent,#fbf9f5ed 20%,var(--cream) 55%)}
.arrival-copy .eyebrow{margin:0 0 7px;color:#806127;font-size:11px}
.arrival-copy h2{font:400 32px/1.3 "Songti TC","Noto Serif TC",serif;white-space:pre-line;letter-spacing:.03em;margin:0}
.arrival-copy>p:not(.eyebrow){font-size:12px;line-height:1.75;color:#665d50;margin:9px 0 13px}
.arrival-copy .primary-button{width:100%;min-height:52px;font-size:14px}
.arrival[data-stage="luggage"] .arrival-copy h2{font-size:25px;white-space:normal}
.arrival[data-stage="luggage"] .arrival-copy{padding-top:35px}
@media(max-height:700px) and (orientation:portrait){
 .arrival-head{padding:9px 13px}.arrival-copy{padding:25px 17px 14px}.arrival-copy h2{font-size:25px;line-height:1.2}.arrival-copy>p:not(.eyebrow){font-size:11px;margin:6px 0 9px}.arrival-copy .eyebrow{margin-bottom:4px}.arrival-copy .primary-button{min-height:46px}
}
@media(orientation:landscape) and (max-height:600px){
 .arrival{display:block}.arrival-photo,.arrival-video{right:42%;width:58%;object-fit:contain;object-position:center}.arrival-head{right:42%;position:absolute;inset:0 42% auto 0;padding:10px 14px}.arrival-head>span{font-size:13px}.arrival-copy{position:absolute;left:58%;right:0;top:0;bottom:0;padding:22px;display:flex;flex-direction:column;justify-content:center;background:var(--cream);overflow:auto}.arrival-copy h2{font-size:27px}.arrival-copy>p:not(.eyebrow){font-size:11px}.arrival-copy .primary-button{min-height:46px}.arrival[data-stage="luggage"] .arrival-copy{padding-top:22px}
}

/* A compact welcome leaves the actual front-row cabin visible between beats. */
.intro{top:74px;justify-content:flex-end;padding:15px 22px max(18px,env(safe-area-inset-bottom));background:linear-gradient(transparent 52%,#fbf9f52b 62%,#fbf9f5f2 80%,var(--cream) 93%)}
/* 座位資訊改成面板內的一行，不再蓋在照片左上角（原本會壓到電視） */
.seat-arrived{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin:0 0 6px}
.seat-arrived .eyebrow{margin:0;font-size:11px;letter-spacing:.13em}
.seat-arrived>span{font-size:11px;color:#625748}
.seat-arrived button{margin-left:auto;min-height:32px;padding:4px 0;border:0;background:none;color:#806127;font-size:11px;text-decoration:underline;text-underline-offset:3px}
.intro-bottom{position:relative;isolation:isolate;padding-top:18px;background:none}
.intro-bottom::before{content:"";position:absolute;inset:0 -30px -30px;z-index:-1;background:linear-gradient(#fbf9f500,#fbf9f5ed 18px,var(--cream) 68%);pointer-events:none}
.intro-bottom .intro-copy{padding:0;border:0;border-radius:0;background:none;backdrop-filter:none}
.intro-bottom .intro-copy h2{font-size:26px;line-height:1.4;margin:0 0 6px;letter-spacing:.04em}
.intro-bottom .intro-copy>p{font-size:12px;line-height:1.7;margin:0 0 10px;color:#625748;text-shadow:none}
.seat-explore{display:flex;gap:8px;margin-bottom:12px}
.seat-explore button{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:1;min-height:44px;padding:10px 12px;border:1px solid #d4c8ad;border-radius:12px;background:#fffdf8ed;color:#514431;font-size:11px}
.seat-explore button:active{background:#eee3cb}
.phone[data-seated="true"] .intro{animation:seat-welcome .45s ease-out both}
.phone[data-departed="true"] .view-caption{animation:seat-welcome .5s ease-out both}
@keyframes seat-welcome{from{opacity:0}to{opacity:1}}
@media(max-height:710px) and (orientation:portrait){
 .intro{padding:7px 17px 13px}.seat-arrived{margin-bottom:4px}.seat-arrived>span{font-size:11px}.seat-arrived button{min-height:28px}.intro-bottom .intro-copy h2{font-size:24px;margin-bottom:4px}.intro-bottom .intro-copy>p{font-size:11px;margin-bottom:8px}.intro-bottom .intro-copy>p br{display:none}.seat-explore{margin-bottom:9px}.seat-explore button{font-size:11px;padding:8px 10px}.intro-bottom .scope-note{font-size:11px;margin-bottom:8px}
}
@media(orientation:landscape) and (max-height:600px){
 .intro{top:0;padding:13px 20px;gap:10px;background:var(--cream);justify-content:center;overflow-y:auto}.intro-bottom{padding-top:0}.seat-arrived{padding:0;border:0;background:none;display:block}.seat-arrived .eyebrow{display:inline-block}.seat-arrived>span{margin-left:7px;font-size:11px}.seat-arrived button{display:block;min-height:44px;padding:8px 0}.intro-bottom .intro-copy h2{font-size:24px;margin-bottom:4px}.intro-bottom .intro-copy>p{font-size:11px;line-height:1.5;margin-bottom:8px}.intro-bottom .intro-copy>p br{display:none}.seat-explore{margin-bottom:8px;gap:6px}.seat-explore button{font-size:11px;padding:8px;min-height:44px}.intro-bottom .scope-note{font-size:11px;margin-bottom:7px}
}
@media(prefers-reduced-motion:reduce){.phone[data-seated="true"] .intro,.phone[data-departed="true"] .view-caption{animation:none}}

/* One-tap opening: the boarding still pushes in slowly on its own (no button). */
.arrival[data-stage="boarding"] #arrivalBoarding{animation:board-push 3s ease-out both;transform-origin:50% 45%;will-change:transform}
@keyframes board-push{from{transform:scale(1)}to{transform:scale(1.07)}}
/* Seat: 再坐一下 (or 好了，出發吧 once held) and, while the scene is on its way, one calm line in the same slot. */
.seat-actions{display:flex;gap:8px}
.seat-actions>button{flex:1;min-height:52px;font-size:13px}
/* The calm line sits above the buttons (the button never moves under the finger), and the seat stays usable meanwhile. */
.seat-status{margin:0 0 8px;display:flex;align-items:center;justify-content:center;font-size:13px;color:#51493a;letter-spacing:.04em}
/* The overlay passes touches through to the look surface (drag to look around at the seat); only its panel takes them. */
.intro{pointer-events:none}.intro-bottom{pointer-events:auto}
/* 再坐一下 and 好了，出發吧 share a slot: the one that just appeared comes in over 1 s, while app.mjs ignores taps on it. */
.seat-actions>button{animation:seat-slot-in 1s ease-out both}
@keyframes seat-slot-in{from{opacity:.35}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.arrival[data-stage="boarding"] #arrivalBoarding,.seat-actions>button{animation:none}}

/* 清微傳來的訊息: a quiet notification card above the driver's head on the welcome, dismissable. */
.arrival-note{position:absolute;z-index:1;top:max(76px,calc(env(safe-area-inset-top) + 60px));left:14px;right:14px;display:flex;align-items:flex-start;gap:2px;max-width:420px;margin-left:auto;padding:9px 4px 10px 13px;border-radius:14px 4px 14px 14px;background:#fffdf8f0;box-shadow:0 3px 16px #32281a26;color:#3b3428;animation:note-in .4s ease-out 1.2s both}
.arrival-note[hidden]{display:none}
.arrival-note p{flex:1;margin:0;font-size:13px;line-height:1.6}
.arrival-note p>span{display:block;margin-bottom:2px;font-size:11px;letter-spacing:.08em;color:#806127}
.arrival-note button{flex:none;width:44px;height:44px;margin:-9px -4px -8px 0;border:0;border-radius:50%;background:none;color:#7a6e5b;font-size:18px;line-height:1}
@keyframes note-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media(max-height:700px) and (orientation:portrait){.arrival-note{top:62px;padding:7px 4px 8px 12px}.arrival-note p{font-size:12px;line-height:1.5}}
@media(orientation:landscape) and (max-height:600px){.arrival-note{top:12px;left:calc(58% + 18px);right:18px;max-width:none;margin-left:0}}   /* over the copy panel, not the photo */
@media(prefers-reduced-motion:reduce){.arrival-note{animation:none}}
