/* The opening occupies one screen; reading never drives the camera. */
.journey{height:auto}
.flight-viewport{position:relative;height:100svh;min-height:720px}
.journey[data-campus="true"] .hero-copy{display:none}
.hero-copy{top:50%;bottom:auto;transform:translateY(-38%);width:46%;max-width:620px}
.hero-copy h1{font-size:clamp(48px,5.6vw,88px);line-height:1.08}
.hero-copy .brand-accent{color:var(--accent)}
.hero-description{max-width:460px}
.hero-actions{gap:25px}
.hero-actions .primary-button{gap:25px}
.orbital-caption,.scene-info{display:none}
.scene-vignette{background:linear-gradient(90deg,rgba(8,14,23,.87),rgba(8,14,23,.42) 40%,rgba(8,14,23,.06) 70%),linear-gradient(0deg,#080e17,transparent 28%)}
.journey-controls{left:8%;right:8%;bottom:35px;display:flex;justify-content:space-between;align-items:center;gap:25px}
.route-stages{display:flex;gap:30px}
.route-stages button{padding:10px 0;gap:12px;font-size:12px;min-height:44px}
.route-stages button:last-child{justify-self:auto}
.route-dot{width:6px;height:6px}
/* Keep the playback controls in one stable slot. */
.playback-area{display:grid;align-items:center;justify-items:end;flex-shrink:0;min-height:44px}
.playback-controls{display:flex;align-items:center;gap:18px;flex-shrink:0}
.playback-controls button{display:flex;align-items:center;gap:7px;min-height:44px;padding:8px 0;font-size:11px;color:var(--muted)}
.playback-controls button:hover{color:var(--ink)}
.playback-controls svg{width:15px;fill:none;stroke:currentColor;stroke-width:1.3}
.playback-controls #play-icon{fill:currentColor;stroke:none}
.imagery-credit{bottom:13px;right:8%;max-width:65%;font-size:8px;opacity:.75}
.imagery-credit{z-index:4;opacity:1;text-align:left}
.imagery-credit summary{display:flex;align-items:center;gap:8px;min-height:22px;cursor:pointer;list-style:none;color:#bdcbd9}
.imagery-credit summary::-webkit-details-marker{display:none}
.imagery-credit summary .disclosure-icon{color:var(--accent);width:12px;height:12px}
.imagery-credit summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.credit-panel{position:absolute;right:0;bottom:calc(100% + 8px);width:min(440px,calc(100vw - 40px));max-height:240px;overflow:auto;padding:14px 16px;background:#081321f5;border:1px solid #c9d7e540;border-radius:3px;color:#d6e0eb;font-size:11px;line-height:1.8;box-shadow:0 8px 28px #0005;text-shadow:none}
.credit-panel p{margin:0}
.credit-panel p+p{margin-top:10px}
.credit-panel a{text-decoration:underline;text-underline-offset:3px}
.scene-tools{position:absolute;z-index:5;right:5%;top:125px;width:224px;padding:3px 14px;background:#0a1420ed;border:1px solid var(--line);border-radius:3px;backdrop-filter:blur(12px)}
.scene-tools .lighting-controls{position:static;inset:auto;justify-content:center;gap:0;padding:0;border:0;background:none;backdrop-filter:none}
.scene-tools .lighting-controls>span{display:none}
.scene-tools .lighting-controls>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;width:100%}
.scene-tools .lighting-controls button{min-width:0;min-height:36px;padding:5px 0;white-space:nowrap}
.scene-tools button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
body.scene-unavailable .scene-tools{display:none}
.campus-tools{border-top:1px solid var(--line);margin-top:3px;padding-top:3px}
.scene-tools .building-views{position:static;inset:auto;border:0;background:none;backdrop-filter:none;padding:0 0 5px;display:block}
.scene-tools .building-views>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.scene-tools .building-views button{min-width:0;min-height:36px;padding:5px 0;border:0;border-bottom:1px solid transparent;border-radius:0;font-size:11px}
.scene-tools .building-views button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}
.scene-tools .building-views>span{display:block;font-size:10px;line-height:1.5;color:#9fb0c1;margin:6px 0 3px;text-align:center}
.journey[data-orbit=true] #scene canvas{cursor:grab;touch-action:pan-y}
.journey[data-orbit=true] #scene canvas[data-dragging=true]{cursor:grabbing}

.fallback{inset:36% 6% auto 57%}
@media(max-width:1000px) and (min-width:651px){
  .journey-controls{left:6%;right:6%;gap:15px}
  .route-stages{gap:20px}.route-stages button{font-size:11px;gap:8px}
  .playback-controls{gap:13px}.hero-copy{width:52%}
}
@media(max-width:650px){
  .flight-viewport{min-height:800px}
  .hero-copy{left:7%;top:165px;bottom:auto;transform:none;width:86%;max-width:none}
  .hero-copy h1{font-size:clamp(35px,10.8vw,46px);margin-bottom:17px;max-width:360px}
  .hero-description{font-size:13px;line-height:1.8;margin-bottom:20px;max-width:330px}
  .hero-actions{gap:20px;flex-wrap:wrap}.hero-actions .primary-button{gap:16px}
  .hero-copy .eyebrow{font-size:9px;margin-bottom:15px}
  .scroll-hint{display:none}
  .scene-vignette{background:linear-gradient(180deg,rgba(8,14,23,.5),rgba(8,14,23,.75) 24%,rgba(8,14,23,.15) 57%,#080e17 91%)}
  .journey-controls{left:7%;right:7%;bottom:36px;display:flex;flex-direction:column;align-items:stretch;gap:10px}
  .route-stages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
  .route-stages button{font-size:10px;line-height:1.45;gap:8px;min-height:44px}
  .playback-controls{justify-content:flex-end;gap:24px}
  .playback-controls button{font-size:10px}
  .imagery-credit{right:7%;bottom:10px;max-width:86%;font-size:7px;line-height:1.4}
  /* Keep scene settings together above chapter and playback controls. */
  .scene-tools{inset:auto auto 146px 7%;width:min(232px,86%);padding:2px 8px}
  .scene-tools .lighting-controls>div{gap:3px}
  .scene-tools .lighting-controls button{font-size:10px;min-height:32px;padding:4px 0}
  .scene-tools .campus-tools{margin-top:2px;padding-top:2px}
  .scene-tools .building-views{padding:0}
  .scene-tools .building-views>div{gap:3px}
  .scene-tools .building-views button{font-size:10px;min-height:32px;padding:4px 0}
  .scene-tools .building-views>span{display:none}
  .floor-callouts{display:none}
  .fallback{inset:57% 7% auto 7%}
  body.scene-unavailable .hero-copy{top:165px}
}
@media(prefers-reduced-motion:reduce){
  .journey{height:auto}.flight-viewport{min-height:720px}
}
@media(prefers-reduced-motion:reduce) and (max-width:650px){.flight-viewport{min-height:800px}}
