/* Shared D4SN3ST project rail, matching the live portfolio switcher. */
.project-nodes {
  --node-accent: #d4ff32;
  position: fixed;
  z-index: 1200;
  top: 50%;
  right: 0;
  width: 19rem;
  color: #e3e2e5;
  transform: translateY(-50%) translateX(calc(100% - 1rem));
  transition: transform 220ms cubic-bezier(.2,.8,.2,1);
}
.project-nodes:hover,
.project-nodes:focus-within,
.project-nodes.is-open { transform: translateY(-50%) translateX(0); }
.project-nodes__rail {
  position: absolute;
  top: 50%;
  left: 0;
  width: 2.55rem;
  min-height: 8.25rem;
  padding: .7rem 0;
  border: 1px solid #444934;
  border-right: 0;
  color: #e3e2e5;
  background: #0d0e10;
  cursor: pointer;
  transform: translate(-100%, -50%);
}
.project-nodes__dots { display: grid; justify-content: center; gap: .65rem; }
.project-nodes__dots i,
.project-nodes__signal { width: .45rem; height: .45rem; border-radius: 50%; background: #444934; box-shadow: 0 0 0 transparent; }
.project-nodes__dots i.is-active { background: var(--node-accent); box-shadow: 0 0 12px color-mix(in srgb, var(--node-accent) 80%, transparent); }
.project-nodes__rail-label { display: block; margin-top: .9rem; color: #8f937a; font: 700 .62rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .14em; writing-mode: vertical-rl; }
.project-nodes__panel { margin-left: 1rem; padding: 1rem; border: 1px solid #444934; background: rgba(13,14,16,.97); box-shadow: -12px 14px 32px rgba(0,0,0,.25); }
.project-nodes__panel > p { margin: 0 0 .85rem; color: var(--node-accent); font: 700 .68rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .12em; }
.project-nodes__panel nav { display: grid; gap: 1px; }
.project-nodes__panel a { display: grid; grid-template-columns: .55rem 1fr auto; align-items: center; gap: .65rem; min-height: 3.8rem; padding: .65rem; color: #c5c9ad; background: #1b1c1e; text-decoration: none; transition: background 160ms ease, color 160ms ease; }
.project-nodes__panel a:hover,
.project-nodes__panel a:focus-visible { color: #fff; background: #292a2c; outline: 1px solid var(--node-accent); outline-offset: -1px; }
.project-nodes__panel a[aria-current="page"] { color: #fff; background: #292a2c; }
.project-nodes__panel a[aria-current="page"] .project-nodes__signal { background: var(--node-accent); box-shadow: 0 0 11px color-mix(in srgb, var(--node-accent) 80%, transparent); }
.project-nodes__panel strong,
.project-nodes__panel small,
.project-nodes__panel b { display: block; }
.project-nodes__panel strong { font-size: .86rem; letter-spacing: -.015em; }
.project-nodes__panel small { margin-top: .22rem; color: #8f937a; font: .65rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .08em; text-transform: uppercase; }
.project-nodes__panel b { color: var(--node-accent); font: 700 .9rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; }
@media (max-width: 760px) {
  .project-nodes { top: auto; right: .6rem; bottom: 0; width: min(21rem, calc(100vw - 1.2rem)); transform: translateY(calc(100% - 2.65rem)); }
  .project-nodes:hover,
  .project-nodes:focus-within,
  .project-nodes.is-open { transform: translateY(0); }
  .project-nodes__rail { position: static; display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 2.65rem; padding: 0 .8rem; border: 1px solid #444934; transform: none; }
  .project-nodes__dots { display: flex; gap: .55rem; }
  .project-nodes__rail-label { margin: 0; writing-mode: initial; }
  .project-nodes__panel { margin-left: 0; border-top: 0; }
}
@media (prefers-reduced-motion: reduce) { .project-nodes, .project-nodes__panel a { transition: none; } }
