/* Canonical CSS owner: ladder. Historical layers consolidated 2026-08-02. */
.ladder-mini {
  display: grid;

  gap: 8px;
}

.ladder-stock {
  display: grid;

  grid-template-columns: minmax(0px, 1fr) auto;

  gap: 8px;

  padding: 9px 4px;

  border-bottom: 1px solid var(--border);

  cursor: pointer;
}

.ladder-stock:hover {
  color: var(--blue-dark);
}

.ladder-stock small {
  display: block;

  margin-top: 3px;

  overflow: hidden;

  color: var(--text-muted);

  text-overflow: ellipsis;

  white-space: nowrap;
}

.ladder-stock time {
  color: var(--text-muted);

  font-variant-numeric: tabular-nums;
}

.ladder-more:hover {
  background: var(--action-soft);
}

.ladder-more .lucide {
  width: 15px;

  height: 15px;
}

@media (max-width: 1023px) {

  .ladder-more {
    grid-column: 1 / -1;

    min-height: 38px;

    border-top: 1px solid var(--border);

    border-left: 0px;
  }
}

@media (max-width: 767px) {

  .ladder-more {
    grid-column: auto;
  }
}

.ladder-level {
  border-color: var(--border);

  border-radius: 6px;

  box-shadow: rgba(22, 34, 46, 0.04) 0px 1px 3px;
}

@media (max-width: 767px) {
  .ladder-board {
    align-items: stretch;

    padding: 12px 8px 14px;
  }
}

.ladder-board {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));

  align-items: flex-end;

  max-width: 1120px;

  margin: 0px auto;

  display: flex;

  flex-direction: column;

  gap: 0px;

  padding: 0px;

  border: 1px solid var(--border);

  border-radius: var(--card-radius);

  background: var(--surface-raised);

  box-shadow: var(--card-shadow);

  overflow: hidden;
}

.ladder-more {
  min-width: 84px;

  display: flex;

  align-items: center;

  justify-content: center;

  gap: 5px;

  background: var(--surface-muted);

  cursor: pointer;

  align-self: center;

  margin-right: 12px;

  padding: 7px 8px;

  border: 1px dashed var(--border-strong);

  border-radius: 8px;

  color: var(--text-secondary);

  font-size: var(--font-size-caption);

  white-space: nowrap;
}

.ladder-gap {
  min-height: 68px;

  background: repeating-linear-gradient(135deg, var(--surface), var(--surface) 9px, var(--surface-subtle) 9px, var(--surface-subtle) 18px);
}

.ladder-gap-note {
  color: var(--text-tertiary);

  font-size: 11.5px;
}

.ladder-insight-card {
  border: 1px solid var(--border);

  border-radius: var(--card-radius);

  background: var(--surface-raised);

  box-shadow: var(--card-shadow);

  overflow: hidden;
}

.ladder-insight-card > header h3 {
  margin: 0px;

  font-size: 13.5px;
}

.ladder-insight-card > header span {
  margin-left: auto;

  padding: 2px 6px;

  border-radius: 4px;

  background: var(--xb-gray-100);

  color: var(--text-secondary);

  font-size: 10px;
}

.ladder-insight-card > p {
  margin: 0px;

  padding: 0px 13px 12px;

  color: var(--text-secondary);

  font-size: 10.5px;

  line-height: 1.65;
}

.ladder-apex {
  display: flex;

  flex-direction: column;

  gap: 5px;

  padding: 14px 13px 9px;
}

.ladder-apex strong {
  color: var(--danger);

  font-size: 25px;
}

.ladder-apex span {
  color: var(--text-primary);

  font-size: 12px;

  font-weight: 650;

  line-height: 1.55;
}

.ladder-rate-list i {
  height: 8px;

  overflow: hidden;

  border-radius: 4px;

  background: var(--xb-gray-100);
}

.ladder-rate-list {
  display: grid;

  gap: 9px;

  padding: 12px 13px;
}

.ladder-rate-list > div {
  display: grid;

  grid-template-columns: 72px minmax(0px, 1fr) 42px;

  align-items: center;

  gap: 7px;

  color: var(--text-secondary);

  font-size: 10px;
}

.ladder-rate-list i b {
  height: 100%;

  display: block;

  border-radius: inherit;

  background: var(--primary);
}

.ladder-rate-list strong {
  color: var(--text-primary);

  text-align: right;
}

@media (max-width: 1280px) {
  .ladder-workspace {
    grid-template-columns: minmax(0px, 1fr) 260px;
  }
}

@media (max-width: 900px) {
  .ladder-insights {
    grid-template-columns: 1fr;
  }

  .ladder-more {
    grid-column: 2;

    margin: 0px 9px 9px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ladder-stock {
    animation: auto ease 0s 1 normal none running none !important;

    transition: none !important;
  }
}

.ladder-workspace {
  display: grid;

  gap: 12px;

  align-items: start;

  grid-template-columns: minmax(0px, 1fr) 320px;
}

.ladder-insights {
  display: grid;

  gap: 12px;
}

.ladder-insight-card > header {
  display: flex;

  align-items: center;

  padding: 0px 13px;

  border-bottom: 1px solid var(--border);

  min-height: 42px;
}

@media (max-width: 900px) {
  .ladder-workspace {
    grid-template-columns: 1fr;
  }
}

.redesigned-ladder-view {
  overflow: visible;

  padding: 0px;

  border: 0px;

  border-radius: 0px;

  background: transparent;

  box-shadow: none;
}

.ladder-page-head .section-title-group h2 {
  font-size: var(--font-size-page-title);

  font-weight: var(--font-weight-semibold);
}

.ladder-page-head {
  margin-bottom: 12px;
}

.ladder-page-head .section-subtitle b {
  font-weight: 400;
}

.ladder-head-actions {
  display: flex;

  align-items: center;

  gap: 8px;

  margin-left: auto;
}

.ladder-sort-segment {
  display: inline-flex;

  gap: 2px;

  padding: 2px;

  border-radius: 8px;

  background: var(--surface-muted);
}

.ladder-sort-segment button {
  min-height: 28px;

  padding: 4px 12px;

  border-radius: 6px;

  color: var(--r2-sub);

  font-size: var(--font-size-label);
}

.ladder-sort-segment button.active {
  background: var(--surface);

  color: var(--r2-ink);

  font-weight: 600;

  box-shadow: rgba(0, 0, 0, 0.08) 0px 1px 2px;
}

.market-ladder-workspace {
  display: grid;

  grid-template-columns: minmax(0px, 1fr) 320px;

  gap: 12px;

  align-items: start;
}

.market-ladder-board {
  min-width: 0px;

  overflow: hidden;

  border: 1px solid var(--r2-line);

  border-radius: var(--r2-radius);

  background: var(--surface);

  box-shadow: var(--r2-shadow);
}

.market-ladder-tier {
  display: flex;

  min-width: 0px;

  border-bottom: 1px solid var(--r2-line-soft);
}

.market-ladder-tier:last-child {
  border-bottom: 0px;
}

.market-ladder-label {
  width: 118px;

  flex: 0 0 118px;

  padding: 14px 0px 14px 16px;

  border-right: 1px solid var(--r2-line-soft);

  background: linear-gradient(90deg, color-mix(in srgb, var(--tier-color) 8%, var(--surface)), var(--surface));
}

.market-ladder-tier.is-gap .market-ladder-label {
  background: repeating-linear-gradient(45deg, var(--surface-subtle), var(--surface-subtle) 8px, var(--surface-muted) 8px, var(--surface-muted) 16px);
}

.market-ladder-level {
  display: inline-flex;

  align-items: center;

  gap: 6px;

  color: var(--tier-color);

  font-size: 15px;

  font-weight: 800;
}

.market-ladder-dot {
  width: 9px;

  height: 9px;

  display: inline-block;

  border-radius: 3px;

  background: var(--tier-color);
}

.market-ladder-count {
  margin-top: 3px;

  color: var(--r2-faint);

  font-size: 11px;
}

.market-ladder-rate {
  margin-top: 6px;

  color: var(--r2-sub);

  font-size: 10.5px;
}

.market-ladder-rate b {
  color: var(--r2-ink);

  font-weight: 700;
}

.market-ladder-stocks {
  min-width: 0px;

  flex: 1 1 0%;

  display: grid;

  grid-template-columns: repeat(auto-fill, 190px);

  place-content: flex-start start;

  gap: 8px;

  padding: 12px 14px;
}

.market-ladder-stock {
  min-width: 0px;

  width: 190px;

  display: block;

  padding: 7px 11px;

  border: 1px solid var(--r2-line);

  border-radius: 8px;

  background: var(--surface);

  color: var(--r2-ink);

  text-align: left;

  transition: border-color 150ms, box-shadow 150ms, transform 150ms;
}

.market-ladder-stock:focus-visible,
.market-ladder-stock:hover {
  border-color: var(--r2-blue-line);

  box-shadow: rgba(16, 24, 40, 0.1) 0px 3px 10px;

  outline: 0px;

  transform: translateY(-1px);
}

.market-ladder-stock-first {
  min-width: 0px;

  display: flex;

  align-items: center;

  gap: 6px;
}

.market-ladder-stock-first strong {
  min-width: 0px;

  overflow: hidden;

  text-overflow: ellipsis;

  white-space: nowrap;

  font-size: var(--font-size-table);

  font-weight: var(--font-weight-semibold);
}

.market-ladder-stock-first .stock-code {
  flex: 0 0 auto;

  color: var(--r2-faint);

  font-size: 10.5px;
}

.market-ladder-tags {
  min-width: 0px;

  display: flex;

  gap: 3px;

  margin-left: auto;
}

.market-ladder-tag {
  display: inline-block;

  padding: 1px 5px;

  border-radius: 4px;

  font-size: 10px;

  font-style: normal;

  line-height: 1.5;

  white-space: nowrap;
}

.market-ladder-tag.one-price {
  background: var(--r2-up-soft);

  color: var(--r2-up);

  font-weight: 700;
}

.market-ladder-tag.broken {
  background: var(--r2-amber-soft);

  color: var(--r2-amber);
}

.market-ladder-stock-second {
  min-width: 0px;

  display: flex;

  align-items: center;

  gap: 6px;

  margin-top: 4px;

  color: var(--r2-sub);

  font-size: 11px;
}

.market-ladder-stock-second b {
  max-width: 92px;

  overflow: hidden;

  padding: 0px 5px;

  border-radius: 4px;

  background: var(--r2-blue-soft);

  color: var(--r2-blue);

  text-overflow: ellipsis;

  white-space: nowrap;

  font-size: 11px;

  font-weight: 500;
}

.market-ladder-stock-second small {
  color: var(--r2-sub);

  font-size: 10.5px;

  font-variant-numeric: tabular-nums;

  white-space: nowrap;
}

.market-ladder-stock-second small:last-child {
  margin-left: auto;

  color: var(--r2-faint);
}

.market-ladder-gap-note {
  align-self: center;

  padding: 8px 14px;

  border: 1.5px dashed var(--r2-line);

  border-radius: 8px;

  color: var(--r2-faint);

  font-size: 12px;
}

.market-ladder-more {
  place-self: center start;

  display: inline-flex;

  align-items: center;

  gap: 5px;

  padding: 8px 16px;

  border: 1px dashed var(--r2-line);

  border-radius: 8px;

  color: var(--r2-sub);

  font-size: 12px;

  white-space: nowrap;
}

.market-ladder-more:focus-visible,
.market-ladder-more:hover {
  border-color: var(--r2-blue-line);

  color: var(--r2-blue);

  outline: 0px;
}

.market-ladder-insights {
  min-width: 0px;

  display: flex;

  flex-direction: column;

  gap: 12px;
}

.market-ladder-insight-card {
  min-width: 0px;

  overflow: hidden;

  border: 1px solid var(--r2-line);

  border-radius: var(--r2-radius);

  background: var(--surface);

  box-shadow: var(--r2-shadow);
}

.market-ladder-insight-card > header {
  min-height: 42px;

  display: flex;

  align-items: center;

  padding: 0px 14px;

  border-bottom: 1px solid var(--r2-line-soft);
}

.market-ladder-insight-card > header h3 {
  margin: 0px;

  font-size: var(--font-size-card-title);

  font-weight: var(--font-weight-semibold);
}

.market-ladder-insight-card > header span {
  margin-left: auto;

  padding: 2px 7px;

  border-radius: 5px;

  background: var(--surface-muted);

  color: var(--r2-sub);

  font-size: 11px;
}

.market-ladder-apex {
  padding: 14px 16px 8px;
}

.market-ladder-apex > div {
  display: flex;

  align-items: baseline;

  gap: 10px;
}

.market-ladder-apex strong {
  color: var(--r2-up);

  font-size: var(--font-size-metric);

  font-weight: var(--font-weight-semibold);
}

.market-ladder-apex em {
  padding: 2px 7px;

  border-radius: 5px;

  background: var(--r2-amber-soft);

  color: var(--r2-amber);

  font-size: 11.5px;

  font-style: normal;
}

.market-ladder-apex p {
  margin: 8px 0px 0px;

  color: var(--r2-ink);

  font-size: 12.5px;

  line-height: 1.9;
}

.market-ladder-apex p b {
  font-weight: 700;
}

.market-ladder-insight-card > p {
  margin: 0px;

  padding: 0px 14px 12px;

  color: var(--r2-sub);

  font-size: 11.5px;

  line-height: 1.7;
}

.market-ladder-pyramid {
  padding: 8px 16px 10px;
}

.market-ladder-pyramid-row {
  display: flex;

  align-items: center;

  gap: 8px;

  padding: 4px 0px;
}

.market-ladder-pyramid-row > span {
  width: 52px;

  color: var(--r2-sub);

  font-size: 12px;

  text-align: right;
}

.market-ladder-pyramid-row > i {
  flex: 1 1 0%;

  height: 14px;

  overflow: hidden;

  border-radius: 4px;

  background: var(--surface-muted);
}

.market-ladder-pyramid-row > i b {
  display: block;

  height: 100%;

  border-radius: 4px;

  background: var(--r2-blue);
}

.market-ladder-pyramid-row:nth-child(2) > i b {
  background: var(--r2-up);
}

.market-ladder-pyramid-row:nth-child(3) > i b {
  background: var(--r2-amber);
}

.market-ladder-pyramid-row:nth-child(4) > i b {
  background: var(--r2-down);
}

.market-ladder-pyramid-row.is-gap > i {
  background: repeating-linear-gradient(45deg, var(--border), var(--border) 4px, var(--surface-muted) 4px, var(--surface-muted) 8px);
}

.market-ladder-pyramid-row.is-gap > i b {
  background: transparent;
}

.market-ladder-pyramid-row > strong {
  width: 44px;

  color: var(--r2-ink);

  font-size: 12px;

  font-variant-numeric: tabular-nums;
}

.market-ladder-pyramid-row.is-gap > strong {
  color: var(--r2-faint);

  font-weight: 400;
}

.market-ladder-rate-list {
  padding: 6px 16px 8px;
}

.market-ladder-rate-list > div {
  display: flex;

  align-items: center;

  gap: 8px;

  padding: 5px 0px;

  font-size: 12px;
}

.market-ladder-rate-list > div > span {
  width: 112px;

  color: var(--r2-sub);
}

.market-ladder-rate-list > div > i {
  flex: 1 1 0%;

  height: 8px;

  overflow: hidden;

  border-radius: 4px;

  background: var(--surface-muted);
}

.market-ladder-rate-list > div > i b {
  display: block;

  height: 100%;

  border-radius: 4px;

  background: var(--r2-up);
}

.market-ladder-rate-list > div > i b.is-low {
  background: var(--r2-amber);
}

.market-ladder-rate-list > div > i b.is-zero {
  background: var(--border-strong);
}

.market-ladder-rate-list > div > strong {
  width: 44px;

  color: var(--r2-up);

  text-align: right;

  font-variant-numeric: tabular-nums;
}

.market-ladder-rate-list > div > strong.is-low {
  color: var(--r2-amber);
}

.market-ladder-rate-list > div > strong.is-zero {
  color: var(--r2-faint);
}

.market-ladder-source {
  display: block;

  padding: 0px 16px 12px;

  color: var(--r2-faint);

  font-size: 10.5px;
}

@media (max-width: 1020px) {
  .market-ladder-workspace {
    grid-template-columns: minmax(0px, 1fr);
  }

  .market-ladder-insights {
    display: grid;

    grid-template-columns: repeat(3, minmax(0px, 1fr));
  }
}

@media (max-width: 767px) {
  .redesigned-ladder-view {
    padding: 0px;
  }

  .ladder-page-head {
    flex-wrap: wrap;
  }

  .ladder-page-head .section-title-group {
    width: 100%;
  }

  .ladder-head-actions {
    width: 100%;

    margin-left: 0px;

    justify-content: space-between;
  }

  .market-ladder-insights {
    grid-template-columns: minmax(0px, 1fr);
  }

  .market-ladder-tier {
    display: block;
  }

  .market-ladder-label {
    width: 100%;

    padding: 10px 12px;

    border-right: 0px;

    border-bottom: 1px solid var(--r2-line-soft);
  }

  .market-ladder-level {
    font-size: 14px;
  }

  .market-ladder-rate {
    display: inline-block;

    margin: 0px 0px 0px 8px;
  }

  .market-ladder-stocks {
    padding: 9px;

    grid-template-columns: minmax(0px, 1fr);
  }

  .market-ladder-stock {
    width: 100%;

    min-width: 0px;
  }

  .market-ladder-more {
    margin: 0px 0px 0px 8px;
  }
}

.lad-grid {
  display: grid;

  grid-template-columns: minmax(0px, 1fr) 320px;

  gap: 12px;

  align-items: start;
}

@media (max-width: 1400px) {
  .lad-grid {
    grid-template-columns: minmax(0px, 1fr) 300px;
  }
}

@media (min-width: 768px) {
  :root #ladderView.active-view {
    height: auto;

    min-height: 0px;

    display: block;

    overflow: visible;
  }
}

:root[data-theme="dark"] .market-ladder-tier:nth-child(1) {
  background: var(--ladder-level-1);
}

:root[data-theme="dark"] .market-ladder-tier:nth-child(2) {
  background: var(--ladder-level-2);
}

:root[data-theme="dark"] .market-ladder-tier:nth-child(3) {
  background: var(--ladder-level-3);
}

:root[data-theme="dark"] .market-ladder-tier:nth-child(4) {
  background: var(--ladder-level-4);
}

:root[data-theme="dark"] .market-ladder-tier:nth-child(5) {
  background: var(--ladder-level-5);
}

:root[data-theme="dark"] :is(.market-ladder-stock, .rotation-day, .rotation-table-frame, .auction-table-frame-v2) {
  border-color: var(--border);

  background: var(--surface-subtle);
}

:root[data-theme="dark"] #ladderView :is(.ladder-sort-segment, .market-ladder-board) {
  border-color: var(--border);

  background: var(--surface);

  color: var(--text-primary);
}

:root[data-theme="dark"] #ladderView .ladder-sort-segment {
  background: var(--surface-muted);
}

:root[data-theme="dark"] #ladderView .ladder-sort-segment button.active {
  background: var(--surface-subtle);

  color: var(--text-primary);

  box-shadow: var(--control-shadow);
}

:root[data-theme="dark"] #ladderView .market-ladder-label {
  border-color: var(--line-soft);

  background: color-mix(in srgb, var(--tier-color) 12%, var(--surface-subtle));
}

:root[data-theme="dark"] #ladderView .market-ladder-tier.is-gap .market-ladder-label {
  background: var(--surface-muted);
}

:root[data-theme="dark"] #ladderView :is(.market-ladder-insight-card > header span, .market-ladder-pyramid-row > i, .market-ladder-rate-list > div > i) {
  background: var(--surface-muted);

  color: var(--text-secondary);
}

/* Mobile ladder becomes a readable vertical hierarchy instead of a narrow rail. */
@media (max-width: 767px) {
  #ladderView {
    padding-inline: 0;
  }

  #ladderView .ladder-page-head {
    gap: var(--space-8);
  }

  #ladderView .ladder-head-actions {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--space-8);
  }

  #ladderView .ladder-sort-segment {
    min-width: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #ladderView .market-ladder-workspace,
  #ladderView .lad-grid {
    display: flex;
    flex-direction: column;
    gap: var(--space-12);
  }

  #ladderView .market-ladder-board {
    width: 100%;
    display: flex;
    flex-direction: column;
  }

  #ladderView .market-ladder-tier {
    width: 100%;
    min-height: 0;
    display: block;
  }

  #ladderView .market-ladder-label {
    width: 100%;
    min-height: var(--mobile-touch-size);
    display: flex;
    align-items: center;
    gap: var(--space-8);
    padding: var(--space-8) var(--space-12);
    border-right: 0;
    border-bottom: 1px solid var(--border-subtle);
    writing-mode: horizontal-tb;
  }

  #ladderView .market-ladder-level {
    display: inline-flex;
    margin: 0;
    writing-mode: horizontal-tb;
  }

  #ladderView .market-ladder-rate {
    display: inline-flex;
    writing-mode: horizontal-tb;
    margin-left: auto;
  }

  #ladderView .market-ladder-stocks {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-8);
    padding: var(--space-8);
  }

  #ladderView .market-ladder-stock {
    width: 100%;
    min-width: 0;
  }

  #ladderView .market-ladder-gap-note,
  #ladderView .market-ladder-more {
    width: 100%;
    min-height: var(--mobile-touch-size);
    margin: 0;
    justify-content: center;
  }

  #ladderView .market-ladder-insights {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-12);
  }
}
