/* Unripped design (promoted from the beta on 2026-09-22). The rules it
   follows are in .claude/skills/unripped-ui-ux/SKILL.md. */
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400 900; font-stretch: 62% 125%; font-display: swap; src: url('/fonts/Archivo-var-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* Beta design (2026-09-22). Served only on the beta site, after app.css.
   Rules the whole beta follows:
   1. One main thing per page, visibly bigger than the rest.
   2. Light mode on a cool grey; dark stays navy and amber (build.mjs swaps
      the tokens).
   3. Amber means something, never decoration.
   4. Sentence case, no arrows on links, nothing under 12px (build.mjs).
   5. One sign-in ask per screen.
   6. Prices read as a sentence: "$69.99 at Target, now $171.80".
   Brand fonts stay: Unbounded for the name and the one big headline,
   Manrope for everything else. */

/* --- The beta flag ------------------------------------------------------ */
.beta-flag {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 4px 10px;
  padding: 5px 16px; font-size: 12.5px; line-height: 1.4; font-weight: 600;
  background: #FFB224; color: #0B1026;
}
.beta-flag a { color: inherit; font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }

/* --- Home header: the name, the tabs, sign-in. Nothing else. -------------- */
body.b-home header .sub,
body.b-home header #catUpdated,
body.b-home header .header-meta,
body.b-home #legendBlock { display: none !important; }
@media (min-width: 641px) {
  body.b-home header { display: flex; flex-wrap: wrap; align-items: center; column-gap: 32px; padding-top: 14px; padding-bottom: 6px; }
  body.b-home header .wordmark { margin: 0; }
  body.b-home header .site-switch { margin: 0; }
}

/* --- Home: tonight's drop is the page ------------------------------------ */
#dropTonight:not(.drop-folded) {
  background: none; border: 0; border-radius: 0; padding: 0;
  margin: 18px 0 40px;
}
#dropTonight:not(.drop-folded) .drop-tonight-head {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 12px 40px;
}
#dropTonight:not(.drop-folded) .drop-tonight-head h2 {
  grid-column: 1; grid-row: 1 / span 2;
  max-width: 13ch;
  font-family: 'Unbounded', sans-serif; font-weight: 800;
  font-size: clamp(34px, 6.4vw, 76px); line-height: 0.98; letter-spacing: -0.045em;
  text-wrap: balance;
}
#dropTonight:not(.drop-folded) .drop-tonight-when {
  grid-column: 2; grid-row: 1; max-width: 30ch;
  font-size: 17px; line-height: 1.4; color: var(--text);
}
#dropTonight:not(.drop-folded) .drop-tonight-when strong { font-weight: 700; }
.b-count { display: block; margin-top: 4px; font-size: 28px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.1; font-variant-numeric: tabular-nums; }
#dropTonight:not(.drop-folded) .drop-all-link,
#dropTonight:not(.drop-folded) .drop-fold-btn { grid-column: 2; grid-row: 2; justify-self: start; margin: 0; font-size: 14px; }
#dropTonight:not(.drop-folded) .drop-fold-btn { justify-self: end; }
#dropTonight:not(.drop-folded) .drop-tonight-via { margin-top: 18px; font-size: 15px; line-height: 1.5; color: var(--text-dim); max-width: 68ch; }
#dropTonight:not(.drop-folded) .drop-tonight-via .snipes-mini { margin-top: 3px; }
#dropTonight .drop-tonight-via a { color: var(--text); }

/* Sort toggle on the left, "Add all" on the right. */
.b-railbar { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 26px 0 10px; }
.b-seg { display: inline-flex; padding: 3px; border: 1.5px solid var(--border-strong); border-radius: 999px; }
.b-seg button {
  all: unset; cursor: pointer; padding: 7px 15px; border-radius: 999px;
  font-size: 14px; font-weight: 600; color: var(--text-dim);
}
.b-seg button[aria-pressed="true"] { background: var(--text); color: var(--bg); }
.b-seg button:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
.b-railbar #dropAddAll { flex: none; width: auto; margin: 0 0 0 auto; min-height: 40px; padding: 0 18px; font-size: 14px; font-weight: 700; border-radius: 999px; }
.b-railbar #dropAddAll:not(.tracked):not([disabled]) { background: var(--text); color: var(--bg); border-color: var(--text); }
#dropTonight .drop-tonight-actions:empty { display: none; }

/* The rows: one surface, the numbers in columns. */
#dropTonight .drop-tonight-list {
  display: block; margin: 0;
  background: var(--surface); border: 1px solid var(--border); border-radius: 10px; overflow: hidden;
}
#dropTonight .drop-row {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr) 250px 110px auto;
  align-items: center; column-gap: 18px; row-gap: 0;
  padding: 14px 20px; font-size: 16px; line-height: 1.3;
}
#dropTonight .drop-row:first-child { border-top: 0; }
#dropTonight .drop-name { font-weight: 700; }
.b-stock-m { display: none; }
.b-mult { font-weight: 800; font-size: 24px; letter-spacing: -0.03em; font-variant-numeric: tabular-nums; }
.b-mult.b-lo { color: var(--text-dim); font-size: 20px; }
.b-mult.b-none { color: var(--text-faint); font-weight: 600; font-size: 18px; }
/* Amber only where the market pays double or more. */
.b-mult.b-hi, .b-card-mult.b-hi { color: #FFB224; }
:root[data-theme="light"] .b-mult.b-hi, :root[data-theme="light"] .b-card-mult.b-hi { color: #9A5B00; }
@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) .b-mult.b-hi, :root:not([data-theme="dark"]) .b-card-mult.b-hi { color: #9A5B00; } }
.b-price { text-align: right; white-space: nowrap; font-size: 15px; color: var(--text-dim); font-variant-numeric: tabular-nums; }
.b-price b { color: var(--text); font-weight: 800; font-size: 17px; }
#dropTonight .drop-stock { font-family: inherit; text-align: right; white-space: nowrap; font-size: 14px; color: var(--text); }
#dropTonight .drop-stock b { display: block; font-size: 16px; font-weight: 800; }
#dropTonight .drop-stock span { display: block; font-size: 12.5px; color: var(--text-faint); }
#dropTonight .drop-row .drop-add { min-width: 92px; min-height: 38px; padding: 0 14px; font-size: 14px; font-weight: 700; border-radius: 999px; }
/* Every row shows; there is no "Show all" here. */
#dropTonight.drop-capped .drop-tonight-list > li { display: grid !important; }
#dropTonight .drop-more { display: none !important; }
#dropTonight .drop-nudge { border-top: 0; padding-top: 0; margin-top: 14px; font-size: 14px; }

/* Folded (gone live, or all on the list): one line, as on the live site. */
#dropTonight.drop-folded .drop-tonight-list, #dropTonight.drop-folded .drop-tonight-actions,
#dropTonight.drop-folded .drop-tonight-via, #dropTonight.drop-folded .drop-nudge,
#dropTonight.drop-folded .b-railbar { display: none !important; }

@media (max-width: 900px) {
  #dropTonight .drop-row {
    grid-template-columns: 64px minmax(0, 1fr) auto;
    grid-template-areas: "m n a" "m p a";
    column-gap: 14px; row-gap: 3px; padding: 14px 16px;
  }
  #dropTonight .drop-row .b-mult { grid-area: m; }
  #dropTonight .drop-row .drop-name { grid-area: n; }
  #dropTonight .drop-row .b-price { grid-area: p; text-align: left; white-space: normal; }
  #dropTonight .drop-row .drop-stock { display: none; }
  #dropTonight .drop-row .drop-add { grid-area: a; min-width: 72px; }
  .b-stock-m { display: block; margin-top: 2px; font-size: 13px; font-weight: 500; color: var(--text-dim); }
}
@media (max-width: 640px) {
  #dropTonight:not(.drop-folded) { margin: 6px 0 28px; }
  #dropTonight:not(.drop-folded) .drop-tonight-head { grid-template-columns: 1fr auto; }
  #dropTonight:not(.drop-folded) .drop-tonight-head h2 { grid-column: 1 / -1; grid-row: 1; max-width: none; font-size: clamp(30px, 9vw, 40px); }
  #dropTonight:not(.drop-folded) .drop-tonight-when { grid-column: 1 / -1; grid-row: 2; max-width: none; font-size: 16px; }
  .b-count { display: block; margin: 2px 0 0; font-size: 22px; font-weight: 800; }
  #dropTonight:not(.drop-folded) .drop-all-link { grid-column: 1; grid-row: 3; }
  #dropTonight:not(.drop-folded) .drop-fold-btn { grid-column: 2; grid-row: 3; }
  #dropTonight:not(.drop-folded) .drop-tonight-via { font-size: 14px; margin-top: 12px; }
  .b-railbar { margin-top: 18px; }
  .b-seg { width: 100%; box-sizing: border-box; }
  .b-seg button { flex: 1; text-align: center; }
  .b-railbar #dropAddAll { width: 100%; margin: 0; }
  #dropTonight .drop-row { grid-template-columns: 52px minmax(0, 1fr) auto; column-gap: 12px; padding: 13px 14px; font-size: 15px; }
  .b-mult { font-size: 20px; }
  .b-mult.b-lo { font-size: 17px; }
  .b-price { font-size: 14px; }
  .b-price b { font-size: 15px; }
  #dropTonight .drop-row .drop-add { min-width: 64px; padding: 0 10px; }
}

/* Searching or filtering: the drop steps aside, as the rest of home does. */
body.beta-filtering #dropTonight { display: none; }

/* --- The catalog's heading ------------------------------------------------ */
/* No top rule (2026-09-26): it sat just under the header's own line, a second line no other page has. */
.b-cat-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; margin: 8px 0 14px; padding-top: 18px; }
.b-cat-head h2 { margin: 0; font-family: 'Manrope', sans-serif; font-size: 30px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.05; }
.b-cat-head p { margin: 0; font-size: 15px; color: var(--text-dim); }
body.beta-filtering .b-cat-head { padding-top: 10px; border-top: 0; }
@media (max-width: 640px) { .b-cat-head h2 { font-size: 24px; } .b-cat-head p { font-size: 14px; } }

/* --- One sign-in ask per screen ------------------------------------------ */
body:has(#dropNudge:not([hidden])) #gateBar { display: none !important; }

/* --- Catalog cards (beta/app-card.js) ------------------------------------- */
/* A grid of boxes on every width: two across on a phone, as in the mockup. */
#listRoot.simple-grid { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)) !important; gap: 16px !important; }
@media (max-width: 640px) { #listRoot.simple-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px !important; } }
#listRoot .s-card.b-card {
  display: flex !important; flex-direction: column; gap: 8px;
  grid-template-areas: none; padding: 12px !important;
  border: 1px solid var(--border) !important; border-radius: 10px; box-shadow: none;
}
#listRoot .s-card.b-card:hover { border-color: var(--border-strong) !important; box-shadow: none; }
#listRoot .b-card .b-art { width: auto !important; position: relative; }
#listRoot .b-card .b-art img, #listRoot .b-card .b-art .s-thumb-empty { border-radius: 6px; border: 0; background: #fff; }
/* The flag top left, one line, readable. */
#listRoot .b-card .b-art .s-drop-badge, #listRoot .b-card .b-art .s-new-badge,
#listRoot .b-card .b-art .s-soon-badge, #listRoot .b-card .b-art .s-listed-badge, #listRoot .b-card .b-art .s-status-badge {
  position: absolute; top: 8px; left: 8px; right: auto; z-index: 2;
  font-family: 'Manrope', sans-serif; font-size: 12px !important; font-weight: 700; letter-spacing: 0; text-transform: none;
  padding: 3px 7px !important; border-radius: 4px; background: #0B1026 !important; color: #fff !important;
  box-shadow: none !important; animation: none !important; white-space: nowrap; max-width: calc(100% - 16px); overflow: hidden; text-overflow: ellipsis;
}
#listRoot .b-card .b-art .s-badge-stack { top: 8px; left: 8px; }
/* The multiple bottom right, on its own tag. */
.b-card-mult {
  position: absolute; right: 8px; bottom: 8px; z-index: 2;
  padding: 4px 8px; border-radius: 6px;
  background: var(--surface); color: var(--text-dim);
  box-shadow: 0 0 0 1px var(--border);
  font-size: 18px; font-weight: 800; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; line-height: 1.1;
}
.b-card-mult.b-hi { font-size: 20px; }
#listRoot .b-card .b-name {
  font-size: 15.5px; font-weight: 700; line-height: 1.25; color: var(--text);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
#listRoot .b-card .b-money { display: flex; flex-direction: column; gap: 1px; font-size: 14px; color: var(--text-dim); font-variant-numeric: tabular-nums; }
#listRoot .b-card .b-sells b { font-size: 20px; font-weight: 800; color: var(--text); letter-spacing: -0.01em; }
#listRoot .b-card .b-sells-none { color: var(--text-faint); }
#listRoot .b-card .b-tr { min-height: 18px; }
.b-trend { all: unset; cursor: pointer; font-size: 13px; font-weight: 600; color: var(--text-dim); text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; }
.b-trend.up { color: var(--up); } .b-trend.down { color: var(--down); }
.b-trend:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; border-radius: 3px; }
#listRoot .b-card .b-actions { display: flex; gap: 6px; margin-top: auto; }
#listRoot .b-card .b-actions .track-btn { flex: 1; margin: 0; min-height: 38px; border-radius: 999px; font-weight: 700; }
#listRoot .b-card .b-actions .s-target-link { flex: none; width: 38px; min-width: 38px; min-height: 38px; border-radius: 999px; }
@media (max-width: 640px) {
  #listRoot .s-card.b-card { padding: 10px !important; gap: 6px; }
  #listRoot .b-card .b-name { font-size: 14px; }
  #listRoot .b-card .b-money { font-size: 13px; }
  #listRoot .b-card .b-sells b { font-size: 17px; }
  .b-card-mult { font-size: 15px; padding: 3px 6px; right: 6px; bottom: 6px; }
  .b-card-mult.b-hi { font-size: 16px; }
  #listRoot .b-card .b-art .s-drop-badge, #listRoot .b-card .b-art .s-new-badge,
  #listRoot .b-card .b-art .s-soon-badge, #listRoot .b-card .b-art .s-listed-badge, #listRoot .b-card .b-art .s-status-badge { top: 6px; left: 6px; font-size: 12px !important; padding: 2px 6px !important; }
  #listRoot .b-card .b-actions .s-target-link { display: none; }
}
/* Presale date and "Just listed" sit side by side, top left. */
#listRoot .b-card .b-art .s-badge-stack { position: absolute; top: 8px; left: 8px; z-index: 2; display: flex; flex-wrap: wrap; gap: 4px; max-width: calc(100% - 16px); }
#listRoot .b-card .b-art .s-badge-stack > span { position: static !important; }
#listRoot .b-card .b-art .s-listed-badge { background: #FFB224 !important; color: #0B1026 !important; }
/* Phones: left-aligned like everywhere else, and "+ Add" fills the card. */
#listRoot .s-card.b-card { align-items: stretch !important; }
#listRoot .s-card.b-card, #listRoot .s-card.b-card * { text-align: left; }
#listRoot .b-card .b-art .s-badge-stack > span { max-width: none; }
#listRoot .s-card.b-card .s-actions .track-btn { width: auto !important; max-width: none !important; flex: 1 1 auto !important; text-align: center; }
#listRoot .s-card.b-card .s-actions { align-self: stretch !important; }

/* ===== Round 3 (2026-09-22): the mockup's stickers, labels and cards ===== */
/* Archivo, narrow, for the big headline and the numbers on the stickers only:
   a price tag's type, next to the shop sign's. Everything else stays brand. */
#dropTonight:not(.drop-folded) .drop-tonight-head h2 {
  font-family: 'Archivo', 'Manrope', sans-serif; font-weight: 800; font-stretch: 68%;
  font-size: clamp(48px, 8.4vw, 108px); line-height: 0.88; letter-spacing: -0.01em; max-width: 14ch;
}
.b-count { font-family: 'Archivo', 'Manrope', sans-serif; font-stretch: 75%; font-size: 30px; }

/* The sticker: yellow and tilted at 2x or more; flat and outlined below. */
.b-sticker, .b-mult.b-sticker {
  justify-self: start; display: inline-block;
  font-family: 'Archivo', 'Manrope', sans-serif; font-weight: 850; font-stretch: 70%;
  font-size: 30px; line-height: 1; letter-spacing: 0;
  padding: 8px 10px 7px; min-width: 66px; box-sizing: border-box; text-align: center;
  border-radius: 5px; transform: rotate(-3deg);
  background: #FFC23D; color: #0B1026;
}
.b-sticker.b-low, .b-mult.b-sticker.b-low {
  background: var(--surface); color: var(--text-dim); transform: none;
  box-shadow: inset 0 0 0 1.5px var(--border-strong); font-size: 24px;
}
.b-mult.b-sticker.b-none { font-size: 20px; }
/* On a card: bottom right of the box art. */
#listRoot .b-card .b-art .b-sticker { position: absolute; right: 8px; bottom: 8px; z-index: 2; font-size: 24px; min-width: 56px; }
#listRoot .b-card .b-art .b-sticker.b-low { font-size: 20px; }

/* One short dark label, top left. */
.b-flag {
  position: absolute; left: 8px; top: 8px; z-index: 2;
  font-size: 12px; font-weight: 700; line-height: 1.3; white-space: nowrap;
  max-width: calc(100% - 16px); overflow: hidden; text-overflow: ellipsis;
  padding: 3px 7px; border-radius: 3px; background: #0B1026; color: #fff;
}

/* Tighter cards: the price is the big thing, the rest is quiet. */
#listRoot .s-card.b-card { gap: 8px; padding: 12px !important; border-radius: 6px; }
#listRoot .b-card .b-art img, #listRoot .b-card .b-art .s-thumb-empty { border-radius: 3px; background: #F5F5F5; padding: 8%; box-sizing: border-box; }
#listRoot .b-card .b-name { font-size: 15.5px; font-weight: 650; margin-top: 2px; }
#listRoot .b-card .b-money { font-size: 14px; gap: 0; }
#listRoot .b-card .b-sells b { font-size: 19px; font-weight: 800; }
#listRoot .b-card .b-target { font-size: 14px; }
#listRoot .b-card .b-tr { min-height: 0; }
.b-trend { font-size: 13px; font-weight: 500; text-decoration: none; }
.b-trend:hover { text-decoration: underline; }
/* A plain outlined button, text colour, full width. */
#listRoot .s-card.b-card .s-actions .track-btn,
#dropTonight .drop-row .drop-add {
  background: transparent !important; color: var(--text) !important;
  border: 1.5px solid var(--text) !important; border-radius: 999px; font-weight: 650;
}
#listRoot .s-card.b-card .s-actions .track-btn.tracked,
#dropTonight .drop-row .drop-add.tracked { background: var(--text) !important; color: var(--bg) !important; }
#listRoot .b-card .b-actions .s-target-link { display: none; }

@media (max-width: 900px) {
  #dropTonight .drop-row { grid-template-columns: 78px minmax(0, 1fr) auto; }
}
@media (max-width: 640px) {
  #dropTonight:not(.drop-folded) .drop-tonight-head h2 { font-size: clamp(44px, 13vw, 60px); }
  .b-count { font-size: 26px; }
  .b-sticker, .b-mult.b-sticker { font-size: 24px; min-width: 58px; }
  .b-sticker.b-low, .b-mult.b-sticker.b-low { font-size: 20px; }
  #dropTonight .drop-row { grid-template-columns: 62px minmax(0, 1fr) auto; }
  #listRoot .b-card .b-art .b-sticker { font-size: 20px; min-width: 48px; right: 6px; bottom: 6px; padding: 6px 7px 5px; }
  #listRoot .b-card .b-art .b-sticker.b-low { font-size: 17px; }
  .b-flag { left: 6px; top: 6px; font-size: 12px; padding: 2px 6px; }
  #listRoot .b-card .b-name { font-size: 14.5px; }
  #listRoot .b-card .b-sells b { font-size: 17px; }
  #listRoot .b-card .b-money, #listRoot .b-card .b-target { font-size: 13px; }
}
@media (max-width: 400px) {
  #dropTonight .drop-row { grid-template-columns: auto minmax(0, 1fr) auto; column-gap: 10px; padding: 12px; }
  .b-sticker, .b-mult.b-sticker { font-size: 20px; min-width: 0; padding: 6px 7px 5px; }
  .b-sticker.b-low, .b-mult.b-sticker.b-low { font-size: 18px; }
}

/* ===== Round 4 (2026-09-22): one size down everywhere (owner: "too big") ===== */
#dropTonight:not(.drop-folded) .drop-tonight-head h2 { font-size: clamp(40px, 6vw, 76px); max-width: 18ch; }
#dropTonight:not(.drop-folded) .drop-tonight-when { font-size: 15px; }
.b-count { font-size: 24px; }
#dropTonight:not(.drop-folded) .drop-tonight-via { font-size: 14px; margin-top: 12px; }
.b-railbar { margin: 18px 0 8px; }
.b-seg button { padding: 5px 13px; font-size: 13px; }
.b-railbar #dropAddAll { min-height: 34px; font-size: 13px; padding: 0 14px; }
#dropTonight .drop-row { padding: 9px 16px; font-size: 14.5px; column-gap: 14px; grid-template-columns: 64px minmax(0, 1fr) 230px 96px auto; }
.b-sticker, .b-mult.b-sticker { font-size: 22px; min-width: 52px; padding: 5px 7px 4px; }
.b-sticker.b-low, .b-mult.b-sticker.b-low { font-size: 18px; }
.b-price { font-size: 14px; } .b-price b { font-size: 15px; }
#dropTonight .drop-stock b { font-size: 14px; }
#dropTonight .drop-stock span { font-size: 12px; }
#dropTonight .drop-row .drop-add { min-height: 32px; min-width: 76px; font-size: 13px; padding: 0 12px; }
.b-cat-head { padding-top: 12px; }
.b-cat-head h2 { font-size: 24px; }
.b-cat-head p { font-size: 14px; }
#listRoot.simple-grid { grid-template-columns: repeat(auto-fill, minmax(176px, 1fr)) !important; gap: 12px !important; }
#listRoot .s-card.b-card { padding: 10px !important; gap: 6px; }
#listRoot .b-card .b-art .b-sticker { font-size: 19px; min-width: 44px; padding: 4px 6px 3px; }
#listRoot .b-card .b-art .b-sticker.b-low { font-size: 16px; }
#listRoot .b-card .b-name { font-size: 14px; font-weight: 650; }
#listRoot .b-card .b-money, #listRoot .b-card .b-target { font-size: 13px; }
#listRoot .b-card .b-sells b { font-size: 17px; }
.b-trend { font-size: 12.5px; }
.b-flag { font-size: 12px; padding: 2px 6px; }
#listRoot .s-card.b-card .s-actions .track-btn { min-height: 32px; font-size: 13px; }
@media (max-width: 900px) {
  #dropTonight .drop-row { grid-template-columns: 62px minmax(0, 1fr) auto; padding: 10px 14px; }
}
@media (max-width: 640px) {
  #dropTonight:not(.drop-folded) .drop-tonight-head h2 { font-size: clamp(34px, 10vw, 44px); }
  .b-count { font-size: 20px; }
  #dropTonight:not(.drop-folded) .drop-tonight-when { font-size: 14px; }
  #dropTonight:not(.drop-folded) .drop-tonight-via { font-size: 13px; }
  .b-seg button { padding: 6px 10px; }
  #dropTonight .drop-row { grid-template-columns: 52px minmax(0, 1fr) auto; padding: 10px 12px; font-size: 14px; column-gap: 10px; }
  .b-sticker, .b-mult.b-sticker { font-size: 19px; min-width: 46px; padding: 4px 6px 3px; }
  .b-sticker.b-low, .b-mult.b-sticker.b-low { font-size: 16px; }
  .b-price { font-size: 13px; } .b-price b { font-size: 14px; }
  .b-stock-m { font-size: 12.5px; }
  #dropTonight .drop-row .drop-add { min-width: 60px; min-height: 34px; }
  .b-cat-head h2 { font-size: 21px; }
  #listRoot.simple-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px !important; }
  #listRoot .s-card.b-card { padding: 8px !important; gap: 5px; }
  #listRoot .b-card .b-art .b-sticker { font-size: 16px; min-width: 38px; right: 5px; bottom: 5px; }
  #listRoot .b-card .b-art .b-sticker.b-low { font-size: 14px; }
  .b-flag { left: 5px; top: 5px; }
  #listRoot .b-card .b-name { font-size: 13.5px; }
  #listRoot .b-card .b-sells b { font-size: 16px; }
  #listRoot .b-card .b-money, #listRoot .b-card .b-target { font-size: 12.5px; }
}

/* ===== Round 5 (2026-09-22): the products start on the first screen ===== */
/* A page heading, not a poster. The countdown sits under it on one line. */
#dropTonight:not(.drop-folded) { margin: 10px 0 32px; }
#dropTonight:not(.drop-folded) .drop-tonight-head { grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 4px 16px; }
#dropTonight:not(.drop-folded) .drop-tonight-head h2 { grid-row: 1; grid-column: 1; max-width: none; font-size: clamp(26px, 3vw, 38px); line-height: 1.05; }
#dropTonight:not(.drop-folded) .drop-tonight-when { grid-row: 2; grid-column: 1 / -1; max-width: none; font-size: 14.5px; }
.b-count { display: inline-block; margin: 0 0 0 8px; font-size: inherit; font-family: inherit; font-stretch: 100%; font-weight: 800; white-space: nowrap; }
#dropTonight:not(.drop-folded) .drop-all-link { grid-row: 1; grid-column: 2; font-size: 13.5px; justify-self: end; align-self: baseline; }
/* Fold stays reachable, as quiet text at the end of the sentence. */
#dropTonight:not(.drop-folded) .drop-fold-btn { grid-row: 2; grid-column: 2; justify-self: end; align-self: baseline; font-size: 13px; min-height: 0; }
#dropTonight:not(.drop-folded) .drop-tonight-via { margin-top: 8px; font-size: 13.5px; max-width: 72ch; }
/* Sort is a line of text, not a control that needs its own row. */
.b-railbar { margin: 12px 0 6px; gap: 8px 14px; }
.b-seg { border: 0; padding: 0; gap: 4px; align-items: center; }
.b-seg::before { content: 'Sort'; font-size: 13px; color: var(--text-faint); margin-right: 6px; }
.b-seg button { padding: 8px 6px; min-height: 36px; box-sizing: border-box; border-radius: 4px; font-size: 13.5px; color: var(--text-dim); background: none; text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; }
.b-seg button[aria-pressed="true"] { background: none; color: var(--text); font-weight: 700; text-decoration: none; }
.b-railbar #dropAddAll { min-height: 36px; }
/* On a phone "+ Add all" comes after the list (beta.js moves it there). */
#dropTonight .drop-tonight-actions { margin-top: 10px; }
#dropTonight .drop-tonight-actions:empty { display: none; }
#dropTonight .drop-tonight-actions .track-btn { width: 100%; min-height: 42px; font-size: 14px; font-weight: 700; border-radius: 999px; }
#dropTonight .drop-tonight-actions .track-btn:not(.tracked):not([disabled]) { background: var(--text); color: var(--bg); border-color: var(--text); }
@media (max-width: 640px) {
  #dropTonight:not(.drop-folded) { margin: 4px 0 24px; }
  #dropTonight:not(.drop-folded) .drop-tonight-head h2 { font-size: 27px; }
  #dropTonight:not(.drop-folded) .drop-tonight-when { font-size: 14px; }
  #dropTonight:not(.drop-folded) .drop-tonight-via { font-size: 13px; }
  .b-seg { width: auto; }
  .b-seg button { flex: none; text-align: left; }
}

/* ===== Round 6 (2026-09-22): the drop rows in two columns on wide screens ===== */
@media (min-width: 1100px) {
  #dropTonight .drop-tonight-list { display: grid !important; grid-template-columns: 1fr 1fr; }
  #dropTonight .drop-row {
    grid-template-columns: 60px minmax(0, 1fr) auto;
    grid-template-areas: "m n a" "m p a";
    row-gap: 2px; padding: 10px 14px;
  }
  #dropTonight .drop-row:nth-child(odd) { border-right: 1px solid var(--border); }
  #dropTonight .drop-row:nth-child(2) { border-top: 0; }
  #dropTonight .drop-row .b-mult { grid-area: m; }
  #dropTonight .drop-row .drop-name { grid-area: n; }
  #dropTonight .drop-row .b-price { grid-area: p; text-align: left; white-space: normal; }
  #dropTonight .drop-row .drop-stock { display: none; }
  #dropTonight .drop-row .drop-add { grid-area: a; }
  .b-stock-m { display: block; margin-top: 1px; font-size: 12.5px; font-weight: 500; color: var(--text-dim); }
  /* An odd last row keeps its right edge. */
  #dropTonight .drop-row:last-child:nth-child(odd) { border-right: 0; }
}

/* ===== Round 7 (2026-09-22): finishing Home ===== */
/* The beta flag is not yellow: yellow means "2x or more" on this page. */
.beta-flag { background: #0B1026; color: #F3EEDF; }
:root[data-theme="dark"] .beta-flag { background: #F3EEDF; color: #0B1026; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .beta-flag { background: #F3EEDF; color: #0B1026; } }

/* "All drops" and "Fold" share one line on the right. */
#dropTonight:not(.drop-folded) .drop-tonight-head { grid-template-columns: minmax(0, 1fr) auto auto; }
#dropTonight:not(.drop-folded) .drop-all-link { grid-column: 2; grid-row: 1; }
#dropTonight:not(.drop-folded) .drop-fold-btn { grid-column: 3; grid-row: 1; margin-left: 12px; }
#dropTonight:not(.drop-folded) .drop-tonight-when { grid-column: 1 / -1; }

/* The list tools read as one group, not five boxes: Paste your list, what
   changed, Recent changes, My list, Pulse, joined edge to edge. */
body.b-home #homeBlocks > .paste-panel, body.b-home #homeBlocks > .highlight-strip,
body.b-home #homeBlocks > details.paste-import, body.b-home #myListBar, body.b-home #pulse {
  margin: 0 !important; border: 1px solid var(--border) !important; border-top-width: 0 !important;
  border-left-width: 1px !important; border-radius: 0 !important; background: var(--surface) !important; box-shadow: none !important;
}
body.b-home #homeBlocks > .paste-panel { border-top-width: 1px !important; border-radius: 10px 10px 0 0 !important; }
body.b-home #pulse:not([hidden]) { border-radius: 0 0 10px 10px !important; margin-bottom: 18px !important; }
body.b-home #myListBar:has(+ #pulse[hidden]) { border-radius: 0 0 10px 10px !important; margin-bottom: 18px !important; }
body.b-home #homeBlocks > details.paste-import > summary,
body.b-home #homeBlocks > .highlight-strip { padding-left: 14px; padding-right: 14px; }
body.b-home #homeBlocks > details.paste-import { padding: 8px 0; }
body.b-home #homeBlocks > .highlight-strip { border-left-color: var(--border) !important; }
body.b-home #myListBar { padding-top: 12px; padding-bottom: 12px; }
body.b-home .b-cat-head { margin-top: 0; }

/* Two columns read down, then across: the first half of the order in the
   left column, the rest in the right (beta.js sets the row count and marks
   the right column). A gap and a rule between them, so it is one list. */
@media (min-width: 1100px) {
  #dropTonight .drop-tonight-list {
    grid-auto-flow: column; column-gap: 32px;
    background: linear-gradient(var(--border), var(--border)) center / 1px 100% no-repeat, var(--surface);
  }
  #dropTonight .drop-row:nth-child(odd) { border-right: 0; }
  #dropTonight .drop-row:nth-child(2) { border-top: 1px solid var(--border); }
  #dropTonight .drop-row.b-coltop { border-top: 0; }
  #dropTonight .drop-row { padding-left: 18px; padding-right: 18px; }
}

/* ===== Round 8 (2026-09-22): the header, on wide screens ===== */
/* The name, plain text tabs with an underline on the current one, an
   outlined sign-in, and one rule under it all. No pill box around the tabs. */
@media (min-width: 641px) {
  body.b-home header { position: relative; padding: 14px 0 0 !important; margin-bottom: 22px; border-bottom: 1px solid var(--border); column-gap: 36px !important; align-items: center; }
  body.b-home header .wordmark { margin: 0 0 14px !important; }
  body.b-home header .site-switch {
    display: flex; align-items: stretch; align-self: stretch; gap: 26px; margin: 0 !important; padding: 0 !important;
    background: none !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important;
  }
  body.b-home header .site-switch a {
    display: inline-flex; align-items: center; gap: 6px; margin: 0 0 -1px; padding: 0 0 14px !important;
    background: none !important; border: 0 !important; border-bottom: 2px solid transparent !important; border-radius: 0 !important;
    box-shadow: none !important; font-size: 15px; font-weight: 500; color: var(--text-dim);
  }
  body.b-home header .site-switch a:hover { color: var(--text); }
  body.b-home header .site-switch a[aria-current] { color: var(--text); font-weight: 700; border-bottom-color: var(--text) !important; }
  body.b-home header .site-switch a:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
  body.b-home header .account { position: absolute; right: 0; top: 10px; margin: 0; }
  body.b-home header .discord-btn { background: transparent !important; border: 1.5px solid var(--text) !important; color: var(--text) !important; border-radius: 999px; font-weight: 700; padding: 8px 16px; }
  body.b-home header .discord-btn:hover { background: var(--text) !important; color: var(--bg) !important; }
  body.b-home #dropTonight:not(.drop-folded) { margin-top: 0; }
}

/* ===== Round 9 (2026-09-22): two notes under the headline ===== */
.b-note { display: flex; align-items: flex-start; gap: 10px; margin: 12px 0 0; font-size: 13.5px; line-height: 1.5; color: var(--text-dim); max-width: 72ch; }
.b-note > span:last-child { min-width: 0; }
.b-note b { color: var(--text); font-weight: 700; }
.b-note a { color: var(--text); }
.b-sticker.b-mini { font-size: 14px; min-width: 0; padding: 3px 6px 2px; margin-top: 1px; flex: none; transform: rotate(-3deg); }
#dropTonight:not(.drop-folded) .drop-tonight-via { margin-top: 6px; }
#dropTonight.drop-folded .b-note { display: none; }
@media (max-width: 640px) { .b-note { font-size: 13px; } }

/* ===== Round 10 (2026-09-22): the two notes line up; Poke Snipes reads bigger ===== */
#dropTonight:not(.drop-folded) .b-note,
#dropTonight:not(.drop-folded) .drop-tonight-via { display: flex; align-items: center; gap: 12px; margin: 10px 0 0; font-size: 14px; line-height: 1.5; max-width: 90ch; }
#dropTonight:not(.drop-folded) .b-note > .b-sticker.b-mini,
#dropTonight:not(.drop-folded) .drop-tonight-via .snipes-mini { flex: none; width: 48px; box-sizing: border-box; margin: 0; }
#dropTonight:not(.drop-folded) .b-note > .b-sticker.b-mini { text-align: center; padding: 4px 0 3px; font-size: 15px; }
#dropTonight:not(.drop-folded) .drop-tonight-via .snipes-mini { width: 32px; height: 32px; margin: 0 8px; background: #fff; box-shadow: 0 0 0 1px var(--border); }
#dropTonight:not(.drop-folded) .drop-tonight-via a { font-weight: 700; color: var(--text); }
@media (max-width: 640px) {
  #dropTonight:not(.drop-folded) .b-note,
  #dropTonight:not(.drop-folded) .drop-tonight-via { font-size: 13px; align-items: flex-start; }
  #dropTonight:not(.drop-folded) .b-note > .b-sticker.b-mini { margin-top: 2px; }
}


/* ===== Round 12 (2026-09-22): the drop label may take two lines ===== */
.b-flag { white-space: normal; max-width: calc(100% - 16px); line-height: 1.25; text-overflow: clip; }

/* ===== Round 13 (2026-09-22): rows of cards line up ===== */
/* The label stays on one line; at a tight width it may lose a little
   letter-spacing rather than wrap. */
.b-flag { white-space: nowrap; max-width: calc(100% - 12px); letter-spacing: -0.01em; overflow: hidden; text-overflow: ellipsis; }
/* Every name gets two lines of room, so the price and "+ Add" sit at the
   same height across a row whether the name is one line or two. */
#listRoot .b-card .b-name { min-height: calc(2 * 1.25em); }
#listRoot .b-card .b-money { min-height: calc(1.4em + 1.5em); }
@media (max-width: 640px) { .b-flag { white-space: normal; overflow: visible; text-overflow: clip; } }

/* ===== Round 14 (2026-09-22): one surface behind the box art ===== */
/* Target's photos sit on white, so the tile is white too: no frame inside a frame. */
#listRoot .b-card .b-art { background: #fff; border-radius: 6px; box-shadow: inset 0 0 0 1px var(--border); }
#listRoot .b-card .b-art img, #listRoot .b-card .b-art .s-thumb-empty { background: #fff; border-radius: 6px; padding: 10%; }

/* ===== Round 15 (2026-09-22): the trend is back on the card ===== */
#listRoot .b-card .b-tr { display: flex; align-items: center; gap: 8px; min-height: 20px; }
.b-spark { display: inline-flex; align-items: center; flex: none; width: 56px; height: 18px; }
.b-spark .s-spark-label, .b-spark .s-spark-read { display: none !important; }
.b-spark .s-spark { position: relative; width: 56px; height: 18px; padding: 0; margin: 0; background: none; border: 0; cursor: pointer; color: var(--text-dim); }
.b-spark.up .s-spark { color: var(--up); } .b-spark.down .s-spark { color: var(--down); }
.b-spark .s-spark svg { width: 56px; height: 18px; display: block; }
/* The beta shows the line to members only; visitors get the dotted ask. */
body[data-gate="visitor"] .b-spark .s-spark { visibility: visible !important; filter: none !important; }
.b-trend-locked { display: inline-flex; align-items: center; gap: 8px; color: var(--text-faint); }
.b-trend-locked .b-spark-none { width: 56px; height: 18px; flex: none; }
.b-trend-locked:hover { color: var(--text); }
/* The tour offer sits above the tab bar on phones, not behind it. */
@media (max-width: 640px) { .tour-offer { bottom: calc(76px + env(safe-area-inset-bottom)) !important; } }

/* ===== Drops page (2026-09-22): Home's language, page by page ===== */
/* The header is the same on every page. */
body.b-drops header .sub, body.b-drops header .eyebrow, body.b-drops header .dp-powered { display: none !important; }
@media (min-width: 641px) {
  body.b-drops header { position: relative; display: flex; flex-wrap: wrap; align-items: center; column-gap: 36px; padding: 14px 0 0 !important; margin-bottom: 22px; border-bottom: 1px solid var(--border); }
  body.b-drops header .wordmark { margin: 0 0 14px !important; }
  body.b-drops header .site-switch { display: flex; align-items: stretch; align-self: stretch; gap: 26px; margin: 0 !important; padding: 0 !important; background: none !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important; }
  body.b-drops header .site-switch a { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 -1px; padding: 0 0 14px !important; background: none !important; border: 0 !important; border-bottom: 2px solid transparent !important; border-radius: 0 !important; box-shadow: none !important; font-size: 15px; font-weight: 500; color: var(--text-dim); }
  body.b-drops header .site-switch a:hover { color: var(--text); }
  body.b-drops header .site-switch a[aria-current] { color: var(--text); font-weight: 700; border-bottom-color: var(--text) !important; }
  body.b-drops header .account { position: absolute; right: 0; top: 10px; margin: 0; }
  body.b-drops header .discord-btn { background: transparent !important; border: 1.5px solid var(--text) !important; color: var(--text) !important; border-radius: 999px; font-weight: 700; padding: 8px 16px; }
}
body.b-drops main.dr-wrap { max-width: none; }

/* Tonight: the same headline block as Home. */
body.b-drops #dpNow { background: none; border: 0; border-radius: 0; padding: 0; margin: 10px 0 32px; }
body.b-drops #dpNow .drop-tonight-head { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px 16px; align-items: baseline; }
body.b-drops #dpNow .drop-tonight-head h2 { margin: 0; font-family: 'Archivo', 'Manrope', sans-serif; font-weight: 800; font-stretch: 68%; font-size: clamp(26px, 3vw, 38px); line-height: 1.05; letter-spacing: -0.01em; }
body.b-drops #dpNow .drop-tonight-when { margin: 0; font-size: 14.5px; color: var(--text); }
body.b-drops #dpNow .drop-tonight-when strong { font-weight: 700; }
body.b-drops #dpNow .drop-tonight-when .b-count { display: inline-block; margin-left: 8px; font-weight: 800; white-space: nowrap; }
body.b-drops #dpNow .dp-avg-now { margin: 2px 0 0; font-size: 14px; color: var(--text-dim); }
body.b-drops #dpNow .b-note, body.b-drops #dpNow .drop-tonight-via { display: flex; align-items: center; gap: 12px; margin: 10px 0 0; font-size: 14px; line-height: 1.5; color: var(--text-dim); max-width: 90ch; }
body.b-drops #dpNow .b-note b { color: var(--text); }
body.b-drops #dpNow .b-note a, body.b-drops #dpNow .drop-tonight-via a { color: var(--text); font-weight: 700; }
body.b-drops #dpNow .b-note > .b-sticker.b-mini { width: 48px; text-align: center; padding: 4px 0 3px; font-size: 15px; flex: none; }
body.b-drops #dpNow .drop-tonight-via .snipes-mini { width: 32px; height: 32px; margin: 0 8px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 1px var(--border); flex: none; }
body.b-drops #dpNow .drop-tonight-list { margin-top: 16px; }
body.b-drops #dpNow .drop-tonight-actions { margin-top: 10px; }
body.b-drops #dpNow .drop-tonight-actions .track-btn { width: auto; min-height: 40px; padding: 0 18px; font-size: 14px; font-weight: 700; border-radius: 999px; }
body.b-drops #dpNow .drop-nudge { border-top: 0; padding-top: 0; margin-top: 14px; font-size: 14px; }

/* Sticker rows, everywhere on the page. */
body.b-drops .b-rows { display: block; list-style: none; margin: 0; padding: 0; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
body.b-drops .b-rows > li.dp-row { display: grid; grid-template-columns: 64px minmax(0, 1fr) 250px auto; align-items: center; column-gap: 16px; padding: 10px 16px; border-top: 1px solid var(--border); font-size: 14.5px; line-height: 1.3; }
body.b-drops .b-rows > li.dp-row:first-child { border-top: 0; }
body.b-drops .b-rows .drop-name { font-weight: 700; color: var(--text); }
body.b-drops .b-rows .drop-name a { color: inherit; text-decoration: none; }
body.b-drops .b-rows .b-stock-m { display: block; margin-top: 1px; font-size: 12.5px; font-weight: 500; color: var(--text-dim); }
body.b-drops .b-rows .b-price { text-align: right; white-space: nowrap; font-size: 14px; color: var(--text-dim); font-variant-numeric: tabular-nums; }
body.b-drops .b-rows .b-price b { color: var(--text); font-weight: 800; font-size: 15px; }
body.b-drops .b-rows .drop-add { min-width: 76px; min-height: 32px; padding: 0 12px; font-size: 13px; font-weight: 650; border-radius: 999px; background: transparent !important; color: var(--text) !important; border: 1.5px solid var(--text) !important; }
body.b-drops .b-rows .drop-add.tracked { background: var(--text) !important; color: var(--bg) !important; }
body.b-drops .b-rows-plain > li.dp-row { grid-template-columns: minmax(0, 1fr) auto; }
body.b-drops .b-rows-plain .drop-name small { display: block; font-size: 12.5px; color: var(--text-dim); font-weight: 500; }
@media (min-width: 1100px) {
  body.b-drops #dpNow .drop-tonight-list.b-rows { display: grid; grid-template-columns: 1fr 1fr; grid-auto-flow: row; column-gap: 32px; background: linear-gradient(var(--border), var(--border)) center / 1px 100% no-repeat, var(--surface); }
  body.b-drops #dpNow .b-rows > li.dp-row { grid-template-columns: 56px minmax(0, 1fr) auto; grid-template-areas: "m n a" "m p a"; row-gap: 2px; }
  body.b-drops #dpNow .b-rows > li.dp-row:nth-child(2) { border-top: 0; }
  body.b-drops #dpNow .b-rows .b-mult { grid-area: m; }
  body.b-drops #dpNow .b-rows .drop-name { grid-area: n; }
  body.b-drops #dpNow .b-rows .b-price { grid-area: p; text-align: left; }
  body.b-drops #dpNow .b-rows .drop-add { grid-area: a; }
}
@media (max-width: 900px) {
  body.b-drops .b-rows > li.dp-row { grid-template-columns: 52px minmax(0, 1fr) auto; grid-template-areas: "m n a" "m p a"; row-gap: 2px; column-gap: 12px; padding: 10px 12px; }
  body.b-drops .b-rows .b-mult { grid-area: m; }
  body.b-drops .b-rows .drop-name { grid-area: n; }
  body.b-drops .b-rows .b-price { grid-area: p; text-align: left; white-space: normal; }
  body.b-drops .b-rows .drop-add { grid-area: a; min-width: 60px; }
  body.b-drops .b-rows-plain > li.dp-row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "n a"; }
}

/* Sections: a heading that says what is there, then its rows. */
body.b-drops .dp-h2 { margin: 30px 0 4px; font-family: 'Manrope', sans-serif; font-size: 22px; font-weight: 800; letter-spacing: -0.02em; color: var(--text); text-transform: none; }
body.b-drops .dp-note { font-size: 14px; max-width: 76ch; }
body.b-drops .dp-card { margin: 0 0 12px; padding: 12px 14px 14px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); }
body.b-drops .dp-card .b-rows { border: 0; border-radius: 0; background: none; }
body.b-drops .dp-card-head h3 { font-size: 16px; font-weight: 800; }
body.b-drops .dp-rows { border-radius: 10px; }
body.b-drops .dp-draw-row { padding: 11px 0; }
body.b-drops .dp-draw-mine { text-transform: none; letter-spacing: 0; }
body.b-drops .dp-none { border-radius: 10px; }
/* Sticker (the shared rule is scoped to Home's rows, so restate). */
body.b-drops .b-mult.b-sticker { justify-self: start; display: inline-block; font-family: 'Archivo', 'Manrope', sans-serif; font-weight: 850; font-stretch: 70%; font-size: 22px; line-height: 1; padding: 5px 7px 4px; min-width: 52px; box-sizing: border-box; text-align: center; border-radius: 5px; transform: rotate(-3deg); background: #FFC23D; color: #0B1026; }
body.b-drops .b-mult.b-sticker.b-low { background: var(--surface); color: var(--text-dim); transform: none; box-shadow: inset 0 0 0 1.5px var(--border-strong); font-size: 18px; }
body.b-drops .b-mult.b-sticker.b-none { font-size: 18px; }
@media (max-width: 640px) {
  body.b-drops #dpNow .drop-tonight-head h2 { font-size: 27px; }
  body.b-drops #dpNow .b-note, body.b-drops #dpNow .drop-tonight-via { font-size: 13px; align-items: flex-start; }
  body.b-drops .b-mult.b-sticker { font-size: 19px; min-width: 46px; padding: 4px 6px 3px; }
  body.b-drops .b-mult.b-sticker.b-low { font-size: 16px; }
  body.b-drops #dpNow .drop-tonight-actions .track-btn { width: 100%; }
}
body.b-drops #dpNow .drop-tonight-actions { display: flex; justify-content: flex-start; }
body.b-drops #dpNow .drop-tonight-actions .track-btn:not(.tracked):not([disabled]) { background: var(--text) !important; color: var(--bg) !important; border-color: var(--text) !important; }

/* ===== Market page (2026-09-22) ===== */
body.b-market header .mk-intro, body.b-market header .header-links, body.b-market header .eyebrow { display: none !important; }
@media (min-width: 641px) {
  body.b-market header { position: relative; display: flex; flex-wrap: wrap; align-items: center; column-gap: 36px; padding: 14px 0 0 !important; margin-bottom: 18px; border-bottom: 1px solid var(--border); }
  body.b-market header .wordmark { margin: 0 0 14px !important; }
  body.b-market header .site-switch { display: flex; align-items: stretch; align-self: stretch; gap: 26px; margin: 0 !important; padding: 0 !important; background: none !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important; }
  body.b-market header .site-switch a { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 -1px; padding: 0 0 14px !important; background: none !important; border: 0 !important; border-bottom: 2px solid transparent !important; border-radius: 0 !important; box-shadow: none !important; font-size: 15px; font-weight: 500; color: var(--text-dim); }
  body.b-market header .site-switch a:hover { color: var(--text); }
  body.b-market header .site-switch a[aria-current] { color: var(--text); font-weight: 700; border-bottom-color: var(--text) !important; }
  body.b-market header .account { position: absolute; right: 0; top: 10px; margin: 0; }
  body.b-market header .discord-btn { background: transparent !important; border: 1.5px solid var(--text) !important; color: var(--text) !important; border-radius: 999px; font-weight: 700; padding: 8px 16px; }
  /* The rest of the header (updated line, game tabs) drops under the rule. */
  body.b-market header .mk-updated, body.b-market header .mk-tabs, body.b-market header .gate-bar { flex: 0 0 100%; }
}
/* The page heading: what is here, then the game tabs as text. */
.b-mk-head { margin: 8px 0 12px; }
.b-mk-head h2 { margin: 0; font-family: 'Manrope', sans-serif; font-size: 30px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.05; }
.b-mk-head p { margin: 4px 0 0; font-size: 15px; color: var(--text-dim); }
body.b-market header .mk-updated { display: none !important; }
body.b-market .mk-tabs { gap: 18px; margin: 0 0 4px; }
body.b-market .mk-tabs button, body.b-market .mk-tabs a { background: none !important; border: 0 !important; border-radius: 0 !important; padding: 8px 0 !important; font-size: 15px; font-weight: 500; color: var(--text-dim) !important; box-shadow: none !important; border-bottom: 2px solid transparent !important; }
body.b-market .mk-tabs [aria-selected="true"], body.b-market .mk-tabs .on, body.b-market .mk-tabs [aria-current] { color: var(--text) !important; font-weight: 700; border-bottom-color: var(--text) !important; }
body.b-market .mk-tabs .mk-tab-n, body.b-market .mk-tabs small { font-weight: 500; color: var(--text-faint); margin-left: 4px; }
/* Cards: the catalog card's rules, keyed on .mk-list. */
body.b-market .mk-list.simple-grid { grid-template-columns: repeat(auto-fill, minmax(176px, 1fr)) !important; gap: 12px !important; }
body.b-market .mk-list .s-card.b-card { display: flex !important; flex-direction: column; gap: 6px; padding: 10px !important; border: 1px solid var(--border) !important; border-radius: 6px; box-shadow: none; }
body.b-market .mk-list .s-card.b-card:hover { border-color: var(--border-strong) !important; box-shadow: none; }
body.b-market .mk-list .b-card .b-art { width: auto !important; position: relative; background: #fff; border-radius: 6px; box-shadow: inset 0 0 0 1px var(--border); cursor: pointer; }
body.b-market .mk-list .b-card .b-art img, body.b-market .mk-list .b-card .b-art .s-thumb-empty { width: 100%; aspect-ratio: 1; object-fit: contain; display: block; background: #fff; border: 0; border-radius: 6px; padding: 10%; box-sizing: border-box; }
body.b-market .mk-list .b-card .b-art .b-sticker { position: absolute; right: 8px; bottom: 8px; z-index: 2; font-size: 19px; min-width: 44px; padding: 4px 6px 3px; }
body.b-market .mk-list .b-card .b-art .b-sticker.b-low { font-size: 16px; }
body.b-market .mk-list .b-card .b-name { font-size: 14px; font-weight: 650; line-height: 1.25; color: var(--text); min-height: calc(2 * 1.25em); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
body.b-market .mk-list .b-card .b-money { display: flex; flex-direction: column; font-size: 13px; color: var(--text-dim); font-variant-numeric: tabular-nums; min-height: calc(1.4em + 1.5em); }
body.b-market .mk-list .b-card .b-sells b { font-size: 17px; font-weight: 800; color: var(--text); }
body.b-market .mk-list .b-card .b-sells-none, body.b-market .mk-list .b-card .b-target-none { color: var(--text-faint); }
body.b-market .mk-list .b-card .b-tr { display: flex; align-items: center; gap: 8px; min-height: 20px; }
body.b-market .mk-list .b-card .b-actions { display: flex; gap: 6px; margin-top: auto; align-self: stretch; }
body.b-market .mk-list .b-card .b-actions .track-btn { flex: 1 1 auto; width: auto !important; margin: 0; min-height: 32px; font-size: 13px; font-weight: 650; border-radius: 999px; background: transparent !important; color: var(--text) !important; border: 1.5px solid var(--text) !important; text-align: center; }
body.b-market .mk-list .b-card .b-actions .mk-cmp-btn { flex: none; width: 34px; min-width: 34px; min-height: 32px; border-radius: 999px; }
@media (max-width: 640px) {
  body.b-market .mk-list.simple-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px !important; }
  body.b-market .mk-list .b-card .b-actions .mk-cmp-btn { display: none; }
  .b-mk-head h2 { font-size: 24px; }
}
/* The Pulse and index folds read as one quiet card, like Home's tools. */
body.b-market #mkPulse, body.b-market #mkCompare { border-radius: 10px; }

/* ===== Every page (2026-09-22): the header, once ===== */
body.b-page header .eyebrow, body.b-page header .header-links, body.b-page header .sub .lede-beta { display: none !important; }
@media (min-width: 641px) {
  body.b-page header { position: relative; display: flex; flex-wrap: wrap; align-items: center; column-gap: 36px; padding: 14px 0 0 !important; margin-bottom: 18px; border-bottom: 1px solid var(--border); }
  body.b-page header .wordmark { margin: 0 0 14px !important; }
  body.b-page header .site-switch { display: flex; align-items: stretch; align-self: stretch; gap: 26px; margin: 0 !important; padding: 0 !important; background: none !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important; }
  body.b-page header .site-switch a { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 -1px; padding: 0 0 14px !important; background: none !important; border: 0 !important; border-bottom: 2px solid transparent !important; border-radius: 0 !important; box-shadow: none !important; font-size: 15px; font-weight: 500; color: var(--text-dim); }
  body.b-page header .site-switch a:hover { color: var(--text); }
  body.b-page header .site-switch a[aria-current] { color: var(--text); font-weight: 700; border-bottom-color: var(--text) !important; }
  body.b-page header .account { position: absolute; right: 0; top: 10px; margin: 0; }
  body.b-page header .discord-btn { background: transparent !important; border: 1.5px solid var(--text) !important; color: var(--text) !important; border-radius: 999px; font-weight: 700; padding: 8px 16px; }
  body.b-page header > :not(.wordmark):not(.site-switch):not(.account) { flex: 0 0 100%; }
}

/* ===== Portfolio page (2026-09-22) ===== */
body.b-pf header .sub { margin: 10px 0 0; font-size: 15px; color: var(--text-dim); }
body.b-pf header .sub b { display: block; font-family: 'Manrope', sans-serif; font-size: 30px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.05; color: var(--text); margin-bottom: 4px; }
@media (min-width: 641px) { body.b-pf header .sub { order: 9; padding-top: 14px; } }
body.b-pf .pf-signin, body.b-pf .pf-sample-bar, body.b-pf .pf-tile, body.b-pf .pf-add, body.b-pf .pf-bulk, body.b-pf .pf-sale, body.b-pf .pf-stack { border-radius: 10px; }
/* Summary: one number leads, the rest are quiet. */
body.b-pf .pf-totals { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
body.b-pf .pf-tile:first-child { grid-column: 1 / -1; }
body.b-pf .pf-tile:first-child .pf-v { font-family: 'Archivo', 'Manrope', sans-serif; font-stretch: 75%; font-weight: 800; font-size: clamp(32px, 4vw, 44px); letter-spacing: -0.01em; }
body.b-pf .pf-tile .pf-k { font-size: 13px; font-weight: 600; color: var(--text-dim); text-transform: none; letter-spacing: 0; }
body.b-pf .pf-tile .pf-v { font-weight: 800; }
body.b-pf .pf-sample-k { text-transform: none; letter-spacing: 0; }
body.b-pf .pf-views button, body.b-pf .pf-bar-actions button { border-radius: 999px; }
body.b-pf .pf-bar-actions .primary, body.b-pf .pf-signin .discord-btn { border-radius: 999px; }
@media (max-width: 640px) { body.b-pf header .sub b { font-size: 24px; } }
@media (max-width: 640px) {
  body.b-pf .pf-totals { grid-template-columns: 1fr 1fr; gap: 8px; }
  body.b-pf .pf-tile:first-child { grid-column: 1 / -1; }
}
/* app.css spans each summary tile across two columns on phones; the beta
   shows them two across, with only the leading number full width. */
@media (max-width: 640px) {
  body.b-pf .pf-totals .pf-tile { grid-column: auto !important; }
  body.b-pf .pf-totals .pf-tile:first-child { grid-column: 1 / -1 !important; }
}

/* ===== Leftovers (2026-09-22): secondary pages, folds, the stack ===== */
/* Phones have the tab bar; the pill nav is a second copy of it. */
@media (max-width: 640px) { body.b-page header .site-switch { display: none !important; } }
/* Pages that open with "Name. Sentence." get the name as a heading. */
body.b-page header .sub .sub-h1 { display: block; font-family: 'Manrope', sans-serif; font-size: 30px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.05; color: var(--text); margin: 0 0 4px; }
body.b-page header .sub { font-size: 15px; color: var(--text-dim); margin-top: 10px; }
@media (min-width: 641px) { body.b-page header .sub { order: 9; padding-top: 14px; } }
@media (max-width: 640px) { body.b-page header .sub .sub-h1 { font-size: 24px; } }
/* Pulse: the signal chips and the movers, quieter. */
body.b-page .mk-pulse-signals { gap: 6px 8px; }
body.b-page .mk-pulse-signals .mk-signal { border-radius: 999px; font-size: 12.5px; border-width: 1px; }
body.b-page .mk-pulse-signals .mk-signal b { font-family: inherit; font-weight: 800; }
body.b-page .mk-pulse, body.b-page .mk-compare, body.b-page #pulse { border-radius: 10px; }
body.b-page .mk-pulse summary h2, body.b-page .mk-compare summary h2, body.b-page #pulse summary h2 { font-size: 15px; font-weight: 700; color: var(--text); text-transform: none; letter-spacing: 0; }
body.b-page .mk-movers h3, body.b-page .mk-pulse-head h2 { font-size: 13px; font-weight: 600; color: var(--text-dim); text-transform: none; letter-spacing: 0; }
body.b-page .mk-win button { border-radius: 999px; }
/* Portfolio: "In your stack" is a quiet card, not a flagged one. */
body.b-pf .pf-stack { border-left-width: 1px !important; border-radius: 10px; }
body.b-pf .pf-stack h2 { font-size: 15px; font-weight: 700; color: var(--text); text-transform: none; letter-spacing: 0; }
body.b-pf .pf-stack-item { border-radius: 8px; }
body.b-pf .pf-table th { text-transform: none; letter-spacing: 0; font-weight: 600; font-size: 12.5px; }
body.b-pf .pf-table { border-radius: 10px; }
/* 404: the site's header, no arrows on the cards. */
@media (max-width: 640px) { body.b-page .site-switch, body .wrap > header .site-switch { display: none !important; } }

/* ===== Dialogs, toasts, bars (2026-09-22) ===== */
/* The chart panel. */
body.b-page .chart-panel { border-radius: 14px; }
body.b-page .chart-eyebrow { font-size: 13px; font-weight: 500; letter-spacing: 0; color: var(--text-dim); text-transform: none; }
body.b-page .chart-title { font-size: 20px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.15; margin: 2px 0 12px; }
body.b-page .chart-range, body.b-page .chart-link, body.b-page .chart-actions .track-btn { border-radius: 999px !important; font-weight: 650; min-height: 34px; }
body.b-page .chart-range.on { background: var(--text) !important; color: var(--bg) !important; border-color: var(--text) !important; }
body.b-page .chart-actions .track-btn { background: transparent !important; color: var(--text) !important; border: 1.5px solid var(--text) !important; }
body.b-page .chart-actions .track-btn.tracked { background: var(--text) !important; color: var(--bg) !important; }
body.b-page .chart-stats .cs { border-radius: 10px; background: var(--surface); border: 1px solid var(--border); }
body.b-page .chart-stats .cs-k { font-size: 12.5px; color: var(--text-dim); text-transform: none; letter-spacing: 0; font-weight: 500; }
body.b-page .chart-stats.cs-prices .cs-v { font-size: 20px; font-weight: 800; }
/* The multiple beside the basis price is a small sticker. */
body.b-page .chart-stats .cs.cs-basis .cs-v small {
  display: inline-block; margin-left: 6px; vertical-align: 2px;
  font-family: 'Archivo', 'Manrope', sans-serif; font-weight: 850; font-stretch: 70%; font-size: 14px; line-height: 1;
  padding: 3px 6px 2px; border-radius: 4px; transform: rotate(-3deg);
  background: #FFC23D !important; color: #0B1026 !important;
}
body.b-page .chart-stats .cs.cs-basis .cs-v small.b-low { background: var(--surface) !important; color: var(--text-dim) !important; box-shadow: inset 0 0 0 1.5px var(--border-strong); transform: none; }
/* The moves block: no empty cells. */
body.b-page .chart-stats.cs-moves { border-radius: 10px; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
body.b-page .chart-stats.cs-moves .cs:empty { display: none; }
body.b-page .chart-stats.cs-state { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
body.b-page .chart-legend { font-size: 12.5px; }
body.b-page .chart-traj-title { font-size: 16px !important; font-weight: 800 !important; margin-top: 20px !important; }
body.b-page .chart-sub { font-size: 13px; }
/* Add-to-Portfolio, and every dialog: rounded, pill buttons, sentence case. */
body.b-page .chart-panel.mk-add-panel h2, body.b-page .ui-dialog h2 { font-size: 20px; font-weight: 800; letter-spacing: -0.02em; text-transform: none; }
body.b-page .mk-add-panel label, body.b-page .ui-dialog label { font-size: 13px; color: var(--text-dim); }
body.b-page .mk-add-panel input, body.b-page .mk-add-panel select, body.b-page .ui-dialog input { border-radius: 8px; font-size: 15px; min-height: 40px; }
body.b-page .mk-add-panel button, body.b-page .ui-dialog-acts button { border-radius: 999px; min-height: 40px; font-weight: 700; }
body.b-page .mk-add-panel button.primary, body.b-page .ui-dialog-acts button.primary { background: var(--text) !important; color: var(--bg) !important; border-color: var(--text) !important; }
/* Toasts: one rounded surface, sentence case, no shout. */
body.b-page .toast { border-radius: 10px; font-size: 14px; font-weight: 600; }
body.b-page .toast-big { border-radius: 14px; }
body.b-page .toast-big .tb-title { font-size: 18px; font-weight: 800; letter-spacing: -0.02em; }
body.b-page .toast-big .tb-action, body.b-page .toast-big .tb-dismiss { border-radius: 999px; font-weight: 700; }
body.b-page .toast-big .tb-action { background: var(--text) !important; color: var(--bg) !important; }
/* Compare bar. */
body.b-page .mk-cmp-bar { border-radius: 999px; }
body.b-page .mk-cmp-bar > button, body.b-page .mk-cmp-bar .chip { border-radius: 999px; }
@media (max-width: 640px) { body.b-page .mk-cmp-bar { border-radius: 12px 12px 0 0; } }
/* Tour: same voice. */
body.b-page .tour-card, body.b-page .tour-offer { border-radius: 14px; }
body.b-page .tour-count { text-transform: none; letter-spacing: 0; font-size: 12.5px; }
body.b-page .tour-card .primary, body.b-page .tour-offer .primary { border-radius: 999px; background: var(--text) !important; color: var(--bg) !important; }
body.b-page .tour-card button:not(.primary) { border-radius: 999px; }

/* ===== Buttons and list tools (2026-09-22): yellow is for stickers ===== */
body.b-page button.primary, body.b-page .tour-offer .primary, body.b-page .tour-card .primary, body.b-page .tour-card [data-tour="next"],
body.b-page .pf-add button.primary, body.b-page .pf-bulk button.primary, body.b-page .pf-sale button.primary, body.b-page .pf-bar-actions .primary {
  background: var(--text) !important; color: var(--bg) !important; border: 1.5px solid var(--text) !important; border-radius: 999px; font-weight: 700;
}
body.b-page button.primary:hover { filter: none; opacity: .92; }
body.b-page .buy-list-bar button, body.b-page .paste-panel-actions button, body.b-page .pf-views button, body.b-page .pf-bar-actions button,
body.b-page .empty-clear, body.b-page .pi-copy, body.b-page .paste-import-result button { border-radius: 999px; font-weight: 650; }
body.b-page .buy-list-bar button:not(.primary), body.b-page .paste-panel-actions button:not(.primary), body.b-page .paste-import-result button {
  background: transparent !important; color: var(--text) !important; border: 1.5px solid var(--text) !important;
}
body.b-page .buy-list-bar button.on, body.b-page #myListOnlyBtn.on { background: var(--text) !important; color: var(--bg) !important; }
body.b-page button.target-red { background: transparent !important; border: 1.5px solid var(--border-strong) !important; color: var(--text) !important; }
body.b-page .beta-mini, body.b-page .lede-beta { border-radius: 999px; font-size: 12px; font-weight: 600; color: var(--text-dim); border: 1px solid var(--border-strong); background: transparent; }
body.b-page .s-new-badge, body.b-page .account-initial { background: #0B1026 !important; color: #fff !important; }
body.b-page .paste-panel textarea, body.b-page .controls .search, body.b-page .controls select, body.b-page .pf-search input, body.b-page .pf-bar select { border-radius: 10px; }
body.b-page .paste-import-result { border-radius: 10px; font-size: 13.5px; }
/* Portfolio table: plain names, sparkline where the trend column is. */
body.b-pf .pf-table td.name a, body.b-pf .pf-table .pf-name a { text-decoration: none; font-weight: 650; color: var(--text); }
body.b-pf .pf-table td.name a:hover { text-decoration: underline; }
body.b-pf .pf-table .s-spark { color: var(--text-dim); }
body.b-pf .pf-table .s-spark.up { color: var(--up); } body.b-pf .pf-table .s-spark.down { color: var(--down); }
body.b-pf .pf-views button[aria-pressed="true"], body.b-pf .pf-views button.on { background: var(--text) !important; color: var(--bg) !important; border-color: var(--text) !important; }
body.b-pf .pf-add h2, body.b-pf .pf-bulk h2, body.b-pf .pf-sale h2 { font-size: 16px; font-weight: 800; color: var(--text); }
body.b-pf .pf-lot-card, body.b-pf .pf-table tr.pf-card { border-radius: 10px; }
body.b-pf .pf-got-one, body.b-pf .dp-got-one { border-radius: 999px; }
/* Portfolio names: plain text buttons, not dotted links. The profiles line is a link, not a pill. */
body.b-pf .pf-name, body.b-pf .pf-name-t { text-decoration: none !important; border-bottom: 0 !important; font-weight: 650; color: var(--text); }
body.b-pf .pf-name:hover .pf-name-t { text-decoration: underline !important; }
body.b-page .buy-list-bar .pf-setup { border: 0 !important; background: none !important; border-radius: 0; padding: 0; color: var(--text-dim) !important; text-decoration: underline; text-underline-offset: 3px; font-weight: 500; }
/* Dark mode: links are not amber. Yellow is for stickers. */
:root[data-theme="dark"] body.b-page { --cyan: #9AA5FF; --sky: #B7BEFF; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) body.b-page { --cyan: #9AA5FF; --sky: #B7BEFF; } }
body.b-page .b-sticker, body.b-page .b-mult.b-sticker, body.b-page .chart-stats .cs.cs-basis .cs-v small { background: #FFC23D; }
body.b-page .buy-list-bar button.pf-setup, body.b-page #profileBar .pf-setup { border: 0 !important; background: none !important; box-shadow: none !important; }
:root[data-theme="dark"] .beta-flag { background: #131A38; color: #F3EEDF; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .beta-flag { background: #131A38; color: #F3EEDF; } }

/* ===== Set pages (/sets/*, 2026-09-22) ===== */
body.b-set .wordmark { margin: 14px 0 10px; }
body.b-set .set-crumbs { font-size: 14px; color: var(--text-dim); }
body.b-set .set-crumbs a { color: var(--text-dim); }
body.b-set .set-title { font-family: 'Manrope', sans-serif; font-size: 30px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.05; margin: 12px 0 8px; }
body.b-set .set-lede { font-size: 15px; line-height: 1.55; color: var(--text-dim); max-width: 70ch; }
body.b-set .set-lede b { color: var(--text); }
body.b-set .set-open { display: inline-block; background: var(--text) !important; color: var(--bg) !important; border: 1.5px solid var(--text) !important; border-radius: 999px; padding: 10px 18px; font-weight: 700; text-decoration: none; }
body.b-set .set-table { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; background: var(--surface); border-collapse: separate; border-spacing: 0; }
body.b-set .set-table th { font-size: 12.5px; font-weight: 600; color: var(--text-dim); text-transform: none; letter-spacing: 0; padding: 10px 12px; }
body.b-set .set-table td { padding: 10px 12px; border-top: 1px solid var(--border); }
body.b-set .set-table td a { color: var(--text); text-decoration: none; font-weight: 650; }
body.b-set .set-table td a:hover { text-decoration: underline; }
body.b-set .set-table td.num b { font-weight: 800; }
@media (max-width: 640px) { body.b-set .set-title { font-size: 24px; } body.b-set .set-open { display: block; text-align: center; } }
body.b-set .set-table td a, body.b-set .wordmark a { text-decoration: none !important; }
body.b-set .set-table td a:hover { text-decoration: underline !important; }
/* The install nudge sits above the tab bar, like the tour offer. */
@media (max-width: 640px) { body.b-page .install-nudge { bottom: calc(76px + env(safe-area-inset-bottom)) !important; border-radius: 14px; } }
body.b-page .install-nudge .inst-x { border-radius: 10px; }
/* Add-to-Portfolio, signed out: the one action is the primary. */
body.b-page .mk-add-panel .discord-btn { background: var(--text) !important; color: var(--bg) !important; border-color: var(--text) !important; border-radius: 999px; font-weight: 700; }
/* Set pages: product names are row headers, and the table scrolls inside its card. */
body.b-set .set-table th a, body.b-set .set-table td a { text-decoration: none !important; color: var(--text); font-weight: 650; }
body.b-set .set-table th a:hover, body.b-set .set-table td a:hover { text-decoration: underline !important; }
body.b-set .set-table tbody th { font-weight: 650; }
body.b-set .set-table-wrap, body.b-set .set-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: 10px; }

/* ===== "Did you get it?" (2026-09-22, Portfolio 2.0 step 1) ===== */
.b-got { margin: 0 0 24px; padding: 14px 16px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); }
.b-got h2 { margin: 0; font-family: 'Manrope', sans-serif; font-size: 20px; font-weight: 800; letter-spacing: -0.02em; }
.b-got-sub { margin: 4px 0 10px; font-size: 14px; color: var(--text-dim); line-height: 1.5; max-width: 70ch; }
.b-got-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.b-got-item { display: contents; }
.b-got-chip { all: unset; cursor: pointer; box-sizing: border-box; display: inline-flex; align-items: center; gap: 6px; min-height: 38px; padding: 0 14px; border-radius: 999px; border: 1.5px solid var(--border-strong); font-size: 14px; font-weight: 650; color: var(--text); }
.b-got-chip:hover { border-color: var(--text); }
.b-got-chip:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
.b-got-chip small { font-size: 13px; font-weight: 500; color: var(--text-dim); }
.b-got-form { flex: 0 0 100%; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 12px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); }
.b-got-form[hidden] { display: none; }
.b-got-form label { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; color: var(--text-dim); }
.b-got-form input { width: 110px; min-height: 38px; padding: 0 10px; border: 1px solid var(--border-strong); border-radius: 8px; background: var(--surface); color: var(--text); font: inherit; font-size: 15px; }
.b-got-form button { min-height: 38px; padding: 0 14px; border-radius: 999px; font-weight: 700; font: inherit; cursor: pointer; }
.b-got-form button.primary { background: var(--text) !important; color: var(--bg) !important; border: 1.5px solid var(--text) !important; }
.b-got-form .b-got-cancel { background: transparent; color: var(--text-dim); border: 1.5px solid var(--border-strong); }
.b-got-done { flex: 0 0 100%; font-size: 14px; color: var(--text-dim); padding: 4px 0; }
.b-got-done b { color: var(--text); }
.b-got-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-top: 12px; }
.b-got-note { flex: 1 1 auto; font-size: 13.5px; color: var(--text-dim); display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.b-got-note .discord-btn { background: var(--text) !important; color: var(--bg) !important; border-color: var(--text) !important; border-radius: 999px; min-height: 34px; padding: 0 12px; font-size: 13px; }
.b-got-no, .b-got-ok { all: unset; cursor: pointer; min-height: 36px; padding: 0 14px; border-radius: 999px; font-size: 13.5px; font-weight: 650; border: 1.5px solid var(--border-strong); color: var(--text-dim); display: inline-flex; align-items: center; }
.b-got-ok { background: var(--text); color: var(--bg); border-color: var(--text); }
.b-got-no:focus-visible, .b-got-ok:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
@media (max-width: 640px) { .b-got { padding: 12px; } .b-got h2 { font-size: 18px; } .b-got-form input { width: 96px; } }
.b-got-note { flex-direction: column; align-items: flex-start; gap: 6px; }

/* Below 2x the sticker is flat and outlined; a later page-wide rule had tinted it. */
body.b-page .b-sticker.b-low, body.b-page .b-mult.b-sticker.b-low, body.b-page .chart-stats .cs.cs-basis .cs-v small.b-low { background: var(--surface) !important; color: var(--text-dim) !important; transform: none; box-shadow: inset 0 0 0 1.5px var(--border-strong); }

/* ===== Live round 1 (2026-09-22 evening, owner's phone) ===== */
/* Set-heading chips ("4.9x at launch", "Launch window") are quiet outlines: yellow is for stickers. */
body.b-page .fam-traj, body.b-page .family-heading .s-ctx, body.b-page .mk-fam-traj, body.b-page .family-heading .fam-new {
  background: none !important; border: 1px solid var(--border-strong) !important; color: var(--text-dim) !important; border-radius: 999px; box-shadow: none !important;
}
body.b-page .fam-traj b, body.b-page .fam-traj strong { color: var(--text) !important; }
/* Portfolio lots on a phone: a space before "Set target", plain digits, pill actions, tighter card. */
body.b-pf .pf-set-target { margin-left: 8px; }
body.b-pf .pf-table td.num { font-family: inherit; }
@media (max-width: 640px) {
  body.b-pf .pf-table tr { gap: 2px 12px; padding: 10px 12px; border-radius: 10px; }
  body.b-pf .pf-table td::before { font-size: 12.5px; color: var(--text-dim); }
  body.b-pf .pf-table td.acts-cell { padding-top: 8px; gap: 8px; }
  body.b-pf .pf-table .acts button, body.b-pf .pf-table .acts a { min-height: 34px; padding: 0 12px !important; border-radius: 999px; border: 1.5px solid var(--border-strong); background: transparent; color: var(--text-dim); font-weight: 650; text-decoration: none; }
}

/* ===== Live round 2 (2026-09-22): "In list" is settled, not a button asking to be pressed ===== */
body.b-page .track-btn.tracked, body.b-page .drop-add.tracked, body.b-page #listRoot .s-card.b-card .s-actions .track-btn.tracked,
body.b-page #dropTonight .drop-row .drop-add.tracked, body.b-drops .b-rows .drop-add.tracked, body.b-page .chart-actions .track-btn.tracked {
  background: transparent !important; color: var(--text-dim) !important; border: 1.5px solid var(--border-strong) !important; font-weight: 600;
}
body.b-page .track-btn.tracked:hover, body.b-page .drop-add.tracked:hover { color: var(--text) !important; border-color: var(--text) !important; }
/* "+ Add all" that has nothing left to add reads the same way. */
body.b-page #dropAddAll.tracked, body.b-page #dropAddAll[disabled] { background: transparent !important; color: var(--text-dim) !important; border: 1.5px solid var(--border-strong) !important; opacity: 1; }

/* ===== Live round 3 (2026-09-22): toasts clear the phone tab bar ===== */
@media (max-width: 640px) {
  body.b-page .toast { bottom: calc(88px + env(safe-area-inset-bottom)); z-index: 85; font-size: 14px; line-height: 1.4; padding: 10px 14px; }
  body.b-page:has(#jumpBar:not([hidden])) .toast { bottom: calc(136px + env(safe-area-inset-bottom)); }
}

/* ===== Walmart drawings as sticker rows (2026-09-22) ===== */
body.b-drops .b-draws > li.dp-row { display: grid; grid-template-columns: 64px minmax(0, 1fr) 280px auto; align-items: center; column-gap: 16px; padding: 10px 16px; border-top: 1px solid var(--border); }
body.b-drops .b-draws > li.dp-row:first-child { border-top: 0; }
body.b-drops .b-draws .drop-name { font-weight: 700; color: var(--text); }
body.b-drops .b-draws .b-stock-m { display: block; margin-top: 2px; font-size: 12.5px; font-weight: 500; color: var(--text-dim); }
body.b-drops .b-draws .b-price small { font-size: 12.5px; color: var(--text-faint); }
body.b-drops .b-draws .dp-enter { display: inline-flex; align-items: center; justify-content: center; min-width: 76px; min-height: 34px; padding: 0 14px; border-radius: 999px; border: 1.5px solid var(--text); color: var(--text); font-weight: 650; font-size: 13px; text-decoration: none; }
@media (max-width: 900px) {
  body.b-drops .b-draws > li.dp-row { grid-template-columns: 52px minmax(0, 1fr) auto; grid-template-areas: "m n a" "m p a"; row-gap: 2px; column-gap: 12px; padding: 10px 12px; }
  body.b-drops .b-draws .b-mult { grid-area: m; }
  body.b-drops .b-draws .drop-name { grid-area: n; }
  body.b-drops .b-draws .b-price { grid-area: p; text-align: left; white-space: normal; }
  body.b-drops .b-draws .dp-enter { grid-area: a; min-width: 64px; }
}

body.b-drops .b-draws > li.dp-row { grid-template-columns: 64px minmax(0, 1fr) minmax(0, 340px) auto; }
body.b-drops .b-draws .b-price { white-space: normal; text-align: right; line-height: 1.35; }
body.b-drops .b-draws .b-price small { display: block; }
@media (max-width: 900px) { body.b-drops .b-draws > li.dp-row { grid-template-columns: 52px minmax(0, 1fr) auto; } body.b-drops .b-draws .b-price { text-align: left; } body.b-drops .b-draws .b-price small { display: inline; } }

/* ===== Portfolio desktop (2026-09-22, owner's screenshots) ===== */
/* The summary tiles fill the row: the value on top, five across under it. */
@media (min-width: 641px) {
  /* Six tiles under the value (Ripped joined 2026-09-24): three by two, no orphan. */
  body.b-pf .pf-totals { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body.b-pf .pf-totals .pf-tile { min-width: 0; }
}
/* A tile's number and its change wrap instead of running past the edge. */
body.b-pf .pf-tile .pf-v { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 6px; }
body.b-pf .pf-tile .pf-v small { margin-left: 0; font-family: inherit; white-space: nowrap; }
/* Trend: the window is said once, by the reading beside the line. */
body.b-pf .pf-table td.trend .s-spark-label { display: none; }
/* Row actions stay inside the table: nothing clipped at the right edge. */
body.b-pf .pf-wrap { overflow-x: auto; }
body.b-pf .pf-table td.acts-cell { white-space: nowrap; }
body.b-pf .pf-table .acts { display: inline-flex; gap: 4px; }
body.b-pf .pf-table .acts button { padding: 4px 8px; }

/* ===== Portfolio on this device (2026-09-23) ===== */
/* One sign-in ask: the device bar's, not the "see your own inventory" strip. */
body.pf-local #gateBar { display: none !important; }
body.pf-local .pf-sample-acts { display: flex !important; }
body.pf-local #pfSampleBar { margin-top: 0 !important; border-top: 1px solid var(--border) !important; border-radius: 10px !important; }
body.b-pf .pf-sample-k { color: var(--text) !important; font-weight: 700; }

body.pf-local .pf-sample-acts .discord-btn { display: inline-flex !important; }

/* ---- Product pages (/p/*, 2026-09-23) ---------------------------------
   One main thing: what it sells for, then the chart. Facts are tiles with
   their own words; the chart panel is the popup's, drawn inline. */
body.b-product .set-crumbs { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.b-product .p-top { display: flex; gap: 18px; align-items: flex-start; margin-top: 10px; }
body.b-product .p-art { flex: 0 0 120px; width: 120px; height: 120px; position: relative; border-radius: 12px; background: var(--surface); border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; overflow: visible; }
body.b-product .p-art img { width: 108px; height: 108px; object-fit: contain; border-radius: 8px; }
body.b-product .p-art .p-sticker { position: absolute; right: -8px; bottom: -8px; font-size: 20px; min-width: 48px; z-index: 2; }
body.b-product .p-id { min-width: 0; flex: 1; }
body.b-product .p-eyebrow { font-size: 13px; color: var(--text-dim); font-weight: 600; }
body.b-product .p-title { font-size: 26px; margin: 4px 0 8px; }
body.b-product .p-lede { margin: 0; }
body.b-product .p-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 18px 0 12px; }
body.b-product .p-fact { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
body.b-product .p-k { font-size: 12.5px; color: var(--text-dim); font-weight: 600; }
body.b-product .p-v { font-family: 'Archivo', 'Manrope', sans-serif; font-stretch: 87.5%; font-weight: 800; font-size: 26px; letter-spacing: -0.02em; line-height: 1.1; font-variant-numeric: tabular-nums; }
body.b-product .p-fact.up .p-v { color: var(--up, #1a8f4a); }
body.b-product .p-fact.down .p-v { color: var(--down, #c23c3c); }
body.b-product .p-sig .p-v { font-family: 'Manrope', sans-serif; font-stretch: 100%; font-size: 20px; }
body.b-product .p-w { font-size: 12.5px; color: var(--text-dim); line-height: 1.4; }
body.b-product .p-stack { border: 1.5px solid var(--border); border-radius: 10px; padding: 10px 14px; margin: 0 0 12px; font-size: 14px; line-height: 1.5; }
body.b-product .p-stack b { font-weight: 800; }
body.b-product .p-stack-v.up { color: var(--up, #1a8f4a); font-weight: 700; }
body.b-product .p-stack-v.down { color: var(--down, #c23c3c); font-weight: 700; }
body.b-product .p-stack-a { color: var(--text); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
body.b-product .p-stack-w { color: var(--text-dim); }
body.b-product .p-chart-wrap { margin: 0 0 14px; }
body.b-product .chart-panel.p-chart { position: static; width: 100%; max-height: none; overflow: visible; box-shadow: none; padding: 14px 16px 12px; }
body.b-product .p-chart .chart-head { padding-right: 0; }
body.b-product .p-chart .chart-head-controls { justify-content: space-between; }
body.b-product .p-traj { font-size: 14px; line-height: 1.55; color: var(--text-dim); max-width: 70ch; margin: 0 0 14px; }
body.b-product .p-traj b { color: var(--text); }
body.b-product .p-cta { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; margin: 0 0 22px; }
body.b-product .p-setlink { color: var(--text-dim); font-weight: 650; text-decoration: none; border-bottom: 1px solid var(--border); padding: 2px 0; }
body.b-product .p-setlink:hover { color: var(--text); border-color: var(--text); }
body.b-product .p-h2 { font-size: 18px; font-weight: 800; letter-spacing: -0.01em; margin: 0 0 10px; }
body.b-product .p-sib td.num, body.b-product .p-sib th:not(:first-child) { text-align: right; font-variant-numeric: tabular-nums; }
@media (max-width: 640px) {
  body.b-product .p-top { gap: 12px; }
  body.b-product .p-art { flex-basis: 84px; width: 84px; height: 84px; }
  body.b-product .p-art img { width: 74px; height: 74px; }
  body.b-product .p-art .p-sticker { font-size: 16px; min-width: 40px; right: -6px; bottom: -6px; }
  body.b-product .p-title { font-size: 21px; }
  body.b-product .p-facts { grid-template-columns: 1fr 1fr; }
  body.b-product .p-fact.p-sig { grid-column: 1 / -1; }
  body.b-product .p-v { font-size: 22px; }
}
body.b-product .p-chart .chart-svg-wrap { max-width: 900px; }

/* ---- Market: three answers up top (2026-09-23) --------------------------
   The questions people bring, each a short list in the site's row format.
   The catalog, Pulse and the filters sit underneath as before. */
body.b-market .mk-answers { display: grid; grid-template-columns: 1fr; gap: 12px; margin: 0 0 18px; }
body.b-market .mk-ans { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 0; }
body.b-market .mk-ans summary { list-style: none; cursor: pointer; padding: 12px 14px 10px; display: flex; flex-direction: column; gap: 2px; }
body.b-market .mk-ans summary::-webkit-details-marker { display: none; }
body.b-market .mk-ans summary h2 { margin: 0; font-size: 17px; font-weight: 800; letter-spacing: -0.01em; color: var(--text); text-transform: none; }
body.b-market .mk-ans summary h2::after { content: ' ›'; color: var(--text-dim); font-weight: 500; }
body.b-market .mk-ans[open] summary h2::after { content: ''; }
body.b-market .mk-ans-sum { font-size: 13px; color: var(--text-dim); line-height: 1.4; }
body.b-market .mk-ans-list { display: block; list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
body.b-market .mk-ans-list > li.dp-row { display: grid; grid-template-columns: 52px minmax(0, 1fr) auto; grid-template-areas: "m n a" "m p a"; row-gap: 2px; column-gap: 12px; align-items: center; padding: 10px 14px; border-top: 1px solid var(--border); font-size: 14px; line-height: 1.3; }
body.b-market .mk-ans-list > li.dp-row:first-child { border-top: 0; }
body.b-market .mk-ans-list .b-mult { grid-area: m; font-size: 18px; min-width: 48px; }
body.b-market .mk-ans-list .drop-name { grid-area: n; font-weight: 700; color: var(--text); min-width: 0; }
body.b-market .mk-ans-list .drop-name a { color: inherit; text-decoration: none; }
body.b-market .mk-ans-list .drop-name a:hover { text-decoration: underline; }
body.b-market .mk-ans-list .b-stock-m { display: block; margin-top: 1px; font-size: 12.5px; font-weight: 500; color: var(--text-dim); }
body.b-market .mk-ans-list .b-price { grid-area: p; font-size: 13px; color: var(--text-dim); font-variant-numeric: tabular-nums; }
body.b-market .mk-ans-list .b-price b { color: var(--text); font-weight: 800; font-size: 14px; }
body.b-market .mk-ans-list .drop-add { grid-area: a; min-width: 60px; min-height: 32px; padding: 0 12px; font-size: 13px; font-weight: 650; border-radius: 999px; background: transparent !important; color: var(--text) !important; border: 1.5px solid var(--text) !important; }
body.b-market .mk-ans-more { display: block; width: 100%; text-align: left; background: none; border: 0; border-top: 1px solid var(--border); color: var(--text); font: inherit; font-size: 13px; font-weight: 700; padding: 10px 14px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
@media (min-width: 900px) {
  body.b-market .mk-answers { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; align-items: start; }
  body.b-market .mk-ans summary { pointer-events: none; }
}
body.b-market .mk-ans-list .b-price { text-align: left; }

/* ---- "Your stack" on Home (2026-09-23) ------------------------------------
   One card, only when you hold something. Sentences, not tiles. */
.b-stack { margin: 0 0 24px; padding: 14px 16px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); }
.b-stack-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.b-stack h2 { margin: 0; font-family: 'Manrope', sans-serif; font-size: 20px; font-weight: 800; letter-spacing: -0.02em; }
.b-stack-open { color: var(--text); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; font-size: 14px; white-space: nowrap; }
.b-stack-line { margin: 6px 0 0; font-size: 15px; line-height: 1.5; max-width: 70ch; }
.b-stack-line b { font-family: 'Archivo', 'Manrope', sans-serif; font-stretch: 87.5%; font-weight: 800; font-size: 20px; letter-spacing: -0.02em; }
.b-stack-line .up { color: var(--up); font-weight: 700; }
.b-stack-line .down { color: var(--down); font-weight: 700; }
.b-stack-sub { margin: 4px 0 0; font-size: 13.5px; color: var(--text-dim); line-height: 1.5; max-width: 70ch; }
.b-stack-sub b { color: var(--text); }
@media (max-width: 640px) { .b-stack { padding: 12px; } .b-stack h2 { font-size: 18px; } }

/* ---- Your stack on Market (2026-09-23) -------------------------------------
   "You hold 2, on your list" under a card's name and in the table; the
   "Only mine" switch sits with the view buttons. */
body.b-market .mk-mine { display: inline-block; margin: 2px 0 0; padding: 1px 8px; border-radius: 999px; border: 1px solid var(--border-strong, var(--border)); background: var(--surface-2, transparent); color: var(--text); font-size: 12px; font-weight: 650; line-height: 1.5; }
body.b-market .mk-card .mk-mine { margin: 0 0 4px; align-self: flex-start; }
body.b-market .mk-card .mk-mine.mk-mine-none { visibility: hidden; }
body.b-market .mk-table td.name .mk-mine { display: inline-block; margin-left: 6px; }
body.b-market .mk-only-mine { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; min-height: 32px; padding: 0 12px; border-radius: 999px; border: 1.5px solid var(--text); color: var(--text); font-size: 13px; font-weight: 650; }
body.b-market .mk-only-mine[aria-pressed="true"] { background: var(--text); color: var(--bg); }
@media (max-width: 640px) { body.b-market .mk-only-mine { min-height: 36px; } }
body.b-page .p-free-note { margin: 8px 0 4px; font-size: 13px; color: var(--text-dim); line-height: 1.5; } body.b-page .p-free-note a { color: var(--text); font-weight: 700; }

/* ---- Back, for the Home Screen app (2026-09-23) ---------------------------
   Only drawn in standalone mode by back.js, above the breadcrumbs. */
.b-back { all: unset; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; min-height: 36px; padding: 0 12px 0 6px; margin: 4px 0 6px; border-radius: 999px; border: 1.5px solid var(--border); color: var(--text); font: inherit; font-size: 14px; font-weight: 700; }
.b-back:active { background: var(--surface-2, var(--surface)); }

/* ===== Batch 2 (2026-09-23): the layout audit's fixes ======================
   AUDIT_layout_2026-09-23.md, items 2-7, 9, 11-14, 16-20. Each block names
   its item. Nothing here changes what a page says, only where things sit. */

/* 2. Most watched: rows never wider than their box; names truncate. */
body.b-home .watch-top { max-width: 100%; overflow: hidden; }
body.b-home .watch-row { max-width: 100%; width: 100%; box-sizing: border-box; }
body.b-home .watch-name { flex: 1 1 0; min-width: 0; }
body.b-home .watch-fill { max-width: 100%; }

/* 4. Closed set rows sit close together; the tall gap is for open sets. */
body.b-page .family-heading { margin-top: 0; margin-bottom: 0; padding-top: 9px; padding-bottom: 9px; min-height: 36px; box-sizing: border-box; }
body.b-page .family-heading + .family-heading { border-top: 0; }

/* 5. Market's game tabs wrap on a phone instead of clipping with no cue. */
@media (max-width: 640px) {
  body.b-market .mk-tabs { flex-wrap: wrap; overflow: visible; row-gap: 0; column-gap: 16px; }
}

/* 6, 7. Tables on phones keep the Market column and lose "30 days"; the
   multiple column keeps its width so "Multiple" is never "Multip". */
@media (max-width: 640px) {
  body.b-product .p-sib th:not(:first-child), body.b-product .p-sib td.num { display: table-cell; }
  body.b-product .p-sib th:nth-child(4), body.b-product .p-sib td:nth-child(4) { display: none; }
  body.b-set .set-table th:nth-child(6), body.b-set .set-table td:nth-child(6) { display: none; }
  body.b-set .set-table th:nth-child(5), body.b-set .set-table td:nth-child(5),
  body.b-product .p-sib th:nth-child(3), body.b-product .p-sib td:nth-child(3) { min-width: 64px; white-space: nowrap; }
  body.b-set .set-table th:first-child, body.b-set .set-table td:first-child, body.b-set .set-table tbody th { max-width: 46vw; overflow-wrap: anywhere; }
}

/* 9. One sign-in ask per screen: the gate sentence carries no second "Sign in". */
body.b-page .gate-bar .gate-k { font-weight: inherit; color: inherit; }

/* 11. Portfolio lot on a phone: the plan and the actions share one row; the
   alert chip stays on one line under the market figure. */
@media (max-width: 640px) {
  body.b-pf .pf-table tr[data-lot]:not(.pf-editing) td.plan:has(.pf-plan) { order: 9; flex: 0 0 auto; margin: 8px auto 0 0; }
  body.b-pf .pf-table tr[data-lot]:not(.pf-editing) td.acts-cell { order: 10; flex: 0 0 auto; margin: 8px 0 0 auto; }
  body.b-pf .pf-table .acts { gap: 6px; }
  body.b-pf .pf-table .acts button, body.b-pf .pf-table .acts a { padding: 0 10px !important; }
  body.b-pf .pf-table td[data-l="Market"] .pf-hit, body.b-pf .pf-table td[data-l="Market"] .pf-target { white-space: nowrap; font-size: 12px; }
  /* The chip fits its column (2026-09-25): "Reached $130.22" ran past its
     own border in the ~150px Market column; it may wrap, as a rounded box. */
  body.b-pf .pf-table td[data-l="Market"] .pf-hit { display: inline-block; max-width: 100%; box-sizing: border-box; white-space: normal; line-height: 1.3; border-radius: 8px; }
}

/* 13. No orphan tiles: "To sell" spans the phone row; the product page's
   facts fill their row however many there are. */
/* (Six tiles since 2026-09-24: two across on phones fills every row.) */
body.b-product .p-facts { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
@media (max-width: 640px) { body.b-product .p-facts { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); } }

/* 14. Portfolio view chips wrap rather than clip. */
body.b-pf .pf-bar .pf-views, body.b-pf #pfViews { flex-wrap: wrap; overflow: visible; max-width: 100%; }

/* 16. Yellow means the sticker. Underlines take the text's own colour;
   badges are ink. */
:root[data-theme="light"] body.b-page a { text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); }
@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) body.b-page a { text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); } }
body.b-page .bell-dot { background: var(--text) !important; color: var(--bg) !important; }

/* 17. Nothing under 12px. */
body.b-page .family-heading .fam-year, body.b-page .mk-list .family-heading .fam-year { font-size: 12px; opacity: 0.7; }
body.b-page .bell-dot { font-size: 12px; min-width: 18px; height: 18px; line-height: 18px; }

/* 18. Tap targets: 36px boxes for the small controls a thumb hunts for. */
body.b-page .highlight-strip .hl-count, body.b-page .mk-info, body.b-page #dropTonight .drop-all-link,
body.b-page .b-stack-open, body.b-page .p-stack-a, body.b-page .pf-th-btn, body.b-page .paste-panel-browse-hint {
  min-height: 36px; display: inline-flex; align-items: center; box-sizing: border-box;
}
body.b-page .mk-pulse-signals .mk-signal { min-height: 36px; }
body.b-page .account-menu a, body.b-page .account-link { min-height: 36px; display: flex; align-items: center; }

/* 19. Product page breadcrumb: two crumbs, never wider than the page. */
body.b-product .set-crumbs { max-width: 100%; }

/* 20. Foldable Home: "All drops" stays beside the time, never on its own line under a hole. */
@media (min-width: 420px) and (max-width: 640px) {
  #dropTonight:not(.drop-folded) .drop-tonight-head { grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; }
  #dropTonight:not(.drop-folded) .drop-all-link { grid-column: 2; grid-row: 1; justify-self: end; }
  #dropTonight:not(.drop-folded) .drop-tonight-when { grid-column: 1 / -1; grid-row: 2; }
}

/* ===== Batch 2b (2026-09-23): products within the first phone screen ======
   1. The list tools fold into one row on a phone (design.js foldTools);
   3. the search row sticks to the top on a phone, so Filters is always one
      tap away and the floating pill that covered "+ Add" can go. */
@media (max-width: 640px) {
  body.b-home .b-tools-fold { margin: 0 0 18px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); }
  body.b-home .b-tools-fold > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px; min-height: 46px; padding: 8px 14px; }
  body.b-home .b-tools-fold > summary::-webkit-details-marker { display: none; }
  body.b-home .b-tools-fold > summary::before { content: '▸'; font-size: 12px; color: var(--text-faint); width: 10px; flex: none; }
  body.b-home .b-tools-fold[open] > summary::before { content: '▾'; }
  body.b-home .b-tools-fold .b-tools-k { font-size: 15px; font-weight: 700; color: var(--text); flex: none; }
  body.b-home .b-tools-fold .b-tools-sub { font-size: 13.5px; color: var(--text-dim); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.b-home .b-tools-fold[open] > summary { border-bottom: 1px solid var(--border); }
  /* Inside the fold the five blocks keep their joined look, without the outer frame. */
  body.b-home .b-tools-fold #homeBlocks > .paste-panel, body.b-home .b-tools-body > .paste-panel { border-top-width: 0 !important; border-radius: 0 !important; }
  body.b-home .b-tools-body > * { border-left-width: 0 !important; border-right-width: 0 !important; }
  body.b-home .b-tools-body > :last-child, body.b-home .b-tools-body > #pulse:not([hidden]), body.b-home .b-tools-body > #myListBar:has(+ #pulse[hidden]) { border-bottom-width: 0 !important; border-radius: 0 0 10px 10px !important; margin-bottom: 0 !important; }

  body.b-home main > .controls, body.b-market main > .controls { position: sticky; top: 0; z-index: 20; background: var(--bg); padding: 8px 0; margin: 0 0 8px; border-bottom: 1px solid var(--border); }
  body.b-home .jump-bar, body.b-market .jump-bar { display: none !important; }
  /* The jump bar's 96px is gone; the tab bar's 78px stays (polish audit 2026-09-23: the footer sat under the bar). */
  body.b-home, body.b-market { padding-bottom: calc(78px + env(safe-area-inset-bottom)); }
}

/* 7 (again). Set page table on a phone: fixed columns so nothing clips;
   the name column takes what is left. */
@media (max-width: 640px) {
  body.b-set .set-table { width: 100%; table-layout: fixed; }
  body.b-set .set-table th, body.b-set .set-table td { padding: 10px 8px; }
  body.b-set .set-table th:first-child, body.b-set .set-table td:first-child, body.b-set .set-table tbody th { max-width: none; width: 42%; }
  body.b-set .set-table th:nth-child(3), body.b-set .set-table td:nth-child(3) { width: 19%; }
  body.b-set .set-table th:nth-child(4), body.b-set .set-table td:nth-child(4) { width: 23%; }
  body.b-set .set-table th:nth-child(5), body.b-set .set-table td:nth-child(5) { width: 16%; min-width: 0; }
  body.b-set .set-table td.num, body.b-set .set-table td.num b { font-size: 14px; white-space: nowrap; }
}

/* 20 (again). The folded drop card at a phone or foldable width: title, time
   and "All drops" flow on one line and wrap without holes. */
@media (max-width: 640px) {
  #dropTonight.drop-folded .drop-tonight-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 12px; }
  #dropTonight.drop-folded .drop-tonight-head h2 { margin: 0; }
  #dropTonight.drop-folded .drop-tonight-head .drop-all-link { margin-left: auto; }
  #dropTonight.drop-folded .drop-tonight-head .drop-tonight-when { flex: 0 1 auto; }
}

/* ===== Market answers: box art on every row (2026-09-23, owner's ask) =====
   The white tile the cards use, 56px, with the sticker on its corner. */
body.b-market .mk-ans-list > li.dp-row { grid-template-columns: 60px minmax(0, 1fr) auto; column-gap: 14px; padding: 10px 14px 10px 12px; }
body.b-market .mk-ans-list .mk-ans-art { grid-area: m; position: relative; width: 56px; height: 56px; flex: none; display: flex; align-items: center; justify-content: center; background: #fff; border-radius: 6px; box-shadow: inset 0 0 0 1px var(--border); }
body.b-market .mk-ans-list .mk-ans-art img { width: 50px; height: 50px; object-fit: contain; border-radius: 4px; background: #fff; display: block; }
body.b-market .mk-ans-list .mk-ans-art img.mk-pad { width: 44px; height: 44px; }
body.b-market .mk-ans-list .mk-ans-art .s-thumb-empty { width: 44px; height: 44px; border-radius: 4px; background: var(--surface-2); }
body.b-market .mk-ans-list .mk-ans-art .b-mult.b-sticker { position: absolute; right: -8px; bottom: -8px; min-width: 0; font-size: 13px; padding: 2px 5px 1px; line-height: 1.2; z-index: 2; }

/* ===== Generated pages carry the site's header (2026-09-23, chrome_markup.mjs) =====
   The wordmark is one link: mark and name side by side, no underline, as on
   the hand-kept pages. */
header .wordmark > a { display: flex; align-items: center; gap: 10px; color: inherit; text-decoration: none !important; }
header .wordmark > a .wordmark-name { font-family: 'Unbounded', sans-serif; font-weight: 800; font-size: 26px; letter-spacing: -0.02em; line-height: 1; }
body.b-set .wordmark { margin: 0; }
body.b-set .set-crumbs, body.b-product .set-crumbs { margin: 4px 0 12px; }

/* ===== Small things from the layout audit (2026-09-23, items 21-25) ===== */
/* 21. One chevron for every fold. */
body.b-home details.paste-import > summary { list-style: none; }
body.b-home details.paste-import > summary::-webkit-details-marker { display: none; }
body.b-home details.paste-import > summary::before { content: '▸'; font-size: 12px; color: var(--text-faint); display: inline-block; width: 10px; margin-right: 6px; }
body.b-home details.paste-import[open] > summary::before { content: '▾'; }
body.b-pf .pf-caret { display: inline-block; margin-right: 5px; }
/* 22. Signed out, the one free answer uses the width: two columns of rows. */
@media (min-width: 900px) {
  body.b-market .mk-answers.mk-answers-free { grid-template-columns: 1fr; }
  body.b-market .mk-answers-free .mk-ans-list { column-count: 2; column-gap: 0; }
  body.b-market .mk-answers-free .mk-ans-list > li.dp-row { break-inside: avoid; }
}
/* 24. The market figure keeps its right edge; the alert link sits under it. */
@media (min-width: 641px) {
  body.b-pf .pf-table td[data-l="Market"] .pf-set-target { display: block; width: fit-content; margin: 2px 0 0 auto; }
}
/* 25. Deleting the account is a quiet line at the foot of the menu, not a pill beside Sign out. */
body.b-page .account-pop .account-danger { all: unset; cursor: pointer; margin-top: 6px; font-size: 12.5px; color: var(--text-faint); text-decoration: underline; text-underline-offset: 3px; min-height: 0; }
body.b-page .account-pop .account-danger:hover, body.b-page .account-pop .account-danger:focus-visible { color: var(--danger); outline: none; }

/* ===== Chart panel, Add a lot, Notifications (2026-09-23, layout audit 15 and the unranked two) ===== */
/* The range pills and the links read left to right in their cluster, one row each. */
body.b-page .chart-head-split .chart-ranges, body.b-page .chart-head-split .chart-actions { justify-content: flex-start; }
body.b-page .chart-head-split .chart-head-controls { justify-content: flex-start; }
/* An odd last stat tile spans the row on a phone, so nothing sits beside a hole. */
@media (max-width: 640px) { body.b-page .chart-stats .cs:last-child:nth-child(odd) { grid-column: 1 / -1; } }
/* The product picker's list sits over everything under it, including the card's own Add button. */
body.b-pf .pf-add { overflow: visible; }
body.b-pf .pf-hits { z-index: 40; }
/* A short page keeps its footer at the foot, not mid-screen. */
body:has(main.nt-wrap) > .wrap { min-height: calc(100vh - 24px); display: flex; flex-direction: column; }
body:has(main.nt-wrap) > .wrap > main { flex: 1 0 auto; }

/* ===== One pill, one meaning (2026-09-23, layout audit item 10) ==========
   Outlined pill = adds something. Underlined text = opens something. A
   segmented control = a view. A pressed state is an outline, not a fill. */
body.b-market .mk-ans-list .drop-add.mk-ans-chart { all: unset; cursor: pointer; grid-area: a; font-size: 13.5px; font-weight: 600; color: var(--text-dim) !important; background: none !important; border: 0 !important; border-radius: 0 !important; min-width: 0; min-height: 36px; box-sizing: border-box; display: inline-flex; align-items: center; text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; padding: 0 4px; }
body.b-market .mk-ans-list .drop-add.mk-ans-chart:hover, body.b-market .mk-ans-list .drop-add.mk-ans-chart:focus-visible { color: var(--text); text-decoration-color: currentColor; }
/* The view tools are one row of their own under the filters, at every width:
   Expand, Collapse, the Cards/Table control, then Only mine. Sharing the
   filter row on a wide screen left them wrapping in a corner (owner, 2026-09-23). */
body.b-market .controls .mk-controls-extra { grid-column: 1 / -1; justify-content: flex-start; align-items: center; flex-wrap: wrap; gap: 8px 14px; padding: 0; }
body.b-market .mk-controls-extra [data-mk-expand] { all: unset; cursor: pointer; font-size: 13.5px; font-weight: 600; color: var(--text-dim); text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; padding: 8px 6px; min-height: 36px; box-sizing: border-box; display: inline-flex; align-items: center; }
body.b-market .mk-controls-extra [data-mk-expand]:hover { color: var(--text); }
body.b-market .mk-controls-extra .mk-view { display: inline-flex; padding: 3px; border: 1.5px solid var(--border-strong); border-radius: 999px; margin-left: 0; }
body.b-market .mk-controls-extra .mk-view button { all: unset; cursor: pointer; padding: 6px 14px; border-radius: 999px; font-size: 13.5px; font-weight: 600; color: var(--text-dim); }
body.b-market .mk-controls-extra .mk-view button[aria-pressed="true"] { background: var(--text); color: var(--bg); }
body.b-market .mk-controls-extra .mk-view button:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
body.b-page .buy-list-bar button.on, body.b-page #myListOnlyBtn.on { background: transparent !important; color: var(--text) !important; border: 1.5px solid var(--text) !important; }

/* ===== Market answers line up (2026-09-23, owner) ==========================
   Three cards side by side: the summary under each heading gets the same
   height whether it runs one line or two, so the three lists start on the
   same line across the row. */
@media (min-width: 900px) {
  /* Cards share a height; market-answers.js alignRows() gives each row
     across the three cards the height of its tallest, so row 2 sits beside
     row 2 whatever wraps (subgrid does not reach into <details> in WebKit). */
  body.b-market .mk-answers:not(.mk-answers-free) { align-items: stretch; }
  body.b-market .mk-answers:not(.mk-answers-free) .mk-ans { display: flex; flex-direction: column; }
  body.b-market .mk-answers:not(.mk-answers-free) .mk-ans-more { margin-top: auto; }
  body.b-market .mk-ans-list > li.dp-row { box-sizing: border-box; }
}
/* The direction, as a glyph a glance can read (owner, 2026-09-23). */
body.b-market .mk-ans-list .mk-ans-dir { font-weight: 800; margin-right: 2px; }
body.b-market .mk-ans-list .mk-ans-dir.up { color: var(--up); }
body.b-market .mk-ans-list .mk-ans-dir.down { color: var(--down); }

/* 26. Polish audit, 2026-09-23 (AUDIT_polish_2026-09-23.md). */
/* The count and its word touch on desktop: inline-flex swallowed the space. */
body.b-page .highlight-strip .hl-count { gap: 0.3em; }
/* "No market price yet" keeps the bold price's line box, so a row of cards stays level. */
#listRoot .b-card .b-sells-none::after, body.b-market .mk-list .b-card .b-sells-none::after { content: "\200B"; font-size: 17px; font-weight: 800; }
@media (max-width: 640px) {
  #listRoot .b-card .b-sells-none::after, body.b-market .mk-list .b-card .b-sells-none::after { font-size: 16px; }
  /* The set table's last column keeps its right padding; the header read "Multiple" against the edge. */
  body.b-set .set-table th:last-child, body.b-set .set-table td:last-child { padding-right: 12px !important; }
  /* Two more 36px targets a thumb hunts for: the price-history link under a card and a game's fold row. */
  #listRoot .b-trend { min-height: 36px; display: inline-flex; align-items: center; }
  .game-heading { min-height: 36px; }
  /* The tools summary wraps instead of cutting a word. */
  body.b-home .b-tools-fold .b-tools-sub { white-space: normal; overflow: visible; text-overflow: clip; }
}
/* One gap between "Sign in" and its sentence (the 4px margin plus a space read as two). */
body.b-page .gate-bar .gate-k { margin-right: 0; }

/* 27. Polish audit, batch 16 (2026-09-24): every control a thumb hunts for is 36px on a phone. */
@media (max-width: 640px) {
  header .discord-btn, .gate-bar .discord-btn, a.discord-btn, #ntSigninBtn,
  .track-btn, #listRoot .s-card.b-card .s-actions .track-btn, #dropTonight .track-btn, body.b-drops .track-btn,
  .b-trend-locked, .mk-add, body.b-page .chart-link, body.b-page .chart-range,
  .highlight-strip .hl-more, .mk-movers-fold > summary, .mk-stub { min-height: 36px !important; box-sizing: border-box; }
  .highlight-strip .hl-more, .mk-stub, body.b-set .set-crumbs a { display: inline-flex; align-items: center; }
  body.b-set .set-crumbs a { min-height: 36px; }
  /* Product names that are links: the tap target grows without moving the text. */
  body.b-drops .drop-name > a, body.b-market .mk-ans-list .drop-name > a, #dropTonight .drop-name > a,
  #listRoot .b-card .b-name a, body.b-market .mk-list .b-card .b-name a { display: inline-block; padding: 9px 0; margin: -9px 0; }
  /* The rest of the under-36 list from the audit's after-run: Market's card buttons and name, the sparkline and
     trend buttons (hit area grows, the drawing does not move), the header menus, the set pills, the tour's close. */
  body.b-market .mk-list .b-card .b-actions .track-btn, body.b-market .mk-list .b-card .b-name[role="button"] { min-height: 36px !important; height: auto !important; }
  body.b-market .mk-list .b-card .b-name[role="button"] { display: flex; align-items: center; }
  /* The tap area is a pseudo-element, so the button keeps the SVG's box (the end dot is placed by percent of it). */
  .b-spark .s-spark::before { content: ''; position: absolute; left: 0; right: 0; top: -9px; bottom: -9px; }
  body.b-market .mk-list .b-trend { min-height: 36px; display: inline-flex; align-items: center; }
  .mk-compare > summary { min-height: 36px; }
  .bell-menu > summary, .account-menu > summary { min-height: 36px !important; min-width: 36px; box-sizing: border-box; }
  .family-heading .fam-traj, .mk-list .family-heading .fam-traj { min-height: 36px !important; }
  .tour-offer-x { width: 36px !important; height: 36px !important; }
  .mk-score button { min-height: 36px; }
}
/* The changes line reads as a sentence, not an A · B · C string (rule 24). */
.highlight-strip .hl-sep { margin: 0 6px 0 0; }
/* The end dot sits on the line only when the button is the SVG's box: 18px, on every page (app.css gave Market's 32). */
.b-spark .s-spark { height: 18px !important; min-height: 0 !important; padding: 0 !important; }

/* 28. Polish audit, batch 18 (2026-09-24): the full run's signed-in and foldable leftovers. */
@media (max-width: 640px) {
  .chart-stats-note > summary { min-height: 36px; display: flex; align-items: center; box-sizing: border-box; }
  .mk-pulse > summary { min-height: 36px; box-sizing: border-box; }
}
/* Yellow means the sticker (one pill, one meaning). A switch that is on is ink, like the primary buttons. */
.nt-switch input:checked + span { background: var(--text) !important; border-color: var(--text) !important; }
.nt-switch input:checked + span::after { background: var(--bg) !important; }

/* Tablet widths (641-940, 2026-09-24): the name, the tabs and the sign-in
   button do not fit on one line (the button covered Portfolio at 768 on every
   page). The name takes the first row beside the account box; the tabs get
   their own row, underline and rule unchanged. */
@media (min-width: 641px) and (max-width: 940px) {
  body.b-page header .wordmark { flex: 0 0 100%; }
}

/* 29. The header rule sits under the tabs on every page (owner, 2026-09-24: on
   Portfolio and Market it sat under the lede or the game tabs, 80 to 210px lower
   than on Catalog and Drops). The header is a grid: name and tabs on the first
   row, the rule drawn as its own row, and whatever else the page keeps in its
   header after that. */
@media (min-width: 641px) {
  body.b-page header, body.b-market header { display: grid; grid-template-columns: auto 1fr; column-gap: 36px; align-items: center; border-bottom: 0; }
  body.b-page header .wordmark, body.b-market header .wordmark { grid-row: 1; grid-column: 1; }
  body.b-page header .site-switch, body.b-market header .site-switch { grid-row: 1; grid-column: 2; align-self: stretch; justify-self: start; }
  body.b-page header::after, body.b-market header::after { content: ''; grid-row: 2; grid-column: 1 / -1; height: 1px; background: var(--border); }
  body.b-page header > :not(.wordmark):not(.site-switch):not(.account), body.b-market header > :not(.wordmark):not(.site-switch):not(.account) { grid-column: 1 / -1; }
}
/* Tablet widths keep the other session's split (2026-09-24): the name on its own row, the tabs under it, the rule under the tabs. */
@media (min-width: 641px) and (max-width: 940px) {
  body.b-page header .wordmark, body.b-market header .wordmark { grid-column: 1 / -1; }
  body.b-page header .site-switch, body.b-market header .site-switch { grid-row: 2; grid-column: 1 / -1; }
  body.b-page header::after, body.b-market header::after { grid-row: 3; }
}

/* 30. Market: Pulse and the index fold look like the three answers above them
   (owner's circle, 2026-09-24): a title with the chevron after it, one line of
   read under it, no triangle before. Batch 18's inline-flex on these summaries
   had also pushed the index fold's read line out of sight on phones. */
body.b-market .mk-pulse > summary, body.b-market .mk-compare > summary { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 0; margin: 0; cursor: pointer; }
/* The read line shows while the fold is closed (app.css hid it), the way the answers' summaries do. */
body.b-market #mkCompare:not([open]) .mk-compare-sum { display: block; }
body.b-market .mk-pulse > summary h2, body.b-market .mk-compare > summary h2 { margin: 0; font-size: 17px; font-weight: 800; letter-spacing: -0.01em; color: var(--text); text-transform: none; }
body.b-market .mk-pulse > summary h2::before, body.b-market .mk-compare > summary h2::before { content: none; }
body.b-market .mk-pulse > summary h2::after, body.b-market .mk-compare > summary h2::after { content: ' \203A'; color: var(--text-dim); font-weight: 500; }
body.b-market .mk-pulse[open] > summary h2::after, body.b-market .mk-compare[open] > summary h2::after { content: ''; }
body.b-market .mk-pulse > summary .mk-pulse-sum, body.b-market .mk-compare > summary .mk-compare-sum { font-size: 13.5px; color: var(--text-dim); line-height: 1.45; }

/* 31. Market: the folds sit 12px apart like the answer cards (owner, 2026-09-24:
   Pulse and the index fold touched, and read as one card overlapping another). */
body.b-market .mk-answers { margin-bottom: 12px; }
body.b-market .mk-pulse { margin: 0 !important; }
body.b-market .mk-compare { margin: 12px 0 0 !important; border-top: 1px solid var(--border) !important; border-radius: 10px !important; }
body.b-market .mk-pulse { border-radius: 10px !important; }

/* Sign-in buttons are outlined pills everywhere (24 Sep audit: Drops' "Sign in with
   Discord" and Market's "Sign in" were grey fills). The two panels that make sign-in
   their one primary action keep their filled button. */
body.b-page .discord-btn:not(.mk-add-panel .discord-btn):not(.b-got-note .discord-btn) {
  background: transparent !important; border: 1.5px solid var(--text) !important; color: var(--text) !important; border-radius: 999px; font-weight: 700; }
body.b-page .discord-btn:not(.mk-add-panel .discord-btn):not(.b-got-note .discord-btn):hover { background: var(--text) !important; color: var(--bg) !important; }

/* The chart panel's numbers are rows of the chart card, not cards of their own
   (24 Sep: "Now", the six moves, the range and the signal were boxes inside the
   card, and the moves were boxes inside a box inside it). One hairline above
   each group; the numbers sit on the card. */
body.b-page .chart-panel .chart-stats { background: none !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
  border-top: 1px solid var(--border) !important; padding-top: 10px; gap: 6px 18px; }
body.b-page .chart-panel .cs { background: none !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; padding: 2px 0 !important; }

/* List tools, folded on a phone (24 Sep, from the owner's screenshot): its rows are
   rows of one card. Moved into the fold they fell back to their standalone look:
   Paste kept 10px gaps above and below, the changes strip its own rounded box, My
   list and Pulse a second left edge, Most watched a box and faint grey text. The
   joined-card rules above name these rows by id, so these do too, or they lose. */
@media (max-width: 640px) {
  body.b-home #toolsFold .b-tools-body > #pastePanel, body.b-home #toolsFold .b-tools-body > #highlightStrip,
  body.b-home #toolsFold .b-tools-body > #watchingDetails, body.b-home #toolsFold .b-tools-body > #myListBar,
  body.b-home #toolsFold .b-tools-body > #pulse {
    margin: 0 !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: transparent !important; }
  body.b-home #toolsFold .b-tools-body > :not([hidden]) ~ #highlightStrip:not([hidden]),
  body.b-home #toolsFold .b-tools-body > :not([hidden]) ~ #watchingDetails:not([hidden]),
  body.b-home #toolsFold .b-tools-body > :not([hidden]) ~ #myListBar:not([hidden]),
  body.b-home #toolsFold .b-tools-body > :not([hidden]) ~ #pulse:not([hidden]) { border-top: 1px solid var(--border) !important; }
  body.b-home #toolsFold #watchingDetails > summary { color: var(--text); font-weight: 700; opacity: 1; }
}

/* My list's buttons on a phone: one size, one style, one grid (24 Sep, owner: "they
   look inconsistent, different sizes"). They were 35px and 44px tall, as wide as
   their words, and one of five was filled. Now two equal columns, 44px, outlined;
   Copy for Poke Snipes, the longest, takes its own row first. */
@media (max-width: 640px) {
  body.b-home #myListBar:not(.buy-list-empty) { display: grid !important; grid-template-columns: 1fr 1fr; gap: 8px; align-items: center; }
  body.b-home #myListBar:not(.buy-list-empty) > * { grid-column: 1 / -1; order: 0; }
  body.b-home #myListBar:not(.buy-list-empty) > button:not([hidden]) {
    grid-column: auto; width: 100%; height: 44px; min-height: 44px; margin: 0; padding: 0 12px; box-sizing: border-box;
    display: inline-flex; align-items: center; justify-content: center; gap: 8px; white-space: nowrap;
    font-size: 14px; font-weight: 700; border-radius: 999px;
    background: transparent !important; color: var(--text) !important; border: 1.5px solid var(--text) !important; box-shadow: none !important; }
  body.b-home #myListBar:not(.buy-list-empty) > #myListCopyBotBtn { grid-column: 1 / -1; order: 1; }
  body.b-home #myListBar:not(.buy-list-empty) > #myListCopyBotBtn img { width: 22px; height: 22px; flex: none; }
  body.b-home #myListBar:not(.buy-list-empty) > #myListCopyBtn { order: 2; }
  body.b-home #myListBar:not(.buy-list-empty) > #myListOnlyBtn { order: 3; }
  body.b-home #myListBar:not(.buy-list-empty) > #myListHistoryBtn { order: 4; }
  body.b-home #myListBar:not(.buy-list-empty) > #myListClearBtn { order: 5; }
  /* Without Earlier versions: Show only my list pairs with Clear, and Copy takes the full row
     (a full-width Clear made the destructive button the loudest thing in the block). */
  body.b-home #myListBar:not(.buy-list-empty):has(#myListHistoryBtn[hidden]) > #myListCopyBtn { grid-column: 1 / -1; order: 4; }
  body.b-home #myListBar:not(.buy-list-empty):has(#myListHistoryBtn[hidden]) > #myListClearBtn { order: 3; }
  body.b-home #myListBar:not(.buy-list-empty) > .buy-list-ship, body.b-home #myListBar:not(.buy-list-empty) > #profileBar,
  body.b-home #myListBar:not(.buy-list-empty) > #myListHistory { order: 6; }
  body.b-home #myListBar:not(.buy-list-empty) > button:not([hidden]):disabled { opacity: .45; }
  body.b-home #myListBar:not(.buy-list-empty) > #myListOnlyBtn.on { background: var(--text) !important; color: var(--bg) !important; }
}

/* Found by the audit's open-state and heavy-user passes (24 Sep). */
/* Portfolio: a long name wraps to two lines inside its column. The name is a button, and
   a block button still shrinks to its text, so it laid out on one wide line and was
   clipped mid-word ("Evolving Skies Pokemon Cen"). */
body.b-pf .pf-table button.pf-name { width: 100%; max-width: 100%; box-sizing: border-box; text-align: left; }
/* Paste: the spreadsheet picker stays inside the card on a phone (it ran 16px past it). */
body.b-pf .pf-bulk-file label { display: block; }
body.b-pf .pf-bulk-file input[type="file"] { display: block; max-width: 100%; margin-top: 6px; }
/* Every control is 36px to tap on a phone: the movers' 7d / 30d, Market's Cards / Table
   and the method ⓘ were 28 to 34. The view switch takes the site's 13px like its neighbours. */
@media (max-width: 640px) {
  body.b-page .mk-win button { min-height: 36px !important; box-sizing: border-box; }
  body.b-page .mk-info { width: 36px; height: 36px; }
}
body.b-market .mk-controls-extra .mk-view button { display: inline-flex; align-items: center; min-height: 36px; box-sizing: border-box; padding: 0 14px; font-size: 13px; }
/* Most watched: long names stay inside the card and end in an ellipsis, with the share
   beside them (on an iPhone they ran past the card and the share was never seen). The
   list is a grid, and a grid row grows to its text unless it is told it may shrink. */
body.b-home .watch-top { grid-template-columns: minmax(0, 1fr); }
body.b-home .watch-top > li { min-width: 0; }
/* Long names take two lines, like every other product name on the site, rather than an ellipsis. */
body.b-home .watch-name { white-space: normal; text-overflow: clip; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.3; }
body.b-home .watch-row { padding-top: 6px; padding-bottom: 6px; }
/* Portfolio filters on a phone: the sort menu takes its own row ("Sort: gain, most first"
   did not fit half of one). */
@media (max-width: 640px) {
  body.b-pf .pf-bar .pf-sort-sel { flex: 1 1 100% !important; grid-column: 1 / -1; width: 100% !important; max-width: none !important; }
}
/* The chart's "Near its 1-year high" note is a line of the chart card, not a box in it. */
body.b-page .chart-panel .chart-context { border: 0 !important; border-radius: 0 !important; background: none !important; box-shadow: none !important; border-top: 1px solid var(--border) !important; padding: 10px 0 0 !important; }

/* Tonight's drop: Fold is 36px to tap (a min-height of 0 left it 26x18, 24 Sep audit). */
#dropTonight:not(.drop-folded) .drop-fold-btn { min-height: 36px !important; min-width: 44px; padding: 0 8px !important; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; }

/* On your list (24 Sep; the owner took products off by mistake because "✓ In list" and "+ Add"
   looked alike). The card says the state: an outline and an "On your list" tag on the art,
   opposite the sticker, in the text colour (navy; cream in dark). Green would mean a price
   rising. The button then says the action ("Remove from list") in the quiet style. */
body.b-page #listRoot .s-card:has(.s-actions .track-btn.tracked) { box-shadow: 0 0 0 2px var(--text) !important; border-color: var(--text) !important; }
body.b-page #listRoot .s-card .s-thumb.b-art { position: relative; }
body.b-page #listRoot .s-card:has(.s-actions .track-btn.tracked) .s-thumb.b-art::after {
  content: '✓ On your list'; position: absolute; z-index: 3; left: 8px; bottom: 8px; padding: 6px 9px; border-radius: 999px;
  background: var(--text); color: var(--bg); font: 700 12px/1 'Manrope', sans-serif; letter-spacing: 0; pointer-events: none; }
body.b-page #listRoot .s-card.b-card .s-actions .track-btn.tracked, body.b-page .track-btn.tracked, body.b-page .drop-add.tracked {
  background: transparent !important; color: var(--text-dim) !important; border: 1.5px solid var(--border-strong) !important; font-weight: 600 !important; }
/* Drop rows: a check before the name, and the row's left edge in the text colour. */
body.b-page .drop-row:has(.drop-add.tracked) { box-shadow: inset 3px 0 0 var(--text); }
body.b-page .drop-row:has(.drop-add.tracked) .drop-name > a::before { content: '✓ '; font-weight: 800; color: var(--text); }

/* No longer at Target (24 Sep): products gone from Target for 30 days fold into one row at
   the end of their set, spanning the grid; open, their cards sit in the same columns. */
#listRoot .gone-fold { grid-column: 1 / -1; margin: 4px 0 8px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); }
#listRoot .gone-fold > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px; font-size: 14px; font-weight: 700; color: var(--text-dim); }
#listRoot .gone-fold > summary::-webkit-details-marker { display: none; }
#listRoot .gone-fold > summary::before { content: '▸'; font-size: 12px; color: var(--text-faint); width: 10px; }
#listRoot .gone-fold[open] > summary::before { content: '▾'; }
#listRoot .gone-fold .gone-n { font-weight: 600; color: var(--text-faint); }
#listRoot .gone-fold .gone-note { margin: 0 14px 10px; font-size: 13px; color: var(--text-dim); }
/* Open, its cards sit in a grid of the same column widths as the Catalog's. */
#listRoot .gone-fold .gone-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; padding: 0 12px 12px; }
@media (max-width: 640px) { #listRoot .gone-fold .gone-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 0 8px 8px; } }

/* Home's Recent changes and Most watched, readable at any width (24 Sep, owner's desktop
   screenshot: rows ran the full width with the name, the change and the date far apart,
   nothing had padding, "See all recent changes" was a pill the width of the card, and
   Most watched was a stack of heavy grey bars). */
body.b-home #activityDetails > .paste-import-body, body.b-home #watchingDetails > .paste-import-body { padding: 0 14px 12px; max-width: 820px; box-sizing: border-box; }
body.b-home #activityDetails > summary, body.b-home #watchingDetails > summary { font-size: 15px; font-weight: 700; color: var(--text); }
body.b-home #watchingDetails .watch-sum { font-weight: 500; color: var(--text-dim); }
body.b-home .activity-list { max-height: none; }
body.b-home .act-line { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) auto; gap: 16px; font-size: 13.5px; padding: 7px 0; border-bottom: 1px solid var(--border); }
body.b-home .act-line .act-glyph { display: none; }
body.b-home .act-line .act-when { font-family: inherit; font-size: 13px; }
body.b-home .act-up { color: var(--up); font-weight: 700; }
body.b-home .act-down { color: var(--down); font-weight: 700; }
body.b-home #activityDetails .how-link { align-self: flex-start; display: inline-block !important; width: auto !important; margin-top: 10px !important; padding: 0 !important; border: 0 !important; background: none !important; border-radius: 0 !important; font-weight: 600; color: var(--text); text-decoration: underline; text-underline-offset: 3px; min-height: 0; }
@media (max-width: 560px) {
  body.b-home .act-line { grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; }
  body.b-home .act-line .act-name { grid-column: 1; }
  body.b-home .act-line .act-when { grid-column: 2; grid-row: 1; }
  body.b-home .act-line .act-what { grid-column: 1 / -1; }
}
/* Most watched: the share is a thin bar under the name, not a grey block behind it. */
body.b-home .watch-top { gap: 0; }
body.b-home .watch-row { position: relative; padding: 9px 0 11px !important; border-bottom: 1px solid var(--border); border-radius: 0; background: none; }
body.b-home .watch-fill { inset: auto auto 3px 0 !important; height: 3px; border-radius: 2px; background: color-mix(in srgb, var(--text) 30%, transparent) !important; }
body.b-home .watch-name { font-size: 14px; }

/* 32. The odd drop (owner, 2026-09-24): an odd number of products left a hole
   at the foot of the right column. A summary tile fills it on wide screens,
   with "+ Add all"; below 1100px the list is one column and there is no hole. */
li.b-sumtile, #dropTonight .drop-tonight-list > li.b-sumtile { display: none !important; }
@media (min-width: 1100px) {
  #dropTonight .drop-tonight-list > li.b-sumtile, body.b-drops #dpNow li.b-sumtile { display: flex !important; align-items: center; justify-content: space-between; gap: 14px;
    padding: 10px 18px; border-top: 1px solid var(--border); list-style: none; }
  .b-sumtile-t { margin: 0; font-size: 14.5px; color: var(--text-dim); }
  .b-sumtile-t b { color: var(--text); }
  li.b-sumtile .track-btn { min-height: 38px; border-radius: 999px; white-space: nowrap; }
  body.b-drops #dpNow:has(li.b-sumtile) .drop-tonight-actions { display: none; }
}
/* 33. A fold says it opens (owner, 2026-09-24: "is it obvious these expand?").
   Home's folds read like Market's answers: the title, then a chevron in the
   text colour that turns down when open, instead of a faint triangle before
   it that read as a bullet. The whole row is the target and lights on hover.
   My list does not fold and has none, so the chevron means something. */
body.b-home #pastePanel > summary, body.b-home details.paste-import > summary, body.b-home #pulse > summary { list-style: none; cursor: pointer; }
body.b-home #pastePanel > summary::-webkit-details-marker, body.b-home details.paste-import > summary::-webkit-details-marker, body.b-home #pulse > summary::-webkit-details-marker { display: none; }
body.b-home details.paste-import > summary::before, body.b-home #pulse > summary h2::before, body.b-home #pastePanel > summary::before, body.b-home #pastePanel > summary h2::before { content: none !important; display: none !important; }
body.b-home #pastePanel > summary h2::after, body.b-home #pulse > summary h2::after, body.b-home details.paste-import > summary::after {
  content: '\203A'; display: inline-block; margin-left: 7px; color: var(--text); font-weight: 700; transition: transform .15s; }
body.b-home #pastePanel[open] > summary h2::after, body.b-home #pulse[open] > summary h2::after, body.b-home details.paste-import[open] > summary::after { transform: rotate(90deg); }
body.b-home details.paste-import > summary { color: var(--text); }
@media (hover: hover) {
  body.b-home #pastePanel > summary:hover, body.b-home details.paste-import > summary:hover, body.b-home #pulse > summary:hover { background: rgba(127,127,127,.07); }
}

/* 33b. The same for the phone's "List tools" fold and Pulse's "Biggest movers". */
body.b-home .b-tools-fold > summary::before, body.b-page .mk-movers-fold > summary::before { content: none !important; display: none !important; }
body.b-home .b-tools-fold > summary .b-tools-k::after, body.b-page .mk-movers-fold > summary::after { content: '\203A'; display: inline-block; margin-left: 7px; color: var(--text); font-weight: 700; transition: transform .15s; }
body.b-home .b-tools-fold[open] > summary .b-tools-k::after, body.b-page .mk-movers-fold[open] > summary::after { transform: rotate(90deg); }
body.b-page .mk-movers-fold > summary { color: var(--text); }
/* 32b. In the odd drop's tile, "+ Add all" is the page's filled pill, not a stretched outline. */
@media (min-width: 1100px) {
  #dropTonight:has(li.b-sumtile) .b-railbar #dropAddAll { display: none; }
  #dropTonight li.b-sumtile .b-sumtile-add, body.b-drops #dpNow li.b-sumtile .track-btn { flex: none; width: auto !important; margin: 0; min-height: 40px; padding: 0 18px; font-size: 14px; font-weight: 700; border-radius: 999px; }
  #dropTonight li.b-sumtile .b-sumtile-add:not(.tracked):not([disabled]), body.b-drops #dpNow li.b-sumtile .track-btn:not(.tracked):not([disabled]) { background: var(--text) !important; color: var(--bg) !important; border: 1.5px solid var(--text) !important; }
}
@media (min-width: 1100px) { #dropTonight li.b-sumtile .b-sumtile-add.tracked, #dropTonight li.b-sumtile .b-sumtile-add[disabled] { background: transparent !important; color: var(--text-dim) !important; border: 1.5px solid var(--border-strong) !important; } }

/* The chart's price says the day it was read (2026-09-25). */
body.b-page .chart-stats .cs-k .cs-asof { font-size: 12px; font-weight: 500; color: var(--text-faint); margin-left: 4px; }

/* What the list is worth, and the price notes on the chart (2026-09-25). */
.my-list-worth { margin: 6px 0 0; font-size: 13.5px; color: var(--text-dim); flex: 0 0 100%; order: 8; }
.my-list-worth b { color: var(--text); }
body.b-page .chart-stats .cs .cs-note { display: block; margin-top: 3px; font-size: 12.5px; color: var(--text-dim); }

/* Target drops on a price chart (2026-09-25): a thin line and a red mark on the date axis. */
.chart .cdrop { stroke: #cc0000; stroke-width: 1; stroke-dasharray: 1 3; opacity: .45; }
.chart .cdrop-m { fill: #cc0000; }
.lg-drop::before { content: ""; display: inline-block; width: 0; height: 0; margin-right: 6px; vertical-align: 1px;
  border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 8px solid #cc0000; border-top: 0; }
:root[data-theme="dark"] .chart .cdrop-m, :root[data-theme="dark"] .chart .cdrop { fill: #ff5a5a; stroke: #ff5a5a; }
:root[data-theme="dark"] .lg-drop::before { border-bottom-color: #ff5a5a; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .chart .cdrop-m, :root:not([data-theme="light"]) .chart .cdrop { fill: #ff5a5a; stroke: #ff5a5a; }
  :root:not([data-theme="light"]) .lg-drop::before { border-bottom-color: #ff5a5a; }
}

/* After a Target restock (2026-09-25): one sentence under the chart. */
.chart-restock { margin: 12px 0 0; padding: 10px 12px; border-left: 3px solid #cc0000; background: var(--surface-2, transparent); border-radius: 6px; }
.chart-restock-k { display: block; font-size: 12px; font-weight: 600; letter-spacing: .02em; color: var(--text-dim); margin-bottom: 2px; }
.chart-restock p { margin: 0; font-size: 14px; line-height: 1.45; }
:root[data-theme="dark"] .chart-restock { border-left-color: #ff5a5a; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .chart-restock { border-left-color: #ff5a5a; } }

/* "Did you win?" chips carry the product's picture (2026-09-25). */
.b-got-chip:has(.b-got-img) { padding-left: 4px; }
/* Did you get it? as a checklist (2026-09-28) */
.b-got-tick { width: 18px; height: 18px; border-radius: 999px; border: 1.5px solid var(--border-strong); flex: 0 0 auto; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; line-height: 1; }
.b-got-chip[aria-pressed="true"] { border-color: var(--text); box-shadow: inset 0 0 0 1px var(--text); }
.b-got-chip[aria-pressed="true"] .b-got-tick { background: var(--text); border-color: var(--text); color: var(--bg); }
.b-got-chip[aria-pressed="true"] .b-got-tick::before { content: "\2713"; }
.b-got-chip:has(.b-got-img) { padding-left: 10px; }
.b-got-chip .b-got-on { font-size: 12.5px; }
.b-got-form { align-items: center; }
.b-got-step { display: inline-flex; align-items: center; gap: 4px; }
.b-got-step button { all: unset; cursor: pointer; width: 36px; height: 36px; border-radius: 999px; border: 1.5px solid var(--border-strong); display: inline-flex; align-items: center; justify-content: center; font-size: 18px; color: var(--text); }
.b-got-step button:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
.b-got-step input { width: 56px !important; text-align: center; }
.b-got-form input { -moz-appearance: textfield; appearance: textfield; }
.b-got-form input::-webkit-inner-spin-button, .b-got-form input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.b-got-save { all: unset; cursor: pointer; min-height: 40px; padding: 0 18px; border-radius: 999px; font-size: 14.5px; font-weight: 750; background: var(--text); color: var(--bg); display: inline-flex; align-items: center; }
.b-got-save[hidden] { display: none; }
.b-got-save:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
.b-got-save:disabled { opacity: .6; cursor: default; }
.b-got-img { width: 32px; height: 32px; border-radius: 999px; object-fit: contain; background: #fff; flex: 0 0 auto; }

/* Sales tax line on Portfolio (2026-09-25). */
.pf-tax { margin: 8px 0 12px; }
.pf-tax-line { margin: 0; font-size: 14px; color: var(--text-dim); display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.pf-tax-edit { all: unset; cursor: pointer; font-weight: 650; color: var(--text); text-decoration: underline; text-underline-offset: 3px; }
.pf-tax-edit:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
.pf-tax-form { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 12px; margin-top: 8px; padding: 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); }
.pf-tax-form[hidden] { display: none; }
.pf-tax-form label { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; color: var(--text-dim); }
.pf-tax-in { display: inline-flex; align-items: center; gap: 6px; color: var(--text); font-size: 15px; }
.pf-tax-form input { width: 90px; min-height: 38px; padding: 0 10px; border: 1px solid var(--border-strong); border-radius: 8px; background: var(--bg); color: var(--text); font: inherit; font-size: 15px; }
.pf-tax-form button { min-height: 38px; padding: 0 14px; border-radius: 999px; font: inherit; font-weight: 700; cursor: pointer; }
.pf-tax-help { flex: 0 0 100%; margin: 0; font-size: 13px; color: var(--text-dim); line-height: 1.45; }
.pf-tax-calc { flex: 0 0 100%; font-size: 13.5px; color: var(--text-dim); }
.pf-tax-calc summary { cursor: pointer; color: var(--text); font-weight: 600; }
.pf-tax-calc p { margin: 8px 0; line-height: 1.45; }
.pf-tax-calc-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 12px; }
.pf-tax-calc-row button { background: transparent; color: var(--text); border: 1.5px solid var(--border-strong); }
.pf-tax-calc-out { color: var(--text); font-weight: 600; min-height: 1.2em; }

/* If you sell one (2026-09-25). */
.b-flip { display: block; margin-top: 2px; font-size: 13px; font-weight: 600; }
.b-flip.pos, .cs-flip .cs-v.pos { color: var(--up); }
.b-flip.neg, .cs-flip .cs-v.neg { color: var(--down); }
.chart-stats .cs .cs-note-plain { color: var(--text-dim); font-weight: 400; }

/* Why this number (2026-09-25): opens under the market price. */
.chart-stats .cs .cs-why { margin-top: 6px; font-size: 13px; color: var(--text-dim); }
.chart-stats .cs .cs-why summary { cursor: pointer; font-weight: 600; color: var(--text); list-style: revert; }
.chart-stats .cs .cs-why p { margin: 6px 0 0; line-height: 1.45; }
.chart-stats .cs .cs-why a { color: var(--text); }
.chart-stats .cs:has(.cs-why[open]) { grid-column: 1 / -1; flex-basis: 100%; }
/* Small phones (320-360px, 2026-09-25): the plan button sat beside the Market
   column and crushed it to one word a line; it starts its own row there. */
@media (max-width: 360px) {
  body.b-pf .pf-table tr[data-lot]:not(.pf-editing) td.plan { order: 9; flex: 1 0 100%; margin-top: 6px; }
}

/* How your selling has gone (2026-09-25): tiles above the Sold list. */
.pf-sellstats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; margin: 0 0 12px; }
.pf-ss { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); min-width: 0; }
.pf-ss-k { font-size: 12.5px; color: var(--text-dim); }
.pf-ss-v { font-size: 18px; font-weight: 800; color: var(--text); }
.pf-ss small { font-size: 12.5px; color: var(--text-dim); line-height: 1.35; overflow-wrap: anywhere; }
/* Collections (2026-09-25): the edit row's collection field sits under the note. */
body.b-pf .pf-table .pf-coll-in { margin-top: 6px; }

/* Send to Poke Snipes, red again (owner, 2026-09-26): Target red on the list
   bar, the My list view and under List tools on phones. */
body.b-page button.target-red.send-snipes, .ps-send-btn {
  background: #cc0000 !important; color: #fff !important; border: 0 !important; border-radius: 999px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 0 18px; cursor: pointer; font: inherit; font-weight: 700;
}
body.b-page button.target-red.send-snipes:hover, .ps-send-btn:hover { background: #a80000 !important; }
.ps-send-btn:focus-visible, body.b-page button.target-red.send-snipes:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
.ps-send-btn .snipes-icon { width: 22px; height: 22px; border-radius: 50%; background: #fff; flex: none; }
.ps-send-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 10px 0 14px; }
.ps-send-bar[hidden] { display: none; }
.ps-send-how { font-size: 13.5px; color: var(--text-dim); line-height: 1.4; }
.ps-quick { margin-top: 10px; }
@media (max-width: 640px) { .ps-send-bar .ps-send-btn { flex: 1 1 100%; } }

/* The My list bar (owner, 2026-09-26): always in view, under the search. */
.lb { margin: 0 0 14px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); }
.lb-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; }
.lb-text { margin: 0; flex: 1 1 260px; font-size: 15px; line-height: 1.45; color: var(--text); }
.lb-empty .lb-text { color: var(--text-dim); }
.lb-empty .lb-text b { color: var(--text); }
.lb-link { all: unset; cursor: pointer; font-weight: 700; color: var(--text); text-decoration: underline; text-underline-offset: 3px; }
.lb-link:focus-visible { outline: 2px solid var(--sky); outline-offset: 2px; }
.lb-view { min-height: 44px; padding: 0 16px; border-radius: 999px; border: 1.5px solid var(--border-strong); background: transparent; color: var(--text); font: inherit; font-weight: 600; cursor: pointer; }
.lb-more { flex: 0 0 auto; }
.lb-more > summary { list-style: none; cursor: pointer; min-height: 44px; display: inline-flex; align-items: center; padding: 0 16px; border-radius: 999px; border: 1.5px solid var(--border-strong); font-weight: 600; color: var(--text-dim); }
.lb-more > summary::-webkit-details-marker { display: none; }
.lb-more[open] { flex: 1 1 100%; }
.lb-more-body { margin-top: 10px; }
/* The older bar under More keeps its extras; what the new bar already says is hidden. */
.lb-more #myListCount, .lb-more #myListCopyBotBtn, .lb-more #myListOnlyBtn, .lb-more #myListWorth { display: none !important; }
body.b-home .lb-more #myListBar { border: 0 !important; border-radius: 0 !important; margin: 0 !important; padding: 0 !important; background: none !important; }
@media (max-width: 640px) {
  .lb-row .ps-send-btn { flex: 1 1 100%; order: 2; }
  .lb-view { order: 3; flex: 1 1 auto; }
  .lb-more { order: 4; }
  .lb-more[open] { order: 5; }
}

/* A drop moved to the next day after it didn't happen (2026-09-29) */
.drop-moved { grid-column: 1 / -1; margin: 10px 0 6px; padding: 8px 12px; border-left: 3px solid var(--text); background: var(--surface); border-radius: 0 8px 8px 0; font-size: 14px; line-height: 1.45; color: var(--text); max-width: 60ch; }
.drop-moved[hidden] { display: none; }

/* "Unripped has a Portfolio" card on Home (2026-09-30, temporary; portfolio-nudge.js). */
.b-nudge-no { appearance: none; background: none; border: 0; padding: 6px 4px; min-height: 36px; margin: -6px -4px -6px 0; font: inherit; font-size: 14px; color: var(--text-dim); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; white-space: nowrap; }
.b-nudge-no:hover { color: var(--text); }
.b-nudge-no:focus-visible { outline: 2px solid var(--text); outline-offset: 2px; border-radius: 4px; }
.b-nudge .b-stack-line .b-stack-open { display: inline-block; margin-left: 4px; }
@media (max-width: 640px) { .b-nudge .b-nudge-sub { display: none; } .b-nudge { margin-bottom: 16px; } .b-nudge .b-stack-line { font-size: 14px; } }

/* Remove and delete read as what they do: a light red tint with red text
   (2026-10-08). !important because the in-list rules above use it; keep
   this block at the end of the file. The confirm dialog's solid red stays
   the final step. */
body.b-page .lc-remove,
body.b-page .dp-row .drop-add.tracked,
body.b-page #ntDevices button[data-remove],
body.b-page .pf-del-link,
body.b-page .tour-undo {
  background: color-mix(in srgb, var(--danger) 10%, transparent) !important;
  border-color: color-mix(in srgb, var(--danger) 40%, transparent) !important;
  color: var(--danger) !important;
}
body.b-page .lc-remove:hover,
body.b-page .dp-row .drop-add.tracked:hover,
body.b-page #ntDevices button[data-remove]:hover,
body.b-page .pf-del-link:hover,
body.b-page .tour-undo:hover {
  background: color-mix(in srgb, var(--danger) 18%, transparent) !important;
  border-color: var(--danger) !important;
  color: var(--danger) !important;
}

/* /connect, the Claude connector page (2026-10-11). */
.cn-steps { margin: 4px 0 12px; padding-left: 20px; font-size: 14px; line-height: 1.55; color: var(--text); }
.cn-steps li { margin: 6px 0; }
.cn-url { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; padding: 6px 6px 6px 12px; border: 1px solid var(--border); border-radius: 999px; background: var(--bg); max-width: 100%; }
.cn-url code { flex: 1; min-width: 0; overflow-wrap: anywhere; font-size: 14px; font-family: 'IBM Plex Mono', ui-monospace, monospace; color: var(--text); }
.cn-url button, #cnList button { min-height: 36px; padding: 0 16px; border-radius: 999px; border: 1.5px solid var(--border-strong); background: transparent; color: var(--text); font: 700 13px 'Manrope', sans-serif; cursor: pointer; }
.cn-asks { margin: 4px 0 12px; padding-left: 20px; font-size: 14px; line-height: 1.55; color: var(--text); }
.cn-asks li { margin: 6px 0; }
.sub-h1 .beta-mini { margin-left: 8px; vertical-align: middle; }
#cnSignin p { margin: 0 0 10px; font-size: 13.5px; line-height: 1.5; color: var(--text-dim); }
