/* Paper Trench relaunch: a dark trading terminal, black + blue (docs/RELAUNCH.md). Geist for everything incl. numbers
   (tabular-nums), Geist Mono only for addresses. 1 px borders, 8 to 12 px radii, a soft blue glow only on the primary action
   and the logo. Dense on the Pulse board, roomy on the landing and school pages. Phone-first (375 px), 16 px gutters,
   big tap targets, no horizontal scroll. Owner: SITE.
   CSP note: no inline style attributes anywhere; dynamic widths use CSS custom properties set through CSSOM. */

:root {
  color-scheme: dark;
  --bg: #06070b;
  --bg-2: #0b0e14;
  --bg-3: #11151d;
  --line: #191b24;
  --line-2: #28303f;
  --text: #e9edf5;
  --muted: #8a94a8;
  --dim: #566076;
  --blue: #4d7cff;
  --blue-hi: #7ea2ff;
  --blue-deep: #1f3fbf;
  --up: #2fd08a;
  --down: #ff5c6c;
  --warn: #f5b740;
  --cyan: #5ac8ff;
  --hover: #0d0f16;
  --chip: #14161f;
  --chip-red: #2a1318;
  --chip-green: #10241c;
  --blue-soft: rgba(77, 124, 255, 0.14);
  --up-soft: rgba(47, 208, 138, 0.14);
  --down-soft: rgba(255, 92, 108, 0.14);
  --warn-soft: rgba(245, 183, 64, 0.14);
  --glow: 0 0 0 1px rgba(126, 162, 255, 0.35), 0 10px 30px -8px rgba(77, 124, 255, 0.7);
  --font-head: 'Geist', ui-sans-serif, system-ui, 'Segoe UI', Roboto, Arial, sans-serif;
  --font-body: 'Geist', ui-sans-serif, system-ui, 'Segoe UI', Roboto, Arial, sans-serif;
  --font-num: var(--font-body);
  --font-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --radius: 12px;
  --shadow: 0 1px 0 rgba(255, 255, 255, 0.02) inset;
  --top-h: 48px;
  --tab-h: 64px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
html, body { margin: 0; }
body {
  min-height: 100vh;
  background-color: var(--bg);
  color: var(--text);
  font: 400 16px/1.5 var(--font-body);
  overflow-x: hidden;
}
img, svg { display: block; max-width: 100%; }
a { color: var(--text); text-decoration-thickness: 1.5px; text-underline-offset: 3px; }
a:hover { text-decoration-color: var(--down); }
button, input, textarea, select { font: inherit; color: inherit; }
h1, h2, h3, h4 { font-family: var(--font-head); color: var(--text); line-height: 1.15; margin: 0 0 0.4em; letter-spacing: -0.01em; }
h1 { font-size: clamp(28px, 7vw, 46px); font-weight: 700; }
h2 { font-size: clamp(20px, 4.8vw, 26px); font-weight: 700; }
h3 { font-size: 18px; font-weight: 700; }
p { margin: 0 0 0.8em; }
:focus-visible { outline: 3px solid var(--blue-soft); outline-offset: 2px; border-radius: 6px; }
[hidden] { display: none !important; }
.num { font-family: var(--font-num); font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }
.muted { color: var(--muted); }
.small { font-size: 13px; }

.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip { position: absolute; left: -999px; top: 8px; z-index: 100; background: var(--blue); color: #fff; padding: 8px 12px; border-radius: 8px; }
.skip:focus { left: 16px; }

/* ---------- top bar ---------- */
.top {
  position: sticky; top: 0; z-index: 30;
  display: flex; align-items: center; gap: 12px;
  height: var(--top-h); padding: 0 16px;
  background: rgba(6, 7, 11, 0.94);
  border-bottom: 1px solid var(--line);
  backdrop-filter: saturate(1.2) blur(6px);
}
.logo { display: flex; align-items: center; gap: 8px; text-decoration: none; color: var(--text); min-width: 0; flex: 0 1 auto; overflow: hidden; }
.logo-mark { width: 30px; height: 30px; flex: none; }
.logo-name { font: 700 19px/1 var(--font-head); letter-spacing: -0.02em; white-space: nowrap; }
.logo-name { background: linear-gradient(transparent 62%, var(--blue-soft) 62% 92%, transparent 92%); padding: 0 2px; }
.logo-name em { font-style: normal; background: linear-gradient(transparent 55%, var(--blue-soft) 55% 92%, transparent 92%); padding: 0 2px; }
.nav { display: none; gap: 2px; margin-left: 8px; }
.nav a { padding: 8px 10px; border-radius: 8px; text-decoration: none; font-weight: 600; color: var(--text); }
.nav a:hover { background: var(--bg-3); }
.nav a.on { color: var(--text); background: linear-gradient(transparent 52%, var(--blue-soft) 52% 90%, transparent 90%); }
.top-right { margin-left: auto; display: flex; align-items: center; gap: 8px; min-width: 0; flex: 0 0 auto; }
.mock-short { display: none; }
@media (max-width: 559px) {
  .top { gap: 8px; padding: 0 12px 0 16px; }
  .logo-name { font-size: 17px; overflow: hidden; text-overflow: ellipsis; }
  .auth-me .trader-name { display: none; }
  .auth-me { padding: 4px; border-radius: 999px; }
  .auth-btn { padding: 6px 10px; }
  .clock { padding: 6px 8px; font-size: 12px; }
  .mock-long { display: none; }
  .mock-short { display: inline; }
}
@media (max-width: 359px) {
  .logo-name { display: none; }
}
.clock {
  display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; min-height: 36px;
  border: 1px solid var(--line); border-radius: 999px; background: var(--bg-2);
  font: 600 13px/1 var(--font-num); color: var(--text); text-decoration: none; white-space: nowrap;
}
.clock .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--up); flex: none; }
.clock.closing { border-color: var(--down); background: rgba(255, 92, 108, 0.12); }
.clock.closing .dot { background: var(--down); animation: blink 1s steps(2) infinite; }
.clock.settling .dot, .clock.idle .dot { background: var(--muted); }
.clock.sample { border-style: dashed; }
@keyframes blink { 50% { opacity: 0.2; } }
.auth-btn { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 6px 12px; border-radius: 10px; border: 1px solid var(--line-2); background: var(--blue); color: #fff; font-weight: 700; cursor: pointer; text-decoration: none; white-space: nowrap; }
.auth-btn .ico { width: 18px; height: 18px; }
.auth-me { background: var(--bg-2); color: var(--text); border-color: var(--line); padding: 4px 10px 4px 4px; max-width: 160px; }
.auth-me .trader-name { overflow: hidden; text-overflow: ellipsis; }

/* ---------- mock banner ---------- */
.mockbar {
  position: sticky; top: 0; z-index: 40;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 4px 12px;
  padding: 6px 16px; text-align: center;
  background: repeating-linear-gradient(-45deg, var(--blue-soft) 0 14px, var(--warn) 14px 28px);
  color: var(--text); font-weight: 700; font-size: 13px; border-bottom: 1px solid var(--line-2);
}
.mockbar a { font-weight: 700; }
body.is-mock .top { top: 33px; }

/* ---------- sheet (main paper) ---------- */
.sheet { position: relative; max-width: 1140px; margin: 0 auto; padding: 18px 16px calc(var(--tab-h) + 40px); min-height: 60vh; outline: none; }
.view-in { animation: fadein 0.18s ease-out; }
@keyframes fadein { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* ---------- footer ---------- */
.foot { max-width: 1140px; margin: 0 auto; padding: 18px 16px calc(var(--tab-h) + 28px); font-size: 13px; color: var(--muted); border-top: 1px solid var(--line); }
.foot p { margin: 0 0 6px; }
.foot-links { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.foot-links a { color: var(--muted); }

/* ---------- phone tab bar ---------- */
.tabbar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
  display: grid; grid-template-columns: repeat(6, 1fr);
  height: calc(var(--tab-h) + env(safe-area-inset-bottom, 0px)); padding-bottom: env(safe-area-inset-bottom, 0px);
  background: rgba(6, 7, 11, 0.97); border-top: 1px solid var(--line);
}
.tabbar a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; text-decoration: none; color: var(--muted); font-size: 11px; font-weight: 600; min-width: 0; }
.tabbar svg { width: 22px; height: 22px; }
.tabbar a.on { color: var(--text); }
.tabbar a.on svg { background: var(--blue-soft); border-radius: 8px; box-shadow: 0 0 0 4px var(--blue-soft); }

/* ---------- generic blocks ---------- */
.card { position: relative; background: var(--bg-2); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 16px; margin: 0 0 16px; }
.card > h2:first-child, .card > h3:first-child { margin-top: 0; }
.card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.card-head h2, .card-head h3 { margin: 0; }
.section { margin: 26px 0; }
.section-title { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.section-title h2 { margin: 0; }

.row-flex { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.grow { flex: 1 1 auto; min-width: 0; }

.scribble { font-family: var(--font-head); font-size: 21px; line-height: 1.1; color: var(--down); font-weight: 600; }
.scribble.ink { color: var(--text); }
.sticky {
  position: relative; display: block; background: var(--bg-3); color: var(--text);
  padding: 12px 14px 14px; border-radius: 2px 2px 10px 2px; font-family: var(--font-head); font-size: 20px; line-height: 1.2;
  box-shadow: 0 12px 16px -12px rgba(0, 0, 0, 0.55), inset 0 -18px 18px -18px rgba(0, 0, 0, 0.25);
  margin: 12px 0;
}
.sticky b { display: block; font-family: var(--font-head); font-size: 13px; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 2px; color: var(--warn); }
.chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--line); background: var(--bg-2); font-size: 12px; font-weight: 600; color: var(--text); white-space: nowrap; }
.chip-curve { border-color: var(--blue-deep); background: var(--blue-soft); }
.chip-amm { border-color: var(--up); background: rgba(47, 208, 138, 0.1); }
.chip-arena { border-color: var(--line-2); background: var(--blue); color: #fff; }
.chip-warn { border-color: var(--down); color: var(--down); background: rgba(255, 92, 108, 0.12); }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 46px; padding: 10px 18px; border-radius: 12px; border: 1px solid var(--line-2);
  background: var(--bg-2); color: var(--text); font-weight: 700; font-size: 16px; cursor: pointer; text-decoration: none;
  transition: transform 0.06s ease, box-shadow 0.06s ease;
}
.btn:active { transform: translate(2px, 2px); box-shadow: 0 0 0 var(--blue); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; box-shadow: none; }
.btn-primary { background: var(--blue); color: #fff; }
.btn-buy { background: var(--up-soft); }
.btn-sell { background: var(--down-soft); }
.btn-danger { background: var(--down); border-color: var(--down); color: #fff; }
.btn-ghost { background: transparent; box-shadow: none; border-color: var(--line); }
.btn-sm { min-height: 36px; padding: 6px 12px; font-size: 14px; border-radius: 10px; }
.btn-block { width: 100%; }
.icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 10px; border: 1px solid transparent; background: transparent; color: var(--text); cursor: pointer; }
.icon-btn:hover { background: var(--bg-3); }
.icon-btn .ico { width: 20px; height: 20px; }
.icon-btn.copy { width: 32px; height: 32px; }
.ico { width: 20px; height: 20px; flex: none; }

.seg { display: inline-flex; flex-wrap: wrap; gap: 4px; padding: 4px; border-radius: 12px; background: var(--bg-3); border: 1px solid var(--line); max-width: 100%; }
.seg-btn { min-height: 38px; padding: 6px 12px; border-radius: 9px; border: 0; background: transparent; font-weight: 700; color: var(--muted); cursor: pointer; }
.seg-btn.on { background: var(--bg-2); color: var(--text); box-shadow: 0 1px 0 var(--line), inset 0 -3px 0 var(--blue-soft); }

.input, .textarea {
  width: 100%; min-height: 48px; padding: 10px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--bg-2);
  font-size: 16px; color: var(--text);
}
.textarea { min-height: 84px; resize: vertical; }
.input:focus, .textarea:focus { border-color: var(--line-2); outline: none; box-shadow: 0 0 0 3px var(--blue-soft); }
.label { display: block; font-weight: 700; color: var(--text); margin: 0 0 6px; font-size: 14px; }
.field { margin: 0 0 14px; }
.hint { font-size: 13px; color: var(--muted); margin-top: 4px; }

.stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.stat { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border-radius: 10px; background: var(--bg); border: 1px solid var(--line); min-width: 0; }
.stat-k { font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; }
.stat-v { font-size: 17px; font-weight: 600; color: var(--text); overflow-wrap: anywhere; }
.stat-h { font-size: 12px; color: var(--muted); }

.loading { display: flex; align-items: center; gap: 10px; padding: 26px 4px; color: var(--muted); font-family: var(--font-head); font-size: 22px; }
.pencil { width: 28px; height: 4px; border-radius: 2px; background: linear-gradient(90deg, var(--warn) 0 70%, var(--dim) 70% 85%, var(--dim) 85%); animation: write 0.9s ease-in-out infinite alternate; }
@keyframes write { from { transform: translateX(-4px) rotate(-8deg); } to { transform: translateX(8px) rotate(4deg); } }
.empty { padding: 22px 16px; text-align: center; color: var(--muted); border: 1px solid var(--line); border-radius: var(--radius); background: rgba(11, 14, 20, 0.7); }
.empty p { margin: 0 0 10px; }
.errbox { padding: 14px 16px; border-radius: var(--radius); border: 1px solid var(--down); background: rgba(255, 92, 108, 0.12); color: var(--down); }
.errbox p { margin: 0 0 8px; }

/* avatars + coin images */
.ava { display: inline-flex; align-items: center; justify-content: center; flex: none; border-radius: 50%; font: 700 12px/1 var(--font-head); color: var(--text); border: 1px solid var(--line-2); }
.ava-sm { width: 26px; height: 26px; font-size: 10px; }
.ava-md { width: 36px; height: 36px; }
.ava-lg { width: 64px; height: 64px; font-size: 22px; border-width: 2px; }
.tone-yellow { background: var(--blue-soft); }
.tone-green { background: var(--up-soft); }
.tone-pink { background: var(--down-soft); }
.tone-blue { background: var(--blue-soft); }
.coin-img { flex: none; border-radius: 10px; object-fit: cover; background: var(--bg-3); border: 1px solid var(--line); }
.coin-sm { width: 28px; height: 28px; }
.coin-md { width: 40px; height: 40px; }
.coin-lg { width: 56px; height: 56px; border-radius: 14px; }
.coin-fb { display: inline-flex; align-items: center; justify-content: center; font: 700 11px/1 var(--font-num); color: var(--text); background: var(--bg-3); }
.trader { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; color: var(--text); font-weight: 600; min-width: 0; }
.trader-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* check level badges + flags */
.lvl { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px 3px 8px; border-radius: 999px; font-weight: 700; font-size: 13px; color: var(--text); border: 1px solid transparent; white-space: nowrap; }
.lvl-dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.lvl-red { background: var(--down-soft); border-color: var(--down); }
.lvl-red .lvl-dot { background: var(--down); }
.lvl-yellow { background: var(--blue-soft); border-color: var(--warn); }
.lvl-yellow .lvl-dot { background: var(--warn); }
.lvl-green { background: var(--up-soft); border-color: var(--up); }
.lvl-green .lvl-dot { background: var(--up); }
.lvl-unknown { background: var(--bg-2); border: 1px solid var(--muted); color: var(--muted); }
.lvl-unknown .lvl-dot { background: var(--muted); }
.lvl-big { font-size: 17px; padding: 6px 14px 6px 12px; }
.lvl-big .lvl-dot { width: 11px; height: 11px; }
.flags { list-style: none; margin: 0; padding: 0; }
.flag { display: flex; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--line); }
.flag:last-child { border-bottom: 0; }
.flag-mark { width: 12px; height: 12px; margin-top: 5px; border-radius: 3px; flex: none; }
.flag-red .flag-mark { background: var(--down); }
.flag-yellow .flag-mark { background: var(--warn); }
.flag-green .flag-mark { background: var(--up); }
.flag-info .flag-mark { background: var(--blue-soft); border: 1px solid var(--line-2); }
.flag-title { color: var(--text); }
.flag-says { color: var(--text); }
.codes { display: flex; flex-wrap: wrap; gap: 4px; }
.code { font-size: 11px; font-weight: 700; padding: 1px 6px; border-radius: 5px; background: var(--bg-3); color: var(--muted); white-space: nowrap; }
.code-red { background: rgba(255, 92, 108, 0.12); color: var(--down); }

.bar { position: relative; display: block; width: 100%; height: 8px; border-radius: 999px; background: var(--bg-3); border: 1px solid var(--line); overflow: hidden; }
.bar-fill { position: absolute; inset: 0 auto 0 0; width: var(--w, 0%); background: repeating-linear-gradient(-45deg, var(--blue) 0 4px, var(--blue-deep) 4px 8px); border-radius: 999px; }
.bar.near .bar-fill { background: repeating-linear-gradient(-45deg, var(--up) 0 4px, var(--up) 4px 8px); }

/* ---------- landing hero ---------- */
.hero { position: relative; padding: 22px 18px 18px; margin: 4px 0 20px; }
.hero h1 { max-width: 15ch; }
.hero h1 mark { color: var(--text); }

.steps { list-style: none; margin: 16px 0; padding: 0; display: grid; gap: 10px; counter-reset: step; }
.steps li { position: relative; padding: 10px 12px 10px 46px; background: var(--bg); border: 1px solid var(--line); border-radius: 10px; }
.steps li::before { counter-increment: step; content: counter(step); position: absolute; left: 10px; top: 9px; width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--line-2); display: flex; align-items: center; justify-content: center; font: 700 14px/1 var(--font-head); color: var(--text); background: var(--blue-soft); }
.steps b { color: var(--text); }

.season-strip { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line-2); background: rgba(11, 14, 20, 0.85); font-size: 14px; }
.season-strip .num { font-weight: 700; color: var(--text); }

/* ---------- board ---------- */
.paste { display: flex; gap: 8px; }
.paste .input { flex: 1 1 auto; min-width: 0; }
.paste-msg { margin-top: 8px; }
.cands { list-style: none; padding: 0; margin: 8px 0 0; display: grid; gap: 6px; }
.cands button { width: 100%; text-align: left; display: flex; gap: 10px; align-items: center; justify-content: space-between; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: var(--bg-2); cursor: pointer; min-height: 48px; }
.board-tools { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 14px 0 10px; }
.rows { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.row {
  display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; grid-template-areas: 'img name chk' 'img meta meta';
  gap: 2px 10px; align-items: center; padding: 10px 12px; border-radius: 12px; text-decoration: none; color: var(--text);
  background: var(--bg-2); border: 1px solid var(--line); box-shadow: var(--shadow); min-height: 64px;
}
.row:hover { border-color: var(--line-2); }
.row-img { grid-area: img; }
.row-name { grid-area: name; min-width: 0; display: flex; align-items: baseline; gap: 6px; }
.row-name b { color: var(--text); font-size: 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.row-name .sym { font: 600 13px/1 var(--font-num); color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.row-chk { grid-area: chk; display: flex; align-items: center; gap: 6px; justify-self: end; }
.row-meta { grid-area: meta; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; font-size: 13px; color: var(--muted); min-width: 0; }
.row-meta .num { color: var(--text); }
.row-meta .up { color: var(--up); font-weight: 700; }
.row-meta .down { color: var(--down); font-weight: 700; }
.row-bar { flex: 0 0 56px; width: 56px; display: inline-block; }
.row-stage .chip { overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.row-codes { grid-column: 2 / -1; }
.board-head { display: none; }
.row-stage { display: inline-flex; align-items: center; gap: 6px; min-width: 0; }
.ico-sm { width: 13px; height: 13px; display: inline-block; vertical-align: -1px; }
.coin-links a { display: inline-flex; align-items: center; gap: 3px; }
.asof { font-size: 13px; color: var(--muted); }

/* ---------- coin / trade screen ---------- */
.coin-grid { display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr); grid-template-areas: 'head' 'strip' 'chart' 'check' 'ticket' 'pos'; }
.coin-head { grid-area: head; display: flex; gap: 12px; align-items: flex-start; }
.coin-title { min-width: 0; flex: 1 1 auto; }
.coin-title h1 { font-size: clamp(24px, 6vw, 36px); margin: 0; overflow-wrap: anywhere; }
.coin-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin-top: 4px; font-size: 13px; color: var(--muted); }
.coin-sub .mint { font: 600 13px/1 var(--font-num); color: var(--muted); }
.coin-px { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: baseline; margin-top: 8px; }
.coin-px .big { font: 700 22px/1.1 var(--font-num); color: var(--text); }
.coin-links { display: flex; flex-wrap: wrap; gap: 6px 12px; font-size: 13px; }
.coin-strip { grid-area: strip; margin: 0; }
.chart-card { grid-area: chart; margin: 0; padding: 12px; }
.chart-box { position: relative; width: 100%; min-height: 220px; }
.chart-svg { width: 100%; height: auto; overflow: visible; }
.ch-grid { stroke: var(--line); stroke-width: 1; }
.ch-tick { font: 500 11px var(--font-num); fill: var(--muted); }
.ch-wick { stroke-width: 1.5; }
.ch-up.ch-wick { stroke: var(--up); }
.ch-down.ch-wick { stroke: var(--down); }
.ch-body.ch-up { fill: var(--up-soft); stroke: var(--up); stroke-width: 1.2; }
.ch-body.ch-down { fill: var(--down-soft); stroke: var(--down); stroke-width: 1.2; }
.ch-last { stroke: var(--blue); stroke-width: 1; stroke-dasharray: 3 4; }
.ch-last-tag { fill: var(--blue); }
.ch-last-txt { font: 600 11px var(--font-num); fill: var(--bg); }
.ch-line { stroke: var(--down); stroke-width: 1.5; stroke-dasharray: 6 4; }
.ch-line-label { font: 600 15px var(--font-head); fill: var(--down); }
.chart-foot { display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-top: 6px; font-size: 12px; color: var(--muted); }

.check-card { grid-area: check; margin: 0; }
.check-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.check-nums { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 12px 0; }
.check-nums .stat-v mark { padding: 0 0.2em; }
.check-unav { font-size: 13px; color: var(--muted); margin: 8px 0 0; padding-left: 18px; }
.ticket { grid-area: ticket; margin: 0; }
.ticket .seg { width: 100%; }
.ticket .seg-btn { flex: 1 1 0; font-size: 16px; min-height: 44px; }
.ticket .seg-btn.on[data-v='buy'] { box-shadow: inset 0 -4px 0 var(--up-soft), 0 1px 0 var(--line); }
.ticket .seg-btn.on[data-v='sell'] { box-shadow: inset 0 -4px 0 var(--down-soft), 0 1px 0 var(--line); }
.sizes { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; margin: 12px 0 8px; }
.sizes.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.size { min-height: 46px; border-radius: 10px; border: 1px solid var(--line); background: var(--bg-2); font: 700 15px/1 var(--font-num); color: var(--text); cursor: pointer; padding: 0 2px; }
.size.on { border-color: var(--line-2); background: var(--blue-soft); }
.size:disabled { opacity: 0.45; cursor: not-allowed; }
.custom { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; }
.custom .input { min-height: 44px; font-family: var(--font-num); }
.ticket-cash { display: flex; justify-content: space-between; gap: 8px; font-size: 14px; color: var(--muted); margin: 6px 0 12px; }
.ticket-cash .num { color: var(--text); font-weight: 700; }
.ticket-fine { font-size: 12.5px; color: var(--muted); margin: 10px 0 0; }
.ticket-msg { margin-top: 10px; }
.pos { grid-area: pos; margin: 0; }
.pos-pnl { font-size: 22px; }

/* ---------- tables (standings, leaders) ---------- */
.tbl-wrap { width: 100%; }
.tbl { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 14px; }
.tbl th { text-align: left; font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); font-weight: 700; padding: 6px 8px; border-bottom: 1px solid var(--line-2); }
.tbl td { padding: 9px 8px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.tbl td.r, .tbl th.r { text-align: right; }
.tbl tr.me td { background: rgba(77, 124, 255, 0.35); }
.tbl .rank { font: 700 15px/1 var(--font-num); color: var(--text); width: 2.6em; }
.tbl .trader { max-width: 46vw; }
.rank-1 .rank, .rank-2 .rank, .rank-3 .rank { font-size: 17px; }
.medal { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--line-2); font: 700 12px/1 var(--font-num); }
.medal-1 { background: var(--blue-soft); }
.medal-2 { background: #c9d1e0; }
.medal-3 { background: #d99a6c; }
.hide-sm { display: none; }

.clock-big { font: 700 clamp(40px, 13vw, 76px)/1 var(--font-num); color: var(--text); letter-spacing: -0.04em; }
.clock-big.closing { color: var(--down); }
.season-head { display: grid; gap: 14px; }
.pool { font: 700 26px/1.1 var(--font-num); color: var(--text); }
.split { display: flex; gap: 3px; flex-wrap: wrap; margin-top: 6px; }
.split span { font: 600 11px/1 var(--font-num); padding: 4px 5px; border-radius: 5px; background: var(--bg-3); color: var(--text); }
.past { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.past a { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; padding: 12px; border-radius: 12px; border: 1px solid var(--line); background: var(--bg-2); text-decoration: none; color: var(--text); min-height: 56px; }
.past a:hover { border-color: var(--line-2); }
.past b { color: var(--text); }
.payout-status { font-weight: 700; }
.sig { font: 600 13px/1.4 var(--font-num); overflow-wrap: anywhere; }

/* ---------- profile ---------- */
.profile-head { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.profile-head h1 { margin: 0; font-size: clamp(24px, 6vw, 34px); overflow-wrap: anywhere; }
.podiums { display: flex; gap: 10px; flex-wrap: wrap; }
.podium { display: flex; align-items: center; gap: 6px; font: 700 16px/1 var(--font-num); color: var(--text); }
.badges { display: flex; flex-wrap: wrap; gap: 8px; }
.badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 10px; background: var(--bg-3); border: 1px solid var(--warn); font-weight: 700; color: var(--warn); font-size: 13px; }
.badge:nth-child(2n) { }

/* ---------- feed ---------- */
.feed { list-style: none; margin: 0; padding: 0; }
.feed-item { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; padding: 11px 2px; border-bottom: 1px solid var(--line); }
.feed-what { flex: 1 1 200px; min-width: 0; }
.feed-time { font: 500 12px/1 var(--font-num); color: var(--muted); margin-left: auto; }
.feed-amt { color: var(--text); font-weight: 600; }
.coin-link { font-weight: 700; }
.switch { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; font-weight: 700; color: var(--text); min-height: 44px; }
.switch input { appearance: none; -webkit-appearance: none; width: 46px; height: 28px; border-radius: 999px; background: var(--bg-3); border: 1px solid var(--line); position: relative; cursor: pointer; margin: 0; flex: none; }
.switch input::after { content: ''; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background: var(--bg-2); border: 1px solid var(--line-2); transition: transform 0.15s; }
.switch input:checked { background: var(--up-soft); border-color: var(--line-2); }
.switch input:checked::after { transform: translateX(18px); }

/* ---------- school ---------- */
.lessons { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.lesson-card { display: grid; grid-template-columns: 44px 1fr auto; gap: 4px 12px; align-items: center; padding: 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--bg-2); box-shadow: var(--shadow); text-decoration: none; color: var(--text); min-height: 72px; }
.lesson-card:hover { border-color: var(--line-2); }
.lesson-n { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line-2); display: flex; align-items: center; justify-content: center; font: 700 18px/1 var(--font-head); color: var(--text); background: var(--bg); }
.lesson-card b { color: var(--text); font-size: 17px; }
.done-mark { font-family: var(--font-head); font-size: 22px; color: var(--up); font-weight: 700; }
.lesson-body { max-width: 68ch; font-size: 17px; }
.lesson-body ul { padding-left: 22px; }
.lesson-body li { margin: 4px 0; }
.live-ex { position: relative; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--line-2); background: var(--bg-2); margin: 16px 0; }
.live-ex .scribble { position: absolute; top: -16px; left: 12px; background: var(--bg); padding: 0 6px; }
.quiz fieldset { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin: 0 0 12px; background: var(--bg-2); }
.quiz legend { font-weight: 700; color: var(--text); padding: 0 6px; }
.choice { display: flex; gap: 10px; align-items: flex-start; padding: 10px 8px; border-radius: 10px; cursor: pointer; min-height: 44px; }
.choice:hover { background: var(--bg-3); }
.choice input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--blue); flex: none; }
.choice.right { background: rgba(47, 208, 138, 0.55); }
.choice.wrong { background: rgba(255, 92, 108, 0.5); }
.why { font-size: 14px; color: var(--text); margin: 6px 0 0; padding-left: 10px; border-left: 3px solid var(--blue-soft); }

/* ---------- rules ---------- */
.prose { max-width: 70ch; font-size: 16.5px; }
.prose h2 { margin-top: 1.4em; }
.prose ul, .prose ol { padding-left: 22px; }
.prose li { margin: 5px 0; }
.weights { display: grid; gap: 6px; margin: 12px 0; }
.weight { display: grid; grid-template-columns: minmax(120px, 1fr) 2fr auto; gap: 10px; align-items: center; font-size: 14px; }
.weight .bar { height: 12px; }
.faq details { border-bottom: 1px solid var(--line); padding: 10px 0; }
.faq summary { cursor: pointer; font-weight: 700; color: var(--text); min-height: 32px; display: flex; align-items: center; }
.faq details p { margin: 8px 0 4px; }

/* ---------- modal + toasts ---------- */
.modal-wrap { position: fixed; inset: 0; z-index: 60; display: flex; align-items: flex-end; justify-content: center; background: rgba(2, 3, 6, 0.72); padding: 0; animation: fadein 0.15s ease-out; }
.modal {
  width: 100%; max-height: 88vh; overflow: auto; padding: 16px 16px calc(18px + env(safe-area-inset-bottom, 0px));
  background-color: var(--bg);
  border-radius: 18px 18px 0 0; border: 1px solid var(--line-2); border-bottom: 0;
  box-shadow: 0 -10px 30px -12px rgba(0, 0, 0, 0.5);
}
.modal-red { border-color: var(--down); }
.modal-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.modal-title { margin: 0; font-size: 21px; }
.modal-actions { display: flex; flex-wrap: wrap-reverse; gap: 10px; justify-content: flex-end; margin-top: 16px; }
.modal-actions .btn { flex: 1 1 140px; }
.wallets { list-style: none; padding: 0; margin: 10px 0; display: grid; gap: 8px; }
.wallets button, .wallets a { width: 100%; display: flex; align-items: center; gap: 12px; padding: 10px 14px; min-height: 54px; border-radius: 12px; border: 1px solid var(--line); background: var(--bg-2); cursor: pointer; font-weight: 700; color: var(--text); text-decoration: none; text-align: left; }
.wallets button:hover, .wallets a:hover { border-color: var(--line-2); }
.wallets img, .wallet-fb { width: 30px; height: 30px; border-radius: 8px; flex: none; }
.wallet-fb { display: inline-flex; align-items: center; justify-content: center; background: var(--blue-soft); font: 700 13px/1 var(--font-head); }
.toasts { position: fixed; left: 16px; right: 16px; bottom: calc(var(--tab-h) + 14px + env(safe-area-inset-bottom, 0px)); z-index: 70; display: flex; flex-direction: column; align-items: center; gap: 8px; pointer-events: none; }
.toast { max-width: 520px; width: 100%; padding: 12px 16px; border-radius: 12px; background: var(--blue); color: #fff; font-weight: 600; box-shadow: 0 10px 24px -10px rgba(0, 0, 0, 0.45); transition: opacity 0.3s, transform 0.3s; pointer-events: auto; }
.toast-error { background: var(--down); }
.toast-gain { background: var(--up); }
.toast.out { opacity: 0; transform: translateY(8px); }

/* ---------- admin ---------- */
.admin-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.mode { font-weight: 700; padding: 6px 12px; border-radius: 10px; border: 1px solid var(--line-2); }
.mode-dry { background: var(--blue-soft); }
.mode-live { background: var(--down-soft); border-color: var(--down); }
.kv { display: grid; grid-template-columns: minmax(110px, auto) 1fr; gap: 6px 14px; font-size: 14px; }
.kv dt { font-weight: 700; color: var(--muted); }
.kv dd { margin: 0; overflow-wrap: anywhere; }
.mono-box { font: 500 12px/1.45 var(--font-num); background: var(--bg-2); border: 1px solid var(--line); border-radius: 10px; padding: 10px; overflow-wrap: anywhere; white-space: pre-wrap; max-height: 220px; overflow: auto; }
.admin-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.admin-form { display: grid; gap: 8px; grid-template-columns: 1fr; }

/* ---------- desktop ---------- */
@media (min-width: 640px) {
  .stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .check-nums { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .hide-sm { display: table-cell; }
  .steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .modal-wrap { align-items: center; padding: 16px; }
  .modal { max-width: 520px; border-radius: 18px; border-bottom: 1px solid var(--line-2); }
  .modal-red { border-color: var(--down); }
  .admin-form { grid-template-columns: repeat(3, minmax(0, 1fr)) auto; }
}
@media (min-width: 900px) {
  :root { --tab-h: 0px; }
  .tabbar { display: none; }
  .nav { display: flex; }
  .top { padding: 0 24px; }
  .sheet { padding: 26px 32px 56px; }
  .foot { padding: 20px 32px 32px; }
  .toasts { bottom: 24px; left: auto; right: 24px; align-items: flex-end; }
  .hero { padding: 30px 30px 26px; }

  .coin-grid { grid-template-columns: minmax(0, 1fr) 360px; grid-template-areas: 'head head' 'strip strip' 'chart ticket' 'check pos' 'check .'; align-items: start; }
  .ticket { position: sticky; top: calc(var(--top-h) + 16px); }
  .row {
    grid-template-columns: 40px minmax(160px, 2.2fr) repeat(4, minmax(70px, 1fr)) minmax(150px, 1.4fr);
    grid-template-areas: none; gap: 10px; min-height: 60px;
  }
  .row > * { grid-area: auto; }
  .row-meta { display: contents; }
  .row-meta > span { font-size: 14px; }
  .row-codes { grid-column: auto; }
  .board-head {
    display: grid; grid-template-columns: 40px minmax(160px, 2.2fr) repeat(4, minmax(70px, 1fr)) minmax(150px, 1.4fr); gap: 10px; padding: 0 12px 4px;
    font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); font-weight: 700;
  }
  .row-chk { justify-self: start; flex-wrap: wrap; }
  .hide-wide { display: none; }
  .lessons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .season-head { grid-template-columns: 1.2fr 1fr; align-items: end; }
  .two-col { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 20px; align-items: start; }
}

/* ---------- Pulse: live columns (BLUEPRINT §17.4) ---------- */
.up { color: var(--up); }
.down { color: var(--down); }
.ico-xs { width: 13px; height: 13px; flex: none; }
.k { font-size: 11px; color: var(--muted); font-weight: 600; margin-right: 3px; letter-spacing: 0; }
.pulse-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin: 0 0 12px; }
.pulse-title { display: flex; align-items: center; gap: 8px 12px; flex-wrap: wrap; }
.pulse-title h1 { margin: 0; display: flex; align-items: center; gap: 8px; font-size: clamp(28px, 6vw, 38px); }

.pulse-tools { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; flex: 1 1 300px; justify-content: flex-end; }
.paste-compact { flex: 1 1 240px; max-width: 460px; margin: 0; }
.paste-compact .input { min-height: 40px; padding: 6px 12px; font-size: 15px; }
.paste-compact .paste-msg:empty { display: none; }
.pulse-fine { margin-top: 14px; max-width: 90ch; }
.st-pill { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; font: 700 12px/1.4 var(--font-num); border: 1px solid var(--line); background: var(--bg-2); color: var(--text); white-space: nowrap; }
.st-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); flex: none; }
.st-live { border-color: var(--up); background: rgba(47, 208, 138, 0.1); }
.st-live .st-dot { background: var(--up); animation: livepulse 1.6s ease-out infinite; }
.st-poll { border-color: var(--warn); background: rgba(245, 183, 64, 0.1); }
.st-poll .st-dot { background: var(--warn); }
.st-off { border-color: var(--down); background: rgba(255, 92, 108, 0.12); color: var(--down); }
.st-off .st-dot { background: var(--down); }
.st-sample { border: 1px solid var(--line-2); background: repeating-linear-gradient(-45deg, var(--blue-soft) 0 8px, var(--warn) 8px 16px); }
.st-sample .st-dot { background: var(--blue); }
@keyframes livepulse { 0% { box-shadow: 0 0 0 0 rgba(47, 208, 138, 0.55); } 100% { box-shadow: 0 0 0 8px rgba(47, 208, 138, 0); } }

.pulse-seg { margin: 0 0 10px; }
.pulse-seg .seg { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; }
.pulse-seg .seg-btn { padding: 6px 4px; font-size: 14px; }
.pcol { position: relative; min-width: 0; background: rgba(11, 14, 20, 0.78); border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 8px 8px; }
.pcol.paused { border-color: var(--line-2); box-shadow: inset 0 3px 0 var(--blue-soft); }
.pcol-head { display: flex; align-items: center; gap: 8px; padding: 0 4px 2px; }
.pcol-head h2 { margin: 0; font-size: 19px; }
.pcol-count { font-size: 12px; color: var(--muted); padding: 1px 7px; border-radius: 999px; background: var(--bg-3); }
.pcol-paused { font: 700 17px/1 var(--font-head); color: var(--down); white-space: nowrap; }
.pcol-pause { margin-left: auto; width: 34px; height: 34px; border: 1px solid var(--line); background: var(--bg-2); }
.pcol-pause[aria-pressed="true"] { background: var(--blue-soft); border-color: var(--line-2); }
.pcol-pause .ico { width: 16px; height: 16px; }

.pcol-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
@media (max-width: 899px) {
  .pulse[data-col="new"] .pcol:not([data-col="new"]),
  .pulse[data-col="stretch"] .pcol:not([data-col="stretch"]),
  .pulse[data-col="migrated"] .pcol:not([data-col="migrated"]) { display: none; }
}

/* one coin card */
.pc { position: relative; background: var(--bg-2); border: 1px solid var(--line); border-left: 4px solid var(--line); border-radius: 10px; padding: 8px 9px 8px 8px; box-shadow: var(--shadow); }
.pc:hover { border-color: var(--line-2); }

.pc.busy { opacity: 0.72; }
.pc.popped { z-index: 6; }

.coin-pc { position: absolute; left: 6px; top: 6px; width: 40px; height: 40px; border-radius: 50%; }

.pc-link { display: flex; align-items: baseline; gap: 6px; min-width: 0; text-decoration: none; color: var(--text); }
.pc-link::after { content: ""; position: absolute; inset: 0; border-radius: 10px; z-index: 1; }
.pc-link:focus-visible { outline: none; }
.pc-link:focus-visible::after { outline: 3px solid var(--blue-soft); outline-offset: 1px; }
.pc-sym { font: 700 15.5px/1.2 var(--font-head); white-space: nowrap; }
.pc-name { font-size: 12.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }

.pc-age { color: var(--text); font-weight: 700; }
.pc-soc { display: inline-flex; gap: 1px; position: relative; z-index: 2; }
.soc { display: inline-flex; min-width: 20px; height: 18px; padding: 0 4px; align-items: center; justify-content: center; border-radius: 5px; border: 1px solid var(--line); background: var(--bg); color: var(--text); font: 700 10px/1 var(--font-num); text-decoration: none; }
.soc:hover { background: var(--bg-3); color: var(--text); }
.pc-paid { font-size: 10.5px; font-weight: 700; padding: 0 5px; border-radius: 4px; background: var(--blue-soft); color: var(--text); }

.qflag { display: inline-flex; align-items: center; gap: 4px; font: 700 11px/1 var(--font-head); padding: 3px 7px 3px 6px; border-radius: 999px; white-space: nowrap; border: 1px solid transparent; color: var(--text); }
.qflag .lvl-dot { width: 7px; height: 7px; }
.qf-red { background: var(--down-soft); border-color: var(--down); }
.qf-red .lvl-dot { background: var(--down); }
.qf-yellow { background: var(--blue-soft); border-color: var(--warn); }
.qf-yellow .lvl-dot { background: var(--warn); }
.qf-green { background: var(--up-soft); border-color: var(--up); }
.qf-green .lvl-dot { background: var(--up); }
.qf-unknown { background: var(--bg-2); border: 1px solid var(--muted); color: var(--muted); }
.qf-unknown .lvl-dot { background: var(--muted); }

.pc .num { border-radius: 4px; padding: 0 2px; }

.bs { position: relative; display: inline-block; width: 36px; height: 7px; border-radius: 999px; background: var(--down-soft); overflow: hidden; border: 1px solid rgba(0, 0, 0, 0.25); margin-right: 3px; }
.bs-b { position: absolute; inset: 0 auto 0 0; width: var(--b, 50%); background: var(--up); }
.bs-none { background: var(--bg-3); }
.bs-none .bs-b { display: none; }

.pc-chips { display: flex; gap: 3px; flex-wrap: wrap; }
.hchip { display: inline-flex; gap: 3px; align-items: baseline; font-size: 11px; padding: 1px 5px; border-radius: 5px; background: var(--bg-3); color: var(--text); white-space: nowrap; border: 1px solid transparent; }
.hchip .num { padding: 0 1px; }

.hc-red { background: var(--down-soft); }

.hc-yellow { background: var(--blue-soft); }

.hc-green { background: rgba(47, 208, 138, 0.55); }
.hc-unknown { background: transparent; border: 1px solid var(--line); color: var(--muted); }
.pc-quick { display: inline-flex; align-items: center; gap: 4px; position: relative; z-index: 2; margin-left: auto; }

.pc-nt { font-size: 11px; color: var(--muted); }
.pc-pop { position: absolute; z-index: 3; top: 4px; left: 4px; right: 4px; padding: 10px 12px; background: rgba(255, 92, 108, 0.12); border: 1px solid var(--down); border-radius: 10px; box-shadow: 0 14px 24px -12px rgba(0, 0, 0, 0.55); font-size: 13px; }
.pc-pop-t { display: block; color: var(--down); font-family: var(--font-head); margin-bottom: 4px; font-size: 14px; }
.pc-pop ul { margin: 0 0 6px; padding-left: 18px; }
.pc-pop p { margin: 0 0 8px; color: var(--down); }
.pc-pop-a { display: flex; gap: 6px; justify-content: flex-end; flex-wrap: wrap; }
.pc-pop-a .btn { min-height: 36px; }
@media (max-width: 899px) {

  .pc-sym { font-size: 16.5px; }
}

/* landing hero with live cards */

.mini { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 8px 10px; border-radius: 10px; border: 1px solid var(--line); border-left: 4px solid var(--line); background: var(--bg); text-decoration: none; color: var(--text); min-height: 52px; }
.mini:hover { border-color: var(--line-2); }

.mini .coin-sm { border-radius: 50%; }

/* ---------- token page: terminal ---------- */
.term { display: grid; gap: 14px; grid-template-columns: minmax(0, 1fr); grid-template-areas: "head" "strip" "chart" "ticket" "pos" "tabs" "check"; }
.term > .card { margin: 0; }
.term-head { grid-area: head; display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: center; }
.term-id { display: flex; gap: 12px; align-items: center; min-width: 0; flex: 1 1 300px; }
.term-id .coin-lg { border-radius: 50%; }
.term-id h1 { font-size: clamp(24px, 6vw, 34px); margin: 0; overflow-wrap: anywhere; }
.term-name { font: 600 15px/1.2 var(--font-body); color: var(--muted); }
.term-nums { display: flex; flex-wrap: wrap; gap: 8px; }
.tn { display: flex; flex-direction: column; gap: 1px; padding: 6px 10px; border-radius: 10px; background: var(--bg); border: 1px solid var(--line); min-width: 82px; text-decoration: none; color: inherit; }
a.tn:hover { border-color: var(--line-2); }
.tn-k { font-size: 11px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; }
.tn-v { font-size: 17px; font-weight: 700; color: var(--text); }
.tn-h { font-size: 11px; color: var(--muted); }
.tn-curve .bar { margin-top: 3px; width: 90px; }
.tn-chk .lvl { margin-top: 2px; font-size: 12px; padding: 2px 8px 2px 6px; }
.term-meta { display: flex; gap: 6px 14px; flex-wrap: wrap; width: 100%; }
.term .coin-strip { grid-area: strip; margin: 0; }
.term .chart-card { grid-area: chart; }
.term .ticket { grid-area: ticket; position: static; }
.term .pos { grid-area: pos; }
.term-tabs { grid-area: tabs; }
.term .check-card { grid-area: check; scroll-margin-top: calc(var(--top-h) + 16px); }
.term-tabs .card-head .seg { flex: 0 1 auto; }

.tape { list-style: none; margin: 0; padding: 0; }
.tape-head, .tp { display: grid; grid-template-columns: 54px 46px minmax(56px, 1fr) minmax(70px, 1fr) minmax(0, 1.7fr); gap: 6px; align-items: center; }
.tape-head { font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); font-weight: 700; padding: 0 4px 4px; border-bottom: 1px solid var(--line-2); }
.tp { padding: 6px 4px; border-bottom: 1px solid var(--line); font-size: 13px; border-radius: 6px; }
.tp-t { color: var(--muted); font-size: 12px; white-space: nowrap; }
.tp-side { font-size: 12px; font-weight: 700; text-align: center; padding: 1px 4px; }
.tp-buy .tp-usd { color: var(--up); font-weight: 700; }
.tp-sell .tp-usd { color: var(--down); font-weight: 700; }
.tp-w { display: flex; gap: 5px; align-items: center; min-width: 0; overflow: hidden; }
.tp-w a, .tp-w .num { font-size: 12px; white-space: nowrap; }
.wl { font-size: 10.5px; font-weight: 700; padding: 1px 5px; border-radius: 4px; white-space: nowrap; color: var(--text); }
.wl-dev { background: var(--down-soft); }
.wl-bundler { background: rgba(255, 92, 108, 0.12); border: 1px solid var(--down); }
.wl-sniper { background: var(--blue-soft); }
.wl-kol { background: var(--blue-soft); }
.small-h { font-size: 13px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); margin: 14px 0 6px; }
.tabs-body > .small-h:first-child { margin-top: 2px; }
.hbars { display: grid; gap: 7px; }
.hbar { display: grid; grid-template-columns: 70px minmax(0, 1fr) 70px; gap: 8px; align-items: center; font-size: 13px; }
.hbar-k { font-weight: 700; color: var(--text); }
.hbar .bar { height: 10px; }
.bar.hb-pink .bar-fill { background: repeating-linear-gradient(-45deg, var(--down) 0 4px, var(--down) 4px 8px); }
.bar.hb-yellow .bar-fill { background: repeating-linear-gradient(-45deg, var(--warn) 0 4px, var(--warn) 4px 8px); }
.bar.hb-green .bar-fill { background: repeating-linear-gradient(-45deg, var(--up) 0 4px, var(--up) 4px 8px); }
.hbar-v { text-align: right; }
.holders { list-style: none; margin: 0; padding: 0; }
.holders li { display: flex; gap: 8px; align-items: center; padding: 7px 2px; border-bottom: 1px solid var(--line); font-size: 13px; }
.holders li > :last-child { margin-left: auto; }
.hl-labels { display: inline-flex; gap: 4px; }
@media (max-width: 559px) {
  .tape-head, .tp { grid-template-columns: 46px 42px minmax(0, 1fr) minmax(0, 1.25fr); }
  .tp-sol, .tape-head span:nth-child(4) { display: none; }
  .tn { min-width: 0; flex: 1 1 30%; }
}
@media (min-width: 1000px) {
  .term { grid-template-columns: minmax(0, 1fr) 380px; grid-template-areas: "head head" "strip strip" "chart ticket" "tabs pos" "tabs check"; align-items: start; }
  .term-tabs .tabs-body { max-height: 620px; overflow-y: auto; overscroll-behavior: contain; }
}

/* wide sheets for the terminal views */
@media (min-width: 900px) {
  .pulse-seg { display: none; }
  .pulse { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; align-items: start; }
  .pcol-body { max-height: calc(100vh - var(--top-h) - 170px); min-height: 440px; overflow-y: auto; overscroll-behavior: contain; padding: 2px 3px 2px 1px; scrollbar-width: thin; }

  body[data-view="pulse"] .sheet, body[data-view="coin"] .sheet { max-width: 1480px; padding-left: 24px; padding-right: 24px; }
  body[data-view="pulse"] .foot, body[data-view="coin"] .foot { max-width: 1480px; padding-left: 24px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
@media print {
  .top, .tabbar, .mockbar, .toasts { display: none; }
}

/* ================= relaunch: terminal surfaces ================= */
* { scrollbar-color: var(--line-2) transparent; }
::selection { background: var(--blue); color: #fff; }
body { background: var(--bg); font-weight: 500; -webkit-font-smoothing: antialiased; }
a { color: var(--blue-hi); text-decoration: none; }
a:hover { color: var(--text); text-decoration: underline; }
h1, h2, h3, h4 { color: var(--text); font-weight: 700; letter-spacing: -0.02em; }
:focus-visible { outline: 2px solid var(--blue-hi); }
.top { background: rgba(6, 7, 11, 0.88); border-bottom: 1px solid var(--line); backdrop-filter: saturate(1.4) blur(10px); }
.logo, .logo:hover { color: var(--text); text-decoration: none; }
.logo-mark { width: 34px; height: 34px; border-radius: 9px; box-shadow: 0 0 0 1px var(--line-2), 0 0 22px -4px rgba(77, 124, 255, 0.8); }
.logo-name { background: none; padding: 0; font: 700 18px/1 var(--font-head); }
.nav a { color: var(--muted); font-weight: 700; font-size: 14px; }
.nav a:hover { background: var(--bg-3); color: var(--text); text-decoration: none; }
.nav a.on { background: var(--blue-soft); color: var(--blue-hi); }
.clock { background: var(--bg-2); color: var(--text); border-color: var(--line-2); }
.clock:hover { text-decoration: none; border-color: var(--blue); }
.auth-btn { border: 1px solid var(--blue); background: var(--blue); color: #fff; font-weight: 700; }
.auth-btn:hover { background: var(--blue-hi); color: #fff; text-decoration: none; }
.auth-me, .auth-me:hover { background: var(--bg-2); color: var(--text); border-color: var(--line-2); }
.auth-save { background: transparent; color: var(--blue-hi); border-color: rgba(77, 124, 255, 0.6); }
.auth-save:hover { background: var(--blue-soft); color: var(--text); }

.mockbar { background: repeating-linear-gradient(-45deg, var(--warn) 0 14px, rgba(245, 183, 64, 0.82) 14px 28px), var(--bg); color: var(--bg); border-bottom: 1px solid var(--bg); font: 700 12.5px/1.3 var(--font-head); letter-spacing: 0.02em; }
.mockbar a { color: var(--bg); text-decoration: underline; }
.foot { border-top: 1px solid var(--line); color: var(--dim); }
.foot-links a { color: var(--muted); }
.tabbar { background: rgba(6, 7, 11, 0.96); border-top: 1px solid var(--line); backdrop-filter: blur(10px); }
.tabbar a:hover { text-decoration: none; }
.tabbar a.on { color: var(--blue-hi); }
.tabbar a.on svg { background: none; box-shadow: none; filter: drop-shadow(0 0 6px rgba(77, 124, 255, 0.9)); }
.card { background: var(--bg-2); border: 1px solid var(--line); }

.hl { background: transparent; color: var(--text); padding: 0.05em 0.35em; border-radius: 6px; }
.hl-gain, .hl-green { color: var(--up); background: var(--up-soft); }
.hl-loss, .hl-pink { color: var(--down); background: var(--down-soft); }
.hl-yellow, .hl-blue { color: var(--blue-hi); background: var(--blue-soft); }
.hl-flat { color: var(--muted); background: var(--bg-3); }
.scribble, .scribble.ink { font: 700 11px/1.4 var(--font-num); letter-spacing: 0.08em; text-transform: uppercase; color: var(--blue-hi); }
.sticky { background: var(--blue-soft); color: var(--text); border: 1px solid rgba(77, 124, 255, 0.28); border-left: 3px solid var(--blue); border-radius: 10px; padding: 10px 12px; font: 500 14px/1.45 var(--font-body); box-shadow: none; }
.sticky b { color: var(--blue-hi); font-size: 11px; letter-spacing: 0.08em; }
.chip { background: var(--bg-3); color: var(--muted); border-color: var(--line-2); font-family: var(--font-num); font-size: 11px; }
.chip-curve { background: var(--blue-soft); border-color: rgba(77, 124, 255, 0.4); color: var(--blue-hi); }
.chip-amm { background: var(--up-soft); border-color: rgba(47, 208, 138, 0.4); color: var(--up); }
.chip-arena { background: var(--blue); border-color: var(--blue); color: #fff; }
.chip-warn { background: var(--warn-soft); border-color: rgba(245, 183, 64, 0.45); color: var(--warn); }
.chip-risk { background: var(--down-soft); border-color: rgba(255, 92, 108, 0.45); color: var(--down); }

.btn { border: 1px solid var(--line-2); background: var(--bg-3); color: var(--text); border-radius: 10px; font-weight: 700; transition: background 0.12s, border-color 0.12s, transform 0.06s; }
.btn:hover { border-color: var(--blue); color: var(--text); text-decoration: none; }
.btn:active { transform: translateY(1px); box-shadow: none; }
.btn-primary { background: var(--blue); border-color: var(--blue); color: #fff; }
.btn-primary:hover { background: var(--blue-hi); border-color: var(--blue-hi); color: #fff; }
.btn-primary:active { background: var(--blue-deep); }
.btn-buy { background: var(--up); border-color: var(--up); color: var(--bg); }
.btn-buy:hover { border-color: var(--text); color: var(--bg); }
.btn-sell { background: var(--down); border-color: var(--down); color: var(--bg); }
.btn-sell:hover { border-color: var(--text); color: var(--bg); }
.btn-danger { background: transparent; border-color: var(--down); color: var(--down); }
.btn-ghost { background: transparent; border-color: var(--line-2); color: var(--text); }
.btn-cta { min-height: 60px; padding: 14px 30px; font-size: 19px; border-radius: 12px; background: linear-gradient(180deg, var(--blue-hi), var(--blue) 55%, var(--blue-deep) 140%); border-color: var(--blue-hi); color: #fff; box-shadow: var(--glow); }
.btn-cta:hover { color: #fff; filter: brightness(1.08); }
.btn-cta .ico { width: 22px; height: 22px; }
.icon-btn { color: var(--muted); }
.icon-btn:hover { background: var(--bg-3); color: var(--text); }
.seg { background: var(--bg-3); border-color: var(--line); border-radius: 10px; }
.seg-btn { color: var(--muted); border-radius: 8px; }
.seg-btn.on { background: var(--blue-soft); color: var(--text); box-shadow: inset 0 0 0 1px rgba(77, 124, 255, 0.55); }
.ticket .seg-btn.on[data-v="buy"] { background: var(--up-soft); color: var(--up); box-shadow: inset 0 0 0 1px rgba(47, 208, 138, 0.55); }
.ticket .seg-btn.on[data-v="sell"] { background: var(--down-soft); color: var(--down); box-shadow: inset 0 0 0 1px rgba(255, 92, 108, 0.55); }
.input, .textarea { background: var(--bg-3); border: 1px solid var(--line-2); color: var(--text); border-radius: 10px; }
.input::placeholder, .textarea::placeholder { color: var(--dim); }
.input:focus, .textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 3px var(--blue-soft); }
.label { color: var(--text); }
.stat { background: var(--bg-3); border-color: var(--line); }
.stat-k { color: var(--muted); font-size: 11px; display: flex; align-items: center; gap: 5px; }
.stat-v { color: var(--text); }
.loading { font: 600 14px/1.4 var(--font-body); color: var(--muted); }
.pencil { width: 16px; height: 16px; border-radius: 50%; background: none; border: 2px solid var(--line-2); border-top-color: var(--blue); animation: spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.empty { border: 1px dashed var(--line-2); background: transparent; color: var(--muted); }
.empty b { color: var(--text); display: block; margin-bottom: 4px; }
.errbox { background: var(--down-soft); border-color: rgba(255, 92, 108, 0.45); color: var(--text); }
.ava { color: var(--text); border-color: var(--line-2); }
.tone-yellow { background: var(--warn-soft); color: var(--warn); }
.tone-green { background: var(--up-soft); color: var(--up); }
.tone-pink { background: var(--down-soft); color: var(--down); }
.tone-blue { background: var(--blue-soft); color: var(--blue-hi); }
.coin-img { background: var(--bg-3); border-color: var(--line-2); }
.coin-fb { color: var(--blue-hi); background: var(--blue-soft); }
.trader, .trader:hover { color: var(--text); }

.lvl, .qflag { font-family: var(--font-head); }
.lvl-red, .qf-red { background: var(--down-soft); border-color: rgba(255, 92, 108, 0.45); color: var(--down); }
.lvl-yellow, .qf-yellow { background: var(--warn-soft); border-color: rgba(245, 183, 64, 0.45); color: var(--warn); }
.lvl-green, .qf-green { background: var(--up-soft); border-color: rgba(47, 208, 138, 0.45); color: var(--up); }
.lvl-unknown, .qf-unknown { background: transparent; border: 1px dashed var(--line-2); color: var(--muted); }
.lvl-red .lvl-dot, .qf-red .lvl-dot { background: var(--down); }
.lvl-yellow .lvl-dot, .qf-yellow .lvl-dot { background: var(--warn); }
.lvl-green .lvl-dot, .qf-green .lvl-dot { background: var(--up); }
.flag-mark { border-radius: 50%; width: 9px; height: 9px; margin-top: 7px; }
.flag-yellow .flag-mark { background: var(--warn); }
.flag-info .flag-mark { background: var(--blue); border: 0; }
.flag-title { color: var(--text); }
.flag-says { color: var(--muted); }
.code { background: var(--bg-3); color: var(--muted); font-family: var(--font-num); }
.code-red { background: var(--down-soft); color: var(--down); }
.bar { background: var(--bg-3); border-color: var(--line); }
.bar-fill { background: linear-gradient(90deg, var(--blue-deep), var(--blue-hi)); }
.bar.near .bar-fill, .bar.hb-green .bar-fill { background: var(--up); }
.bar.hb-pink .bar-fill { background: var(--down); }
.bar.hb-yellow .bar-fill { background: var(--warn); }

.steps li { background: var(--bg-3); border-color: var(--line); }
.steps li::before { background: var(--blue); color: #fff; border: 0; }
.steps b { color: var(--text); }
.season-strip { background: var(--bg-2); border: 1px solid var(--line); }
.season-strip .num { color: var(--text); }
.row { background: var(--bg-2); color: var(--text); }
.row:hover { border-color: var(--blue); text-decoration: none; }
.row-name b { color: var(--text); }
.cands button { background: var(--bg-3); color: var(--text); }

.coin-px .big, .tn-v, .ticket-cash .num, .pool, .clock-big, .podium, .tbl .rank, .feed-amt, .faq summary, .quiz legend, .lesson-card b, .hbar-k, .past b, .switch, .pc-age { color: var(--text); }
.clock-big.closing { color: var(--down); }
.ch-grid { stroke: var(--line); }
.ch-tick { fill: var(--dim); }
.ch-body.ch-up { fill: var(--up); stroke: var(--up); }
.ch-body.ch-down { fill: var(--down); stroke: var(--down); }
.ch-up.ch-wick { stroke: var(--up); }
.ch-down.ch-wick { stroke: var(--down); }
.ch-last { stroke: var(--blue-hi); }
.ch-last-tag { fill: var(--blue); }
.ch-last-txt { fill: #fff; }
.ch-line { stroke: var(--warn); }
.ch-line-label { font: 600 11px var(--font-num); fill: var(--warn); }
.size { background: var(--bg-3); border-color: var(--line-2); color: var(--text); }
.size:hover { border-color: var(--blue); }
.size.on { background: var(--blue-soft); border-color: var(--blue); color: var(--blue-hi); }
.ticket-fine { color: var(--dim); }
.tn { background: var(--bg-3); border-color: var(--line); }
a.tn:hover { border-color: var(--blue); text-decoration: none; }
.tn-k { display: flex; align-items: center; gap: 5px; }
.tbl th { border-bottom: 1px solid var(--line-2); }
.tbl tr.me td { background: rgba(77, 124, 255, 0.12); }
.tbl tr.guest td { opacity: 0.7; }
.medal { color: var(--bg); border: 0; }
.medal-1 { background: var(--warn); }
.split span { background: var(--bg-3); color: var(--muted); }
.past a { background: var(--bg-2); color: var(--text); }
.past a:hover { border-color: var(--blue); text-decoration: none; }
.badge { background: var(--blue-soft); border-color: rgba(77, 124, 255, 0.4); color: var(--blue-hi); }
.switch input { background: var(--bg-3); border-color: var(--line-2); }
.switch input::after { background: var(--text); border: 0; }
.switch input:checked { background: var(--blue); border-color: var(--blue); }
.lesson-card { background: var(--bg-2); color: var(--text); }
.lesson-card:hover { border-color: var(--blue); text-decoration: none; }
.lesson-n { background: var(--blue-soft); border-color: rgba(77, 124, 255, 0.5); color: var(--blue-hi); font: 700 16px/1 var(--font-num); }
.done-mark { font: 700 12px/1 var(--font-num); text-transform: uppercase; letter-spacing: 0.06em; color: var(--up); }
.live-ex { background: var(--bg-2); border-color: rgba(77, 124, 255, 0.5); }
.live-ex .scribble { background: var(--bg); top: -10px; }
.quiz fieldset { background: var(--bg-2); }
.choice:hover { background: var(--bg-3); }
.choice input { accent-color: var(--blue); }
.why { border-left-color: var(--blue); color: var(--muted); }
.modal-wrap { backdrop-filter: blur(3px); }
.modal { background: var(--bg-2); border: 1px solid var(--line-2); border-bottom: 0; box-shadow: 0 -20px 60px -20px rgba(0, 0, 0, 0.9); }
.modal-red { border-color: rgba(255, 92, 108, 0.6); }
.wallets button, .wallets a { background: var(--bg-3); border-color: var(--line-2); color: var(--text); }
.wallets button:hover, .wallets a:hover { border-color: var(--blue); text-decoration: none; }
.wallet-fb { background: var(--blue-soft); color: var(--blue-hi); }
.toast { background: var(--bg-3); color: var(--text); border: 1px solid var(--line-2); border-left: 3px solid var(--blue); box-shadow: 0 16px 40px -12px rgba(0, 0, 0, 0.9); }
.toast-error { background: var(--bg-3); border-left-color: var(--down); }
.toast-gain { background: var(--bg-3); border-left-color: var(--up); }
.mode { border-color: var(--line-2); }
.mode-dry { background: var(--warn-soft); color: var(--warn); }
.mode-live { background: var(--down-soft); color: var(--down); }
.mono-box { background: var(--bg-3); }

/* Pulse */

.st-pill { background: var(--bg-2); color: var(--muted); border-color: var(--line-2); }
.st-live { background: var(--up-soft); border-color: rgba(47, 208, 138, 0.45); color: var(--up); }
.st-live .st-dot { background: var(--up); }
.st-poll { background: var(--warn-soft); border-color: rgba(245, 183, 64, 0.45); color: var(--warn); }
.st-poll .st-dot { background: var(--warn); }
.st-off { background: var(--down-soft); border-color: rgba(255, 92, 108, 0.45); color: var(--down); }
.st-sample { background: var(--warn-soft); border: 1px dashed var(--warn); color: var(--warn); }
.st-sample .st-dot { background: var(--warn); }
.pcol { background: var(--bg-2); border-color: var(--line); padding: 10px 8px 8px; }
.pcol.paused { border-color: var(--line-2); box-shadow: inset 0 2px 0 var(--blue); }
.pcol-head h2 { font-size: 17px; }
.pcol-count { background: var(--bg-3); color: var(--muted); }
.pcol-paused { font: 700 11px/1 var(--font-num); text-transform: uppercase; letter-spacing: 0.06em; color: var(--blue-hi); }
.pcol-pause { background: var(--bg-3); border-color: var(--line-2); }
.pcol-pause[aria-pressed="true"] { background: var(--blue-soft); border-color: var(--blue); color: var(--blue-hi); }
.pcol[data-col="stretch"] { border-color: rgba(77, 124, 255, 0.35); }
.pc { background: var(--bg-3); border-color: var(--line); box-shadow: none; }
.pc:hover { border-color: var(--line-2); background: rgba(77, 124, 255, 0.06); }

.pc-link, .pc-link:hover { color: var(--text); text-decoration: none; }
.pc-sym { font: 700 15px/1.2 var(--font-num); }
.soc { background: var(--bg-2); border-color: var(--line-2); color: var(--muted); }
.soc:hover { background: var(--blue-soft); color: var(--blue-hi); text-decoration: none; }
.pc-paid { background: var(--blue-soft); color: var(--blue-hi); }
.bs { background: var(--down); border: 0; }
.bs-none { background: var(--line-2); }
.hchip { background: var(--bg-2); color: var(--muted); border-color: var(--line); position: relative; z-index: 2; cursor: help; font-family: var(--font-num); }

.hc-red { background: var(--down-soft); color: var(--down); border-color: rgba(255, 92, 108, 0.3); }

.hc-yellow { background: var(--warn-soft); color: var(--warn); border-color: rgba(245, 183, 64, 0.3); }

.hc-green { background: transparent; color: var(--up); }
.hc-unknown { border: 1px dashed var(--line-2); color: var(--dim); }

.pc-pop { background: var(--bg-2); border: 1px solid var(--down); box-shadow: 0 24px 50px -10px rgba(0, 0, 0, 0.95); }
.pc-pop-t { color: var(--down); }
.pc-pop p { color: var(--muted); }
.qflag[data-tip] { position: relative; z-index: 2; cursor: help; }
.mini { background: var(--bg-3); color: var(--text); }
.mini:hover { border-color: var(--blue); text-decoration: none; }

.tape-head { border-bottom: 1px solid var(--line-2); }
.wl { font-family: var(--font-num); }
.wl-dev { background: var(--down-soft); color: var(--down); }
.wl-bundler { background: var(--down-soft); border: 0; color: var(--down); }
.wl-sniper { background: var(--warn-soft); color: var(--warn); }
.wl-kol { background: var(--blue-soft); color: var(--blue-hi); }

/* ================= relaunch: onboarding ================= */
.mark { display: block; flex: none; }
.tipq { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; padding: 0; border-radius: 50%; border: 1px solid var(--line-2); background: transparent; color: var(--muted); font: 700 10px/1 var(--font-num); cursor: help; flex: none; position: relative; z-index: 2; }
.tipq:hover, .tipq:focus-visible { border-color: var(--blue); color: var(--blue-hi); }
[data-tip] { cursor: help; }
.term-u { border-bottom: 1px dotted var(--dim); cursor: help; }
.tip-pop { position: fixed; z-index: 90; width: min(290px, calc(100vw - 24px)); padding: 12px 14px; border-radius: 10px; background: var(--bg-3); border: 1px solid var(--line-2); box-shadow: 0 20px 50px -10px rgba(0, 0, 0, 0.95), 0 0 0 1px rgba(77, 124, 255, 0.18); font-size: 13.5px; line-height: 1.45; color: var(--muted); animation: fadein 0.12s ease-out; }
.tip-pop b { display: block; color: var(--text); font: 700 14px/1.3 var(--font-head); margin-bottom: 3px; }
.tip-pop a { display: inline-block; margin-top: 6px; font-weight: 700; font-size: 12.5px; }

.how { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; counter-reset: how; }
.how li { position: relative; padding: 16px 16px 16px 60px; border-radius: 12px; background: var(--bg-2); border: 1px solid var(--line); color: var(--muted); }
.how li::before { counter-increment: how; content: counter(how); position: absolute; left: 14px; top: 14px; width: 34px; height: 34px; border-radius: 10px; display: flex; align-items: center; justify-content: center; background: var(--blue-soft); border: 1px solid rgba(77, 124, 255, 0.5); color: var(--blue-hi); font: 700 16px/1 var(--font-num); }
.how b { display: block; color: var(--text); font-size: 17px; margin-bottom: 2px; }

.prize { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: 4px; align-items: end; height: 120px; margin: 12px 0 6px; }

.streak { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; background: var(--warn-soft); border: 1px solid rgba(245, 183, 64, 0.45); color: var(--warn); font: 700 12px/1.4 var(--font-num); white-space: nowrap; }
.streak .ico { width: 13px; height: 13px; }
.save-card { border-color: rgba(77, 124, 255, 0.45); background: linear-gradient(90deg, var(--blue-soft), transparent 80%), var(--bg-2); }
.share-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 10px; }
.share-canvas { display: block; width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--line-2); background: var(--bg); }
.share-text { margin: 10px 0 0; padding: 10px 12px; border-radius: 10px; background: var(--bg-3); border: 1px solid var(--line); font-size: 14px; color: var(--text); overflow-wrap: anywhere; }
.share-acts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
.share-acts .btn { min-height: 44px; font-size: 14px; padding: 8px 10px; }
.share-acts .btn-primary { grid-column: 1 / -1; }

.coach { position: fixed; z-index: 55; left: 12px; right: 12px; bottom: calc(var(--tab-h) + 12px + env(safe-area-inset-bottom, 0px)); max-width: 400px; margin: 0 auto; padding: 14px 14px 12px; border-radius: 14px; background: var(--bg-3); border: 1px solid rgba(77, 124, 255, 0.7); box-shadow: var(--glow), 0 30px 60px -10px rgba(0, 0, 0, 0.95); animation: fadein 0.2s ease-out; }
.coach-top { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.coach-top .mark { width: 40px; height: 40px; }
.coach-n { font: 700 11px/1 var(--font-num); letter-spacing: 0.08em; text-transform: uppercase; color: var(--blue-hi); }
.coach h3 { margin: 2px 0 0; font-size: 18px; }
.coach p { margin: 0 0 10px; color: var(--muted); font-size: 14.5px; }
.coach-acts { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.coach-skip { background: none; border: 0; padding: 8px 4px; color: var(--dim); font-weight: 700; font-size: 13px; cursor: pointer; }
.coach-skip:hover { color: var(--text); }
.coach-on { outline: 2px solid var(--blue); outline-offset: 3px; box-shadow: 0 0 0 6px rgba(77, 124, 255, 0.18), 0 0 40px -6px rgba(77, 124, 255, 0.8); border-radius: var(--radius); scroll-margin-top: calc(var(--top-h) + 48px); }
@media (min-width: 900px) { .coach { left: auto; right: 24px; bottom: 24px; margin: 0; } }

.confetti { position: fixed; inset: 0; z-index: 95; pointer-events: none; overflow: hidden; }
.cf { position: absolute; top: -18px; left: var(--x, 50%); width: 8px; height: 14px; border-radius: 2px; background: var(--blue); opacity: 0.95; animation: cf-fall var(--d, 1.6s) cubic-bezier(0.2, 0.6, 0.4, 1) var(--w, 0s) forwards; }
.cf-1 { background: var(--blue-hi); }
.cf-2 { background: var(--up); }
.cf-3 { background: var(--text); width: 6px; height: 6px; border-radius: 50%; }
@keyframes cf-fall { to { transform: translate3d(var(--dx, 0px), 105vh, 0) rotate(var(--r, 540deg)); opacity: 0.2; } }
.win { text-align: center; }
.win .mark { margin: 0 auto 4px; }
.win-num { font: 700 clamp(40px, 12vw, 56px)/1 var(--font-num); letter-spacing: -0.04em; margin: 6px 0; }

@media (min-width: 640px) {

  .how { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .how li { padding: 60px 16px 16px; }

  .modal { border-bottom: 1px solid var(--line-2); border-radius: 16px; }
  .share-acts { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .share-acts .btn-primary { grid-column: auto; }
}

@media (max-width: 559px) {
  .auth-save .ico { display: none; }
  .auth-btn { font-size: 13px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .confetti { display: none; }
}

/* ================= relaunch layout: terminal board (docs/RELAUNCH.md "LAYOUT") ================= */
body { font-size: 15px; }
.num { font-family: var(--font-num); font-variant-numeric: tabular-nums; letter-spacing: 0; }
.mint, .sig, .mono-box, .pr-addr, kbd { font-family: var(--font-mono); }

/* top bar: 48 px, one row */
.top { height: var(--top-h); padding: 0 16px; gap: 6px; background: var(--bg); backdrop-filter: none; }
.logo { gap: 8px; margin-right: 10px; }
.logo-mark { width: 28px; height: 28px; border-radius: 7px; box-shadow: 0 0 16px -4px rgba(77, 124, 255, 0.9); }
.logo-name { font: 700 15px/1 var(--font-head); letter-spacing: 0.04em; text-transform: uppercase; }
.nav { margin-left: 0; gap: 0; }
.nav a { padding: 6px 10px; font: 600 13.5px/1 var(--font-head); color: var(--text); border-radius: 6px; }
.nav a:hover { background: var(--chip); }
.nav a.on { background: none; color: var(--blue-hi); }
.top-right { gap: 8px; flex: 1 1 auto; justify-content: flex-end; }
.top-search { display: flex; align-items: center; gap: 6px; height: 32px; padding: 0 6px 0 10px; border: 1px solid var(--line-2); border-radius: 999px; background: var(--bg); flex: 0 1 240px; min-width: 0; }
.top-search:focus-within { border-color: var(--blue); }
.top-search svg { width: 15px; height: 15px; flex: none; color: var(--muted); }
.top-search input { flex: 1 1 auto; min-width: 0; width: 100%; background: none; border: 0; outline: none; color: var(--text); font: 500 12.5px/1 var(--font-body); padding: 0; }
.top-search input::placeholder { color: var(--dim); }
.top-search input::-webkit-search-cancel-button { display: none; }
kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; border: 1px solid var(--line-2); color: var(--muted); font-size: 11px; flex: none; }
.auth-btn { min-height: 32px; height: 32px; padding: 0 14px; border-radius: 999px; border: 1px solid #fff; background: #fff; color: #06070b; font: 700 13px/1 var(--font-head); }
.auth-btn:hover { background: var(--text); color: #06070b; filter: brightness(0.92); }
.auth-me, .auth-me:hover { background: #fff; color: #06070b; border-color: #fff; padding: 0 12px 0 4px; max-width: 170px; }
.auth-me .ava { border: 0; }
.auth-save, .auth-save:hover { background: #fff; color: #06070b; border-color: #fff; }
.bal, .clock { display: inline-flex; align-items: center; gap: 6px; height: 32px; min-height: 32px; padding: 0 10px; border-radius: 8px; border: 1px solid var(--line-2); background: var(--chip); color: var(--text); font: 600 13px/1 var(--font-num); font-variant-numeric: tabular-nums; text-decoration: none; white-space: nowrap; }
.bal:hover, .clock:hover { border-color: var(--blue); color: var(--text); text-decoration: none; }
.bal svg { width: 13px; height: 13px; color: var(--cyan); flex: none; }
.clock.closing { background: var(--chip-red); border-color: var(--down); }
body.is-mock .top { top: 31px; }

/* ticker strip: 28 px */
.ticker { height: 28px; overflow: hidden; display: flex; align-items: center; border-bottom: 1px solid var(--line); background: var(--bg); }
.ticker-track { display: inline-flex; align-items: center; gap: 22px; padding-left: 16px; white-space: nowrap; animation: tick 90s linear infinite; will-change: transform; }
.ticker:hover .ticker-track, .ticker:focus-within .ticker-track { animation-play-state: paused; }
@keyframes tick { to { transform: translateX(-50%); } }
.tk { display: inline-flex; align-items: center; gap: 6px; font: 600 12px/1 var(--font-head); color: var(--text); text-decoration: none; }
.tk:hover { color: var(--text); text-decoration: none; }
.tk:hover b { text-decoration: underline; }
.tk img, .tk .coin-fb { width: 14px; height: 14px; border-radius: 3px; border: 0; font-size: 0; }
.tk b { font-weight: 600; }
.tk .num { font-weight: 500; color: var(--cyan); }
.tk .num.up { color: var(--up); }
.tk .num.warn { color: var(--warn); }

/* Pulse header row */
body[data-view="pulse"] .sheet { max-width: none; padding: 0 0 calc(var(--tab-h) + 24px); }
body[data-view="pulse"] .foot { max-width: none; }
.pulse-bar { margin: 0; padding: 10px 12px; gap: 8px 12px; flex-wrap: wrap; }
.pulse-title { gap: 8px; }
.pulse-title h1 { font: 600 20px/1 var(--font-head); letter-spacing: -0.01em; gap: 0; }
.pulse-tools { flex: 0 1 auto; align-items: center; gap: 8px; }
.rbtn { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--line-2); background: var(--chip); color: var(--muted); cursor: pointer; padding: 0; }
.rbtn:hover { color: var(--text); border-color: var(--blue); }
.rbtn[aria-pressed="true"] { background: var(--blue-soft); border-color: var(--blue); color: var(--blue-hi); }
.rbtn .ico { width: 14px; height: 14px; }
.pbtn { display: inline-flex; align-items: center; gap: 7px; height: 30px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--chip); color: var(--text); font: 600 12.5px/1 var(--font-head); cursor: pointer; white-space: nowrap; }
.pbtn:hover { border-color: var(--blue); }
.pbtn .ico { width: 13px; height: 13px; }
.pbtn-qb { border-color: rgba(77, 124, 255, 0.7); }
.pbtn-qb .ico { color: var(--blue-hi); }
.tog { position: relative; width: 26px; height: 14px; border-radius: 999px; background: var(--line-2); flex: none; }
.tog::after { content: ''; position: absolute; top: 2px; left: 2px; width: 10px; height: 10px; border-radius: 50%; background: var(--muted); transition: transform 0.12s; }
[aria-pressed="true"] > .tog { background: var(--blue); }
[aria-pressed="true"] > .tog::after { transform: translateX(12px); background: #fff; }
.qamt { display: inline-flex; align-items: center; gap: 5px; height: 26px; padding: 0 8px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--bg); color: var(--text); font: 600 12px/1 var(--font-num); }
.qamt .ico { width: 12px; height: 12px; color: var(--muted); }
.qamt input { width: 34px; background: none; border: 0; outline: none; color: var(--text); font: inherit; padding: 0; font-variant-numeric: tabular-nums; }
.qamt:focus-within { border-color: var(--blue); }
.qamt-u { color: var(--dim); font-size: 11px; }
.pulse-seg { margin: 0; padding: 0 12px 8px; }
.pulse-seg .seg { border-radius: 8px; padding: 3px; }
.pulse-seg .seg-btn { min-height: 34px; font: 600 13px/1 var(--font-head); }
.pulse-fine { margin: 14px 12px 0; }

/* columns: hairlines, no boxes */
.pulse { border-top: 1px solid var(--line); }
.pcol, .pcol[data-col="stretch"] { background: none; border: 0; border-radius: 0; padding: 0; min-width: 0; }
.pcol.paused { box-shadow: inset 0 1px 0 var(--blue); border: 0; }
.pcol-head { height: 40px; padding: 0 12px; gap: 8px; border-bottom: 1px solid var(--line); }
.pcol-head h2 { font: 600 15px/1 var(--font-head); white-space: nowrap; letter-spacing: 0; }
.pcol-count { background: none; padding: 0; font-size: 11px; color: var(--dim); }
.pcol-paused { font: 600 10.5px/1 var(--font-head); letter-spacing: 0.04em; }
.pcol-q { flex: 1 1 60px; min-width: 0; max-width: 190px; height: 26px; margin-left: auto; padding: 0 10px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--bg); color: var(--text); font: 500 11.5px/1 var(--font-body); outline: none; }
.pcol-q::placeholder { color: var(--dim); }
.pcol-q:focus { border-color: var(--blue); }
.presets { display: inline-flex; gap: 1px; flex: none; }
.preset { height: 26px; min-width: 24px; padding: 0 4px; border: 0; background: none; color: var(--muted); font: 600 11.5px/1 var(--font-head); cursor: pointer; border-radius: 4px; }
.preset:hover { color: var(--text); }
.preset.on { color: var(--blue-hi); }
.pcol-pause, .pcol-filter { width: 26px; height: 26px; border: 0; background: none; margin-left: 0; color: var(--muted); border-radius: 6px; flex: none; }
.pcol-pause .ico, .pcol-filter .ico { width: 14px; height: 14px; }
.pcol-filter[aria-pressed="true"], .pcol-pause[aria-pressed="true"] { background: var(--blue-soft); color: var(--blue-hi); border: 0; }
.pcol-list { gap: 0; }
.pcol-body .empty { margin: 12px; }
.pcol-body .loading { padding: 16px 12px; }

/* one row (about 86 px) */
.pc { display: grid; grid-template-columns: 68px minmax(0, 1fr) auto; gap: 0 12px; align-items: start; padding: 9px 12px 8px; margin: 0; min-height: 86px; background: none; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; }
.pc:hover { background: var(--hover); border-color: var(--line); }

.pc.hide { display: none; }
.pc-link::after { border-radius: 0; }
.pr-l { display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 0; }
.pr-img { position: relative; display: block; width: 68px; height: 68px; border-radius: 4px; box-shadow: 0 0 0 1px var(--line-2); background: var(--chip); overflow: visible; }
.pr-img .coin-img { width: 68px; height: 68px; border-radius: 4px; border: 0; font-size: 15px; }
.pr-prog { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; border-radius: 0 0 4px 4px; background: rgba(6, 7, 11, 0.7); overflow: hidden; }
.pr-prog i { display: block; height: 100%; width: var(--w, 0%); background: var(--blue); }
.pr-prog.near i { background: var(--up); }
.pr-dot { position: absolute; right: -3px; bottom: -3px; width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--bg); background: var(--blue); }
.pr-dot.done { background: var(--up); }
.pr-addr { font-size: 10.5px; line-height: 1; color: var(--dim); white-space: nowrap; }
.pr-m { min-width: 0; display: flex; flex-direction: column; gap: 5px; padding-top: 1px; }
.pr-l1 { display: flex; align-items: center; gap: 6px; min-width: 0; }
.pc-link { display: flex; align-items: baseline; gap: 6px; min-width: 0; flex: 0 1 auto; }
.pc-sym { font: 600 15px/1.2 var(--font-head); color: var(--text); }
.pc-name { font: 500 14.5px/1.2 var(--font-head); color: var(--muted); }
.pr-copy { position: relative; z-index: 2; width: 18px; height: 18px; border: 0; background: none; padding: 0; color: var(--dim); cursor: pointer; flex: none; display: inline-flex; align-items: center; justify-content: center; }
.pr-copy:hover { color: var(--text); }
.pr-copy .ico { width: 12px; height: 12px; }
.pr-fee { position: relative; z-index: 2; display: inline-flex; align-items: center; gap: 3px; font: 500 11px/1 var(--font-num); color: var(--muted); white-space: nowrap; flex: none; cursor: help; }
.pr-l2 { display: flex; align-items: center; gap: 9px; min-width: 0; font: 500 12px/1 var(--font-num); color: var(--muted); white-space: nowrap; overflow: hidden; }
.pc-age { font: 500 13px/1 var(--font-num); color: var(--up); }
.pc-age.old { color: var(--down); }
.pc-soc { gap: 7px; }
.soc { min-width: 0; height: auto; padding: 0; border: 0; background: none; color: var(--muted); }
.soc:hover { background: none; color: var(--blue-hi); }
.soc .ico { width: 13px; height: 13px; }
.pr-n { position: relative; z-index: 2; display: inline-flex; align-items: center; gap: 3px; color: var(--text); font-weight: 600; cursor: help; }
.pr-n .ico { width: 13px; height: 13px; color: var(--muted); }
.qflag { position: relative; z-index: 2; padding: 0; border: 0; background: none; font: 600 11.5px/1 var(--font-head); gap: 4px; cursor: help; }
.qf-red, .qf-yellow, .qf-green, .qf-unknown { background: none; border: 0; }
.qflag .lvl-dot { width: 6px; height: 6px; }
.pr-l3 { display: flex; align-items: center; gap: 4px; flex-wrap: nowrap; min-width: 0; overflow: hidden; }
.pc-chips { gap: 4px; flex-wrap: nowrap; }
.hchip { height: 20px; padding: 0 6px; gap: 4px; align-items: center; border-radius: 4px; border: 0; background: var(--chip); color: var(--muted); font: 600 11.5px/1 var(--font-num); }
.hchip .ico { width: 11px; height: 11px; }

.hc-red { background: var(--chip-red); color: var(--down); border: 0; }
.hc-yellow { background: var(--chip); color: var(--warn); border: 0; }
.hc-green { background: var(--chip-green); color: var(--up); }
.hc-unknown { background: var(--chip); border: 0; color: var(--dim); }
.pc-paid { height: 20px; display: inline-flex; align-items: center; padding: 0 6px; border-radius: 4px; background: var(--chip-green); color: var(--up); font: 600 11px/1 var(--font-head); position: relative; z-index: 2; cursor: help; }
.pr-r { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; min-width: 0; padding-top: 1px; }
.pr-r1, .pr-r2 { display: flex; align-items: baseline; gap: 8px; white-space: nowrap; }
.pr-r2 { align-items: center; }
.pr-kv { position: relative; z-index: 2; display: inline-flex; align-items: baseline; gap: 4px; cursor: help; font: 500 12px/1 var(--font-num); color: var(--text); }
.pr-kv .k { font: 500 10.5px/1 var(--font-head); color: var(--dim); margin: 0; }
.pr-v b { font: 600 14px/1 var(--font-num); border-radius: 3px; }
.pr-mc b { font: 700 16px/1 var(--font-num); color: var(--cyan); border-radius: 3px; }
.pr-kv b.num { padding: 0 1px; }
.bs { width: 24px; height: 2px; margin: 0 0 0 2px; align-self: center; }
.pc-quick { margin: 3px 0 0; }
.qpill { position: relative; z-index: 2; display: inline-flex; align-items: center; gap: 5px; height: 26px; padding: 0 10px 0 8px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--chip); color: var(--text); font: 700 12px/1 var(--font-num); cursor: pointer; white-space: nowrap; }
.qpill .ico { width: 12px; height: 12px; color: var(--blue-hi); }
.qpill:hover { border-color: var(--blue); background: var(--blue-soft); }
.qpill:active { transform: translateY(1px); }
.qpill:disabled { opacity: 0.5; cursor: progress; }
.pulse[data-quick="off"] .pc-quick { display: none; }
.pulse[data-dense="1"] .pr-l3 { display: none; }
.pulse[data-dense="1"] .pc { min-height: 0; }
.pc-pop { top: 6px; left: 8px; right: 8px; }
@media (max-width: 899px) {
  .qpill { min-height: 30px; }
  .pcol-q, .pcol-head .qamt { display: none; }
  .presets { margin-left: auto; }
}
@media (min-width: 900px) {
  body[data-view="pulse"] .sheet { padding: 0; max-width: none; }
  body[data-view="pulse"] .foot { max-width: none; padding-left: 16px; }
  .pulse-bar { padding: 10px 16px; }
  .pulse { gap: 0; }
  .pcol + .pcol { border-left: 1px solid var(--line); }
  .pcol-body { max-height: none; height: calc(100vh - var(--top-h) - 28px - 50px - 41px - var(--mock-h, 0px)); min-height: 420px; padding: 0; }
}

/* welcome card: compact, anchored over the board */
.welcome { position: fixed; z-index: 50; left: 12px; right: 12px; bottom: calc(var(--tab-h) + 12px + env(safe-area-inset-bottom, 0px)); max-width: 520px; margin: 0 auto; padding: 14px 14px 12px; border-radius: 14px; background: var(--bg-3); border: 1px solid rgba(77, 124, 255, 0.6); box-shadow: 0 0 0 1px rgba(126, 162, 255, 0.2), 0 24px 70px -10px rgba(0, 0, 0, 0.95), 0 0 60px -20px rgba(77, 124, 255, 0.9); animation: fadein 0.25s ease-out; }
.welcome-mark { position: absolute; top: -52px; left: 14px; width: 70px; height: 70px; pointer-events: none; }
.welcome-x { position: absolute; top: 4px; right: 4px; width: 32px; height: 32px; }
.welcome h2 { margin: 0 34px 2px 0; padding-left: 0; font: 700 clamp(18px, 5vw, 21px)/1.2 var(--font-head); letter-spacing: -0.01em; }
.welcome p { margin: 0 0 10px; color: var(--muted); font-size: 14px; }
.welcome-acts { display: flex; align-items: center; gap: 10px 14px; flex-wrap: wrap; }
.welcome .btn-cta { min-height: 46px; padding: 8px 22px; font: 700 16px/1 var(--font-head); background: #fff; border-color: #fff; color: #06070b; border-radius: 999px; box-shadow: 0 0 0 4px rgba(77, 124, 255, 0.35), 0 10px 30px -6px rgba(77, 124, 255, 0.9); flex: 1 1 150px; }
.welcome .btn-cta:hover { color: #06070b; }
.welcome-how { background: none; border: 0; padding: 6px 2px; color: var(--blue-hi); font: 600 13px/1 var(--font-head); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.welcome-fine { width: 100%; font: 500 11.5px/1.3 var(--font-body); color: var(--dim); margin: 2px 0 0; }
@media (min-width: 900px) { .welcome { left: 24px; right: auto; bottom: 24px; margin: 0; width: 440px; } }
.coach-n, .scribble, .scribble.ink, .streak, .chip { font-family: var(--font-head); }
.coach { z-index: 56; }
.coach-on { position: relative; z-index: 3; border-radius: 6px; }
.qpill.coach-on { border-radius: 999px; outline-offset: 2px; animation: nudge 1.2s ease-in-out infinite; }
@keyframes nudge { 50% { box-shadow: 0 0 0 8px rgba(77, 124, 255, 0.28), 0 0 30px 0 rgba(77, 124, 255, 0.9); } }

/* token page: terminal */
.term { gap: 0; }
.term > .card { border-radius: 0; border: 0; border-bottom: 1px solid var(--line); background: none; padding: 12px 0; }
.term-head { gap: 10px 18px; padding-top: 0; }
.term-id .coin-lg { border-radius: 6px; width: 48px; height: 48px; }
.term-id h1 { font: 600 clamp(20px, 5vw, 24px)/1.15 var(--font-head); }
.term-name { font: 500 15px/1.2 var(--font-head); }
.term-nums { gap: 4px 18px; }
.tn { background: none; border: 0; padding: 0; min-width: 0; border-radius: 0; }
.tn-k { font: 500 11px/1.3 var(--font-head); text-transform: none; letter-spacing: 0; color: var(--dim); }
.tn-v { font: 600 15px/1.25 var(--font-num); }
.tn-mc .tn-v { color: var(--cyan); }
.term .coin-strip { border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: none; padding: 8px 0; font-size: 13px; }
.term .ticket, .term .pos, .term .check-card { padding: 12px 0; }
.check-nums .stat, .pos .stat { background: var(--chip); border: 0; border-radius: 8px; }
@media (min-width: 1000px) {
  body[data-view="coin"] .sheet { max-width: none; padding: 14px 16px 40px; }
  .term { grid-template-columns: minmax(0, 1fr) 340px; grid-template-areas: "head head" "strip strip" "chart ticket" "tabs pos" "tabs check"; column-gap: 0; }
  .term .chart-card, .term .term-tabs { padding-right: 16px; }
  .term .ticket, .term .pos, .term .check-card { padding-left: 16px; border-left: 1px solid var(--line); }
  .check-nums { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 999px) {
  .nav { display: none; }
}
@media (min-width: 1000px) {
  .nav { display: flex; }
}
@media (max-width: 559px) {
  .top { padding: 0 10px 0 12px; gap: 8px; }
  .logo { margin-right: 0; }
  .logo-name { display: none; }
  .clock, .bal { display: none; }
  .top-search { flex: 1 1 auto; }
  .top-search kbd { display: none; }
  .auth-me .trader-name { display: inline; max-width: 76px; }
  .pulse-tools .pbtn-disp, .pulse-tools .qamt { display: none; }
  .pulse-bar { padding: 8px 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .ticker-track { animation: none !important; }
  .ticker { overflow-x: auto; }
}

body.is-mock .top { top: var(--mock-h, 31px); }

/* small pieces */
@media (min-width: 900px) and (max-width: 1279px) { .pcol-head .qamt, .pcol-count { display: none; } }
.lead { color: var(--muted); font-size: 16.5px; max-width: 62ch; }
.words { margin: 10px 0 0; display: grid; gap: 8px; }
.words dt { font-weight: 700; color: var(--text); }
.words dd { margin: 0 0 6px; color: var(--muted); }
.safety-levels { list-style: none; margin: 10px 0; padding: 0; display: grid; gap: 8px; }
.safety-levels li { padding: 10px 12px; border-radius: 10px; background: var(--chip); border-left: 3px solid var(--line-2); }
.pr-l3:empty { display: none; }
.pc-nt { font-size: 11px; color: var(--dim); }

@media (min-width: 900px) { .coach { left: 24px; right: auto; bottom: 24px; width: 400px; } }
.pr-fee[hidden] { display: none; }

@media (max-width: 559px) {
  .pc { grid-template-columns: 56px minmax(0, 1fr) auto; gap: 0 10px; padding: 9px 12px 8px; }
  .pr-img, .pr-img .coin-img { width: 56px; height: 56px; }
  .pr-addr { font-size: 9.5px; }
  .pr-v { display: none; }
  .pc-name { font-size: 13px; }
  .pr-l2 { gap: 7px; }
  .pc-chips { gap: 3px; }
  .hchip { padding: 0 4px; gap: 3px; font-size: 11px; }
  .welcome { padding: 12px 12px 10px; }
  .welcome h2 { font-size: 17px; }
  .welcome p { margin-bottom: 8px; }
  .welcome .btn-cta { min-height: 44px; }
}

/* row height: about 86 px (image 62 + the short address under it) */
.pc { padding: 7px 12px 6px; min-height: 86px; }
.pr-l { gap: 2px; }
.pr-img, .pr-img .coin-img { width: 62px; height: 62px; }
.pc { grid-template-columns: 62px minmax(0, 1fr) auto; }
.pr-m { gap: 4px; }
.pr-r { gap: 4px; }
.pc-quick { margin-top: 1px; }
@media (max-width: 559px) {
  .pc { grid-template-columns: 56px minmax(0, 1fr) auto; }
  .pr-img, .pr-img .coin-img { width: 56px; height: 56px; }
}

/* ---- relaunch integration ---- */
/* the round coin avatar (ui.js mark({ coin: true })): top bar, tab bar, loading and empty states */
.mark-coin { border-radius: 50%; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.1); }
.logo .mark.logo-mark { width: 28px; height: 28px; border-radius: 50%; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.12), 0 0 16px -4px rgba(77, 124, 255, 0.9); }
.tabbar a .tab-coin { width: 24px; height: 24px; opacity: 0.75; }
.tabbar a.on .tab-coin { opacity: 1; background: none; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.14), 0 0 10px -1px rgba(77, 124, 255, 0.9); filter: none; }
.loading-coin { animation: coin-bob 0.9s ease-in-out infinite alternate; }
.empty .empty-coin { margin: 0 auto 8px; opacity: 0.9; }
.coach-top .mark-coin { width: 40px; height: 40px; }
@keyframes coin-bob { from { transform: translateY(1px) scale(0.94); opacity: 0.7; } to { transform: translateY(-1px) scale(1); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .loading-coin { animation: none; } }

/* board rows: a 66 px picture like the reference, the row stays near 92 px */
@media (min-width: 560px) {
  .pc { grid-template-columns: 66px minmax(0, 1fr) auto; padding: 6px 12px 5px; min-height: 90px; }
  .pr-img, .pr-img .coin-img { width: 66px; height: 66px; }
}
/* 1280 to 1499 px: the amount box and the count stay, the search gives way */
@media (min-width: 1280px) and (max-width: 1499px) {
  .pcol-head { gap: 5px; padding: 0 8px; }
  .pcol-q { flex: 1 1 30px; max-width: 110px; padding: 0 8px; }
  .pcol-head .qamt { flex: none; }
  .pcol-head .qamt input { width: 34px; }
  .pcol-head .qamt .qamt-u { display: none; }
  .pcol-head .preset { min-width: 20px; padding: 0 2px; }
}

/* token page: dense tab tables (Safety check, My position) */
.term-tabs .card-head .seg { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; max-width: 100%; }
.term-tabs .card-head .seg::-webkit-scrollbar { display: none; }
.ttab { display: grid; }
.ttab-row { display: grid; grid-template-columns: minmax(120px, 1.1fr) minmax(90px, 0.8fr) minmax(0, 1.6fr); gap: 0 12px; align-items: center; min-height: 34px; padding: 0 4px; border-bottom: 1px solid var(--line); font-size: 13px; }
.ttab-row:hover { background: var(--hover); }
.ttab-k { color: var(--muted); }
.ttab-v { color: var(--text); font-weight: 600; font-variant-numeric: tabular-nums; }
.ttab-n { color: var(--dim); font-size: 12px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ttab-top { display: flex; align-items: center; gap: 10px; padding: 4px 4px 8px; }
.ttab-flags { margin-top: 10px; }
@media (max-width: 559px) { .ttab-row { grid-template-columns: minmax(0, 1.2fr) auto; } .ttab-n { display: none; } }
/* the board picture sits in its box (an old rule offset it by 6 px, over the short address) */
.pr-img .coin-img, .pr-img .coin-pc { position: static; left: auto; top: auto; display: block; object-fit: cover; }
.pr-img .coin-fb { display: flex; align-items: center; justify-content: center; }

/* ---- review pass (2026-10-10): the row and the column header, closer to the reference board ---- */
.qpill { height: 23px; padding: 0 9px 0 7px; gap: 4px; border: 0; background: #fff; color: #06070b; font: 700 11.5px/1 var(--font-num); }
.qpill .ico { width: 11px; height: 11px; color: #06070b; }
.qpill:hover { background: #dbe4ff; border: 0; }
.pr-m, .pr-r { align-self: stretch; }
.pc-quick { margin: auto 0 0; }
.pr-l3 { margin-top: auto; padding-bottom: 1px; gap: 5px; }
.hchip, .hc-red, .hc-yellow, .hc-green, .hc-unknown { height: 20px; padding: 0 7px; border-radius: 999px; border: 1px solid #22242d; background: #0a0b10; }
.hchip { color: var(--text); font-weight: 500; }
.hc-red, .hc-red .num { color: var(--down); }
.hc-yellow, .hc-yellow .num { color: var(--warn); }
.hc-green, .hc-green .num { color: var(--up); }
.hc-unknown, .hc-unknown .num { color: var(--dim); }
.pc-paid { border-radius: 999px; border: 1px solid #22242d; background: #0a0b10; }
.pr-fee { padding: 2px 6px; border-radius: 999px; background: var(--chip); color: var(--text); }
.pr-l2 { gap: 8px; }
.pc-soc { gap: 6px; align-items: center; }
.pc-soc .soc { color: var(--text); display: inline-flex; }
.pc-soc .soc .ico, .pc-soc .soc svg { width: 15px; height: 15px; }
.pc-soc .soc:hover { color: var(--blue-hi); }
.pr-handle { position: relative; z-index: 2; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 500 11px/1 var(--font-num); color: var(--blue-hi); text-decoration: none; }
.pr-handle[hidden], .pr-kv[hidden] { display: none; }
.pc-sym { font: 600 16px/1.2 var(--font-head); }
.pc-name { font: 400 15px/1.2 var(--font-head); }
.pr-v b { font: 500 15px/1 var(--font-num); }
.pcol-ctl { margin-left: auto; display: flex; align-items: center; gap: 8px; min-width: 0; }
.pcol-q { flex: 0 1 150px; width: 150px; max-width: 150px; margin-left: 0; }
.pcol-count { display: none; }
.qgroup { display: inline-flex; align-items: center; height: 26px; padding-right: 5px; border: 1px solid var(--line-2); border-radius: 999px; background: var(--bg); flex: none; }
.qgroup .qamt { height: 24px; border: 0; background: none; padding-right: 6px; }
.qgroup .presets { border-left: 1px solid var(--line-2); padding-left: 3px; }
.qgroup .preset { height: 22px; }
.qgroup:focus-within { border-color: var(--blue); }
@media (min-width: 900px) and (max-width: 1499px) { .pcol-q { flex-basis: 104px; width: 104px; } }
@media (min-width: 900px) and (max-width: 1279px) { .qgroup .presets { border-left: 0; padding-left: 6px; } }
@media (min-width: 900px) and (max-width: 1099px) { .pcol-q { display: none; } }
.qgroup .qamt-u { display: none; }
.custom .num { white-space: nowrap; }
.pos-hint { margin: 0 0 8px; }
/* the strip and the bar: one calm colour for the caps, pills for the chips, no alarm colour while scores are counted */
.tk, .tk b { font-weight: 500; color: #c9cfdb; }
.tk .num, .tk .num.up, .tk .num.warn { color: var(--muted); }
.bal, .clock { border-radius: 999px; }
.bal-u { color: var(--dim); font: 500 11px/1 var(--font-head); }
.clock.settling { background: var(--chip); border-color: var(--line-2); }
.pulse-bar .asof { display: none; }
/* the coach card points at the row it talks about */
@media (min-width: 900px) {
  .coach.coach-at { margin: 0; width: 400px; max-width: 400px; }
  .coach.coach-at::before { content: ""; position: absolute; left: var(--arrow-x, 50%); width: 14px; height: 14px; margin-left: -7px; background: var(--bg-3); border: 1px solid rgba(77, 124, 255, 0.7); transform: rotate(45deg); }
  .coach.coach-at[data-side="below"]::before { top: -8px; border-right: 0; border-bottom: 0; }
  .coach.coach-at[data-side="above"]::before { bottom: -8px; border-left: 0; border-top: 0; }
}
/* the welcome card must not bury the first column on a laptop, nor half the list on a phone */
@media (min-width: 900px) and (max-width: 1439px) { .welcome { max-width: 380px; } }
@media (max-width: 559px) { .welcome-fine { display: none; } .welcome p { margin-bottom: 8px; font-size: 13px; } .welcome h2 { font-size: 17px; } }
/* phone: the switch already names the column, so the column header is controls only and the Pulse line is one row */
@media (max-width: 899px) {
  .pcol-head h2 { display: none; }
  .pcol-ctl { margin-left: 0; flex: 1 1 auto; }
  .pcol-q { flex: 1 1 60px; width: auto; max-width: none; }
  .pulse-bar { flex-wrap: nowrap; padding: 8px 12px; }
  .pulse-tools { flex-wrap: nowrap; }
  .pulse-tools .qamt, .pulse-tools .pbtn-disp { display: none; }
  .pulse-title { flex-wrap: nowrap; }
  .pulse-title .rbtn[aria-pressed] { display: none; }
}
@media (max-width: 559px) {
  .pr-copy, .pc-soc { display: none; }
  .pr-l2 { gap: 7px; }
}

/* ---- live on-chain stream (appended block): rows blink on each real trade, tape rows link their transaction ---- */
@keyframes tr-buy { from { background-color: rgba(47, 208, 138, 0.26); } to { background-color: rgba(47, 208, 138, 0); } }
@keyframes tr-sell { from { background-color: rgba(255, 92, 108, 0.26); } to { background-color: rgba(255, 92, 108, 0); } }
.pc.tr-buy { animation: tr-buy 900ms ease-out 1; }
.pc.tr-sell { animation: tr-sell 900ms ease-out 1; }
.st-chain .st-dot { box-shadow: 0 0 0 3px rgba(47, 208, 138, 0.18); }
.st-pill .st-sub { font: 500 11px/1.4 var(--font-head); color: var(--dim); padding-left: 7px; margin-left: 1px; border-left: 1px solid var(--line-2); }
.tp-tx { margin-left: auto; padding: 0 5px; border: 1px solid var(--line-2, rgba(255, 255, 255, 0.16)); border-radius: 4px; font-size: 11px; line-height: 16px; color: var(--muted); text-decoration: none; flex: none; }
.tp-tx:hover, .tp-tx:focus-visible { color: var(--ink, #fff); border-color: currentColor; }
@media (prefers-reduced-motion: reduce) {
  .pc.tr-buy, .pc.tr-sell { animation: none; }
}

/* phone: the board must never be wider than the screen. The live pill's second half ("new coins on-chain") stays in
   the tooltip, and the Pulse line may wrap when a long pill ("Live on-chain") still does not fit. */
@media (max-width: 559px) {
  .st-pill .st-sub { display: none; }
  .pulse-bar { flex-wrap: wrap; row-gap: 6px; }
  .pulse-tools { flex-wrap: wrap; min-width: 0; }
}
@media (max-width: 899px) { body[data-view="pulse"] .sheet { overflow-x: clip; } }

/* ── token + discover polish ── */
/* The token page (views/coin.js, .term-v2) and Discover (views/board.js, .dz) in the Pulse board's look: full-bleed,
   hairlines instead of boxes, the board's blacks, 11 to 14 px type, pills and chips. Layout, type and colour only. */
body[data-view="coin"] .sheet, body[data-view="board"] .sheet { max-width: none; padding: 0 0 calc(var(--tab-h) + 24px); }
body[data-view="coin"] .foot, body[data-view="board"] .foot { max-width: none; padding-left: 16px; }
@media (min-width: 900px) { body[data-view="coin"] .sheet, body[data-view="board"] .sheet { padding: 0; } }

/* ---- token page ---- */
.term-v2 { display: block; }
.term-v2 > .card, .term-v2 .term-side > .card { margin: 0; padding: 0; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: none; box-shadow: none; }
.term-v2 .term-side { display: block; }
.term-v2 .tipq { width: 13px; height: 13px; font-size: 9px; border-color: #22242d; color: var(--dim); }

/* header strip */
.term-v2 .term-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 24px; padding: 8px 12px; }
.term-v2 .term-id { flex: 0 1 auto; gap: 10px; min-width: 0; }
.th-img { display: block; width: 40px; height: 40px; flex: none; border-radius: 4px; box-shadow: 0 0 0 1px var(--line-2); background: var(--chip); overflow: hidden; }
.term-v2 .term-id .coin-img { display: flex; width: 40px; height: 40px; border-radius: 4px; border: 0; font-size: 12px; object-fit: cover; }
.term-v2 .term-id h1 { display: flex; align-items: baseline; gap: 6px; margin: 0; min-width: 0; font: 600 17px/1.15 var(--font-head); letter-spacing: 0; white-space: nowrap; overflow-wrap: normal; }
.term-v2 .term-name { min-width: 0; max-width: 26ch; overflow: hidden; text-overflow: ellipsis; font: 400 15px/1.2 var(--font-head); color: var(--muted); }
.term-v2 .coin-sub { flex-wrap: nowrap; gap: 6px; margin-top: 4px; font: 500 11.5px/1 var(--font-num); color: var(--muted); white-space: nowrap; }
.term-v2 .coin-sub .mint { font: 500 11px/1 var(--font-mono); color: var(--dim); }
.term-v2 .coin-sub .icon-btn.copy { width: 16px; height: 16px; border: 0; border-radius: 4px; color: var(--dim); }
.term-v2 .coin-sub .icon-btn.copy:hover { background: none; color: var(--text); }
.term-v2 .coin-sub .icon-btn.copy .ico { width: 12px; height: 12px; }
.term-v2 .coin-sub .chip { height: 18px; padding: 0 7px; border: 0; background: var(--chip); color: var(--text); font: 500 11px/1 var(--font-num); }
.term-v2 .coin-links { flex-wrap: nowrap; gap: 10px; font-size: 11.5px; }
.term-v2 .term-nums { display: flex; flex-wrap: nowrap; align-items: center; gap: 0 22px; min-width: 0; flex: 1 1 auto; overflow-x: auto; scrollbar-width: none; }
.term-v2 .term-nums::-webkit-scrollbar { display: none; }
.term-v2 .tn { display: flex; flex-direction: column; gap: 4px; padding: 0; min-width: 0; flex: none; border: 0; border-radius: 0; background: none; white-space: nowrap; }
.term-v2 .tn-k { display: flex; align-items: center; gap: 4px; font: 500 11px/1 var(--font-head); text-transform: none; letter-spacing: 0; color: var(--dim); }
.term-v2 .tn-v { font: 600 14px/1 var(--font-num); color: var(--text); }
.term-v2 .tn-mc .tn-v { font: 700 16px/1 var(--font-num); color: var(--cyan); }
.term-v2 .tn-h { display: none; }
.term-v2 .tn-cv { display: inline-flex; align-items: center; gap: 6px; }
.term-v2 .tn-curve .bar { width: 56px; height: 4px; margin: 0; border: 0; background: var(--line-2); }
.term-v2 .tn-chk { margin-left: auto; }
.term-v2 .tn-chk .lvl { margin: 0; }
.term-v2 .lvl { height: 20px; padding: 0 8px 0 6px; gap: 5px; font: 600 11.5px/1 var(--font-head); }
.term-v2 .lvl .lvl-dot { width: 6px; height: 6px; }
.term-v2 .lvl-big { height: 22px; font-size: 12px; }

/* season line: one slim hairline row */
.term-v2 .coin-strip { margin: 0; padding: 0 12px; min-height: 30px; gap: 4px 16px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: none; font: 500 12px/1.3 var(--font-head); color: var(--muted); }
.term-v2 .coin-strip .num { font-weight: 600; color: var(--text); }
.term-v2 .coin-strip .btn { min-height: 0; height: 24px; padding: 0 12px; border-radius: 999px; border: 0; background: #fff; color: #06070b; font: 700 12px/1 var(--font-head); }
.term-v2 .coin-strip .chip { height: 18px; padding: 0 7px; font-size: 10.5px; }

/* pills (timeframes, tabs) */
.term-v2 .seg, .dz .seg { flex-wrap: nowrap; gap: 2px; padding: 0; border: 0; border-radius: 0; background: none; }
.term-v2 .seg-btn, .dz .seg-btn { min-height: 0; height: 24px; padding: 0 10px; border-radius: 999px; font: 600 12px/1 var(--font-head); color: var(--muted); white-space: nowrap; }
.term-v2 .seg-btn:hover, .dz .seg-btn:hover { color: var(--text); }
.term-v2 .seg-btn.on, .dz .seg-btn.on { background: var(--chip); color: var(--text); box-shadow: inset 0 0 0 1px var(--line-2); }

/* chart */
.term-v2 .chart-card .card-head { flex-wrap: nowrap; justify-content: flex-start; gap: 10px; height: 36px; margin: 0; padding: 0 12px; border-bottom: 1px solid var(--line); white-space: nowrap; overflow: hidden; }
.term-v2 .chart-card h3 { margin: 0; font: 600 13px/1 var(--font-head); letter-spacing: 0; }
.term-v2 .chart-card .card-head .small { font: 500 11.5px/1 var(--font-head); color: var(--dim); overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 0 1 auto; }
.term-v2 .chart-card .card-head .seg { margin-left: auto; flex: none; }
.term-v2 .chart-box { min-height: 240px; padding: 6px 4px 0 12px; }
.term-v2 .chart-box .loading, .term-v2 .chart-box .empty { margin: 12px 12px 12px 0; }
.term-v2 .chart-foot { margin: 0; padding: 2px 12px 6px; font: 500 11px/1.4 var(--font-head); color: var(--dim); }
.term-v2 .chart-foot .scribble { font: 500 11px/1.4 var(--font-head); letter-spacing: 0; text-transform: none; color: var(--muted); }

/* tabs: dense hairline tables */
.term-v2 .term-tabs .card-head { flex-wrap: nowrap; gap: 8px; height: 38px; margin: 0; padding: 0 12px 0 8px; border-bottom: 1px solid var(--line); }
.term-v2 .term-tabs .card-head .seg { flex: 0 1 auto; min-width: 0; }
.term-v2 .term-tabs .seg-btn { height: 26px; font-size: 12.5px; }
.term-v2 .st-pill { flex: none; height: 22px; padding: 0 9px; gap: 5px; font: 600 11px/1 var(--font-head); }
.term-v2 .st-pill .st-dot { width: 6px; height: 6px; }
.term-v2 .tabs-body { padding: 0; }
.term-v2 .tape-head, .term-v2 .tp { grid-template-columns: 52px 46px minmax(64px, 0.7fr) minmax(86px, 0.7fr) minmax(0, 2.2fr); gap: 12px; padding: 0 12px; }
.term-v2 .tape-head { position: sticky; top: 0; z-index: 1; height: 26px; background: var(--bg); border-bottom: 1px solid var(--line); font: 500 11px/1 var(--font-head); text-transform: none; letter-spacing: 0; color: var(--dim); }
.term-v2 .tp { min-height: 29px; border-radius: 0; border-bottom: 1px solid var(--line); font: 500 12.5px/1 var(--font-num); }
.term-v2 .tp:hover { background: var(--hover); }
.term-v2 .tp-t { font-size: 12px; color: var(--muted); }
.term-v2 .tp-side { padding: 0; background: none; text-align: left; font: 600 12px/1 var(--font-head); text-transform: capitalize; }
.term-v2 .tp-usd { font-weight: 600; }
.term-v2 .tp-sol { color: var(--muted); }
.term-v2 .tp-w a, .term-v2 .tp-w .num { font: 500 11.5px/1 var(--font-mono); color: var(--muted); }
.term-v2 .tp-w a:hover { color: var(--blue-hi); }
.term-v2 .wl { height: 17px; display: inline-flex; align-items: center; padding: 0 7px; border-radius: 999px; border: 1px solid #22242d; background: #0a0b10; font: 500 10.5px/1 var(--font-head); }
.term-v2 .tp-tx { border-radius: 999px; border-color: #22242d; font: 500 10.5px/16px var(--font-head); padding: 0 7px; }
.term-v2 .tabs-body > .small-h { margin: 12px 12px 6px; font: 600 12px/1 var(--font-head); text-transform: none; letter-spacing: 0; color: var(--text); }
.term-v2 .tabs-body > p { margin: 8px 12px; font-size: 12px; }
.term-v2 .tabs-body > .loading, .term-v2 .tabs-body > .empty { margin: 12px; }
.term-v2 .empty { padding: 16px 12px; border-radius: 8px; font-size: 13px; }
.term-v2 .hbars { gap: 0; }
.term-v2 .hbar { grid-template-columns: 78px minmax(0, 1fr) 64px; gap: 12px; min-height: 29px; padding: 0 12px; border-bottom: 1px solid var(--line); font: 500 12.5px/1 var(--font-head); }
.term-v2 .hbar-k { font-weight: 500; color: var(--muted); }
.term-v2 .hbar .bar { height: 4px; border: 0; background: var(--line-2); }
.term-v2 .hbar-v .hl { padding: 0; background: none; }
.term-v2 .hbar-v .hl-yellow, .term-v2 .ttab-v .hl-yellow { color: var(--warn); }
.term-v2 .bar.hb-none .bar-fill { background: var(--muted); }
.term-v2 .holders li { gap: 10px; min-height: 29px; padding: 0 12px; font: 500 12.5px/1 var(--font-num); }
.term-v2 .holders li:hover { background: var(--hover); }
.term-v2 .holders a.num, .term-v2 .holders span.num:first-child { font-family: var(--font-mono); font-size: 11.5px; }
.term-v2 .ttab-row { min-height: 29px; padding: 0 12px; font: 500 12.5px/1.2 var(--font-head); }
.term-v2 .ttab-v .hl { padding: 0; background: none; }
.term-v2 .ttab-top { padding: 8px 12px; border-bottom: 1px solid var(--line); }
.term-v2 .ttab-top .small { font-size: 11.5px; color: var(--dim); }
.term-v2 .flags { margin: 0; }
.term-v2 .flag { gap: 8px; padding: 7px 0; font: 400 12.5px/1.4 var(--font-body); }
.term-v2 .flag-mark { width: 6px; height: 6px; margin-top: 6px; }
.term-v2 .flag-title { font-weight: 600; }
.term-v2 .ttab-flags { margin: 0; padding: 2px 12px; }
.term-v2 .sticky { margin: 8px 0 0; padding: 8px 10px; border-radius: 6px; border-left-width: 2px; font: 400 12px/1.45 var(--font-body); color: var(--muted); }
.term-v2 .sticky b { font-size: 10.5px; }

/* right panel: ticket */
.term-v2 .ticket { position: relative; top: auto; padding: 12px; }
.term-v2 .ticket .seg { display: grid; grid-template-columns: 1fr 1fr; width: 100%; gap: 2px; padding: 2px; border: 1px solid var(--line-2); border-radius: 999px; background: var(--chip); }
.term-v2 .ticket .seg-btn { height: 30px; min-height: 0; font: 700 13px/1 var(--font-head); }
.term-v2 .ticket .seg-btn.on[data-v="buy"] { background: var(--up); color: #06070b; box-shadow: none; }
.term-v2 .ticket .seg-btn.on[data-v="sell"] { background: var(--down); color: #06070b; box-shadow: none; }
.term-v2 .sizes { gap: 6px; margin: 12px 0 8px; }
.term-v2 .size { min-height: 0; height: 30px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--chip); font: 600 12.5px/1 var(--font-num); }
.term-v2 .size:hover { border-color: var(--blue); }
.term-v2 .size.on { background: var(--blue-soft); border-color: var(--blue); color: var(--blue-hi); }
.term-v2 .custom { gap: 8px; height: 34px; margin: 0 0 10px; padding: 0 12px; border: 1px solid var(--line-2); border-radius: 999px; background: var(--bg); }
.term-v2 .custom:focus-within { border-color: var(--blue); }
.term-v2 .custom .input { min-height: 0; height: 32px; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; font: 600 13px/1 var(--font-num); }
.term-v2 .custom .num { font: 500 11px/1 var(--font-head); color: var(--dim); }
.term-v2 .ticket p { margin: 0 0 8px; font-size: 12.5px; }
.term-v2 .ticket-cash { margin: 0 2px 10px; font: 500 12px/1 var(--font-head); color: var(--muted); }
.term-v2 .ticket-cash .num { font-weight: 600; }
.term-v2 .ticket .btn-block { min-height: 44px; border-radius: 999px; font: 700 15px/1 var(--font-head); }
.term-v2 .ticket .btn-sm { min-height: 28px; height: 28px; border-radius: 999px; font-size: 12px; }
.term-v2 .ticket-msg { margin-top: 8px; }
.term-v2 .ticket-msg:empty { display: none; }
.term-v2 .ticket-msg .errbox, .term-v2 .ticket .errbox { padding: 8px 10px; border-radius: 8px; font-size: 12.5px; }
.term-v2 .ticket-fine { margin: 10px 2px 0; font: 400 11.5px/1.45 var(--font-body); color: var(--dim); }
.tk-mbar, .tk-close { display: none; }

/* right panel: token info + verdict */
.term-v2 .check-card { padding: 12px; scroll-margin-top: calc(var(--top-h) + 8px); }
.term-v2 .check-top { flex-wrap: nowrap; gap: 8px; }
.term-v2 .check-top h2, .term-v2 .tv-top h3, .term-v2 .pos h3 { display: flex; align-items: center; gap: 5px; margin: 0; font: 600 13px/1 var(--font-head); letter-spacing: 0; white-space: nowrap; }
.term-v2 .check-when { display: inline-flex; align-items: center; gap: 6px; min-width: 0; font: 500 11px/1 var(--font-head); color: var(--dim); white-space: nowrap; }
.term-v2 .check-when .btn { min-height: 0; height: 22px; padding: 0 8px; gap: 4px; border-radius: 999px; border-color: var(--line-2); font: 600 11px/1 var(--font-head); color: var(--text); }
.term-v2 .check-when .btn .ico { width: 11px; height: 11px; }
.ti-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin: 10px 0 12px; }
.ti { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-width: 0; height: 50px; padding: 0 4px; border: 1px solid #22242d; border-radius: 6px; background: #0a0b10; color: var(--text); cursor: help; }
.ti:hover { border-color: var(--line-2); background: var(--hover); }
.ti-v { display: inline-flex; align-items: center; gap: 4px; font: 600 14px/1 var(--font-num); }
.ti-v .ico { width: 12px; height: 12px; }
.ti-k { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 500 11px/1 var(--font-head); color: var(--muted); }
.ti-red { border-color: rgba(255, 92, 108, 0.35); background: var(--chip-red); }
.ti-red .ti-v { color: var(--down); }
.ti-yellow .ti-v { color: var(--warn); }
.ti-green .ti-v { color: var(--up); }
.ti-info .ti-v { color: var(--blue-hi); }
.ti-unknown .ti-v { color: var(--dim); }
.tv-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 2px; }
.ti-verdict { padding-top: 10px; border-top: 1px solid var(--line); }
.ti-verdict > p { margin: 6px 0 0; font-size: 12.5px; }
.term-v2 .ti-more { margin: 6px -12px 0; border-top: 1px solid var(--line); }
.term-v2 .ti-more .ttab-row { grid-template-columns: minmax(0, 1fr) auto; }
.term-v2 .ti-more .ttab-n { display: none; }
.term-v2 .ti-more .ttab-k { display: flex; align-items: center; gap: 5px; }
.term-v2 .check-unav { margin: 8px 0 0; font-size: 11.5px; color: var(--dim); }
.term-v2 .check-card > p.small { margin: 10px 0 0; font-size: 12px; }
.term-v2 .check-card .loading { padding: 14px 0; }

/* right panel: your position */
.term-v2 .pos { padding: 12px; }
.term-v2 .pos .card-head { margin-bottom: 8px; }
.term-v2 .pos p { margin: 8px 0 0; font-size: 12.5px; }
.term-v2 .pos .pos-pnl { margin: 0 0 8px; font-size: 16px; }
.term-v2 .pos .pos-hint { margin: 0 0 8px; font-size: 12px; }
.term-v2 .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.term-v2 .stat { gap: 4px; padding: 7px 9px; border: 1px solid #22242d; border-radius: 6px; background: #0a0b10; }
.term-v2 .stat-k { font: 500 11px/1.2 var(--font-head); text-transform: none; letter-spacing: 0; color: var(--muted); }
.term-v2 .stat-v { font: 600 13.5px/1.2 var(--font-num); }
.term-v2 .stat-h { font-size: 11px; color: var(--dim); }

/* desktop: header + season line on top, chart over the tabs, the right panel fixed beside them (each part scrolls on its own) */
@media (min-width: 1000px) {
  .term-v2 { display: grid; grid-template-columns: minmax(0, 1fr) 340px; grid-template-rows: auto auto auto minmax(0, 1fr); grid-template-areas: "head head" "strip strip" "chart side" "tabs side"; gap: 0; height: calc(100vh - var(--top-h) - 28px - var(--mock-h, 0px)); min-height: 560px; }
  .term-v2 .term-head { grid-area: head; flex-wrap: nowrap; padding: 8px 16px; min-height: 56px; }
  .term-v2 .coin-strip { grid-area: strip; padding: 0 16px; }
  .term-v2 .chart-card { grid-area: chart; padding: 0; }
  .term-v2 .chart-card .card-head { padding: 0 12px 0 16px; }
  .term-v2 .chart-box { padding-left: 16px; }
  .term-v2 .chart-foot { padding-left: 16px; }
  .term-v2 .term-tabs { grid-area: tabs; display: flex; flex-direction: column; height: 100%; min-height: 0; padding: 0; border-bottom: 0; }
  .term-v2 .term-tabs .card-head { flex: none; padding: 0 12px; }
  .term-v2 .term-tabs .tabs-body { flex: 1 1 auto; min-height: 0; max-height: none; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
  .term-v2 .tape-head, .term-v2 .tp, .term-v2 .hbar, .term-v2 .holders li, .term-v2 .ttab-row { padding-left: 16px; padding-right: 16px; }
  .term-v2 .tabs-body > .small-h, .term-v2 .tabs-body > p { margin-left: 16px; margin-right: 16px; }
  .term-v2 .ttab-top, .term-v2 .ttab-flags { padding-left: 16px; padding-right: 16px; }
  .term-v2 .term-side { grid-area: side; display: flex; flex-direction: column; height: 100%; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; border-left: 1px solid var(--line); }
  .term-v2 .term-side > .card { flex: none; padding: 12px 14px; }
  .term-v2 .term-side > .ticket { order: 1; position: relative; top: auto; }
  .term-v2 .term-side > .check-card { order: 3; }
  .term-v2 .term-side > .pos { order: 4; }
  .term-v2.has-pos .term-side > .pos { order: 2; }
  .term-v2 .ti-more { margin-left: -14px; margin-right: -14px; }
  .term-v2 .ti-more .ttab-row { padding-left: 14px; padding-right: 14px; }
  .tk-scrim { display: none; }
}

/* phone + tablet: chart, the sticky Buy / Sell bar, the tabs; the ticket opens from the bar as a sheet */
@media (max-width: 999px) {
  .term-v2 .term-nums { flex: 1 1 100%; flex-wrap: wrap; overflow: visible; gap: 10px 18px; }
  .term-v2 .tn-chk { margin-left: 0; }
  .term-v2 .chart-box { min-height: 200px; }
  .tk-mbar { position: sticky; top: calc(var(--top-h) + var(--mock-h, 0px)); bottom: calc(var(--tab-h) + env(safe-area-inset-bottom, 0px)); z-index: 20; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 8px 12px; background: var(--bg); border-bottom: 1px solid var(--line); box-shadow: 0 -1px 0 var(--line); }
  .tk-mbar .btn { min-height: 44px; border-radius: 999px; font: 700 15px/1 var(--font-head); }
  .term-v2 .ticket { display: none; }
  .term-v2 .ticket.open { display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 46; max-height: 88vh; overflow-y: auto; padding: 14px 16px calc(16px + env(safe-area-inset-bottom, 0px)); border: 0; border-top: 1px solid var(--line-2); border-radius: 16px 16px 0 0; background: var(--bg-2); box-shadow: 0 -24px 60px -10px rgba(0, 0, 0, 0.9); }
  .term-v2 .ticket.open .seg { width: calc(100% - 44px); }
  .term-v2 .ticket.open .tk-close { display: inline-flex; position: absolute; top: 12px; right: 10px; width: 34px; height: 34px; border-radius: 50%; }
  .tk-scrim { position: fixed; inset: 0; z-index: 45; background: rgba(0, 0, 0, 0.6); }
  .term-v2 .ticket .seg-btn { height: 34px; }
  .term-v2 .size { height: 38px; font-size: 13.5px; }
  .term-v2 .custom { height: 44px; }
  .term-v2 .custom .input { height: 42px; font-size: 16px; }
  .term-v2 .ticket .btn-block { min-height: 48px; }
  .term-v2 .term-tabs .seg { overflow-x: auto; scrollbar-width: none; }
  .term-v2 .term-tabs .seg-btn { height: 30px; }
}
@media (max-width: 559px) {
  .term-v2 .tape-head, .term-v2 .tp { grid-template-columns: 44px 40px minmax(0, 0.9fr) minmax(0, 1.4fr); gap: 8px; }
  .term-v2 .chart-card .card-head .term-asof { display: none; }
  .term-v2 .term-name { max-width: 16ch; }
}

/* ---- Discover ---- */
.dz-bar { align-items: center; }
.dz .pulse-title { flex-wrap: nowrap; min-width: 0; }
.dz .pulse-title h1 { font: 600 20px/1 var(--font-head); letter-spacing: -0.01em; }
.dz-tabs .seg-btn { height: 26px; font-size: 12.5px; }
.dz .asof { font: 500 11px/1 var(--font-head); color: var(--dim); white-space: nowrap; }
.dz .pulse-tools { flex: 1 1 320px; justify-content: flex-end; }
.dz-paste { position: relative; flex: 1 1 260px; max-width: 520px; }
.dz-paste .paste { gap: 6px; }
.dz-paste .input { min-height: 0; height: 30px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--bg); font: 500 12.5px/1 var(--font-body); }
.dz-paste .btn { min-height: 0; height: 30px; padding: 0 14px; border: 0; border-radius: 999px; background: #fff; color: #06070b; font: 700 12.5px/1 var(--font-head); white-space: nowrap; }
.dz-paste .btn:hover { background: #dbe4ff; color: #06070b; }
.dz-paste .paste-msg { position: absolute; z-index: 25; top: calc(100% + 6px); right: 0; width: min(460px, calc(100vw - 24px)); margin: 0; padding: 10px; border: 1px solid var(--line-2); border-radius: 10px; background: var(--bg-3); box-shadow: 0 24px 50px -10px rgba(0, 0, 0, 0.95); font-size: 13px; }
.dz-paste .paste-msg:empty { display: none; }
.dz-paste .paste-msg .loading { padding: 4px 0; }
.dz-note { margin: 0; padding: 7px 16px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); font: 400 12px/1.5 var(--font-body); color: var(--muted); }
.dz-blurb { color: var(--text); }
.dz-heads-up:empty { display: none; }
.dz-heads-up .sticky { margin: 8px 16px; padding: 8px 10px; border-radius: 6px; border-left-width: 2px; font: 400 12.5px/1.45 var(--font-body); }
.dz-body > .loading, .dz-body > .empty, .dz-body > .errbox { margin: 12px 16px; }
.dz-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; }
.dz-row { border-right: 1px solid var(--line); }
.dz-row .pc-quick { pointer-events: none; }
.dz-rank { color: var(--dim); font: 500 11.5px/1 var(--font-num); }
.dz-ch { font: 600 12px/1 var(--font-num); color: var(--muted); }
.dz-ch.up { color: var(--up); }
.dz-ch.down { color: var(--down); }
.dz-ch .k { margin: 0; font: 500 10.5px/1 var(--font-head); color: var(--dim); }
.dz-arena { height: 18px; display: inline-flex; align-items: center; padding: 0 7px; border-radius: 999px; background: var(--blue-soft); color: var(--blue-hi); font: 600 10.5px/1 var(--font-head); white-space: nowrap; flex: none; }
.dz-row .hchip { cursor: default; }
.dz-row .pr-fee { cursor: help; }
.dz-open { display: inline-flex; align-items: center; height: 23px; padding: 0 11px; border-radius: 999px; background: #fff; color: #06070b; font: 700 11.5px/1 var(--font-head); }
.dz-open .ico { display: none; }
.dz-foot .season-strip { padding: 8px 16px; gap: 4px 16px; border: 0; border-top: 1px solid var(--line); border-radius: 0; background: none; font: 500 12px/1.3 var(--font-head); color: var(--muted); }
.dz-foot .season-strip .num { font-weight: 600; color: var(--text); }
@media (min-width: 900px) { .dz-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } .dz-note { padding: 7px 16px; } }
@media (min-width: 1500px) { .dz-list { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 899px) {
  .dz-bar { flex-wrap: wrap; row-gap: 8px; }
  .dz .pulse-tools { flex: 1 1 100%; }
  .dz-paste { max-width: none; flex: 1 1 100%; }
  .dz-paste .input { height: 38px; font-size: 16px; }
  .dz-paste .btn { height: 38px; }
  .dz-tabs .seg-btn { height: 30px; }
  .dz-note { padding: 7px 12px; }
  .dz-row { border-right: 0; }
}
@media (max-width: 559px) {
  .dz .asof { display: none; }
  .dz-arena, .dz-rank, .dz-row .pr-fee .ico { display: none; }
}
/* ── end polish ── */

/* ── fees + daily final + burns ── */
/* The season chip says what kind of season this is. THE DAILY FINAL gets a blue outline; practice stays quiet. */
.clock .ck-lead { font-weight: inherit; }
.clock .ck-extra { display: none; color: var(--muted); font-weight: 500; }
@media (min-width: 1500px) { .clock .ck-extra { display: inline; } }
.clock.practice .ck-lead { color: var(--muted); }
.clock.final { border-color: var(--blue); background: var(--blue-soft); box-shadow: 0 0 0 1px var(--blue), 0 0 18px -6px rgba(77, 124, 255, 0.9); }
.clock.final .ck-lead { color: var(--blue-hi); font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; }
.clock.final .ck-extra { color: var(--text); }
.clock.final .dot { background: var(--blue-hi); }
.clock.final.closing .dot { background: var(--down); }
.chip-final { background: var(--blue-soft); border-color: var(--blue); color: var(--blue-hi); text-transform: uppercase; letter-spacing: 0.05em; }
.chip-practice { background: var(--bg-3); border-color: var(--line-2); color: var(--muted); }

/* Season page: the banner under the title, the prize card, the standings note */
.kind-banner { display: grid; gap: 3px; margin: 10px 0 12px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line-2); background: var(--bg-2); max-width: 64ch; }
.kind-banner .kb-head { font: 700 14px/1.3 var(--font-head); color: var(--text); }
.kind-banner .kb-line { font: 600 15px/1.35 var(--font-head); color: var(--text); }
.kind-banner .kb-sub { font-size: 12.5px; line-height: 1.45; color: var(--muted); }
.kind-practice { border-style: dashed; }
.kind-final { border-color: var(--blue); background: linear-gradient(90deg, var(--blue-soft), rgba(77, 124, 255, 0) 85%), var(--bg-2); box-shadow: 0 0 0 1px rgba(77, 124, 255, 0.35), 0 12px 32px -18px rgba(77, 124, 255, 0.9); }
.kind-final .kb-head { font-size: 21px; letter-spacing: 0.06em; color: var(--blue-hi); }
.prize-card.is-final { border-color: var(--blue); }
.prize-card .next-final { margin: 0 0 6px; }
.prize-card .next-final b { font-size: 16px; color: var(--text); }
.prize-card .prize-top { margin: 0; font-weight: 600; color: var(--text); }
.prize-card .split { margin: 6px 0 8px; }
.prize-card .pool-line { margin: 8px 0 4px; color: var(--text); }
.prize-card .pool-line b { font-size: 18px; }
.prize-card p.small { margin: 6px 0 0; }
.st-kind { font: 600 12px/1.3 var(--font-num); padding: 3px 9px; border-radius: 999px; border: 1px solid var(--line-2); color: var(--muted); }
.st-kind:empty { display: none; }
.st-kind.st-final { border-color: var(--blue); color: var(--blue-hi); background: var(--blue-soft); }
.tbl-cap { caption-side: top; text-align: left; padding: 4px 2px 8px; font: 600 12.5px/1.4 var(--font-num); color: var(--muted); }
.season-foot { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 18px 0 0; padding-top: 12px; border-top: 1px solid var(--line); }

/* Where the fees go: the 70 / 30 bar */
.fees .fee-bar { display: flex; height: 34px; margin: 2px 0 10px; border-radius: 8px; border: 1px solid var(--line-2); overflow: hidden; }
.fee-bar > span { flex: 0 0 var(--w, 50%); display: flex; align-items: center; gap: 6px; min-width: 0; padding: 0 10px; font-size: 12px; white-space: nowrap; overflow: hidden; }
.fee-bar b { font-size: 14px; }
.fee-prize { background: var(--blue); color: #fff; }
.fee-burn { background: var(--warn-soft); color: var(--warn); box-shadow: inset 1px 0 0 var(--bg); }
.fee-says { margin: 0 0 4px; font-weight: 600; color: var(--text); }
.fee-says span { display: block; }
.fee-links { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: 8px 0 0; }
.prose .fees { margin-top: 1.4em; }
.prose .split { margin: 6px 0 2px; }

/* Burns page and the admin "Record a burn" form */
.burn-stats { margin-bottom: 18px; }
.burn-none h2 { margin: 0 0 6px; }
.burn-tbl .sig { white-space: nowrap; }
.burn-result { margin-top: 10px; }
.burn-ok { margin: 0; padding: 10px 12px; border-radius: 10px; border: 1px solid rgba(47, 208, 138, 0.4); background: var(--up-soft); color: var(--text); font-weight: 600; }
.admin-form.burn-form { grid-template-columns: 1fr; }
@media (min-width: 720px) { .admin-form.burn-form { grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr) 0 auto; } }
/* ── end fees ── */

/* in-page links land below the sticky top bar */
.view [id], main [id] { scroll-margin-top: 72px; }

/* market cap by size: green from $100K, yellow from $40K, the usual blue below */
.pr-mc b.mc-mid, .pr-mc.mc-mid b, .tn-mc.mc-mid .tn-v, .term-v2 .tn-mc.mc-mid .tn-v { color: var(--warn); }
.pr-mc b.mc-hi, .pr-mc.mc-hi b, .tn-mc.mc-hi .tn-v, .term-v2 .tn-mc.mc-hi .tn-v { color: var(--up); }
