/* A single continuous scene: the selected label and camera approach the ear. */
html{scrollbar-gutter:stable}
.prepared-panel[hidden]{display:none!important}
.detail-dialog{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;overflow:hidden;background:transparent;box-shadow:none;animation:none}
.detail-dialog::backdrop{background:transparent;backdrop-filter:none}
.detail-dialog.journey-closing{pointer-events:none}
.journey-scene{position:absolute;inset:0;overflow:hidden;background:transparent}
.journey-wash{position:absolute;inset:0;background:radial-gradient(ellipse at 28% 48%,#f4f7f8,#e7eff1)}
.journey-open #ear-visual img{visibility:hidden}
.journey-ear{position:absolute;top:0;left:0;height:auto;max-width:none;transform-origin:0 0;will-change:transform;filter:drop-shadow(15px 25px 30px #17344320)}
.journey-target{position:absolute;z-index:2;display:flex;align-items:center;gap:16px;white-space:nowrap;pointer-events:none}
.journey-target i{display:block;width:24px;height:24px;border:1px solid white;border-radius:50%;box-shadow:0 0 0 9px #ffffff35,0 0 0 10px #ffffff80;background:#17344330;transform:translate(-50%,-50%)}
.journey-target span{display:block;background:#183744e8;color:#fff;border:1px solid #ffffff50;border-radius:4px;padding:9px 16px;font-size:16px;box-shadow:0 8px 35px #17344315;transform:translateY(-12px)}
.journey-note{position:absolute;bottom:32px;left:35px;font-size:12px;letter-spacing:2px;color:#486b79}
.journey-panel{position:absolute;right:28px;top:28px;bottom:28px;width:min(520px,42vw);background:#f4f7f8f2;backdrop-filter:blur(20px);border:1px solid #ffffff;border-radius:12px;box-shadow:0 20px 80px #17344317;overflow-y:auto;padding:30px;transform:translateX(35px);opacity:0;visibility:hidden;transition:opacity .4s,transform .6s var(--ease),visibility .4s}
.journey-arrived .journey-panel{opacity:1;visibility:visible;transform:translateX(0)}
.journey-panel .dialog-top{margin-bottom:30px}
.journey-panel .close-dialog{font-size:15px;width:auto;min-height:44px;position:fixed;right:12px;top:12px;background:#f4f7f8;border-radius:6px;padding:8px 12px;visibility:visible;opacity:1;z-index:4}
.journey-panel .dialog-top>span{padding-right:120px}
.journey-panel h2:focus{outline:none}
.journey-panel .section-title .eyebrow{font-size:12px}
.journey-panel .booking-section>p:not(.eyebrow){font-size:16px}
.detail-dialog:not(.journey-arrived) .journey-panel{pointer-events:none}
.detail-dialog:not(.journey-arrived) .close-dialog{pointer-events:auto}
@media(max-width:760px){
 .journey-panel{left:12px;right:12px;top:40%;bottom:12px;width:auto;border-radius:14px;padding:24px;transform:translateY(25px)}
 .journey-arrived .journey-panel{transform:translateY(0)}
 .journey-note{top:18px;left:18px;bottom:auto;font-size:10px;letter-spacing:1.5px}
 .journey-target{gap:8px}.journey-target span{font-size:14px;padding:7px 10px}
 .journey-panel .dialog-top{margin-bottom:22px}
 .journey-panel .close-dialog{font-size:14px}
 .detail-dialog .journey-panel h2{font-size:32px}
 .journey-panel .booking-section{padding:18px}
}
@media(prefers-reduced-motion:reduce){.journey-panel{transition:none}}
.motion-paused .journey-panel{transition:none}
/* Keep the moving texture on a compositor layer without per-frame blur. */
.journey-scene{contain:layout paint}
.journey-ear{filter:none;will-change:auto;backface-visibility:hidden}
.detail-dialog[open] .journey-ear{will-change:transform}
.journey-panel{background:#f4f7f8;backdrop-filter:none;box-shadow:0 12px 32px #17344312;transition:none;transform:none}
.ear-visual img{filter:none;backface-visibility:hidden}
.ear-visual{transition:transform .14s ease-out}
.journey-open .hero *,.scene-idle *,.page-idle .hero *{animation-play-state:paused!important}
@keyframes float{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-10px,0)}}
@media(prefers-reduced-motion:reduce){.journey-panel{transition:none}}
.motion-paused .journey-panel{transition:none}
