/* One authored strand follows the world; these captions carry its meaning in HTML. */
.parallel-caption{position:absolute;right:5%;bottom:99px;z-index:3;display:block;margin:0;padding:0;font-size:11px;line-height:1.5;color:var(--fw-muted-dark);pointer-events:none}
.parallel-caption>span,.parallel-caption>code:not(.code-destination){opacity:calc(1 - var(--software-handoff,0))}
.scene-label-wrap{display:flex;align-items:center;flex-shrink:0;line-height:1}
.scene-label-wrap>.scene-label{flex:0 0 auto!important;width:max-content!important;max-width:max-content!important}
.parallel-caption .code-destination{position:absolute;right:10px;bottom:100%;display:block;width:max-content;padding-bottom:8px;font:11px/1.5 monospace;color:var(--fw-muted-dark);opacity:0;text-shadow:0 1px 3px var(--fw-charcoal),0 0 8px var(--fw-charcoal)}
.parallel-caption code{color:var(--fw-muted-dark);font:15px monospace;margin-right:7px}.parallel-caption small{font:inherit;color:var(--fw-muted-dark)}
.static-journey .parallel-caption{display:block;top:98px;bottom:auto;left:5%;right:auto}
.static-journey .parallel-caption .code-destination{display:none}
.static-journey .parallel-caption>span,.static-journey .scene-label-wrap{opacity:1}
.static-journey .chapter::after{content:'';position:absolute;left:2.5%;top:0;bottom:0;width:1px;background:linear-gradient(rgb(var(--fw-stone-rgb) / 0.133),rgb(var(--fw-stone-rgb) / 0.4),rgb(var(--fw-stone-rgb) / 0.133));z-index:1;pointer-events:none}
.chapter-6 .chapter-credit{color:var(--fw-muted-dark)}
.software-thread-end{position:relative;margin:40px 0 0;padding:20px 24px;border-left:1px solid var(--fw-line-light);color:var(--fw-muted-dark);font:clamp(11px,1.1vw,14px)/1.9 monospace;white-space:pre-wrap}
.software-thread-end::before{content:'';position:absolute;left:-1px;top:-42px;width:80px;height:42px;border:1px solid var(--fw-line-light);border-width:0 0 0 1px;border-radius:22px 0 0 0;opacity:.65}
.software-thread-end .code-comment{color:var(--fw-muted-dark)}
.journey-preparation{position:absolute;z-index:5;right:5%;top:110px;width:286px;padding:22px 24px;border:1px solid rgb(var(--fw-ivory-rgb) / 0.2);border-radius:12px;background:linear-gradient(135deg,rgb(var(--fw-raised-rgb) / 0.961),rgb(var(--fw-charcoal-rgb) / 0.941));color:var(--fw-ivory);box-shadow:0 12px 60px rgb(var(--fw-charcoal-rgb) / 0.133)}
.journey-preparation[hidden]{display:none}
.preparation-heading{display:flex;align-items:center;gap:12px;color:var(--fw-muted-dark);font:13px monospace;margin:0 0 14px}
.preparation-heading code{font-size:25px;letter-spacing:-.12em}
.journey-preparation [role=status]{font-size:13px;line-height:1.6;margin:0;min-height:42px}
.preparation-steps{display:flex;gap:5px;list-style:none;margin:16px 0 10px;padding:0}
.preparation-steps li{flex:1;font-size:9px;color:var(--fw-muted-dark);padding-top:10px;border-top:2px solid var(--fw-control);transition:border-color .4s,color .4s}
.preparation-steps li[data-complete=true]{color:var(--fw-muted-dark);border-color:var(--fw-line-light)}
.preparation-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:10px;line-height:1.5;color:var(--fw-muted-dark)}
.preparation-foot button{color:var(--fw-ivory);background:none;border:0;padding:12px 0 12px 12px;min-height:44px;font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:4px}
.preparation-status{font-size:11px;color:var(--fw-muted-dark);margin:14px 0 0;line-height:1.5}
.graphics-options-panel{max-height:calc(100svh - 150px);overflow-y:auto;overscroll-behavior:contain}
.orientation-note{margin:18px 0 0;padding-top:15px;border-top:1px solid rgb(var(--fw-ivory-rgb) / 0.2);font-size:12px;line-height:1.65;color:var(--fw-muted-dark)}
.orientation-note[hidden]{display:none}.orientation-note p{margin:0}.orientation-note strong{color:var(--fw-ivory);font-weight:500}.orientation-note button{font:inherit;border:0;padding:12px 0;background:none;color:var(--fw-muted-dark);cursor:pointer;min-height:44px;text-decoration:underline;text-underline-offset:4px}
.capture-art .journey-preparation,.capture-art .parallel-caption{display:none}
@media(max-width:760px){
 .parallel-caption{left:24px;right:24px;bottom:70px;font-size:9px;line-height:1.6;padding:0;text-align:right}
 .parallel-caption .code-destination{right:auto;left:0;top:0;bottom:auto;font-size:10px;padding:0;line-height:1.6}
 .parallel-caption>code:not(.code-destination){display:none}
 .parallel-caption .parallel-desktop{display:inline}
 .scene-label-wrap{grid-column:1/-1;opacity:calc(1 - var(--software-handoff,0))}
 .journey-preparation{top:auto;bottom:110px;right:22px;left:22px;width:auto;padding:15px 18px}
 .preparation-heading{margin-bottom:7px;font-size:12px}.preparation-heading code{font-size:20px}
 .journey-preparation [role=status]{min-height:0;font-size:12px}.preparation-steps{margin:12px 0 4px}
 .software-thread-end{padding:16px;margin-top:28px;font-size:11px}
}
@media(max-height:700px) and (max-width:760px){.parallel-caption{bottom:72px}}
@media(max-width:360px){.parallel-caption .code-destination{font-size:9px}}
@media(min-width:761px) and (max-height:550px){.journey-preparation{top:90px;padding:14px 18px}.parallel-caption{bottom:80px}}
@media(prefers-reduced-motion:reduce){.preparation-steps li{transition:none}}
@media print{.journey-preparation,.parallel-caption,.orientation-note{display:none}}

/* A small instrument for actual readiness, carried by the visual connection. */
.journey-preparation{width:310px;padding:20px 22px;border-radius:14px;border-color:rgb(var(--fw-ivory-rgb) / 0.188);background:linear-gradient(135deg,rgb(var(--fw-raised-rgb) / 0.961),rgb(var(--fw-charcoal-rgb) / 0.961));animation:preparation-enter .7s cubic-bezier(.22,1,.36,1) both;overflow:hidden}
.preparation-heading{font-family:Manrope,Arial,sans-serif;font-size:12px;letter-spacing:.01em}
.preparation-heading code{color:var(--fw-amber);text-shadow:0 0 18px rgb(var(--fw-charcoal-rgb) / 0.157)}
.preparation-meter{height:2px;background:rgb(var(--fw-stone-rgb) / 0.133);overflow:hidden;margin:17px 0 0}
.preparation-meter i{display:block;width:100%;height:100%;background:linear-gradient(90deg,var(--fw-amber),var(--fw-stone));transform:scaleX(0);transform-origin:left;transition:transform .85s cubic-bezier(.22,1,.36,1)}
.preparation-steps{margin-top:4px;margin-bottom:12px;gap:9px}
.preparation-steps li{position:relative;padding-top:9px;border:0}
.preparation-steps li[data-active=true]{color:var(--fw-muted-dark)}
.preparation-steps li[data-active=true]::after{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--fw-amber),transparent);animation:preparation-signal 1.7s ease-in-out infinite}
.preparation-transfer{display:block;min-height:16px;color:var(--fw-muted-dark);font:10px/1.6 Manrope,Arial,sans-serif;font-variant-numeric:tabular-nums}
.journey-preparation [role=status]{min-height:42px}
.journey-preparation.is-ready .preparation-heading code{color:var(--fw-muted-dark);text-shadow:none}
@keyframes preparation-enter{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes preparation-signal{0%,100%{opacity:.25;transform:scaleX(.55)}50%{opacity:.95;transform:scaleX(1)}}
/* Fade only the initial handoff. Camera motion never depends on CSS animation. */
#world{transition:opacity .75s cubic-bezier(.22,1,.36,1)}
.scene-still{transition:opacity .75s cubic-bezier(.22,1,.36,1),visibility 0s .75s}
.graphics-ready .scene-still{opacity:0;visibility:hidden}
@media(max-width:760px){.journey-preparation{width:auto;padding:15px 18px}.journey-preparation [role=status]{min-height:38px}.preparation-meter{margin-top:12px}.preparation-transfer{font-size:9px}}
@media(prefers-reduced-motion:reduce){.journey-preparation,.preparation-steps li::after{animation:none!important}.preparation-meter i,#world,.scene-still{transition:none}}
/* Retain contrast over close mechanical views without enlarging the caption. */
.parallel-caption>span{padding:3px 7px;border-radius:4px;background:rgb(var(--fw-charcoal-rgb) / 0.722);text-shadow:0 1px 2px var(--fw-charcoal)}
/* The last code line shares the caption baseline, below the inspection controls. */
@media(min-width:761px){.parallel-caption .code-destination{bottom:0;padding-bottom:0}}
