
/* ECXBay 5.4 — condensed visual analytics inspired by financial terminals. */
.ecxv54-terminal{margin:26px 0 34px;display:grid;gap:18px}
.ecxv54-head,.ecxv54-panel-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.ecxv54-kicker{display:inline-block;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#79c7ff;margin-bottom:6px}
.ecxv54-head h2,.ecxv54-panel-head h3{margin:0;color:#f6fbff}
.ecxv54-head p{margin:8px 0 0;color:#93abc3;max-width:880px;font-size:14px;line-height:1.6}
.ecxv54-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ecxv54-actions button{border:1px solid rgba(127,171,213,.28);background:rgba(10,19,34,.85);color:#cfe8ff;padding:10px 14px;border-radius:999px;font-weight:700;letter-spacing:.08em;cursor:pointer;transition:.25s ease;text-transform:uppercase;font-size:11px}
.ecxv54-actions button:hover,.ecxv54-actions button.active{background:linear-gradient(135deg,rgba(66,215,255,.25),rgba(89,99,255,.24));border-color:rgba(122,183,255,.55);box-shadow:0 0 0 1px rgba(72,157,244,.14) inset,0 10px 28px rgba(10,24,44,.32)}
.ecxv54-panel{position:relative;overflow:hidden;background:linear-gradient(180deg,rgba(8,16,29,.96),rgba(13,24,43,.92));border:1px solid rgba(107,137,177,.18);border-radius:24px;padding:18px 20px;box-shadow:0 18px 46px rgba(2,8,18,.24), inset 0 1px 0 rgba(255,255,255,.03)}
.ecxv54-panel::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at top right,rgba(64,162,255,.14),transparent 38%),radial-gradient(circle at bottom left,rgba(78,243,176,.08),transparent 34%);pointer-events:none}
.ecxv54-panel-head small{display:block;margin:0 0 5px;color:#78b8ef;letter-spacing:.18em;font-size:10px;text-transform:uppercase}
.ecxv54-panel-head h3{font-size:20px;line-height:1.15}
.ecxv54-badge{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(88,134,197,.26);background:rgba(15,27,47,.72);color:#e3f5ff;padding:8px 12px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}
.ecxv54-ribbon-shell{overflow:hidden;border-radius:18px;border:1px solid rgba(122,168,224,.12);background:linear-gradient(180deg,rgba(6,12,23,.88),rgba(11,18,32,.94));padding:10px 0;position:relative}
.ecxv54-ribbon-shell::before,.ecxv54-ribbon-shell::after{content:"";position:absolute;top:0;bottom:0;width:84px;z-index:2;pointer-events:none}
.ecxv54-ribbon-shell::before{left:0;background:linear-gradient(90deg,rgba(9,16,28,1),rgba(9,16,28,0))}
.ecxv54-ribbon-shell::after{right:0;background:linear-gradient(270deg,rgba(9,16,28,1),rgba(9,16,28,0))}
.ecxv54-ribbon-marquee{display:flex;gap:12px;align-items:center;min-height:62px;width:max-content;animation:ecxv54-marquee 42s linear infinite;padding:0 12px}
.ecxv54-ribbon-marquee:hover{animation-play-state:paused}
.ecxv54-ribbon-placeholder{padding:0 18px;color:#92abc4}
.ecxv54-pill{display:grid;grid-template-columns:auto auto auto;gap:8px;align-items:center;padding:10px 14px;border-radius:14px;border:1px solid rgba(90,133,180,.16);background:linear-gradient(180deg,rgba(16,28,49,.86),rgba(10,19,35,.96));box-shadow:inset 0 0 0 1px rgba(255,255,255,.025)}
.ecxv54-pill-label{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#85afd2}
.ecxv54-pill-value{font-weight:800;color:#f3fbff;font-size:15px;white-space:nowrap}
.ecxv54-pill-change{font-size:11px;font-weight:700;white-space:nowrap;padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.04)}
.ecxv54-pill-change.up{color:#65f3bf;background:rgba(82,255,176,.08)}
.ecxv54-pill-change.down{color:#ffb4aa;background:rgba(255,106,106,.08)}
.ecxv54-pill-change.flat{color:#9bb2c9}
.ecxv54-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:18px}
.ecxv54-flow-board{position:relative;min-height:320px;padding:16px 12px 10px}
.ecxv54-flow-svg{position:absolute;inset:0;width:100%;height:100%}
.ecxv54-link{fill:none;stroke:url(#ecxv54-flow-grad);stroke-width:4;stroke-linecap:round;stroke-dasharray:10 14;animation:ecxv54-dash 7.5s linear infinite;filter:drop-shadow(0 0 12px rgba(66,215,255,.18))}
.ecxv54-hub-ring{fill:none;stroke:rgba(104,156,255,.24);stroke-width:1.8;stroke-dasharray:6 6;animation:ecxv54-spin 20s linear infinite;transform-origin:320px 150px}
.ecxv54-node,.ecxv54-hub{position:absolute;z-index:1;display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:18px;background:linear-gradient(180deg,rgba(16,28,48,.92),rgba(11,18,34,.96));border:1px solid rgba(112,149,192,.18);box-shadow:0 12px 30px rgba(3,9,18,.28), inset 0 0 0 1px rgba(255,255,255,.02);min-width:148px}
.ecxv54-node::after{content:"";position:absolute;inset:auto 12px 10px 12px;height:2px;border-radius:999px;background:linear-gradient(90deg,rgba(66,215,255,.0),rgba(66,215,255,.86),rgba(78,243,176,.0));opacity:.65}
.ecxv54-node small,.ecxv54-hub small{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#82b3dc}
.ecxv54-node strong,.ecxv54-hub strong{font-size:22px;line-height:1;color:#f7fbff}
.ecxv54-node span,.ecxv54-hub span{font-size:12px;color:#91aac3;line-height:1.45}
.ecxv54-node-chain{left:4%;top:8%}.ecxv54-node-blocks{left:4%;bottom:8%}.ecxv54-node-mempool{left:36%;top:6%}.ecxv54-node-fees{left:36%;bottom:6%}.ecxv54-node-price{right:4%;top:8%}.ecxv54-node-flow{right:4%;bottom:8%}
.ecxv54-hub{left:50%;top:50%;transform:translate(-50%,-50%);align-items:center;text-align:center;min-width:172px;background:radial-gradient(circle at center,rgba(78,243,176,.11),rgba(15,24,42,.95) 65%)}
.ecxv54-matrix-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ecxv54-cell{padding:14px 14px 12px;border-radius:18px;border:1px solid rgba(96,137,187,.18);background:linear-gradient(180deg,rgba(17,29,49,.86),rgba(11,18,34,.96));display:grid;gap:8px;min-height:154px}
.ecxv54-cell small{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#82b2da}
.ecxv54-cell strong{font-size:22px;line-height:1.05;color:#f7fbff}
.ecxv54-cell span{font-size:12px;color:#9eb4cb;min-height:18px}
.ecxv54-cell span.up{color:#67edbe}.ecxv54-cell span.down{color:#ffaea1}.ecxv54-cell span.flat{color:#9eb4cb}
.ecxv54-spark{margin-top:auto;height:58px;border-radius:12px;border:1px solid rgba(255,255,255,.035);background:linear-gradient(180deg,rgba(7,13,22,.5),rgba(10,16,28,.82));padding:8px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.ecxv54-spark svg{width:100%;height:100%}
.ecxv54-barline{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.ecxv54-area{opacity:.22}
@keyframes ecxv54-marquee{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
@keyframes ecxv54-dash{to{stroke-dashoffset:-240}}
@keyframes ecxv54-spin{to{transform:rotate(360deg)}}
@media (max-width:1120px){.ecxv54-grid{grid-template-columns:1fr}.ecxv54-flow-board{min-height:340px}}
@media (max-width:820px){.ecxv54-matrix-grid{grid-template-columns:1fr}.ecxv54-head,.ecxv54-panel-head{flex-direction:column;align-items:flex-start}.ecxv54-badge{white-space:normal}.ecxv54-flow-board{min-height:530px}.ecxv54-node-chain{left:4%;top:3%}.ecxv54-node-mempool{right:4%;left:auto;top:3%}.ecxv54-node-price{left:50%;right:auto;top:26%;transform:translateX(-50%)}.ecxv54-hub{top:50%}.ecxv54-node-blocks{left:4%;bottom:3%}.ecxv54-node-fees{right:4%;left:auto;bottom:3%}.ecxv54-node-flow{left:50%;right:auto;bottom:22%;transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.ecxv54-ribbon-marquee,.ecxv54-link,.ecxv54-hub-ring{animation:none !important}}
