/* Forge Core — free-floating chrome emblem inside a circuit halo. No box, no card. */
.forge-emblem.logo-viewer { position: relative; min-height: 540px; display: flex; flex-direction: column; background: none; border: 0; border-radius: 0; overflow: visible; isolation: isolate; }
.logo-viewer::before, .logo-viewer::after { display: none; }
.logo-viewer__stage { position: relative; flex: 1; min-height: 540px; display: grid; place-items: center; }
/* Core glow: warm copper heat behind the metal, graphite falloff. */
.logo-viewer__stage::before { content: ""; position: absolute; inset: -12% -8%; z-index: -2; pointer-events: none;
  background:
    radial-gradient(closest-side at 50% 50%, rgba(198,161,132,.20), rgba(198,161,132,.06) 45%, transparent 72%),
    radial-gradient(closest-side at 50% 50%, rgba(174,180,180,.08), transparent 90%); }
/* Engineering dot grid that fades out toward the edges. */
.logo-viewer__stage::after { content: ""; position: absolute; inset: 0; z-index: -3; pointer-events: none;
  background-image: radial-gradient(rgba(238,234,227,.14) 1px, transparent 1.4px); background-size: 22px 22px; background-position: center;
  -webkit-mask-image: radial-gradient(closest-side, #000 20%, transparent 100%); mask-image: radial-gradient(closest-side, #000 20%, transparent 100%); }
.forge-halo { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; overflow: visible; pointer-events: none; }
.forge-halo * { fill: none; }
.forge-halo__spin { transform-origin: 300px 300px; transform-box: view-box; }
.forge-halo__ticks { stroke: #4a5053; stroke-width: 7; stroke-dasharray: 1 11.47; opacity: .55; }
.forge-halo__orbit { stroke: var(--copper); stroke-width: 1; stroke-dasharray: 2 9; opacity: .42; }
.forge-halo__ring { stroke: #353a3d; stroke-width: 1; }
.forge-halo__ring--inner { stroke: #2a2e31; stroke-dasharray: 64 10 4 10; }
.forge-halo__traces path { stroke: #33383b; stroke-width: 1.3; stroke-linejoin: round; }
.forge-halo__pads circle { fill: var(--ink); stroke: #4a5053; stroke-width: 1.3; }
.forge-halo__pulses path { stroke: #e3bf9f; stroke-width: 1.6; stroke-linecap: round; stroke-dasharray: 22 480; stroke-dashoffset: 22; opacity: 0; }
.logo-viewer canvas { position: absolute; inset: 0; width: 100%; height: 100%; cursor: grab; touch-action: pan-y; }
.logo-viewer canvas.is-dragging { cursor: grabbing; }
.logo-viewer canvas:focus-visible { outline-offset: -6px; }
.logo-viewer__fallback { width: 58%; max-height: 330px; object-fit: contain; filter: drop-shadow(0 18px 40px rgba(0,0,0,.55)); }

@media (prefers-reduced-motion: no-preference) {
  /* Constant motion: linear. The orbit turns once a minute; scroll adds to it via motion.mjs. */
  .forge-halo__spin { animation: halo-spin 90s linear infinite; }
  .forge-halo__pulses path { animation: trace-pulse 5.6s cubic-bezier(0.77, 0, 0.175, 1) infinite; }
  .forge-halo__pulses path:nth-child(2) { animation-delay: .9s; }
  .forge-halo__pulses path:nth-child(3) { animation-delay: 1.8s; }
  .forge-halo__pulses path:nth-child(4) { animation-delay: 2.7s; }
  .forge-halo__pulses path:nth-child(5) { animation-delay: 3.6s; }
  .forge-halo__pulses path:nth-child(6) { animation-delay: 4.5s; }
  .forge-emblem.logo-viewer { animation: emblem-in 1.4s cubic-bezier(0.23, 1, 0.32, 1) .1s both; }
}
@keyframes halo-spin { to { rotate: 360deg; } }
@keyframes trace-pulse {
  0% { stroke-dashoffset: 22; opacity: 0; }
  8% { opacity: 1; }
  38% { stroke-dashoffset: -230; opacity: 1; }
  46%, 100% { stroke-dashoffset: -260; opacity: 0; }
}
@keyframes emblem-in { from { opacity: 0; scale: .94; } to { opacity: 1; scale: 1; } }

@media print { .forge-emblem.logo-viewer { display: none; } }
@media (max-width: 900px) { .forge-emblem.logo-viewer, .logo-viewer__stage { min-height: 440px; } }
@media (max-width: 640px) { .forge-emblem.logo-viewer, .logo-viewer__stage { min-height: 360px; } }
