/* ============================================================
   NEPSE DECODE — D3 homepage adoption layer
   Maps the homepage's key typographic elements onto the
   Editorial theme (--nd-*) tokens. Data components (tables,
   charts, tapes) keep their d2 styles so every feed keeps working.
   All colors come from tokens, so dark/light switching just works.
   ============================================================ */

/* Body text: editorial sans */
body.d2 {
  font-family: var(--nd-font-sans);
}

/* Kickers -> editorial eyebrow */
body.d2 .d2-kicker {
  font-family: var(--nd-font-sans);
  font-size: var(--nd-text-eyebrow);
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--nd-lime);
  opacity: 0.85;
  margin: 0 0 6px;
}

/* Section headings -> editorial display serif */
body.d2 .d2-card-head h2,
body.d2 .d2-tools + .d2-card-head h2 {
  font-family: var(--nd-font-display);
  font-weight: 600;
  font-size: var(--nd-text-h2);
  letter-spacing: -0.01em;
  color: var(--nd-text);
  margin: 0;
}

/* Hero index price -> terminal mono, tabular so it never jumps */
body.d2 .d2-hero-price {
  font-family: var(--nd-font-mono);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
  letter-spacing: -0.02em;
}

/* Hero label -> quiet editorial meta */
body.d2 .d2-hero-label {
  font-size: var(--nd-text-meta);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--nd-dim);
  font-weight: 600;
}

/* Tool cards: hairline borders in the editorial scale */
body.d2 .d2-card {
  border-radius: var(--nd-r-card);
}

/* Card links -> lime on hover (was volt) */
body.d2 .d2-card-link:hover {
  color: var(--nd-lime);
}

/* Search button -> lime accent */
body.d2 .d2-search button {
  background: var(--nd-lime);
  color: var(--nd-on-lime);
  border-radius: var(--nd-r-pill);
}

/* Focus visibility on homepage interactives */
body.d2 a:focus-visible,
body.d2 button:focus-visible,
body.d2 input:focus-visible {
  outline: none;
  box-shadow: var(--nd-focus-ring);
}

/* ============================================================
   Concept 03 homepage rebuild — editorial sections
   Index strip, Market Wrap feature, NEPSE index card, Newsroom.
   Real data only — no mock figures.
   ============================================================ */

.nd-home{ max-width: var(--nd-page-max); margin: 0 auto; padding: 0 var(--nd-gutter); }

/* ---------- Index strip ---------- */
.nd-istrip{ display: flex; align-items: center; gap: 12px; margin: var(--nd-s6) 0; }
.nd-istrip-track{
  display: flex; gap: var(--nd-s3); overflow-x: auto; padding: 4px 2px 12px; flex: 1; min-width: 0;
  scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
.nd-istrip-track::-webkit-scrollbar{ display: none; }
.nd-icard{
  flex: 0 0 auto; min-width: 148px; padding: var(--nd-s4) var(--nd-s4);
  background: var(--nd-panel); border: 1px solid var(--nd-border);
  border-radius: var(--nd-r-md); text-decoration: none; color: var(--nd-text);
  transition: border-color var(--nd-t-fast) var(--nd-ease), transform var(--nd-t-fast) var(--nd-ease);
}
.nd-icard:hover{ border-color: var(--nd-lime); transform: translateY(-2px); }
.nd-icard .nm{ font: 500 0.75rem var(--nd-font-sans); color: var(--nd-muted); margin-bottom: 6px; white-space: nowrap; }
.nd-icard .vl{ font: 600 1.25rem var(--nd-font-sans); font-variant-numeric: tabular-nums; color: var(--nd-text); }
[data-theme="light"] .nd-icard .vl{ color: var(--nd-text); }
.nd-icard .ch{ font: 500 0.8125rem var(--nd-font-sans); margin-top: 4px; font-variant-numeric: tabular-nums; }
.nd-icard .ch.up{ color: #16a34a; }
.nd-icard .ch.dn{ color: #dc2626; }
[data-theme="dark"] .nd-icard .ch.up{ color: var(--nd-up); }
[data-theme="dark"] .nd-icard .ch.dn{ color: var(--nd-down); }
.nd-istrip-nav{
  flex: none; width: 36px; height: 36px; border-radius: 50%;
  background: var(--nd-panel); border: 1px solid var(--nd-border);
  color: var(--nd-text); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.nd-istrip-nav:hover{ border-color: var(--nd-lime); }

/* ---------- Market Wrap + Index card ---------- */
.nd-wrapgrid{
  display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--nd-s6);
  margin: var(--nd-s8) 0; align-items: start;
}
@media (max-width: 900px){ .nd-wrapgrid{ grid-template-columns: 1fr; } }
.nd-wrapgrid > *{ min-width: 0; }

/* Wave A (2026-10-23): the index card moved into the hero band,
   so the wrap grid is single-column now; the hero numeral steps
   up to --step-5 and the card takes the e2 depth treatment.
   Flagship tables adopt the .nd-table system (nd-chrome.css) —
   tighten the movecard padding to the system's density. */
.nd-wrapgrid.solo{ grid-template-columns: 1fr; }
.nd-hero .nd-ixcard{ box-shadow: var(--nd-rim), var(--nd-e2); }
.nd-hero .nd-ixcard .big{ font-size: var(--step-5); }
.nd-movecard table.nd-table th{ padding: 10px var(--nd-s6); }
.nd-movecard table.nd-table td{ padding: 9px var(--nd-s6); }
.nd-badges{ display: flex; gap: var(--nd-s2); flex-wrap: wrap; margin-bottom: var(--nd-s4); }
.nd-badge{
  font: 600 0.6875rem var(--nd-font-mono); letter-spacing: 0.08em; text-transform: uppercase;
  padding: 6px 12px; border-radius: 6px; border: 1px solid var(--nd-border);
  color: var(--nd-muted); background: var(--nd-panel);
}
.nd-badge.lime{ color: var(--nd-lime); border-color: var(--nd-lime); }
.nd-badge.amber{ color: #fbbf24; border-color: #fbbf24; }
.nd-wraphead{
  font-family: var(--nd-font-display); font-weight: 700;
  font-size: clamp(2rem, 4vw, 3.25rem); line-height: 1.12; letter-spacing: -0.02em;
  color: var(--nd-text); margin: 0 0 var(--nd-s5);
}
.nd-wraphead .dir-up{ color: var(--nd-up); }
.nd-wraphead .dir-dn{ color: var(--nd-down); }
[data-theme="light"] .nd-wraphead .dir-up{ color: #16a34a; }
[data-theme="light"] .nd-wraphead .dir-dn{ color: var(--nd-down); }
.nd-wraphead em{ font-style: italic; color: var(--nd-lime); }
.nd-wrapbody{ font: 400 1.0625rem/1.75 var(--nd-font-sans); color: var(--nd-muted); margin: 0 0 var(--nd-s4); max-width: 62ch; }
.nd-wrapbody p{ margin: 0 0 var(--nd-s4); }
.nd-wrapbody strong{ color: var(--nd-text); font-weight: 600; }
.nd-wrapmeta{ font: 500 0.8125rem var(--nd-font-sans); color: var(--nd-dim); margin-bottom: var(--nd-s5); }
.nd-wrapmeta strong{ color: var(--nd-text); }
.nd-btn-lime{
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--nd-lime); color: #0a0c10 !important; font: 600 0.9375rem var(--nd-font-sans);
  padding: 14px 24px; border-radius: 10px; text-decoration: none; border: 0; cursor: pointer;
  transition: transform var(--nd-t-fast) var(--nd-ease), box-shadow var(--nd-t-fast) var(--nd-ease);
}
.nd-btn-lime:hover{ transform: translateY(-2px); box-shadow: 0 8px 24px rgba(184,230,46,.25); color: #0a0c10 !important; }
.nd-btn-lime:visited{ color: #0a0c10 !important; }

/* NEPSE index card */
.nd-ixcard{ background: var(--nd-panel); border: 1px solid var(--nd-border); border-radius: var(--nd-r-lg); padding: var(--nd-s6); }
.nd-ixcard .lbl{ font: 600 0.75rem var(--nd-font-mono); letter-spacing: 0.1em; color: var(--nd-muted); display: flex; justify-content: space-between; align-items: center; }
.nd-ixcard .big{ font: 700 2.5rem var(--nd-font-sans); font-variant-numeric: tabular-nums; color: var(--nd-text); margin: 8px 0 4px; }
.nd-ixcard .chg{ font: 500 0.9375rem var(--nd-font-sans); margin-bottom: var(--nd-s4); }
.nd-ixcard .chg.up{ color: #4ade80; }
.nd-ixcard .chg.dn{ color: #f87171; }
.nd-ixgrid{ display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--nd-s4); margin-bottom: var(--nd-s4); }
.nd-ixgrid .cell .k{ font: 500 0.6875rem var(--nd-font-mono); letter-spacing: 0.06em; color: var(--nd-dim); margin-bottom: 4px; }
.nd-ixgrid .cell .v{ font: 600 0.9375rem var(--nd-font-sans); color: var(--nd-text); font-variant-numeric: tabular-nums; }
.nd-ixfoot{ border-top: 1px solid var(--nd-border); padding-top: var(--nd-s4); display: flex; gap: var(--nd-s4); align-items: flex-start; }
.nd-ixfoot .note{ font: 400 0.8125rem/1.6 var(--nd-font-sans); color: var(--nd-dim); }

/* ---------- Newsroom ---------- */
.nd-newsroom{ margin: var(--nd-s8) 0; }
.nd-newsroom-head{ display: flex; justify-content: space-between; align-items: baseline; margin-bottom: var(--nd-s6); flex-wrap: wrap; gap: var(--nd-s3); }
.nd-newsroom-head h2{ font-family: var(--nd-font-display); font-weight: 700; font-size: 1.75rem; color: var(--nd-text); margin: 0; }
.nd-newsroom-head .sub{ font: 400 0.875rem var(--nd-font-sans); color: var(--nd-dim); }
.nd-newsgrid{ display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--nd-s5); }
@media (max-width: 900px){ .nd-newsgrid{ grid-template-columns: 1fr; } }
.nd-newscard{ background: var(--nd-panel); border: 1px solid var(--nd-border); border-radius: var(--nd-r-lg); padding: var(--nd-s6); }
.nd-newscard .cat{ display: flex; align-items: center; gap: 8px; font-family: var(--nd-font-display); font-weight: 600; font-size: 1.125rem; color: var(--nd-text); margin-bottom: var(--nd-s4); }
.nd-newscard .cat .dot{ width: 10px; height: 10px; border-radius: 3px; background: var(--nd-lime); flex: none; }
.nd-newsitem{ padding: var(--nd-s4) 0; border-bottom: 1px solid var(--nd-border); }
.nd-newsitem:last-child{ border-bottom: 0; }
.nd-newsitem a{ text-decoration: none; color: var(--nd-text); display: block; }
.nd-newsitem a:hover .t{ color: var(--nd-lime); }
.nd-newsitem .t{ font: 500 0.9375rem/1.55 var(--nd-font-sans); color: var(--nd-text); margin-bottom: 8px; transition: color var(--nd-t-fast); }
.nd-newsitem .m{ font: 400 0.75rem var(--nd-font-mono); color: var(--nd-dim); display: flex; gap: 10px; align-items: center; }
.nd-newsitem .m .tag{
  color: var(--nd-lime); font-weight: 700; font-size: 0.6875rem;
  letter-spacing: 0.06em; text-transform: uppercase;
  background: var(--nd-lime-soft); padding: 2px 8px; border-radius: 4px;
}

/* NEPSE card sparkline + tabs (Concept 03) */
.nd-ixcard .spark{ width: 100%; height: 120px; margin: var(--nd-s4) 0; display: block; }
.nd-ixcard .tabs{ display: flex; gap: 6px; margin-bottom: var(--nd-s5); flex-wrap: wrap; }
.nd-ixcard .tabs button{
  font: 600 0.75rem var(--nd-font-sans); padding: 8px 14px; border-radius: 8px;
  background: var(--nd-inset); border: 1px solid var(--nd-border); color: var(--nd-muted); cursor: pointer;
  transition: background var(--nd-t-fast) var(--nd-ease), color var(--nd-t-fast) var(--nd-ease), border-color var(--nd-t-fast) var(--nd-ease);
}
.nd-ixcard .tabs button:hover{ border-color: var(--nd-lime); color: var(--nd-text); }
.nd-ixcard .tabs button.on{ background: var(--nd-lime); color: #0a0c10; border-color: var(--nd-lime); }

/* Biggest moves (Concept 03) */
.nd-moves{ margin: var(--nd-s8) 0; }
.nd-moves-head{ display: flex; justify-content: space-between; align-items: baseline; margin-bottom: var(--nd-s5); flex-wrap: wrap; gap: var(--nd-s3); }
.nd-moves-head h2{ font-family: var(--nd-font-display); font-weight: 700; font-size: 1.75rem; color: var(--nd-text); margin: 0; }
.nd-moves-head .sub{ font: 400 0.875rem var(--nd-font-sans); color: var(--nd-dim); }
.nd-moves-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: var(--nd-s5); }
@media (max-width: 900px){ .nd-moves-grid{ grid-template-columns: 1fr; } }
.nd-movecard{ background: var(--nd-panel); border: 1px solid var(--nd-border); border-radius: var(--nd-r-lg); overflow: hidden; }
/* MOVERS SCROLL (2026-10-10): long symbols (e.g. NIFRAUR85/86) squeezed the
   turnover column out of view. Let the card scroll horizontally when the table
   needs more room; min-width keeps every column readable. */
.nd-movecard{ overflow-x: auto; }
.nd-movecard table{ min-width: 440px; }
.nd-movecard-head{ display: flex; justify-content: space-between; align-items: center; padding: var(--nd-s5) var(--nd-s6); border-bottom: 1px solid var(--nd-border); }
.nd-movecard-head h3{ font-family: var(--nd-font-display); font-weight: 600; font-size: 1.25rem; color: var(--nd-text); margin: 0; }
.nd-movecard-head .date{ font: 400 0.8125rem var(--nd-font-mono); color: var(--nd-dim); }
.nd-movecard table{ width: 100%; border-collapse: collapse; }
.nd-movecard th{ font: 600 0.6875rem var(--nd-font-mono); letter-spacing: 0.08em; color: var(--nd-dim); text-align: left; padding: var(--nd-s3) var(--nd-s6); border-bottom: 1px solid var(--nd-border); }
.nd-movecard th.num{ text-align: right; }
.nd-movecard td{ padding: var(--nd-s4) var(--nd-s6); border-bottom: 1px solid var(--nd-border); font: 500 0.9375rem var(--nd-font-sans); color: var(--nd-text); font-variant-numeric: tabular-nums; }
.nd-movecard td.num{ text-align: right; }
.nd-movecard tr:last-child td{ border-bottom: 0; }
.nd-movecard .sym{ font-weight: 600; }
.nd-movecard .sym a{ color: var(--nd-text); text-decoration: none; }
.nd-movecard .sym a:hover{ color: var(--nd-lime); }
.nd-movecard .up{ color: #4ade80; }
.nd-movecard .dn{ color: #f87171; }

/* NEPSE card stats + range beams (P2) */
.nd-ixstats{ margin: var(--nd-s5) 0; }
.nd-stat-block{ padding: var(--nd-s4) 0; border-bottom: 1px solid var(--nd-border); }
.nd-stat-block:last-child{ border-bottom: 0; }
.nd-stat-head{ display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 10px; }
.nd-stat-head .k{ font: 600 0.8125rem var(--nd-font-sans); color: var(--nd-text); }
.nd-stat-head .meta{ font: 400 0.75rem var(--nd-font-sans); color: var(--nd-dim); font-variant-numeric: tabular-nums; }
.nd-range{ margin-top: 4px; }
.nd-range-beam{
  position: relative; height: 8px; border-radius: 4px;
  background: linear-gradient(to right, #dc2626 0%, #f59e0b 50%, #16a34a 100%);
}
.nd-range-beam.dn{
  background: linear-gradient(to right, #16a34a 0%, #f59e0b 50%, #dc2626 100%);
}
[data-theme="dark"] .nd-range-beam{
  background: linear-gradient(to right, var(--nd-down) 0%, #fbbf24 50%, var(--nd-up) 100%);
}
[data-theme="dark"] .nd-range-beam.dn{
  background: linear-gradient(to right, var(--nd-up) 0%, #fbbf24 50%, var(--nd-down) 100%);
}
.nd-range-marker{
  position: absolute; top: -3px; width: 3px; height: 14px;
  background: var(--nd-text); border-radius: 2px; transform: translateX(-50%);
  box-shadow: 0 0 4px rgba(0,0,0,0.4);
}
.nd-range-labels{ display: flex; justify-content: space-between; margin-top: 8px; font: 400 0.8125rem var(--nd-font-sans); color: var(--nd-dim); }
.nd-range-labels strong{ color: var(--nd-text); font-weight: 600; font-variant-numeric: tabular-nums; }
.nd-breadth{ display: flex; gap: 18px; flex-wrap: wrap; font: 400 0.9375rem var(--nd-font-sans); color: var(--nd-muted); margin-top: 4px; }
.nd-breadth .up{ color: #16a34a; font-weight: 700; font-variant-numeric: tabular-nums; }
.nd-breadth .dn{ color: #dc2626; font-weight: 700; font-variant-numeric: tabular-nums; }
.nd-breadth .un{ color: var(--nd-text); font-weight: 700; font-variant-numeric: tabular-nums; }
[data-theme="dark"] .nd-breadth .up{ color: var(--nd-up); }
[data-theme="dark"] .nd-breadth .dn{ color: var(--nd-down); }
.nd-stat-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: var(--nd-s4) 0; }
.nd-stat-card{ background: var(--nd-panel); border: 1px solid var(--nd-border); border-radius: 12px; padding: 16px 18px; }
.nd-stat-card .k{ font: 600 0.6875rem var(--nd-font-mono); letter-spacing: 0.08em; text-transform: uppercase; color: var(--nd-dim); margin-bottom: 8px; }
.nd-stat-card .v{ font: 700 1.375rem var(--nd-font-sans); color: var(--nd-text); font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }
@media (max-width: 480px){ .nd-stat-grid{ gap: 8px; } .nd-stat-card{ padding: 12px 14px; } .nd-stat-card .v{ font-size: 1.125rem; } }
.nd-ixsearch{ display: flex; gap: var(--nd-s2); margin: var(--nd-s5) 0; }
.nd-ixsearch input{
  flex: 1; padding: 10px 14px; border: 1px solid var(--nd-border); border-radius: var(--nd-r-md);
  background: var(--nd-panel); color: var(--nd-text); font: 400 0.875rem var(--nd-font-sans);
}
.nd-ixsearch input::placeholder{ color: var(--nd-dim); }
.nd-ixsearch button{
  padding: 10px 20px; border: none; border-radius: var(--nd-r-md);
  background: var(--nd-lime); color: #0A0C10; font: 600 0.875rem var(--nd-font-sans); cursor: pointer;
}
.nd-ixsearch button:hover{ filter: brightness(1.1); }
.nd-ixgrid .cell .n{ font: 400 0.6875rem var(--nd-font-sans); color: var(--nd-dim); margin-top: 2px; }

/* See more links + Most active (P3+P10) */
.nd-seemore{
  font: 600 0.8125rem var(--nd-font-sans); color: var(--nd-lime); text-decoration: none;
  white-space: nowrap; margin-left: auto; padding-left: var(--nd-s3);
}
.nd-seemore:hover{ text-decoration: underline; }
.nd-movecard-head{ gap: var(--nd-s3); }
.nd-movecard-head .date{ margin-left: auto; }
.nd-movecard-head .nd-seemore{ margin-left: 0; }
.nd-active{ margin: var(--nd-s8) 0; }
.nd-active-tabs{ display: flex; gap: var(--nd-s2); margin-bottom: var(--nd-s5); flex-wrap: wrap; }
.nd-active-tabs button{
  padding: 8px 18px; border: 1px solid var(--nd-border); border-radius: 20px;
  background: var(--nd-panel); color: var(--nd-dim);
  font: 500 0.875rem var(--nd-font-sans); cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.nd-active-tabs button:hover{ border-color: var(--nd-lime); color: var(--nd-text); }
.nd-active-tabs button.on{
  background: var(--nd-lime); border-color: var(--nd-lime); color: #0A0C10; font-weight: 600;
}

/* Responsive + whitespace fixes (P21) */
@media (max-width: 768px) {
  :root{ --nd-gutter: 12px; }
  .nd-home{ padding: 0 12px; }
  .nd-istrip{ gap: 8px; margin: var(--nd-s4) 0; }
  .nd-icard{ min-width: 128px; }
  .nd-wrapgrid{ gap: var(--nd-s4); margin: var(--nd-s6) 0; }
  .nd-moves-grid{ grid-template-columns: 1fr; gap: var(--nd-s4); }
  .nd-moves{ margin: var(--nd-s6) 0; }
  .nd-active{ margin: var(--nd-s6) 0; }
  .nd-movecard td, .nd-movecard th{ padding-left: var(--nd-s3); padding-right: var(--nd-s3); }
}
@media (max-width: 480px) {
  :root{ --nd-gutter: 8px; }
  .nd-home{ padding: 0 8px; }
  .nd-moves-head h2{ font-size: 1.4rem; }
  .nd-ixcard .big{ font-size: 2rem; }
}

/* Market Pulse + Engine Verdict side-by-side (P11) */
.nd-pulse-engine{ margin: var(--nd-s8) 0; }
.nd-pe-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: var(--nd-s5); }
@media (max-width: 900px){ .nd-pe-grid{ grid-template-columns: 1fr; } }
.nd-pe-card{
  background: var(--nd-panel); border: 1px solid var(--nd-border);
  border-radius: var(--nd-r-lg); padding: var(--nd-s6);
  /* 3D card depth — pronounced */
  background: linear-gradient(165deg, var(--nd-panel) 0%, var(--nd-inset, #0D0F14) 120%);
  box-shadow: 0 2px 0 rgba(255,255,255,.08) inset, 0 -1px 0 rgba(0,0,0,.2) inset, 0 16px 40px rgba(0,0,0,.28), 0 4px 12px rgba(0,0,0,.18);
  border: 1px solid;
  border-color: rgba(255,255,255,.10) rgba(255,255,255,.06) rgba(0,0,0,.3) rgba(255,255,255,.06);
  transform: translateZ(0);
  transition: transform .18s ease, box-shadow .18s ease;
}
.nd-pe-card:hover{
  transform: translateY(-3px);
  box-shadow: 0 2px 0 rgba(255,255,255,.10) inset, 0 -1px 0 rgba(0,0,0,.2) inset, 0 22px 52px rgba(0,0,0,.34), 0 6px 16px rgba(0,0,0,.20);
}
.nd-pe-head{ display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: var(--nd-s3); gap: var(--nd-s3); }
.nd-pe-head h2{ font-family: var(--nd-font-display); font-weight: 700; font-size: 1.5rem; color: var(--nd-text); margin: 4px 0 0; }
.nd-eyebrow{
  font: 600 0.6875rem var(--nd-font-mono); letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--nd-lime);
}
.nd-pe-sub{ font: 400 0.8125rem var(--nd-font-sans); color: var(--nd-dim); margin: 0 0 var(--nd-s4); }
.nd-pulse-list{ display: flex; flex-direction: column; gap: var(--nd-s3); }
.nd-pulse-item{
  display: flex; align-items: center; gap: var(--nd-s3);
  padding: var(--nd-s3); border: 1px solid var(--nd-border); border-radius: var(--nd-r-md);
  text-decoration: none; color: var(--nd-text);
  /* 3D row depth */
  background: linear-gradient(180deg, rgba(255,255,255,.03) 0%, rgba(255,255,255,0) 100%);
  box-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 2px 8px rgba(0,0,0,.10);
  transition: border-color var(--nd-t-fast), transform .15s ease, box-shadow .15s ease;
}
.nd-pulse-item:hover{
  border-color: var(--nd-lime);
  transform: translateY(-1px);
  box-shadow: 0 1px 0 rgba(255,255,255,.06) inset, 0 4px 14px rgba(0,0,0,.16);
}
.nd-pulse-item .rank{ font: 700 0.875rem var(--nd-font-mono); color: var(--nd-dim); min-width: 20px; }
.nd-pulse-item .info{ flex: 1; min-width: 0; }
.nd-pulse-item .sym{ font: 600 0.9375rem var(--nd-font-sans); color: var(--nd-text); }
.nd-pulse-item .meta{ font: 400 0.75rem var(--nd-font-sans); color: var(--nd-dim); margin-top: 2px; }
.nd-pulse-item .meta .up{ color: #16a34a; font-weight: 600; }
.nd-pulse-item .meta .dn{ color: #dc2626; font-weight: 600; }
[data-theme="dark"] .nd-pulse-item .meta .up{ color: var(--nd-up); }
[data-theme="dark"] .nd-pulse-item .meta .dn{ color: var(--nd-down); }
.nd-engine-list{ display: flex; flex-direction: column; gap: var(--nd-s2); }
.nd-engine-item{
  display: flex; justify-content: space-between; align-items: center;
  padding: var(--nd-s3); border: 1px solid var(--nd-border); border-radius: var(--nd-r-md);
  margin-bottom: var(--nd-s2);
  /* 3D row depth */
  background: linear-gradient(180deg, rgba(255,255,255,.03) 0%, rgba(255,255,255,0) 100%);
  box-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 2px 8px rgba(0,0,0,.10);
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.nd-engine-item:hover{
  transform: translateY(-1px);
  border-color: var(--nd-lime);
  box-shadow: 0 1px 0 rgba(255,255,255,.06) inset, 0 4px 14px rgba(0,0,0,.16);
}
.nd-engine-item:last-child{ margin-bottom: 0; }
.nd-engine-item .sym{ font: 600 0.9375rem var(--nd-font-sans); color: var(--nd-text); }
.nd-engine-item .score{ font: 400 0.8125rem var(--nd-font-mono); color: var(--nd-dim); }
.nd-verdict{
  font: 600 0.75rem var(--nd-font-sans); padding: 4px 12px; border-radius: 12px;
  white-space: nowrap;
}
.nd-verdict.buy{ background: rgba(22, 163, 74, 0.15); color: #16a34a; }
.nd-verdict.exit{ background: rgba(220, 38, 38, 0.15); color: #dc2626; }
[data-theme="dark"] .nd-verdict.buy{ background: rgba(74, 222, 128, 0.15); color: var(--nd-up); }
[data-theme="dark"] .nd-verdict.exit{ background: rgba(248, 113, 113, 0.15); color: var(--nd-down); }
/* Light mode 3D — pronounced, soft shadows */
[data-theme="light"] .nd-pe-card{
  background: linear-gradient(165deg, var(--nd-panel) 0%, #f2f3f5 120%);
  box-shadow: 0 2px 0 rgba(255,255,255,.9) inset, 0 -1px 0 rgba(0,0,0,.06) inset, 0 16px 40px rgba(0,0,0,.12), 0 4px 12px rgba(0,0,0,.08);
  border-color: rgba(255,255,255,.9) rgba(0,0,0,.08) rgba(0,0,0,.12) rgba(0,0,0,.06);
}
[data-theme="light"] .nd-pe-card:hover{
  box-shadow: 0 2px 0 rgba(255,255,255,.95) inset, 0 -1px 0 rgba(0,0,0,.06) inset, 0 22px 52px rgba(0,0,0,.16), 0 6px 16px rgba(0,0,0,.10);
}
[data-theme="light"] .nd-pulse-item,
[data-theme="light"] .nd-engine-item{
  background: linear-gradient(180deg, var(--nd-panel) 0%, #fafbfc 100%);
  box-shadow: 0 1px 0 rgba(255,255,255,.7) inset, 0 2px 8px rgba(0,0,0,.06);
}
[data-theme="light"] .nd-pulse-item:hover,
[data-theme="light"] .nd-engine-item:hover{
  box-shadow: 0 1px 0 rgba(255,255,255,.8) inset, 0 4px 14px rgba(0,0,0,.10);
}
@media (max-width: 768px){
  .nd-pe-card{ padding: var(--nd-s4); }
  .nd-pe-head h2{ font-size: 1.25rem; }
}

/* ============================================================
 * Premium 3D layer — Nepse Decode home sections
 * ============================================================ */

/* News cards: floating */
.nd-newscard{
  background: linear-gradient(180deg, rgba(255,255,255,.035), rgba(255,255,255,0) 40%), var(--nd-panel);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.3);
  transition: transform .25s cubic-bezier(.22,1,.36,1), box-shadow .25s;
}
.nd-newscard:hover{
  transform: translateY(-3px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 3px 8px rgba(0,0,0,.45), 0 18px 44px rgba(0,0,0,.35);
}
.nd-newscard .cat .dot{
  box-shadow: inset 0 1px 0 rgba(255,255,255,.3), 0 1px 3px rgba(0,0,0,.4);
}
.nd-newsitem{
  border-radius: 8px;
  transition: background .18s, transform .18s;
  margin: 0 -8px; padding-left: 8px; padding-right: 8px;
}
.nd-newsitem:hover{
  background: rgba(255,255,255,.025);
  transform: translateX(3px);
}
.nd-newsitem .m .tag{
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12), 0 1px 2px rgba(0,0,0,.3);
}

/* Index card tabs: tactile */
.nd-ixcard .tabs button{
  background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,0) 50%), var(--nd-inset);
  box-shadow: inset 0 2px 5px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.03);
  transition: transform .18s cubic-bezier(.22,1,.36,1), box-shadow .18s, border-color .18s, color .18s, background .18s;
}
.nd-ixcard .tabs button:hover{
  transform: translateY(-1px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 2px 6px rgba(0,0,0,.4);
}
.nd-ixcard .tabs button:active{ transform: translateY(1px) scale(.97); }
.nd-ixcard .tabs button.on{
  background: linear-gradient(180deg, rgba(255,255,255,.2), rgba(255,255,255,0) 45%), var(--nd-lime);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35), inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 2px rgba(0,0,0,.4), 0 4px 14px rgba(0,0,0,.3);
}

/* Moves/active cards */
.nd-movecard, .nd-activecard{
  background: linear-gradient(180deg, rgba(255,255,255,.035), rgba(255,255,255,0) 40%), var(--nd-panel);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.3);
  border-radius: var(--nd-r-lg, 18px);
  transition: transform .25s cubic-bezier(.22,1,.36,1), box-shadow .25s;
}
.nd-movecard:hover, .nd-activecard:hover{
  transform: translateY(-3px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 3px 8px rgba(0,0,0,.45), 0 18px 44px rgba(0,0,0,.35);
}

@media (prefers-reduced-motion: reduce){
  .nd-newscard, .nd-newsitem, .nd-ixcard .tabs button, .nd-movecard, .nd-activecard{ transition: none; }
  .nd-newscard:hover, .nd-newsitem:hover, .nd-ixcard .tabs button:hover,
  .nd-movecard:hover, .nd-activecard:hover{ transform: none; }
}

/* ================= /nepse-decode/ teardown (2026-10-28) ================= */
/* Skip link: visually hidden until focused (never display:none). */
.skip-link{
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.skip-link:focus, .skip-link:active{
  position: fixed; left: var(--nd-gutter, 16px); top: 12px; z-index: 9999;
  width: auto; height: auto; overflow: visible; clip: auto; clip-path: none; white-space: normal;
  padding: 12px 20px; border-radius: 24px; background: var(--nd-lime); color: var(--nd-on-lime, #0A0C10);
  font: 600 0.95rem var(--nd-font-sans); text-decoration: none;
  box-shadow: 0 8px 24px rgba(0,0,0,.35);
}

/* Noscript fallback: dated static close, never mistaken for live data. */
.nd-noscript{
  background: var(--nd-panel); border: 1px solid var(--nd-border); border-left: 4px solid var(--nd-lime);
  border-radius: var(--nd-r-card); padding: var(--nd-s5) var(--nd-s6); margin: 0 0 var(--nd-s6);
}
.nd-noscript-kicker{ font: 500 0.78rem var(--nd-font-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--nd-dim); }
.nd-noscript-big{ font: 700 1.9rem var(--nd-font-display); color: var(--nd-text); margin-top: var(--nd-s2); }
.nd-noscript-big .up{ color: #16a34a; }
[data-theme="dark"] .nd-noscript-big .up{ color: var(--nd-up); }
.nd-noscript-meta{ font: 400 0.9rem var(--nd-font-sans); color: var(--nd-text); margin-top: var(--nd-s2); }
.nd-noscript-note{ font: 400 0.82rem var(--nd-font-sans); color: var(--nd-dim); margin-top: var(--nd-s2); }

/* Page-owned freshness line (same tick as the shared badge). */
.nd-freshline{
  display: flex; align-items: center; gap: 8px; margin: 0 0 var(--nd-s5);
  font: 400 0.8rem var(--nd-font-mono); color: var(--nd-dim); flex-wrap: wrap;
}
.nd-freshline-dot{ width: 8px; height: 8px; border-radius: 50%; background: var(--nd-dim); flex: none; }
.nd-freshline[data-state="live"] .nd-freshline-dot{ background: var(--nd-lime); box-shadow: 0 0 0 4px rgba(184,230,46,.18); }
.nd-freshline[data-state="closed"] .nd-freshline-dot{ background: #F59E0B; }

/* Stat strip: 3D cards, Spectral numerals. */
.nd-statstrip{ margin: var(--nd-s8) 0; }
.nd-statgrid{ display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--nd-s4); }
.nd-statcard{ padding: var(--nd-s5) var(--nd-s6); }
.nd-stat-eyebrow{ font: 500 0.75rem var(--nd-font-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--nd-dim); }
.nd-stat-num{ font: 700 1.55rem var(--nd-font-display); color: var(--nd-text); margin-top: var(--nd-s2); line-height: 1.2; }
.nd-stat-num .up{ color: #16a34a; font-size: 1rem; }
.nd-stat-num .dn{ color: #dc2626; font-size: 1rem; }
[data-theme="dark"] .nd-stat-num .up{ color: var(--nd-up); }
[data-theme="dark"] .nd-stat-num .dn{ color: var(--nd-down); }
.nd-stat-sub{ font: 400 0.82rem var(--nd-font-sans); color: var(--nd-dim); margin-top: var(--nd-s2); line-height: 1.45; }
.nd-statcard .cx-breadth{ margin-top: var(--nd-s3); }
.nd-statcard .cx-breadth-legend{ margin-top: var(--nd-s2); }

/* 48px design-rich controls below the hero (overrides, same specificity, later wins). */
.nd-istrip-nav{ width: 48px; height: 48px; font-size: 1.05rem; }
.nd-active-tabs button[role="tab"]{ min-height: 48px; padding: 12px 20px; }
.nd-seemore{
  display: inline-flex; align-items: center; min-height: 48px; padding: 0 18px;
  border: 1px solid var(--nd-border); border-radius: 24px; text-decoration: none;
}
.nd-seemore:hover{ text-decoration: none; border-color: var(--nd-lime); }
.nd-wrap-actions{ display: flex; gap: var(--nd-s3); flex-wrap: wrap; margin-top: var(--nd-s5); }
.nd-wrap-actions a{ display: inline-flex; align-items: center; min-height: 48px; padding: 0 20px; border-radius: 24px; }
.nd-wrap-actions .nd-link-more{ border: 1px solid var(--nd-border); }

/* Strip numerals: Spectral (master: big numerals are Spectral). */
.nd-icard .vl{ font-family: var(--nd-font-display); }

/* Wrap breadth bar. */
.nd-wrap-breadth{ margin-top: var(--nd-s5); }
.nd-wb-labels{ display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; font: 400 0.8rem var(--nd-font-mono); color: var(--nd-dim); margin-bottom: 6px; }

/* Sectors. */
.nd-sectors{ margin: var(--nd-s8) 0; }
.nd-sector-cards{ display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--nd-s4); }
.nd-sector-card{
  display: flex; flex-direction: column; gap: 6px; text-align: left; cursor: pointer;
  font: inherit; color: var(--nd-text); background: var(--nd-panel);
  border: 1px solid var(--nd-border); border-radius: var(--nd-r-card); padding: var(--nd-s5) var(--nd-s6);
}
.nd-sector-card:hover{ border-color: var(--nd-lime); }
.nd-sector-card.on{ border-color: var(--nd-lime); box-shadow: 0 0 0 1px var(--nd-lime); }
.nd-sector-name{ font: 700 1.08rem var(--nd-font-display); }
.nd-sector-count{ font: 400 0.82rem var(--nd-font-sans); color: var(--nd-dim); }
.nd-sector-mean{ font: 700 1rem var(--nd-font-display); }
.nd-sector-mean.up{ color: #16a34a; }
.nd-sector-mean.dn{ color: #dc2626; }
[data-theme="dark"] .nd-sector-mean.up{ color: var(--nd-up); }
[data-theme="dark"] .nd-sector-mean.dn{ color: var(--nd-down); }
.nd-sector-mean em{ font: 400 0.75rem var(--nd-font-sans); color: var(--nd-dim); }
.nd-sector-top{ display: flex; gap: 10px; flex-wrap: wrap; font: 400 0.8rem var(--nd-font-sans); color: var(--nd-dim); margin-top: 2px; }
.nd-sector-top b.up{ color: #16a34a; }
.nd-sector-top b.dn{ color: #dc2626; }
[data-theme="dark"] .nd-sector-top b.up{ color: var(--nd-up); }
[data-theme="dark"] .nd-sector-top b.dn{ color: var(--nd-down); }
.nd-sector-panel{ margin-top: var(--nd-s5); padding: var(--nd-s5) var(--nd-s6); overflow-x: auto; -webkit-overflow-scrolling: touch; }
.nd-sector-controls{ display: flex; gap: var(--nd-s4); flex-wrap: wrap; margin-bottom: var(--nd-s4); }
.nd-ctl{ display: flex; flex-direction: column; gap: 6px; }
.nd-ctl span{ font: 500 0.75rem var(--nd-font-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--nd-dim); }
.nd-ctl select, .nd-ctl input{
  height: 48px; padding: 0 14px; border: 1px solid var(--nd-border); border-radius: 10px;
  background: var(--nd-panel); color: var(--nd-text); font: 400 1rem var(--nd-font-sans); min-width: 200px;
}
.nd-ctl input[type="search"]{ min-width: 240px; }
.nd-sector-meta{ font: 400 0.85rem var(--nd-font-sans); color: var(--nd-dim); margin-bottom: var(--nd-s3); }
.nd-sector-panel .nd-table{ margin-top: var(--nd-s2); }
.nd-row-name{ display: block; font-size: 0.78rem; color: var(--nd-dim); font-weight: 400; }
.nd-live-dot{ color: var(--nd-lime); font-size: 0.7rem; }
.nd-notrade{ font: 400 0.72rem var(--nd-font-mono); color: var(--nd-dim); border: 1px solid var(--nd-border); border-radius: 99px; padding: 2px 8px; white-space: nowrap; }
.nd-verdict.hold{ background: rgba(142,152,168,.15); color: var(--nd-dim); }
.nd-pager{ display: flex; align-items: center; justify-content: center; gap: var(--nd-s4); margin-top: var(--nd-s5); flex-wrap: wrap; }
.nd-pager-prev, .nd-pager-next{
  min-height: 48px; padding: 0 22px; border-radius: 24px; cursor: pointer;
  font: 600 0.95rem var(--nd-font-sans);
}
.nd-pager-prev{ background: var(--nd-panel); border: 1px solid var(--nd-border); color: var(--nd-text); }
.nd-pager-next{ background: var(--nd-lime); border: 1px solid var(--nd-lime); color: #0A0C10; }
.nd-pager-prev:disabled, .nd-pager-next:disabled{ opacity: .45; cursor: not-allowed; }
.nd-pager-info{ font: 400 0.85rem var(--nd-font-mono); color: var(--nd-dim); }

/* Archive / forward-record footers + newsroom freshness. */
.nd-pe-foot{
  margin-top: var(--nd-s5); padding-top: var(--nd-s4); border-top: 1px solid var(--nd-border);
  display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center;
  font: 400 0.82rem var(--nd-font-sans); color: var(--nd-dim);
}
.nd-pe-link{ color: var(--nd-lime); font-weight: 600; text-decoration: none; }
.nd-pe-link:hover{ text-decoration: underline; }
.nd-pe-changes{ font-family: var(--nd-font-mono); font-size: 0.78rem; }
.nd-news-fresh{ margin-top: var(--nd-s4); font: 400 0.8rem var(--nd-font-mono); color: var(--nd-dim); }

@media (max-width: 768px){
  .nd-statgrid{ grid-template-columns: repeat(2, 1fr); }
  .nd-ctl select, .nd-ctl input, .nd-ctl input[type="search"]{ min-width: 0; width: 100%; }
  .nd-ctl{ flex: 1 1 100%; }
  /* Narrow viewports: the shared table system freezes the first column, so
     the company-name sub-line hides here — otherwise the 306px symbol column
     leaves no room for the scrolling LTP/Day %/Turnover/Verdict columns. */
  .nd-sector-panel .nd-row-name{ display: none; }
}
@media (max-width: 480px){
  .nd-statgrid{ grid-template-columns: 1fr; }
}

/* ---- R6 (2026-10-29): light-theme contrast to AA (dark untouched) ---- */
/* Base rules hardcode dark-theme greens/reds (#16a34a, #f87171, #4ade80)
   with only [data-theme="dark"] overrides, so light inherited them and
   failed on white (3.29:1 / 2.76:1 / 1.68:1). Light now uses the token
   pair --nd-up #15803D (5.02:1 on white) / --nd-down #DC2626 (4.83:1).
   Tinted-badge text darkens one step (#166534 / #B91C1C) because the
   token pair fails on its own tints (4.24-4.35:1); the darkened pair
   passes on every tint (5.10-6.41:1). Lime buttons switch to white
   text (light --nd-on-lime): #FFFFFF on #4D7C0F = 4.99:1, vs 3.92:1
   for the dark #0A0C10 text. Amber badge text #92400E = 7.09:1 on
   white, vs 1.66:1 for #fbbf24. No layout, structure, or hue change. */
[data-theme="light"] .nd-icard .ch.up,
[data-theme="light"] .nd-ixcard .chg.up,
[data-theme="light"] .nd-movecard .up,
[data-theme="light"] .nd-wraphead .dir-up,
[data-theme="light"] .nd-breadth .up,
[data-theme="light"] .nd-pulse-item .meta .up,
[data-theme="light"] .nd-stat-num .up,
[data-theme="light"] .nd-sector-mean.up,
[data-theme="light"] .nd-sector-top b.up,
[data-theme="light"] .nd-noscript-big .up { color: var(--nd-up); }
[data-theme="light"] .nd-icard .ch.dn,
[data-theme="light"] .nd-ixcard .chg.dn,
[data-theme="light"] .nd-movecard .dn,
[data-theme="light"] .nd-wraphead .dir-dn,
[data-theme="light"] .nd-sector-mean.dn,
[data-theme="light"] .nd-sector-top b.dn,
[data-theme="light"] .nd-stat-num .dn { color: var(--nd-down); }
[data-theme="light"] .nd-verdict.buy { color: #166534; }
[data-theme="light"] .nd-verdict.exit { color: #B91C1C; }
[data-theme="light"] .nd-badge.amber { color: #92400E; }
[data-theme="light"] .nd-btn-lime,
[data-theme="light"] .nd-btn-lime:hover,
[data-theme="light"] .nd-btn-lime:visited { color: #FFFFFF !important; }
[data-theme="light"] .nd-pager-next { color: #FFFFFF; }
[data-theme="light"] .nd-ixsearch button { color: #FFFFFF; }
[data-theme="light"] .nd-eyebrow { opacity: 1; }
