@charset "UTF-8";
/* EX-IM · nexus.css · the Company Nexus chart (partials/nexus_chart.php, js/nexus.js), on the homepage's Nexus
   panel and the Nexus page. Moved here unchanged from home.css so both pages share one copy. */

#exim-nexus .yr { transition: fill .3s ease; }
#exim-nexus #y25 { fill: #141414; font-weight: 700; }
#exim-nexus #y26 { fill: #8A8A94; font-weight: 400; }
#exim-nexus.y2026 #y25 { fill: #8A8A94; font-weight: 400; }
#exim-nexus.y2026 #y26 { fill: #141414; font-weight: 700; }
#exim-nexus #pill { transition: transform .35s cubic-bezier(.2,.8,.2,1); }
#exim-nexus.y2026 #pill { transform: translateX(58px); }
#exim-nexus #card { opacity: 0; transform: translateY(8px); transition: opacity .35s ease, transform .35s ease; pointer-events: none; }
#exim-nexus #card.show { opacity: 1; transform: none; }
#exim-nexus .hit { cursor: pointer; fill: #000; fill-opacity: 0; outline: none; }
#exim-nexus .hit:focus-visible { stroke: #6FE2FF; stroke-width: 1.5; }
#exim-nexus #pulse { transform-box: fill-box; transform-origin: center; animation: nxPulse 1.8s ease-out infinite; }
#exim-nexus #pulse.off { display: none; }
@keyframes nxPulse { 0% { opacity: .9; transform: scale(1); } 100% { opacity: 0; transform: scale(1.3, 1.6); } }
@media (prefers-reduced-motion: reduce) { #exim-nexus #pulse { animation: none; opacity: .6; } }
#exim-nexus .lrow { cursor: pointer; outline: none; }
#exim-nexus .lrow .band { stroke: #FFBA6A; stroke-opacity: 0; transition: stroke-opacity .2s ease; }
#exim-nexus .lrow .acc { transition: opacity .2s ease; }
#exim-nexus .lrow:hover .band, #exim-nexus .lrow:focus-visible .band { stroke-opacity: .6; }
#exim-nexus .lrow:hover .acc, #exim-nexus .lrow:focus-visible .acc { opacity: 1; }
/* ---------- entrance (added; the 2025/2026 toggle animation is unchanged) ---------- */
#exim-nexus .nx-layer { animation: nxFadeUp .7s cubic-bezier(.2,.8,.2,1) both; }
#exim-nexus .nx-head   { animation-delay: .05s; }
#exim-nexus .nx-cols   { animation-delay: .3s; }
#exim-nexus .nx-bar    { transform-box: fill-box; transform-origin: center; animation: nxGrow .8s cubic-bezier(.2,.8,.2,1) .5s both; }
#exim-nexus .nx-left   { animation: nxSweepL 1.1s cubic-bezier(.3,.7,.2,1) 1s both; }
#exim-nexus .nx-right  { animation: nxSweepR 1.1s cubic-bezier(.3,.7,.2,1) 1.2s both; }
#exim-nexus .nx-legend { animation-delay: 2s; }
@keyframes nxFadeUp { from { opacity: 0; translate: 0 14px; } to { opacity: 1; translate: 0 0; } }
@keyframes nxGrow   { from { opacity: 0; scale: 1 0; } to { opacity: 1; scale: 1 1; } }
@keyframes nxSweepL { from { opacity: 0; clip-path: inset(0 0 0 100%); } 30% { opacity: 1; } to { opacity: 1; clip-path: inset(0 0 0 0); } }
@keyframes nxSweepR { from { opacity: 0; clip-path: inset(0 100% 0 0); } 30% { opacity: 1; } to { opacity: 1; clip-path: inset(0 0 0 0); } }
#exim-nexus.nx-wait .nx-layer { animation-play-state: paused !important; }
@media (prefers-reduced-motion: reduce) { #exim-nexus .nx-layer { animation: none !important; } }  
/* ---------- tier explorer (added; the home chart and its 2025/2026 animation are unchanged) ---------- */
#exim-nexus .rrow { cursor: pointer; outline: none; }
#exim-nexus .rrow .band { stroke: #6FE2FF; stroke-opacity: 0; transition: stroke-opacity .2s ease; }
#exim-nexus .rrow:hover .band, #exim-nexus .rrow:focus-visible .band { stroke-opacity: .6; }
#exim-nexus .lrow.trail .band, #exim-nexus .rrow.trail .band { stroke: #D8D3FF; stroke-opacity: .32; }
#exim-nexus .lrow.trail:hover .band, #exim-nexus .lrow.trail:focus-visible .band,
#exim-nexus .rrow.trail:hover .band, #exim-nexus .rrow.trail:focus-visible .band { stroke-opacity: .85; }
#exim-nexus.nx-away .nx-left, #exim-nexus.nx-away .nx-right, #exim-nexus.nx-away .nx-bar { visibility: hidden; }
#exim-nexus.nx-away #card { visibility: hidden; opacity: 0 !important; }
#exim-nexus.nx-busy .hit, #exim-nexus.nx-busy [data-node], #exim-nexus.nx-busy .st, #exim-nexus.nx-busy #nx-reset { pointer-events: none; }
#exim-nexus #nx-chip { pointer-events: none; opacity: 0; transition: opacity .16s ease; }
#exim-nexus #nx-chip.on { opacity: 1; }
#exim-nexus .st, #exim-nexus #nx-reset { cursor: pointer; outline: none; }
#exim-nexus .st-bg { transition: stroke-opacity .2s ease; }
#exim-nexus .st-tint { fill-opacity: 0; transition: fill-opacity .2s ease; }
#exim-nexus .st.on-path .st-tint { fill-opacity: .1; }
#exim-nexus .st.on-path .st-bg { stroke-opacity: .7; }
#exim-nexus .st:hover .st-bg, #exim-nexus .st:focus-visible .st-bg { stroke-opacity: .95; }
#exim-nexus .st:hover .st-tint, #exim-nexus .st:focus-visible .st-tint { fill-opacity: .14; }
#exim-nexus #nx-reset rect { transition: stroke-opacity .2s ease; }
#exim-nexus #nx-reset:hover rect, #exim-nexus #nx-reset:focus-visible rect { stroke-opacity: .45; }
#exim-nexus #nx-threads { transition: opacity .4s ease; }
#exim-nexus .thr { fill: none; stroke-width: 1.1; stroke-linecap: round; stroke-dasharray: 2 4; animation: nxThr 1.3s linear infinite; }
#exim-nexus .thr-g { opacity: .3; transition: opacity .25s ease; }
#exim-nexus .thr-g.on, #exim-nexus.nx-tease .thr-g { opacity: 1; }
#exim-nexus.nx-tease .st-tint { animation: nxStTease 1.7s ease-in-out both; animation-delay: var(--d, 0s); }
@keyframes nxThr { to { stroke-dashoffset: -12; } }
@keyframes nxStTease { 0%, 100% { fill-opacity: 0; } 45% { fill-opacity: .24; } }
@media (prefers-reduced-motion: reduce) { #exim-nexus .thr { animation: none; } }
