/* ============================================================================
   SATORI NEXUS — experimental terminal (/test)
   A from-scratch design: cinematic aurora field, glass bento surfaces,
   Space Grotesk display + JetBrains Mono data. Independent from styles.css.
   ========================================================================== */

@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;src:url('assets/fonts/inter-var.woff2') format('woff2-variations')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url('assets/fonts/jetbrains-mono-var.woff2') format('woff2-variations')}
@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:500;font-display:swap;src:url('assets/fonts/space-grotesk-500.woff2') format('woff2')}
@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:700;font-display:swap;src:url('assets/fonts/space-grotesk-700.woff2') format('woff2')}

:root{
  --nx-bg:#04050a;
  --nx-glass:rgba(255,255,255,.045);
  --nx-glass-2:rgba(255,255,255,.07);
  --nx-line:rgba(255,255,255,.09);
  --nx-line-soft:rgba(255,255,255,.05);
  --nx-text:#f2f4fb;
  --nx-soft:#aeb6cc;
  --nx-muted:#737d99;
  --nx-violet:#7c5cff;
  --nx-cyan:#22d3ee;
  --nx-emerald:#34d399;
  --nx-rose:#fb7185;
  --nx-amber:#fbbf24;
  --nx-grad:linear-gradient(100deg,var(--nx-violet),var(--nx-cyan) 55%,var(--nx-emerald));
  --nx-r:22px;
  --nx-r-sm:14px;
  --display:'Space Grotesk',Inter,system-ui,sans-serif;
  --body:Inter,system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--nx-bg);color:var(--nx-text);
  font-family:var(--body);font-size:14px;line-height:1.5;
  font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
::selection{background:rgba(124,92,255,.45);color:#fff}
*{scrollbar-width:thin;scrollbar-color:rgba(124,92,255,.5) transparent}

/* ---- cosmos backdrop ---- */
#bgStars{position:fixed;inset:0;z-index:-3;opacity:.7}
.aurora{position:fixed;z-index:-2;width:60vw;height:60vw;border-radius:50%;filter:blur(110px);opacity:.16;pointer-events:none;will-change:transform}
.aurora-1{top:-24vw;left:-12vw;background:radial-gradient(circle,#7c5cff,transparent 65%);animation:drift1 26s ease-in-out infinite alternate}
.aurora-2{top:-18vw;right:-16vw;background:radial-gradient(circle,#0ea5e9,transparent 65%);animation:drift2 32s ease-in-out infinite alternate}
.aurora-3{bottom:-30vw;left:24vw;background:radial-gradient(circle,#0d9488,transparent 66%);opacity:.12;animation:drift3 38s ease-in-out infinite alternate}
@keyframes drift1{to{transform:translate(7vw,5vh) scale(1.12)}}
@keyframes drift2{to{transform:translate(-6vw,8vh) scale(.94)}}
@keyframes drift3{to{transform:translate(-8vw,-6vh) scale(1.08)}}

/* ---- sign-in gate ---- */
.gate{position:fixed;inset:0;display:grid;place-items:center;padding:24px}
.gate[hidden],.nexus[hidden]{display:none!important}
.gate-card{max-width:430px;text-align:center;padding:42px 36px;border-radius:28px;border:1px solid var(--nx-line);background:rgba(10,12,22,.7);backdrop-filter:blur(28px)}
.gate-card h1{font-family:var(--display);font-size:30px;margin:18px 0 8px;letter-spacing:.01em}
.gate-card h1 b{background:var(--nx-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.gate-card p{color:var(--nx-soft);margin:0 0 22px}

/* ---- shared atoms ---- */
.nx-orb{display:inline-block;width:30px;height:30px;border-radius:50%;background:conic-gradient(from 210deg,#7c5cff,#22d3ee,#34d399,#7c5cff);box-shadow:0 0 24px rgba(124,92,255,.55),inset 0 0 10px rgba(0,0,0,.35);animation:orbSpin 9s linear infinite}
.nx-orb.big{width:54px;height:54px}
@keyframes orbSpin{to{transform:rotate(360deg)}}
.nx-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border-radius:999px;border:1px solid var(--nx-line);background:var(--nx-glass);color:var(--nx-text);text-decoration:none;font-weight:600;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.nx-btn:hover{transform:translateY(-2px);border-color:rgba(124,92,255,.6);box-shadow:0 12px 34px rgba(124,92,255,.22)}
.nx-btn.primary{background:var(--nx-grad);border:0;color:#06070d;font-weight:800}
.nx-pill{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 14px;border-radius:999px;border:1px solid var(--nx-line);background:var(--nx-glass);color:var(--nx-soft);font:600 12px var(--body);text-decoration:none;cursor:pointer;transition:border-color .18s ease,color .18s ease,transform .18s ease}
.nx-pill:hover{border-color:rgba(34,211,238,.55);color:var(--nx-text);transform:translateY(-1px)}
.nx-pill kbd{font:700 10px var(--mono);padding:2px 6px;border-radius:6px;background:rgba(255,255,255,.08);border:1px solid var(--nx-line)}
.nx-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;font:700 12.5px var(--mono);letter-spacing:.01em}
.nx-chip.up{background:rgba(52,211,153,.13);color:#5cf0b8;border:1px solid rgba(52,211,153,.35)}
.nx-chip.down{background:rgba(251,113,133,.12);color:#ff9bb0;border:1px solid rgba(251,113,133,.35)}
.nx-chip.flat{background:rgba(255,255,255,.06);color:var(--nx-soft);border:1px solid var(--nx-line)}

/* ---- shell ---- */
.nexus{max-width:1720px;margin:0 auto;padding:18px clamp(14px,2.4vw,36px) 26px;display:flex;flex-direction:column;gap:16px;min-height:100vh}

/* header */
.nx-top{display:flex;align-items:center;gap:18px}
.nx-logo{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--nx-text)}
.nx-logo-text{font-family:var(--display);font-size:17px;font-weight:700;letter-spacing:.04em;line-height:1.05}
.nx-logo-text b{background:var(--nx-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.nx-logo-text small{display:block;font:500 9.5px var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--nx-muted)}
.nx-markets{display:flex;gap:6px;padding:5px;border:1px solid var(--nx-line);border-radius:999px;background:rgba(8,10,18,.55);backdrop-filter:blur(18px);overflow-x:auto;scrollbar-width:none;max-width:46vw}
.nx-markets::-webkit-scrollbar{display:none}
.nx-mkt{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 13px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--nx-soft);font:700 12px var(--mono);cursor:pointer;transition:all .18s ease}
.nx-mkt img{width:16px;height:16px;border-radius:50%}
.nx-mkt:hover{color:var(--nx-text);background:rgba(255,255,255,.05)}
.nx-mkt.active{color:#06070d;background:var(--nx-grad);box-shadow:0 6px 22px rgba(34,211,238,.3)}
.nx-mkt.locked{opacity:.45;cursor:not-allowed}
.nx-top-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.nx-clock{font:600 13px var(--mono);color:var(--nx-muted);letter-spacing:.06em}
.nx-pill.ghost{background:transparent}

/* hero */
.nx-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:6px 6px 0}
.nx-sym{display:flex;align-items:center;gap:10px;font:700 13px var(--mono);letter-spacing:.16em;color:var(--nx-soft)}
.nx-coin{width:26px;height:26px;border-radius:50%;box-shadow:0 0 18px rgba(34,211,238,.35)}
.nx-live{display:inline-flex;align-items:center;gap:6px;font:800 9.5px var(--mono);letter-spacing:.22em;color:#5cf0b8}
.nx-live i{width:7px;height:7px;border-radius:50%;background:#34d399;box-shadow:0 0 12px #34d399;animation:pulse 1.6s ease-in-out infinite}
.nx-live.off{color:#ff9bb0}.nx-live.off i{background:#fb7185;box-shadow:0 0 12px #fb7185;animation:none}
@keyframes pulse{50%{opacity:.4}}
.nx-price-row{display:flex;align-items:baseline;gap:16px;margin-top:6px}
.nx-price{font-family:var(--display);font-weight:700;font-size:clamp(44px,5.6vw,76px);line-height:1;letter-spacing:-.035em;background:linear-gradient(180deg,#fff,#c7cdf0);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 60px rgba(124,92,255,.25);transition:text-shadow .4s ease}
.nx-price.glow-up{text-shadow:0 0 70px rgba(52,211,153,.5)}
.nx-price.glow-down{text-shadow:0 0 70px rgba(251,113,133,.5)}
.nx-substats{display:flex;gap:20px;margin-top:12px;flex-wrap:wrap}
.nx-substats span{font:500 12px var(--body);color:var(--nx-muted)}
.nx-substats b{display:block;font:600 14px var(--mono);color:var(--nx-soft);margin-top:2px}

.nx-hero-right{display:flex;align-items:center;gap:22px}
.nx-forecast-card{min-width:230px;padding:16px 18px;border-radius:var(--nx-r);border:1px solid rgba(124,92,255,.3);background:linear-gradient(135deg,rgba(124,92,255,.13),rgba(34,211,238,.06));backdrop-filter:blur(20px)}
.nx-forecast-card small{font:700 9.5px var(--mono);letter-spacing:.24em;color:#b9a8ff}
.nx-forecast-main{display:flex;align-items:center;gap:12px;margin:8px 0 6px}
.nx-forecast-main b{font:700 26px var(--display);letter-spacing:-.02em}
.nx-forecast-note{font:500 11.5px var(--body);color:var(--nx-muted)}
.nx-ring-wrap{position:relative;width:118px;height:118px;flex:0 0 auto}
.nx-ring{width:100%;height:100%;transform:rotate(-90deg)}
.nx-ring-track{fill:none;stroke:rgba(255,255,255,.07);stroke-width:9}
.nx-ring-arc{fill:none;stroke-width:9;stroke-linecap:round;stroke-dasharray:326.7;stroke-dashoffset:326.7;transition:stroke-dashoffset 1.1s cubic-bezier(.22,1,.36,1);filter:drop-shadow(0 0 8px rgba(34,211,238,.45))}
.nx-ring-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center}
.nx-ring-center b{font:700 23px var(--display)}
.nx-ring-center small{font:500 9.5px var(--mono);color:var(--nx-muted);letter-spacing:.06em}

/* main grid */
.nx-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;min-height:0}
.nx-card{position:relative;border:1px solid var(--nx-line);border-radius:var(--nx-r);background:linear-gradient(160deg,rgba(255,255,255,.055),rgba(255,255,255,.02));backdrop-filter:blur(22px);padding:16px 18px;box-shadow:0 24px 60px rgba(0,0,0,.35);overflow:hidden}
.nx-card:before{content:'';position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent)}
.nx-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.nx-card h2{margin:0;font:700 15px var(--display);letter-spacing:.02em}
.nx-card h3{margin:0;font:700 13px var(--display);letter-spacing:.03em}
.nx-mini-note{font:600 10.5px var(--mono);color:var(--nx-muted)}
.nx-stale{margin-left:10px;font:700 9.5px var(--mono);letter-spacing:.08em;color:var(--nx-amber);border:1px solid rgba(251,191,36,.4);border-radius:999px;padding:3px 8px;vertical-align:2px}

.nx-chart-card{display:flex;flex-direction:column;min-height:470px}
.nx-tf{display:flex;gap:4px;padding:4px;border:1px solid var(--nx-line);border-radius:999px;background:rgba(0,0,0,.25)}
.nx-tf button{height:26px;padding:0 12px;border-radius:999px;border:0;background:transparent;color:var(--nx-muted);font:700 11px var(--mono);cursor:pointer;transition:all .16s ease}
.nx-tf button:hover{color:var(--nx-text)}
.nx-tf button.active{background:var(--nx-grad);color:#06070d}
.nx-canvas-wrap{position:relative;flex:1;min-height:380px;border-radius:var(--nx-r-sm);overflow:hidden}
#nxChart{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:crosshair}
.nx-hud{position:absolute;pointer-events:none;padding:7px 11px;border-radius:12px;border:1px solid rgba(124,92,255,.4);background:rgba(8,10,20,.88);backdrop-filter:blur(10px);font:600 11px var(--mono);color:var(--nx-text);white-space:nowrap;z-index:3;transform:translate(14px,-50%)}
.nx-hud small{display:block;color:var(--nx-muted);font-size:9.5px;margin-top:2px}

/* right column */
.nx-side{display:flex;flex-direction:column;gap:16px;min-height:0}
.nx-depth{display:grid;gap:4px}
.nx-depth-row{position:relative;display:flex;justify-content:space-between;align-items:center;height:24px;padding:0 9px;border-radius:8px;font:600 11.5px var(--mono);overflow:hidden}
.nx-depth-row i{position:absolute;inset:0;border-radius:8px;transform-origin:left;transition:transform .5s cubic-bezier(.22,1,.36,1)}
.nx-depth-row.ask i{background:linear-gradient(90deg,rgba(251,113,133,.22),rgba(251,113,133,.04));transform-origin:right}
.nx-depth-row.bid i{background:linear-gradient(90deg,rgba(52,211,153,.2),rgba(52,211,153,.04))}
.nx-depth-row span{position:relative;z-index:1}
.nx-depth-row.ask span:first-child{color:#ff9bb0}
.nx-depth-row.bid span:first-child{color:#5cf0b8}
.nx-depth-row span:last-child{color:var(--nx-soft)}
.nx-depth-mid{display:flex;align-items:center;justify-content:center;gap:8px;height:34px;margin:3px 0;border-radius:10px;border:1px dashed rgba(255,255,255,.14);font:700 15px var(--mono);letter-spacing:.02em}

.nx-tape-card{flex:1;display:flex;flex-direction:column;min-height:180px}
.nx-tape{flex:1;display:flex;flex-direction:column;gap:3px;overflow:hidden}
.nx-trade{display:flex;justify-content:space-between;gap:8px;padding:5px 9px;border-radius:8px;font:600 11.5px var(--mono);background:rgba(255,255,255,.025);animation:tradeIn .4s cubic-bezier(.22,1,.36,1)}
@keyframes tradeIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.nx-trade.buy span:first-child{color:#5cf0b8}
.nx-trade.sell span:first-child{color:#ff9bb0}
.nx-trade span:nth-child(2){color:var(--nx-soft)}
.nx-trade span:last-child{color:var(--nx-muted);font-size:10px}

/* bento stats */
.nx-bento{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.nx-stat small{display:block;font:700 9.5px var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--nx-muted)}
.nx-stat b{display:block;margin:9px 0 4px;font:700 30px var(--display);letter-spacing:-.02em}
.nx-stat span{font:500 12px var(--body);color:var(--nx-soft)}
.nx-stat:nth-child(1) b{color:#b9a8ff}.nx-stat:nth-child(2) b{color:#5cf0b8}.nx-stat:nth-child(3) b{color:#7ee7ff}.nx-stat:nth-child(4) b{color:var(--nx-text)}

/* marquee */
.nx-marquee{border:1px solid var(--nx-line);border-radius:999px;background:rgba(8,10,18,.5);backdrop-filter:blur(16px);overflow:hidden;padding:7px 0}
.nx-lane{display:inline-flex;gap:10px;padding:0 12px;white-space:nowrap;animation:laneScroll 60s linear infinite;will-change:transform}
.nx-marquee:hover .nx-lane{animation-play-state:paused}
@keyframes laneScroll{to{transform:translateX(-50%)}}
.nx-mini{display:inline-flex;align-items:center;gap:9px;height:30px;padding:0 14px;border-radius:999px;border:1px solid var(--nx-line-soft);background:rgba(255,255,255,.03);font:600 11.5px var(--mono);color:var(--nx-soft);cursor:pointer;transition:border-color .18s ease}
.nx-mini:hover{border-color:rgba(34,211,238,.5)}
.nx-mini img{width:15px;height:15px;border-radius:50%}
.nx-mini b{color:var(--nx-text)}
.nx-mini .up{color:#5cf0b8}.nx-mini .down{color:#ff9bb0}

/* palette */
.nx-palette{position:fixed;inset:0;z-index:50;display:grid;place-items:start center;padding-top:14vh;background:rgba(3,4,9,.6);backdrop-filter:blur(8px)}
.nx-palette[hidden]{display:none}
.nx-palette-card{width:min(520px,calc(100vw - 32px));border-radius:20px;border:1px solid rgba(124,92,255,.35);background:rgba(10,12,22,.92);backdrop-filter:blur(30px);box-shadow:0 40px 120px rgba(0,0,0,.6);overflow:hidden;animation:palIn .22s cubic-bezier(.22,1,.36,1)}
@keyframes palIn{from{opacity:0;transform:translateY(-14px) scale(.98)}to{opacity:1;transform:none}}
.nx-palette-card input{width:100%;border:0;outline:0;background:transparent;color:var(--nx-text);padding:17px 19px;font:600 15px var(--body);border-bottom:1px solid var(--nx-line)}
.nx-palette-list{max-height:300px;overflow:auto;padding:8px}
.nx-pal-item{display:flex;align-items:center;gap:11px;width:100%;padding:11px 12px;border:0;border-radius:12px;background:transparent;color:var(--nx-soft);font:600 13px var(--mono);cursor:pointer;text-align:left}
.nx-pal-item img{width:18px;height:18px;border-radius:50%}
.nx-pal-item small{margin-left:auto;color:var(--nx-muted);font-size:10px}
.nx-pal-item:hover,.nx-pal-item.sel{background:rgba(124,92,255,.16);color:var(--nx-text)}
.nx-pal-item.locked{opacity:.4}

/* entrance choreography */
.nx-hero,.nx-grid>*,.nx-bento>*,.nx-marquee{animation:rise .7s cubic-bezier(.22,1,.36,1) both}
.nx-grid>.nx-chart-card{animation-delay:.08s}
.nx-grid>.nx-side{animation-delay:.16s}
.nx-bento>*:nth-child(1){animation-delay:.22s}
.nx-bento>*:nth-child(2){animation-delay:.28s}
.nx-bento>*:nth-child(3){animation-delay:.34s}
.nx-bento>*:nth-child(4){animation-delay:.4s}
.nx-marquee{animation-delay:.48s}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* responsive */
@media(max-width:1280px){
  .nx-grid{grid-template-columns:1fr}
  .nx-side{flex-direction:row}
  .nx-side .nx-card{flex:1}
  .nx-bento{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:860px){
  .nx-markets{display:none}
  .nx-hero{flex-direction:column;align-items:flex-start;gap:18px}
  .nx-hero-right{width:100%;justify-content:space-between}
  .nx-side{flex-direction:column}
  .nx-bento{grid-template-columns:repeat(2,1fr)}
  .nx-clock{display:none}
}
@media(max-width:560px){
  .nx-bento{grid-template-columns:1fr}
  .nx-forecast-card{min-width:0;flex:1}
  .nx-price{font-size:44px}
  .nx-top{flex-wrap:wrap}
}

/* ================= NEXUS v2 — classic information architecture ================= */
.nx-grid{display:grid;grid-template-columns:296px minmax(0,1fr) 312px;gap:16px;align-items:start}
.nx-rail{display:flex;flex-direction:column;gap:14px;min-width:0}
.nx-card{padding:14px 15px}
.nx-card-head{margin-bottom:10px}

/* network tiles */
.nx-tiles{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.nx-tile{padding:11px 12px;border-radius:14px;border:1px solid var(--nx-line-soft);background:rgba(255,255,255,.03)}
.nx-tile small{display:block;font:600 9px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--nx-muted)}
.nx-tile b{display:block;margin-top:5px;font:700 17px var(--display);letter-spacing:-.01em}

/* accuracy */
.nx-acc-hero{display:flex;align-items:baseline;gap:12px}
.nx-acc-hero b{font:700 34px var(--display);letter-spacing:-.03em;color:#5cf0b8}
.nx-acc-hero span{font:500 11px var(--body);color:var(--nx-muted);line-height:1.4}
.nx-acc-bar{height:6px;margin:11px 0 9px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden}
.nx-acc-bar i{display:block;height:100%;width:0;border-radius:999px;background:var(--nx-grad);transition:width 1s cubic-bezier(.22,1,.36,1)}
.nx-acc-detail{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.nx-acc-detail span{font:500 10.5px var(--body);color:var(--nx-muted)}
.nx-acc-detail b{display:block;font:600 12.5px var(--mono);color:var(--nx-soft);margin-top:1px}

/* open forecast */
.nx-predict-main{display:flex;align-items:center;gap:11px}
.nx-predict-main b{font:700 24px var(--display);letter-spacing:-.02em}
.nx-predict-meta{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}
.nx-predict-meta span{font:500 10.5px var(--body);color:var(--nx-muted)}
.nx-predict-meta b{display:block;font:600 12.5px var(--mono);color:var(--nx-soft);margin-top:1px}

/* prediction market */
.nx-poly a{color:var(--nx-text);text-decoration:none;font:600 12.5px var(--body);line-height:1.45;display:block}
.nx-poly a:hover{color:#9eeaff}
.nx-poly-odds{display:flex;gap:8px;margin:10px 0 4px;flex-wrap:wrap}
.nx-poly-odds span{flex:1;min-width:90px;padding:8px 10px;border-radius:12px;border:1px solid var(--nx-line-soft);background:rgba(255,255,255,.03);font:500 10px var(--body);color:var(--nx-muted)}
.nx-poly-odds b{display:block;font:700 15px var(--mono);margin-top:2px;color:var(--nx-text)}
.nx-poly-note{font:500 10.5px var(--body);color:var(--nx-muted)}
.nx-empty{font:500 11.5px var(--body);color:var(--nx-muted)}

/* chart head */
.nx-chart-card{min-height:520px}
.nx-chart-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.nx-ohlc{display:flex;gap:11px;font:600 11px var(--mono);color:var(--nx-muted);flex-wrap:wrap}
.nx-ohlc b{color:var(--nx-soft);font-weight:600}
.nx-ohlc .up{color:#5cf0b8}.nx-ohlc .down{color:#ff9bb0}
.nx-chart-tools{margin-left:auto;display:flex;align-items:center;gap:12px}
.nx-legend{display:inline-flex;align-items:center;gap:6px;font:600 9.5px var(--mono);letter-spacing:.08em;color:var(--nx-muted)}
.nx-legend i{width:14px;height:2px;border-radius:2px;display:inline-block}
.nx-legend i.ema20{background:#22d3ee}.nx-legend i.ema50{background:#fbbf24;margin-left:8px}

/* watchlist */
.nx-watch{display:flex;flex-direction:column;gap:4px;max-height:300px;overflow:auto;padding-right:2px}
.nx-watch-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:9px;padding:7px 9px;border-radius:11px;border:1px solid transparent;background:transparent;color:var(--nx-soft);font:600 11.5px var(--mono);cursor:pointer;text-align:left;transition:background .15s ease,border-color .15s ease}
.nx-watch-row img{width:17px;height:17px;border-radius:50%}
.nx-watch-row:hover{background:rgba(255,255,255,.045)}
.nx-watch-row.active{border-color:rgba(124,92,255,.5);background:rgba(124,92,255,.12)}
.nx-watch-row.locked{opacity:.45;cursor:not-allowed}
.nx-watch-row .sym{color:var(--nx-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nx-watch-row .px{color:var(--nx-soft)}
.nx-watch-row .chg{font-size:10.5px}
.nx-watch-row .chg.up{color:#5cf0b8}.nx-watch-row .chg.down{color:#ff9bb0}
.nx-watch-row .lock{font:700 8.5px var(--mono);letter-spacing:.1em;color:#c4b5fd;border:1px solid rgba(124,92,255,.4);border-radius:999px;padding:2px 6px}

/* news */
.nx-news{display:flex;flex-direction:column;gap:9px}
.nx-news a{display:block;text-decoration:none;padding:9px 11px;border-radius:12px;border:1px solid var(--nx-line-soft);background:rgba(255,255,255,.025);transition:border-color .15s ease}
.nx-news a:hover{border-color:rgba(34,211,238,.45)}
.nx-news b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font:600 11.5px var(--body);color:var(--nx-soft);line-height:1.4}
.nx-news small{display:block;margin-top:4px;font:600 9px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--nx-muted)}

/* bento freshness colors */
.nx-stat:nth-child(4) b{color:#b9a8ff}

/* responsive v2 */
@media(max-width:1480px){.nx-grid{grid-template-columns:270px minmax(0,1fr) 290px}}
@media(max-width:1280px){
  .nx-grid{grid-template-columns:minmax(0,1fr) 300px}
  .nx-rail-left{grid-column:1/-1;flex-direction:row;flex-wrap:wrap}
  .nx-rail-left .nx-card{flex:1 1 240px}
  .nx-chart-card{grid-row:1}
  .nx-rail-right{grid-row:1;grid-column:2}
}
@media(max-width:860px){
  .nx-grid{grid-template-columns:1fr}
  .nx-rail-right{grid-row:auto;grid-column:auto}
  .nx-chart-card{grid-row:auto;min-height:430px}
  .nx-rail-left{flex-direction:column}
  .nx-rail-left .nx-card{flex:1 1 auto}
}
