.hero-object {
  --ho-line: rgba(226, 233, 237, .85);
  --ho-mid: rgba(191, 206, 216, .65);
  --ho-quiet: rgba(167, 186, 200, .28);
  --ho-open-time: 1150ms;
  --ho-open-ease: cubic-bezier(.19, .78, .19, 1);
  -webkit-tap-highlight-color: transparent;
}
.hero-object .ho-svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
  pointer-events: none;
  shape-rendering: geometricPrecision;
}
.hero-object .ho-line { stroke: var(--ho-mid); stroke-width: 1; }
.hero-object .ho-line, .hero-object .ho-line path { vector-effect: non-scaling-stroke; }
.hero-object .ho-line-main { stroke: var(--ho-line); }
.hero-object .ho-line-mid { stroke: var(--ho-mid); stroke-width: .9; }
.hero-object .ho-line-quiet { stroke: var(--ho-quiet); stroke-width: .75; }
.hero-object .ho-line-rear { stroke: rgba(180, 196, 207, .25); stroke-width: .75; }
.hero-object .ho-line-core { stroke: rgba(227, 236, 242, .92); stroke-width: 1; }
.hero-object .ho-line-detail { stroke-width: .7; opacity: .6; }
.hero-object .ho-line-hidden { stroke-dasharray: 2 5; opacity: .38; }
.hero-object .ho-node { fill: #dce7ed; opacity: .83; }
.hero-object .ho-active-node { fill: #e0f0f5; stroke: none; animation: ho-node-pulse 2.7s ease-in-out var(--ho-phase, 0s) infinite; }
.hero-object .ho-scene { transform-origin: 320px 320px; animation: ho-scene-float 11s ease-in-out infinite; }
.hero-object .ho-core { animation: none; }
.hero-object .ho-inner-float { animation: ho-inner-float 7.8s ease-in-out -2s infinite; }
.hero-object .ho-module-float { animation: ho-module-float 5.6s ease-in-out var(--ho-phase, 0s) infinite; }
.hero-object .ho-mezzanine { animation: ho-inner-float 8.4s ease-in-out -3s infinite; }
.hero-object .ho-roof-float { animation: ho-roof-float 11s ease-in-out -1.2s infinite; }
.hero-object .ho-core-panel-float { animation: ho-panel-float 7.2s ease-in-out var(--ho-phase, 0s) infinite; }
.hero-object .ho-current { fill: none; stroke: #e2eff5; stroke-width: 1.6; stroke-dasharray: 13 112; stroke-linecap: round; animation: ho-signal-travel 3.3s linear var(--ho-phase, 0s) infinite; opacity: .92; }
.hero-object .ho-inner-signals { opacity: .2; transition: opacity 850ms ease; }
.hero-object .ho-chip-bars path { transform-box: fill-box; transform-origin: center; animation: ho-chip-signal 1.8s ease-in-out infinite alternate; }
.hero-object .ho-chip-bars path:nth-child(2) { animation-delay: -.65s; }
.hero-object .ho-chip-bars path:nth-child(3) { animation-delay: -1.1s; }
.hero-object .ho-shift { transform: translate(0, 0); transition: transform var(--ho-open-time) var(--ho-open-ease); }
.hero-object .ho-open-guides { opacity: 0; transition: opacity 650ms ease; }
.hero-object .ho-ground-light { opacity: .4; transition: opacity var(--ho-open-time) ease; }
.hero-object.is-open .ho-roof { transform: translate(0, -95px); }
.hero-object.is-open .ho-facade-left { transform: translate(-110px, -6px); }
.hero-object.is-open .ho-facade-right { transform: translate(110px, -6px); }
.hero-object.is-open .ho-foundation { transform: translate(0, 80px); }
.hero-object.is-open .ho-rear-assembly { transform: translate(0, -23px); }
.hero-object.is-open .ho-inner-floor { transform: translate(-30px, 55px); }
.hero-object.is-open .ho-service-left { transform: translate(-64px, -18px); }
.hero-object.is-open .ho-service-right { transform: translate(65px, 23px); }
.hero-object.is-open .ho-inner-bridge { transform: translate(-43px, 21px); }
.hero-object.is-open .ho-mezzanine-shift { transform: translate(42px, 40px); }
.hero-object.is-open .ho-rails-shift { transform: translate(20px, 50px); }
.hero-object.is-open .ho-core-top { transform: translate(0, -62px); }
.hero-object.is-open .ho-core-left { transform: translate(-38px, 5px); }
.hero-object.is-open .ho-core-right { transform: translate(38px, 5px); }
.hero-object.is-open .ho-core-processor { transform: translate(0, -27px); }
.hero-object.is-open .ho-core-chip-a { transform: translate(-45px, 31px); }
.hero-object.is-open .ho-core-chip-b { transform: translate(45px, 39px); }
.hero-object.is-open .ho-open-guides { opacity: .62; transition-delay: 160ms; }
.hero-object.is-open .ho-ground-light { opacity: .16; }
.hero-object.is-open .ho-inner-signals { opacity: .65; }
.hero-object.is-open .ho-core-top, .hero-object.is-open .ho-inner-floor { transition-delay: 35ms; }
.hero-object.is-open .ho-core-chip-a, .hero-object.is-open .ho-core-chip-b,
.hero-object.is-open .ho-core-processor { transition-delay: 100ms; }
.hero-object.motion-offscreen * { animation-play-state: paused !important; }
@keyframes ho-scene-float { 0%,100% { transform: translateY(2px); } 50% { transform: translateY(-2px); } }
@keyframes ho-inner-float { 0%,100% { transform: translateY(1px); } 50% { transform: translateY(-4px); } }
@keyframes ho-module-float { 0%,100% { transform: translateY(2.5px); } 50% { transform: translateY(-3.5px); } }
@keyframes ho-panel-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-1.2px); } }
@keyframes ho-roof-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes ho-signal-travel { to { stroke-dashoffset: -250; } }
@keyframes ho-node-pulse { 0%,100% { opacity: .28; } 38%,65% { opacity: 1; } }
@keyframes ho-chip-signal { from { transform: scaleY(.3); opacity: .5; } to { transform: scaleY(1); opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .hero-object * { animation: none !important; transition: none !important; }
  .hero-object .ho-current { stroke-dasharray: 6 14; opacity: .6; }
}
